This is a list of personal boundaries. That is, as I learn or work in a particular area, I reach a limit and some question remains. This is also a list of things I want to grok.
“The fool can ask more questions than the wise man can answer.”
Ruby and Rails
- Does Rails3 have anything that would help me code faster? (jquery helpers, bundler)
- How to integrate the rapid development into my daily Java based job.
- 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.
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.
Write or use an ORM type layer for LDAP. Done: used activeldap, a little messy.
- Play with memcache.
.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
Write a web service as if designing an API and publishing over HTTP Done.
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 “wooling” (obfuscated on purpose) 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.
- 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?
- 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.
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.
- Take an example Sinatra app from the web and write it in Node.
- 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?
- Rails gives you so much, why and when would I pick Node? What’s the killer use case?
- Hadoop cluster setup (with VMs or small atom boxes)
- Write a simple map/reduce job.
- 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.
- Use EC2. Grok the tools. Find out how many instances I can spin up.
- Figure out if EC2 is cheaper than my servers.
- EC2 with capistrano?
- 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.
- 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)?
- Build a simple OOP test like a Car.
- Understanding pointers in regards to my scene graph.
- How to build classes as quick as I build them in Java or C++ I get it.
- The “everything is a message” metaphor? I get it. It’s just like ruby, see my question answered on stackoverflow that’s related.
- All the file layout and syntax stuff. What should go in implementation.m? What should go in interface.h? I get it now. Go CS193P.
- How much use is it beyond Apple?
- How to use the data views on the iPhone. Specifically, create a data driven app and check out the methods and events.
Flash – abandoned, *ick*
- Find out how Actionscript 3.0 helps take the “kiddiness” out of AS2.
- What dy, dx on movie clips do. Does it really do rise over run?
- How to avoid doing softreferences. Ew.
How to do object composition.
- How to notify an ArrayList of objects in the Observer pattern. Well, how to do it without a book.
- What the advice “program to an interface” really means.
- Read the Architecture of Open Source Applications.
- Try designing something really big without implementation. Something you know. Like a Starbucks full of Robots.
- How to use a JMS queue.
- How to read a sparsely documented Java API. For example OSWorkflow. Or maybe this is just hard in and of itself.
How to not do JEE projects for the rest of my life. Answer: Fake it until you make it. Refuse projects, learn enough to get a project you want.
- How to create and monitor a C process from Java (JNI).
- Authenticating Linux against OpenLDAP. I had this working for a while but never grok’d it.
- How to write a device driver.
- Understanding “man vga.h”. I think I understand it more now than I did before.
- Sharing with without a SAN. GFS2 + DRBD? Or sharing spare local disk in a cluster cheaply.
- How to sudo ALL except /bin/bash? Improactical? Impossible?
- Distributed filesystems, can you reclaim free space? Does this work as something that would consolidate commodity hardware easily?
- How virtual memory works vs real mode OS. IE: what would happen if you wrote zeros to every device?
- How would I admin one million hosts?
- Is there any chance that ethernet can be a fast interconnect?
- Why do commodity southbridges suck? Why are ASICs better? Are ASICs better or maybe the custom concept has gone to FPGAs?
- Learning how to mix on headphones versus external monitors.
- Creating a good sampled sound from an analog source, ie: recording an analog drum loop that would work in electronica.
- What side-chaining means with regards to how I do my sends/inserts.
- What mastering means besides the definition of mastering.
- What producer would be willing to listen to my serious work for 30 minutes and how painful the feedback would be.
- Learn how to use a preamp.
- OSC from iPad to Ableton
- Doing a live show with Ableton and a laptop, including optimization and stability (bouncing intense plugins tracks to straight WAVs) to avoid crashes.
- Writing an Ableton script to control a song’s energy, for example a slider that mixes in more and more layers.
- More gang of four experience.
- How to create AI or fuzzy logic.
- Use a neural network API.
- How do people reverse engineer something like the NES? Or something like the iPhone bootloader?
- Write a recursive permutation algorithm of all combinations of “WORD”.
- Do something with pubsub
How to use an Xbee and Arduino.
- How to power an Arduino using solar power and Xbee for a completely wireless sensor thing.
- How to create a mesh or robot swarm.
- Reading input from an old notebook keyboard into an arduino.
Creating a servo powered cat faucet. How to make a simple robot arm?
- Wire up arduino to ruby and do some heavy lifting like parsing IRC traffic, logs or
create an online bot that can flip a light switch or something.
- How to publish a CA into LDAP for a poor man’s PKI.
How to publish a user certificate into LDAP.
- Find someone who monitors SANS for 0-day exploits and ask them how they think or work. How do these people have jobs like that? What are they called? Grok it, not just get it answered.
- How does a buffer overflow work? And not just an overview. Grok it. Do it. Audit existing code.
- Write a certificate storage device for the iPhone. Or a secure document reader with strong auth (I don’t know which strong auth you could use … maybe a face chooser).