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

[0]https://perlmonks.org/


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.

Reddit?


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.

https://careers-interactivebrokers.icims.com/jobs/1777/progr...


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.

Sed:

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

Grep:

perl -pe '/foo/' file1

uniq:

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:

https://unix.stackexchange.com/a/79656

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

https://stackoverflow.com/a/13968172


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?

https://rcoh.me/posts/rust-linked-list-basically-impossible/


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"

https://inquisitivedeveloper.com/

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!

https://twitter.com/AndrewStellman/status/107722796317793484...


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:

http://www.smashcompany.com/technology/docker-is-a-dangerous...


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.


Hardware.

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:

https://interpreterbook.com/

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

https://github.com/skx/monkey

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.

https://github.com/meheleventyone/aoc-2018-zig

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.


In my free time, I picked up:

* Python * Common Lisp

For Work:

* Pandas (Learning Python resulted in me being asked to help our 'data team' get started with Pandas)

* Go (I moved to that Team)

* Protobuf (google protocol buffers)

I've played around with some other technologies along the way as I enjoy learning various languages. But I wouldn't say I really become good with them, some other's that I've played with this year:

* OpenDylan

* Erlang

* Django

EDIT: Formatting


Haskell. I don't like how it is whitespace sensitive and the compiler errors can be terribly unhelpful, but it's cool to see what you can do with lazy evaluation

Clojure. Not something I find myself using day-to-day but I think it has some cool qualities (seamless metaprogramming). I found the APIs a little frustrating to wrap my head around

Kinesis, MongoDB, Hadoop. Evaluated all of these when designing an event ingestion/stats processing system

Concourse. Lots of Linux stuff. Lots more Bash. Some game programming libraries for giggles


Other than going deeper with Elixir knowledge on new problems (see below), I learned and brought in production the followings:

## DevOps

* AWS Cloudflare and Lambda (with Go)

* Kubernetes

* Ansible and Terraform

* deploys from gitlab/bitbucket pipelines

* production/dev setup with Docker and docker-compose

## Patterns

CQRS and Event Sourcing

I’m going to continue on these paths during 2019, maybe with some new stuff as well.


Just 1 year into software industry. Here is the little list of things I played with this year

* Finally understood the concept of lifetime in Rust.

* Learned Go programming language. I loved it, but wished it had generics (waiting for Go 2).

* Golang - I built a simple key-value store based on Raft consensus protocol.

* Golang - I also built a distributed hash table with Kademlia.

* Did some lock-free programming in Golang to implement Lamport timestamps.

* Learned Docker and Kubernetes. I also dived into concepts that are behind Docker like namespaces, cgroups and securing them.

* Learned to use Terraform and AWS.

* Learned some Elixir - haven't done anything serious yet.

* Learned Ruby, Python and some shell scripting - I still look up stackoverflow a lot here. I use them to automate some boring stuffs during development. (like I needed to setup cluster configuration every time I try running the Raft based KV store).

* At work, I learned the Spring framework and a few details about its internals. I got a few questions like - is type erasure a lie? it is just that getting generic types is not so straightforward!

* Played with MongoDB and Node.js - implemented a simple expense tracker backend.

After all of this, I decided I'm a bit overstretched and decided to stick with building cloud/distributed systems mostly with Golang and learn Docker, K8S.


Great list. I'm curious how you went about doing these two? ... "built a simple key-value store based on Raft consensus protocol" and "built a distributed hash table with Kademlia". I would like to do the same. Did you just read about them and implement a solution yourself?


1) React-native - I've started developing a side project, basically trying to make a daily assistant for my mother. Started with Expo, but promptly moved to "native" RN, I enjoyed a lot the super fast development with hot reload and the great amount of documentation, Component and examples found online. Basically you can build almost every idea by reusing already available Components and that's awesome! Though, with that you have to rely on the responsibility of the Component's owners to keep them up to date with RN, otherwise you will struggle a lot upgrading your project. (side project link: https://areis.pt/amom.html )

2) Microservices and Serverless - Did a lot of research on these two topic in the last quarter of the year, trying to take out the main use cases and advantages for both super hyped technologies. Ended up applying Serverless at my work for now, which was the super simple to integrate with our architecture (monolithic) and was also appropriate for our organization's size (small).


This year was a huge learning year for me. I learned a lot more about distributed systems, messaging and integration patterns, and landed a job writing Go full time (which originally started as my “hobby” language last year). I also started learning F#, CI/CD automation, and “containerized” several applications which greatly expanded my knowledge of Docker and Kubernetes.

It’s a lot once I actually write it down.


Scala, Reason, Guile

Favorite: The pragmatic and approachable simplicity of OCaml/ReasonML (bonus points for Scala/Akka for very different reasons).


What are you doing with Guile?


Vue js. Everytime I tried to learn one of these frameworks before while doing a project I would quickly fall back to vanilla js as my projects weren't complex enough to see the value, which meant not much incentive to learn the APIs and the 'framework way' of doing things. Finally this year I had to do a project which was sufficiently complex to justify using a framework and where I was glad at the end of it with the decision.

Django Chose django over nodejs for a project which had multi users with roles, views, access control as well as a rest API for mobile apps. I liked the same defaults and found that if I spend enough time learning the APIs, a lot of things have oob solutions.

Switching gears towards the end of the year, I had to look at a good option for building a desktop GUI app which will handle and display a lot of data. It's more of a development/ data analysis tool. Ended up selecting C++ and Dear ImGui for the job. A steep learning curve for me but enjoying it so far.


I'm learning Django also. It really stands out as a mature development framework. In conjunction with django, I am also building an online magazine website with WagtailCMS.


Two technologies that I've had an on and off attempt to learn for the last couple years finally clicked into place this year:

Ansible -- I converted my dotfiles install bash script to use Ansible and to also install all my terminal dependencies. Then I started expanding on it to include my entire development box and to provision a bunch of vagrant boxes of different Linux distros so I could test the waters with something other than Ubuntu.

Docker -- Work's been using this now for over a year, and I was a bit of a hold out on it since Docker just seemed like another layer that Ansible + Vagrant was doing a fine job of handling. Once I really dug into how the configurations worked together and set up some of my side projects to use it, it's usefulness started to come together for me.

Otherwise, I keep trying to learn Rust but don't have any projects in mind that would fit with it. I also keep playing with React on the side but haven't gotten very far in my understanding of that ecosystem.


Re React: I totally missed that train but was forced to learn everything about ES6, Promises, React and Redux in one gig. Fortunately I had someone who showed me the ropes, otherwise I would have wasted lots of time. Still, I never really understood how things work until I made my own side-project. Don't give up, React is worth it!


Unreal Engine and C++. I've long worked with Unity, but as part of a new job I'm tasked with developing our Unreal plugin. Previously I only touched C++ on occasion, so I had a lot to learn — and have a lot to learn yet — of best practices, new features available in C++11, dealing with exceptions (Unreal disables them by default), and so forth. Likewise for Unreal. Like C++ itself, it's wonderfully powerful but sometimes painfully complex.

I also continued to deepen my understanding of databases and distributed systems. My favourite read this year was Designing Data-Intensive Applications which made me more familiar with the pros and cons of the various datastores and provided a better sense of the tradeoffs that each makes. It also gave me an appreciation for the guarantees that the battle-tested relational databases provide. One of my goals for 2019 is to improve my SQL knowledge — thus far any extra effort to understand it better has payed dividends.


On the verge of choosing Unity for a project with middling performance requirements. Can you tell me which platform you'd choose if you had the luxury?


Almost without question I'd choose Unity for most projects. Its rich ecosystem, large community, and decent documentation make it a solid choice. Many of its warts like only supporting an ancient version of C# have been remedied in recent releases (as of Unity 2018.3 you can write C# 7.3, which is a nice language indeed). Unreal's Blueprints are slick for gameplay scripting, but I'd choose C# over C++ for game code any day.

In the end they're both excellent engines, and I suspect a AAA game would be better served by Unreal, but I find Unity far more flexible for arbitrary game designs whereas with Unreal you sometimes feel like you're fighting its roots as an FPS engine (though if you're making an FPS, UE4 might be just what you need).


while i have learned smalltalk already a few years ago, it was only a short time ago that i found a smalltalk application that is so useful that it's worth it to keep a pharo smalltalk environment running at all times.

as a result i became easy to use that to build a small gui app to help me solve some issues.

the key takeaway is this: i have wanted to learn more about smalltalk ever since i started learning it, and i experimented with a few apps. but the effort of having to start a smalltalk environment every time i had a few minutes to dabble around just seemed like not worth the trouble. (it was like an 'out of sight, out of mind' thing, and it always seemed a bit to much to get used to how smalltalk works just for experimenting.)

but now that the environment is always running, and needs to run for that one vital application i am using, for which it is worth it to keep the smalltalk image uptodate and current, that makes it easy to spend free minutes to dabble around and try things.


An operating system should be more like this


you are right! i didn't even think of that. i mean, i have been curious about lisp-machines and even smalltalk runnig directly on the machine, but i didn't look at my current setup in this way until you mentioned it.

in fact, my home office is set up with dual monitors with gnome so that one monitor scrolls through gnome workspaces and the other is static with pharo maximized.

then a few days ago i discovered a package that offers multiple desktops within pharo, so now i got a multi-desktop gnome on one screen and a multidesktop pharo on the other, and it feels like having two computers with a shared keyboard and mouse.



yup, that's the one i meant. or at least its predecessor. haven't checked on it for a while. very happy to see that this is still being worked on.


GPU programming - rewrote some LiDAR processing using cuda to speed up our object detection pipeline.

Also learned the python C api so we could integrate some ML models written in pytorch into our c++ applications.


Hi I’d like to talk to you about LIDAR processing with CUDA. I am Vincent Lecrubier on LinkedIn, or Crubier I’m Github. :-)


I'm a junior C# developer who started last year. When I was in school/interning I focused a lot on firmware, networking, operating systems and web development (eclectic, I know). Also primarily worked with Linux.

This year I learned:

- Vue.js (amazing JS framework) - F# - React/Redux - Jest - Vim (well... I should say became way more proficient) - Visual Studio which I try to avoid like the plague (I find it bulky, slow and frustrating). Thankfully a lot of their tools can be loaded through bat scripts and exe files which are independent of the IDE. That includes an excellent C# repl I can use to immediately run code as well as run C# scripts on the fly including legacy code that won't run in .NET Core. Found an ok debugger that works from outside VS but not as good as the one VS provides to be honest. - .NET core (a lot of nice things to say about this) - Azure and with a lot of mixed feelings about it.


Most importantly, I finally "got good" at MySQL and InnoDB. before this year I mostly looked at databases as magic put-stuff-in-and-query-it machines that always worked unless you were FAANG scale. Needless to say, that scaling boundary comes quite a bit earlier. The most interesting project by far was to limit query load of a big background job by implementing feedback control based on the disk throughput. I have a blog post written about it but the approval gears of the PR department can turn slow sometimes :)

Other things learned at work this year: Docker and Kubernetes. Not something I would have learned on my own, but in the end I'm glad I took the plunge since they're both pretty fascinating.

