Sooo there have been a bunch of ideas bouncing around in my head for a while. And I’m not really sure where to get started on any of them. Maybe cataloging them here will help me organize my interests.
They’re numbered but not ordered.
Functional programming
I took two FP classes in college – one intro in SML and one more theoretical: constructive logic. Neither of them really made much sense at the time – I was interested in making games and that meant C/C++. I didn’t really figure out what was cool and interesting about FP until I’d been working for a while.
I’ve flirted with Lisp a few times (I’ve gone through portions of SICP in Scheme/Racket on multiple occasions - I might do the SICP reading group). I poked at Scala a bit and got awful flashbacks to the SML type-checker experience.
I remain curious. RC folks seem pretty into Haskell. There’s a Land of Lisp book and a bunch of Clojure resources as well. This might make me a better programmer. That said, I don’t have a project in mind other than “learn/use these languages”.
Learn Python, NumPy, Pandas, iPython Notebook, etc.
I built my last startup in Ruby and that really revealed some limitations of the language. Python seems much more enterprise ready. The libraries seem to be much more rigorous. And the support for numerical computing and machine learning and the NLP tools seem significantly more abundant/existant/developed than in the Ruby world.
It feels like it will be useful to learn, and may be suitable as a general choice for any projects I do decide on.
AI
This is a big section involving a lot of different possibilities. It’s pretty buzz-wordy.
I did the Udacity AI course (Sebastian Thrun’s) over the summer and really enjoyed it, but it wasn’t particularly code-heavy and didn’t immediately lead to ideas for applications.
This feels like an area where it would be good to know more, but I don’t have a specific problem in mind beyond “learning.”
Things I could learn more about:
Computer Vision (I’m not actually all that psyched about this as a discipline – just seems useful for doing AI stuff)
Autonomous vehicles/navigation
This is something I’m really interested in but I’m not sure how much progress
I can make in 3 months nor am I sure where to start. I’m going to
investigate if any RC folks have worked on this.
I can also jump into the Udacity course for this.
OpenAI Gym / Universe
This seems like it might be a practical place to get some experience. Sort of similar “not knowing where to start” problem.
Deep Learning
There’s the deep learning textbook and then there’s a bunch of toolkits. I’d probably start with the former to get a sense of what I’m doing. Again, I don’t have practical problems (or data sets) in mind to tackle.
(Also I might work through Andrew Ng’s ML course on Coursera added 3/30/11)
Creative Coding / Making Art with code
This is a recurring itch. I’d like to work through the Nature of Code book. The challenge here is more a test of my creativity,
as I don’t expect to learn much about programming by working on this stuff. The work of Inconvergent on generative art may be more constructive there. That said, I might be able to make some cool/fun stuff that gets me excited and puts me in a different head space.
I’d probably use p5.js instead of processing.
React
I traditionally don’t enjoy(/care about?) frontend stuff. I think I’m mostly interested because of ReactNative and some VR related stuff.
Alternative/mobile/future IDEs
I’m interested in the idea that the next billion people on the internet will have phones before they have computers, and that they
may never have a laptop to program on, so how will they build software?
We handwrote alot of the assembly for the PS3 on graph paper. Because of that and a buddy of mine creating Penultimate for handwriting on the iPad has made me curious about an IDE that uses a stylus
as input. (Could you do character or word level recognition and store a mapping to a text source file?)
I’m also curious about whether it’s possible to train an RNN to work as a voice driven editor. E.g., could you say “define a function foo that takes an argument x and adds 5 to x and prints the result” and have the IDE actually write the code you want?
The problem is that there’s no corpus. So maybe as a first step I’d build a collector that asks people to look at pieces of code and read them as if they were writing them.
Amazon Echo / Alexa
I love using my Echo, but the last time I looked at developing for it, the boilerplate parts seemed really tedious. It might be less
painful now with Glitch (Fog Creek’s tool for remixing code). That said, I don’t have anything specific I want to build.
Here One
I’m going to set up my Here One headphones this weekend. There’s no SDK yet but I do love the possibility of audio only/first apps,
especially after seeing Spike Jonze’ movie Her
Raspberry Pi
I only have one project in mind but unlike the others on here I definitely know I want to do it. I have about 400 cds that I’d like
to rip and store so that I can finally have them all on my phone. The Pi seems like the best way to do it. I’d like to find an insert-drive CD-ROM (instead of a tray), and have it automatically rip audio when a disk is inserted and then send an email with status and add the CD to Airtable (maybe via Zapier). I need to by a Pi and a CD-ROM first
InfoSec
I know nothing about InfoSec, really. The last related work I did was in a systems class in college where we did some reverse engineering
and wrote some buffer overflow exploits for assignments.
It’s not exactly a 0-60 in 3 months scenario but I could start learning more to see if it’s interesting. There are some starting
points here.
Docker
This is partly a DevOps thing and partly a “how do I set up a dev environment without littering shit all over my machine” thing. Not sure if this is a standalone thing to learn or just something to package in with another project.
Distributed Systems / Infrastructure
This is an area that I’ve never had to work on, and generally doesn’t feel all that interesting (e.g., right now I wouldn’t want to take a job focused on this). That said, if somebody else were working on it and had a project in mind, I’d be interested to contribute just to piggy back on there enthusiasm to learn something.
Other things I could work on here:
- BitTorrent client in a new language (Added 3/30/17)
Go (Added 3/30/17)
Another one of those “things that would be good to know, but that I don’t have a project in mind for”.
Implement neural networks, CNNs, RNNs from scratch. (Added 3/30/17)
This seems like something that might actually give me a bunch of worthwhile mileage and demystify some magic. Also a good way to force me to work through the derivations in the papers.
Not sure if I’ll have a useful dataset but it seems like something I should be able to find.