Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What technologies did you learn in 2018?
629 points by vchernobyl on Dec 23, 2018 | hide | past | favorite | 601 comments
What technologies have you invested time in learning that you are going to keep using/experimenting/learning about in the next year?

I'm a professional Android engineer, and as for me: I learned Kotlin and use it at work every day, and so far I like it a lot. I also learned a little bit of iOS development with Swift. I also experimented with Flutter developing non-trivial "Hello world" apps, and I feel that it reduces a lot of friction that a lot of native mobile developers encounter.

What's your favorite tech in 2018?

Weirdly, perl. I found myself on a client site in a locked down environment with only the Windows version of GIT installed. Powershell disabled, no other programs allowed. I had to produce reports on the log files for this machine, but had to obfuscate information before taking it off the server.

I discovered that git had bash installed quite early on, so my initial automation and reporting was based on UNIX pipelines. As the data volumes became bigger and the customer requirements became more demanding, I eventually bit the bullet and started learning perl one-liners to do some gymnastics that just weren't possible or practical with just bash (first big win was adding the MD5 of the line so that I could dedupe the obfuscated data).

This lead to eventually writing full scripts in perl and now I have basically all of my reporting automated, even able to take up some 'value add' reporting that I didn't think was going to be possible.

So yeah, not a new technology but I'm now a perl convert and will almost certainly use it in the future if I'm faced with a similar situation.

Hey, there’s an old school community(they prefer monastery) called PerlMonks[0]where you can share your Perl oneliners and also pick up some mind blowing stuff. Come hang around sometime


Worth noting that PerlMonks functions similarly to stack overflow (for Perl at least), with the difference that discussion is actually encouraged.

Somebody should pick up that idea and create a site like stack overflow but that doesn't discourage discusssion or reward destroying useful knowledge.

But... it does discourage discussion. It's a Q&A site, not a forum. You don't just post some thoughts and reply to other people's thoughts: you post either a question, or an answer. If you need clarification on a post, you comment. It's not a discussion forum.

And I'm not a new, disgruntled user. I like the site a lot and am quite active on the IT Security stackexchange site. From my semi-moderator's point of view, the only place for discussion is the chat function (which only a few regulars use).

Yeah... the problem is that SO is becoming the only place where people hang out, and it's really difficult to find active programming forums nowadays. Except, as you say, SO is not a forum, it's a QA site. Which means there is no place left for discussions. While I certainly use SO a lot to find those small bits of missing knowledge, I think it has made search for help (in specific cases) actually much harder.

Agreed! I moved to HN and SO after two forums slowly died. I have some friends from those forums, but a chat group is different from a forum with dozens or sometimes hundreds of active topics every day. Not just in activity, but also the kind of things you can talk about.

I'm not quite sure what is going to fill this gap. I don't always have a place to post things. Blogging doesn't exactly work without an audience. The mainstream things these days appear to be just chats. There are still forums, mailing lists... heck, there are BBSes but it's niche and hard to find anything that isn't already on the decline.

dchuk tried to start https://hackerforums.co earlier this year.

It was a nice forum and I really wanted it to succeed and but it seems to have faded out.

> I'm not quite sure what is going to fill this gap.


I always find Reddit fairly poor in terms of what people actually suggest on the technical subreddits that I subscribe to.

Maybe something like https://dev.to ? I really enjoy that community.

The discussion post is hard as you have to filter the noise and people who know less than they think they know. It might be doable but it is a hard problem

My team has used Perl successfully for 13 years. We use modern Perl and the code is clean. In the process of switching new team members to Python as it is hard to hire people with Perl. I still think the meta capability in Perl is stronger than Python.

Meanwhile, I had a hard time finding (or getting) a Perl programming job (though I resisted coming to the Bay Area for a long time, so that was likely a significant factor). I've had to settle with other languages (mostly Ruby, Elixir, and now Python professionally, though I did sneak a bit of Perl into the Ruby one ;) ).

Where are y'all based? I'm reasonably happy with my current job, but I'm definitely curious about what else is out there (especially if it's not in the Bay Area).

We are in Greenwich CT close to NYC but we also have an NYC office.


I'm a security guy but like to develop as well. I'd apply for a job in Perl any day, despite not knowing it very well and Python being my main language. But I guess it's easy to say when I just read that you're having trouble hiring, as my expectations of entry requirements are now different. Anyway, it's a shame you have to make such a big change for what shouldn't be a big deal. The language is a tool -- I've even written C# in Visual Studio on Windows 8 for a year in two different companies, which is about as Microsoft-oriented as you can get (I'd rather use something Linux-based). Unless there are major deficiencies and the team is looking to move away already, it shouldn't be a problem to adapt to the team's standards.

You haven't tried training them ?

That is what I do now. But I find it easier to migrate older code to Python.

In this day and age, with Python and all, is Perl still worth learning?

It's worth getting a few insights into what it does well. As with any language it _can_ do anything, but a few key features that made it stand out for me:

* Perl is set up for really terse one-liners. You can basically emulate or surpass most Unix tools with only a cursory knowledge of the syntax

* Perl syntax is highly geared towards text processing and regular expressions. File handling and regexes are so much quicker and easier to use than Python.

If I were in a situation where I had a bunch of files I needed to process and the task didn't easily fall into something that could be done with a bash command, I'd probably reach for perl over python for a quick and dirty disposable script.

> * Perl is set up for really terse one-liners. You can basically emulate or surpass most Unix tools with only a cursory knowledge of the syntax

This definitely interests me. How does perl surpass Unix tools? I guess perl has the benefit of handling the equivalent of sed and awk.

Yeah, it has equivalents for each.


perl -pe 's/foo/bar/' file1


perl -pe '/foo/' file1


perl -ne 'print unless $seen{$_}++' file1

But then you can combine conditions:

perl -ne 's/foo/bar/ if /baz/ && /yot/; print "Line number $. changed to $_"' file1

And do some awk-ish line splitting:

perl -F, -ane '$sum += $F[2]; END{ print "The sum of column 3 is $sum" }' file1

It absolutely flies in the face of the unix philosophy and is much more complicated than picking up each tool individually, but once you get to grips with 'em they're very handy.

This blew my mind recently, when I had to delete millions of files in a directory and rm didn't make the cut (too many arguments), and find -delete took forever:


perl -e 'for(<*>){((stat)[9]<(unlink))}'

seems to be the fastest possible way to delete enormous amounts of files

Did you try xargs, to do groups of files at once? That's what I usually do:

  find -type f -print0 | xargs -0 rm

Yes, if you don't want to be forced to write exception handling and doing a dozen different tricks for merely writing and using one single regular expression.

A lot of forced indentation and absence of braces, and absence of sigils makes it harder to read Python scripts. However that's not the only problem with Python. If you are scripting you want the regular `unix_command` command thingy to work fine. More-so you want to read the output of that thing using a syntax like my @command_output = `unix_command`;

You also want heredocs. And you want multiline anonymous functions. I could go on and on.

But Python seems to be more like a tool trying to compete with Java than Perl.

People keep saying Perl6 is great, and I have no reason to think it's any worse than Python (but I don't know it).

One may also want to learn Perl5 for dealing with legacy stuff (either keeping or getting rid of it). There is a lot of it out there.

perl is a fine language. It scales quite well from terse one liners to large (and with appropriate application of discipline, readable) applications. It's a shame it's so unfashionable at the moment.

Im curious to what tasks you felt you could not solve in bash incl. the nix toolchain?

Many of my issues will be specific to the environment. The thing that made me use the first perl one-liners is because I was used to using 'rename' in the command line and I was able to emulate this with perl more easily (using a regex substitution) than 'mv'.

The second and more pivotal one liner was when I needed to create a primary key to ensure I wasn't getting any dupes later down the pipeline (a requirement that came about as some of the other contractors on the project were messing with my exports and then blaming my files for their conflicting numbers). My first approach was to use the MD5 tool included in GIT bash, but this was prohibitively slow, taking 45 mins to loop through each line of a 4mb file. Not sure if there was a performance penalty on the box I was using, but the perl one liner did the job in a couple of seconds for all the files I had.

After that it mostly became a question of maintainability, with the performance being a boosting factor. I found my perl deduping one liner was faster than either 'sort -u' or 'sort | uniq'. I was able to add new features and account for weird issues more easily. Regex was better than sed, syntax was more flexible than awk, there were more filtering options than grep.

Plus it was good fun. Perl has so many things that just feel so nice and tidy compared to bash.

Having said that, I still use Unix pipelines extensively, they just tend to be for ad hoc queries rather than for my automated reports.

All right - thanks for the elaboration. The perfomance diff sounds interesting. I might check it out at some point :)

perl has a less divergent set of options across different unix versions - for example, trying to run `sed` in place across MacOS and Linux you'll soon find that the options are different. There are similar issues with BSD vs GNU options in other programs as well.

There's an old quip that "perl is portable sed" - in my experience this is pretty true.

Yeah this is actually a major reason everyone should at least know or use some perl. macOS is a popular dev environment but the quirky macOS/BSD versions of grep and sed are super annoying for portable build scripts.

Machine Learning.

In 2018 I went from "zero to sixty", so to speak. At the beginning of the year I knew nothing about ML, and my math skills had gotten so rusty I couldn't even remember how to do simple derivatives or multiply two matrices.

In the first half of 2018 I relearned the college math that I had forgotten by working through MIT OCW's Linear Algebra, Calculus, and Probability courses.

In the Fall, I enrolled in Carnegie Mellon's 10-601 course, graduate "Introduction to Machine Learning". It was hard, it was a ton of work, but I did well and it was completely worth it as I now have a solid understanding of the basics of the field and can continue studying this upcoming year and into the future.

One course I found very helpful was 6.034 by Prof. Patrick Henry Winston[0] . Worth the time.

[0] https://ocw.mit.edu/courses/electrical-engineering-and-compu...

Thanks a lot for the MIT OCW lectures hint! I want to do the same in 2019. What works for me in general is diving into a side project and learning by hacking, but I fear ML won't be susceptible to this approach.

The Linear Algebra OCW is great if you do all the exercise and read the book as you study. For Calculus it's not so great, though the ODE course is fine.

This kind of courses from UPenn are really good if you need to refresh single variable, though I did an older version were all the courses were given together than I can't find in the current Coursera: https://www.coursera.org/learn/single-variable-calculus

fast.ai looks promising for just that

Looks pretty cool! Thank you.

I just started it too :)

I also learn by doing, and it works with ML too (dived into it last year, though I'm currently not doing it anymore). Find a project and jump... Happy learning!

Where did you get that kind of motivation? Sounds almost super natural.

It isn't supernatural, trust me. Very simply: I set a goal, understood what prerequisites I needed to fill, and just worked hard to get there. I put in about 5 - 10 hours a week in the first half of the year working through the OCW courses, then probably 10-15 hours a week during the CMU class. I work fulltime as a software engineer, so my 'class' time was usually a couple hours a night, after the wife and kids go to bed.

I struggle to focus after a full day of work and other tasks. I especially struggle to focus on technical work, and learning new things is difficult. How do you have the energy to sit down for another few hours of technical work after a full day of work?

I'm not gonna lie, putting in those couple hours can just be plain tough. Some days it is the absolute last thing that I want to be doing at 9 o'clock in the evening.

But I motivate myself by focusing on the long-term impact for my career, and thus the benefits for myself and my family:

Coupling my expertise in software engineering with deep knowledge in an adjacent field such as ML I believe can open up new opportunities and give me the freedom to take my career along paths that weren't possible before. That is what I remind myself when I sit down to work homework problems late in the evening.

That's amazing :) What do you plan on using ML knowledge? Like does having this skill have a market (for non-PhDs)?

Applied ML is one of the hottest CS jobs these days :-) From startups to big cos, everyone's looking for data scientists.

When you say you enrolled in 10-601, what did you do? I assume you aren't actually a student at CMU.

I'm a staff member at CMU, and so have the benefit of being able to enroll in classes for free.

I'm also a CMU staff member and I audited 10-601 this past semester but had to stop halfway through because it was too over my head, props to you for doing well in it!

> so rusty I couldn't even remember how to do simple derivatives or multiply two matrices.

I was never taught how to do either of those things. Am I missing out on something?

If you want to do machine learning, those two ops are pretty much the foundation of how it works under the hood.

If you want to do coding in general, I like to say that you can have a career in code without being good at math. But, math is how great coders do what seems like magic to other coders.

That’s a really nice way of putting it.

As a grown up who has already been working as a software developer for ~10 years, do you have any recommendations on books to read, courses to do etc if I want to improve my maths? I’m not terrible, but I know I could be a lot better!

I was on the same boat as yours about 3 months ago and I picked up 3 books based on HN comments;

1. No bullshit guide to Maths and Physics [1]

2. No bullshit guide to Linear Algebra [1]

3. A programmer’s introduction to mathematics [2]

I haven’t gone through the books completely but I’m halfway through the ‘no bullshit..’ books and I liked them based on how easy they were for me to approach.

May be they also fit your learning style as well? Hope this helps and happy learning.

[1] : https://minireference.com

[2] : https://www.amazon.com/dp/1727125452

I'm same as you too but I did have some background in math from college but I've been rusty on them already.

- I know it's said over and over again but KhanAcademy is pretty good for high-school math - For probability, I'm also going over this website[1] at the moment. Maybe someone else has other recommendations too - Linear Algebra is next on my list but others have given some reference for it already - Andrew Ng's course on Machine Learning from Coursera is also another frequently recommended if you are trying to learn math for it

[1] https://www.probabilitycourse.com/

https://news.ycombinator.com/item?id=18741229 - what do you think about this? Is it really pointless to learn ML unless you're going to work in a big company that have access to a lot of data?

curious, what you are planning to do with the new knowledge

> derivatives or multiply two matrices

> college math

Those should be high school on most places

Derivatives were available for the most advanced level students in high school where I went. Even then it was understood that they were receiving college credit early. Linear algebra not at all.

Not too much with linear but usually 10th or 11th grade math will introduce matrix multiplication.

Which is odd, in my opinion. Linear algebra is easier than Calculus and would likely be more useful to the average person.

Agree completely. In my university, calc was a pre req for linear algebra and it didn’t make any sense to me then either.

Yes, those are thought in high school in Turkey.

can non-CMU student learn that class online?

Prof Tom Mitchell's video lectures for 10-601 are available online: http://www.cs.cmu.edu/~ninamf/courses/601sp15/lectures.shtml

No, that specific class isn't available to non CMU students or staff (of which I am the latter).

There are several CMU courses, however, where the full collection of lectures are available to watch on YouTube. The Fall 2017 offering of Mathematics for Machine Learning lectures are all on YouTube.

I would like to know the same.

Nothing. Strangely enough, I can't think of anything new techy that I learned this year.

I've worked full time remote in mobile and machine learning the last 3 years, but this year is special. This year has required me to set my own motivations and goals aside to really be there for my 18 months old daughter, and for my wife. At first I tried to resist and focus on both my family and my career, but I found it hard to be my best self for them.

I took a step back from the stress and greed. I learned that I need to keep my career out of my head when I'm caring for my daughter. I'm more motivated than ever to do some cool projects in 2019. And I've learned that I need to maintain a mental balance between work/passion/me and my family.

Towards new beginnings, and growing as a person.. :)

I think you learned the most valuable thing about tech that you could possibly learn: that it is not the most important thing in life. Congratulations!

Thanks! And yes, that's indeed true. There's a fine line between passion and obsession. I found that my motivation and passion easily are morphed to their negative equivalents when I'm under pressure, or when I just need to focus on something else entirely.

Rust! :)

I've been working full time with Rust this year for web development using postgres. The language and ecosystem have largely been sufficient for creating a robust platform. I have been working with the latest version of stable Rust all year and have never experienced breaking changes. Working with futures was unnecessarily difficult. Async/await is releasing next year, hopefully in Q1. This will simplify future asyncio development and make it much more legible, but regretfully trivializes hard work of the past. Aside from asyncio, though, my work doesn't seem vulnerable to future language improvements.

I strongly recommend anyone who is waiting for the right time to jump in, to not hesitate any further. By the time you have a handle on the language, the new and improved asyncio will be at your disposal in the stable version of the compiler.

Rust has been the most surprisingly fun thing I learned this year. I was shocked at how quickly I was productive (even while still having no idea what I was doing). It really is astonishingly like using a very high level language, with a few weird quirks.

I'm really looking forward to building something bigger with it in 2019. I don't know what it'll be yet, but it was such a satisfying experience working with a low-level language (which I haven't done in 15 years, or so), and having it be really pleasant. I think it's impossible to overstate how important having a good way to easily install libraries/modules/whatever is, and Cargo gets it right in ways that few systems languages ever have (that I'm aware of, anyway).

>and Cargo gets it right in ways that few systems languages ever have (that I'm aware of, anyway).

Can you elaborate on that? ("gets it right")

> Async/await is releasing next year, hopefully in Q1. This will simplify future asyncio development and make it much more legible

I started using some of the async/await syntax using https://github.com/alexcrichton/futures-await about 6 months ago. I had much problems with understanding the compiler errors because async functions were created using macros, and the compiler was not going a very good job at showing the errors (Or maybe I was missing some information about how to do this).

However, if you are willing to work with nightly Rust, you will be able to start using Futures 0.3 with async and await!. Using the async and await! syntax gave me such a huge boost to productivity that I am willing to walk on the edge and use the alpha version with nightly Rust (futures-preview = "0.3.0-alpha.10").

The integration with things like clocks and networking (The things you get from Tokio) are not yet perfect, but there is a compatibility layer you can use that works reasonably well. There is also the Romio project (https://github.com/withoutboats/romio) as an attempt to make a minimal Tokio that works with the new Futures syntax. I recently saw this post by jsdw, it might help you get started: https://jsdw.me/posts/rust-asyncawait-preview/

I already wrote large amounts of code using Futures 0.3 with async/await for the offst project (https://github.com/freedomlayer/offst). A very simple example you can start with is the Timer module, providing time ticks over channels to other parts of the system. It's code is pretty self contained and shows what could be achieved with the new async/await syntax. You can find it here: https://github.com/freedomlayer/offst/blob/master/components...

The productivity gains from async/await are substantial. The community cannot release this to stable quickly enough!

Rust has been on my radar. Work has consumed my life this year, so I didn't spend a heck of a lot of time on it. Looks really cool though! I've read a lot about how the memory management works and have been trying to figure out how the API of a "rustic" GUI toolkit should look.

Mostly looking at react and redux for inspiration, as they try to champion unidirectional data flow. In theory, would let me avoid std::RefCell hell that I read about in the forums.

I've been using Rust professionally for web development almost four years now and on January I'll start a new job which allows me to continue with the language. It's been such a nice ecosystem to work with and I'm really happy it's getting more popular in the industry.

How do you feel about the productivity for web development in Rust?

My priorities are unique to my situation, so a responsible answer to your question is "it depends on what you're trying to do".

I am trying to create a scalable platform. Without having best practices to learn from, I had to discover what that required while trying to make the most of Rust. The discovery process involves many iterations of trying approaches out until a decent one emerges.

On the other hand, once I laid the tracks down, I found my usual hindrances to productivity: business logic and data modeling.

I am much more productive with Rust and raw SQL parameter binding than Python with SQLAlchemy query builder. Evidently, the costs associated with using an orm are greater than the benefits for someone who is fluent in SQL. Learning a dsl and then fighting the dsl and then asking for help repeatedly, just to accomplish the same task and no more, is a really bad use of time.

Do you have an example of where you’ve found writing raw SQL queries was more efficient in both time spent programming and time spent executing the query?

I built an API in Python and SQLALchemy. Originally, it was built in Flask and Flask-SQLALchemy, but I eventually decided to migrate it to Falcon + SQLService and saw greatly improved response times from my API (hosted on AWS Lambda). Am I likely to see as significant improvements from a switch to Rust + raw SQL queries?

I am kindly looking for a reason to learn Rust. :) With the recent improvements to AWS Lambda, a Rust run-time is a reality and I am open to migrating the project once again for any additional speed improvements.

> Evidently, the costs associated with using an orm are greater than the benefits for someone who is fluent in SQL.

I largely agree although I've recently discovered the beauty of re-usable, type-checked sub-clauses by composing C# lambda expressions for Entity Framework using e.g., AndAlso():


how are you building dynamic queries without a query builder? (for example creating a complex where condition based on given GET parameters)

You could answer this question for your Python work if you refactor one of your dynamic queries to SQL Alchemy's query binding facility. You're working with a query string so you manipulate the string using whatever tools are available in the language. Lots of possible approaches in Python. Same for Rust.

Have you tried writing a doubly linked list?


In my experience, there are plenty of things that are much harder in Rust than other languages. Those tend to fall on the "how you do things", instead of the "what you want to achieve" side of work, so often it's just a matter of stopping, asking yourself "can't the language help me somehow instead of making my life harder?", and adapting your ways.

A few times you are not so lucky and have an actual need that Rust makes harder. Those exist, like in any other language, and I'd be happy if I knew how to avoid them.

1. Do you often try to implement data structures like this? In my practice, arrays are almost always better. 2. Beside that, you may argue that I use "Don't have therefore is not required" argument. But it contained partial truth: if you fight Rust program model then you have to do some extra steps to achieve it. Rust borrowing model considers one owner who can share its data among consumers. And this is damn common situation. I written a whole telegram bot with futures, using Arc container only once, to share my http client across the threads.

If you fight GC in Java then you have same troubles: all this stuff like weak pointers, byte array storages, reflection, etc, etc... If you are trying to write imperatively in haskell... And so on. If you fight language ideas, then your code becomes more complicated. The answer here is that you shouldn't have to do it often.

To answer your first question:

> 1. Do you often try to implement data structures like this?

Any self-referential data-structure has this problem. So I guess my answer would be "yes".

I was doing adventofcode this year using (and learning) Rust and had to write a doubly linked list. Impossible is obviously an exaggeration but I admit it is painful to wrap my head around it at the beginning. I had to google a reference implementation and understanding why it needs to be done that way is also not straightforward. It is definitely not the best thing to try out Rust with, but to me it is the best to force myself to really think hard and grasp the idea of ownership. Once I figured it out the complex becomes reasonable and I started to appreciate the safety aspect of Rust.

I also did the same puzzle with Go, it was such a breeze, it is as easy as to implement a doubly linked list in python/ruby/$yourfavoritescriptlanguage. But I start to dig Rust as it makes me think more and it feels like an eye opening experience.

Elixir. The ecosystem has been steadily growing (and, more importantly, becoming more robust and mature) throughout 2018 with continuously improved tooling, libraries and frameworks. I'm excited for many of the upcoming things [1] in the Elixir world, and how those things can improve the way I build (web) software in 2019.

[1] For one example, https://dockyard.com/blog/2018/12/12/phoenix-liveview-intera...

LiveView is really interesting for me! I wish Golang had a framework with a similar idea though. I don't think I have time for a new language

After seeing the LiveView talk, I too wanted something like it, but in a different (statically-typed) language. Last week, I released a TypeScript framework for server-side React components: https://github.com/karthikv/purview

It tries to mirror React in many ways, but like LiveView, components run on the server-side, and the client-server interface is abstracted away. So you can make database queries, contact external services, etc. directly within your components.

Yeah, I've been excited about Elixir as well and I've been learning it this year. In fact I started writing about it as I've been learning it in the hopes that someone will find it useful as a tutorial to help them learn as well. I've called the series "Learn with Me: Elixir"


In fact, I've found that just the act of writing to teach Elixir to others has helped gain a much deeper understanding of the language. If anyone's interested in learning Elixir, please check it out and let me know if it's been helpful to them. There's something satisfying in helping other people learn.

Elixir was definitely a highlight for me in 2018 too. I'm more than a bit fed up with Rails, so I'm hoping it'll be a good fit for me. I'm eager to see what I can pull off with more or less just the native stack.

PHP and Wordpress

Had to start over at the bottom after alcohol addiction destroyed me.

Landed a job working with WordPress and started having quite a bit of with it. Naturally I just HAD to start tinkering and learned PHP to write plugins and manipulate the hell out of it.

PHP isn't all that bad and is actually pretty easy to pick up. My only gripe with it is that quite a bit of the libraries aren't on par with other languages I've used. For instance, PDF generation libraries aren't nearly as good as Ruby, .Net, heck even ColdFusion is better.

Great thing about Wordpress is that thr plugin eco system makes stitching websites together a breeze. There is a plugin for almost anything.

This is such a great story. Congratulations on turning things around!


thanks man!

That's an amazing story. Congrats!

Seconded. Please take my warm hearted congratulations. Addiction is a horrible enemy.

I would suggest you now focus your attention elsewhere. Wordpress is a great eco-system, but if you want to earn more, dive into Javascript with ES6.

From there you can pick-up a UI framework (I would personally suggest Vue.js), and move onto exciting large-scale front-end applications, with a better pay-check.

I've almost doubled my salary moving from a Wordpress developer to a front-end engineer in a years time.

If I may ask, where did you find a front-end job you liked?

Check out CraftCMS. Clean, well-architected, flexible and extensible.

Take a look at symfony

I started my job last year in July as a search engineer in a major Indian e-commerce company straight out of college and was really glad to be able to work using one of the most beautiful tech stacks I've seen - Golang microservices talking to Apache Solr, Redis and a little bit of MySQL/Mongo connected to the external world through RabbitMQ.

I learnt writing good abstractions, organising code, the value of commenting the WHYs instead of the WHATs. I learnt about the amazing power of Redis wire protocol for mass insertions (reducing a 6 hour data import job to under 10 minutes using nothing but a CSV file and 4 lines of sed).

I also learnt a lot about debugging systems. Trying to find the root cause, fixing it and creating processes to prevent it from repeating.

I also got to work on a few hacky one-off solutions for scaling a legacy PHP monolith by redirecting all Memcache calls to a PHP class file which is basically a dump of all the Memcache data. I was overjoyed once I saw our legacy stack able to sustain over 6k orders per minute whereas it crumbled at around 1200 orders per minute earlier.

I also got to debug issues arising due to saturated network switches across two floors in our colocation DC.

All in all a great year.

I also saw how it feels to be laid off due to restructuring after a merger (with Walmart) after having worked tirelessly for the company and learnt how important it is to have a support system. I'm glad my amazing peers could arrange over 20 interviews for me within two weeks and I was back on a new job. I was also glad for the amazing severance pay that the organisation gave me.

I am glad for my first job, my first professional circle and all the learning that it gave me.

What do you suggest me learning( technologies, projects and skills for a better resume) having come from non-CS background to work in similar posts in companies such as you apart from being proficient in data structures and algorithms?

Ofcourse, The context of this question is cutting edge side of Indian markets.

I am taking notes from this thread. :)

I suppose your from the IIT/NITs, getting into Flipkart is not easy otherwise.

Not at all. I'm from Jamia Millia Islamia, a central university in South Delhi. I got into Jabong and saw a merger thrice. Once into the hands of Myntra, then Flipkart and then Walmart.

Wow, that's awesome! Congrats on the experience.

Thanks a lot. It truly was an extraordinary ride. I hope to take the experience with me and apply it at other places.

It's quite telling when you aren't angry or resent being laid off from a job - the company was just THAT good but unfortunately is no more the same.

Congrats man..

Taught myself the basics of embedded systems, and completed a few projects. Learned circuit design, PCB layout, CAD / laser cutting, and embedded C / C++ in the process. Started with a 555 LED blinker [1]. Then built a desk clock, with a goal of writing a device driver for the LED display from the data sheet of a controller I found on DigiKey. After that, built my own USB keyboard, since I wanted to learn more about how USB devices work. I use this keyboard at work now as my daily driver now!

Taking a break from embedded for a bit, and teaching myself Rust. Working on a queue server at the moment!

[1] LED blinker: https://www.instagram.com/p/BaND2tQlvlB/

[2] LED desk clock ("picoclock"): https://www.instagram.com/p/Blf_Fw1gBAO/

[3] USB keyboard ("KeeBee"): https://photos.app.goo.gl/zKgCkudf97FjraJp7

Great looking circuit boards!

Chris! I owe you big time for your getting started with KiCad youtube series. Your "Getting To Blinky" video is what gave me the confidence to get started with PCB design, so thank you! If you're ever in the Chicago area, I'd love to buy you a beer.

I live in Chicago, actually! You should come to our meetup, going to have one in January: https://www.meetup.com/Hardware-Happy-Hour-3H-Chicago/

Whoa, nice! Sometimes, the world is smaller than you think. Joined up, looking forward to January!

Nothing! My first few years programming I learned 2-3 languages per year, and this was the first year that I focused only on improving at tech I was already using, as well as language-agnostic fundamentals.

Same boat as you. I used to boast about learning 2-3 languages a year. Now I aim to improve on what I already know instead of learning new technologies just to tick a box.

I don't think that's nothing, you learned to code better :)

- Rust - I had tried learning C++ before but I found it confusing, especially the ecosystem. I have not built anything serious with Rust but it was easy to learn imo compared to C++, especially since it has a package manager and also the Rust book is amazing. I knew the basics of pointers but I had never really worked directly with them. Learned a lot. Now I've been dabbling with C++ (because some programs I'd like to modify are written in it), and it's been slightly easier.

- Databases - I'm self taught so I never really learned about basic structures (b-trees, etc) and I've always been interested in how databases really work (e.g. why relation/non-relational have x limits) so I started I started learning about them. In particular I've been watching these lectures https://www.youtube.com/playlist?list=PLSE8ODhjZXjbisIGOepfn...

- 3D Printers/Printing - Have been saving up to build one for a while. Initially I was just going to buy a kit, but the quality/cost ratio for the kits where I live are bad. So I looked at existing solutions, but I wanted to avoid having to 3d print parts, plus I had a few other limitations, so I have ended up designing my own. Am learning a lot. Has also got me interested in fooling around with electronics more. I've always been interested but since I didn't really have any real tangible projects to work on and I did not even know what could be done, I never got much farther then fixing a few broken electronics.

> packet manager

Hate to nitpick but package manager.

Oops, my wires got crossed or something. Fixed.

I got back into Rust this year via WebAssembly! It was really fun to make this little A* pathfinding demo: https://github.com/jakedeichert/wasm-astar

After that little project, I got started on an api service in Crystal. Crystal was interesting to try out, but I decided to switch to Rust after a few weeks since the ecosystem/community is much larger. I first chose to use the Rocket framework [0] but switched to actix-web [1] after a few weeks so I didn't have to use nightly anymore. So far actix-web has been great, but I'll be keeping my eye on Rocket going stable hopefully sometime in 2019, and also another library called warp [2].

I've also got another wasm project in the works... hoping to finish that off soon and publish sometime next month.

[0]: https://github.com/SergioBenitez/Rocket

[1]: https://github.com/actix/actix-web

[2]: https://github.com/seanmonstar/warp

So this year I learned:

Rust: While I'd dabbled in C++ before, it was mostly just a pain, while I found Rust to be a nicer way to work on lower level projects. Ported a game side project I've been working on from Python + Kivy to Rust + Piston, and came out with a nice performance boost.

Mypy + SQLAlchemy: So while I have moved some projects from Python to Rust, others are still Python based and so I took the time to actually learn two of the libraries I've used at a surface level.

SQL: I mean, technically I've been using it for 10 years, but took the time to actually expand my knowledge from basic CRUD + table definitions. The one problem: Basically none of the nice stuff I learned works on the MySQL 5.7 we use in work :(

Docker: Another one of those things I'd been using but not really understanding, this is the most recent one where in the last month I've been working on a dev image to simplify running a few of our services in work, plus also redid my personal VPS to a dockerised setup for my various side projects so now it's way more reproducible than four years of ssh+vim methods of installation/configuration.

Is C/C++ knowledge important for learning Rust?

Opinions are split. Many people have learned it without any previous C or C++ knowledge. Some argue that you can't truly appreciate Rust until you've written them. It can be helpful, but it can also be harmful.

I am still in my first year of programming and Rust is my first systems language. I don't know C++, just enough for 'gists'. I had already read/skimmed Computer Organisation and Design: RISC-V, and Operating Systems: Three Easy Pieces. I worked through 'The 2018 Rust Book' at a fairly decent clip as a result of that context. I reckon that mostly sidesteps the 'help/hinder' tradeoff, though I'm not humble in saying it took a fair bit of dedication (maybe more than simply learning C++ fundamentals).

Edit: actually I'm well into my second year of programming now, time flies...

It's not. Rust exposes similar lower-level issues that C/C++ also deal with, like memory allocation on stack vs heap, but you'll pick them up while learning Rust one way or another.

In some ways C/C++ is a hindrance when learning Rust, because although Rust has many features superficially similar to C/C++'s features, the details are different and programming patterns are different, so you'd need to un-learn some C/C++ habits.

Not really. It'd help speed up the process for some areas, but it's not that significant as rust has other influences and its own unique areas.

I've found that the Rust code that I've written is stylistically more similar to Haskell. However, while references in Rust are a distinct concept from references in C++, they both have a distinction between a pointer to an object and the value of an object.

LaTeX/TeX. I'd written one maths paper before using LaTeX, and used QuickLaTeX on my website for a while, but early this year I read or looked at almost every available book on LaTeX and TeX. (There aren't that many) Plus consulted TeX StackExchange a lot every day for a while, which has most of the people who wrote the best books and packages answering questions, it's amazing. Also got better at using TikZ within LaTeX. (It makes doing diagrams pretty easy) It took a few months to get on top of LaTeX and the ~20 packages I mostly use. (I'm no plain TeX master, but can at least start to recognize what code in TeX is doing, and have some understanding how TeX works.) Since then I do all my writing in LaTeX (I use TexShop) - writing books, diary, notes...anything I learn about, I make a lovely-looking book on it while I go. (Before that I just had disorganized notes on paper I never looked at again.) I have a book for my programming, at last keeping the extensive notes on everything I always should have. I wish I'd done this a long time ago.

Nice! Look into tufte style class for book layouts. It's particular and if you like that type of particular then you'll love it.

I also learned a ton of LaTeX this year --- not nearly as much as you though! I still feel quite disorganized about it. The syntax and cross-referencing come fairly easy (maybe because I did some TeX long ago), but thinking and writing in that environment is a real challenge to me.

Besides that, ArcGIS Pro was my new tech toy for the year.

Did a lot of learning in 2018.

Finally moved away from Wordpress as a back-end, which I pushed to the limit.

Learned Laravel and greatly improved my skills in vanilla PHP.

Moved from jQuery to Vue.js - it's now my default front-end framework.

Started using CLI and Git regularly.

Learned PWA, service workers, serverless, Web3, some Solidity, more MySQL, server admin, scaling.

Throughout 2018 I was coding all the time on my own, executing my personal projects. It was a great learning experience, and now I finally became a good and productive coder.

This is an achievement, because my first speciality is graphic design and I specialized in it for many years. Now I'm also a competent coder. When I combine design with code, possibilities are endless.

Thanks for sharing. I have a very basic question. What is your favoured method of learning new technologies/languages, how do you make the most of your time and make it stick? I am coming from a different background and the learning is a completely different dynamic to what I am used to. I could ask this of most here but you seem to be particularly proficient at learning loads in a short space of time.

Hi, this is how I do it:

1. First I read some theoretical info about the new technology that I want to learn. It can be a book, documentation, or the information can be in a form of a podcast or a video. You need some theoretical background in order to understand the core concepts.

2. Then from my ideas list I pick a new project to work on. I then create some sketches, designs and start coding. As a new school coder, I mostly use google for answers regarding syntax, methods, patterns and general best practices.

Sometimes it works the other way around: I first decide on the project I want to create, and then learn the tech that the project requires.

I also closely watch the general tech ecosystem, and pick projects that allow me to learn new things, building upon the previous knowledge. In 2019 this will be less important, because now I have my skillset in place, so the main criteria for picking projects will be the project's potential for commercial success.

What did you replace Wordpress with?

Laravel or vanilla PHP backend.

But I'm keeping some of my projects on WP, and will continue to update them. There are many reasons why Wordpress is great. Just that now I'm free to use any kind of backend... In 2018 I also worked with Node.js and Firebase, but currently for the server side I prefer PHP.

Kotlin, our company had recently turned into a java shop, and I was literally tempted to throw in the towel because I'm used to C# & python, so the boilerplate was really unpalatable.

Then one of our team wrote a service in kotlin, and we never looked back, I had my type inference, extension methods & null safety back, along with really strong immutability features, pure functions to boot.

It is such a pleasure to work with, it's in my opinion the pinnacle of traditional statically typed OO language (C#, java etc)

EDIT: now, all new services in our company are written in kotlin, it got grass roots adoption in every team (bar one which came from a much more old-school java background)

I really liked Kotlin too. Which web framework do you recommend using with Kotlin (assuming you do webdev with Kotlin)?

Ktor, it's working really well, only downside is limited openAPI/swagger support, i.e. Schema first or code first code/schema generation.

Have you tried the `kotlin-server` generator in the OpenAPI Generator project (https://github.com/OpenAPITools/openapi-generator)?

Disclosure: I'm the top contributor to OpenAPI Generator.

Kotlin almost feels like a rebranded Swift.

Kotlin came out before Swift

The Ada programming language. We (at my work) have been considering it for a new project and mostly everything has been a pleasant surprise. It is not a language that makes you feel “clever” or “powerful”, but everything has its purpose and place.

Except for Tasks; the fact that such a bare-bones language has first-class support for concurrent execution makes it clear how ahead of its time it was.

Another technology was optics and specifically fiber optics. I went into the field with knowledge of microwave engineering and I am surprised by how similar it is. I thought it would be a completely foreign, but the high level concepts are actually relatable to microwave tech.

What field are you working in?

I’m a PhD student in signal processing for fiber optics.

A crapload of PowerShell to manipulate IIS, which I profoundly resent learning. PowerShell is a terrible language only redeemed by comparisons to VBScript and the windows CMD prompt. There's three different ways to do everything and it flimmers between all three inconsistently.

Also Docker, which I'm still not sure how I feel about. Docker somehow feels like an admission of failure of our industry to manage, install, and isolate dependencies, so we create pseudomachines to work around the problem. Better than VMs, I guess.

Those are my exact feelings about PS and Docker.

For working on the Windows command line, I've found CMD with Cygwin tools in path to be the best of all worlds. All the familiar Linux command line tools working in Windows, much smoother than you'd expect.

React Native

I had a use case that I wanted solved for automatically tracking how much crypto I own on exchanges that hasn't been done by any other apps/websites. Used it as a learning/side project, and got the mobile apps on both app stores (they're not as picky as you would think, especially the google store). User base of 1 (me). Web app/api in rails. I used create-react-native-app (Expo) and have not ejected yet. It's an awesome developer experience live reloading your device wirelessly. The biggest difference between react and react native is what lives in your render function: instead of <divs> you have <Text>.

2019 will be elixir+phoenix (finally). I plan on creating a self hosted RSS reader with the new phoenix live reload module that should be pretty slick

Elixir/Phoenix and React Native are my 2 main goals for 2019 :) I'm a full stack engineer and I feel like

- React native will allow me to broaden my pool of clients by being able to do mobile apps - Elixir/Phoenix and this live view might make my web dev life much easier on a lot of project by not having to use the js ecosystem!

Blacksmithing. I took a short course on blacksmithing using an old fashioned coal forge. It was a real revelation, much harder and dirtier work and much more difficult than I thought. Having watched a lot of blacksmith work in person and on video, I knew what to do but not how.

I've also dabbled in saw sharpening for woodworking. I got started with disposable Japanese saws that can't be sharpened but want to move to Western saws which need sharpening. I was successful with rip saws but all my attempts with cross cut saws ended in failure. I'm hoping to find some time to try again, filing back the teeth and filing them again.

Terraform and Packer are the new way to automate devops. It’s a very powerful approach. And the ease of setting up traditional VMs struck me as much simpler than using Docker. When I wrote “Docker is the dangerous gamble which we will regret” I was thinking about Tereaform as the counterfactual:


you should checkout habitat https://habitat.sh

with habitat you now have the reproducibility and isolation of containers without being forced to use them. (also supervising and config management)

I'd like to know more about this.

If you're interested in a "good-practice" type introduction to use of Packer and Terraform together, you may be interested in a talk [1] (or the accompanying repo [2]) I gave at HashiDays New York last year.

Unfortunately I never finished getting everything I was aiming to done in that repo, but may come back to it and update it at some point...

Disclaimer: I used to work at HashiCorp on both Terraform and Packer.

[1]: https://www.youtube.com/watch?v=8ZRa0lLq8OU [2]: https://github.com/jen20/hashidays-nyc

(edited to change "best-practice" to "good-practice", since it's more accurate...)

I discarded job opportunities with web programming in Go and instead started learning about software-defined radio from scratch. Eventually, I got my own LTE network up.

I think there are interesting things happening in the compiler space, so I hope to learn more about those.

Coincidentally, I find Rust my favorite "tech" in 2018 because of the compiler and its various targets (like Nvidia cards).

Could you point in the direction of some of the software radio resources? My last two years at work has had me in the embedded Bluetooth space, where we just use a proprietary soft radio blob that’s still a total black box to me.

(Not the parent poster)

Reddit has /r/sdr which has some good resources; me I used antirez's plane-tracker, then wrote some code to listen for buttons being pressed from remote-control buttons.

These buttons are pretty cheap and reliable, and the batteries have lasted for a year or so now. You hit the button in the bedroom and the PC in my office plays "siren.mp3" over the speakers, for example.

Even now I've had my wife/child summon me via presses.

From LTE perspective: + https://github.com/srsLTE/srsLTE + https://github.com/acetcom/nextepc + https://github.com/tudo-cni/tinyLTE

srsLTE and tinyLTE whitepapers are worth looking into as well. The whitepapers describe the infrastructure and hardware to purchase. All in all, these are surprisingly simple to get working together. After that, it is up to you what to hack on. MEC paradigm is something specifically relevant to software engineers.

What are the interesting things for you in the compilers space?

LLVM and levels like MIR in Rust: https://github.com/nox/rust-rfcs/blob/master/text/1211-mir.m...

I find that these kinds of efforts allow an increase in programmer productivity. MIR is reasoned in the previous link, and LLVM is interesting because it then allows the "enhanced" code to be shared among many other platforms with seemingly zero-cost to the programmer.

That is, if you can jabber about programming language theory and write compiler code, I think you can have an impact on the industry which exceeds that of a machine learning engineer (which at least my peers usually think that are driving the future).

Then again, I currently do not know how the sausage is made. I might be wrong.

I moved from Java to Scala this year and I am loving it. What started as a rather basic understanding of FP (from a Haskell course in Uni) has come along leaps and bounds. I now understand what people are talking about when they go into Monads and Applicative Functors, etc. It's brilliant. I wasn't sure on it when I started but FP is something I have really come to love.

I've also played with Go, although while I like some of it I am still not convinced.

Another thing I have started using and really like is DDD and the onion architecture pattern. Its produced some of the nicest code I have seen and has helped make the code base super maintainable, adaptable and clean. Very cool.

DDD = Domain Driven Design?

I know it as Data-Driven Design.

Python - I was a little hesitant because I really wanted to get more into Node/JavaScript but that’s what my team uses for simple scripts. Historically,I didn’t like any scripting language but I actually like Python for simple AWS backend lambdas and automation.

AWS - At the beginning of the year I knew nothing about AWS. I thought it was just a way to host VMs. Since then I’ve done projects involving networking, Devops, and development and I have four certifications. My company paid for them and it forced me to learn AWS inside and out except for the Big Data, IOT, and mobile.

Linux - I’ve been developing on and deploying to Windows servers for 20 years. But the Windows tax becomes real once you start using AWS. I’ve learned just enough to be almost competent.

Have you found the certifications useful?

Yes and No.

I don’t pay much credence on certification as proving competence. I take them as a slightly negative signal when I am interviewing someone.

Certifications for me are partially forcing functions to make me get a broad overview of a subject matter. At the level I’m at now, my “whiteboard interviews” are not about leetCode they are about how would I architect systems, meaning I don’t need to know the details of everything but I do need to know how to talk the talk.

When it’s actually time to implement the solutions, I’m either then going through the SDK and figuring out the details or assisting other developers in coming up with a proof of concept.

Except for the Architect Associate which I studied for just to get an overview of AWS, I’ve had practical experience on most of the other areas that the certifications covered before I took them. The other three are the developer, Devops and Architect Pro.

My company is paying for them, and even though my official title is “Senior Developer”, when talking to our clients (B2B) I am the “certified AWS infrastructure architect”, so yeah it helps give customers a little bit of confidence.

On the other hand, whenever the day comes that I decide to make my next career move, it will probably be as an overpriced “implementation consultant”. I found at my last job where I was the dev lead, that locally, that’s where the money is.

Amazon Certified Partners have to have a certain number of certified employees.

Two of the three certifications I am working on next year will take me way out of my comfort zone - advanced networking and Big Data.

I will have to really study for those two and do some side projects. Unlike the first four where I could learn on the job.

Define "useful".

I personally have 3 AWS certifications (All of the associate level).

Their use to me was 1) When studying for them, I learned a ton more about the platform and 2) Recruiters and employers love it - I get even more job/interview offers now.

Nice. I have been using AWS and GCP for a while now and was thinking about getting the certifications so I always wonder whether they have any incremental value, especially technically and jobwise.

Shorter answer.

Yes since you have practical experience it can’t hurt. You’ll learn things that you didn’t already know and it will help you get your foot in the door slightly.

But, don’t become a “paper tiger” with a lot of certs and no practical experience. I’ve also come across people who have claimed that “they have use AWS” but when you dig deep they mean - they’ve hosted a few VMs and used AWS as nothing more than overpriced colo.

I started learning Haskell again this year. And I finally got to work with it professionally. I'm also using PureScript in the same project, so it's really exciting.

This year I also discovered R. I had to do a Python to R translation, so I got fairly familiar with R.

I also discovered a few languages, but I haven't started learning them yet: red-lang and Pharo.

I've played with Pharo a bit and have started to learn Red's ancestor "Rebol". All of these technologies are pretty great. I think Red will find that niche where it is super empowering to use and still fast enough with the Red/system dialect, multicore...etc.

Easily building cross-platform GUIs could be that niche.

i started pharo a few years ago and finally found a killer app to make it worth the investment for me.

red-lang is on my list to learn for quite some time now, but it probably won't happen until i find a useful application in red that i can use.

same goes for haskell

What app did you find for Pharo?

What attracts me most about red-lang is its cross-platform GUI story (I know that the iOS back-end is not implemented yet). You can do so much with so little code. It looks like a great platform for this. The syntax also helps.

PTerm, a command terminal ( https://github.com/lxsang/PTerm ).

basically my goal is to replace every tool i use with an alternative written in a language i enjoy playing with.

eg. i use supmua written in ruby for email (though the killer feature of submua is not ruby but how it handles email by tags and search buffers).

i am eyeing that browser written in lips that was posted here a while ago (but i have not tried it yet)

and i have been looking for a terminal for pharo already some years ago. even tried to port an older squeak terminal myself. now PTerm finally fills that gap.

since i use tmux inside the terminal, i don't have to worry about bugs, and i can easily work with the latest development version and give the maintainer feedback, and hopefully some time even write my own patches.

the browser i meant is the Next Browser written in Lisp: https://news.ycombinator.com/item?id=18608454

on red, i do like its syntax. very minimalistic, yet powerful.

i hope, as it matures, someone will create a neat application that is useful for me.

I’m a scientific programmer working on electric grid simulations in Python. This year the big new tools I added to my toolkit and will use in the future are:

1. Docker. I resisted learning it for the longest time because of the stories about its unreliability in production (just do a hacker news search) and the constantly shifting APIs. But once I built and gave collaborators a few containers I realized it is a very complete toolkit for getting code to run reliably anywhere. Since research code is often a mishmash of Octave, Python, Pearl, Julia, and crufty C++, and anywhere often includes ancient government laptops, running anywhere is a real pain point. Docker’s complete configuration language, command line tools, and collection of minimal base images together make it feel like a big step forward compared to VMs for my use cases. And it will probably buy my team another 10 years of using scruffy code bases without doing a clean modern rewrite (for better or for worse).

2. Scikit-learn. Although there haven’t been any machine learning breakthroughs in my field (power systems), it was time for me to learn what all this ML hullabaloo is about. I found it really easy to use scikit-learn to build some simple models for load forecasting, and I appreciate the library’s clean and pythonic APIs. It’s also nice how complete the library is—if there’s a model you’ve heard about it’ll probably be in there and well-documented.

Things I tried and won’t end up using:

1. VSCode. It’s great, but it wasn’t a big enough improvement over Sublime for me to make the switch. I also am more of a minimalist, and VSCode wants you to use a generous set of panes/terminals/wizards.

2. Serverless (AWS Lambda, zeit.co). One of these days I suspect the interface to a cluster will be as clean as the Unix interface to the single machine, but for scientific computing I’m finding it easier to stick with older methods (single machines, occassionally a cluster built by hand).

Can you be more specific as to what you do? Power transmission or distribution?

Mostly focused on distribution engineering analysis: distributed generation interconnection, energy storage dispatch, demand response planning. Hoping to do more transmission analysis in the future but for now work mostly with distribution utilities.

Interesting. I'm working a bit with energy storage modeling on the transmission side and am familiar with the other topics you mentioned although everything is 10x harder with distribution as the load flows are unbalanced as I understand it. Transmission systems are gargantuan, but at least you can assume steady-state in most cases.

Are you with a utility, University, national lab, or contractor?

Cool! It’s a very fun time for energy storage work.

I’m part of a utility group but I mostly work with DOE and the national labs.

The unbalanced phasing in distribution can make solving powerflow harder, but the big problem we face is data quality and volume in the circuit models—one substation and its feeders typically have over 10k circuit components. The detail is needed since the model is used for outages, work orders, and engineering planning. On the plus side, at least the data security issues are way less severe than transmission models.

Neat! This is indeed a great field. I wish I got to do a lot more national lab related work myself.

I learned a ton in 2018 after many years of working primarily with Java & Spring in large "enterprise" systems. It had been getting boring to the point of questioning if development is what I wanted to do. 2018 was a year of stoking the flames and I'm really enjoying hands-on technical work again.

I decided to pick up Python and learned some Flask & Django while I was at it. Really liking it. I also took some machine learning courses and wrote an image recognition app w Pytorch. I started & finished two Udacity nanodegrees to help keep me on task with learning these tools.

I worked for a while on a cloud infrastructure team and enjoyed learning a decent bit of Go, AWS & Terraform. Also touched on Docker, K8s & that whole ridiculous devops ecosystem.

Lastly, for the first time in my career, I worked solely in Linux (used to work solely in Windows). Never going back to Windows!

"after many years of working primarily with Java & Spring in large "enterprise" systems": thought you would choose Scala next :-)

Solid prediction. I've been THIS close to learning Scala a few times. I did pick up some Groovy/Grails a couple years ago and decided, while familiar & powerful, I'd try to venture outside of the JVM next.

Scala still on my mind though. Kotlin too.

Between Scala & Kotlin, I'd pick the latter.

I’ve been all aboard the Kotlin train for a couple years now. Absolutely love it.


I started 3d printing a ring with an embedded (existing) chip for 2FA.

Next I played with Rpi, usual tutorials with buttons + led. I picked up Android Things, and started building a led matrix controller.

However Android Things was too slow to directly control the matrix, thus I started playing with a STM micro controller (blue pill).

In parallel, I started working on Solo keys (https://solokeys.com), where I didn't build the hardware myself, but all the experience I gain was very helpful to keep up.

Next year will likely be more Rust and porting Solo to different platform, for example Arduino. Maybe I'll try to make my first schematic and manufacture it, we'll see how it goes (I have access to a good teacher :).

2018 was the year of Crystal lang for me. I have now all but replaced Ruby in my workflow with Crystal. I also learned Rust, but abandoned this effort as I found it took me 6x longer to get anything done, which is a shame because I love everything Rust stands for.

Yep, there is a great picture of how it looks like: https://imgur.com/sj92dyW

I faced it myself. It took me a year to being able to write a simple snippet (e.g. reverse UTF8 string) without getting compile-time errors. Now I'm a bit less productive then in C# with writing the code, but I'm much more confident about it.

What types of things have you replaced with Crystal? What I'd love to hear your thoughts on the language.

Gladly. I authored the gcf.cr tool (https://github.com/sam0x17/gcf.cr) to replace a number of lambda functions with crystal-based cloud functions for two startups I write code for. I also replaced our rather bloated rails app with a lean SPA (in vanilla js plus jquery, because I can't stand react) backed by a crystal-based API server. I also do a lot of image processing in crystal (I need to make some of it open source but haven't got around to it), and Google Cloud Functions has been fantastic for that.

As far as the language itself goes, I have tried Rust, Nim, Go, and D, and I find crystal vastly preferable to all of them, probably because I have a ruby and C/C++ background. I just wish windows support and parallelism would get finished already as I have some cross-platform desktop app aspirations that I would love to fulfill in crystal rather than something horrible and ugly like Electron/node.

I am also working on a crystal-like language (with a crystal-based LALR(1) compiler) called Nojs (or just No) that compiles to javascript and has restrictions that make static analysis easy enough that you can include exactly the code needed and nothing more (e.g. don't include unreachable code) for whatever web page you are on, instead of importing entire libraries everywhere. This is really great because the dynamic nature of js normally makes this impossible as it is impossible to tell whether you are about to eval something into existence, etc, or call a method based directly off the value of a string... I am also using crystal-style require statements as I am not a fan of Node.js's module setup -- I'd rather have a global namespace to pollute and monkey-patch when I want to, with the option of using modules like in crystal/ruby, and the ability to require anywhere and have it literally import the required code at that point in the file. I don't have it on a public github yet but stay tuned.

I'm curious if there's anything in particular you prefer in Crystal over Nim. I'm considering both right now.

Nim has a little bit more python-ness and a little less ruby-ness imo. That's all I really remember -- it's been almost a year since I tried Nim.

Great to see Crystal in production! I'm a Rubyist and rooting for Crystal's success.

Do you use any frameworks with Crystal or has it mostly been vanilla stuff? How would you gauge the maturity of the dev environment?

I use Amber when I have to do something Rails-like. Maturity wise they are a bit ahead Lucky, and since all I really do is API servers because of my newfound love of SPAs, it gets the job done perfectly.

The language does change now and again, but upgrading has been fairly straightforward thus far, and I manage a number of open source crystal projects in addition to my closed source production code. You always have the option of not upgrading until you are ready, which is more than enough at least for me.

Debugging represents a unique challenge. I plan to eventually write an adapter for sentry.io for error tracking, but I haven't gotten around to this. Amber has very informative crash logs, so thus far I've been OK just looking through my Google App Engine logs when I need to track down an error. Cloud function debugging is a particular pain in the ass because of https://github.com/sam0x17/gcf.cr/issues/1, but I have a feeling the new 0.27.0 release resolves this, I just haven't had a moment to check.

I decided to focus purely on frontend and the JavaScript world this year. I wanted a full set of skills to be build any web-based app.

- react, redux, typescript, canvas, webgl, webanimations, audio api, nodejs, firebase, SQL server, postgresql, scraping, mongodb, rails, nextjs, vuejs, and a few other js in libraries. Custom WordPress theme development and basic php. Design tools like figma and affinity designer.

React took me a few months to get comfortable with though, mostly as I was learning on my own.

I learned how to play musical instruments and did a few talks at my local meetups, and participated in a few hackathons. I got better at delegating tasks with better project requirements

I want to learn machine learning, text classification and image processing next year though, along with some core CS classes I want to know about. And more math

AFter having spent a year learning so many front-end technologies which ones were your favorite? You also have some backend/db stuff listed. Same question for those. Which resources did you use to learn them that you liked?

I’ll chip in here as a “me too” on the front-end stuff. Actually it’s all I know, I’m new to programming [0]. So last year was the fundamentals of JavaScript. Thanks to Gordon Zhu’s excellent Watch and Code for that.

After that, Dave Ceddia’s and Robin Wieruch’s React courses. I think I paid for those? You should, both great starters. Then you can’t beat Wes Bos for a quick level-up. He goes fast, he talks fast, but it’s so information dense. I watch it through once then repeat and follow along. I’ve done his ES6, Node, and React. All gold.

2019 is the year I finally release my tiny little web app. I’ve wanted to do this for 5+ years, so I’m so happy to finally be doing it.

I’m putting in between 10-30 hours a week, just for the record. All after work, weekends, between contracts, etc.

[0]: Not quite. I’m a 20-year Wintel engineer so I can script basic stuff, and I started in the 80s loading games on BASIC, so I ‘get’ programming. This helps enormously, of course.

I didn't really use most of those tools for anything but tutorials and small projects cloning other things. Most of my day job is project management so I don't develop at work. So take my experience with a grain of salt though. Although I did learn almost everything on my own though

## javascript course opinions

That being said, everything I learned this year was mostly on my own free time. My favorite course for anything javascript related would definitely be watchandcode.com (both the 5hour and 40 hour course) from an ex-google engineer. It covers more of the "Bob martin" cleancode in javascript paradigms to writing MVC architecture, YDKJS topics (object inheritance prototype, ES6 syntax) debugging /breaking down an open source repo, how to build your own native reduce function similar to lodash, unit testing, etc.

## react course opinions

React took me like 4 months to actually understand. I feel like I am probably a slow learner because it took me 3-4 courses to understand. I took udemy's andrew mead react course, brad traversy fullstack nodeJS + react, freecodecamp's react+redux portions, and then wesbos's "react for beginners". Its probably because there's just too many ways of building a react-app, different ways of styling, stateless vs stateful components, etc.

Although wesbos's course was slightly dated (some of the react paradigms were a bit behind), everything just made sense with that course. It was simple, to the point, and covered everything you need to know, and everything you didn't at the time (redux). I refer back to this repo frequently. Andrew mead's course had too much handholding, went too deep into parts of react I didn't care - I lost interest. Brad Travery's udemy course was great for understanding a large overview of the full MERN stack though. Going through freecodecamp's react portion was nice practice but I needed a full example to understand how routing worked.

React didn't fully make sense until I also went to a meetup in my area on how to build-your-own react framework from scratch. Virtual DOM was just a buzzword for me then

To make sure I understood everything I built a react-calculator on freecodecamp's project site, still building a few other things.

## Firebase

I went through firebase's webchat app tutorial on the official docs. My program didn't compile correctly, couldn't find any help on the topic. I found netninja's firebase tutorial probably the easiest to understand. Also, wesbos's "react for beginners" help clarify how a frontend library like react works with firebase. And how to deploy to netlify / firebase authentication with twitter /github.

## postgresql

I want to learn how an API is built in a SQL database, so I learned it with nodeJS + postgresql. The one on udemy from David Joseph is pretty good, it also shows how to do postman requests to databse.

## NextJS

I had this on a project with a few other team members. Still a work in progress. The next.js document tutorial is fantastic. Didn't need a video tutorial. There's a lot of magic happening behind the scenes but that's javascript for you ¯\_(ツ)_/¯

## NodeJS

I took andrew mead's udemy NodeJS course and netninja's nodeJS course. Really I just wanted to see the whole thing in production, so Brad Travery's udemy fullstack MERN course was the most helpful, especially when using postman make POST/GET requests to the mongodb instance. There's some magic happening behind the scenes with bcrypt, passport-jwt, but when you can see both ends (the db instance, nodejs+express end, and postman request / result), it all makes sense

## VueJS

Netninja's vueJS + firebase on udemy. Let's me see how vue interacts with backend. Anything with firebase is nice because the backend is so dumbed down

## Canvas

Chris course's canvas course on youtube was really helpful in understanding that everything on the page is an object, and it helped me understand how OOP (object oriented programming) is used in javascript (e.g. constructor function to build a lot of canvas objects on page).

## WebGL

Webgl2.fundamentals.org is fantastic. Really goes into the basics, I didn't know anything about openGL either. It helps to learn about HTML canvas first though, some of the design patterns are the similar when working with it. I am still learning this at the moment. I find this field fascinating though, partially because I've worked in alot of 3D programs (AutoCAD, fusion360, etc)

## Rails

I wanted to learn the rails method of doing things because it takes some of the best practices from PHP in the 2010+ ish timeframe. Many things are based off of these paradigms. Things like ORMs (activeORM) is a good example. I found "Dissecting Ruby on rails 5" on udemy to be helpful, especially since I just got a macOS macbook pro and he really covers how to setup a nice development environment (oh-my-zsh + iterm2)

## Wordpress Custom Theming

I didn't really understand how wordpress theming all that well - there's too many wordpress/php gotcha's to remember, I found the blog from taniarascia to be really helpful, and looking through her open source repo.

## Web Animations

cssanimation.rocks is a great resource to learn all about animations on the web. I usually hate getting emails from any subscription service, but I read these everyday since they are very helpful. It goes into bezier curves, physics behind animations, etc. Also anything from "keyframers" on youtube is interesting to see how some complex codepen projects are made.

## Figma

I found this recommendation from producthunt, https://designcode.io/design-system-in-figma. There's lots of UX tools out there but I mostly use a windows computer. I have a long standing background in Adobe Indesign, laying out the designspecs / masterpage layout/ and component/styleguide is super important. This course hits on everything I knew what a good UX design course should be. Also, it helps that its also one of the nicest website designs I've ever seen

## affinity designer

Its like photoshop+ illustrator, but easier to use with a nice export feature. I forgot how I learned this in all honesty


I haven't really used vueJS or react long enough to really form an opinion. They have very different principles. But react by itself is really nice and straightforward once you understand the basic principles behind it. I haven't bothered with the hooks API whatsoever. I think its worth learning how other frameworks do things, at least the basics. So you can see how different language, frameworks, etc implement the same things.

Polished my Golang skills and Python skills. Studied the Deep Learning Book Theory and toy examples with Keras and Torch. Some good ol C by implementing linear solvers. Understood the inner workings of bitcoin and started working on a better version of it. Most of all the month I spent pouring on Homomorphic Encryption literature was very useful. I also went trough some cryptography books (math from Koblitz book and Serious Cryptography). 2018 was less of a tech year for me as I spent more time doing mathematics (love it) and reading various books about (cognitive science, evolutionary theory and math textbooks)

For 2019 since I'll be graduating I think I'll spend more time on mathematics, reinforcement Learning and OCaml which I was postponing this whole year. And of course Rust.

What do you use Go for? Python is my go to language, but I'm increasingly seeing things supporting Go too.

When would you pick one over the other, do you think it's working learning Go or just focusing on python?

I use Go for systems programming and networking such as a toy P2P app or a blockchain implementation.I also used it for cryptography https://github.com/radicalrafi/gomorph

It depends on the use cases but I'd say hope on the Go train. I only use Python for things such as quick impementations or numerical stuff and machine learning Python is still unbeatable in these two areas .

Learning Go isn't that hard if you know Python it's pretty easy most of your time will be spent awing at the Standard Library which has everything you'll need.

I prefer the static typing of Go. I feel like code is less likely to have bugs and far easier to understand when I've got static types sent to and returned from every function.

The concurrency of Go is the main feature over python. Python is still faster to write. But very often I want several processes running concurrently and pythons async features just don't cut it. It's so easy to understand goroutines and channels.

Have you tried mypy?

I used mypy to build a tiny toy deep learning library it was nice to use.

> Understood the inner workings of bitcoin and started working on a better version of it.

Said no altcoin developer ever.

Finally someone got that pun lol

1. OCaml from zero. It is an amazing language with amazing types and modules system. The biggest problems so far - Windows support and gaps in the libraries universe.

2. Incremental computation (Adapton)[1][2]. Very time and resource-saving technology in some applications.

[1] https://en.wikipedia.org/wiki/Incremental_computing

[2] http://adapton.org/

In 2017, I was a copy editor and epidemiologist, but in 2018 I got a great full time opportunity to learn SQL and R on the job for a hospital. I've used these skills in real analyses of social work and food shortage amongst Veterans. In 2019, I hope to gain a deeper understanding of these two technologies and to add Linux and Python beginning skills to my knowledge. I also want to understand epidemiological theory, statistics, painting, Irish folk music, and piano technique.

If I had a nickel for every copy editor/epidemiologist I knew...

Curious where you got the data for social work and veterans food storage? Those are interesting datasets that i'd also like to look at.

I, too, am interested in this dataset.

* Physics Simulation - I wrote 2D physics from scratch for this game http://noisyowl.com/disks/ and the ability to actually use the implementation of the physics engine as part of how you solve design problems was absolutely worth it. If you're a programmer making a physics game, I'd recommend writing your own physics as long as you need at most one of: gravity, polygonal objects, and rotating objects. I think I might try something using one of these engines for 7DRL this year.

* Unscented Kalman Filters - These are really cool, wow. I'm pretty sure the unscented transform has a lot more potential than just being used with Kalman filters too, someone should investigate that. Also this year I learned that the truncated Kalman Filters I've been developing for the past few years are a lot more useful and powerful than I realized, and I'm interested in exploring more general ways to use those. (Unfortunately Google won't let me publish these though.)

* Vertx server - Web server frameworks generally manage to make me mad, and this is the first one I was actually happy enough that I'll keep using it. Has a few rough edges though - I wrote a multiple database query method by hand, and Vertx's JsonObject type makes it really easy to accidentally create an infinite loop.

* Elastic beanstalk - Is actually kind of terrible? And yet it's so much closer to what I actually want (run my jar on X machines, reboot as needed, never think about it again) than what I've used before (actual servers, ec2, app engine) that I'm also sticking with this.

* Postgres - I mean I've technically used postgres before but I wrote a reddit clone from scratch this year so I know a lot more now. Hey it's as good as everyone says, go figure. Also pgadmin is so bad, wow.

* Peg.js - Parsers have always been intimidating to me and playing with this really cut down the intimidation factor. I'll write my own parsers for anything important, but still use this for prototyping grammars. The idea that you can have a dirty prototype of a grammar is mind-blowing to me though.

>Also pgadmin is so bad, wow Pgadmin 4 is HORRIBLE. I just use pgadmin 3 when I need it.

Scala. It’s something I’ve been meaning to learn for about 8+ years now. Not the most exciting language these days for a lot of people I suppose, but I’ve already learned a ton about real world functional programming.

Yeah, I recently had the opportunity to use Java 8 on the job for the first time and solving problems in a functional way was a sort of Damascus road experience for me. Now I want to go farther so I'm learning Kotlin.

C++ to the point to gasp and understand some of the standard lib implementation and the nitty-gritty details of move semantics and template meta-programming (thanks to haskell), yet the language never stops to amaze me, every large C++ project has completely different dialect (i.e. llvm/chromium/doom/v8/envoy), and they all are different kind of demons from hell yet I love the language.

Haskell and Category Theory, but now I'm impractical trying to apply the concepts in practical scenarios and stuck with paralysis by analysis in every aspect of developing software even in some aspect of my life, category theory just screwed my brain and i cant go back. so simple and so complex, just dots and arrows! I guess its too theoretical.

For food: Java puts the food in my mouth but i hate it, just because i needed ,learned Functional Java(streams) / Camel.

Polish my micro-services "architecture skills" for shitty banks/financial institutions (oracle/red hat/IBM bitches) stuck in the 2000s.

Angular/Typescript, Vue and extending my web development knowledge in general also for my job (which i also hate)

A little bit of Docker and K8s.

Ill keep my eyes on functional programming and functional design/architecture for large systems. Also: any book recommendations on the subject?

I wrote this in hurry, sorry for my English.

Didn't understand one part... How come the architecture skills only apply to banks?

I meant, to improve my software architecture skills using micro-services to modernize systems in financial institutions.

Picked up some Go. Still cannot for the life of me figure out why it's so popular (please don't reply with statically linked binaries)[1]. In the infrastructure and ops space it seems to be slowly eating Python (sadness). When in Rome, do as the Romans do.

[1] Such a benefit doesn't matter in a containerized world.

>[1] Such a benefit doesn't matter in a containerized world.

Go is used for the tooling for deploying this containerized world.

Let's take a look at some infra/ops tools written in Go:

* Docker itself - should run on baremetal (duh)

* Nomad, a container scheduler - should run on baremetal

* Kubernetes, a container scheduler - should run on baremetal

* Consul, service discovery - should run on baremetal

* Etcd, service discovery - should run on baremetal

When you actually work in ops, setting up the container conveyer belt by putting Go static binaries on Linux hosts - so that developers can go ahead, containerized their applications, and deploy them - is a big improvement over the Python days of yore.

Performance wise Go is worlds ahead of Python.

Sure, no strong disagreement there, but it doesn't matter for most operational and infrastructure tooling where the language and ecosystem really seems to have taken off. Hell it barely matters for most web services or apps once you factor in database or other IO latency.

It does have a nifty concurrency system.

I do like that most Go code is idiomatic because the language really kind of restricts you to writing it a certain way.

I wish it had a less verbose way of dealing with errors... some kind of function composition along with better formalization of Go's multi-return (e.g. Try, Either types) would be nice... of course without generics that is likely tricky.

I'm happy I can read and write it, but for my personal work I'll be sticking with some mix of Python and Java/Kotlin.

I think in 2019 I'm going to really give Rust a shot.

Go 2 will get better error handling, error types and generics: https://go.googlesource.com/proposal/+/master/design/go2draf...

Interesting, thanks! But at the same time who knows how long it will be until Go 2 exists and even then the migration will be probably be longer than desired.

Julia - started at the end of the year. Planning to venture in more deeply in the new year.

I did this as well. So far it seems like some pretty neat tech.

My team started being more serious about our switching from .NET to a mix of Django, Flask and Vue.js this year, so I've been focusing on those. I personally played around with GraphQL (Apollo, Yoga and Graphene) for a while, but ultimately I didn't find a good use case for it in our setups and kind of left it at that.

Our 2019 will be spent on building our AWS and Azure skills along with container setups, as we look to move further away from our .NET and IIS heavy setup. With an increased focus on getting better with Python and Vue, possibly moving our JavaScript to Typescript.

I don't have anything negative to say about .NET, in case anyone was wondering. I think .NET core and Blazor.NET are especially interesting. We've just had so much more fun with Python and that's frankly really motivational. We're also using more and more Python when we do data-driven development, incorporate GIS stuff or do various forms of scripting, so it sort of makes sense to consolidate.

Having done both Python and .NET, Im surprised to hear somebody migrate in the opposite direction. Python may have a better history as an open language for web dev, but it feels like .NET has a far brighter future.

I've never had to write .NET as a day job, but Dotnet Core is tons of fun for me. I think it's a super productive environment. I did the opposite as you - started with a tremendous amount of python

When have you been using Django compared to Flask? I'm curious, since I often use Flask + vue, but haven't used Django much.

When we know the project is going to see a lot of end-users that'll need their own "profile" styled page and/or if we know we'll see a lot of database changes over time. Which hasn't been a lot of times yet, if I'm being honest.

One example that I can share, that would have also been a good Django candidate is our system for handling employee absence. When it launched it only let you report the two types of paid vacation we have, but being the public sector of Denmark, we actually have around 80 different types of legal absence, with various rules attached, and we knew we'd want to add more over time. We also knew every employee would need their own profile to keep track of their accounts, and we knew some managers would want to outsource the responsibility to secretaries and such. So that's what would be an obvious Django project to us, but it was build in .NET because that's what we were most comfortable with at the time.

Thanks for your response--it's helpful to hear! I've mostly been using flask for simple APIs / dashboards, but have wondered lately whether a more "batteries included" approach like Django could be helpful once a db / more logic is added..

Django is great for "batteries-included" development.

It has a lot of extra stuff included in the framework that you might not need for a smaller app, but if you don't care about that extra overhead (or you need to use it) then Django is a great choice.

It also has a fantastic ecosystem of "apps" (what Django calls plugins or packages) that you can drop into your project which can save a substantial amount of time; which makes it great for consulting work.

I learned all about parsing, lexing, and ASTs. I did that by writing a toy language, then creating a BASIC interpreter in golang.

Beyond that I did more messing about with AWS, and found that while I knew a fair bit theres a lot of devil in the details ..

Regardless this was a good year, the previous year I'd started working with ESP8266 & Arduino devices. So it was nice to get back into pure-software development, instead of hardware. (Hardware is rewarding, challenging, and a lot of fun. But I found waiting weeks/months for parts to arrive a bit of a pain.)

Did you use book/online courses/tutorial for learning parsing, lexing etc.

I read this ebook:


That walks you through the process of creating a simple language. My version has since been extended a fair bit:


The writing is clear, and I was familiar with the broad concepts already. (In the past I've written toy interpreters for FORTH, and similar simple languages, but usually in an adhoc fashion.)

Thanks. Let me take a look.

Swift and ObjC! I dropped out of college and joined Lambda School this year and it was the best thing I did for my love of programming. I got tired of learning new frameworks for Web and anything really fun on desktop needed to be in C so I found a happy middle with mobile.

Favorite tech and the one I'm most anticipatory about in 2019 is ARKit and how easy making AR apps has/is going to become. If you dive into it now it's clear that Apple has some big plans for AR and eventually a new computing device.

Man it was a crazy year for me:

- Clojure

- Typescript

- Aws Lambdas

- Serverless

- Terraform

- Cloudformation

- Docker

- AWS Ecs with Fargate

- Kafka

All this mainly because I managed to land a job at a big company that encourages knowledge sharing across teams. So much better to have a community of other engineers you can rely on.

Company name?

Ovo Energy - a uk energy company, which should have been called a “a tech company that happens to be doing energy stuff” :)

I’ve been drawn to WebAssembly this year and have written some small test projects in Rust and Zig that target it.

I really like Zig as a language and started doing the Advent of Code challenges in it but had to give up as Christmas organisation took over. If you’re looking for a C replacement with a simple yet modern feature set it’s a pretty nice language. I found it pretty easy to be productive right away.


I also dabbled a bit with TypeScript for the teensy amount of glue I wrote to get my WebAssembly modules doing stuff.

I really like the progress I made with my devops flow this year.

At the beginning, I was using dokku to create small PaaS that would handle my projects, and sometimes mid-year, I dug deeper into terraform, docker and CI/CD pipeline from GitLab, so I was really happy with how my projects were deployed and integrated.

Other than this, I improved my Python skills with more attention devoted to testing, efficiency and modularising my code. I also made an app using ionic/cordova, checked out a bit of Swift, and worked on some basic ML projects, so overall it has been a fun year.

I tried to dig deeper into Go and Vue, but I either didn't have time or motivation.

Typescript and reactjs. Finally web development feels like real software development.

+1 for React. I'm learning it, too. I'm not sure I love it, but I definitely don't hate it!

Julia :) For scientific programming, it's a lot more fun than Python. And so far the community if friendly and responsive.

I feel like the community has a high rate of domain experts. Newcomers will come to discourse.julialang.org and ask basic "how-to" questions while providing a small code snippet.

Then the package authors, who often do research in the relevant fields, will start long discussions about the application context and the best approach to take (beyond Julia implementation).

That's both fun and a wonderful opportunity to learn, especially across narrow academic fields.

Java 11, which has come a very long way from the verbose, clunky language of two decades ago; particularly combined with a top-notch IDE like Intellij IDEA, the current version of the language is a joy to program in.

whats a good resource to get upto date with diff between 11 and 8

A Google search for 'what's new in Java ...' provides some good summaries.

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