Outside of work: I finally got proficient with monadic parsing in Haskell. Parser combinators are simply the best parsing experience I've ever had and I really hope never to write another regex in my life.


> Parser combinators are simply the best parsing experience I've ever had and I really hope never to write another regex in my life.

Yes, they are. And speaking from the far side of that, I still end up writing lots and lots of regexes. :(


Unfortunately nothing. While I had years where I learned about 3 programming languages, this year was mostly about getting a work project done and guiding a team of more junior developers in it. Part of that felt good too - but the fact that I tought a technology which I personally don’t find that appealing made it less fulfilling.


"Teaching and sharing expertise with others"! That's not nothing. That's maybe the most important thing.


I made a robot (CNC machine) that makes string art [0]. I never worked with anything hardware / electronics related, so I learned a ton of things in the process:

* how CNC machines work

* microcontroller programming

* 3d printing

* electronics

[0] https://www.instagram.com/p/BnkAE3-AanR/


After a couple years of working all kinds of Android and iOS native development for clients, I finally got a chance to dig into React Native and it's been incredibly fun so far! I hope it's not just the honeymoon phase but it seriously looks like a keeper framework, I've been able to build beautiful cross platform MVPs faster than I ever could before natively.

And hobby-wise, I created an educational program with an entirely Kotlin stack, all the way from a Spring Boot backend to a TornadoFX desktop frontend - sharing all models with the backend and even having a local SQLite instance that mirrors the server side DB and enables distributed and delayed updates - mainly aimed at schools with zero to no Internet connectivity. It was incredibly fun and I got to submit PRs and issues to a bunch of cool projects.

It's been a fun year!


Hi phreak,

I am a react native developer as well. Can you answer some of my questions ?

* How was your experience in React Native (RN) when it comes to styling the components ? I find it very hard and sometimes confusing to have consistent styling between iOS and Android.

* I have no native iOS or Android experience. Can you suggest me how shall I approach learning native app development ?

* What resources did you selected to learn react native ?

* Do you think one can learn kotlin without learning Java first? Or do you think that Java knowledge is beneficial or necessary for learning kotlin effectively ?


Well, in order:

- I haven't had any trouble using the RN css-like styles along with React-Navigation yet, what I've been writing looks consistent between devices, but I know I'll hit that issue eventually

- My approach has been to just start making apps targeting real users, either from your own business or a client's, there are several pretty good tutorials to get started, and the people who use what you create will let you know what's important to focus on (and also motivate you to keep working!).

- The react native + navigation documentation is a great starting point, but you'll still spend a while learning so your best bet is to partner up with a tutor and work alongside them to begin with, real experience is always where you get the most value at first.

- Kotlin is in an incredibly good place right now for Android development so I believe you can skip Java at first, and when the time comes when you need to check it out, you'll find that it's quite clear to make out and write with a Kotlin background. An IDE to hold your hand is always a plus as well.

Most of all, be sure to brush up on your basic algorithms and data structures, OOP design patterns, a dash of functional paradigm tools, mainstream architecture styles, and general good practices as you tackle on new technologies and you'll find out that there's a lot of overlap of all over the modern languages that translates directly. Good luck on your journey!


.NET Core. It's got everything I need from the java world, without the baggage from being an old technology.


Same here. It also works almost perfectly on Linux.

It has probably replaced Java as my go-to language. Which is amazing. I thought I was a die hard Java fan.


Why exactly do you consider it an old technology? The language is evolving the same way others do, with improvements and additions. In fact it recently got a shorter release cycle with new versions every six months.


It's just a shame they felt they had to put in the sneaky telemetry.

https://github.com/dotnet/cli/issues/3093


I began the year comfortable with React Native and ended the year in a torrid love affair with it - took the time to understand it down to the c++ bridge, forked and modified libraries to implement features that would've taken ages natively, carefully poc'd and sold my team on a simple redux implementation, and built several animated ui components (if it isn't obvious, we're a startup; yes, native is better).

I'm not sure this counts as a "technology" per se, but I've been bitten by the rendering bug and have spent the past year rekindling my traditional artistic passion for visual realism in the context of modern computer graphics techniques and have been fortunate enough to be in a position to apply graduate school for it.


I learned that I don't like tech. Everything is good for me as long as it helps me achieve my goal with a good level of automation and low maintenance.


Flutter/Dart: Still learning but I'm quiet amazed by the quality of apps made in record time.


How would you rate the resources to learn and reference? Is it accessible for mobile newbies?


Like @vchernobyl said it's very accessible. I would like to add that I'm subscribed to https://www.reddit.com/r/flutterdev. Everything from tutorials to news gets posted over there.

Just today I found this app which is great reference once you are aware of the basics

https://play.google.com/store/apps/details?id=io.github.x_we...


It's very accessible for everybody! The official documentation is excellent and covers you from a to z (UI, Networking, JSON serialization, etc). It gives you a strong foundation on which to base your application and exposes you to a few recommended application architectures (for example Redux and BLoC). If you're interested in mobile dev, it's definitely worth giving it a try :)


Angular.

Have been a full stack dev for years and always had an itch to move towards front end. Converted .net site into angular/.net core stack in 2 months, angular has been blowing my mind. Its such a huge upgrade to entire front end framework, I absolutely love it.


Blender and BabylonJS. I can't describe how fantastic Blender is - and 2.80, which is now in Beta, reduces render times for my project by 95% and that's not an exaggeration. Play with it over Christmas, you won't regret it!


I am currently halfway through making my first donut! (albeit in .79 for now). I've been wanting to do this for a long time.


Vue.js. I use it exclusively for front end now and have ditched Angular 2/React all together. I even got it approved for use in the very large enterprise I work at (internal apps only of course, but we have a lot of those).

I also embraced messaging for good and was shocked at how easy NServiceBus makes everything regarding AMPQ.

I continued to celebrate .NET Core advancements and use it for all my server side programming.

I also dipped my feet in Scala and really like what I found .. Q1 of 2019 will be Scala heavy at work, then back to .NET Core.

E: Forget, every single project I have is set up in Azure Devops now for build/deployment. It's amazing.


Why Vue.js over Angular/React?


This! Curious.


Why internal apps only?


I learned Spring MVC. Interesting framework for back end web development. It was hard at first to use Spring, coming from Django which is a lot easier to start using, however I prefer it in a lot of ways to Django. The controllers are pretty intuitive to make and I much prefer them to views in Django, and the actual database querying and using while at first is a lot harder than Django, it makes a lot more sense after getting over the initial hump. Static files are also very simple to setup and use.

If only there could be Spring for python, because Java is very painful to program in.


Take a look at kotlin. Fully supported by spring. Writes like a scripting lang but has type safety better than Java.


Did you search for it? :)

http://springpython.webfactional.com/

Not sure about it's activity though....


I learnt Solidity, Vue, React Native, and a bit of reverse engineering with Frida this year. I'm glad with the way the web is exploding and it's great to delve into Android dev with familiar JavaScript.


Went from C/FORTRAN/Python post-PhD student to being literate in:

  * TypeScript
  * Node.js
  * React
  * Java
  * Spring Boot
  * Bottom line: This is all pretty ugly and
    underperforming, compared to my previous world...
And intermediately literate in:

  * OpenShift
  * Kubernetes
  * Istio
  * Helm
  * Ansible
  * Which I all pretty much enjoyed, compared
    to my previous world (MPICH and BLAS all the way).
Having said that, I'm drawn to:

  * Clojure
  * Micronaut
  * Rancher
as of now. Which are my next projects. :)


If/when you get into Micronaut, it'd be good to hear your findings. Similarly, I've done Spring Boot and ventured into micro frameworks for faster start times: SparkJava and Javalin (which is very Kotlin friendly despite the name).


Thanks for the tips with

  * SparkJava and
  * Javalin.
I'll drop you a note, as soon as a project in Micronaut is done. :)


I learned Vue.js and Python/Flask for my side project https://contactcache.com (I didn't want to use Angular or Java/Groovy/Node.js which I knew from previous work).

Vue.js has been an absolute joy to learn and use. Great design & simple ecosystem. Perfect choice for small SPA.

While I like Python in general, on the backend side I think there are also other stacks that'd probably do the job and perhaps do it better. I chose Python since I want to also have a look at data science in the future.


Learned Vue as well. Plan to keep using it for all my projects going forward.


Learned ReasonML and Solidity in 2018.

ReasonML is pretty great, though I think the syntax is much noisier than it needs to be, compared to Elm and OCaml. Documentation needs to be consolidated though, and the linter picks bad defaults.

Solidity feels like a language designed like someone that never learned lessons from having tried a lot of different languages. It feels much like a leaky abstraction over the EVM. Other than when doing embedded programming, this is the only language where I had to reason about what the compiler or VM was doing.

Don't know that I found a favorite tech this year.


Try "simplicity"


Is that the name of a tech, or are you telling me to simplify? In what ways would you recommend simplifying?


2018 was a fantastic year for me. Changing jobs allowed me to get away from C++/MFC programming, which I absolutely hated. Now I'm working with fresh and exciting technologies, such as Go on the backend and Angular/PrimeNG on the frontend. I've also dug deeper into distributed systems and played with Firebase and Flutter as well as various Go messaging technologies (Mangos, Nats). I also just got started with Erlang, Elixir and OTP. Although I'm not very far in my journey yet, Erlang/OTP is my favorite tech in 2018.


Learnt a lot of new things , learnt Elixir/Phoenix, now learning Nodejs with Hapi framework.

While learning Nodejs, realised that JS isn't the first language anyone should consider for back-end, but really amazed by things JS is capable of doing today.

Would highly recommend Elixir/ Phoenix over Rails , Elixir not only has lesser learning overhead it makes alot of things a lot easier. Concurrency and speed of server are major advantages but I like way language operates. It was also my first functional language and it changed my perspective for programming languages.


Be careful. Elixir is the gateway drug to OTP. There's no going back once you get that taste of sweet sweet Actor-model concurrency.


I am already addicted but my organisation doesn't understand that. Node feels sloppy after that but have to work on it.


