Ask HN: What are you learning in 2019?

188 points by dadoge ↗ HN
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?

221 comments

[ 4.4 ms ] story [ 190 ms ] thread
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.

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.

I work with c# all the time and would love to hear some of your lessons learned on performance improvement.
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.

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.
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 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.

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 ?
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?
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)
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:

https://github.com/GoogleContainerTools/skaffold

https://github.com/garden-io/garden

https://github.com/windmilleng/tilt

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

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.
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.

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".
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.
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?

Russian
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.
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).

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.

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.

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

https://trello.com/b/cu32qF3q

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.

Blender 2.8. It's been fun so far.
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.

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.

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.
As a long-time 3/4-stack developer, learning CSS better.
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.
(comment deleted)
Clojure. Started with "Getting Clojure" book and can't recommend it enough. Written in a clear and practical style.
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.