Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What are you learning in 2019?
188 points by dadoge on Aug 25, 2019 | hide | past | favorite | 215 comments
Feeling a little too comfortable where I'm at now. In the last couple years I had some side projects in distributed systems.

Those were fun, learned a new language, came to the conclusion that Go is overhyped and immature and helped me appreciate that Java ain't that bad after all. Feel like the project did help me be a better developer, understand load balancing, databases, storage systems etc better.

What new tech have y'all learned in the past 6 months - 1yr that you found to have made you a better developer?

1. TypeScript - I have had remarkable experience TS on frontend. Along with react hooks. Turns ES into a powerhouse.

2. GraphQL - Typed, structured API.

3. https://en.wikipedia.org/wiki/Attachment_theory: A very powerful tool to explain human behavior. It can explain individual personal interactions, personal and professional relationships, family systems and many bigger picture things.

4. How to build desktops: Build times are way way faster on desktop CPUs. More control over motherboard / getting faster IO, further improving buildtimes. More upgradeable, things can be switched out, whereas with laptops everything is soldered together.

5. Language practice: Started tapes on Polish / Ukrainian. Restarting Chinese soon.

6. Basic fitness things / more exercises

Seconding TypeScript. If you are a js dev looking to pick up something new, just rename a .js file to .ts, open it in vscode, watch the magic. It will, I think, make you a better js dev.

Java dev you mean ;) I dont see how types make you a better dev, its like saying automated dictionary in input text fields make you a better speller. It just makes you a lazy speller.

Types have fundamental meaning and function way beyond simply being a dictionary. Javascript's lack of type systems means it's crippled when it comes to serious numeric computation, simulation or modelling. Even a 64-bit number can;t be stored properly, to say nothing of SIMD operations.

it makes you think about your code in a more structural way where composability and low coupling start playing a fundamental role

Can you link to a reference where this is explained more? i am genuinely interested.

5. Ukrainian songs are beautiful: https://www.youtube.com/watch?v=lUc_ojv6d_4

Milla Jovovich of blockbuster movie fame, singing Ukrainian folk song “In a Glade” from her Divine Comedy album recorded in 1993:


More about the album:

”Although many were quick to dismiss Milla for attempting to crossover into yet another industry (she has since gone on to headline the Resident Evil film franchise and continues to record music independently), The Divine Comedy stands as one of the best lost pop albums of the '90s.”


I'm a software engineer who has until now mostly worked on web applications (backend and frontend). I have recently been learning Unity3D which has been immensely satisfying. The breadth and depth of skills needed to tackle projects in this field makes for some really interesting work.

I am currently awaiting approval to sell an editor plugin on the Unity store which I spent some free time working on as a side project. In game level design, most artists make use of 'modular' assets to some extent. These are small sections of a structure e.g. a corner wall section or a roof section, which can be combined together to make endless variations on a building style. The plugin I made allows you to specify 'sockets' on each modular asset, including a type and compatibility system, then it handles automatic snapping together of assets in the editor. This speeds up a assembly of modular assets significantly. The alternative, old fashioned way of doing this is 'vertex snapping' which is tedious and time consuming.

Video here: https://youtu.be/MvYTbIU1d-c

Is there a gradual path on learning Unity ? I mean, what is it ? A visual editor of 3D worlds, but not Blender / 3D Max, together with code editor and C# ?

It looks more like Adobe/Macromedia Flash as IDE, used to like that very much back in the days, till flash died due to plugin need / proprietary / security.

Would still prefer to ship an app in a single file, that progressively streams, just as SWF used to do. Now, in the web area, all is utter crap, one billion files to download, CDNs, fallbacks, signatures.... argh!

Heck, would choose VB or Delphi as IDE for building apps in no time against all this React / Angular / WebComponents tech salad with no substance and ephemeral lifespan.

I am still able to compile pascal code from 1997 in Lazarus / FPC.

Yes, there are many gradual paths to learning Unity. I would highly recommend following the official introductory tutorial series. This covers core topics like Components, Transforms, Prefabs, Game Loop etc. After this it gets a bit less clear how to proceed. If you're already a competent programmer I'd go straight to just prototyping ideas and reading the documentation in depth. I would especially recommend reading the best practices guide.

Regarding the development environment, yes it's very integrated and isolated. For me this was a bit of a culture shock as I generally prefer working with text rather than IDEs, but I've gotten fairly well acclimatised to it now.

The closest analogy would be the Flash IDE. Art (3D, 2D, images) is made outside. So is any coding. It integrates nicely with visual studio and Blender (and Maya and Photoshop and the like) so the process is fairly seamless. For example, debugging works.

Yet it produces native apps as well as WebGL.

An infinity of tutorials exist in as many qualities so learning resources of every level are hyper abundant from gradual to accelerated. A passable 2D app is probably possible in a few days starting from zero knowledge. But a impressive 3D game will take mastery of quite a range of its abilities and probably require a team.

Since it is not dependent on a proprietary player, it probably has more staying power than Macromedia/Flash but it does have competition from Unreal which I imagine is a viable alternative.

I built and published this 2D app in Unity with only prior web experience in a weekend: https://youtu.be/NTc6pf6OrI4

Haven’t touched Unity since... even though I’d love to make games. I’m partly afraid of future maintainability of my projects, but there is a potential future where 3D engines converge on a standard... maybe never.

Every time I have tried to learn Unity3D it has not left me with a good feeling. First time was extreme frustration. Second time was a lot of work for not much skill.

Several obvious conclusions can be drawn:

1) I am an idiot

2) I am using the wrong training material

3) Unity3D is just not for me.

I am hoping it is #2, so I ask what path did you use to learn Unity3D?

I'm going to safely assume you're not an idiot. The only major hurdle I can see would be not fully grokking the core concepts. I suspect this might not be helped by the domain specific terminology that isn't used much outside game dev or even Unity itself.

First thing to really wrap your head around is 'what is a GameObject'. A GameObject is just an entity that exists at runtime in the game world and has things called 'Components' attached to it. The simplest possible GameObject has only one component, called a Transform. This is simply a stateful record of the GameObject's position, rotation and scale. You can expect to write lots of code that involves manipulating Transforms.

There are components for everything. Want your GameObject to have a visual manifestation in the game world? Add a MeshRenderer component. Want to allow it to obey the laws of Newtonian physics? Add a Rigidbody component.

You can expect to spend a lot of your time implementing your own components. These custom components will often, ultimately just end up manipulating the transforms and other components of other GameObjects in the world.

Now you might wonder how GameObjects are created. One way is just to create an individual GameObject and attach components to it (analogous to an anonymous class), for the most part however, you will create things called 'prefabs' which are analogous to classes in OOP. Instances of these prefabs can then be easily instantiated (either manually via the editor or programmatically at runtime).

Once you have gotten your head around these core concepts, the rest starts to naturally follow. You can study topics like animation, custom shaders, net code, physics etc. and quickly understand how they relate to the core concepts.

My path to learning Unity (and I'm still learning!) was to follow the Unity official tutorials then start prototyping game mechanics - how to create a first person controller, how to allow player to interact with game world objects, how to animate characters etc. I'm now at I guess an 'advanced beginner' stage. I'm comfortable with the core API, have dabbled in most of the common topics you would need to be familiar with to make a game, and now I'm just doing projects to build up my productivity and skills.

When I first picked up Unity3D to play with I was very frustrated as well. The more I used it the better of an understanding I got. I am still far from an expert but I was able to make some interesting projects to play around with at home with the Wife and kids. When I hit a hurdle, I often found a solution on YouTube from one of the many tutorial channels out there. One of my favorite is Brackeys[1] - I believe he is sponsored by Unity however he has some quick but detailed videos on creating almost everything.

[1] https://www.youtube.com/user/Brackeys

Coming from a similar background (front/back web), I also find Unity3D very enjoyable. My latest project was attempting to create a relatively simple VR horror game on the Oculus Go. I was able to create something pretty neat but ultimately canned the project as I found the low quality graphics and single controller to be too limiting. I am considering picking up the Oculus Quest and maybe starting the project over since it has two controllers (one for movement, one for flashlight/etc). I found the Blender -> Unity3D workflow really positive for those that are interested in trying themselves.

Wow, I like what you do in Unity. Personally like Unity, however, I think Blender and Unreal Engine - UE have a better future.

Also, try to build this modular plugin in OpenBIM environment with IFC [1] support, then it will be more useful

If you need some help in this way let me know

[1] https://www.buildingsmart.org/about/what-is-openbim/ifc-intr...

That plugin looks amazing! I expect to see it on must-have plugin lists soon.

Thank you! It's all a bit of a shot in the dark for me and I have set my expectations very low for any sort of revenue - I mostly did it as a learning experience. Hopefully it's helpful to some people though.

Outside of Tech, Japanese.

Really love watching Anime in my down time. In the past I have watched well over 100+ series in Dub. Recently I was frustrated waiting for Dub for some later series and newer ones.

Which lead me to watch Subs and I really dislike reading the text, especially when two characters are talking you have text on the top and bottom of the screen! Too much to read at once.

Finally many times there is hiragana, katakana and kanji written for effects or spec sheets and many times it's not translated. I felt like I was missing out on something.

So decided to learn the language. I'm having a blast learning it.

With tech, absolutely nothing. Too busy making stuff. That said, waiting for Vue 3 to launch and then get into learning all the new things with that and seeing what benefits can be brought to existing codebases. Can't wait really.

Why are you watching anime dubbed? I tried once and it's horrible, ruined all the atmosphere. Much better with subtitles.

If you want to learn some Japanese grammar, here is a nice website: https://www.bunpro.jp/ You'll learn the basic grammar, and it redirects you to multiple blog articles on the concerned grammar points. Another way to discover nice blogs about Japanese language (y)

> Japanese

If you want to learn Japanese casually, especially through pop culture like watching anime, I think you can start by proficient Katakana.

Been an English speaker, you have a lot of advantage getting good at it in short time. Been able to regularly recognize them and been able to say some of them will certain boost your confidence in language progression.

Very cool. I've been wanting to learn a bit more Japanese for a long time now, too. What resources are you using to learn?

Take a look at my comments, 3rd post down will tell you what I have.

Also since I can't edit my original post. There's also:

[7]: https://www.reddit.com/r/LearnJapanese/comments/5x6twj/tae_k...

Right now I'm working on Z80 assembly language, in support of my ambition to build a simple 8-bit computer from the CPU up.

Other than that, I've spent a lot of time on Abductive Inference this year, since I'm on the hook to do a talk on the subject at All Things Open in October.

I've also been messing with OpenCV a bit lately.

Finally, a lot of low level electronics stuff. Revisiting my hobby of building and experimenting with simple circuits and what-not. As part of that, I want to learn KiCAD eventually, so I can design PCB's. This also supports the 8-bit retro-computing interest. A weekend or two ago I built a simple little circuit on a piece of protoboard with a 555 timer and a couple of potentiometers, which implements an adjustable clock generator which will serve as the clock input for the z80 project (at least the early stages when I very explicitly want things going slow so I can see LED's blink with the naked eye, etc.)

Emotional Intelligence

Tips from Emotional Intelligence 2.0 http://redgreenrepeat.com/2019/07/12/tips-i-got-from-emotion...

Lessons from company's internal Emotional Intelligence training (from EIExperience.com) http://redgreenrepeat.com/2019/07/19/debrief-emotional-intel...

Biggest win so far: hearing my wife say to me "Sorry I got emotional."

Wouldn't your wife apologising for being emotional be a sign that she feels a need to apologise for them? Wouldn't good emotional intelligence be towards making someone feel valid, and expressing themselves (even if they're "emotional"). After they are heard, then you can do whatever rational decisions you want.

Maybe I'm misunderstanding, but having someone else apologise for their emotions doesn't sound like an EQ win to me.

Yes - I missed a lot of context with my wife's comment.

Usually, in any heated situation, I would get tense and cause the situation to escalate out of control. After cooling off, I would be apologizing to her for my behavior in the situation.

In our time together (over a decade now) - she never apologized to me for her behavior.

The fact she did twice recently feels like a shock to me because it's so unusual for me.

It's an EQ win in the sense that I didn't lose my cool as usual.

Hope that adds context.

I'm surprised there was no mention (yet!) to fast.ai here. I've decided to learn deep learning this year, after many failed tries with other approaches. Their framework (built over PyTorch), their course, and their community around it are simply the best I've found so far. Very much recommend to anyone who knows a bit of coding and wants to learn Deep Learning quickly and pragmatically.

Can you describe a bit more on why you’ve found this more helpful? Any cool hobby projects you’ve been able to build from this or other applications?

Probably an isolated point of view, but I stopped learning "new tech" a long time ago. I have a systems programming job and C/C++ is my bread and butter. The only new thing that I might spend some time on this year is C++14, because our build tools will enable it some time soon.

On the non-tech side, I started learning Tabla (a musical instrument) this year. This is far enough out of my daily activities that I am getting a kick out of the new skills I need to master, especially the dexterity required to play different strokes with each hand while keeping time!


I wish I was doing systems stuff. The churn involved in web applications is mostly a waste of time and effort.

I started to learn machine learning relatively seriously. But I've always had issues with frameworks where the team goes out of their way to be clever rather than straightforward. ML frameworks to me are plagued with that. And I hate python. A lot. Mostly because of white space formatting.

So, I decided to make my own neural net in C#. For fun, it'll never be released. I spent a solid month learning anything and everything I could about how brains work in the animal kingdom. Then I built out a neural net according to what I learned. My cells aren't really similar to most of the conventional types out there. But it does work fairly well with numerical data. If I spent more time, like a solid year instead of spare time over 2 months, I think it could be respectable.

What I really learned from this project was optimization to the extreme. I spent a hell of a lot of time testing different ways to accomplish the same math and pull out as much performance as possible. I'd guess for every hour of code, I spent 4 or 5 hours research, testing and optimizing. Mostly because it's all CPU instead of GPU. I never got into cuda and I never will. It's not like I've never optimized before. The difference now, I spent time finding out if conventional wisdom was correct. Also, I discovered a bunch of methods in C# that I never knew about.

I dont do development anymore for work (and God willing, never will), so this was just a distraction/curiosity project for me. In reality, I wish I took the time early on in my career to do a project like this. Anyone fresh in dev needs to do a 3 to 6 month pure optimization project learning, for themselves, what works and what doesn't. Conventional wisdom really is only the tip of the iceberg.

I work with c# all the time and would love to hear some of your lessons learned on performance improvement.

Is this on GitHub? I'd love to take a look since I'm thinking of making my own ml library to learn more about how frameworks like pytorch and tensorflow work

Nah. Like I said, it was a distraction project and I don't do dev for work anymore. Honestly, making a basic ML framework is not hard. I'm not the greatest programmer. Hell, I'd barely say I'm even decent. So if I could get something working, just about anyone can.

My recommendation though, it must be kept neat and tidy. 100%. Plus, keep paper notes. It gets complex real fast. Spend your time on good naming conventions and being VERY well organized. Obviously all projects should be that way. But this is one where it's not really a recommendation. It's a flat out must. Don't fall into the trap of "hacking" in something to make it work. Not even once. If something is wrong, fix it completely the moment you notice it. My experience, neural net hacks compound really fast into trouble.

Plus, I had fun with my naming conventions. My hidden layer cell class is called a "centralized understanding neural tracker" with the input cells called "data input command kontroller". As you can tell, I'm not a very mature adult. Pretty sure it wouldn't be appreciated in github.

Ooh, could you write up a piece on this? Few people really know how to write speedy C# code!

I guess if there's interest in it. Honestly, it's not like I'm that good at programming.

Literally, all I did was second guess every line of code and operation I put down. I would try to think of alternatives and research for alternatives. Then test them in their basic forms. It's just grinding work with a giant spreadsheet, nothing special.

Recently learned a lot about software, theory, process and management in the design, iteration and manufacturing of custom printed circuit boards.

Having climbed that mountain, I'm currently diving in to industrial automation: not software automation, but both off the shelf and custom robotics and factory equipment providing manufacturing 'unit operations' for working with metals and polymers. It's quite impressive how little integration currently exists between products from different vendors. There is a huge opportunity here for a software-world startup. Competing concerns include safety, reliability, problem detection, automated issue resolution, machine servicing, tool longevity, vendor desire for lock-in, supplier desire for lock-in, noise, dust, finish, speed, logistics, HR, scalability, cost, etc.

I delved into this exact area in the last startup I was at. I worked pretty extensively with Kuka 6 axis industrial robots and spent a lot of time programming them as well as integrating them with our custom hardware. Totally agree that there is a big opportunity for a unified software layer on top of all this hardware.

The system I ended up building allowed users to monitor the robot from the cloud, including telemetry such as end effector sensors and axis positions, as well as uptime. It also allowed steaming tool paths from the web platform to the robots directly with appropriate safety measures such as manual intervention required to start it. Would love to generalise this sort of thing and create a turnkey solution that allowed people to focus on solving their actual robotics problems, not spend all their time glueing together disparate components.

Sounds interesting, although single vendor is much easier than multi-vendor, especially when you throw in parallel purchasing decisions on short timelines and both execute and receive sales and tech support in Chinese...

A generalized solution necessarily has a strong spatial component. Most vendor motion planning applications seem to be either custom and cell/unit-operation specific or are expensive specialist general applications with high complexity that often exist as plugins to CAM tools like SolidWorks.

I don't have the time and resources to acquire and delve in to those, so my approach has been to accept the fact and go ghetto with cheap local hardware that comes without motion planning or integration support, observe existing industry processes, and attempt to self-build iteratively. Luckily I've already built a team to produce custom robotics cheaply and quickly and recently added an experienced production manager from the automotive sector, so we have an advantage in this space.

Any suggested reading/resource list ?

Not really, someone could perhaps write a modern book approaching manufacturing from a software background. My feel-it-out approach has been a multi-year gentle introduction combining reading and MOOCs across logistics, trade-specific fabrication manuals, metrology and an understanding of fundamental mathematical approaches to the space and evaluating their existing implementations: chiefly multivariate linear optimization and Google's OR Tools. I also maintain a custom supply chain automation platform for our business and now have multiple years of experience working with a range of third party fabricators (many orders per week) across a few processes and material types which has given me relatively strong insight in to a broad range of challenges or issues that can emerge in fabrication-related process interfaces: bad specs, tolerances, shipping damage, alignment, test overheads, supplier reliability fluctuations, shipping issues (carrier bankruptcies!), missing packages, importance of receivable/inventories, reasoning behind anomalous unit operation timings, importance of maintenance, fallback, training and safety, insurance costs, true costs of manual programming, benefits of insourcing, lesser-known unit operations can save a ton of money...

Using OSX on a laptop, Linux at work and Windows while playing. Tempted switching back to Windows now because of WSL.

Using gstreamer, creating gstreamer custom filters, performing graph changes on the fly. Awesome and a joy.

WebAssembly as target(compiling C stuff with emscripten and then enjoying it in the browser).

Playing Stracraft II, high impact of rapid decisions, dealing with complexity as some kind of reflex. Started one year ago, never waste more than 15-20 minutes. I am more focused at work, keeping myself in the zone for longer periods.

Not necessary tech, but being more tolerant towards people in industry not driven by passion, but by salary and day to day life chores.

What would you say are your biggest takeaways from or pieces of advice to learning gstreamer? I just started building dynamic pipelines and it's been quite the new experience.

I'm kind of cheating with this answer because it's not a specific piece of tech, but the thing that I'm really focused on learning right now is how to build out my business by hiring developers & learning how to properly manage them as they help contribute to some of my company's projects.

Most of my development work has been solo, with occasional one-off help from contractors. But the number and scope of my projects has been growing and I've been struggling to keep up, so I'm now going through my first round of finding people to hire, designing a fair & useful interview process, and figuring out the best way to break down my current projects so that it's minimally painful for a new developer to ramp up on them.

This process has also forced me to actually start looking for a legitimate source of funding for my business, besides my own savings. I've been trying to learn this side of things, but it's been a real struggle -- I've definitely been living in the bubble of focusing on my product without thinking about the business side of things for too long, and I'm finally making the leap in terms of taking the business side of things seriously.

Any words of encouragement or advice are greatly appreciated :)

Use the client's funds (shorten accounts receivable terms): x% up front, y% per month, or work ceases. Nobody should complain, if they do then make like a medium to large scale organization and cite 'policy'. Finally, defer all outbound payments (accounts payable/liabilities) by some fixed period, eg. one month. You can do this on the sly by setting a fixed date per month for payment and offsetting all contracts such that you gain 3+ weeks of hold time. Use your existing funds as a buffer in case of non-payment.

A few things: Make sure you hire developers that fit the business culture you are trying to establish and understand the "why" of your company. This is worth a read: https://blog.samaltman.com/how-to-hire

You don't have to have overly strict rule about hours, leave, documentation, etc. but make sure it is very clear to your developers what they are expected to do, and have them evaluate their own performance (obviously with your input) every few months.

Criticise in private, complement in public.

Choose your customers wisely. You make a lot more profit when you start saying no to the wrong customers. (An easy way to say no is just to charge a lot, like 10 times more, than you would normally charge for a certain job)

Don't be afraid to make mistakes, well rather: try not to make mistakes, but expect them to happen occasionally and when they do, don't beat yourself up about it - recognise the mistake, try learn from it, and move on. It might also be an opportunity to impress your customers, by turning a bad outcome into something positive.

Make sure you set things up in such a way that can get some downtime without your company falling apart.

Good luck!

Thank you for the thoughtful reply -- I really enjoyed the article, and several of the points you mention are already resonating with me, even at this early stage in the process!

Music producing with LMMS, mostly wanting to make jungle dnb sounding stuff

I've installed FL studio a few times in the past but didn't get really far. This time I've decided, let's actually gain some understanding of theory and tools (like synths: https://youtu.be/atvtBE6t48M) and make a little something just for fun.

I'm using LMMS because now I'm on linux and don't want to deal with wine and FL studio. LMMS is actually pretty good, and has a good selection of tutorials on youtube

This is something I've been doing a bit, but I'm more interested in music composition, for piano or symphony or similar. Musescore[1] is an amazing FOSS tool for interactively creating sheet music. It's like a WYSIWYG sheet music editor, with a virtual keyboard, playback support, and very basic mixing. I have a little background with piano (childhood) and trombone (high school), so it's been much easier for me personally to create new music by manipulating a traditional staff in Musescore than with the grid view in FL Studio or LMMS.

1. https://musescore.org/en

Take a look at Helm. It's the closest thing to Serum's UX in the world of open source synths, and it runs on Linux.


Reaper is quite a decent DAW and although it isn’t free, it’s at a reasonable price ($60 for a hobbyist license). They started to provide experimental Linux builds, so maybe it may be useful for you.

Noooice. Love jungle and dnb too. Used to produce on reason.

Check out phasex and arpage, both in Ubuntu package repos

Clojure. Started with "Getting Clojure" book and can't recommend it enough. Written in a clear and practical style.

I have had the joy of learning Clojure this year! I am by no means an expert, but I love the mental paradigm shift I’ve had as a developer.

I am about to quit my current Full Stack job and spend a few months exploring the wild and see if I can strike out on my own with consulting/SaaS stuff. I only have a year of professional experience under my belt, but I’m hoping to use the next couple of work-free months as a retreat to learn a lot of things and pivot my development career. If anyone has advice on how to move into consulting, I’m all ears!

In the last few months, one really fun and educational side project has been creating/designing my own programming language.

It started by accident, by taking apart an existing mathematical expression evaluator, to learn how it works. This led to a deeper understanding of lexer/parser/interpreter, (pre/in/post)fix notations, stack machines..

Once I realized that what I was looking at was a kind of "virtual machine", I was hooked and continued by adding language features like variables, arrays, objects/dictionaries, functions.

The basics are now fairly complete, but the language doesn't "do anything" yet - it's in its own small isolated universe. Next I'm imagining how it will safely interface with the outside world - networking, file system, database, vector graphics, sounds.. What I want is something like a cross between BASIC, Lisp, and Hypercard.

Anyway, still not sure how practical it's going to be, but it's been a wonderful learning experience. It led me down through the history of computer science to re/learn the basics, making numerous discoveries of things I didn't know, getting a better overview of what languages exist(ed), what I like (or not) about their syntax or approaches to various aspects of programming. Creating this little hobby language has definitely helped me grow as a programmer.


As for a non-tech related subject, studying music theory is endlessly fun and thought-provoking. It also comes down to creating one's own system/language.

Can you please recommend any resources for studying music theory ?

This might depend on your personal preference and approach, but I like books with high information density, with pieces that I can chew on for a long time - even if much of it is beyond my understanding at the beginning (or even at the end). Here are some of my favorites:

The Jazz Theory Book (Mark Levine)

Huge series of play-along books by Jamey Aebersold

The Geometry of Musical Rhythm (Godfried Toussaint)

Harmony (Walter Piston)

A Geometry of Music - Harmony and Counterpoint in the Extended Common Practice (Dmitri Tymoczko)

Lydian Chromatic Concept of Tonal Organization (George Russell)

Augmented Scale Theory (Javier Arau)

Tech-related I've been learning Postgres recently. Postgres had some features that MySQL lacked that I wanted to use in some projects. I didn't initially expect it, but in addition to now knowing basic Postgres, it has improved my generic SQL knowledge and even my skill with MySQL. Always helpful to increase the ability to look at a problem from different perspectives.

Non-Tech related I've been (trying) to learn the guitar. I think music is a great counterpoint to coding. I've been enjoying Coursera/Berklee's Guitar for Beginners [0].

Which is a great segue to a shameless plug. I mine HN for comments that mention online courses and rank them over various timeframes, including the last year [1]. Oddly, it's how I found the Guitar course, though obviously most recommended courses are tech related. It's a good resource for finding interesting courses if that is your style of learning.

[0]: https://yahnd.com/academy/r/coursera.org/learn/guitar/ [1]: https://yahnd.com/academy/?t=year

After a decade of wanting to learn to code while life got in the way, I'm actually doing more coding (mostly CSS styling for websites I run) and laying the groundwork for eventually learning a real programming language.

In the spring, a developer from HN talked to me and recommended a free course and I also applied to an online coding school offering free tuition for the summer. In the process of applying, I learned my computer doesn't really have enough RAM.

I haven't been able to spare the $40 or so it would take to upgrade it. I've been working more and moved to a larger apartment to improve my working conditions. (I'm still in an SRO, but now I have a private bath and a George Foreman grill.) I hope to eventually get a laptop to further improve my productivity.

Between my medical condition and extreme poverty, getting anything done takes forever. But I'm actually cautiously optimistic and excited to be working towards goals instead of spending all my time putting out the endless fires of my shitastic life.

I also set up a blog to help me gather learning resources in one place so I can find them again when I can get all my ducks in a row and have the physical arrangements and ability to set time aside to actually learn to program.

You mentioned you were working in css. Here are some fun resources https://flexboxfroggy.com/ https://flukeout.github.io/


I've found sample code from Code Pen useful. I like this CSS blockquote, though I haven't found a use for it per se:


I actually did a couple of home study courses in HTML and CSS years ago. One was a set of CDs, a Christmas gift from a Canadian friend, the other a book I purchased. I used to hand code my websites, but I never got any content up. Maintaining the back end took too much time. Then I migrated to Word Press. Then I migrated to BlogSpot. I produce a lot more content these days.

I’ve picked up Kubernetes as a topic of learning this year. Now that I’ve had a few months of deeply focusing on it, including migrating Apache Spark jobs from YARN to K8s, I’m changing my focus. My focus from now until the end of the year is going to be focused on Site Reliability Engineering. From incident management to logging and monitoring. I think those skills will really help me in the future, regardless of the current technology hype.

Woodworking, I have completed a few projects so far including a work bench. I found it as fulfilling as writing software, a good hobby to develop without burning myself out with my software day job.

That sounds fascinating, how did you get started?

I've spent this year mostly on Go. I think I'm in a maybe good enough spot to be employable with it? Which was probably my goal all along.

Through Go, though, I've been feeling like picking up a language with a more advanced type system. Usually when I have that feeling I get trapped in analysis paralysis and just never pick anything up. I've been considering just hard-committing to Java/the JVM and taking it as it is. My experience with Java was from college/my first job after graduating (horrible J2EE fintech mess), but it sounds like more modern Java is pretty neat? Who knows.

Take a look at Kotlin. We are building our enterprise products with it. You get all the benefits of Java (stability, maturity) without the bad parts (boilerplate, boredom).

We just hired a Kotlin person (really a Java guy who refreshed his Kotlin over the weekend) for this, and we may be hiring more.

I suspect more companies will start looking at Kotlin in the next 2-3 years, especially for green field projects.

The concern I have with JVM languages is that employers will have a constant temptation to just fall back into Java instead of actually committing to the language they've chosen. From what I understand, Kontlin/Scala/Clojure all have relatively easy Java-interop, so it smells like after a while non-Java projects could just become Java projects?

I have heard lots about Kotlin though, and it sounds like most devs that've touched it are huge fans.

Scala and Clojure are a bit of a leap for a Java dev, which may come with some cost. I don't get that feeling with Kotlin - you can kind of slip into it, it's a very easy transition, and then you don't want to go back.

Sure, Java interop will make some code parts look a lot more like Java then like Kotlin, but I can't personally imagine that a team would decide to switch back to Java-only after using Kotlin for a while. Interested to be proven wrong if someone has seen that happen.

> Kontlin/Scala/Clojure all have relatively easy Java-interop

I think that you need to separate out languages that are intended for bidirectional interop (Kotlin/Groovy) from those that provide excellent one-way interop (language uses Java APIs) but less optimal interop the other way (Java uses code written natively in language).

Groovy and Kotlin have great bidirectional interop while Clojure and Scala don't map over nearly as well.

> it smells like after a while non-Java projects could just become Java projects?

Almost never happens in my experience, Java is just too suboptimal compared to these other languages. Once I started using Groovy in a few places it quickly becomes the case that I wanted to use it absolutely everywhere I can - it's just too much better.

I do code it in a much more static style than is often used in Groovy more generally though (declaring types whenever it helps readability, etc). I also always want to define interfaces and key data structures in pure Java if there's no reason to have them written in a different language.

I guess as someone with several years of Java experience and a few years of Scala experience, this is a concern I've never really had. For all of Java's strengths, it is verbose and annoying. I think the biggest lift is the decision to move to something like Kotlin or Scala instead.

I have noticed something like what you describe with Groovy though. We've had groovy enthusiasts that have peppered our java codebases with Groovy. It's not viral or contagious, and ultimately just served to confuse matters and make the code harder to understand. We've had more than a couple of refactor efforts to get rid of groovy code and turn it back into java.

You have a few options there:

* Rust is often thought of as occupying a similar niche to Go, because it can deploy single native binaries and has pretty high-level abstractions. Often known for slow compile times, though.

* OCaml has one of the best type systems and compilers out there, with almost full type inference and also compiles to pretty efficient native binaries. Compiler is known to be fast.

* D is also an established, fast and efficient compiler, a powerful language with good libraries and tooling.

* You could definitely try out Haskell, it is pretty mainstream nowadays and there are lots of great learning resources.

I also started with Java too, and hated it, though I never did J2EE stuff. But I'm honestly pretty impressed with Spring Framework now. Spring boot brings in the convention over configuration aspect, and spring data lets you specify repository interfaces and it will dynamically generate at runtime an implementation based on the type information and the method names.

Haskell. A couple very solid books for Haskell came out in 2019 -- Get Programming with Haskell by Will Kurt, and Practical Haskell by Alejandro Serrano Mena -- and I was lucky enough to find a Functional Programming Meetup group in my area with some guys who write Haskell code every day.

Currently falling, albeit very slowly, down the rabbit hole of FP -> category theory -> HoTT.

Mind sharing books that got you started? I've been looking into getting started with Haskell myself.

I actually read a book on Functional Programming in Scala [0] as my introduction to FP, so I had a little understanding of concepts in functional programming already, but in terms of just Haskell my recommendation would be that Get Programming with Haskell book by Will Kurt that I mentioned, which is targeted at beginners. Someone else added the Learn You a Haskell Book for Great Good! book online which is a good free online source as well, but since the original version was written in 2011, it might be a few versions behind on the GHC compiler compared to the Kurt book which was released in 2019.

After going through an introductory resource to learn syntax and concepts, other good beginner resources I have used are the Functional Programming Discord [1], the free Data61 course that Brian McKenna goes over [2], and the Tsoding series on YouTube [3]. The Practical Haskell book I mentioned is good too, but I found it a bit higher level than these other resources.

[0]: https://www.amazon.com/Functional-Programming-Scala-Paul-Chi...

[1]: https://discordapp.com/invite/FvT2Y5N

[2]: https://www.youtube.com/watch?v=NzIZzvbplSM

[3]: https://www.youtube.com/watch?v=h_D4P-KRNKs

The best guide I've found for this is Learn You a Haskell for Great Good[0]. You'll probably see lots of recommendations for it around here; it's a very gentle/conversational intro to the language that's fun to follow along with IMO.

[0]: http://learnyouahaskell.com

Can you help me understand which kind of projects use Haskell language?

Do we have many long term jobs for Haskell developers?

So, I have recently been at Zurihac, attended by ~500 people.

From what I have seen, there have been roughly 4 groups:

* people running their verified-contracts on blockchain strartups with haskell stack

* people interested in GHC as a compiler (i.e. developing new extensions for their phd theses)

* people doing consulting projects

* people running their company on haskell because they like the stack

Some projects were really interesting, like a a haskell-inspired language that is compiled to VHDL, or various use-cases for Dhall (typesafe alternative to i.e. yaml, that supports functions, but isn't turing complete)

I still have on my todo-list "Do at least one PR for Pandoc!" as that is a haskell project that seems to have nice entry-level issues :)

And I know there are teams in FAANG that use haskell, but I don't think they hire too many people :-)

There's a pretty good outline of which kinds of projects Haskell is well suited for by Gabriel Gonzalez here: https://github.com/Gabriel439/post-rfc/blob/master/sotu.md

In terms of long-term jobs, I think learning concepts from statically-typed functional programming language will improve your code quality (read: chance at sustainable employment) in general, but actual prospects are probably area dependent. I am lucky enough to live in a tech hub so there are many Angel List jobs here for Haskell and Scala, but this may not be the experience for every city.

Postgresql. I had learned to rely too much on ORMs and diving into SQL proper was like getting hit by gamma rays and turning into the hulk.

Looker. I get asked for reports frequently and with this tool I intend to cut that number down to zero, company wide.

Kubernetes on AWS. Bought a book, learning about it in my spare time.

Graphql with React Apollo for data access. It's pretty sick. First Redux came out, but it's verbosity was too much, I never liked it. Then Mobx came out and it works fine for me, really fun to use. Now Apollo exists and you don't even need a store. Plus it caches stuff. Plus a bunch of other sexy stuff. Very interesting tech.

I read bad feedback/stories for companies and identify trends on what went wrong, and what engineers hated so I can prevent that at Papa as head of engineering.

Drawing. It's the complete opposite of programming and very soothing after a rough day. There is no right or wrong, it just `is`. I look up pictures of manga I like, from Baki or JJBA and draw stuff, then upload it on Tiktok to share in the fandom.

> diving into SQL proper was like getting hit by gamma rays and turning into the hulk.

lol. wait til you start using COPY.

source: DBA.

After a 40 year gap, I've started to re-learn assembly language programming via via https://embedded.fm/blog/ese101.

Also, last spring I took the basic Electronics 101 class at our local community college (http://www.ccsf.edu/en/educational-programs/school-and-depar...) -- Ohms law, intro to RC time constants, transformers, etc. It was just one night a week, so not a huge time commitment (2.5 credit units). This semester: active analog circuits!

Not sure it's made me any better at my Python/SQL day job, but perhaps more methodical.

AWS and how to deploy a complete web app with the service bundles (EC2, Elastic storage S3, etc.) It is an amazingly fulfilling experience as a product manager.

You may enjoy my https://github.com/ricardbejarano/learn-aws GitHub repo.

What resources did you find more useful? Aws’s own documentation?

not op, but the labs on https://www.qwiklabs.com/ are pretty good and hands on (i am in no way affiliated with them - pointing out a good resource you may want to look at)

Past 6 months- 1 year for me was a lot about reading about leadership and how to be a better lead. Also played a bit with Rust.

I've started learning clojure a week ago and want to continue in this path of learning / build something cool with it.

In tech: Diving deeper into Elixir and Rust.

Outside of tech: Korean! I find it absolutely fascinating to learn.

I recall that the origin of Korean is somewhat mysterious, have you come across that?

Linguistically it's grammatically about 80% the same as Japanese and if you replace Hangul with Hanja where possible you'll see a tonne of it's vocabulary is from Chinese.

I guess what's mysterious is which of Korean / Japanese influenced which??

Korean has a slightly more complex grammar than Japanese. Not by much but there are some forms in Korean that don't exist in Japanese. But it's remarkable how they are almost identical.

I've been slowly working through the exercises in Christian Robert's book The Bayesian Choice. I'm a statistician and my job to help people make educated decisions, so I ought to know a thing or two about decision theory

That's a classic. If you want something to follow that up with, take a look at Berger's "Statistical Decision Theory and Bayesian Analysis".

I've already done some akka/scala work professionally, and separately, some api development with play/scala, so for a side project of mine I've been working on an idea that requires api endpoints served by an akka cluster backend. Now that I have a few of the required endpoints and a working cluster, I've been working on learning React on the frontend, which is new to me. The next few months will be crazy because I'll be learning how to bring in some async communications between frontend and backend. Not really sure how to start with that on the frontend, but I imagine it'll be sockets or SSE from the backend.

Separately I dabble with Ng's coursera ML course but aside from writing jupyter notebooks with the octave kernel, which I enjoy - latex math equations are so pretty - I find the subject material a little boring. I like graphical structures though so maybe interest will pick up when they get into neural nets.

I've started Rust a few months ago, because it sounded interesting and distinct enough so I decided to add it to my tool belt. So far, I've completed a few chapters from the official book.

Oof, same, coming from python/Go and having some knowledge of C, I can say I love it.

But I work with C++ developers who are adamantly opposed to taking a jump because rust is harder for them to grok (as they suggest that they have to unlearn patterns).

Rust is unstable, so there is no reason to learn it right now. Many revesions, version incompatibility, dependencies from unstable branch in main repository branch. It's absolutely useless for production right now if you don't want to write the whole thing from scratch.

Rust the language has been backwards compatible since 2015. We add stuff, but don't remove it.

Many, many companies, including big ones, are using Rust in production. They don't need to re-write things.

I'm coming from a PHP, JS, Python background. I've used strongly typed languages before, but not to a great extent.

Rust feels like a well designed language and ecosystem so far and I think it learned the lessons where other have failed.

Learning React and the ecosystem at work and improving my CSS knowledge as I am mainly a backend guy.

On a more interesting note , learning Meditation via "The Mind Illuminated" book. Plus I plan to do a Goenka retreat later in the year (probably after reading a post on here "Vispasanna for Hackers" I think it was titled).

On a side note, I know we are encouraged to keep learning as developers, but being an old schooler (been writing software since 2000) I notice that people often keep learning new stuff instead of getting really good with the tools they already know. Usually the first attempt with a new framework / language isn't really the best code as it is a learning experience. As a result we have a lot of applications written in a less than perfect way. Curious what other peoples opinions are on this.

Every time I re-approach or begin a new web application I try to pick up a new tool from the toolbox. Last week was Web Workers. Holy cow they're amazing.

I do a lot of GIS so there's many very cpu intense tasks for analysis.

Instead of trying to break up a problem into lots of small promises as not to block user input, I can just call away to a separate thread to do a ton of blocking work and return the output.

The beauty is wrapping the interface in a promise so I can perceive web workers as being just like Ajax calls: an async data source/sink.

The more broad answer to what I'm learning in 2019: how to use every new project as a playground to learn new technology while not putting the project deliverables or time-line at risk. This is basically about learning how to de-risk and prepare/conceptualize fallback plans. And how not to bite too much off.

I picked up python in 2018, and really enjoyed that, so I think I’ll be sinking some time into getting my python skills on par with my C# skills.

There aren’t many Python jobs around here, but there are some. Not that I’m currently looking, but the next time I am, it would be nice to work with a language I actually like.

1. Deep Learning. No immediate use for it, but I feel it's an important skill to know.

2. Powershell (on Linux.) I'm already proficient with the traditional shells, but I want to see if this is overall a better CLI and/or scripting environment than, say, Fish. (This was prompted by the recent post about a similar thing newly implemented in Rust.)

3. APL, getting back on it after a long time and potentially writing my own compiler and dialect, if I feel inspired.

4. Consolidating Japanese, mostly the spoken language, because I don't have the time nor will to memorize 1000s of characters. I'm already intermediate level, so at this point I mainly watch movies / shows every day, hoping some of the vocab will stick to my mind.

Binge watch Terrace House. Best source of natural, spoken Japanese.

Trying to learn 'Everything'. And that's a problem. So learning how to manage learning (Not from the famous course)

..Any resources to help me?

I've had this problem off and on. The thing that's helped me lately is looking back at the times I focused and learned one thing. Example: I read a (MS)SQL book nearly 8 years ago, it was well written but not excessively long. I took my time with it. And you know what? It's been relevant ever since, and I've been surprised how frequently I know more off-hand sql knowledge than other devs. I"ve had this experience a few times now, and it always boils down to thinking you need to choose the most relevant, most important thing to learn. You don't. Just choose _a_ thing that is relatively interesting and relatively important, and spend a little time with it. It will last longer and take you further than you realize, and also help you contextualize other things you want to learn. Its not a simple additive -- its exponential. Things in general are more related than people realize, and this is especially true in tech. Most skills you learn will translate better and last longer than people give them credit.

This article made me think a lot about the habit of trying new things: https://www.raptitude.com/2017/12/go-deeper-not-wider/

Svelte has been my new thing, and I'm trying to be better at writing js tests even though I hate writing them because hubris

I picked this up as well after seeing it here a few days ago. I rewrote part of my site to use it from React, and I really like what they've done with the component authoring experience.

Finishing up the Introduction to Algorithms course on MIT OpenCourseWare. Interested in many of the WWDC 2019 releases too, but given that there’s over 100 videos I’ve focused on SwiftUI.

Most of my time this year has been with browser streaming, async Rust, and vanilla JS. I think the last has been the most useful. I highly recommend really learning the DOM. Implement your own client-side routing. Make a view framework. See if you can make an app without a bundler/build step. Or even without npm at all. It's fun.

In general, I think it's very valuable to have a deep understanding of your platform, even if you don't need all that information on the daily.

1. Elixir/Erlang 2. Binary exploitation/Reverse engineering 3. Danish 4. Miniature painting (brush and airbrush)

Things that haven't made me a better developer: Kubernetes, GCP.

Physics — always wanted to understand how quantum mechanics works. I have a masters degree in CS, but it included almost no modern physics. After a year of fiddling with the Griffiths book and spending about $500 on other textbooks (less useful, though entertaining), I am definitely no expert, but I am starting to learn some things.

Erlang — because I love the actor model, but I only tried it with Scala/Akka. Time to try the original.

Machine learning, kaggle competitions, trying out GPT2 and BERT, learnt c++, thinking of learning Julia and rust, started a community for teens interested in coding and machine learning (reddit.com/r/teensintech)

Trying to start your own ml research project. It's pretty hard especially when you don't have any formal credentials or training.

Is there anyone else here who's been doing ml research without a degree in ml?

I'm not sure this relates entirely to tech but (to me at-least) it's a way of thinking better:

Algorithms to live by [0] - I am an engineer by training and product manager. I am always on the lookout to improve my knowledge of computer science. This book helps tremendously by showing a way to _look_ at problems. Certainly helps to have a better mental toolkit.

Inner Engineering - A Yogi's guide to joy [1] . Has really helped me get perspective on the issues that matter and how to lead a happier life.

I have been reading up on Physics (Richard Feynmann's books, obviously) and intend to continue this in the quest for better thinking. I do wish I had done this earlier in my life :-( but never too late!


[1] https://www.amazon.in/dp/B06XXN19Y9/

Started a newsletter on data science and machine learning, which basically curates stuff I think are HN worthy, sifts through all the "how to be a data scientist without understanding math" and "this manga does not exist" posts for the things that are really insightful. https://altdeep.substack.com/

Japanese. Learned Chinese in early twenties then started with Japanese until life happened. Picked it up again, and trying to learn it as a third language with my wife. Making progress.

Reinforcement learning, but not the deep RL stuff as much as the fundamentals and theory. Really enjoying working through https://agentmodels.org/

Rust, with a colleague, but mostly because I like my colleague.

Will soon take a class on Racket with my wife.

microservices,kafka and Clojure/FP. I just went over the microservices part and it's already boring. but Clojure as a language interests me but I never really developed on JVM. so I am skeptic about that. JVM out of the way I think clojure could be a good replacement for node/php/golang for server-side.

So I've been looking into microservices communicating with a persistent message broker like Kafka and what I'm still not sure about is the frotnend - that is, I know that the FE will communicate over https with an API gateway service (so REST or GraphQL) but if the FE needs a resource, how should the API gateway handle the request back to the browser? The only pattern I've seen so far is to issue a 201 CREATED for e.g. creating a user. Have you come across any other patterns for this?

I am not sure if I understood you correctly answer your question. are you asking for resource management (file uploads, etc...) in MS?

I've started doing linux / BSD kernel development very lightly. It all started because my supposedly supported network card wasn't working in FreeBSD. I still dont know shit, and it seems impossible to keep up, but its the most fun I've had programming in years.

1. Rust (again) to a high level of proficiency this time

2. Bringing my modern web stack skills up from indifference to high proficiency

3. Math

4. Houdini + Redshift

5. Compositing software (ideally Nuke but it's looking like AE or Fusion)

6. UE4, basic proficiency

7. Managing things like screenplays and design docs on a continuous basis, rather than just having these things exist in my head for years on end.

8. Any interesting medical/biology material I can get my hands on. I'm seemingly way more passionate about biomedical stuff than I am software these days.

9. Cooking things that aren't just nutritious but actually taste good to other people.

10. Effective time management for all of this.

The gist of it is pretty much find a bunch of things I enjoy and bounce between them to maximize efficiency, while maintaining some sort of ongoing goal system/structure to manage or otherwise guide myself through it all.

All the topics I want to learn are in my Trello board.


The cards that I assigned to myself I am learning now.

Trello is great as by pressing Q I can only see the cards I have assigned to myself and focus in on learning them.

How do you consider a card 'done'?

I've experimented with Trello in the past for this, but I always just ended up with a massive list on the board and spent an unreasonable amount of time antagonising over when cards should be considered finished.

Might be easy for "learn how to do X", but more difficult for broad topics like "learn rust"

Once I build out https://github.com/learn-anything/learn-anything

I will move this list there as it will have much better integration as LA will have a knowledge graph in which I can simply mark topics as learned to learn and mark my proficiency in them.

For now, I just mark topics as learned when I feel comfortable in the topic.

Data Science with a MicroMasters (EdX) by UCSD. I've completed two of four courses: Python for Data Science and Probability and Statistics. The Python course was good and doable while working full time. I've had quite some experience with Python to get into it pretty easy, but learned a lot.

The Probability and Statistics course was hard for me and a big step outside my comfort zone. I cursed it a lot but I'm glad I completed it. I don't think I would have gone through with it if I hadn't payed for the certificate.

Next are Machine Learning Fundamentals, last but not least Big Data Analytics Using Spark.

I'm not really sure it made me a better (web) developer, but the process of learning keeps my brain fresh. Plus, it opens up a whole new and exciting world for me.

Business and marketing. I'm basically running my own business anyway. It's about time I got better at it.

OS's. I'd like to build my own, but I've been a web developer for 15 years. It's going to be an uphill battle. I'm halfway through Learn C the Hard Way.

Eh. That's where I stopped on Learn C the Hard Way too. Hopefully I can find some diligence in myself to finish it -- the webserver less looks the most interesting to me.

I'm into the data structures chapters now. Pointers aren't nearly as difficult as I remember them being in college.

I'm looking forward to the webserver too.

Tech-related: 1. TypeScript 2. GraphQL 3. Rust 4. AWS (serverless-related) 5. Functional programming in general

Less-tech: 1. Lean Startup 2. Reading "Cultivating communities of practice" by Etienne Wenger 3. Trying to understand the rentability of real estate investments

Learning Piano, 3d design & printing. Improving my inline skating.

And a bunch of computer stuff too, but hell, for the past 33 years of working in this game, I've learned a bunch of new computer stuff each year. Sooner or later it all tastes like chicken.

Learning deep dive into linux networking [https://sysplay.in/index.php?pagefile=lnd_weekend_workshop] /system programming[https://sysplay.in/index.php?pagefile=lsp_online_training] / algo-DS etc. Mostly through online courses in second half of 2019. Wasn't that enthused about them previously, but having attended one, those are not bad and have lot of flexibility in terms of schedule and not having to travel.

Hey there, a guy on the same path here. Care to be connected through twitter / fb ?


I've been learning a little Clojure and using it for work, and it's been kind of an eye-opener. (I've been mostly a Java developer for 15 years.)

And the idea of using the same clean code for the frontend is super attractive.

Trying to learn more mathematics, as that seems to enrich so many things, including but not limited to programming. Currently reading "Introduction to Graph Theory" by Richard J. Trudeau.

Also learning a bit of Phaser.js, since I'd like to make an HTML5 game sometime soonish.

At some point I need to sit down and go through the gauntlet of refreshing all the skills for job interviews, (especially since I've been mostly developing/maintaining software for phone systems the past year and a half and I don't think I want to stick with it). Been putting that off, though.

Just refreshed my interview skills with interviewcake.com, Not 100% the only resource to use but it got me over the hurdle of starting.

I've been diving into this operating systems course https://classroom.udacity.com/courses/ud923/ in my free time,

It's about 9 years old I think, but it's been very enjoyable

Earlier this year I embarked on a project to help me learn how CPUs work, I ended up implementing simulator for a simple CPU from the "But how do it know?" book - I have a blog post about it if anyone is interested.

Since then I've been dabbling with learning about RISCV, but it's been slow progress.

I'm interested in that simulator, it sounds fun!

I started reading 'But How Do It Know' a while back; I never finished it but I can say that it was a very fun read.

I've heard that 'From Nand to Tetris' [0] is also quite a worthwhile read. A quick look shows that it not only has a link to a book [1] but also some freely available notes/lectures as well as some exercises.

[0] - https://www.nand2tetris.org

[1] - https://mitpress.mit.edu/books/elements-computing-systems

Yeah From NAND to Tetris is probably a better more structured approach, I kind of just went off and did my own thing but I'd imagine it's more fun to get something playing Tetris!

Blog post is here:


non medium link: https://djhworld.github.io/post/2019/05/21/i-dont-know-how-c...

I'm partway through Nand to Tetris right now, and I'm really enjoying it! It's taking me quite a while, as I'm doing it in C (which I have no experience with) as a way to start making my way towards embedded programming, but it's a really rewarding course.

As a software developer that mainly builds internal web applications (frontend and backend) with ReactJS, I've just started looking into improving my code with Typescript. I've seen it being praised far too much to not give it a try myself.

Lately I've also been working on an embedded BLE Mesh project at work writing C, which I found surprisingly fun. Coming from literally zero experience in embedded systems programming, I found it a fun and rewarding challenge.

I've also been very interested in Rust lately, just need to find a project to play with.

Arma 3 modding (C++ and their scripting language SQF). I want to remake the original Ghost Recon game (tactical realism) in the game engine. Seeing as it has a lot of the core combat, I just need to tweak it a bit.

That sounds insanely cool! Is the Arma 3 modding support better than Arma 2? I bought Arma 2 exclusively for the mods.

Yea, the community has progressed a lot more and the documentation (wiki, example files) is quite well done.

How to better my mental health while simultaneously figure out how to share some of the knowledge I've obtained over the past few years with others (conferences? blogs? teaching? I don't know. Help!)

Blogging is a terrific way to freely share what you know (if money is not a goal here) and hone your ability to effectively communicate it. Keep in mind it doesn't at all have to be limited to writing. "A picture's worth a thousand words." Adding graphics or short videos can tremendously enhance the material.

I want to learn to be a better presenter. I want to learn to both do better PowerPoint slides and Visio architectural diagrams especially involving cloud infrastructure and to learn how to communicate with non technical business people.

In the past eight months, I studied React and ElasticSearch but never did any projects at work or on my own so neither went anywhere. However, I did put my first two Node projects in production and did a Fargate (AWS Serverless Docker) proof of concept that I’m trying to find time to put into production. I want to get deeper into Docker.

Mostly machine learning. Did the coursera course. Some cognitiveclass.ai related to data analysis and python. Did a couple small projects with ML.Net. My learning has been pretty scattered, and not as focused as it probably could have been, but I think I've gotten a lot out of it. I've also been reading some programmer/development books. This is the first year I've actively pursued learning outside of a structured environment, and it's been a great year for this type of personal growth.

"A lot of the best programmers and the most productive programmers I know are writing everything in Clojure and swearing by it, and then just producing ridiculously sophisticated things in a very short time." - Adrian Cockcroft


I want to learn some Clojure!

Blender 2.8. It's been fun so far.

I come from a very strong JAVA background, working most of my 20+ years of professional life with various flavours of *NIXes; earlier this year got a job with a company mostly node+dotnet, and an imac desktop. So i have been learning dotnet.core/roslyn stuff, and it works fine so far. Besides, i learnt cannot live without a 4k display anymore...

on the "non tech" side, i decided to learn online as much as i can about digital video filmmaking, as a hobby.

As a long-time 3/4-stack developer, learning CSS better.

Japanese. After several failed tries, I got the Genki I book and improved a lot. Also pimsleur audios we good. Also have a teacher I Skype to when I need help.

If you want few interesting youtube channels (they are not language learning but interesting normal channels):

https://www.youtube.com/channel/UCvnmumaXaxiPvBDq90YxByQ - Really nice metal detector guy

https://www.youtube.com/channel/UC7RQMyUPzbQerM6rKRGqhvA - Review of toys, mostly beyblade and collectors toy

https://www.youtube.com/channel/UC4HCI_GJ2ZsueOlqgjApnFw - weird student

Lots of things in the data space - automation, orchestration, testing, quality, completeness, and building a data architecture with the proper kinds of monitors and alarms. Diving into business metrics, separating useful, actionable data from fluff.

As a hobby project, I stopped using Sublime and other text editors. I have been using Vim all of this year and have become more competent with various shortcuts and general navigation.

tl;dr: Clojure, Spacemacs, and gardening.

I had similar thoughts about Go. I got excited about it but didn't find that learning it was really that difficult. That's good if you're learning it to quickly use it but I'm looking to expand my mind.

Now I'm learning Clojure. I don't know if I'll ever use it, but learning it (like people always say with Lisp) has been an experience. I'm still working through learning it and I won't lie, it's been challenging. Been having to remap a lot of mental models and re-thinking loops and objects.

I'm also learning Spacemacs. I've been a hardcore Vim user for nearly a decade now. I've tried also learning Emacs but just couldn't get past the C-x and M-x for everything. I know it's a tired punchline, but it's like it was created to be anti-ergonomic. I've been using Spacemacs for just a couple of days and coming from Vim, it's amazing. I'd highly recommend it to anyone that's already very familiar with Vim. It's got a learning curve, but after using for just a couple of days I feel I'm already coming out on the other side of that curve.

In non-tech, I just bought a house and have been learning gardening. Nothing serious and in fact intentionally NOT taking it too seriously and not over-planning. I've already grown my own carrots, peas, radishes, and even some pretty flowers for my wife. It's been incredibly satisfying to make dinner and look at half my plate and say, I grew that.

I've even had some failures but you just stir it into the dirt and keep on.

I know it's not tech, but having a hobby that isn't in front of a screen nor sitting down has been great. I used to just play video games and my body was just not having it anymore.

Clickhouse - the speed and cost savings I'm able to get out of it for expensive database queries is some next-level wizardry.

I’m half way through my MS via OMSCS. Last class I took was on high performance computer architecture where you intimately learn about Tomosulo’s algorithm. I highly recommend the program for lifelong learners.

Otherwise I’ve been trying to re learn Emacs with the rise of LSP - such that I can do most of my work now in Emacs. I’ve been using doom-emacs to great success.

Are you planning on getting a new job after?

No plans. I didn't do it to get a new job, just to learn new stuff.

Zero Knowledge Proofs and related cryptography. These will probably be impactful as they mature in the coming years and decades.

Do you mind sharing how you got started with ZK Proofs? And in what way do you apply your knowledge?

I tried getting deeper into it using ZoKrates[1] (zkSNARKs) but back then the docker image was broken. [1] https://github.com/Zokrates/ZoKrates

I can't think of anything I'd strongly recommend yet, I'm just reading anything and everything at this point. There's tons of info about it, I'm just trying to sort through it all.

Learning to play a guitar, and some basic music theory. I wish I had started it earlier, but I guess it is never too late :)

Not a dev but I have been learning python more. I did a lot of things in the past with 2.7,now learning 3.x.

That aside,malware analysis. I've tried using Ghidra a bit but I've mostly been learning how to use procmon for dynamic analysis in windows and IDA to unpack and figure out your run of the mill windows malware.

Clojure, Hoplon web framework and Datomic.

I'm reading a Rachel or Joel post only to realize I've already read it before. And realizing that entrepreneurship is mostly about luck and timing. And that you do not earn money by making a good product, you earn money by buying something then selling it at a higher prize. eg. hustling.

Coq proof assistant, and started working through the book Certified Programming with Dependent Types.

Not a specific tech, but infosec and CTF competitions, often learning from YouTube videos e.g. https://old.liveoverflow.com/binary_hacking/index.html

I've been doing a similar thing. It's amazing what you can learn from CTFs. IppSec on YouTube is also a great resource for walkthroughs of HackTheBox VMs.

Product design using Human-Centered Design principles and public speaking, obviously learning by practice—I’ve spent too much time staring at the keyboard in the past two years and this feels both somewhat intimidating and fun.

I've been waking up early (6AM) to learn Golang and Clojure. I't has been refreshing and I even fell more productive at work. (I work with Python most of the time).

Flutter/Dart, ML with python, general software architecture.

Coming from a career in Android/Java/Kotlin. The new planned skills are to enable completion of projects I have in mind.

Angular/Spring simple app .Net Core simple app Kmett's Xuangi. Small Rust/Postgres app for benchmarking against my Django (likely swap over at some point).

Analog electronics, working to get past the "wire things together and hope they work" stage and learn how to design circuits from scratch.

Edit: Oh, and Rust as well :)

Mathematics. Specifically, best ways to learn and teach the fundamentals of math that helps to rediscover math rather than rely on rote repetition.

Quantum machine learning. I completed my phd in quantum information last year, have an assistant prof job, but looking to jump into the quantum computing industry.

I'm a novice in both topics, but it has always seemed to me that quantum mechanics and machine learning have a lot of natural alignment, as they both deal in probabilities. Is there anything you recommend for reading up on the subject?

You can always start from some online courses. This Coursera course is no longer available I think, but the video lectures are available https://www.youtube.com/watch?v=Z1uoz_8dLH0&list=PL74Rel4IAs... Great introduction to quantum mechanics and quantum computing.

I am taking this quantum machine learning course these days. https://courses.edx.org/courses/course-v1:University_of_Toro...


- how to write a dashboard with React & Redux and a Python backend

- fast.ai

- solving various (beginner level) CTF challenges


- Sounds lame but it's rather interesting: Risk Assessments and Risk Management

- nutrition

- improving my guitar skills

- meditation

Out of curiosity, how did you get started with distributed systems side projects? Do you use e.g. a bunch of Docker containers or cloud VMs?

There are some nice open-source projects out there for getting started with distributed systems (full disclosure, I'm a co-founder of one of them). They all abstract away (what some may call) the boring bits of getting started with distributed systems, like plumbing and such, and in general aim to improve the overall developer experience.

In no particular order:




docker-compose is fantastic for playing around with to spin up a bunch of servers with one “docker-compose up” command on my local laptop.

Would you find value in a lab that allowed you to spin up servers like this but at scale (500-1000)

This year our project is supposed to go into series. So I'm learning a lot about ISO26262 and safety and what that means in practice.

Business management software, trying to start a startup yet again.

Also, http://comma.ai

Golang and security. Golang is super weird to me compared with Ruby and/or Python. However, I can buy into its benefits.


I spent about 9 months 2 years ago learning Swedish. It was really fun and I enjoyed watching Swedish tv shows. I think learning languages just because is pretty rad

How did you learn? Immersion?

My daughter speaks super well from watching Swedish shows with the app Barnkanalen SVT - just use a VPN with an address in Sweden to access it.

Electronics, lighting, sensors, display tech.

What are your favorite resources for learning about these things?

Having a gun to your head to deliver a working prototype is helpful. And working directly with experts. I'm doing most of this on a pro budget so I can buy all sorts of hardware as needed. Having resources and a defined finished product to strive for really helps you focus.

Teaching. This will be my 1st semester as an adjunct at my local community college teaching Project Management 101.

Non tech: Spanish

Tech: Python (I am not a programmer by trade today)

Generally just hooked on self development books, I blame Tim Ferriss.

Elixir - Because it is awesome

Product Management - Because it is challenging

Security - App, Asset, Container. Because it is a must

Did we start to automate our HN comments with AI?

EDIT: OP just added line breaks. Imagine the same post without them.


- Computer Science: Having a designer background, I didn't have the opportunity for formal training.

- React and its ecosystem

- TypeScript


- Music Theory

- Synths

Invested in learn Go and a little Kotlin. Trying to balance out my JS skills.

Sketch comedy writing

Rust & Kubernetes

Rust, Mithril v2, business, Japanese.

Golang for building microservices.

Kubernetes, Kafka, Microservices

Hey, I've been learning Kafka too and posted this on another sibling comment:

> So I've been looking into microservices communicating with a persistent message broker like Kafka and what I'm still not sure about is the frotnend - that is, I know that the FE will communicate over https with an API gateway service (so REST or GraphQL) but if the FE needs a resource, how should the API gateway handle the request back to the browser? The only pattern I've seen so far is to issue a 201 CREATED for e.g. creating a user. Have you come across any other patterns for this?

Most likely the API Gateway speaks HTTP so it's no different than communicating with any other HTTP API. The API Gateway has a number of roles: routing requests to the right backend(s), checking the health of one or more backends, providing a single point of contact to the outside world (reduces the number of systems you have to lock down related to access from the public), holding api documentation, and others.

Think of the API gateway mostly as a router that allows you send requests to many different pieces of software behind it.

As far as patterns for HTTP Status Codes, you should take a look at the RFCs that define them: https://tools.ietf.org/html/rfc2616#section-10

I am currently learning these too.

RF engineering and Meditation


That's an excellent course/book!


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