Ask HN: Getting back into programming with a hacker’s mindset?
I learn better by experimenting with other people’s code than by a textbook gradually taking me through improvements to “hello world”. I have some ADHD-like aspects to my personality, so I need to see results quickly to be able to sustain my momentum.
I’m looking for recommendations of textbooks, online tutorials, or easy-to-get-to-grips-with open source projects that encourage a hacker/circuit-bender mindset. Arduino seems spot on, but I’m more interested in pure software, especially on a commercially viable platform like Android (although I’ve been a bit put off by the convoluted Android Studio IDE), so I guess Java would be the best language.
I would ideally like to avoid having to learn to navigate the ins-and-outs of an overly involved compiling process, a complicated IDE, or loads of SDKs. I want to be able to get straight to the coding.
There are a couple of things that really interest me, so bonus points if material relates to one of these in some way: agent-based modelling, simple iterative evolutionary processes, and simple AI (e.g. non-instructed collision detection).
Any pointers very gratefully accepted.
59 comments
[ 3.3 ms ] story [ 134 ms ] threadIt's a hobby, there's no reason to start with the overhead of an industrial grade IDE.
Heck you could just download Emacs and spend a long time writing code in Elisp.
Good luck.
Seems perfect for you (in short notice you should be programming little agents to collect resources and other rudimentary AI). It's great for learning.
What really excited me were the multiplayer competitions: they have a ladder where your algorithm will be matched against other players, giving you a rank. You can start really simple (and be at the bottom of the ladder, but there's always someone below you!), and see it rise as you gradually improve it. Unfortunately it seems you now need to subscribe unlock those, but while I wish they went for another revenue system if it interests your kid it's definitively money well spent.
[1] https://handmadehero.org [2] http://philipbuuck.com/announcing-handmade-quake
As you have been away from coding for a while, it has a system called blueprint which allows for more visual scripting. As you become more familiar with the environment, you can then start using C++.
http://unrealengine.com
As far as language, Python is my current favorite. It just has the lowest friction by far.
I've been a high-level engineer for a long time and always worked in a certain top-down approach. It's nice to see the basic stuff again, such as FSK (frequency shift keying), different CRC codes and doing some low-level C++ coding.
Offline, face-to-face is best. But even online works better than nothing.
My wife would also be thankful, because she is the most basic computer user and frankly she doesn't care about C++ classes, pointers, the standard template library, unit tests or anything to do with refactoring.
I mean, I don't think you're deliberately being misleading, but it feels a lot like you're saying one thing, yet doing another. Just out of curiosity really, why haven't you already Googled and started - what are you holding off and waiting for? It would take, what, 10 minutes to Google a Java tutorial and open https://repl.it/languages/java and get some text printed, right?
I learn better by experimenting with other people’s code than by a textbook [..] I’m looking for recommendations of textbooks
mmhmm.
I've done useless projects at school and at work but the point of those projects was to get credentials or money.
If you're doing this for fun, you should start with something you want to make. A game idea, an app idea, a robot that does something. Break the problem into the smallest parts and start with that.
I also hate complicated compiling processes, bloated tools, or anything to do with configuration. But that's just part of software development. You'll have the motivation to plow through that if you really want to build something.
If a project itself has no purpose (i.e. is just providing a justification to code something), you will 1) experience that the project scope will expand into many directions, leading to an overhelming amount of ideas and work, and/or 2) you will abandon the project early on, after you have written a lot, but before you have learned much. This is usually a demotivating experience, followed by a guilty feeling of not having "finished" it.
You need at least one real user for that project, be it yourself, some friend, or a charity organization. That way, you will find it more easy to limit the project scope and to stick to realistic goals. This will be more motivating and satisfying, even if it ends up not being used in the real world. Along that route, you will probably learn more, and the things you learn will be more useful to you.
http://codekata.com/
Google "(language) koans"
welcome back into programming. A lot of things happened since the 1990s :)
If you want to hack on a minimal dataflow engine, written in JavaScript (but the spec is really simple, it could be implemented in any language), take a look at dflow:
http://g14n.info/dflow/
by now it can run server side or in a browser, but since it is a really flexible spec it could reach also other contexts like electron apps or AWS lambdas.
Since I love tech and programming I wanted to get back, not to find a tech job or run a tech startup, no I just wanted something to distract myself after work. So I began dipping into random languages, libs & frameworks. Bought books, read tutorial and did crash courses. I chose popular and new tech, stuff that matters and things which frequently pop up on HN. From mobile development over functional languages to the hottest JS front-end libs. I played around but usually after a few days I lost quickly any interest, I didn't know why.
Eventually I found the best way get back again and it's easy: Look for a real problem you have yourself and you want to solve. Just for yourself, just to use it yourself. Once you identified the problem you search for the right tool and everything else comes by itself and before you realize you mastered a heavy language/framework in a few days/weeks.
Without a concrete mission which really must matter to you all efforts to get into any appealing tech such as Swift, ES6, react-redux, Android dev, Go will feel shallow and you'll end up wasting time going through tutorials/books/guides questioning your journey.
Please feel free to reach out if you think any of my experience could be relevant and you'd like to chat further.
http://norvig.com/ipython/README.html http://nbviewer.jupyter.org/url/norvig.com/ipython/Economics...
Then, for some reason, I setup their build environment on a VM, setup my git client to push to their gerrit and started making some easy changes. I've focussed on the VCL, which is a core component of LibreOffice, and the more I have read the code on OpenGrok the more things pop out at me. So I tend to submit patches.
Right now I'm reading up on how LibreOffice deals with fonts. It's a bit messy, but the code actually can be refactored, so that's what I'm doing! Actually, it's kind of fun. I rather like running doxygen to see what the collaboration diagrams look like after I've changed the class structure :-)
So tell us what mindset you mean, without using the word "hacker".
Coming from Visual Basic and assembly I think you will struggle with object orientation and functional programming at first.
My advice get a Linux machine or vm, install cpanm. Have a look at perl at learnxinyminutes and start coding. You could write a script with WWW::Mechanize that scrapes news from HN. BTW I am currently fascinated by win32 assembly programming and reverse engineering. Your old-school knowledge is still valuable. Continue reading HN and coding fun projects. You'll catch up in no time.
https://news.ycombinator.com/item?id=9790316
I even used mine for all of my writing and work for about 5 days. Playing with the Pi brought back some of the freshness of my old hacking/tinkering days.
http://www.zachtronics.com/tis-100/
You solve coding puzzles but in a very limited retro environment.
C# using Visual Studio is a great next step as the IDE is first class. Microsoft give it away now free.