Serverless. I started playing around with some of the open source frameworks that exist (mainly OpenFaaS and Openwhisk) and found the experience pretty cool. Certainly, serverless doesn't work for everything and might be a bit overhyped, but it's a very pleasant development experience at times, especially with OpenFaaS imo. I also added a crystal template for OpenFaaS (https://github.com/TPei/crystal_openfaas)


Vue.js. It's a breath of fresh air.


Totally. I had been planning on moving from vanilla/jquery to a framework (Angular, React) for a long time but the initial setup and complexity always repelled me. I knew Vue.js was what I wanted the moment I read the docs.


What did you use prior to Vue?


Old school jQuery. It's my first reactive framework.


Ops: I moved to Kubernetes from Docker swarm+compose, and I like the momentum that k8s is getting these days.

Dev: Continued working on our full stack JS (Node, React, React native, Flowtype, Jest). I am planning on moving to Typescript because of the poor developer experience of flow, but appart from that, I am loving the state of JS at the moment!

Databases: AWS Aurora with PostgreSQL and PostGIS, with Prisma to create a GraphQL API. It is amazing and feels like the future.

CI/CD: I am getting deeper in the GitLab stack to integrate all the elements above.


In the beginning of the year I compared Vue.js, Angular and SAP OpenUI5. I chose Vue.js for its simplicity, performance, documentation and underdog status. I still need to learn React.

During the summer I also took the "CS50's Web Programming with Python and JavaScript" class on edX. It taught me about Flask and Django.

Since then I've made two apps for work:

- one is a data visualization to coordinate railway infrastructure works using Vue.js/D3.js and an API made with Flask

- the other is a standard (server-side rendered) Django app. It is a search engine for scanned PDF documents. There are also scripts to extract text from documents using OCR with ocrmypdf based on tesseract. The text is then loaded in a PostgreSQL database to make it full-text searchable. There are 30k documents and 130k pages.

Both apps are currently running on my company's internal OpenShift cluster so I also had to learn OpenShift, Docker, Kubernetes...

Since September I'm back at the university every Monday for an Executive Master in Datascience. I'm currently learning machine learning (using Python, scikit-learn, numpy/pandas, matplotlib, tensorflow etc.), graph mining and data visualization. Here is our dataviz project: https://ufo.kediss.eu based on the UFO sightings dataset on Kaggle. I'm currently studying for the exams in January.


I learned Ionic 3 in 2018, and managed to publish multiple apps to both Google play and Apple appstore!

And looking forward to migrate to Ionic 4 and make both desktop and web versions of my apps!


Been using Ionic for 4 years. I think v4 with just TSX + Redux has been really good. I’ve good things about Angular 6 but TSX is just much more intuitive to me.


I started learning neural networks, only to realize that there's plenty more to study in 2019.


I had to learn some computer vision, specifically how to make nice visualizations with 3D point clouds. I need to make a mesh from a 3D point cloud then drape an image over the mesh I created.

I wasn't able to find a great algorithm so I'd appreciate any tips people have! Open source code that I can bust open and investigate is preferred.

I ended up just banging out an algorithm from a paper that looked easy to implement within my limited time frame. The result checked the box, but was ugly.


html and css

I have been calling myself a frontend engineer for last 7 years. Not that i did not know html and css but my focus was always on javascript. This year i focused on web accessibility and that made me realise how much i didn't know about html and css. I now figure out how my component (<react_developer>) will look implemented just in html and css and then add interactivity with javascript. It feels like someone cleaned my hazy glasses. Accessibility for the win.


Golang, Vue, craftcms (a modern php CMS).

On the non-technical front, I learned how hard interviewing is nowadays (had been decades since I interviewed for a full time job). It's brutal.


> I learned how hard interviewing is nowadays (had been decades since I interviewed for a full time job).

If you have time, would you elaborate on your experiences and the contrast you observed?


I'd be interested to hear more about your interviewing experiences, as well as your perceived changes in our industry too.


3 things this year for me - CMake, Rust, and Vulkan.

CMake is probably the only thing I can say I really "learned" during 2018, as I spent a lot of time reworking the build system where I work to use "Modern CMake". We manage a large cross platform code base and it had been bugging me that there were platform specific projects that had to be updated every time we added code (that had poor documentation of what random settings were made in some random subdialog of visual studio). Still hard pressed to convince the team of mostly Windows developers to give up their Visual Studio projects, but hey, if you choose to use CMake you can compile it for all of our supported platforms. The multiplatform CMake implementation is now actually smaller than the original single platform one, and a heck of a lot easier to read. Although, I do understand from their perspective that a CMake generated visual studio project is pretty ugly compared to a hand crafted one.

I spent a few weeks toying with Vulkan and have wrapped my brain around how it works (as a long time OpenGL developer). Not to the point where I could write it without the reference manual, but I can reason about problems with it.

I also spent a few weeks looking into Rust. Definitely on my list of things to spend real time on in 2019. I read enough to begin to understand how the borrow checker works, so I've spent time thinking about how to solve various problems I come across using that model. It's certainly affected how I write C++, much to the annoyance of my coworkers ("why don't use just pass a bare pointer? I don't want to read all this std::unique_ptr / std::move stuff!").


My list will probably be unusual:

- Basics of finite element analysis- that helped our team to skip a few iterations during design of vibration isolation solution.

- Refreshed my knowledge of BPMN, trying to formalize some internal processes. Work in progress, people are reluctant to changes.

- Using yocto to build firmware images for embedded Linux devices.

- Learned a lot about practical side of RF engineering- impact of plastic enclosure on antenna, how RF performance should be tested in production.


Nim: https://nim-lang.org/ (as a die hard Nim aficionado I absolutely love Nim)


I've been translating idioms across languages. I've been expanding my vocabulary from APL, exploring meta-programming in Racket, and structuring programs in Rust. APL presents a distilled description of algorithms with a larger vocabulary of primitive operations which encourage a greater variety of approaches in problem solutions. I've been exploring Racket as a Lisp and reading On Lisp for what is uniquely implementable through meta-programming. I've worked through a dozen exercises on exercism on Rust, and I think that I have a lot I could learn from structuring programs around the borrow checker, but I expect that I will not have an opportunity to use the language directly at work.

Most of my learning has been around the architecture of distributed file systems and distributed object stores. It's given me very useful perspective to have a context for comparing different solutions to each other and how they relate.

I've learned more about awk, tr, and join to aggregate or process GBs of tables structures as text.

I've also been trying emacs and evil for an integrated, programmable ecosystem with familiar ways of editing text.


I've been a big Python user for years with a smattering of a dozen other technologies for specific situations. Lately, I've been using more and more Powershell which I traditionally disliked. I don't see any tool out there that comes on every windows box, has a simple IDE with REPL, full .NET integration, command based syntax...etc. The one issue is how rediculously slow it runs.


I am working on a project that involves running untrusted JS, so I am learning about Linux containers (via lxc/lxd) and decided that Go would be a more appropriate language to build this on so I'm learning that too along the way.

I must say it's a lot to take in but these are really interesting technologies that should serve me well over the next few years, especially coming from node/JS.


I learned (significantly more of) Python, which I had previously resisted for a long time due to my dislike of the language (said dislike has only worsened, but it ended up being the best tool for a couple jobs, and it's what my employer uses, so it was a matter of time). One of those Python projects also involved learning about Qt5, enough of the winspool API to send a ZPL document to a Zebra printer, and enough of Python's ctypes-based FFI to glue the aforementioned winspool API knowledge to the program I wrote.

For personal projects, I've learned at least a little bit about how parsers work by writing (a pretty awful) one from scratch (bitbucket.org/YellowApple/otpcl), and I'm hoping to fulfill my 2018 New Year's Resolution by adding a simple interpreter to that project (the parser tests include a half-baked prototype, but I need to flesh that out to actually track interpretation state, be able to run real Erlang functions, etc.). If all goes well I'll have something that's properly Show-HN-worthy by the 1st.


Started off the year with React, like others have mentioned in this thread "React for Beginners" by Wes Bos was instrumental in my understanding. Styled-Components is probably my favourite React library. I had been using JavaScript regularly but not very modern - JQuery and Dojo - so ES6 was new to me too. Again Wes Bos and additionally FunFunFunction were very helpful here.

In the summer I began an interest in game development. I took the CS50G course on edX taught by Colton Ogden - I don't have enough good words to say about this amazing series of lectures! Thank you so much! Alongside various game design principles, through this I learned Lua, Love2D and a little Unity.

The tail end of the year has been a quest for knowledge with me voraciously acquiring game dev knowledge from blogs, reddit and mostly the amazing resource that is Youtube - C#, Unity, Unreal, CG/GLSL/HLSL, most recently Blender.

Shoutouts to Youtube channels The Art of Code, Makin' Stuff Look Good, Brackeys, Blackthornprod, Blender Guru and of course GDC.

There is so much to learn!


Dweb related techs.

Initially, I started with ssb (secure scuttlebutt), but ultimately moved to dat/beaker.

I've been having a lot of fun with it, I love how this allows to publish side projects without needing to rent a server.

For next year, I'm interested in exploring the implications it has regarding interoperability of apps, given users host their own data and can give access to it to other apps.


Angular, TypeScript, Ionic.

After working with Scala for 7 years and Scala.js for the last 3 years, a side project led me to learn what life is like on the frontend outside of Scala.

TypeScript is an impressive language, really like union types, string literals, and to some degree structural typing. Development is fairly friction-free, and VS Code is a breath of fresh air compared to cumbersome IDE support in Scala.

As for Angular + Ionic, generally terrible, but I'm not a fan of heavy frameworks. You can create cross platform apps, yes, but performance and development speed leave something to be desired -- Scala is known to have a fairly slow compile/reload dev cycle, but Ionic + Webpack is on an entirely different level of slow.

Looking at Scala + Scala.js + Cordova + Sqlite as a possible stack for cross platform apps that use Quill[1], a type safe query DSL, on backend and frontend.

[1] https://github.com/getquill/quill


Arduino and C++ to work on the ESP range of embedded wifi chipsets but has also let me get into working with other dev boards like cheap allwinner tech stuff for fun for now.

Docker (finally) in a production setting rather than just messing around a bit with it, finally taking the time to work through k8s, swarm and service fabric for differing orchestration methods on different platforms.

Graph databases, like... most of them now, I will be continuing to work and play with Dgraph, but Neo4j and all of the tinkerpop stuff is pretty great if still a little lacking in docs for some of the implementations.

Despite the bulk of my professional development being on .Net applications, this has also been the year I moved my primary workstation from Windows to Linux and I haven't looked back almost at all but I have booted my old windows machine up as a VM a few times when I ran into the occasional brick wall, but that's become a lot less frequent as I've gotten more comfortable with Fedora.


Things I started to learn:

- knitr, as I got sick of LaTeX (I always ended up fiddling with the figure placement forever until it was just right). I also moved all my R work into RStudio, which is a HUGE time saver and the Projects function has saved me a few times.

- snakemake, for reproducible bioinformatics workflows, integrates nicely with HPC systems, and is very beautiful (the few times I've used it)

- I went through the first fast.ai course, and used it with some success on kaggle, but I'm far from doing 'bleeding edge' stuff I think (applied is fine though! give me a nice dataset and I should be fine). I've also read the Kaggle book (Deep Learning with Python), which contains a whole bunch of these weird useful machine learning tips that no-one really can't explain mathematically

- I've also made an effort to switch my R code to immediately use as much tidyverse as possible, which isn't always OK when using bioconductor at the same time


Could you provide a link to the Kaggle book? A quick search reveals quite a plethora, and I'm not sure to which exactly you refer.


Sorry, I confused Keras with Kaggle - holiday brain! It's this one: https://www.manning.com/books/deep-learning-with-python


Curious to know why you landed on snakemake for bioinformatics? Were you considering other workflow engines?


I settled on snakemake because my corner of bioinformatics had the most prepared 'recipes' for that one, plus it played nice with our cluster's weird local flavor of SLURM


Python and specifically Pandas via Juypter Notebook. As a business guy looking to use it more instead of excel, Tableau in 2019.


You should also consider learning R. Anything you can do in Pandas can be done, with less difficulty or fuss, in R. Plus, the plotting is much, much better.


If he/she has Tableau, they'll use it instead of R probably for the charting.


Most visualizations that can be done in Tableau is possible in R, especially with ggplot2 and the various plug-ins published.

I steer my team away from using Tableau because it is bloated software. Anyone who is serious about working in data science or data visualization should steer clear of it.


I dunno about that. I've used ggplot2 a bit and also seen what our best data guys do in Tableau. It really depends on what you want to do. With Tableau, you drag in a pretty big dataset and then you have a bazillion ways to change the chart, sort, group... etc. The charts that ggplot2 give off just seem aesthetically unpleasing. I'm not saying R doesn't have its place and isn't fantastic/free/open source, but that doesn't make Tableau terrible.


I spent most of my time in 2018 getting a deeper knowledge in pieces of tech I already use: Spring/Spring Boot, Hibernate, Postgresql, and Javascript. Did a lot of documentation reading. And source code reading. Built a suite of examples of ways to accomplish a variety of goals in a variety of ways and why it works the way it does.


Erlang and Go.

I have a background in data science, so have a lot of experience with Python. I’d always wanted to do more backend stuff: push my models in productions, do the ETL work myself... But quickly got frustrated with Python.

Go and Erlang have solved a lot of my pain points. Erlang is a bit of a strange beast for people who come from procedural languages, but it allowed me to build ETL pipelines that are more robust than anything I could do with Python in less than half the number of lines. Even for heavy computations, I now find myself spinning Python nodes to do the heavy lifting with Pytorch and co, and doing all the orchestration with Erlang. It also made me a way better programmer.

I use Go for computation-heavy APIs that don’t require a lot of data massaging. It’s a very efficient, weirdly comforting (!) language.

Now I think I got the bug, I really want to learn Clojure and Nim this year :)


Learned Scala, Kafka, and spark (and spark streaming/structured streaming).

I will say that after using spark, the big data community badly needs better distributed computing tools. It was just awful to work with. Also good luck debugging anything easily when you create stuff with the RDD apis.

I did come to like Scala, and Kafka as well, though.


Are you using Scala, Kafka and Spark for Machine/Deep Learning? I've been wanting to learn Spark, I only have have a vague idea if it. What's the best way to start and can you explain how Kafka ties in with Scala and Spark?


For the first question, we were looking at it to perform distributed matrix factorization in the immediate use case, but were planning to use the platform for more advanced techniques later on. We also tried to implement a quick and dirty distributed ALS algorithm and that's where we used the RDD API came in and my subsequent hatred for said API. Kafka was our streaming platform through which all our customer data was sent.

For starting out, the tutorials on the spark documentation pages are pretty good actually. However for streaming sources it seemed hacky to use spark with our kafka use since we had to basically scour maven/google for a package that did anything useful with avro-serialized data. Even after finding relevant packages we had to copy and paste some avro-to-sparkstruct lib code into an internal library since it didn't play nice with our versions of spark in it's public form. We were using structured streaming so that we could leverage the dataframe API which is much easier for data scientists to use and grasp coming from pandas/R. It's a lot nicer for a data engineer as well (imo).

JSON-serialized data worked okay actually, so we ended up using kstreams to deserialize the avro data and output it to another topic that was JSON-serialized since spark handled that better (read: more easily). Then we used the dataframe APIs to implement some of the higher order operations such as building interaction matrices and factoring them out, then outputing the resulting factors to cloud storage for collaborative filtering to use as a recommendation system we had elsewhere.

I guess to me it seemed wholly immature for Kafka-sourced data and it made me think that if we dumped into Hadoop and then operated on microbatches it would have been much easier.

About Scala vs Java vs python... We saw that python still wasn't the first-class language contrary to what they say I'm the docs and that to utilize any newer, fancier algorithms that would come up it would be beneficial to use Scala since that is the language most developed against (as of our use of spark). There are plenty of libraries to connect with Kafka in any language so Kafka didn't factor into the language decision at all.

I will leave out some details about managing the resources on a cluster as well as implementing CI/CD. That could be a whole blog post on it's own.

Hope this helps. It may be the best tool at the moment for what it offers, but it was painful to use and I hope someone makes something better with the knowledge gained from the usage of spark.


AWS - started this year with little knowledge about it, now I think I learnt it better Java - Use it every day at work, but started using more and more OOPs concept to write better code. Elixir - For a side project. Started this year with no knowledge about it, but currently have some good understanding of OTP.


* Complete API review and lots of examples for Scikit-Learn

* Machine Learning Algorithms from scratch (Random Forest, Gradient Boosted Trees, OLS, multi-layer perceptron). Thanks Jason Brownlee

* Spark API and Spark ML Lib API familiarity

* Still plugging away through Stanford CS229 Aiming towards a job change in mid 2019. Hopefully it works out.


In 2018 I got certified in Red Hat Enterprise Linux.

I am very satisfied. I have been using GNU/Linux for years but this was a chance to formalize my knowledge and more than else, have a bullet list of things to know from start to finish.

Given that the exam is hands-on, I had to really go through all of the requirements.


This year was quite fruitful. I started off dabbling a bit with basic Neural Networks. Nothing stuck in my mind until I did a mini project. In 2019 I plan to expand my knowledge to cover more algorithms and try some ML engineering tools such as MLFlow or Sagemaker. Next I learnt some Big Data technologies (Hadoop, Hive and Spark) due to job requirements. This is an ongoing process compared to Machine learning which was just a curiosity. Finally I learnt quite a bit of Ansible and little of Jenkins, once again for job requirement. While these are the major bits, I toyed around with few other tools such as OR-tools (operations research), Pandas, Matplotlib, Scrapy. On the whole, 2018 is a year I would like to replicate every year in terms of personal development.


Any resources to get into Spark?


Quite a few out there but the problem is that of fragmentation. There have been too many API changes making following online resources tricky. Having said that, I got great value out of these resources. Make sure you are working on the right version of Spark.

https://jaceklaskowski.gitbooks.io/mastering-apache-spark/ https://pages.databricks.com/definitive-guide-spark.html

Databricks cloud workspace (community edition) offers free interactive spark clusters where you can practice or develop your skills https://community.cloud.databricks.com/

If you want a bit of flexibility, you can launch your own cluster using flinktrock and a pair of free tier t2.micro EC2 instances https://github.com/nchammas/flintrock


Had a quick look, its really useful and both of the tutorials seem thorough. Hopefully it can get someone with zero Machine Learning experience up to speed. I noticed Scala but not Java. I read that Spark was written in Java, can I use Java instead of Scala? Since you seem quite far along, can you quickly explain how Spark is used in DeepLearning/Machine Learning? Is it just a virtual machine?


Typescript and Rust.

The focus has been on Typescript because i needed it, and I have to say with just JS I wouldn't have been able to develop large scale apps as I'm doing.

Rust has been more curiosity driven, rather than by need as with TS. I have to say it is quite a steep learning curve for me, and I stil struggle too often to replicate something I write in JS/TS with Rust, while improving performance.

The experience had me value a lot the nature of JS (single thread with event loop), because it makes it so easy to write code that feels multi threaded but retains the smaller complexity of single threaded code. I still have to properly learn how to achieve something similar in Rust.

That said, I'm loving Rust, especially on the education aspect it's giving me a lot of insight on computer science theory.


TypeScript. I still have a lot to learn, but I am confident it will pay massive dividends in the long run.


In terms of tech: react native, vue, ffmpeg. There's still lots to delve into on these items of course..!

In terms of more foundational things I tried to brush up on linear algebra. Lacking a formal/rigorous college course experience in linalg, I used LAFF from edX before MIT OCW/Prof. Strang's online lectures. I liked both. LAFF was pretty easy/fun, but ymmv, I knew matlab and python (you may see one or the other depending on what year archive you look at) and my undergrad was in a computer-unrelated engineering field (whose math curriculum focused far more on diffEQs which is why I never got deep into linalg much before)

Next year for fundamentals, I'll try to get a better base of statistics and probability. I'm quite weak in the latter.


Don't know that I'll have the bandwidth to keep experimenting with all of this next year, but here's what I picked up in rough chronological order: Pytorch, python 3, mypy, a few dozen machine learning papers, solidity, ocaml, react/typescript, coq (first few chapters of Software Foundations: Logical Foundations), TLA+ (first few chapters of Wayne's book), golang, truffle, elliptic curve pairings and zero-knowledge proofs, Intel's SGX.

The pairings and zero-knowledge proofs are my favorite. There will almost certainly be more golang, solidity, and machine-learning papers next year. There's a good chance there'll be some more react. There'll probably be some rust, which is what we're doing the SGX work in.


OCaml, mainly. Also picked up Flutter, and did a lot more C++.

My favorite tech in 2018 has been Parcel bundler, though.


Being a backend engineer for the longest time, I decided to learn how to do web facing projects since September so I can build ideas and show them to others.

I have been wanting to build a data/science + finance project for the longest time but couldn't pull it off earlier. I finally took a break from work and learned Python + Data Science libraries (Pandas) along with a web framework called Plotly Dash that allows for pretty cool stuff, all inside Python.

I have a dirty prototype running for cryptocurrencies and have been advised to convert this to a "venture", so I am working on that now :) that has been much harder than I expected.

