Questions I Have

This is a list of personal boundaries. That is, as I learn or work in a particular area, I reach a limit and some questions remain. This is also a list of things I want to grok. This list is incredibly hard to keep up to date. Which is probably why it’s an oddball on the web. People want this but maybe people don’t want to do it.

“The fool can ask more questions than the wise man can answer.”

This list is pretty old (2011 or earlier activity). I now track a list of spikes to hack on on a personal trello board.

Ruby and Rails

How to integrate rapid development into my daily Java based job. Answer: build solutions where people don’t care what language it’s in. Services.

Does Rails3 have anything that would help me code faster? (jquery helpers, bundler)

How to orchestrate capistrano, github, SVN and my own servers. Ie: deploying to a test box running apache/passenger from a webbrick dev box through git and having all the seeds and migrations work.This was basically solved with git branches and a very good capistrano deploy.rb script.

Understand and use migrations.

Learn how to go from Omnigraffle mock up to working prototype.

Learn how to build a daemon process, a MVC and possibly multiple nodes/mesh architecture and make it all work seemlessly using the minimum number of quality libraries as possible.

How to integrate JQuery widgets.

Write a gem. Done: simple printer test

Put a project on github.

Write a textile README file for doc instead of .txt.

Use bundler to freeze gems.

Grok freezing rails. Solved with bundler and vendoring even with private gems.

Write or use an ORM type layer for LDAP. Done: used activeldap, a little messy.

Play with memcache.

Understand .collect, .map and .lambda methods.

Understand the splat operator.

Write a rake task.

Write a module as if designing an API and publishing as gem Done this multiple times at this point. Start with a README.

Write a web service as if designing an API and publishing over HTTPDone.

Is publishing a test gem to rubygems bad form? Yes, there’s no need for it because you can gem install a local file for testing.

Write a gem for a rails controller, a mix in lib to do security. This little hint is what became the Firewool gem, a rails firewall plugin.

Do joins across datasources. YAML to MySQL to MongoDB to Redis. Use datamapper or activerecord or both. Obviously the data has to be logically connected. What performance tradeoffs are there? Do any of these gems help with migration? Could we temporarily load all data into Redis and switch to that datastore type exclusively?

Play with better ways of passing data between rails and JS. Usually I create a hidden form element or use a DOM element for a key for, say, an ajax call to get some other data. There has to be a better way like the Gon gem.This has WAY been solved by rest and SPAs.

Try an actor-based concurrency model like dcell. I’ve used threads and eventmachine but I’m still jealous of node.js. Many ruby-centric articles extoll ruby options but invariably seem to fall short on real solutions. How good is celluloid and dcell? How native does it feel? Still no actor model on rails. Currently things are moving towards Elixir/Phoenix.

Write a DSL. Here’s an example: Building Rspec from Scratch. Write a DSL to rename a bunch of files in a directory. For example, the mp3 rename problem. Or vacation photo problem. Take files named “DSC709.jpg” and rename to hawaii_709.jpg.

Close a Rails bug.

HTML/CSS

Javascript

Use comet for pubsub, ie: database trigger, avoid polling in client. Can use in many projects: cat_faucet, daemonizing punc (screen scraping) and others. I create a polling avoidance app called pollpole which used Faye instead. This entry was so old is was filed under AJAX which no one even talks like that anymore.

Grok React. A todo app to start with. Finish udemy course.

React shopping cart. I could do the API in 3 languages (eventually) but the frontend would be a struggle.

Node

Take an example Sinatra app from the web and write it in Node. No one cares. Alt-rails is Go/Elixir right now.

How could I write an app that reacts to events like when nodes come online? I mean, behave like Zeroconf. Peer up etc.

Is the sweet spot low-level message routing and small utilities?

Rails gives you so much, why and when would I pick Node? What’s the killer use case?

Elixir

Everything. Read the book.

Start on phoenix. Translate rails experience -> phoenix.

Golang

Write a file system trigger app (in-progress now).

Expand on Martini until it reaches Sinatra or Rails levels or functionality. Can it be my go-to tool for web stuff?

NOSQL

Write a simple map/reduce job other than wordcount. I stopped at an ecommerce example because it was the
wrong use case and I understood how many transformations would be required.

Use a schema-less CouchDB store in a simple rails app.

Use an ORM layer like Mongoid with MongoDB.

Write a hotel finder / reservation system using Cassandra / rails.

Cloudish

Use EC2. Grok the tools. Find out how many instances I can spin up.AWS is
large and complicated. EC2/S3/SNS/VPC (less so)/Data Pipeline are under mybelt now.

Figure out if EC2 is cheaper than my servers. No. Having a Digital Ocean box is nice though.

EC2 with capistrano?Cancelled. Build with packer. Deploy with terraform. Small projects just use heroku.

How would I admin one million hosts?

GameDev

How to animate a box. That is, how to nicely animate a box. AnimationManager.doFlyOut(boxObject) and then easily have the animation stop and do AnimationManager.doMoveUpAndFadeOut(boxObject) or some such arbitrary “decorators”.

My game objects are nice but how about logic with LUA?

Creating a really great event-based music soundtrack that reacts to game moods without breaking the flow of music.

What is a transformation mesh?

Building a scene graph.

Using vertices from a obj model. Or making a custom model format just to learn.

Creating a heightmap out of a black & white image. Then modifying the heightmap to do cool things like realistic cliffs.

How to use Unity after all of these above tests are done.

C++

How to have multiple binaries built with a Makefile and call them between each other.

What the double asterisk in int pointer** means.

Does not using a pointer mean that I’ve cloned memory? Is that the use of it when not doing an initial assignment (x=0)?