Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What do you want to learn in 2017?
357 points by reinhardt1053 on Dec 25, 2016 | hide | past | favorite | 494 comments

My goal for 2017 is to fully figure out Docker.

The majority of information out there, including tutorials and blog articles about others' successful deployments, comes in the form of very high-level overviews. Everything I've found is an introduction to getting a basic docker instance running. There is very little useful information out there as to how to run a proper multi-host cluster.

There is core Docker. Tack on docker-machine, docker-compose, Swarm, and the dozens of 3rd-party cluster management abstractions such as Rancher - and the intensity of the headache never stops growing.

It sounds wonderful, but there is so much to learn to be able to tackle a full production stack. It's one thing to successfully launch a working cluster after hours of manual tinkering. It's a separate beast altogether to fully automate setting up a new cluster by issuing a single command, taking into account consistent configuration of: secure networking, persistent volumes with backups, deployment of container configuration and VCS codebases (ex: nginx vhosts and your code itself), etc.

My goal is to set up an entire project in such a way that there is a single suite of automation that can deploy all environments: development VM, staging, and production.

Start slow, and work your way up. I started with docker early, so I can see how its ecosystem can seem intimidating now, with all the different "tools" and "workflows" to know about. So my recommendation would be to go bottom up. Start with just plain old docker - learn what containers are, what makes them work, then see how to manage containers in a single host with compose. Then move on to clustering with swarm, and then move on to other cluster-mgmnt projects like k8s. Try to make your containers more space-efficient by basing your images on Alpine. Make your host more robust by using CoreOS/Rancher, and so on. You won't need all the steps (or even in the order) I've listed here. But once you've started with a base, you'll have some idea as to where you want to proceed next.

If you need any help, you are free to ping me with any queries at the email in my profile. My authority on the subject: having written a book [1] and a Udemy course [2]

[1]: https://www.packtpub.com/virtualization-and-cloud/orchestrat... [2]: https://www.udemy.com/mastering-docker/

My advice for container orchestration: pick Kubernetes and don't look back (or at least give it a solid try). It falls at the right layer of abstraction and gets so much right. You get automatic container scaling (by CPU usage for now), container composability, service discovery, configuration and (kind of) secret management, portability, it's open source, and really a whole lot more. It's spearheaded by Google, RedHat, CoreOS, and other organizations, so it's fairly safe to say that it won't completely disappear a la Google reader if it's abandoned.

I recently migrated a whole microservice stack of a half dozen services to OpenID connect and Kubernetes in two weeks. This is with about a year of casual familiarity and playing with Kubernetes, and the same migration to OpenID connect would have easily taken me 5 or 6 weeks to do in Amazon ECS, which is what we currently use in production.

Not to mention I can run a cluster on my three computers at home at no extra charge beyond electricity and play around for free. (See, dear, I'm not a hoarder!)

Setting up a cluster is even simpler now with tools like kops and kubeadm. Or just get one provisioned for you by Google or Red Hat with GKE or OpenShift.

I would highly recommend at the very least making it one of the solutions you try.

As a self-taught programmer without much in the way of "official" pro experience (I have another job and program just to increase capabilities in that role), Docker was a revelation to me. I've programmed lots of tools at home, but getting anywhere in production is a nightmare of trying to wrangle managers and sysadmins into helping me translate my vision into a full-blown, deployed app within the business's stack. This year was the first time I was able to throw something together, Dockerize it, and have it deployed by a sysadmin with one or two minor code changes to work through our proxies. There are a lot of things that make me nervous about containers (persistence for example), but that was a game-changing experience for me and opened a whole new window of possibility.

This is also one of my goals for 2017. I've been using Docker on my project at work for about 8 months, but only in development and CI. I really want to start a push to begin testing usage in production, but have no idea where to begin. It's hard to find information that strings everything together. I feel comfortable with using it in development, but production seems to be an entire different beast.

Are you looking to automate infrastructure-as-code in there, as well? I've lost many a night to trying to get Rancher to play nice with Terraform, especially in high-availability mode. Luckily, it appears that the process has been vastly simplified in recent rancher-manager releases.

Oh great, you've just added Terraform[1] to my list of possible tie-in softwares. Thanks for that, you monster. /s

Yes, at least for development, setting up the entire environment must be a one-command execution. Every new developer to a team will obviously need to progressively learn the entire stack, but they should be up and running after a single VCS checkout and installation command.

I expect staging and production to be a perfect replica of the same environment developers use. As to how realistic it is to "launch the entire production cluster with a single command", with remote server provisioning, IP allocations, multiple hosts for various load-balanced pools, etc... I'll have to see when that time comes.

[1] https://www.terraform.io/

You're welcome ;)

Terraform is designed for something close to one-command execution. You're going to have to swap in variables (e.g. AWS access keys for a particular account, domain names, IP addresses, etc.), but Terraform is designed for that. I would advise looking into Terraform Modules[0], which encapsulate this kind of work nicely.

[0]: https://www.terraform.io/docs/modules/create.html

You might take a look at troposphere[1] too. I've used both extensively and each definitely has it's strengths. In some cases troposphere is a better fit.

[1] https://github.com/cloudtools/troposphere

Are there good ways to use Terraform internally / without online providers like AWS? I've just started using it with DigitalOcean, but I'd like to use it at home to do IAC with my whole setup. As far as I can tell the only good route for this is to throw OpenStack on bare metal, but I'm a newbie so I wonder if there's a better way.

You can write your own providers for Terraform[0] and bake whatever you want into its HCL syntax. In your case, this might not have significant returns over bootstrapping with Ansible/Chef/Puppet -- it all depends on what you want to do.

[0]: https://www.hashicorp.com/blog/terraform-custom-providers.ht...

Absolutely same, I really want to get into it. I already tried to do so, but for some reason I was out of luck finding good resources for learning. Can someone recommend some great resources for beginners? TBH, would like a free resource. :D

Beside that I want to get around HashiCorp tools, especially Vault for storing and Consul for service discovery.

I found this presentation helpful: 'A workshop on Linux containers: Rebuild Docker from Scratch' https://github.com/Fewbytes/rubber-docker

I'm going to learn it as well, a fair few jobs seems to note Docker as a requirement, or suggestion. I've never used containers before, so it should be fun.

Given your goals, you might be better off learning kubernetes instead; just treat docker as an implementation detail of that.

A bit meta, and will probably get lost, but I would strongly encourage anyone answering this question to also include: "and this is how I plan to do it"

Firstly, because if you don't have some kind of plan, there's no hope, so try and work out what that is now; second, you'll give people who already know that skill a way to advise you.

apropos-- "and this is now I plan to use it"

I want to be more socially active in 2017. I graduated in 2013 , got a dev job and since then been living in a virtual world w/o any interaction whatsoever with people outside of professional environment. In 2017, I want to break this trance, get to know the real world and probably get a girlfriend. :)

Good luck!

One of the better ways to do this is to to take the lead. Be a leader, not a follower. That can be interpreted multiple ways: organizing events, inviting people to things, asking what you would like, not what you "want", even taking dance lessons (something like Salsa), not caring about the outcome so much...

Some wisdom from a book from the Ask HN Books thread [1]

> - choose carefully what you give a f*ck about, but when you do, do it right

> - there will always be problems, deal with them and move on, it's your own responsibility.

> - the constant pursuit of a positive experience is in itself a negative experience, acceptance of a negative experience is a positive experience

Also, Systems Not Goals


[1] https://news.ycombinator.com/item?id=13243705

No need to be a leader. Just to be comfortable with yourself, being able to enjoy things that can be enjoyed socially is enough to attract other people. Salsa lessons are good advice. Also a wine tasting course! There you can follow others and be happy too.

I spend thousands of hours learning Japanese. If you not live in Japan, it is a totally waste of time. My wife is from Japan, why I learned the language. But because of still living in Germany, I regret learning it. I could learn so many other things.

Getting into some sort of sports is great for this, with obvious other benefits.

Tinder helps.

I'd like to learn Japanese. I'm hoping to travel there in June after I graduate from college, and I figure it would help if I could talk to people (or try, at least).

I'd also like to get better at Rust. I've written a few small projects in it at hackathons, but I've yet to get to the point where I'm comfortable writing in it. I'd like to get close to that.

I'm taking a class prior to graduation in abstract algebra, which I'm excited for. I'm hoping to be able to continue to learn in this after graduating, I've thought about continuing to take math classes at a college by Seattle after I start working.

I'm hoping to lean more about machine learning and how it can be applied to problems, a project that I'm hoping to do in advancement of this is to learn to predict cloud cover in some future interval based on the history of some things (maybe pressure and current cloud cover?)

Couple of quick pointers wrt Japanese. First, human languages take a long time to get good at. If we think that children learn faster than adults (which I think is not actually true, but it's a widely held belief), then it will take you 5 years to talk like a 5 year old, 10 years to talk like a 10 year old and 15-20 years to talk like an adult -- minimum. If you study very effectively, I think you can double this speed, but no more than that. Adult level proficiency is 15-20,000 word families. Ignore anything that tells you that you can be proficient with 2,000 words of vocabulary (even a 4 year old has more than that!)

Specific advice about Japanese: forget polite form and learn plain form from the beginning. If you are in dire need of sounding polite, just put "desu" at the end of every sentence. It will be grammatically incorrect, but nobody will fault you for it (it's what children often do). The mapping from plain form to polite form makes total sense. The opposite is not true and complex sentences require that you master plain form, so this will reduce your effort considerably.

Also, learn to read. This is especially true if you are coming to Japan. Hiragana and katakana will take you a few weeks. Try to learn at least 100-200 of the most common kanji as well. This will take you only a month or so and it will make your life dramatically easier.

Learn full sentences and ignore grammar for the most part. I got to reasonable conversational level simply by memorising the example sentences in Tae Kim's grammar guide: http://www.guidetojapanese.org/learn/grammar. Use spaced repetition to help speed it up.

Get the JLPT N5 and N4 vocabulary lists and memorise them. Even N3 is useful. These are words that map pretty much directly with English without a lot of nuance, so memorising them is efficient. Otherwise learn vocabulary in context by reading. I recommend manga because it will give you conversational Japanese. There is no description in comic books -- only conversation. They are perfect.

Finally, get a phrase book and memorise some set phrases -- just to help you a long. Keep in mind, though, that a lot of phrases are regional and wherever you are going, they might say things a bit differently. Generally speaking you should be fine if you stick with common phrases, though.

> If we think that children learn faster than adults (which I think is not actually true, but it's a widely held belief), Anecdotally, I saw my two children learn a foreign language in exactly the same place and over the same time as me. They learnt it to fluency in the same time I could barely communicate. Actually google 'scholarly articles on how children learn languages'. It's probably not just anecdotal.

I'm not suggesting that adults will always learn faster than children. You will no doubt notice that you did not spend your time the same way that your children did. Did you spend 24 hours a day thinking and struggling in that foreign language? There is a big difference to being exposed to language and concentrating on it. Restricting your self to thinking only the thoughts that your language enables you to think is difficult for an adult (well, impossible really).

I'm not entirely unaware of the literature in the area. I spent 5 years of my life teaching English as a foreign language. A large percentage of that time was spent doing research in language acquisition. As far as I am aware, ever since Chomsky the general consensus has been that there is no different mechanism for language acquisition in children than in adults. There are still some researchers who disagree, but that happens in every field and is healthy.

But, you aren't going to beat a child in learning a language unless you do some very specific things. That's because they spend 24 hours a day, 7 days a week learning language. Even when they get to school, their school work is primarily surrounding language activities until they get to be about 10 or so.

An adult's secret weapon is the ability to read. If you use that to direct your learning, then you can go quite quickly. Like I said, though, getting to an adult level of proficiency in less than 10 years is pretty difficult, but it's not impossible by any stretch of the imagination. The same level proficiency for a 10 year old child is very, very unusual.

For things like accent and getting tones correct all the time, that's a bit of a different story. Only about 2% of adult learners achieve native level proficiency in that kind of thing. But it's not something that will hold you back from normal communication. Event then, I'm aware of some specific language training you can do to help, but most people are not really interested in going that far.

Controlling for time availability and motivation seems both crucial to getting relevant results and damn near impossible to pull off. I'd be happy to CMV but it's not the kind of thing I'm willing to spend a day doing a deep-dive over.

1 thing that helps a lot is immersion. I couldn't justify learning a language till I lived in the country where it was spoken. I am doing this in japan now (moved here recently)

I lived in a country town where my wife was the only person I knew who spoke English. She got sick of talking to me pretty quickly. Total immersion.

It forces you in to a corner :D. It's kinda frustrating in a way. I'm not quite going to that extreme though, tokyo will allow me to "ease in to it".

> Otherwise learn vocabulary in context by reading.

I really enjoyed -- and benefited from -- "The Japanese Reader Collection". There's about 5 thin volumes available from Amazon. They're basically Japanese children's stories, written in Kanji with Furigana and lots of annotations. Every word and sentence is explained and translated to English.

I started off by simply reading the Furigana at normal reading speed, without caring about reading comprehension. This greatly helped with my kana reading. It especially helped me learn to cope with the lack of spaces in Japanese. Then I started to focus on the meaning. And now that I've memorized most the JLPT Level 5 Kanji, I'm starting to focus on recognizing them in the context of these stories.

I agree that plain form is important. Also your thinking on how children is learning. But, grammar is important. Memorising phrases only get me to be able to use phrases in a very specific situation. Once I am able to dissect a sentence and analyse how it's constructed, I am able to make similar form of sentences for a different purpose.

Hmm... I probably didn't explain this very well. You are correct that memorising phrases is not enough. That gets you a kind of grammar dictionary in your head, where you have a single example of that grammar. It will allow you to recognise the grammar, but not use it fluently.

After that, you need to be exposed to many, many different examples of that grammar so that you can understand the context in which it's used and the variety of shapes that it takes. The easiest way to do that is to read (and when I was "studying" Japanese I would read 2-3 hours a day).

In my experience, you need this exposure anyway, because memorising grammar rules allows you to construct sentences, but it does not allow you to understand how to use it properly in context. You have that awkward situation where you know you've said something correctly, but people are staring at you in confusion anyway -- because nobody says it that way.

I'm certainly not against learning grammar, if you enjoy it, but my experience has been that memorising a single exemplar and exposing yourself to countless examples (that you can understand) will bring you to fluency faster. There are an infinite number of ways to make grammatically correct sentences, but the idiomatically correct sentences is a very small subset of that (and actually disjoint since quite a lot of idiomatically correct language is not grammatically correct). Learning by example allows you to reduce the problem space dramatically.

Having said that, I know a lot of people really enjoy the process of learning languages by using grammar rules. If it works for you, then that's obviously the way to go!

You wouldn't happen to live in Atlanta, would you? (I know that's a long shot...)

Outside of work I program in Rust almost exclusively, and would love to hack on something with others.

I studied Japanese in high school, and I taught English in Hokkaido for a year, but I've since gotten rusty with my Japanese. I would love a study/accountability partner to pick it back up again.

4chan's /int/ has a daily thread with many ressources for learning Japanese. The basic recommendation is to get Anki and the Core 6k deck and the deck for the Dictionary of Japanese grammar. Grind those decks until you can read simple texts, then read as much as you can. The NHK for example provides news in simple Japanese http://www3.nhk.or.jp/news/easy/.

I am learning Japanese as well. Thanks for that NHK link that's a great resource, I love the furigana!

The Yamasa school there is a great little find. The prices are very reasonable and they do everything they can to make it foreigner friendly, ie providing housing with thick walls, simple leases and things.

Would recommend SILAC program which is mostly talking, even though I did the more formal class route, SILAC is probably more effective I think after learning more about how learning works

Yamasa was great when I was there 10+ years ago, but I don't know if that's still true after Declan went to create a school of his own.

I live in Tokyo. Will treat you to beer and yakitori if you make it.

Good luck with Japanese. People often describe it as one of the hardest languages in the world, and you can understand why: three written systems and grammar and vocabulary that changes based on whom you're speaking to and what it's about. But once you learn the rules (and there are many), there are few exceptions compared to English. So it's a lot of work on the front-end. Don't let that discourage you.

this guy has helped ME in so many of my language learning ventures. And he's relentlessly optimistic and encouraging.


He's learned Japanese (and like ten other languages), but his main value-add is general language learning advice.

Fluent Forever [0] and its corresponding book is also a great resource. Tons of overlap with Benny's stuff with the main addition of an upfront study of the phonetics of a language to get that barrier to learning out of the way.

[0] https://fluent-forever.com/

wrt Japanese, get comfortable with the difference between transitive and intransitive verbs. Verbs in English are often both (ambitransitive) and that makes you (or maybe it's just me) unaware of the difference. It took me more time than I care to specify to sort that out in my head!

And be confident! Japanese people are generally supportive and will appreciate your effort to use the language, no matter how successful it is.

Espanol para mi.

I want to write a real, hand-holding example for using GenStage and Elixir for a real tangible feature.

The official documentation sucks and does nothing to illustrate how to use it in a real setting. I've tried to understand what it does and how it works about once a month for the past four months but I still don't get it.


Hopefully I can understand it soon, and further cement my understanding by writing a real example for people to learn from. It sounds very powerful and useful but damned if I know how to use it lol.

Tuning GenStage/Flow pipeline processing[1] is a good, albeit brief, real-world example.

[1] http://teamon.eu/2016/tuning-elixir-genstage-flow-pipeline-p...

Confidence - never thought it would be an issue when you're leading your own company. I quit a great job on the east coast in 2012, went to grad school and moved to Silicon Valley after graduation (2014) to work on my startup. I've been learning and building constantly for the past 4 years. I would rather my work speak for me, so I don't draw any attention to what I'm doing or to myself until I have great results to report. I don't have a co-founder because the people I would ask are not financially independent enough to take the risk without a salary. I'd rather make some money and hire them with as much equity as they can handle.

My first project stalled because of poor architectural decisions that overlapped with not-yet-profitable product-market fit (and too much networking instead of product work) and a baby. I learned that lesson and turned into a hermit to rewrite it completely - the market is there, but not immediately lucrative. I'm also writing something that makes money first. I'm hammering day and night with nothing else in my life but my family and the product. My second project is written in GO, wonderfully cheap to run, and about to be ready for launch. Not sure how to turn on that swagger button yet.

Selling to customers is one thing, but how/when do I start selling to investors and employees when few people know me in SV because I've been hammering instead of networking for almost 2 years straight.

I was in the mindset of letting my work speak for me. Then I quickly learned why technologically-inferior products can often get more sales than other superior products in my field(b2b). Without accurate product presentation or inspiring sales effort, I can watch companies with clueless devs outbid my product with their all-powerful sales people.

My tip for selling a product you are perhaps too close to is to explain it to ordinary people.

I mean any random person, your Dad or Grandmother. Work out in layman's terms what problems your products solves, and how it is going to be a business.

Investors and even customers may not be at all interested in how GO is very quick at garbage collection...They want to know how your product will make them richer. Practice on laymen, practice a lot

Lol - welcome to the club! (the confidence) find yourself a good business coach. You may burn through a few but that's all part of it.

I can relate to your comments, I was there about 18 months ago. You would be surprised just how many people talk about confidence (or lack thereof). Also, look for a good mentoring group. Find people that are on the same path (family / business / financial).

If I can help, my email is in my profile.

I'm in a similar position. We should create a group for the subset of solo founders who are inclined toward product and not sales. It is a tough position to be in for sure (though I imagine the inverse has its own problems).

I'm a solo founder (of a slow growing 'lifestyle' business, not a fast growing startup) who is inclined towards product. The trick is to build a product that requires minimal sales effort.

My app costs 40€, and is geared towards individual users. You don't need a sales team to sell a 40€ app -- just a few emails to announce your product on the right mailing list, and a few cold emails to key influencers.

And a lot of patience, because unless you are very lucky, noone will buy version 1.0.

Good advice Jakob, thanks. Yeah my app is essentially a video language learning application, think very broadly of it as Youtube crossed with Duolingo. So it definitely isn't the kind of app that requires a traditional sales team. It's going to be all about influencers and language learning forums in the early days and building from there.

Sounds like you could use a friendly advisor or mentor - ping me if you want to talk.

So, what's the link?

I want to learn compiler development. My goal is to get enough of an understanding to be able to work on other people's compilers, such as SBCL.

I'd like to:

-Build a lisp that targets LLVM IR

-Build an HDL out of lisp that can be compiled into a simulation, as well as be compiled to a netlist for synthesis.

-Build a testbench toolkit out of that same lisp.

I have that planned for a long time. I've been making progress in recursive thinking and thus compilation and interpretation last year (thanks to a prolog book). I may attempt the LLVM thing in 2017. This or a bootstrapped forth, x86 64 or maybe AARCH64.

Do you have a blog ?

No blog. It just seems like something I can't quite get the hang of... the writing part that is. Maybe I'll add that to my 2017 list.

What is the name of that "prolog book" ?

It's Ivan Bratko's book. I think he only wrote one about prolog.

Thank you :)

I'm in that path, but instead of python I want a ML/Python/Relational language.

I know alot now, yet I'm struggling in some areas. For example, how effective surface a FFI for the language 9I'm with F# so is kind of easy, but how do that in swift/rust where reflection/dynamic calls are not easy?)

I'd love to see something like this as well, but leveraging the s-expr syntax currently being used for WebAssembly

Me too. I want to learn how to write a lisp, and I'll probably do it in Python.

Going back to the basics to solidify my foundation, one each quarter. Good Practice makes one a better engineer!

Digital Electronics using [1] Operating Systems using [2] Functional Data Structures using [3] Graphics Algorithms [4]

Any recommendations for these subjects sincerely appreciated. Thanks.

[1] https://www.amazon.com/Digital-Design-Computer-Architecture-... [2] https://www.amazon.com/Modern-Operating-Systems-Andrew-Tanen... [3] https://www.amazon.com/Purely-Functional-Structures-Chris-Ok... [4] https://www.amazon.com/Graphics-Visualization-Principles-Alg...

The more you practice, the more you can, the more you want to, the more you enjoy it, the less it tires you.” ― Robert A. Heinlein, The Cat Who Walks Through Walls

> Digital Electronics using [1] Operating Systems using ...

also, in case you are not aware of it, there is always the nand2tetris [http://www.nand2tetris.org/] thingy (currently running on coursera btw). the book is also pretty good imho.

thanks signa11 for the nand2tetris reminder. I have worked through that book and it is really awesome. Worth the time and effort for anyone inclined. I had posted my review on Amazon as well. [1]

I think I should enroll for the Coursera thingy and have at least 1 certificate in my kitty ;-)

[1] https://www.amazon.com/gp/customer-reviews/RZ4ME4QH22JML/ref...

> I have worked through that book and it is really awesome. Worth the time and effort for anyone inclined.

very cool :)

in case you want something more, i have _very_ fond memories of zvi-kohavi's book (switching and finite automata theory) as well. you might find useful/instructive.

Thanks for posting the link. I just signed up for the course. Always wanted to learn how simple logic gates end up become all purpose CPU's. I've always thought that someday we'll have same concepts in a cell which becomes a full turing machine and anyone can grow it.

Operating Systems basic are well covered in this course https://www.ops-class.org/

Thanks, this on a first skim, looks a very detailed course. And while we are at it, there is also this post on HN on the front page, which contains more resources for learning about OS. https://news.ycombinator.com/item?id=13258063

How to spend more time with my family, friends, work out, learn how to cook and less spend time plying with a new framework without a real business idea behind it.

Amen! Plus I want to finish all the books I bought this year.

About programming/work - I want to learn a little bit of Haskell and want to change my company, I also should make sure the code I write from now on should be Test Driven to some extend

> learn how to cook

The key is to learn to eat.

I love this.

This is me in a nutshell, that and get some early traction via hard labor on the marketing channels BEFORE code.

How to effectively market my consulting skills. I've been a web developer for over a decade now and I'm still not confident in my ability to bring in consistent work. The work comes, but I'd like to have more potential clients knocking.

From what I can tell, the best way to achieve that is by consistently offering to help others with my skills. So I'm making it a point in the coming year to make blogging a part of my work routine.

Are any of you facing the same dilemma? I'd love to hear your insights!

I have a hard time breaking into the consulting/freelancing world. I really like the idea of working part-time during off hours for extra cash, but it's proven to be quite difficult for me.

I think part of it is that I'm not loud enough, and I think it comes from being an introvert. I'm confident, I'm not shy, and I know I'm skilled enough to work on lots of stuff, but when it comes to marketing myself, networking, small talk with strangers, or anything else like that, I just have the hardest time.

It also doesn't help that a lot of opportunities to meet potential clients are found in non-professional settings, and those events are usually centered around the consumption of alcohol in the presence of loud music. I cannot stand loud music and I don't drink alcohol, so the difficulties for me just seem insurmountable.

Have you tried any of the online freelance market places, like toptal, upwork, peopleperhour..etc ?

I have, but with zero success. I've read awful things about Toptal and PeoplePerHour, so I didn't really go for them. Upwork seems to be filled with developers from various parts of Asia where the low cost of living allows them to bid way lower than what I would charge. The quality of work also seems pretty bad, from what I can tell (one-sentence descriptions, bad grammar, crazy low budgets, etc.).

I've seen advice like, "If you charge high instead of trying to compete with low bidders, you'll be taken seriously," but then there's the issue of having 0 clients/reviews/ratings, which make it hard to command a high rate.

I did have one client on Codementor.io! He didn't give me a review, though, even though we had three sessions and he seemed to be super happy with my help :/

What about packaging what you know and putting together an eBook or online course? A lot of freelancers and consultants are turning to that to make extra money and to build their reputation. Here's an example: https://courses.gorails.com/

Here are two pieces of advice from someone who works in sales and marketing:

1. If you're going to blog (which I think is a good idea) make sure you have an opinion that is strongly held and/or differs from conventional opinion. If you only write vanilla stuff, you'll only attract vanilla prospects, which usually end up being a poor fit or boring to work with/for.

2. Take every opportunity to teach what you know. This can be through blogging, commenting on other blog/forums, podcasting, screen recordings...whatever it takes to teach something for free. This establishes you as an expert, provides no-risk value to prospects and has no barrier to entry, so it's a great first step to building a relationship with possible customers.

One of my 2017 goals is to help others market themselves better. Im also a consultant (code and marketing). Feel free to get in touch if youd like some help from me. Email in profile.

Diving deeper into Rust. It strikes me how this language is exactly what I want in the future. From building Webapps/services (good libs/frameworks will arise) to codify algorithms as efficient as possible, and so on.

I have some libraries that I tend to rewrite for every new language I learn, but once I wrote something in Rust, its written once and for all, highly efficient and considerably safe, and I can use it from all other languages (node, elixir, ruby, ...).

And I have high hopes for webassembly to replace the brittle and overcomplicated frontend stuff in the next years, Rust should be the ideal candidate to write enterprisey stuff which must not fail.

I want to learn how to even start a side-project. I've been out of university since 2012 and have done basically nothing in my free time CS-related. Every time I start to even think about doing something, that "why are you working while on your free time" feeling comes up and I immediately do something else. Not sure if it means I really don't love programming and Computer Science after all (entirely possible) or if it means I'm just lazy. My goal is to find out one way or another.

Do you want to know the secret to starting projects for yourself? Don't buy or download any software just write it yourself.

I've got a huge movie collection on DVD. Rather then use Plex I made my own website to do the same thing. I have a lot of PDFs of books I want to read, made similar software to allow me to keep my position in my browser

I wanted to study for a HAM license general exam do I made this: http://ham.joshuakatz.me/exam

I've been looking for a thinkpad x220t so I made this go scrape cregslist for me: https://github.com/gravypod/BargeIn

(I live in N. NJ if anyone has one laying around)

There are thousands of examples where I've done this and it's very fun. It improves your abilities and toolings and in general makes your life on the computer much easier.

You don't have to be trendy just be useful to yourself and people will like it.

I can't overstate what a good advice this is. It's counterintuitive, but if you are just starting out, reinventing the wheel is the best practice you can get!

I too think the same seriously. This is not sarcasm right ?

No it isn't. I did the same when I was starting out. Rather, we all do, when we are starting to learn anything new, by following tutorials, where you basically reimplement what the author of the tutorial has.

This is one reason I installed ReactOS. They make their own framework for the OS, and they haven't made too many apps, so my idea is to add in the things I need for myself.

If you see them as something that will make you a "skilled programmer", or something that will be a nice addition to your resume, you probably won't get anywhere. Well, maybe you will become a "skilled programmer" and you may be able to add a line to your resume, but does that really matter? You're sacrificing your precious time which you could be spending to do something more meaningful, like spend time with family and friends, read books, experience new things in life. And in that case I would rather just spend time doing something more meaningful instead of trying to force yourself to find some side project to work on.

Most successful side projects come from people wanting to express themselves. If you don't have an idea that you want to build at the moment, don't force yourself, just enjoy life and only jump on it when you stumble upon an idea you really want to work on so much that you would even sacrifice your sleep time.

I have written a webapp in Go to sort photos, http://github.com/thewhitetulip/picsort

We had gone for a group outing, had million photos, less than 10 people in each photo, so didn't make sense to give the same photos to everyone, so wrote a basic app which would let me tag people and created eachone's folder and copied photo in it.

Starting a side project shouldn't be done by the goal of starting a side project, look around you, is there a manual process which you wish there would be a better way to do? sorting photos was one such way and I wrote an app for it. I did the same for a todo list manager, didn't have internet or any good todo list manager, so I wrote one and learned the Go language and the Vue.JS framework


I think the trick is to find something you're truly excited about. It's not work if you're enjoying the thing you're doing.

Perhaps the problem is you're wanting a side-project for the wrong reasons.

This. Aside from a hackathon or two, I have "completed" exactly one side project since graduating in 2013. There were numerous times I started projects and quickly gave them up, and it was simply because my goal was to have a side project, which is not really a goal at all.

This year, my girlfriend and I were using Google Sheets to track our expenses and compete to see who could spend less money. We eventually decided it'd be a way better experience if we had a dedicated app for it, so I worked relentlessly to build one and polish it up until I was pretty proud of it. I "released" it to a couple of online communities where I thought people might be interested, and I gained exactly 1 active user who I don't know in real life.

It's all good, though, because my girlfriend and I use it every day, so that's all that matters to me :D

But yeah, it can be difficult to "scratch an itch" if you feel that nothing needs scratching. If that's the case, I wouldn't really worry about it. If you don't need to build anything, then don't spend time building anything. It's nothing to feel bad about.

I have made one side project ever since 2013 (I am working from 2011 and made few failed project, but learnt a lot). In 2013, we had exactly same problem - tracking expenses and do personal budgeting. My wife was using spreadsheets and I created a software (using Python and Flask) and released a webapp. Later we realized that an app would be much more useful, so rewrote the backend (Java EE) and front-end(Objective C), but never released it. We have however 3 years worth of our own data (never did analysis or charts). Lately, we feel that since our app never made to App Store, it crashes every 7 days and I need to reinstall/use XCode to do this work (very painful). I plan to rewrite again in Scala (my latest favorite) and use React-Native to build the app. This time I would like to publish it

The thing about excitement is that it dies off. What motivated you a few days/weeks ago now is just not worth the effort or time that you'd rather invest doing something more worthwhile.

Relevant: "No, I have no side code projects to show you" https://www.linkedin.com/pulse/i-have-side-code-projects-sho...

I've recently started to complete side projects. I also graduated in 2012 so I was in a similar position a few months ago. What clicked for me was that I realized I didn't have to do anything heroic. At first I'd start a project and feel like I had to complete it in a couple of weeks, but then you're trying to spend all your free time on it and you tend to burn out quickly that way. Instead now I start a project, spend a few hours on it, and then just try to spend a little bit of time on it every day. Even just 20 minutes can make a huge difference. The key is to just do a little bit, steadily, over a long period of time. It really adds up. And doing that keeps you engaged with the project and wanting to spend time on it.

I've yet to graduate, but I find myself in the same position. I've got other non-CS related hobbies that I enjoy and so I don't really end up making any good side projects.

CS seems to have this feel around it where it has to be both your job and your passion. Recruiters want to see that you spend all your time outside of work/school programming, which makes it difficult for people like us who have other hobbies they like too. I wonder if it will ever change?

I don't know how's the market where you live, but are you sure the "programming outside work" is really a crucial component, or that you're not just sending your CV to "hip" startups? Because the market around here isn't that hot, yet it's not hard at all to find companies who don't really care about your personal life, they just want to know about your academic and professional lives.

i sometimes wonder whether it's worth it. One of my passions is Cs and i enjoy it very much. But It's not the only one and i fear that one day i wake up burned out, wondering how i have wasted my time learning technologies that have become totally useless. If you have a passion for CS, CS will likely consume youre time and dominate your life. I don't want this, i want to learn and have fun, but i think it's comparable to a drug that's fun a first but if you don't watch out dominates your life. Just image if you're in your 50s...does this really matter? Is starting a family a better (but harder!) idea? is work/learning CS really that rewarding? I don't know. I just really hope that i make the right decision and don't waste very valuable time.

I've gotten a lot of side projects done in my spare time. The trick is to make apps/programs for what you need. Not something that someone else wants it.

The struggle is real and I have been in the same position... Procrastinating and just being lazy or dropping online courses in the middle... I just found out about a site liveyourlegend.com and I will try to use the tools they provide to find out about my true passion... I knew that I wanted to be a computer engineer since I was 15... But now I feel very behind in matter of experience and knowledge... Maybe it has to do something with these feelings also it could be a good time to do some internal work and try to know ourselves more....

Growth hacking.

I'd like to learn how to sell a SaaS product[1] to businesses. I'd also like to explore content strategy and marketing. As a software developer joining a new 2-person startup, this is uncharted territory for me. Looking forward to the experience.

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

There's several good blogs out there but I really suggest reading Traction [0]. It's well organized and very practical/easy to put into action. I've bought copies for multiple people (including my wife who recently joined a startup doing marketing).

Also you used the word "sell". Don't forget that sales is different than marketing. If you plan on doing real sales the book Predictable Revenue is great (though designed for slightly larger teams than just 2).

Good luck! And don't forget, NPS tools are good for brick and mortar businesses too.

[0] http://tractionbook.com

Traction book seems interesting and is highly recommended by a lot of people. I plan to buy a copy and read it over the holidays.

I've got a few broad ideas for marketing - direct "cold-connecting" via LinkedIn, Angel; long term content strategies and Facebook/Bing ads.

Approaching brick and mortar businesses seems challening, especially since I don't have a background in sales. I have a feeling that online startups might be more approachable to begin with.

Adding Predictable Revenue to my next year's reading list. Thanks for the suggestion.

My favorite growth resources are Brian's essays at http://www.coelevate.com/

Thanks for the suggestion. I am also an admirer of Brian's writings. Other resources that I have started referring to are - frequenting Inbound.org and GrowthHackers.

Looks neat. It's also worth you looking at CES (Customer Experience Score). CES feeds into NPS... eg NPS is a result of lots of CES's, so to improve NPS you actually need to look at the core issue(s) that may be impacting it. You might be able to build CES into your offering as well.

Great idea. Adding it to our roadmap. The idea is that we will initially start off with in-app NPS, then explore other channels like email campaigns, SMS, Android and iOS SDKs.

Once we have the entire workflow for NPS worked out, we can look at customizable surveys and other survey types.

That sounds good. I think your challenge will be that organisations who offer online resources (client portals etc) or mobile apps probably also have CRMs, so could replicate your product pretty easily. That said, if you can feed your data straight into the 2 leading CRMs globally (salesforce and dynamics 365) you might be able to leverage them to your advantage.

Yes, integrations are the key. We are currently working on a Zapier integration since that is the easiest way to connect with multiple 3rd party APIs. Later on, we will add support for Salesforce and other CRMs.

I've grown up on the marketing side of the house, so if you want to exchange ideas and feedback feel free to reach out via james@craft.cx.

Starting a company involves so much marketing. SEO, SEM, etc. In the SEO domain, you need to pay a lot of attention to blogs and sites like Moz, rank tracking with services like getstat, make sure you aren't doing anything blackhat.

Vincent Dignan's stuff is quite jolly eg. https://www.youtube.com/watch?v=UYexcPB8WG0

1. Rust. As a DevOps engineer with a lot of experience and interest developing and operating distributed databases, I have so many ideas and Rust is perfect for them.

2. Everything about building and using FPGAs to their potential.

3. machine learning / deep neural networks. I feel we are getting to a point where they are becoming more practical for a business to invest in.

4. How to survive parenthood, with #3 due in May, my son is 3 and my daughter is 2. I've been making it up as I go, but wow is it a lot of work!

I'm going with rust as well as a follow on from currently getting myself reacquainted with lower level programing (c), building desktop apps and flex/bison. I "knew" c++ >10 years bet went to more productive environments to build apps. What I'm discovering now is that this productive is more from experience than from using higher level languages.

GIS. I've been using PostGIS a ton at work in the past year, and I've read _PostGIS In Action_[1], but I've really just scratched the surface. I want to play around with making my own projections.

[1] https://www.manning.com/books/postgis-in-action-second-editi...

Desktop GUI Gis programs like QGIS are pretty fun and there are tons of resources for learning the basics. You can download elevation raster data and highway vector data for the area around your city or somewhere more topographically interesting and start making maps or just some armchair exploring. Topography and hillshade data are gorgeous. And it's pretty easy to play around with projections, especially changing parameters on standard ones like Lambert.

Check out d3.js - building a GIS app myself on top of d3 and it's really powerful and runs in the browser. Will have to do the GIS calcs server side and just use d3 to render but that plays really well with PostGIS...

Another suggestion. Implement the R-tree.

I want to learn and play with LoRa. It's a 'IoT' technology that allows you to communicate over long distances using amateur (unlicensed) radio bands. Some of my friends have achieved distances of over 40km, and I'm curious to see what I can do with it.

So far I've been able to get a ping between two modules over a 10m range. Next up I'd like to transmit some useful data over longer distances (temperature for example), and then move on to devices that provide useful data (eg when a train passes a certain point to see if it's on time).

I have played with LoRa using Arduinos and an RPi that forwarded the transmissions to a web-service.

Going from the 'hello world' ping to data is an extremely easy step using the right library.

I'm sure it's easy, however right now the range part is where the blockage is: I get a SNR of -11 and RSSI of -107.. which results in just a few meters of transmission.

Using a Draguino Lora Shield + Hat combination, with the antenna which was in the box. Dunno what I'm doing wrong - what hardware and library did you use?

I have used the SX1272 module with the multiprotocol radio shield.



I'm coming 20-30 years late to the "biology is the future" mindset.

In my case, personal health has left me no choice.

Some poor medical advice and treatment, combined with my adversity to the whole topic -- yes, strong squeamishness combined with fear/observation that thinking about adverse events seemed (seems!) to instantiate them. That all has left me with a substantial health burden.

Meanwhile, in my experience the current U.S. health care system seems to be -- technological "miracles" aside -- making getting effective treatment ever more difficult.

So... As with everything else, it seems, you can't rely on expert consult -- even when you can afford it -- but rather have to learn and do -- or at lease prescribe and manage -- everything yourself.

So... biology. In other words, I need to belatedly read up on the owners manual. And find some hacks that help me.

As an aside, we're about to the point of molecular programming. So, maybe this will coincide with the current leading edge in technology, anyway.

Learn to have hobbies?

Right now my life consists of Commute->Work->commute->gym->sleep. I actually don't look forward to weekends since there is nothing to occupy my mind.

Pick some books to read or gaming handhelds to play during the commute?

Once you like something you'll look forward to continuing it in peace on the weekends.

I usually sleep while going to work, but yes i do read on the way back.

But still doesn't leave much to do on weekends. I usually end up doing some work and going to gym. Not having a car doesn't help. :(

How long is your daily commute? Perhaps you could change your routine a bit, and consider going to work on a bicycle. It could reduce the need to hit the gym every weekend, and seeing new sights and sounds on the way to work may open you up to new hobbies. :)

I've learned too much stuff in 2016. My goal for 2017 is to learn fewer things and actually understand what I've learned better.

Sounds like exposure vs actually learning something deeply.

However, both activities are very valuable. Without looking at many things, how else can we know what is worth spending time to learn or do well? I currently feel that alternating between the two is good for a while. Perhaps later in life I will know enough to confidently work on one thing for many years :)

I've also found the tree trunk of knowledge model to be very powerful (I believe I heard of it on waitbutwhy.com). The best learning and understanding comes when we build it up in a tree like fashion, where each leaf or branch is supported by a stronger, more fundamental conceptual branch. At the core is the trunk & roots, which are the deep, underlying principles supporting the entire tree of concepts/knowledge/ideas.

Without a strong trunk to build off of, concepts and bits of knowledge float alone, ungrounded, and can wither or rot more easily.


I sound a bit more negative than I really am. I think both kinds of learnings (deep and broad) are useful, you just need to make sure you adjust your brain and technique of actually assimilating things to the type of learning you are doing.

I've learned quite a few languages/libraries/frameworks/methodologies this past year and while I don't feel like I'm an expert (or even reasonably well versed) in either of these, this broad exposure to vastly different things has stretched my brain in positive ways.

I'd just like to switch that trend for next year.

No worries, your post didn't come off as negative. I just took it as an opportunity to ramble for a bit. Hope your 2017 goes well!

This might sound stupid, but do you ever feel like when you learn something new, you forget something old?

Heh, for me it's usually the opposite. Learning Ruby opened up C# for me in a big way.

Though I guess that's still pretty similar concepts. I don't know if my poor math and history retention is a result of me picking up knitting :p

Knitting is the work of the devil!

(I only say that because I cannot figure it out.)

What did you learn this year? :)

Docker, rkt, LCX/LDX, and Kubernetes. I use some of this stuff already but want to see whether I can set up a Heroku-like multi host cluster that will be more stable for running production projects than my current setup of running things on "bare" EC2 instances.

Swift and/or React Native. Mobile apps are good.

How to use some basic ML in practice. TensorFlow based NNs would be good.

How to use the ShopBot at my local hacker space. Also how to use the laser cutter to make cooler shit than I already do.

How to sew. I want to make some one-off items but really don't know much about sewing beyond the real basics.

How to use a bullwhip India Jones-style.


Bonus: welding, how to change brakes on a car, how to rebuild a carburetor, how to make kombucha, how to keep bees.

> how to change brakes on a car

This is really easy. In fact it's the easiest non-trivial repair there is on a car, because unlike other parts it's actually designed do be replaced as a wear part.

You'll need a jack, jack stands (pair), and a set of good socket wrenches (make sure you get 3/8 and 1/2 size - you'll need the larger sockets). A breaker bar and torque wrench are a nice bonus. You can get all of that at harbor freight for less than $100 (they do ship if you don't have one nearby). And considering the parts for a brake change cost around $100, but a shop charges closer to $600 it's a no-brainer financially.

I learned by checking out a chiltons repair manual from my local library and following the instructions. That works very well, and you can supplement by watching some youtube videos (not an option when I first started). (I would not do just youtube - you never know if they are skipping a step.)

Disk and drum brakes are all very similar within their type, so it hardly matters which model year chiltons book you get.

Like you, I'd also like to learn how to weld :) but the cost of the machine is too high to justify.


http://www.harborfreight.com/64-pc-14-in-38-in-12-in-drive-s... http://www.harborfreight.com/12-in-drive-18-in-breaker-bar-6... http://www.harborfreight.com/1-2-half-inch-drive-click-type-... http://www.harborfreight.com/3-ton-steel-jack-stands-61196.h... http://www.harborfreight.com/4-ton-hydraulic-bottle-jack-664...

Total: $95.95 (including coupons, the home page has the coupon codes)

On top of this if you buy break pads from Autozone ($25-40) they come with a life time warranty which includes wear. I have bought 1 pair of pads for every car I've owned and when I need to replace them I just take the old ones off, put them in the box and bring them to Autozone. They give me a brand new set of pads for free!!! After my initial investment my break changes take ~1-1.5 hours of time (including the trip to Autozone) and cost no money.

> How to sew.

Ask grandma! My mom taught me, but it was an even more common skill with the older generations. Or I guess there's always YouTube.

Does your maker space have a 4th axis for the laser? You can buy clear pint glasses and etch designs onto them. Combined with a custom etched coaster it makes an easy, inexpensive gift.

No fourth axis but a new laser may be coming next year so that'd be nice. I'll ask the powers that be about this feature.

Elixir/Phoenix -> I'm starting a greenfield project that I'll get to work on commercially that will be using Elixir/Phoenix for the API backend, so that will be a thrill there

Woodworking -> I'm going to have more free time this year so I want to get back into learning woodworking and actually building and finishing pieces. My first goal is to re-build my workbench and make it smaller so it takes up less room in the garage. After that, I have an idea on a stand that will go next to my couch.

Marketing -> I've created a software product that I'm selling and I want to figure out how to market better so that I can actually sell my product

My goal is to learn enough tech to build an end to end web based application. Planning to learn python, then html/css, MySQL and move onto learning deployment with AWS.... let's see how it goes !

There's many options for Python but check out CherryPy. If you can write a class, and a few methods that return text (or HTML) you can write a full blown website with CherryPy. It maps methods to URLs.


Just look at HelloWorld. As for templating, I personally use Mako:


Mako is used by Reddit. A few months back I was hired to code a back-end API and I chose Python and CherryPy for the stack, never done as much web dev as I have since. Got a fully working app. Can't recommend much for MySQL, except either SQLAlchemy or PonyORM.

You can make a simple website / web service in CherryPy, and yes RESTful services can be made as well. I say start with basics. Even if you don't use CherryPy in the end, you can start testing it right away with the hello world example. Just don't forget to pip install cherrypy

Thank you, will check them out !

For python, this is the book that I learned from: http://openbookproject.net/thinkcs/python/english3e/ and this is a good book that teaches web development: http://chimera.labs.oreilly.com/books/1234000000754/index.ht... Both are free.

For learning deployment, first download vagrant and try deploying on a vagrant box. Then, get a digital ocean account (here's some free server time: https://m.do.co/c/6dade5c581b8) and deploy on that. This guide is a good walkthrough: https://www.digitalocean.com/community/tutorials/how-to-set-...

If you do this, I recommend the thin slice all the way through to deployment. Get Hello World running locally and then deploy it. Get Hello World with some CSS styling running locally and then deploy it. Get Hello World with database augmentation running locally and then deploy it. What you will probably learn is that the way you deploy it is as much a part of the building process as the building itself...

With platforms like Heroku and Amazon's Elastic Beanstalk, I feel that deploying side projects is actually quite simple. Of course there will likely be some troubleshooting the first few times, but once you get your app running, deploying becomes trivial.

After watching La La Land, I finally settled on the instrument I'd dabbled with for years - piano. So I enrolled in a music theory course and I'm gonna learn to play the piano along with it.

Check this out:


Saw it posted by another HN user.

I'm no great pianist, but I've got a pretty decent grasp of music theory. Let me know if you come up with any questions.

Awesome — appreciate it.

Conversational Navajo. It's such an interesting language with an amazing history. I don't know any other languages right now besides English and a bit of Spanish, and I didn't grow up around any Navajo people. Despite a relatively small speaking population, there seems to be enough information online to learn at least enough to hold simple conversations.

I used to spend time learning languages as a hobby and have a hardcover copy of a book called "The Navajo Verb". I'd be happy to loan it to you.

I've moved to the Netherlands alone less than 6 months ago - so Dutch is high on the list of things that I want to learn (I can read it pretty well already, but I can't speak or write it very well). I'm using Duolingo, plus I have some Dutch friends already who help me out.

On top of that I want to learn industry game development techniques, including finally getting a solid grasp on C++. I've got a pretty strong grasp of systems engineering concepts and memory management since I'm very active in the Rust community but by the end of the year I want to be qualified to get a job in the games industry. Web development is not going to be my career, that's for certain. I'm reading through various maths-for-computer-scientists books, and I've got a bunch of highly-recommended game dev books (Game Engine Architecture, Real-time Rendering, looking at getting Real-time Collision Detection) in my library. I was an avid amateur mathematician in a past life, so although I'm rusty I'm getting back into my stride quite fast. If anyone has more tips on how to get your foot into the door in game development (engine/tools development, very specifically _not_ programming the game itself) I'd be extremely grateful.

I have game development in my list...looks like I should pair up with you.

If you want to contribute to anything, I'll be posting it on my GitHub at https://github.com/jFransham. I've got the start of a game in Rust on there at the moment, but it's nothing like production-ready (and there's no actual _game_ there yet, it's just testing code).

Thanks .... I will fork and follow you repo. But I need to learn Rust :)

Completely not tech related, but I want to learn making hand pulled noodles because they're so tasty.

I upvoted you because this is the first non programming comment I came across in this content. The question was generic, but incidentally almost all replies are related to programming.

If this question was posted on a forum for gardeners, most of whom are gardening fanatics, you'd find many of the plans involve gardening.

If you want to come visit China and learn here, get in touch. Incidentally we are working on a noodle-related startup!

* Distributed optimization. How efficiently solve a large optimization problem with N cores? We would like to the time to complete the optimization to be N times faster. Hogwild[0] and Hogwild++[1] are (basic) algorithms for this.

* Security. What's my threat model and how should I address it?



Those computer science fundamentals that let you ace all of the big company interviews so I can actually move somewhere else and feel confident in getting a job.

Pony! Seems like a very interesting language that doesn't get much exposure. Predictable GC, fine grained capabilities, actor model (concurrent by default), no deadlocks etc.


What: learn not to be so much caught up in thoughts about whatever happens or will happen - which in turn generates terrible anxiety and self-fulfilling prophecies - and to enjoy the present moment.

How: socialize, be more outgoing about who I am, get back into sports and reach back to friends I've been letting down, build new relationships, trust people again. Just keep on building, doing and enjoying things for what they are, not what they might fail to be.

Ship a game. Better understanding of setting up a reliable backend. Grow current business and start ranking better for more organic traffic. Vim. And really work through being able to quickly whip up a project with one of the major JS framework. Also, using a VPS such as DO and make it secure.

I went through this last year. After two false starts with something toward the leading edge, I settled on Emacs, Linux, and JavaScript. All of which I already 'knew' enough to get my face slapped. Photography got added without a formal application. Raspberry Pi sort of worked it's way in under Linux in the second half of the year. Since I haven't 'learned' any of them, I'll probably keep them around in 2017.

I'm also thinking about adding some 'classical' AI at the agent level of abstraction (not the lower DNN level). That probably means a bit of Common Lisp and an excuse for buying some used Norvig books. Like the formal topics from last year, this seems to be a domain that I bump into by trying to avoid it.

Just bought myself a piano, so I want to learn to play - to a beginner level - I'm aware that probably even after 5 years one is still essentially a "beginner", so it's a long road.

Great idea. It took me some 2 years to realize that piano wasn't my favourite way of making noise; on the other hand though it gave me a solid base on the theory of music (intervals, notation, cleffs etc) so that picking another instrument became much, much easier.

Take a look at http://www.lightnote.co/ (previously mentioned on HN)

Top priority: How to be Happy.

And also some Kubernetes, Docker in more detail, explore rkt and CoreOS, perhaps also get into details of linux kernel and finish a custom build from http://www.linuxfromscratch.org/ Get more depth into system security

If time permits, would love to learn more about Quantum Computing and explore if I can contribute in any way.

I don't know what your knowledge of quantum computing is, but I'm a complete beginner and I found this article [0] a very good read to begin with.

[0]: http://twistedoakstudios.com/blog/Post2644_grovers-quantum-s...

I want to move out of the cloud. My apps should run on my own server hardware. I feel this is more important than anything else right now. Even growth.

I'm just wondering, why is it more important than growth?

Many good reasons. Here are two.

1. Cloud companies' best interests are not aligned with mine on issues of ethics, snooping.

2. Control.


I did the two functional programming in Scala courses on Coursera. I'm currently going through Martin Odersky's book and am in the middle of my first small project. I'm just starting to turn the corner on feeling productive and actually understanding what the hell I'm doing. If I am half as productive in Scala as I am in my main language (JS) by the end of the year, I'll be quite happy.

If you picked up Scala, I'm going to assume you're interested in functional programming. In which case you should check out the book Functional Programming in Scala. Describes a bit more advanced functional programming ideas using Scala

Canning / pickling (IIRC there's a course on Instructables), salsa / Latin dance (there's a local café / bar near me that does regular salsa nights), basic woodworking (my wife and I are making a bookcase and coffee table early 2017), mobile development (started with Android via the Developing Android Apps course, continuing with some projects plus Vogella and other tutorials to fill in specific knowledge gaps), game design / development (a combination of reading books such as The Art of Game Design: A Book of Lenses, playing games and picking apart the design decisions, and working on game projects).

Time will tell how much of this I actually get to, but at the very least I'll be busy :)

Re Salsa/Latin dance.

The secret of learning Salsa (and other things) is that most people give up to early (after the 1st lesson, 2nd lesson). If you keep on going, the lessons that were hard for you in the beginning will become easy. If you keep going and get better and be (more) social and fun, the follower that you were intimidated to dance with will ask to dance with you... (the tipping point, an important milestone).

If you can take lessons with your wife and practice with your wife at home, that will make it easier. The hardest thing for single persons who start learning Salsa is that they don't have someone to regularly practice with. This is usually not a problem for the most dedicated beginners, as they block off their free time for learning salsa (multiple lessons a week all the way up to multiple lessons a day). The most social tend to progress the fastest, as everyone wants to be around someone who is fun and social. Salsa is a community, like anything else.

Addicted2Salsa has enough free lesson videos to keep you busy for a long time.


Start listening to Salsa music instead of other music, so you can pick up the '1' (or the '2') beat.

Buena suerte!

Robotics. I know some basic Arduino and would love to build a wheeled thing with a robot arm. Maybe with a camera in streaming. This is super wisful thinking though, if I can make the wheeled thing (with power electronics) I'll be happy.

+ learn the notes on the guitar neck

+ continue learning Clojure and build stuff with it

+ improve english speaking skills

+ read more, in english and native language

+ learn how to find clients outside of online freelance marketplaces

+ get away from ruby and rails

+ study more poker hands

+ learn to play chess better

+ learn about seo & marketing

+ bootstrapping a SASS product

+ make a few html5 games in clojurescript

With regards to chess, some thoughts:

* /r/chess is a great community.

* Chess.com is also good, particularly for their analysis tools and tactics puzzles in the app.

* Lichess is my favorite for actually playing games with other people.

* Queen's Gambit is clearly the most fun opening as white.

* Chess can be one of the most infuriating games in existence.

* "The Immortal Game: A History of Chess" is one of the best non-fiction books I've read in awhile.

As a fairly accomplished guitarist let be give you a piece of advice.

If you want to learn the notes instead of learning them across the 6 strings, concentrate on learning them up and down the same string.

Thanks for advice, I am using similar approach too. Because I also try to learn the positions too, so if you ask me what note is on sixth string/8th fret I have to know it's C and then if you ask me where are the other C notes, I need to know other string/fret pairs.

A mnemonic that helped me was learning relative notes in 'shapes' on the fretboard.

The octave is 2 strings higher & 2 frets higher. The perfect fifth is 1 string higher & 2 frets higher. (Same shape as one of the movements of the knight/horse piece in chess :-) ) The minor third is same string & 3 frets higher OR 1 string higher & 2 frets lower. The major third is 1 string higher & 1 fret lower.

On a normal tuned E-Bass this is valid for every string and every fret. On Guitar you have to add "1 fret higher" if your start point is on string 1-4 (E to G) and the target is on string 5-6 (B, e) because the interval between string 4 and 5 is different (major third instead of perfect fourth).

Good Luck in 2017! My goal is also "continue learning Clojure and build stuff with it"

To add to this, I'd probably learn the low E, then you can use octave patterns to find the notes on other strings easily.

See here: https://www.justinguitar.com/en/IM-116-NotesOnNeck.php


Specifically, I want to learn how to: 1. Build and deploy an F# web app with Suave as the web framework and Fable on the frontend. I'm not quite sure what to use as a backend (I know and use Postgres, but am open to using something else). 2. Test my code using FsCheck (based off of Haskell's QuickCheck) by defining properties/attributes. 3. Use computation expressions 4. Use and build type providers

I'm a professional Ruby on Rails developer by day, so I'm interested in F# because it's so very different than what I'm used to. Plus, it has a lot of shiny tools/toys that I want to play around with and learn.

I want to learn to weld, machine, and develop electronics

How to actually promote the stuff I do in a more extensive way than a single reddit thread.

There is one HN comment I come back to periodically for ideas - https://news.ycombinator.com/item?id=341288

I collected a list of videos from some business conferences I really like, you might get some ideas in here - https://www.findlectures.com/?q=marketing&p=1&type1=Conferen...

Thanks man! I'll check it in 2017!

Joking! I'm going to dive in it right away!

I want to learn to market something and make some money from one of my products.

I have been develioping web and mobile apps for about 6 years and now I want to create something for passive income.

3D modeling and animation. I know this is a field that takes years to master but I'd love to be able to design my own characters and objects for games and video composites.

Great goal! I highly recommend to check out Nevercenter Silo for modeling, and Maya or Houdini for animation(Maya is the most popular, and Houdini is the most awesome).

Elixir, and probably Phoenix. We have a large IO bound orchestration layer written in Scala that's been struggling with our traffic lately, and it's been a lot of work to optimise performance. Curious to see if Elixir can help us, and how.

I'm curious as well. What advantage do you think Elixir might provide over Scala?

With Scala you have to be very careful to explicitly avoid blocking operations. You also have to micromanage execution contexts across the various components (or services) of your app. I also like the sound of the resilience provided by the Erlang OTP and the "crash early" strategy.

What I don't like is the prospect of losing static typing. Nor do my co-workers. We need to spend some time doing R&D.

In 2017 I want to move my digital electronics skills from "patching together 30 years old ICs on a breadboard while playing with devkits" to "designing a simple board with modern components". I'm finally taking the plunge to SMD soldering, and the ultimate goal will be to make a fully functional JAMMA game board using a decent FPGA (a project I left incomplete 10 years ago, which has always bugged me).

I'd be interested to read a blog of your progress, especially if it includes mistakes you made and what you learnt from it.

I'll keep that in mind! (I'm sure there will be many mistakes on the road ^^')

In the meantime, my Twitter is in my profile, and I'm pretty sure I'll post a few snaps here and there :)

I'd like to learn to leverage collaboration and the societal politics of my field to help achieve bigger and more impactful projects. Being a loner is only going to get me so far, I've realized. (I'm a grad student.)

Good call.

You can be the best developer in the world, in a job that leaves you alone and lets you write code, and you might get several times as much done as another developer. Or you can spend a little less time writing code and have a few productive meetings and discussions, resulting in far more development than you could ever do alone. And you'll still get to write plenty of code.

Vim. I'm a notepad++ and PHPStorm user but I've gotten curious about the potential productivity gains afforded by the vim power user functions.

Came in to say this :) If you want to maybe pair up or some sort of structured learning on it, let me know. Could be cool to have a partner or some accountability. Although might be silly to do for learning an editor , ha.

I use vim and emacs both. From a power user standpoint emacs is better. From faster edits perspective vim is better. I am sure most will agree with this view.

Perhaps the best of both worlds -- spacemacs from the get-go?

Personally I don't like these Emacs distributions so I might recommend the way I did my journey: first vim for years, then emacs+evil. You'll learn the bare emacs basics on the side. Now with Vim 8 having vastly enhanced IPC capabilities, Emacs might not be at such an advantage anymore. The amount of Vim users is staggering, and they have such energy. It's a nice community overall. (Not that Emacsers would be any worse.)

Get good at building excellent front-ends.

I have been doing scalable back-end systems for years and can tackle interesting problems quickly. But, with UI work, I am like an infant with crayons. It takes too long to go from desire to product.

Here are my goals for 2017:

- 10 seconds Free-standing Handstand: Practice 6-7 days a week, for twenty minutes, following the GMB Handstand progressions.

- 10 seconds advanced tuck back-lever on the gymnastics rings: Practice 3-4x week, following FitnessFAQs progressions.

- Bulgarian split squats, 4x12 50kg: I'll go with a somewhat linear progression -- work from 3x8 up to 4x12. When I do 3 workouts using 4x12, I'll up the weight by 2-4kg and start a new cycle.

- Books I'll read:

  1. Gödel, Escher, Bach
  2. Black Swan
  3. The Society of Mind
  4. Code complete (I'll read a chapter every week)
- Finally learn about compilers/interpreters:

  1. Work through "Writing an interpreter in Go"
  2. Work through "Language Implementation Patterns"
  4. Work through "Engineering a Compiler book"
  5. Do the Kaleidoscope LLVM tutorial in OCaml
- Get good at algorithms to have a better chance at landing a job in one of the the big 4:

  1. Work through HackerRank's Cracking the Coding Interview track: I'll do 3 challenges every day until I am finished.
  2. Solve as many problems from LeetCode [1] as I can: I'll solve 2 problems every day.
  3. Work through the "Algorithm Design Manual book"
- Really learn Java. Java 8 looks interesting and I see there are a lot of job opportunities for Java devs.

Looks like a plan!

[1]: http://www.learn4master.com/interview-questions/leetcode/lee...

I think learning the handstand is a great idea. For me, handstands helped relieve a ton of shoulder pain I had from football + too many bench/bicep workouts. It also just looks super cool to boot and you can do them anywhere. Best of luck

Hahah, thanks!

I'm currently working on wall leg flutters. My balance improved a lot after I increase training frequency to 5-6 days a week (in comparison to 3x).

SICP might interest you.

I'm considering it in place of "Engineering a Compiler". I'm not sure I'd be able to handle both books in a single year, though :(

Damn this is just like mine.

Good luck!

Awesome! Good luck to you too.

The basics of what's required to become a quant for trading algorithm research. I already do a lot of linear algebra and calculus in my day job, and I love the challenge. I also have some experience with competitive predictive analysis during game AI competitions, which I turned out to have a knack for. I see Ito and related fields as the next level, and the money doesn't hurt either.

I want to learn to drive and get a UK driving licence.

I'd advise against the one week intensive courses - the muscle memory just takes time to build. A one hour lesson once a week is about right, with maybe an hour more practice per week if you can persuade a friend to take you out. Allow one week per your year of age is the rule of thumb. Good luck!

I think you can do more than one per week but I agree, it does take time to build the muscle memory.

I learned in my early 20's and I did it in 6 weeks. Get the theory part out of the way ASAP.

When you have got your license is the time to watch out for complacency. The road is full of egos driving Audis, don't get involved. Keep a safe gap and you will deal well with uncertainty

Mindfulness. JavaScript. How to have fun.

Not necessarily in that order.

You might struggle mixing mindfulness and Javascript. Or Javascript and fun.

EDIT: yhea fine this was a bit insensitive and mostly a joke sorry, I wont delete as proof of my mistake. Javascript it's not that bad.

Thought it was pretty funny and quite clearly a joke. No mistake was made imo.

There are only two types of programming languages: those people complain about, and those no one uses.

For what it's worth, I didn't find it insensitive.

To me it's funny because it is true. :) True for me.

Oth though Clojurescript is fun af.

It sure is.

Sometimes I think that but on the other hand it is quite an interesting puzzle making it do things it was never designed for.

There's no need for this kind of uncivil, clichéd comment. Please be charitable when people are laying out their goals.

No need for patronosing either.


Check out HeadSpace if you haven't already. It's a great way to get started with mindfulness practice.

Sales. I have a computer science degree and learned software development isn't for me so I'm switching to sales this year.

I'm looking forward to having both the technical skills and sales skills under my belt.

I've been in sales 15 years now. Check out these resources and they will give you a GREAT foundation:

Read the challenger sale: https://www.amazon.com/Challenger-Sale-Control-Customer-Conv...

and read SPIN selling: https://www.amazon.com/SPIN-Selling-Neil-Rackham/dp/00705111...

Listen to the advanced selling podcast: https://advancedsellingpodcast.com/


Thanks for the tips! I read and enjoyed SPIN Selling.

I love podcasts so I'll give that a listen.

Any time. The podcast is an excellent way to really understand what the sales profession is about.

I would love to learn how to focus in one damn area of CS, I have been doing some IT Security but it's sooo wide and there are sooo many things to learn and ace and I don't think I'm Linux /programming /DBA /Networking / robotics savvy at any of these... I'm just confused about how to direct my career... Oh and I'm 35 hehe

Winemaking. Not the WinOS emulation kind. But the cultivation and fermentation of fruit. With the eventual goal (beyond 2017) of living on a producing vineyard.

Formal study would be fine, perhaps at UC Davis' world class Viticulture and Oenology program. Or in Burgundy, France. But for now just apprenticing once a month at Wind Gap Wines in Sebastopol and seeing whence it leads

It seems like you are pretty serious about this. If you have not already, read "The Hills of Chianti: The Story of a Tuscan Winemaking Family".


I want to learn to draw mediocre comics. Eventually, I want to be able to draw tutorials like https://jvns.ca/strace-zine-v2.pdf or http://lawcomic.net/guide/?p=22

My plan is to keep a cadance of one doodle a day on my intuos tablet.

I'll start out with 100 days of drawing anything. After 100 days, I'll start trying to make them more tutorial-oriented. Then I'll start working on cartoons about Linux commands. I might also explicitly just imitate some of Julia Evans' stuff. I might do some maps of US revolutionary war battles or diagrams of contra dance steps. By the end of the year, I hope to have done at least a few illustrations for the Postgres docs.

How to balance family life and work

I have been reading alot about Machine Learning and I want to get into the practical application of it. So I will begin with learning Mathematics and then some Machine learning code for training a basic model for NLP or Facial Recognition :)

Any suggestions on how to go about learning Mathematics requires for Machine Learning is more than welcome

Assuming you know the basics of calculus: learn lots of linear algebra, lots of probability theory, mathematical statistics, and optimization.

But you don't have to wait to learn all the math to get going

He wants to get into the practical application of machine learning, not machine learning theory.

This is a common mistake people new to the field make. You can be very successful by learning how to use machine learning frameworks, and that doesn't require lots of probability theory, mathematical statistics, and optimization. Not that it hurts.

vayarajesh, start using Tensorflow, you'll reach the ability to reason about problems to which machine learning can be applied, and how to apply it, much more quickly than starting by starting at the root of the tree of knowledge. You can always learn as much math as you want in order to dig as deeply as you want, but first get a sense of what you're dealing with.

++ this. The branches of maths that are relevant to ML are all pretty extensive, and you can do a huge amount of applied ML and understand the underlying theory while understanding only a fairly small subset of (for e.g.) probability theory.

Starting by learning the maths will mean you learn a lot of stuff which isn't directly relevant. Not the worst thing that could happen, but you'll be a hell of a lot more directed (even if you want to learn the theory - and I would recommend learning at least some) if you pick a decent ML course and learn the maths you bump into as you go.

http://cs231n.github.io/ is one of the best general hands-on introductions I've found. The TF tutorials are pretty good too if you just want to try some things out, but I predict that once you've worked your way through the TF tuts you'll still not really understand what's going on and will feel a bit like you just learned the magic words that made the black box dance some particular dances.

As for notation - https://en.wikipedia.org/wiki/List_of_mathematical_symbols is really good for when you stumble on something unfamiliar.

Good luck.

@solipsism, I did try out the TensorFlow playground and they use lot of mathematical terms which I don't understand yet. Al though I like the idea of diving in and then learning the concepts which I come across to accomplish NLP or Facial Recognition. Thanks.

Mathematical terms like what? Perhaps they could just be explained to you. Starting at the root and working your way up is a long, long path. And unnecessary if your interest is primarily in applying ML.

I am just starting with Calculus. Currently I am only comfortable with linear algebra - rest all I am just starting to learn.

Do you recommend any good books or resources?

I've been using https://www.amazon.co.uk/gp/product/1137031204 to relearn some maths I'd forgotten. Pretty good so far.

I want to re-learn all the maths I have forgotten...

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