Wednesday, May 16, 2012

Big Rocks

This blog is not for you.

Hear that world?  This blog is for me.  It's my own record of things I'm learning and topics I'm interested in.  It's a professional diary of sorts.  What's that you say?  Why even write a blog then?  Hmmm, got me there.  Well, accountability for one.  I figure if it put it 'out there', I'll be more motivated to follow my personal development plan.  I also admit that I'm looking for a creative outlet for my creative ramblings.  But really, I hope that someday this blog could be for you, that I might someday be able to turn the corner in my mind from learning to teaching, absorbing to sharing, taking to giving.  It's probably as much an question of self esteem as anything, but there you go.  For now, this blog is for me.

It's so easy to settle into your daily grind that you can wake up one day and months or years have gone by.  I'd like to say that I'm being proactive to avoid that, but I have to admit that it's happened to me too.  It's pretty easy to get lazy.  Lately though, I've been picking up steam in the self help department.  I used to be very much into self help books, you know, 7 Habits and all that.  Great stuff but that's not what I'm referring to now.  I'm speaking more about professional development.  What new programming language should I learn, what new technologies do I need to come up to speed on?  What hobby projects have been languishing in he recesses of my mind for too long?

lazy (adjective): disinclined to activity 
or exertion : not energetic or vigorous

I've made a list.  I like lists.  They appeal to my analytic mind and organizational gene.  It's not comprehensive by any means, but it's some big rocks.  (you know about big rocks all you self-helpers). So, I'll spend the rest of this post working on my list.  Enjoy!

Start a blog


Be a better programmer

This is painful to admit, but I've really stagnated as a programmer.  True, it's not my primary field, but there are all kinds of engineers and scientists who become virtuoso programmers in the course of their careers.  Meanwhile I have just kept plunking away at my procedural code and scripts, sprinkling in a class here and there.  See, I'm a sucker for beautiful, elegant solutions, be they equations, electronics, or software.  I have not seen much beautiful code in my life, but I now know that it exists; and there's a better way than what I'm doing.  I've discovered patterns, unit testing, and the proper use of inheritance.  The scales have fallen from my eyes and I can see the light.  Ah, sometimes ignorance is bliss though.  Now I've got to think about how to work with all the legacy code I'm in charge of in such as way as not drive me (any more) crazy.  The difference is:  I was getting the the point of wanting to get away from programming, Now I see how it can save me and my zeal is renewed.

Learn Python

I've got a start on this one.  I've read through Beginning Python: From Novice to Professional, Second Edition, by Magnus Lie Hetland.  I've installed Python(x,y), the bundled distribution that includes numpy, scipy, matplotlib, the spyder IDE, the iPython console.  I've been scripting in Matlab for almost 20 years; and I'm hoping to implement a lot of that with free tools.  I've read several posts about Matlab versus Python lately that compare the two.  There's a lot of hate towards Matlab, but I really do like it, warts and all.  It does break down after a certain point.  Yes, there's a path to do what you want to do, but it get's thornier and thornier the more complex you try to get.  And there's this - I've trained myself to avoid loops the Matlab way:  vectorization.  I'm going to have to get used to doing it the Python way:  list comprehensions.

Study artificial intelligence and machine learning

I don't know why I'm drawn to these fields...but I am fascinated by the Google car, all kinds of game AI, big data, and on and on.  I've started down this road some months ago when Stanford started it's online AI course.  I immediately dropped all other plans and joined up.  I found it to be an extremely interesting course; and Sebastian Thrun was a particularly passionate and inspiring teacher (Peter Norvig was good too).  I loved it so much that I signed up for Thrun's course on programming robotic cars through his new venture Udacity.  Unfortunately, I've quickly fallen behind due to work demands, but fortunately, they've removed all time constraints from the course.  Yeah!

Enter a Kaggle competition

If you don't know about Kaggle, check it out here.  Companies who have a data analysis problem publish a dataset with Kaggle's help and have a competition with rewards for the best-performing solutions to the problem.  Anything from the $3 million dollar Heritage Healthcare prize to a weekend hackathon for bragging rights, there is a competition for your level of commitment and ambition.  I'm a big fan of making science and technology into sport, a 21st century sport.  I've been a mentor and coach for FIRST robotics and Lego League; and Kaggle is doing something similar for the adult crowd.  Do I have what it takes to compete against other really smart people?  Well, I won't know until I try.

Publish a mobile app

OK, so I upgraded to an Android smartphone partly so I could play with mobile app development.  Been reading Java books for a while, a few Android development books.  I had an idea for a mod of the cube puzzle demo, but quickly got in over my head with I bought a book on OpenGL ES.  Have you picked up on my obsession with books?  When it comes to sitting down and learn by coding, I have a much harder time.  I think that's going to be my biggest challenge.  My wife has cut me off of buying books for a while, so that might help me shift my focus.  Thanks honey!  I have some other app ideas too, so I'll get back to Android one of these days.

Write a game

Yeah I know, me and everybody else.  And their brother.  But I would love to use some cool concepts in AI to achieve a convincing level of emergence.  Games today don't use the full power of AI because it's too unpredictable.  They can't adequately control the gameplay if it's too complex.  The danger of giving up that degree of control is that you get rid of the fun.  Your game becomes just a simulation.  I believe however that there's a nut to crack here.  Maybe I'll end up with a simulation; but that's OK.  Those are useful too.

Well, that's my list for now.  If you stopped by out of curiosity, send some encouraging thoughts my way and check back sometime.  Maybe I'll be able to say that this blog's for us.

No comments:

Post a Comment