Hacker Newsnew | past | comments | ask | show | jobs | submit | AriseAndPass's commentslogin

I really like the look of diff.blog , signed up! Is there any way to subscribe to my feed as an RSS feed?


Don't have a feature for that at the moment but I have added it to my todolist.


I use Roam, and I've had my eye on your project for many months now, so I'm super excited to see you come so far. I'm also passionate about privacy and having control over my data - IIRC the way Roam handles image uploads is by uploading the image to firebase and giving you a link that anyone can use to view your image, with no way to delete that image, so you just have to trust in the 'unlisted' nature of the link. Not a big fan of this.

One thing I think was missing when I last looked at Athens was a working high-fidelity import of a Roam EDN export - without this I can't see an easy way to migrate, and I'm guessing there are other Roam users in the same boat? I'm sure it'll come along, until then I'll sit tight in anticipation :)


EDN import is done, just want to improve performance in Athens as most Roam dbs are bigger. I know Roam users will have higher expectations :)

https://github.com/athensresearch/athens/pull/561


!! the day has come :)


I wish the author went into more detail about how to come up with "high leverage side projects" that help cultivate the type of fundamental CS knowledge he emphasises.

Most of the suggestions I see for potential side projects are for some kind of consumer-facing (web/mobile/desktop) app - probably because most people in this context are prioritising the potential of generating side income, but this sounds more like what the author calls "plumbing" style backend/API work rather than something that would develop fundamental CS skills.

So, any ideas? I've seen https://github.com/danistefanovic/build-your-own-x which is a great collection of ideas all based on piercing an abstraction by building your own version of lower-level tools. Are there any other categories of side project that someone who wants to move technically deeper than a full-stack web app would do well to consider?


(Author here)

Nand2tetris is pretty awesome if you don’t already have strong CS fundamentals and feel like you “know how computers work”. If you had a good C.S education though you may not get much out of it.

Here is a cool one I worked on awhile ago when I wanted to learn more about foundationDB: https://github.com/richardartoul/tsdb-layer

A long time ago I wanted to learn about regular expression engines so I wrote a tiny one: https://github.com/richardartoul/regex-engine

I built this with some friends a few years ago: https://hyperdash.io/ (building the backend for this was a good learning experience and I learned a lot about writing multi threaded software making the python SDK).

Those are just some examples to give you an idea, but to be honest it’s hard to give a good answer because side projects are deeply personal.

It takes serious discipline and motivation to spend your nights and weekends writing code when that’s how you spend your working hours as well, so it’s really gonna be about what motivates you and will keep you engaged while also gaining “high leverage” skills (anything fundamental in the realm of networking, compilers, databases, data structures, etc. basically anything that’s not just another language or framework)


I have heard of Nand2tetris, but I always thought it fell more into the 'read a textbook' bucket than the 'do your own technically challenging project to reinforce the learning' one. But I guess it's a project-based textbook, which kind of blurs the lines.

Thanks for sharing those examples. I guess the common thread here is to work on _building_ things that exist at lower levels of abstraction, rather than just knowing how to use them as a black box. I guess most project ideas that satisfy that criteria would teach some fundamental skills too.


Did you make use of Anki or anything similar to maintain the knowledge?


Is that a flash card thing? I think if you’re actively trying to “retain” knowledge like that you’re probably doing something wrong.

For context I studied biochemistry in college with the intention of being pre-med and that is how I did all my studying, creating notes and flash cards for rote memorization because memorizing trivia is what’s required to succeed in that path, but I think it’s the wrong approach for furthering your education as a software engineer.

I still take notes today sometimes (because the act of writing helps me absorb information), but I’d never go as far as making flash cards.

When you’re studying this stuff I think the goal is more like, learn about what’s “out there” so you know enough to recognize that there is a thing whose details you should look up when needed.

Let me put it this way, if you read a textbook cover to cover on operating systems you won’t (and don’t need) to remember every little detail of the data structures and algorithms involved. But studying it once means you’ll never forget that they exist or what the difference between a thread and process is, and the remaining details are always a short lookup away when you need them!

If you do want to go really deep on a topic than my recommendation would be read about it / study it first, then go implement something in that area (even if it’s just a toy) if you want to make sure you really understand it.


It's definitely worth understanding what Anki is. It goes beyond flash cards and there's a body of research showing its efficacy: https://alchemist.camp/learning-machine/spaced-repetition-sy...