http://earlyaccess.coinquanta.com/


I really dug into APL style languages. I learned Mathematica which really opened my mind to new ways of programming. I also learned a lot about how web pages actually render. I highly recommend everyone checks out Chrome's Advanced Paint Rendering performance panel.


APL & Mathematica are both pretty awesome. I wish I could use them enough to become truly proficient.

Do you use those at work?


I learned some ES6 basics in 2018 and began the slow process of refactoring older JS to use it. I also swapped jshint for eslint, and chutzpah for karma. Oh and upgraded Bootstrap from 3 to 4. Hoping to have the chance to replace requirejs with something newer in 2019.


Finally decided to learn VueJS, and used it to rewrite an internal application that was written in Knockout. The transition was almost seamless and enjoyable. VueJS rocks!

On the backend, got into gRPC, Websockets and Server Sent Events. Enjoying Java 11 and Go 1.11 with modules!


Emacs - I learned Vim last year and was forever changed by modal editing and using only the keyboard. I was interested in Emacs for a while but couldn't move past the shortcuts. That led to evil-mode and Doom Emacs, which I've since been using. These are some of my favorite new tools, and I take a lot of joy finding new thinks to optimize in my config files.

Bash - This is still a work in progress, but I've enjoyed the ease Bash provides for scripting, compared to doing the same thing in Node or Python.

Unix - In the last few months, I've started familiarizing myself with different commands, such as sed, grep and awk, to navigate around the command line and edit files. I'm hoping to get better in 2019.


Can you share a screencast of how you use doom Emacs. As a vim person, it looks very interesting but the docs are very basic.


I don't know of any screencasts that use Doom Emacs.

You can hop into the Doom Emacs discord server if you have questions.

Doom isnalso similar to Spacemacs, if you need a crash course in using Emacs with evil-mode.


Vue.js. This course on Udemy [0] really helped a lot.

[0] https://www.udemy.com/vuejs-2-the-complete-guide/learn/v4/co...


I picked up GraphQL this year. It constantly surprises me in the neat ways that it all fits together and makes delivering and fetching data easier. I'm kicking myself both for not learning it sooner and also for not having come up with it myself.


Learned modeling for Machine Learning. Took Andrew Ng's ML course then Coursera's Deep Learning specialization. I already had a data science background, doing NLP data collection, processing, and building annotation tools (for text, images, audio, and video) at my day job (Ruby on Rails mostly). I did have to do a lot of brushing up on long-neglected math skills (Khan Academy is amazing!) and continue to do so.

Also took a React course and have been building my own project with React and Redux.

Just spent this morning reading up on GraphQL... by the end of the day I expect I'll have finished reading the "Learn" pages and some documentation and have worked with it a bit.


I wasn't aware that Ruby was used in data science. As someone looking to learn Ruby for machine Learning, are there any good books or MOOCs?


Ruby is mostly for the web annotation application. It’s also quite good for text processing. But the modeling and such is still done in Python (our web collection is a mix of Python and Ruby). Sorry for the lack of clarity there.


* Returned to C++ after many year's hiatus, and taking my understanding to the next level.

* Worked through the Rust Book, and found that I really enjoy the language.

* Expanded my grasp of lisp (albeit emacs flavored) enough to do more than tweak my init.el. Made a toy Scrum board that reads and writes org files via Emacs web server. :)

* Dived deep into K8S using Python's API client at work and am proud of the result. Goodbye ad-hoc Docker deployment scripts!

That's about it. I'm always learning more about the tech I use on the work-a-day (Python, PHP, JS, bash, etc.) but I also like expanding my knowledge.

In 2019 I'll continue with Rust and C++, but also refresh and expand my uni experience with ML/Python.


I learned Golang, and am now looking to move into a job where I get to write more of it every day.

Have worked in and around software development for about a decade now, but have never been in a primarily development-focused role, yet.

Need to learn a lot more, as it turns out!


I spent some free time learning:

* Golang

* React

* MySQL

* ML.Net

My job is a .Net stack so I wanted to look around, and see what else was popular. I've used the MySQL in a previous job so this was mainly to brush up on that. Noticed machine learning was trendy and ML.Net allows me to play around with it in a language I already know(C#). Golang because it seemed popular. I enjoy Golang quite a bit for microservices, but I absolutely hate setting up/playing with GOPATH. React over Vue/Angular because why not?

Next year I intend to take a more focused approach to my professional learning. Project based and time boxed(3-4 months). Topics will be: ML, Embedded, Bioinformatics, and I'm thinking a project that utilizes cloud services.


I developed a google home app which just tells you inspiring quotes. Learning nodejs for that app. App here: https://assistant.google.com/services/a/uid/0000007c9354f92c... Write up about the development here: https://medium.com/coinmonks/developing-a-google-assistant-a...


stan, brms and rstanarm. Advanced statistical modeling. I'd highly recommend these tools to those doing supervised learning.


Far from "learned", but in the process of learning about Quantum Computing. As someone who has always been rather terrible at math and physics, I was really scared to approach this subject. I love computing/programming though, and I think that this is a field with massive potential, so I'm pushing myself way past my comfort zone and engaging my learning-mindset to maximum. If you're curious, I'm also documenting things I'm learning in a weekly newsletter: https://quantumcomputingweekly.com


This (my post at): https://www.reddit.com/r/MachineLearning/comments/a8cxad/n_b...

"For those interested, I have prepared a 'Technical Review' of subject areas of interest to me with an overall emphasis on natural language processing, machine learning, and graph signal processing (and a particular interest, where appropriate, on molecular genetics/genomics/biomedical subject areas). ..."


In the year 2018, the technologies I learned:

I learned the Neataptic neural network library and gained experience in text classification using an artificial neural network.

I learned the D3.js charting library.

I learned the express-session NPM package and gained the capability to implement user accounts and HTTP-based user sessions.

I learned SQLite for creating database subsystems for heavily constrained server environments such as the Orange Pi Zero single board computer.

I learned the Blender 3D modeling and animation utility and obtained the capability to create basic 3D models and animations.

I learned the Babylon.js 3D game development framework and obtained the ability to make 3D browser games.


And I also learned WebSockets for creating real-time web applications, such as multiplayer browser games.


Enterprise Java, Spring including Spring Boot, Maven, and Docker. A lot of these aren't sexy, and they sure aren't my favorites, but God damn it they get the job done and they've got some longevity.


Databases and Streaming Systems. Apache Beam/Cloud Dataflow. GCP Data Stack: BigQuery, Spanner, PubSub. Moar Apache Kafka.

LOTS of SQL. Writing sophisticated queries, building a mental model of what a DB will try to do, doing perf evaluation by looking at query plans, Analytic/Window functions.

DB optimizations. Especially BigQuery and Postgres.

Non-trivial Java 8.

Holidays are for Rust, advanced Streaming systems, and Docker/K8 :-)

Will also be looking to get deep into the Python AI/ML ecosystem in 2019. I'm fairly adept in Python and thankfully the ecosystem for Data Science/ML is quite mature.


ReasonML and ReasonReact.

To be frank I've used OCaml before and I use Haskell almost daily. So with this caveat, I'd like to say ReasonML and ReasonReact are generally easy to learn and make web apps in. The only bit of difficulty was when React wasn't enough for my use case and I had to drop down to raw DOM manipulation. That was quite a bit of trial and error and Obj.magic involved. I still don't fully understand how it maps DOM types (HTMLElement, etc) to OCaml types but I already feel productive enough that I want to use the tech again.


Python 3. After tinkering with a pretty important python script last year, I built a full blown web app using Bottle. Now it's a core tool that my team uses to do the core functions of the their job and I'm taking feature requests.

I've also been tinkering with C#/.net core and TypeScript at work as I try to align myself closer with the tech that the core engineering teams are using.

The other thing this year that I finally cracked was Swift. I don't know why, but until just recently I had really struggled with wrapping my head around it ¯\_(ツ)_/¯


- ASP.NET Core. It's mature enough now to be able to convert our (chatbot framework) solution from .NET Framework to .NET Core.

- Dabbled a bit with Docker and Kubernetes on Azure

- I've been using VS Code more and more

- Dialogflow for connecting a chatbot to Google Assistant

- Text to Speech and Speech to Text API's like Nuance, Acapela, Google Cloud Text to Speech and the Audio Object in HTML 5

- Azure Active Directory for authentication and role based access.

- Hugo, a static site generator

- Face recognition / emotion detection using Cognitive services in Azure

- I'm moving away from Angular to Vue.js and for Proof of Concepts I mostly use Vanilla JS


I discovered an interest in DevOps recently, so I worked on a few side projects using AWS. When it comes to languages or frameworks:

  - nodejs (express) coupled with ECS for deployments
  - vuejs for a small project
  - a tiny bit of Go
A few weeks ago, started a new project with Flutter and I have to say I am pretty convinced so far:

  - great tooling
  - easy to setup
  - close enough to react when it comes to principles
  - but a bit too verbose for my taste.
I also have my Arduino starter kit unopened on my desk.


I started using "Dear ImGui", the C++ "immediate mode" graphical user interface library. Which I like a lot. It's interesting because I'm one of the original Apple Mac beta developers from '83. I've been writing GUIs of every possible architecture thru my career. ImGui does a lot of things very well, in a very tight package; exposing capabilities usually only available in interpreted languages, the drudgery of UI construction is greatly diminished, while significantly simplifying the code.


Clojure and Python.

Clojure was a language that I tried a few years back and never really got into - parentheses everywhere, who needs those?

But its syntax hides its functional elegance and is a really pleasant language to work with - even Java becomes bearable!

As for Python, I never had the chance to with with. Built a video stream server from Pi Camera using flask which is nice , small and simple - a lot simpler than I thought.

Also at work had to apply Python for a project too and easy the right tool for the job when dealing with file system entries that is on the gigabytes.


I learned Ponylang, and I studied a lot of papers about Conflict-free Replicated Data Types (CRDTs). However, I haven't yet quite combined the two.

I'm looking forward to applying them more in 2019.


This year, it has been: R, Azure, Power BI, deep SQL Server, T-SQL, Machine Learning (+ Data Governance, but it is not a tech). I think next year, I'll go deeper with C# and start F#...


Flutter. It is so convenient to be able to create a good-looking app that run fluently on both iOS and Android, while having high quality widgets that you can customize very easily… The learning curve is quite easy to climb, and you can inspect how anything is made to create your own, specific widgets if you want.

The only weird thing at first is Dart, but it is so close to any common language that it never was a problem for me. And it is so good to use a language with both AOT compilation and a quick reload mechanism!


This was a Vue.js year for me.

I'm the past I've used angular and react, but when I was tasked with designing a project manager for artists I decided to try out Vue.

I was originally interested because it seemed easy to include in an existing PHP project without needing to pull in webpacker or extra tooling, while still giving me the best parts of React.

It was. I quickly fell in love with the syntax and was happy to see that the ecosystem was vibrant enough that I could find a good Vue drag and drop library (built on sortable.js) on github.


Plenty of stuff, but what stood out most is elixir along with phoenix


I learned how to program Adafruit Circuit Playground boards using Code.org's "Code Studio" (essentially Blockly/Scratch) for a middle school coding club I ran that year.

(Here's a demo of using code.org to have two dev boards signal each other to take turns cycling through their LEDs, complete with running into demo gremlins a few times - https://www.youtube.com/watch?v=SKFb9F4Xxb8 )


I finally take a time to study more of a deep learning (Tensorflow, Keras) and openCV. Up until now I was working mostly with text and tabular data so I was safe with random forests.


WebAssembly / WASM. With C/C++, Rust, Golang compilation targets. Still very much a WIP. But DOM / WebGL manipulation in non-JS environments is def worth pursuing ;)


Lua and Python, loving both. After years of Wordpress went back to static websites, loving Jekyll, trying Grav as well. Abandoned Laravel for a while, too busy doing other stuff.


Dialogflow and Node.js.

I needed them for my senior project[0] in college where I tried to make a lab assistant with the Google Home that would answer questions about the cafeteria menu and course information.

I learned a lot about webscraping which I had to do since I had no API to work with. I really wish I was more diligent in finishing it since prior really liked my demo.

[0]: https://github.com/fgandiya/virtual-jo


2018 had lot of ups and extreme downs. Here goes a list,

Basically with android background,

So, 1. Switched to ethical hacking for mobile and web. Learning Kali tools and more about hacking stuffs. ( Got into Google bugbounty Hall of fame ) 2. Docker and docker swarm 3. Product development and roadmap strategies via indiehackers podcast 4. Nodejs and MySQL to the core. 5. Bootstrapping ( building a product from scratch and being persistence in tough days )

A lot more about persistence in workplace + personal life.


A big year for me: Python+MyPy and Mongo on the backend, and Redux, RxJs, TypeScript on the front-end. Plus a huge assortment of new (to me) tools like Jira, Zeplin and VSCode. A deepening use of AWS, Docker, and Jenkins plus a little Kubernetes.

(You didn't ask but I think Mongo is particularly terrible, and Redux is particularly good. RxJs is probably the weirdest thing on the list, and the hardest to debug. Frankly I think I'd prefer async/await or generators.)


Ansible. Suddenly, deploying new Linux systems is easy!

A bit of a learning curve figuring out how to write playbooks for pip vs n vs apt-get, but all in all an outstanding time investment.


Ansible is worth the effort to learn it. The end results are declarative scripts that almost read like documentation, and it simply works.

I’ve even used it personally to automate the deployment of Wintendo machines :)


How to help an entrenched organization change direction, improve culture and engineering. Not what I expected to do this year, but it’s definitely the main event.


1. Xamarin Android because I wanted to develop a native Android app and I prefer Visual Studio

2. Xamarin Forms because my new job requires it

3. UX Design because I want to improve usability of my systems

4. Software Project Management because I want to move to management

These days I try to avoid learning new technologies. I focus mostly on improving what I already know. I only learn a technology when I want to use it and there will be a benefit for using it compared to what I am already know.


- A lil bit of Rust

- A good bit of C++

- A bunch of really neat proprietary things dealing with large scale systems

- A lot about automated refactoring and syntax manipulation (python's AST and type system)


Thank you for this <3

Technology wise this year was great.

- Learned a lot more about kubernetes (bare metal, gcloud and finally digital ocean, rancher 2.0)

- Improved my JS skills (react etc.), focused a lot more on architecture

- Improved my spring-boot skills and upgraded to Java 11

- founded a company with my partner and got a bit into after-effects (from the technical side, meaning distributed rendering, automation)

- Created a "home lab" setup and learned vmware ESXi

Missed machine learning will check that out next year :)

Happy Holidays <3


dApps! I did a lot of research on IPFS and was really excited to build my own dApp: Truth Ledger. It was also my first time using React, node.js, and npm. There are a lot of new tutorials out there if you're interested in getting started.

Truth Ledger uses React and Bootstrap for front-end and is "serverless" on IPFS. The user submits news article links which then have their meta-data uploaded to IPFS. If they're logged into MetaMask, it will record the IPFS hash of the data (as plaintext) to the Ethereum Testnet with an Ethereum contract.

I'd like to try out OrbitDB to make it more robust and skip some of the IPNS hash translation work. Eventually, with a series of smart contacts, my partner and I hope to expand the dApp to become a completely autonomous DAO (digital autonomous organization) for arbitrating truth. This would allow users to receive a truthiness score for the article link they submit.

Also had a lot of fun learning about wireless protocols and modulation. I followed some tutorials to build an antenna and intercept images from NOAA 15/18/19 weather satellites with a software-defined radio (SDR) dongle!


Also Unity and some WebGL! :D


After 5 years as a frontend developer I've branched out and now work in an advisory role on browser automation.

- Learned testcafe in great detail while writing a framework atop it

- Learned how to setup a CI pipeline in bamboo

- Became the team expert on jest/enzyme

It's funny as a developer I found writing tests to be my most dreaded part of the job, but now I'm focusing on it entirely it's a nice change.

Also on the side teaching myself Haskell but progress is slow


In 2018 I've started working on my DevOps skills and got into Jenkins pipelines and Ansible. I find it is a very powerful way to be able to deploy almost anything.

I also invested time in learning Symfony and React for a personal web project I've been developing. For the same reason, after working with Docker for multiple years, I finally started to use it with an orchestrator and I chose Docker Swarm for that.


I'm not a programmer/coder for my job but rather in IT/operations. So I work a lot with virtualization, networking, backups, storage, etc. Programming is a hobby though.

- C++ due to studying Computer Science in University. So far I'm finding it to be quite enjoyable. The last class was on dynamic variables and pointers before that. Next semester I'll have intermediate C++ next semester.

- I've found I really enjoy math also. In high school (2008-2012), I thought I was terrible at it and managed to only get pre-calc under my belt. Once again I'm in pre-calc but falling in love with it. Got an A in pre-calc 1 and have pre-calc 2 also next semester. Really excited for calculus.

- While I've been fairly intermediate at PowerShell for a couple years now (developed scripts to automate highly repetitive tasks), I'm now learning Bash and the syntax is quite interesting.

- Studying once again for the VMware Certified Advanced Professional Data Center Deployment certification exam. Have sat for it twice and failed, hopefully the third time is the charm.

- Favorite tech that I've messed with this year is probably Ansible.


LLVM. I've been learning by creating a toy programming language and compiler, implemented in Python with the llvmlite library.

https://github.com/syegulalp/Akilang

There's a couple of included demos like Conway's Game Of Life.

Sorry it's Windows only for now! I'll add Linux support once it's all not quite so in flux.


Computer vision / OpenCV. It’s so fun to get the computer to “understand” what it sees with dedicated GPIO style sensors. I can also apply it to another hobby, which is fun. There is tons of resources out there. I use PyImageSearch for generic tutorials and the udacity computer vision course for more theoretical bckground. Looking forward to doing some embedded deployments and using GPUs.


The separation of implementation and algorithm, and the utility of formal specs and proofs. This roughly translates to machine assisted proofs and model checking. Namely, ACL2 and TLA+.

I found these technologies and methods enormously beneficial to abstract thinking and producing good systems.

Leslie Lamport, creator of TLA+ (and LaTeX), put out a lot of content about this topic and I was lucky enough to stumble upon it.


I was working as a frontend developer and I learnt Vue 2 and Angular. Working with Angular is such a pleasure, it's a brilliant framework.


I took Andrew Ng's Deep Learning class on Coursera. I recommend it to pick up the principles, and it exposes you to Keras and Tensorflow.


* A script that will quantise all any type image at any level of given directory.(like tiny png but for all formats including Gif). This saved a lot of space on my builds

* Made AI for my game sineline using rule based expert systems

* A remote file sync engine and CD software which deploys projects to digital ocean and configures clusters and stuff

* Made a GANS script that generates fictional art work based on other samples


Mostly DSP stuff this past year and a bit of Verilog. Building SDRs which have a lot of capabilities to pre-process the data in big FPGAs.


The OpenGL graphics library and the GLSL language.

I have coded some shaders before, for some uni projects but I didn't realize the opportunities that this field can offer.. until this year. It's not just about 3D graphics; it's about making programs to be executed on the GPU in a very intuitive way.

I plan on using OpenGL shaders in a project in progress that I will share here on hn.


I spent a lot of time learning about stack unwinding, debug information, and profiling on common operating systems. I’m writing down some of it: http://nikhilism.com/post/2018/sampling-profiler-internals-i...


I started at a new company working on the data pipeline. So I picked up many things related to that. Java, Go, NLP, ElasticSearch, RabbitMQ/Kafka.

My most fun project of the year was learning NLP and implementing a tokenizer for phrase identifier in Arabic, which I don't speak, but the sentence structure is similar enough to english that I pulled it off.


I learned that the startup dream of being acquired is bittersweet. Sweet that I got rich, bitter that my baby is now being eviscerated by the acquiring company to make it less bleeding edge and more mainstream. There are worse things in life I guess. But its akin to watching your child turn to prostitution - you wanted so much more for them.


Docker and had a new found appreciation for it. Then went to doing a cluster set up for kubernetes (Funny story : Did not know how to stop kubernetes cluster :) Tried to stop the cluster by killing my images, kept respawning) and eventually settled on a simpler architecture with nginx on front and zk for coordination. It was a lot of fun :)


TPM. Knew nothing more than what the acronym stood for in August, and now actively supporting it on an embedded target. Going to be a one off, unlikely to use it again in the foreseeable future, but it was still an interesting journey.

TPM2.0 is so fundamentally different than TPM1.2. I learned 1.2 first, before realizing that 2.0 was going to be required.


I started to work with FreeBSD, BHyve and ZFS as a hobby. I making great use of VueJS for front end projects. I started learning Haskell and Go and I continue learning both language, specially Haskell that as steeper learning curve.

I still use and like Python (mostly with Django) and C on ESP32/AVR/STM32.

In 2019 I'm going to have a look to Elm 0.19.


Got a new job and built a mobile/web/desktop app with GraphQL, Apollo Client, TypeScript, React Native, Electron, Yarn Workspaces w/ Lerna.js for monorepo management.

Also started learning Elixir as part of Advent of Code 2018.

Been a blast and really enjoyed the challenge of building a monorepo that shared code between all the different platforms.


Judea Pearl Causal Diagrams and analysis techniques. This will become central to a lot of AI and data analysis over the next decade. I also brushed up on Monte Carlo modelling, being able to understand and think in terms of uncertainty and risk and to have a probabilistic turn of thought is also important going forward.


I have learned Jenkins and Mobx and am learning ML and Rust. I started on a compiler for a toy language in Rust and C/C++ and despite Rust being a bit tricky, I would feel vastly more confident about deploying something in Rust. Plus, the tools are a joy, whereas C++ tooling is well.. not.

Plus we got our first customers for a web app!


I'm a software dev, but I created a card game as a summer side project. In the process, I learned about different types of paper, textures (like linen texture), thickness (GSM - grams per square meter) and that playing cards usually have a layer in the middle that prevents the see-through (white, blue or black core).


Wait these two questions are so divergent for me.

Context: Got acquired by fb. So I learned Hack (PHP).

It was surprisingly not bad. It's really nice when someone who's an expert builds all the tooling for you. :)

My favorite tech is still React. I really enjoy typed Python, typed JS, and other formerly all dynamic languages that are gradually adopting type safety.


Well... I discovered Rust and Golang and I found out that I understand Rust and started to learn it. Thank you.


PKI. After many years of reluctantly fumbling around with OpenSSL as needed, I took the time to learn X.509 in more depth and to get comfortable with Go's "crypto/x509," which is a pleasure to work with. I'm now a lot more comfortable programming with TLS and certificates.


I learned and used RxSwift and rxjs a lot. I'm glad I got the chance. It was one of those things that broke my brain, like learning how quantum computing and its programming work last year.

I would recommend learning Rx if you are into having less state in your application. It's a fun way to think.


Well, I learned ruby (just because I had to use it at work) and Typescript. Typescript has been quite a great improvement for my web dev skills. I come from a C++ background and with Typescript I feel way more at home than with pure javascript.

I also learned React, React Native, and Angular 7.


I've learnt a ton of business skills - negotiations, legal, licensing, marketing, sales, accounting, business modelling,... It was a necessity as a sole founder of a startup. I've followed the super helpful Startup School from YC and another more intense incubator.


Finally stopped complaining about JavaScript and jumped in. I now "get it". I'm actually really enjoying TypeScript as a language and I think Node.js is a very good ecosystem for working quickly.

Feels good to no longer be scared of the world's most popular language.


Any recommendations on where to start?


Picked up some Docker and some Azure. Haven't applied them since. I'm hard-pressed to remember the last time I learned something new and actually applied it in the future. I'm getting pretty good at running projects where I know nothing about the stack.


Django. Built a website to help my kids school fundraise all year round using a simple task-reward model. Took ~1.5 Months start to finish. In Beta: https://www.task-a-thon.com/


Vaadin 10. It probably has highest efficiency for web app building. Suits me fine as I know Java.


I'm answering the first question. Maybe not as sexy as the rest of you. In my first year of professional work I have been learning Asp.net+Episerver for frontend, SSIS and sharpening my SQL for a migration project, Microsoft CRM, Swagger and Hangfire.


ROS: Robot Operating System.

I had been aware of it in the periphery, but never “dug in” till this year. This was the year I helped to lead an autonomy competition at work, where using ROS was a key component.

Finally have st least a first order approximation of its strengths and weaknesses.


I learned how to podcast. Editing, writing, narrating, interviewing, sound design, publishing, and marketing were all things I had to learn to accomplish this. Some were technical others weren't. Glad I got into it. It's been a dream come true.


- Developed bias detection apps using Google Machine Learning Natural Language Processing

- Launched services built with Python

- Learned more about computer science principles including data structures and algorithms to clean up/speed up code

- Built social media apps that leveraged REST APIs and RSS


Improved on my Golang understanding and managed to complete a few projects in it. Embraced Graphql and pushed my not-so-decent React know-how to the next limit. Started hosting my projects on Google Kubernetes Engine and learned a fair deal of it.


I had a client ask me to fix an ancient web app of theirs, written in VB.NET and barely touched since 2005/6. As a bonus it had no source control. So that was new (to me).

Back to Rails and PostgreSQL for me. Neither new nor exciting but it pays the bills.


Babel transforms/codemods/linters. Working on a growing team means needing to find ways to automatically enforce patterns and practices that genetic linters aren't really capable of on their own. It's like a superpower.


I changed my first job and got in a better company. I got stuck in JS frameworks and am still stuck. Typical question, searching everywhere what to learn vue.js or react.js? still not satisfied even though I have tried both.


This year I learned Elixir and Phoenix and made a stub server (like Mountebank): https://github.com/yawaramin/stubbex


- Go Lang

- Kafka

- NodeJs

- React. It was a bit of steep learning curve for me as I’m mainly a backender but once I got the essential concepts it was really awesome)

- mongo (quite like it with NodeJs but not with go Lang. For anyone going to start with mongo I recommend using Robo GUI client)


While I had dabbed with GraphQL before, all my projects have started to use it.

Similarly, I had already worked on weekend projects with the bitcoin blockchain, this year I picked up on Lightning Networks and I built a library on top of it.


I've learned TypeScript and introduced it at my company. It's awesome.


I wound up spending a fair amount of time re-learning Python (I had done almost no Python since about 2008), and working with sk-learn, numpy, pandas, etc.

I also started working with Docker and Kubernetes more extensively this year.


Asymmetric multiprocessing. We are using a SOC with Arm processors, DSP's, and FFT hardware. Comm issues inside the chip proved challenging and interesting. Classic DSP: FFT's, filtering, demodulation.


I'm primarily a frontend dev. This year I joined a new company and have been working a bit in Go and Python. Enjoying it so far, since I've always wanted to well-round myself with languages other than JS.


Power Query - Used for querying data in excel and Power BI, and also for a custom connector for Power BI.

OData - A standard for rest APIs.

Did some playing with .Net Core, but still not really satisfied that it's ready for serious prime time.


Can you elaborate on your shortcomings seen in Core? This may be very important to me.


It's not that .Net Core itself is unstable or anything, it's just that the ecosystem of packages and libraries is fairly immature, and there is still a lot of mismatches in support and dependencies.

For example, if you use core, you can't use entity framework 6, you have to use EF core, which has most features and if you are building a new app you'll probably find a way to do most things you want, but if you are porting something you might struggle. And that means you can't use anything that is built on EF 6 either. The dependacy chains seem to be muddled. One library will seem to be fine on core, but one of it's dependencies will only work on the full .net fx.

Another problem I hit was with doing some dynamic code generation. Roslyn is supported, but code dom isn't. That would be fine if I was starting from scratch, but I had a bunch of useful existing that that all depended on code dom that would have been a lot of extra effort if I couldn't reuse.

I would say if you are starting a new project and it's a fairly standard website you'll almost certainly be fine. But be ready for a lot of pain if you have any code to port.


I started blogging Learned about embedded systems Built some cli tools and got better at python. Taught a lot of people how to program and made a healthy impact By the way here’s my blog www.muhammadraza.me


I started learning & practicing TIG welding with an Everlast 210ext machine.

goal is to learn metalwork and machining skills to complement programming, electronics, embedded skills for prototyping gadgets.

(ps. it's been a slow process)


Blender and Substance Painter. Working in VR as a programmer it was fairly bad that I was unable to work on 3D assets since my old school 3d studio max skills waned off from the late 90's.


Mostly Haskell and a bit Machine Learning.

I got intrigued by it’s clean syntax and pure approach. Almost finished Haskell From First Prinicples. I like it a lot and I‘m looking forward to write a website in it.


Vue.js, CI/CD pipelines, aws[beanstalk|cloudfront|rds|acm], flask modules with blueprints, JWT. It was a fun year, started a freelancing business in parallel to my day job. busybusybusy


I learned a lot more about op amps, mosfets, SMD technology, bootloaders and PIC microcontrollers. These are fundamentals, so it's an investment with a high return value, I think.


Just curious. Is it just for your hobby or job?


Also for job.


This year I learned Redis, made me lower the latency of our api endpoints below 25ms and solve a lot of use cases where db was just too slow. I use it a lot now and love it!


Learnt React. I think I like the JavaScript ecosystem for now.


IAM with Keycloak, SAML and OIDC, TypeScript + all the stuff around it, Bluetooth and the security around it, GDPR and how to apply it (okay... not a technology),


I learned Unreal Engine for a pet project and Google App Engine. The later (app engine) I more or less was forced to use and had lots of problems with it.


Spent a pretty good deal of time leaning about cryptogrophy and security devices like Yubikey. I love technology but it is more of a hobby than anything.


Unfortunately Visual Basic because we still have it kicking around at my new job.

More fortunately, linq. It’s the thing I miss most when I’m not using the .net platform.


COBOL, z/OS, .NET. (Admittedly, I still have a lot left to learn about the first two). Rust and modern C++ in my free time for a personal project.


I switched jobs in February and have learned a lot about Kubernetes and Google Cloud.

On my own time I've been playing with Golang, Bigquery and Image Stacking.


TypeScript was by far my favourite!

Also dived into vuejs a little - it’s ok.

Finally NServiceBus is something I learned as part of my current .NET contract, it’s pretty decent.


I managed to pick up a bunch of Jenkins this year, learning about pipelines and manual input steps and groovy scripting and the Jenkins API.


Vue.js

Also trying out Rubymine w/ vim emulation to replace SpaceVim (which I found too heavy and unpredictable). First time not using (Neo)Vim in 8yrs.


Hardware hacking: Rowhammer, spectre, meltdown, cache eviction attacks and a bit about designing chips (see one of my submissions for that)


Finally spent some solid productive time deploying various AWS architectures for the new job. Ironically I was hired to be their GCP guy.


I am trying to learn Rust. It's difficult because I don't have a C/C++ background. But I want to do Systems programming.


Learnt a lot about redis while building an event delivery service. Also, it was an amazing experience building a streaming architecture.


Kotlin multiplatform, Kotlin/Native, Coroutines. Trying out to share more code over platforms in an experimental personal project.


Took Andrew Ng's Deep Learning course on Coursera. Good overview of the concepts, plus exposure to Keras and TensorFlow.


C++/17. Improved D3D 11, media foundation, DirectWrite, SIMD, embedded Linux. Learned GLES, .NET core. Refreshed Maple.


Do you recommend a good resource for learning the high level concepts of graphics programming? Just 2D is also good enough. Thanks


Enjoyable frontend development with ReasonML.


What tech did I invest the most time in 2018 that I will continue to in 2019? "Not knowing is most intimate."


I bought a new macbook. So, I learned how to use it. Coming from a linux background, I found the task a bit daunting.


i guess its really rare for me to get to know a technology really well.

Most of the time I dabble in stuff up to the point when I am fluent enough to solve problems for fun and profit. But its really rare that I can really say that I actually really learned a technology to great depth.

Not sure that I managed to do that this year.


React hooks have been an absolute game changer for me, though not sure if that counts as new tech.


Kotlin; using it for integration and user automation tests (so much less boiler plate)

AWS ecosystem

Hammer, Stihl saw, wiring a house


Started to move from front-end to full-stack with serverless AWS (SAM/Amplify)

Also, Wardley Maps and writing.


Kafka Connect, Athena, and a lot more SQL than I didn't know I had yet to learn. Fun stuff.


The joys of building parsers. Also the wonderful usefulness of hyperloglogs and cuckoo filters.


I learned CSS Grids, and I like it!


None, this year I decided to study leadership rather than plowing thought it with brute force.


Elasticsearch, Kafka, Kubernetes.


after trying js+nodejs in 2017 I turned to python+django in 2018 and never looked back. python's libraries on ML/Big-Data are unmatchtable and django is years ahead of the nodejs/express ecosystem in my opinion.


* AWS (Amazon Web Services) * Python for Data Science * Machine Learning with Python


This will be very unique, but I learned soldering and a small bit of electronics :)


Learnt Power Query + Data presentation (dashboard) skills in Excel which was fun.


- Kubernettes

- More about Python (and that I hate it more)

- SBT

- Akka HTTP

- Redshift (and optimization)

- Kafka and Kafka Streams (Dev and Ops for this)

- ADTs and more about implicits


Golang, and I haven't enjoyed programming this much in a long time!


Microsub, Micropub, Webmention, Microformats, WebSub, and ActivityPub.


Blockchain.

I am an android developer too. Pursuing Blockchain Nanodegree from Udacity.


Another question, looking forward, what do you plan to learn in 2019?


Various cryptocurrency related things like Solidity, ERC20 protocol.


I’ve learned golang and ethereum this year! It’s been a lot of fun.


Much more about ffmpeg and video/audio tech in general.


Python + Flask + MongoDB + Docker, a joy to develop websites


AWS Redshift, and some other services

Apache Spark and Flink

Docker

C on UNIX

Tried to learn Qt for mobile but could never get it going

Python

My favourite is C on UNIX


Learnt about redis and building an event delivery service.


firebase platform. I don't have any "at scale" experience with it, but it's now my default web deployment platform and I love it.


I've been looking for a good platform to start putting up some personal projects, why did you like firebase so much?


Because it's feature complete.


React hooks have been an absolute game changer for me.


Continued developing my skills in

- Haskell - Yesod - Nix - Postgres - SQL

Nothing new.


* Kubernetes * Angular 6 * Erlang * Elixir The first I picked up partly because I was interested in what it would take to containerize some of my existing apps (TL;DR conclusion: we lack libraries/frameworks to properly work in ephemeral environments, where the continued existence of a service at a node is not guaranteed). This is my favorite tech of the year because I realized there is so much that yet needs to be done on this front. Angular 6 I picked up because I am backend dev who uses Django as his web framework of choice, so I like the "batteries-included" approach of Ang6. 3 & 4 just because.


I learned XQuery (v3.1), which was a lot of fun!


from cocos2dx lua to Android/IOS Flutter

repick some java backend from long years ago

Cousrea's Andrew NG Machine Learning learned last for years...

wish to deeper in 2019


Node.JS! In order to build an API service.


ReactJS. ElasticSearch. Not disappointed.


OCaml, Elm, functional domain modeling


Rust Elixir Rust=>wasm Flutter Elm


k8s,Go lang, Prometheus, ebpf, Influxdb, Grafana,Boostrap 4, JS, vuejs(not completed yet).


Protocol buffers and gRPC

Wrote protoc plugins, etc


I have learned VueJS and ReactJS


Go and brushed up on c/c++!


got better at python got better at pandas Elasticsearch Kibana Docker some more JS


HTML WORDPRESS PHP Development


Ruby on Rails! So glad I did.


Keras and Tensorflow! :)


PDL2, Karel and URScript


aws and python’s boto3 for me with some elixir at home for fun


Xamarin, unfortunately.


Same, I learned Kotlin.


Docker and lots of AWS


Elixir and Typescript


Rust and Webassembly.


Solidity Cryptography


Azure. Terraform. Go.


It's Dart Lang!


closing out the year by going over the rust book..

it's a treat.


Kotlin. Amazing.


Node and React!


Haskell


Swift!


Solidity


Vue.js


- Go.

- Kubernetes.

- Hadoop/Spark.


Real World Embedded Systems. Built a dishwasher that cleans and sets your dinner table.

C++, Arduino, Electrical Engineering, and worked with a mechanical engineer on the design execution.

Here is the story, skip to the bottom if you want to see the youtube video-

Started this year working on a finance App, this one needed to be perfect. React Native, Laravel PHP mysql. The app is almost finished, and is worthy of a note in its own right. This 6 month project taught me more about programming than the last 9 years. In the process I started automating my Electrical Engineering job in python. Word got out, and I got head hunted by a stranger at work. They were looking for Embedded Systems, I applied, and was denied the position because I didn't have experience.

So I needed experience in Embedded Systems, and I've hated doing dishes. This was a problem that could teach me Embedded Systems and grow my Electrical Engineering skills(B.S. was in Chem engineering, M.S. Industrial Engineering). And it did.

Since there was nothing to copy from, I would spend 2-3 days researching EVERYTHING there was to know about resistors. Then when I knew which resistor I would need, I'd have to spend 2-3 days on capacitors. Since the HN thread might care about relevant details- Learned everything about stepper motors, ICs, I2Cs, controlling electricity, and voltage. Since I wanted to learn embedded systems, I didn't use delays, instead I used a state system with interrupts.

It took ~2 months start to finish.

Here is the video of the working prototype-

https://youtu.be/Ru_3sNCS-4c?t=457


I implore you to start a company if you're at all interested in working on this further. Seriously, please consider productizing it.

I would pay thousands of dollars for a polished version of this in my home, especially if it matched the style and decor of my dining room furniture.


People will make fun of us for this

No offense intended for this project personally, this is really cool. But what was that joke about how since most founders are young single males, most tech companies make products nobody really needs that are just designed to replace your Mom?


Thanks for the encouragement!

Making big decisions over the next 1 month as I have 3 major projects. My (already popular) website, this dishwasher, and my finance app.

Did mention this thread to my co-engineer, I'm pretty sure he is going to make this a reality.

The biggest question regarding the dishwasher is-

Do we go luxury and expensive since plumbing is already a multi thousand dollar requirement? Or, should we go commodity, and have users attach to their kitchen sink(portable dishwasher style)?

How much would you pay for the dishwasher, table, chairs, electrical and plumbing? (full service)

I'll have follow up details in ~1 month if you want to follow on Efficiency Is Everything.


Go luxury, your clients will want high quality and integration with other IoT systems, leaning to your company growing as a luxury brand. Go do-it-yourself and you'll be piddling with too many small dollar problems to get ahead.


And you can always go for the common man later. The same strategy Tesla is doing. It isn't too uncommon.


Going to second 'go luxury'. This is an expensive thing, and there's a weird effect where the bigger the dollar value your transaction the better you get treated. Moreover if it's complex it basically needs expert install if you don't want to be flooded with annoying people who simply aren't qualified to install your stuff.


Same.


This is so inspiring. It is also really amazing that you were able to do it in 2 months. How much time did you spend working on this? All the best!


Completely agree about the inspiration part. I can imagine the laughter between the two brothers as they watched early staged prototypes fail and water spewed out...very cool.


At most I'd spend ~2-3 hours a night, and we had build days on weekends.

The nice part was that it was nearly entirely on me. Didn't have to wait for other people, aside from some shipping.

Prototyping is definitely possible! Wish you the best as well!


Impressive. And I say that as an experienced embedded guy.


Thank you! Means a ton to me as I occasionally feel like a pretender(with my chem engineering degree).

I have tried applying to Embedded jobs but I cannot get past HR.

Guess I'm sticking with Electrical Engineering for a little longer.


I would send this video to people who work at Embedded focused companies you're interested in working at, especially team leads, find them on LinkedIn and message them, worse that happens is they ignore you, you lose absolutely nothing as a result though!

The best way to get past HR is to go around them and straight to the team lead if and when possible. I wouldn't have my current job as a Software Engineer if I had to go through HR first.

I would also definitely put this in your resume.


Funny, I was an ee major who wants to study more chemistry. At any rate, you obviously have the talent to do embedded software. Id advise bypassing HR whenever possible, as the other poster noted, as well as doing more deep dive self study projects. You'll get there in no time.


THaNks for the nice write-up."In the process I started automating my Electrical Engineering job in python" Care to explain more. I am an EE aswell and could some inspirations and ideas to Automate the boring stuff.


Thanks for the kind words, and I got a bunch of inspiration from Automate The Boring Stuff as well.

I'll run down the list of automation I did, hopefully to give you some ideas. Least complex, to complex.

>Kill program, launch program, and press OK. We have a program that crashes often. This quickly kills it(which otherwise requires clicking out of error messages). Then reopens and clicks OK which starts a long boot process.

>Copy, paste, delay, down. Repeat. A slow system could not handle mass copy paste. This was a solution.

>Open PDF file, sign document. Repeat for all docs in a folder. This was nice because after I checked the document in English, I could sign off in all the languages without having to resign manually.

>Showing every permutation of a part based on rules. And presenting it in common english rather than &A78&F48

>Screenshot approver page- This got a bit harder. Using keyboard shortcuts + looking for images to jump through an Application to a final screen. Then Screenshot each approver page. The next bullet is a much better solution

>Send email/open IM/or open Work Order. We have an excel file that has 1 approver, and I scrapped that into a sqlite database. With that I could create a sample email with tons of relevant information. Outlook had the email, subject, and body filled in. I would edit before sending. This is otherwise a 5-10 minute process. Doing this on 10 Work Orders per day was extremely time consuming. I made a production version that could select Email, Instant Message, or open Work Order.

>Everything about a part- Similar scraping, but using an online table instead of Excel. Put it in sqlite, I automated opening up drawings, automated finding different colors and their part numbers, opening up relevant work orders, etc...

Some notes on all of this- Sqlite might have been overkill, but these were 100 column and 5000+ row queries. I knew sql, so I used it.

Upgrading to Windows 10 killed my production app. I never got it fixed(I was a General Motors sacrifice + I was busy after the upgrade with my job)

These were the ones I'd use daily.

I would also write scripts for one-off tasks.

Hope that gives you some ideas!


This is a very nice niche use of the various ideas discussed in that book. Perhaps you could write your own book that could outline some of these techniques and sell it into a niche. Know a few Mechanical engineers who have a general aversion to anything programming and they would lap itup. Just a thought.


> Open PDF file, sign document. Repeat for all docs in a folder. This was nice because after I checked the document in English, I could sign off in all the languages without having to resign manually.

As a software engineer, I would want a check that the other documents are similar enough not to raise any red flags.

On the other hand, I also have no idea how you'd actually compare docs like that. Image diff algorithms are notoriously iffy.


Look into MinHash.


Props to you. And it works! Reminds me of some of Simone Giertz' work. It's an amazing feeling when your software has a real world effect.


kinda similar to a touchless car wash system. if you are looking for an analogy


I'd love to hear about the finance app!


Thank you for the interest, would love to share the idea. I am considering its about 6 months from launching.

I'll start with the story-

Back when I was 18 and working at a clothing store, I asked my boss if I could be paid in NASDAQs instead of USD. The answer- No. I don't particularly like government currency, because the government prints more every year. However, the market grows at ~7%/yr. I still dreamed of getting paid in Investment.

The App-

This app tokenizes an S&P500 index fund. This way you can trade something 'better' than USD with friends. I also have an end goal of being able to spend it on a debit card, similar to my Bitcoin debit card Shift.

The programming was intense as it was my first time writing a database that did anything interesting. Wrote in double entry book keeping, friends, users etc..

Previous experience in database was merely submitting insert queries.

I have a few serious business considerations before I show it to my audience on my website(Efficiency Is Everything). But either way, I have a fully functional database with a front end for Web, Android, and iOS. Worst case, I can use this app for my next project.

If you have any thoughts about this idea, I'd love to hear from you.


I have certain % of my USD salary get automatically invested in s&p index. Would getting paid in NSDQ be setting it to 100% ? also, Wouldn't the exchange rate of NSDQ constantly be fluctuating.


PHP WORDPRESS


Rust on Lambda, i use it for real time image resize for adtech bidding


Started with RL and hoping to get much more into it in 2019.


Nothing. I can't remember if I switched our servers completely over to HTTP/2 and H2O server software this year or last. Otherwise, I believe there is nothing new under the sun and it's all just a different way of doing the same thing in an attempt to avoid fundamental software engineering for the masses.

By sticking to the fundamentals, we need nothing from anyone, our software runs everywhere on everything, and it's smaller and faster--and simpler--than everything else.


None. There was no need to. Focus your energy on actually making more money and growing your business using tools you already know and are most comfortable with. Improving marketing and sales is more important than chasing after the next best tech stack.


How to improve marketing and sales?


For you


How to leverage DNS, HTML/CSS, CMS (Wordpress, Webflow), Adobe, free media to make thousands while traveling.

Next goal...how to leverage React, Redux, Node, Framer to make millions while traveling.

Favorite tech of 2018...honestly, all of it. Look at how far our species has come in just a few centuries, a few millennia. Imagine what we can do by 2100, 3018.


As a theater major who spent the last 8 years doing web development and web design I decided to start building augmented reality games using Unity, Vuforia and C#.

My best decision of 2018. I have never been happier with my day-to-day work.

The theatrics of it all take me back to college. The amount of creative freedom you have to build narratives, characters and effects is just so much fun.

Highly recommend for any one who was involved in theater.

You can see what I have been building here: https://codetocanvas.com/




Applications are open for YC Winter 2023

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

Search: