Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What new skills are you learning?
47 points by zuck9 on March 25, 2015 | hide | past | favorite | 114 comments

After interacting with a few lawyers I realized I am severely lacking in communication and people skills. Their emails were inviting but not over the top. My emails were either too curt or too verbose.

When talking to people face to face, I also work on adding value without rambling. Breathing more helps a lot.

And for fun I'm learning how to draw. Here is some of my work.

http://www.redbubble.com/people/kelukelu https://twitter.com/KeLuKeLuGames/status/553404094958694400/...

I really need to do this too. Programming and social skills are each others' enemies.

How are you learning to draw? Did you check out http://drawright.com ?

Yes! I heard draw right is a really good book. But learning how to draw is like learning how to program: too many resources can cause analysis paralysis. I really just need to shut up and draw

The first thing I did was draw the alphabet every day. For example, I would draw something that started with the letter a, then the letter b the next day, etc. It took me more than a month to finish but I saw a huge skill improvement from the later drawings.

How are you working on improving your written communication skills? I think that's something that I and others have lots of room for improvement in as well.

I have three short answers for you.

1. http://www.amazon.com/Writing-Well-30th-Anniversary-Nonficti...

2. Watch the video at the end of this link: http://fivethirtyeight.com/features/watch-me-write-this-arti... The take away is write, rewrite, rewrite, rewrite, and rewrite some more.

3. Pay attention to the people who write well in your life. When you read an email that feels well written try to figure out why you like it. And use those elements in your future writings.

For writing, I am almost done with this book and it is great:

Writing That Works; How to Communicate Effectively In Business by Roman and Raphaelson

Stresses clarity and writing how you talk.


I thought I knew a bit about woodworking because of my middle-school shop class. Turns out it's an extremely precise and technical activity, packed with lessons in engineering, measurement, statistics, and physics.

I'm really excited to mention it to you guys because I found learning woodworking is a great application of modern technology: I watch youtube videos on it at 2x, and can basically google any problem I encounter. I often say to my friends: watching youtube at 2x is my superpower.

Thank you. What equipment/materials do you need to get started?

Some wood, a hand saw, a hammer, sandpaper and a box of nails.

If you have a Rockler Hardware or the like in your area, visit it for ideas.

I grew up around woodworking because my grandfather was a professional furniture maker. I rediscovered it about 15 years ago by making jewelry boxes from tree branches and cut off bits of exotic woods. It can be anything from a fun, freeform hobby (making boxes), to an exercise in proper engineering (building a pole barn).

I've been slowly building an 8x12 shed as time permits. I really need to get it done by summer so I can move onto erecting a pole building from cut-down trees.

I've finally decided that regular expressions are not witchcraft and that I need to learn how to use them.

I spent an entire day trying to decipher how to replace spaces with tabs. Wish I had been better with regular expressions.

I hope this isn't flippant, but have you read the Perl regex man pages [0]? "Perl compatible" regexes are very common, and are explained _really_ well. Similarly, the Perl Cookbook (from O'Reilly) has a whole chapter on regular expressions -- even crazy ones like detecting US phone numbers (hard!) -- with explanations. That chapter is QUITE good, and I highly recommend it even you don't write Perl.

For your specific problem at hand, I assume you want to replace spaces with a tab character.

In Perl, you could do:

  # replace four spaces with a tab, globally
  $line =~ s/    /\t/g;
You can do this directly on the command line as well:

  perl -e 'while (<>) { $line = $_; $line =~ s/    /\t/g; print $line; }' < foo_spaces.py > foo_tabs.py
I have a gist [1] which has very slightly more comments, if you prefer. To paraphrase XKCD, there are now N+1 regex explanations, and I apologize that mine is comparatively worse than all of them. :)

0: http://perldoc.perl.org/perlre.html 1: https://gist.github.com/gknoy/94c382299c4543f2e863

Thanks for sharing the man page link. I am reading it now! :)

Have you looked at sed yet?

Sed was the problem. On Mac the syntax is slightly different and it doesn't take \t as tab. Those two curve balls took some extra research.

I didn't actually take the entire day. :)

Tip: You don't have to put the entire expression in one line

Any recommendations on learning them, e.g. tutorials?

Not helpful at all for learning, but I've found RegExper[1] is fantastic for visualizing existing expressions, particularly ones you haven't written but need to understand or edit.

[1] http://www.regexper.com/

This is also a great tool to play around with / construct regexes: http://regex101.com/

Symbolic logic. Years ago, I did a paper in logic which my professors initially took to be of publishable quality. They took a closer look and decided that I needed to clean it up a bit.

I've finished reviewing Aristotelian logic and am now going deep into modern logic. I don't know for sure, but I have a hunch that my paper will be of use to mathematicians.

Cool! I would love to read it! When you release it, could you email a copy to me? (email in profile)

I've been watching and trying out different flux-like patterns, aided in part by this repo: https://github.com/voronianski/flux-comparison

I've re-implemented the same project using vanilla flux, fluxxor, reflux, and baobab tree. I've come to liking baobab the best, with reflux in a close second.

The flux pattern isn't some total magic and itself hasn't been a revelation, but I've never been able to try out so many different rehashes of the same idea so quickly and that process has yielded a lot of interesting knowledge.

I'm considering using Baobab for a project and I'm curious if you've run into any major issues or red flags?

Distributed computing using Python

Techs: HBase, MLLib and Spark (Most of my time)

Spatial SDR Reconstruction with NuPIC (1 day a week)

Spanish using Duolingo (20 mins a day)

Game development with ImpactJS (only 1 day a week)

Hey could you provide some resources for learning Distributed Computing using Python. I was thinking of using Go but since I know python to a considerable extent, I wanna give Python a fighting chance for making distributed systems.

Sure thing -

I'm not one for reading books I think there's more value in just building stuff:

Check out Prediction.IO - http://prediction.io/ it's an out of the box machine learning server, it uses hbase, but hbase in this configuration is sitting on top of the local filesystem, not HDFS -- so the first task I assigned myself was to learn how to setup hadoop, and then configure HBase to store data in HDFS.

Once I have that, I'm going to use PySpark to use spark to query the data. (Thats where the python comes in)

Another cool project (not related to the tech stack above) is Pyro https://pypi.python.org/pypi/Pyro4 ... this consumed a whole weekend of mine a few weeks back, building a small distributed search engine for querying compressed DNA sequences ... think a parallel boyer-moore. As a learning exercise try doing that, it's great fun!

Haskell, and functional programming at the same time. In school I wasn't properly introduced to it (learned some Lisp on paper, during half a semester, and that's it). It's quite the steep road so far, especially since I can only work on it during spare bits of time.

Me too. I learned the basics at uni in 2000. Had a few plays since but I really need to get stuck in - I want to get to the point where I understand the fancy stuff like Lenses. Beyond the cool stuff I strongly believe it can be really practical and I would like to convince my employer (or any employer!) to seriously consider it for a production system.

You can't hire Haskell programmers by the 40ft container-load like you can with Java or C#. You won't need as many Haskell programmers though. And they should get paid accordingly :-)

Haskell has a duality: It is a nice "toy". I mean that in a good way - fun to play with, enjoyable to code. But also I can see it being a serious contender for writing Enterprise systems where you need clarity, accuracy and readability of business rules.

Haskell functions can extend Enterprise systems in an elegant and powerful way, by adding on rules that are safe because they have no side effects. They can only affect things indirectly through their returned results.

This means the basic Enterprise system you ship can be simpler and then you can customize it more easily and with more confidence. I envisage smart non-programmers can probably write the custom business rules as tight Haskell scripts.

TL;DR I want to cut the cruft with Haskell!

I'm also looking into learning Haskell and I know a very little about functional programming (I'm still in university but I think no one will ever introduce me to that), any advice on where to start?

I've been learning Haskell for the last year and a half, though I've been working with functionally inspired languages for 8 years. Haskell is wonderful, easily the most fun I've had learning a language in 20 years.

I'd advise not getting distracted by monads and other glamorous parts of the language. Monads are pretty abstract, and they won't likely make much sense until you've written enough Haskell to feel the pain-points they address.

I've learned a lot by reading blog posts from these people:

* Aditya Bhargava: http://adit.io

* Gabriel Gonzalez: http://www.haskellforall.com/

* Joseph Abrahamson: http://jspha.com/

* kqr (I don't know this person's full name. Avatar not withstanding, I'm pretty sure kqr isn't David Bowie): https://github.com/kqr/gists

* Edward Kmett: https://www.fpcomplete.com/user/edwardk

Most of all, I advise not getting discouraged. Haskell has a lot of concepts that seem intimidating. Many times I've spent days trying to figure out what the hell a contravariant functor is, only to get really discouraged. At times I've doubted my own abilities and whether learning the language was worth it. I stuck to it, and a year and a half later I'm pretty damn capable with Haskell (and I know what a contravariant functor is!) and I'm having the time of my life learning more about it.

Thank you, I have seen a lot of interesting examples over there, I can't wait to understand more about them!

Here's a free e-book on Haskell that I used in university: www.learnyouahaskell.com

You can also support the author by purchasing a copy!

Edit: I'm new and do not know how to make that into a link. Sorry about that.

It looks well structured and I found a lot of positive reviews about it, I will give it a try! Thanks :)

Electronics. I got started with a spare Raspberry Pi a friend gave me. I got hooked and test as much things I can get my hands on. I now have a BeagleBone Black, a few Arduinos on the way and lots of sensors.

There are a lot of interesting small projets you can do with small electronics.

I've been (very slowly) working my way through "Art of Electronics" for the last few years, and I highly recommend it for the next level of depth below Arduino et. al.

Passively learning survivalist skills by watching Survivorman.

If that wasn't completely tongue-in-cheek, check out Lars Monsen[0] on NRK.no if possible from your country. He's the real deal. Now to look up Survivorman...


[0] https://en.wikipedia.org/wiki/Lars_Monsen

EDIT: DRM-free version of the great '365 Nordkalotten' available via Bittorrent here:


Or the location-aware Norwegian TV site NRK might be good for you here:


How to lift things up and put them down.

Everyone should learn to lift weights. It'll improve physique, health, and quality of life as you grow older.

Likewise. I'm working on getting much stronger.

I'm working my way through the matasano crypto challenges and learning a lot. http://cryptopals.com/ Also learning Racket through HtDP http://www.ccs.neu.edu/home/matthias/HtDP2e I had started with Swift, but… not loving it. There's so much, it's overwhelming sometimes just deciding what to go after.


I have some ambitious goals, including learning management skills and data science, and I thought it wise to bootstrap this by learning about learning.

I'm going through Coursera for this: https://www.coursera.org/learn/learning-how-to-learn/outline.

is the course any good? I've considered it but yet to pull the trigger

VHDL. I'm planning on making an FPV quadcopter using an FPGA + using analog signal transmission on a personal project.

Very cool. What tooling are you using? I've found the world of FPGA tools to be bewildering to the point that I've abandoned my projects and my Nexys3 languishes in a drawer.

It's still in the idea stages, why my original idea of sending an FPGA doing active video processing would be computationally and energy expensive, where transmitting a low-latency signal to a processing unit on the ground wouldn't cost an arm and a leg. I'm looking at a ZYNQ-7000 board because the free eBook by Xilinx looked very approachable to a newbie at hardware design. If optimized properly, I'd hope to be able to integrate the quadcopter controls onto a better fpga and be a single unit. It's gonna be an all-summer project.

I would suggest using myhdl (www.myhdl.org), and then plugging the verilog/vhdl it generates into your vendor's tools.

Thank you! I'm looking on the internet for help/books also.

Very neat, thanks.

For middle aged person, how about "what new skills are you growing?"

One of the dilemma in learning new skills is there are so many new skills out there and how do you know that spending effort in learning the new skills are more worthwhile than strengthen your old skills? Every person is unique, and depending on popular votes from outside is risky ...

On the other hand, focus on the problem you are trying to attack and work from your existing skills and only learn new skills when it become apparent that old skills are not sufficient, at which point which new skills to learn will no longer be a question.

More often, I find myself developing new skills that are grown from my old ones. In fact, look around, all existing skills were grown from somewhere.

TL;DR Focus on the problem, not the skills.

One belief I hold is that I can become proficient in any skill if I put the hours in. While maybe not 100% true in every case, it certainly helps more to think this way than to not.

I first became really convinced of this idea while studying Japanese using Anki. I've been doing that for over two years now, and have reached a comfortable level of comprehension. No plans to stop soon.

I've also started learning the violin recently. It's nice to be able to look at my other skills and realize that if I just put in the hours, I can become as good in this, even though I'm terrible right now.

I'm learning a handful of construction skills while building my own tiny home on wheels. I think everyone should have the basic skills to fix things around their home and or do simple renovations. I installed the last window last week :). Also diving into Python with my girlfriend. Images of the build. https://plus.google.com/photos/117374232859136026472/albums/...

I'm trying to decide whether I want my future to steer toward mobile or web development. I've completed the Codecademy JS course but feel like I need to do certain parts of it to really cement my knowledge of it. I'm also trying to build some basic apps in Xamarin.iOS since C# is my bread and butter. I feel like I might struggle with this for some time :/

Outside of development, I'm studying Farsi, getting back into running, and hopefully renew my private pilot currency. Oh, and Arduino :)

For JS, have you seen this? http://eloquentjavascript.net/

I haven't, but I'm going to check this out - thank you so much!

Interesting! May I ask how come you've chosen to study Farsi? I would've emailed you but I didn't see any emails on your profile.

That's weird that it's not being shown, I swear my email is there :) My wife is Persian so I want to be able to speak with her family! It never hurts to branch out and be multi-lingual too; I can speak a bit of Spanish and Polish and I'm always looking to expand my horizons as well.

Expect an email from me!

You have to add your email to the profile field, not just the email field. The email field is private and is used by HN for account management rather than displayed publicly for others to contact you.

Ok, wasn't aware of that. Thanks for letting me know!

"Mathematical thinking", on this course: https://www.coursera.org/course/maththink

VR Development (Unreal Engine and Unity) and 3D modeling (Blender)

Fellow game developer, hi!

After becoming annoyed with how hampered I was with acquiring 3D art assets, I too am trying to get into 3D modelling with 3DS Max.

I think I've got the hang of it, found out about edge loops yesterday, and I've created a small 'office room' for my game!

I'm slowly making my way through the Microcorruption puzzles. The first three seemed easy, but I feel completely stuck on the next ones. It's very satisfying, though, because I feel like I can learn my way through it, and then those will feel "easy" as well.

My biggest gripe now is that I can't rearrange the code + memory windows to be side by side for a large-monitor experience. I feel like that would make it easier to trace program flow.

I'm trying to dive into EmberCLI. I want to get into the whole the 'web via API' mindset and separate things into logical applications.

So I built my Rails 4 API, and Go API, and they're really really fast.

I'm also building my web client with EmberCLI. It's a blast so far as well. I really enjoy the benefits a framework like Ember brings to the table. Structure structure structure. 3 years from now, I want to know my way around the project.


I'm 36. It's time to take this whole body thing serious.

Some basic music theory so I can write my own chiptunes :-)

Also planning to give Haxe a try one of these weekends, to see how pleasant it is for coding small browser games.

Technical (at various stages)

    Python more deeply (used it for years but it's a surprisingly deep language)

    Few different open source libraries

    Some "big data" stuff (using open government data).


    Javascript properly

    Learning to manage pain (recent diagnosis of degenerative spinal condition)
    To be a more positive person

Try yoga, go to an easy beginners class at a studio that seems bent on spirituality and not fitness, helps with pain and positivity, programming benefits are more discrete

Squeak Smalltalk, the computer revolution is coming!

Learning how to build a product business alongside my consulting via [the latest version of] Amy Hoy's 30x500 course.

On the coding front, I'm considering learning Go. Otherwise I am looking at something soon where I'm going to need to learn better management, promotion, networking, and general people skills (in a biz context).

I'm a "just dive in and do something" learner, so that's the approach I'll take with both.

Swift, React, long-distance running (surprisingly, there are things to learn about endurance running)

In the Technical part : I'm learning full stack web development with Ruby/Rails for my personal projects, and Android Development for my job.

Also I'm doing English Classes and I'm thinking about starting German on Duolinguo, and there is the Aikido lessons too.

Go Language. After working with Java for 10 years, it seems to provide a good alternative.

Bouncing between non-MS technologies including Node, Django, Dropwizard, PostgreSQL, NoSQL, etc. I've done this in the past and came out with a decent understanding of Rails and Play! with Scala, but I just haven't found love yet.

Javascript and Node.js

I am going to create a Google Voice clone with some additional features. I've been getting spam-called for the past 2-3 months now and it's pretty frustrating (especially if some of those calls are legitimate customers)..

Right now, I'm Programming iOS app with Facebook ComponentKit.http://componentkit.org/docs/component-api.html

Openstack. Singularly the most frustrating experience of the last year. It's been 2 solid weeks of poor documentation, failing example code, out of date tutorials, and obtuse error messages.

Processing. Too many times I've spun my own little mini-library just to play around with some basic animation on the canvas.

Past 6 months I was learning Go, but I started looking into Rust yesterday and am tempted to give it some attention.

Mandarin Chinese

Me, too! My whole family (wife + two young kids) started private tutoring about 6 months ago. What kind of resources are you finding helpful?

I learned a bit on my own time last year. Check back on this thread in a few days—I'm writing up a post detailing how I went about learning it with links to a whole bunch of resources. It'll probably be useful to you, so I'll post it as a reply to you here once it's done.

I don't know if you're still watching this thread, but as promised here's the article: http://kronopath.net/blog/impossible-to-learn/

I'm trying to finally give Erlang, Scheme / Racket, and JavaScript the attention they deserve in my life.

I've been really enjoying Elixir – I always liked the idea of Erlang, but became frustrated in practice, and Elixir feels like it has been designed around my frustrations.

I've also been meaning to try out LFE (Lisp Flavored Erlang). Basically Erlang with a lisp front-end (originally started by Robert Virding).

Ruby on Rails. I'm moving from a PHP product to a RoR agency. Start dates in 2 weeks and I *can't wait.

Optimization of NP problems via Coursera, Clojure in conjunction with that, and a wee bit of C all on its own.

"Hacking", which has led me to start learning more about C, Assembly, and Networks.

Where did you start?

Started with Hacking, the Art of Exploitation. Finished, but realized I was in over my head. Taking CS50x through edx for C programming + a Udemy Assembly class. Ultimate goal is to make progress on https://microcorruption.com

I have a 9 month learning plan worked out with books, online courses, and other Hacking tutorials/projects.

I bought the first edition of it years ago and I realized I was in over my head too :(

Management, Budgeting, Cloud/AWS, SaltStack, Python, Perl/Mojo, and JavaScript

on skill which i love to master is "How to build a good design" it can be web page, mobile screen. whenever i look at web page or apps by Google it always exit me because they do everything so perfect

Haxe, coding and mindfulness

I started learning erlang in february and am still improving on that

Trying to get into analog electronics and slowly learning Spanish.

Meditation, and Clojure.

Reading this thread to find interesting things to learn.

Business development, product distribution

All new skills are worth learning.

Swift and Olympic Weightlifting

Design Pattern on PHP and Ruby



Also, Haskell


Swift....it's the future.

React/Flux of course! Who isn't at this time?

Lots of people aren't drinking the koolaid.

Those of us holding off for Web Components?

That being said, I'm quite excited for React Native.

Everyone that doesn't do web development?

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