That said, I still have basically the same opinions you do when it comes to when it comes to using it for most programming skills. Others have a different perspective, though: https://www.semicolonandsons.com/episode/how-to-learn-to-cod...


Is that a flash card thing? I think if you’re actively trying to “retain” knowledge like that you’re probably doing something wrong.

It's a spaced repetition flash card program. If you just want flash cards, you use quizlet.

For context I studied biochemistry in college with the intention of being pre-med and that is how I did all my studying, creating notes and flash cards for rote memorization because memorizing trivia is what’s required to succeed in that path, but I think it’s the wrong approach for furthering your education as a software engineer.

Understanding is always preferable to pure brute force memorization. For one thing, going through flash cards will be much faster, easier, and less frustrating.

If you don't understand a concept, it's going to create leeches, which suck up study time.

I still take notes today sometimes (because the act of writing helps me absorb information), but I’d never go as far as making flash cards.

It helps you absorb information and convert it to knowledge, yes. But decay of knowledge is a thing. Flash cards are just the format. What it allows you to do is formulate questions or prompts which allow you to practice active recall. Active recall of information is one of the gold standard for studying.

If you do want to go really deep on a topic than my recommendation would be read about it / study it first, then go implement something in that area (even if it’s just a toy) if you want to make sure you really understand it.

Simply reading is one of the poorest strategy for learning. Active recall is much better. I agree that implementation and actual practice of skill is a good use of time, which might fall under the category of active recall.

Anyway, I am still trying to find how anki fit in my overall system for learning programming / software engineering. One of the thing I lacked is technical vocabularies for describing what I am seeing or doing, which I think anki can help with a lot.

Some people has success with it, but not for me. I suspect that it has to do something with the low density of cards/notes I added to anki.


Mochi[0] might be interesting to you. It mixes zettelkasten-style note cards with SRS flash cards and markdown.

[0] https://mochi.cards/


Take a look at https://web.eecs.utk.edu/~azh/blog/challengingprojects.html and https://web.eecs.utk.edu/~azh/blog/morechallengingprojects.h... for some good summaries.

For me, I started building programming languages (and standard libraries) years ago as personal challenge and to learn more about how various languages work. Later on that branched into emulation (x86/amd64, armv8/aarch64) and more recently databases. (You can find these kinds of projects on my github).

Before that when I was more focused on web tech, I'd build clones of React or Bootstrap or Flask to increase my understanding there.

It helped being surrounded by people with a lot more experience than I so I'd keep being in a situation where I knew nothing about some field and wanted to not be embarrassingly naïve :D so I'd try to build something from scratch to learn it.

It doesn't always work out! An example of a topic I haven't yet been able to get into is the TCP/IP stack. I got somewhere into the IP layer on top of userland raw sockets but TCP complexity and may poor C skills failed me as the algorithms needed for tracking state came up.


I think your reply reinforces a conclusion I drew from the OP's reply - that the common thread here is to work on _building_ things that exist at lower levels of abstraction, rather than just knowing how to use them as a black box. And in building things, I guess you learn the ins and outs of how they work, which makes you better at using them?

Thanks for the examples. I'd never even think of being able to build my own programming language, or clone of Flask - which I guess is the point, I shouldn't treat these things like black boxes :)


Yeah by building stuff you come to understand that all abstractions are arbitrary but you also come to understand why previous projects picked the abstractions they did. So it helps even just as a user, you don't have to be building frameworks, languages, databases professionally to benefit here.


She did actually use tags, not mutually exclusive categories:

> Another cool feature of the way I was logging my data was that I could log more than one activity into a single time slot (walking and listening to a podcast is a classic). This means that the total time spent on all activities sums up to more than 365 days - you can see this as 'extra days' on the plot above. Turns out that this year, I had 395 surplus hours or 16.5 surplus days. I hope I didn't spend them on human function.


This is great to hear, that currently is me in various forms - start doing squats in the gym and my knees hurt, play a lot of tennis and something else hurts, etc. I really enjoy the few 10 minute yoga videos I've tried so it's great to hear that something I actually enjoy could be the trick to getting me exercise-ready.

Can I ask you two questions from the other side of this?

- I've spent quite a while searching through yoga videos on YouTube without being able to figure out what a good progression from easy to difficult might look like. Mind sharing some of the ones you found worked the best for you on a regular basis?

- I noticed a lot of yoga videos involve rounding your back eg in toe touching movements. This really put me off because from everything I've read (a lot of Stuart McGill), movements that take your spine out of neutral position and put load on it are bad for the long term health of your back. Did the yoga you practiced involve these movements? Did you notice any ill effects on your back health?


I think as you do more yoga you realize that the same “easy” poses are starting points that can be deepened and, when you are ready, added to via variations. Either of the yogis I mentioned in my previous post point out variations. I am surprised how poses I thought I had become advanced at in the beginning were actually just surface level as I developed better interoception and realized the way different body parts and focus could be stretched. It is hard to explain. Just do yoga and over time you’ll know exactly what I am referring to.

Re rounding your back - this is an example of what I am talking about above. If you are rounding your back as you touch your toes, this is an example of not focusing on the right thing. You should be hinging at the hips, not the lower back. If you can’t touch the floor without rounding your back, then either don’t touch the floor or bend your knees enough to let you touch the floor (each of these options focuses on stretching different things).

Good luck & Namaste!


Thanks for the tips, much appreciated :)


Not the person you're asking, also not an expert, just someone who enjoys lifting weights (Olympic style!) and has spent a lot of time around people whose livelihood revolves around fitness and strength sports.

Rounding your back is only an issue when loaded. You don't wanna round it when squatting or deadlifting (but the Barbell Medicine folks will tell you it's not that big of deal, most of the time). If you're just moving your body on its own, you should absolutely do things that involve rounding your back, like touching your toes. If your back wasn't meant to move that way, it probably wouldn't move that way... or at the very least your body would immediately give you warning signs to make you stop doing that (like when you try to bend a joint the wrong way).


I was doing some beginner gymnastics strength exercises. I saw an advanced video I and couldn't believe what I was seeing.

These advanced gymnasts stood on a box, bent down with straight legs touching their toes, grabbed onto barbell with light weights, keeping their legs straight, slowly stood up keeping the barbell close to their body.

The explanation was the back is designed to do that and if you don't it you lose the ability.

That's not something I would ever attempt, but goes to show if you know what you're doing and have the necessary foundation in strength and flexibility, round back is not only OK but necessary to keep range of motion and strength. Again, I would never attempt that myself.


Thanks for commenting! I hear what you're saying, but I think it's perfectly possible to injure your back with bodyweight exercises over time. Even if we're just talking about yoga, there's a good amount of evidence that incorrectly practiced yoga can and does cause back injuries over time.

Now I'm sure that the optimal answer to that would be to make sure you correctly practice yoga. But the back is probably the worst joint I can think of injuring, and at the same time I'm basically just watching youtube videos and copying them - which isn't really a guarantee of correct practice. So I try to err on the side of caution by keeping my spine neutral :)


I'm also very curious to hear how a meal can be cooked in just a microwave. I have severe food allergies and this would be great especially when I travel and stay in places that don't have a full kitchen. Can you point me to a recipe book you'd recommend, if you don't want to post the recipes here?


After my parents died so the quantities of food to be cooked became smaller I have also transitioned to cooking only with microwaves.

However, I had abandoned other techniques like frying many years ago, so the fact that using microwaves is restricted to steaming and boiling poses no problem for me.

I boil food that requires added water, e.g. rice, corn flour, semolina or other dry cereals and dry legumes, such as dry beans, lentils and so on.

I cook by steaming (in glass vessels with lids) meat, fish, invertebrates, fresh and frozen vegetables (e.g. broccoli, cauliflower, carrots, celery, onion, cabbage and many others), certain fruits (e.g. quinces), potatoes, sweet potatoes, sweet corn, green peas or beans and so on.

Most vegetables can be steamed or boiled at full power, depending on kind and quantity at times between 5 min and 15 min, while animal food usually requires steaming at reduced power (e.g. 440 W) for 15 min to 20 min (after a short time at high power to preheat).

I drink a lot of herbal teas and I make those using a glass teapot in which I put 1 liter of water, I preheat for 4 min, I add 2 tea bags, then I heat again for 2 min. It is much more tasty than made on a kitchen stove.

Using microwaves has 2 advantages: much shorter time and perfect reproducibility.

Because I eat only food that I cook myself from raw ingredients, before converting to microwaves I wasted a large part of one of the weekend days with cooking food for all the next week.

Now I cook each day mostly what I am eating that day, wasting just 15 to 20 min at most, on average, except when some ingredients can not be partitioned in small enough portions, e.g. a packet of meat that must all be cooked immediately, when that ingredient after cooking will be kept refrigerated and parts of it added each day to whatever else I am cooking.

Every time I am buying something that I have not cooked before at microwaves, that may require a little experimentation to determine the right cooking time. However, once the time is known, it will be used forever in the future, because the results will be the same.

Once you have steamed or boiled the food ingredients that require thermal processing, they can be mixed as you wish according to any traditional recipes.


Wow. Super comprehensive guide, thank you so much. I'm going to try this out by cooking my rice in the microwave next time, and try and take it from there. I already did vegetables and sweet potatoes in there, but didn't think about doing rice/cereals and even meat in there.


My native language is not English, so I cannot recommend cooking book in English.

Cooking in microwave is really simple, when you understand how to regulate cooking temperature with water, and how much time and power you need to cook meal.

Example recipe: put into a dish cup of water, half cup of rice, slice of chicken at top. Cook for about 20 minutes at 600W, or (easier) cook at 900W for 5m, to boil water, then continue to cook at about 40% for about 18m. If it undercooked: warm it again and keep warm for some time. If it overcooked or boiled out: next time add more water or/and reduce cooking time and/or power. At the end, add butter, vegetables, salt, etc. To keep the meal warm at low power and to avoid excessive drying at high power, cover the dish with another dish.

Similar recipe here: https://steamykitchen.com/22048-how-to-cook-rice-microwave.h...


Cooking entire meals by using a microwave was a trend sometime during the 70s or 80s so check out the cooking book shelves in a second hand store or eBay.


I see (and agree) with the appeal for simplicity in microwaves. But having owned microwaves of both types, I did really like the ability to precisely set/see the amount of time a microwave program would run via a digital display. I found lots of these time dials imprecise, especially for <90 second jobs.


Very cool to see an ex-monk here. I've had a regular 2hr/day practice for a decade now but no retreats yet. What kind of meditation did you practice? Would you say that you achieved some level of Awakening, and that any of these insights/benefits have improved the quality of your consciousness in a permanent sense?


Sorry for not responding earlier, I rarely check hacker news.

We did Seon meditation (Korea) which is a form of Koan practice (Hwadu).

I’ve had a permanent change in perspective and have a “base” that I return to whenever my spiritual practice seem to fade away. I don’t hold onto any particular insights because any realization I’ve had in the past are purely conceptual now.


1 hour per day? Wow, that is insane!! In a good way, of course.

How long did it take to reach an hour?


About 60 minutes


Brrrm tsss


I spent around 7 years at 30 mins/day - I was happy with it there, it was more of a casual thing for me at that time. Then I read some books, starting with The Mind Illuminated, and increased to 1hr/day over 4-5 months.

I find the act of effort or willpower for me is starting to meditate in the first place. Once I'm meditating, 60 mins doesn't require any more discipline than 30 mins, in fact it feels better.


I know bodyweight is no perfect substitute and you probably already know this, but you can still have progressions of bodyweight exercise variants in a way that mimics progressive overload of weight to some extent. Check out the infographic here - http://www.startbodyweight.com/2014/01/basic-routine-infogra... - 8 types of exercise with progressively tougher variants. If nothing else it helps keeps things interesting


I grew up in Tanzania! Can I ask where you were, and what you were doing?

BTW - I had malaria about 5-6 times while growing up. What you describe sounds like a particularly bad case (1-2 of mine were like that). My experience, and that of my peer group (lower-middle class by western standards, top 0.1% by Tanzanian standards) was that if you got an early diagnosis and had access to drugs it was usually akin to a severe flu unless you got unlucky with the strain/severity.

It was culturally very normalised to get two malaria tests any time anyone felt sick, because the commonly accepted belief was that anything could be malaria, and false negatives were too common.

I always thought the main problem with malaria in Tanzania was that 99.9% of the country (especially rural areas) does not have access to quick testing and easy drugs, and for them it's a death sentence. That's not to downplay it, but more to emphasise the socioeconomic dimension.


I caught it in Arusha (back in 2008, when Arusha was much less built up than it is now). Got sick about two weeks later outside of Dar. At the time I was a journalist working on some freelance stories.

I've actually gone back and worked with local duka la dawas (sorry about the spelling, my Kiswahili is really out of practice) in figuring out ways we can help rural populations get easier access to the medication. It's often not that it's not there, it's that the medicine is too expensive.

It's still such a horror show of a disease (among the many many other horror show diseases). My heart broke for every mother I saw with their feverish infants in the same waiting room I was in.


Very cool story. Thank you for whatever you've done to help :) (and your spelling looks perfect to me).


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: