Ruby and Python

I’m working on a side project which I’ll be launching on Google’s App Engine, similar to my main website: OmanThatsGood.  App Engine only supports two languages: Python and Java, and I haven’t used Java since my second year of university.  That’s cool, I’ve already used Python for my regular site and I’m almost comfortable with it now.

But, you know what?  Things about Python irk me.  Python programs tend to get very tall and there are lots of underscores in class definitions.   I can’t do string.length, because it’s len(string).  Certainly not deal breakers, and they have very little effect on the language as a whole, but they do have an effect on my “feel” when programming in it.  That effect is enough that I started looking at some alternatives to Python – starting with my old pal Perl and ending up at Ruby.

There’s an implementation of Ruby called jRuby which runs on Java.  This is especially notable because Java is one of the two languages supported by App Engine, as stated above.  It’s not as good as having Ruby natively supported, but it’s the next best thing.  So, I went through some tutorials and rewrote some short Python scripts into Ruby to get a taste for what changes there would be and whether the switch would be worth it.

For my intro-level programs, Python and Ruby are almost identical.   If I didn’t plan on getting any better with either of them, I’d just stick with the one I already know a little about – Python.  Ruby “feels” nicer, though.  This is a really subjective thing, but Python feels like a procedural language, while Ruby almost feels functional.  There’s a definite “cool” or “wow” factor when using Ruby that’s hard to shake, but I’m not sure if this is just because it’s shiny and new to me.  I do, afterall, remember really liking Python a lot when I first tried it.  On the other hand, when I look at my basic classes and scripts, Python is easier to read and shorter.  Ruby doesn’t have braces because it uses keywords with a matching “end” statement.  Python just uses whitespace.  Python has less clutter.  Ruby also uses some “weird” symbols like Perl does, which is awesome when you’re writing it, but makes reading it more difficult than it should be.   I think it boils down to this: Ruby is fun to write but Python is easier to read.  If it does boil down to that, then Python is definitely the language I’ll stick with for now.

I’m still undecided on this.  I do really like Ruby so far, but I’m not sure if I can justify switching from Python.  Technically I’m not dependent on either of them for work or anything, so there’s little reason not to use both for different projects – which I’ll likely do; but for thinking about larger projects or longer-term use I think Python might make more sense at this point…  Hmm.

Posted in Uncategorized. Comments Off

What the Future Holds

Things have been going pretty well at work.  Working in a central technical capacity as opposed to being on a game team is both a blessing and a curse.  It’s a blessing in that work is much more regulated with a much smaller chance of overtime.  The curse is that there’s relatively little room for new ideas since we have a minimum of two internal clients who are dictating what features and refinements we need to make.   Actually, that’s probably my biggest complaint about both of the jobs I’ve had since university; they have so far been concerned only with maintaining the status quo and fulfilling existing needs.  Contrast this to my university days where everything was new (at least to me) and every project was completely different with more things to learn.   My work to date has been sort of like my university experience growing into a huge, bumbling behemoth who’s attempting to be as dynamic and progressive, but only manages to do it at 1/50th of the rate and scale as before.

Last week Paul, who is a good friend of mine from university, took some time to visit me in the off-time from his HackU presentation at the University of Washington.   I really took a lot away from the brief reunion and am now reinvigorated with regards to work and my future.  Part of that reinvigoration is a desire to move to Silicon Valley.  The very early stages of this move will begin this summer at the conclusion of my current contract with EA, when Dee and I will be visiting Paul and Michelle in San Jose.  That’s the only rock solid plan yet, but I’ll use it as a decision point and then go from there.

Paul also had a very inventor-like moment at one of his HackU speeches.  In a presentation, one piece he threw out was:

If you ever catch yourself saying “I wish that…”

1) write it down

2) do it yourself if you can or

3) tell a friend

He tells me that it wasn’t a big piece of the speech; just something that made sense that he threw in there.  The surprise was that it garnered a huge response from the crowd.  I say it’s inventor-ish because it’s a simple statement, it makes sense and it seems incredibly obvious except who’s actually written it down before and formalized the thought into a do-able mantra?

I’ve been writing lists for a couple of years now as a way to keep ideas nearby when my mind is darting around in thousands of directions.  I like this mantra because it fits in very easily with my list-keeping.  It’s better than that, though; this new mantra provides ideas and motivation for personal projects that I’ve been struggling with in the past!  I’ve often been in the situation where I just want to code something, but I can’t think of what to do.  Since adopting this mantra, I’ve already amassed several ideas; a couple that are really worthwhile and which I will work on soon, and quite a few more general “pie in the sky” type ideas that will require more research.

This is what computer science is about

I’m excited again about programming.  I like my prospects and appreciate my education.  I’ve now done a complete 180 from where my thoughts and feelings have been over the past couple of years.  It’s been a somewhat long and tumultuous recovery.  I’ve gone through a lot of personal growth and think I am the better for having experienced it.

Part of this process also involves an idea very intimate to computer scientists: abstraction.  I heard from a professor once that “Computer Science is just adding another layer of abstraction.” I like this statement, because it commonly rings true.  In this regard, the abstraction is stepping up in the “computer science hierarchy” from programming languages and specific technology to design patterns, complexity analysis and algorithms.  At a certain point it no longer matters which language you’re using – whether you have experience in it or not.  Most languages are similar, and all fall into just a few defining types of languages. (ie., Procedural, Functional and Logical are three paradigms I learned in University.)  I believe I have reached this point now, as evidenced my my jumping from Perl to C++ to Python, Lua, Javascript and Actionscript.  I jump back and forth through these trying to figure out what the “next, big, cool tech” is that I can create.  Unfortunately, languages don’t define ideas.    They can help shape ideas, but ideas can be extracted out into a more encompassing hierarchy.

So, over the next several months while my contract with EA finishes up, I’m going to brush up on all of my high-level computer science knowledge to maintain this newfound excitement, and to prepare for a new future in which I will (hopefully) become part of the stimulating environment in Silicon Valley.

Posted in Uncategorized. Comments Off

Mass Effect 2

I’ve read great reviews for this game, so I decided to pick it up and give it a go. I don’t have an Xbox 360, so I picked up the PC version.

* Install
* Launch game -> Crash

Apparently there is a missing direct x file.

* Install direct X from Microsoft website
* Error in download file -> can’t install

Hmm..
Well, apparently Mass Effect 2 has a version of direct X on it that you can install.

* Install direct X off of the game disc (why wasn’t this done during the game install?)
* Launch game -> Crash

I don’t get the direct X missing file anymore; now I just get a crash with no explanation.

This is the complete opposite of what I’d call “awesome.” I can tell you right now – I really don’t want to buy another PC game if I have to put up with this crap.

It’s easier to get games running on Linux for gosh sake.

Posted in Uncategorized. Comments Off

A Gaming Renaissance!

I’ve been slowly getting back into gaming since the Wii came this Christmas. I think working at EA again has also instigated this change somewhat; and that can be chalked up to working on videogames, and having money.

There’s a library at EA where we can rent games, or just play them there at the gaming lounge. I’m going through a bunch of games to get a feel for what’s good and what’s not, and am pretty pleased with what I’m finding. Some games are better than I expected, while some are worse. Unfortunately, the EA library is a little lacking in terms of what’s really out there, but it’s a decent sampling of the easier to find games.

Mostly I’ve been interested in the Wii for it’s active games, like EA Sports Active and Wii Fit Plus. Those games are cool, but they’re not enough to keep you playing. That’s a good thing and a bad thing. I particularly like the aspect of you not being able to play an active game for 10+ hours a day because it’s actually too physically exhaustive. This forces you to do other things with your life, and I like that. But, sometimes I just want to play videogames too. I still like the idea of the Wii interface (as waggle-tastic as it is without the MotionPlus), so it’s just a matter of finding games that use this effectively.

Along those lines, I was massively surprised by SSX Blur. The carving feels fantastic! Carving in SSX 3 was really good too, but the motion controls really put it over the top in Blur. In fact, the motion controls for Blur are just really well done and make the game a blast. Blur also has a great sense of personality that was severely lacking in SSX 3, and was overcompensated for in SSX On Tour. I’ve got Shaun White’s Road Trip, but it’s a lot more bland than SSX Blur. Unfortunately, I don’t think SSX Blur supports the balance board, which Road Trip does. When using the balance board, Road Trip might be pushed into the upper echelons above Blur.

Next is Skate It. I played an early version of the original Skate when I was working at EA over two years ago, and I absolutely loved it. I never played the full version, and I was wondering how the Wii version was in comparison to what I’ve seen. Well, the Wii version is freaking awesome. The control is loose, but the connection with the tricks you’re doing is far more tangible than that with a standard controller. Truly top-notch. I really want to try this game with a balance board too, but I suspect that might just be too gimmicky.

WarioWare: Smooth Moves was actually supremely disappointing. Maybe those games are only good the first time you encounter them, or maybe Twisted was really the only good one. I just found it super shallow with no draw to continue through the campaign.

I picked up Samba De Amigo for $5 from the game store. I remember playing it on the Dreamcast without maracas and found it rather challenging. Since that day, I’ve played many a rhythm game and have developed far more skill at it. Samba is rather straight forward, but the music is upbeat and pleasant and there’s just enough challenge to keep playing. Unfortunately, the controls are highly inaccurate, which removes a lot of the satisfaction.

I picked up Shaun White Snowboarding: Road Trip for $10 from the local department store. It’s pretty good, but underwhelming. In terms of a snowboarding game, the trickset is really limited and the whole game comes off as rather simple. But, Road Trip is also a great example of depth. After you unlock Shaun White (even the latter stages right before you unlock shaun white) require you to really master the trick and combo system in order to progress through the challenges. The earlier stuff isn’t super easy, but it’s easy enough that you can get through it without mastering these basics. The graphics are clean and stylized, but rather bland in comparison to SSX Blur. I really want to give this game a go with the balance board to see how it feels.

I rented SimAnimals because the screenshots on the back of the box made me think of the Canadian wilderness. The gameplay is a little stale and the graphics are sub-par. But, it’s not all bad. If you play with the nunchuck and wiimote, the control scheme is far superior to that of just a wiimote. The graphics have a lot of character and charm in their stylized form, but the engine chugs a lot. The gameplay is rather Sims like, relying on indirectly interacting with the animals. Actually, the game as a whole owes a lot to the Sims, so in that way the name is really appropriate. However, the description on the box markets the game in a somewhat different manner, so I was left disappointed, then slightly intrigued after getting to know the real game. Unfortunately, the game really isn’t polished. It’s below average in terms of everything, but still has an undefinable charm and draw. It’s an underdog that I can’t help but like for some reason.

Finally, I have EA Sports Active. I like this game because it really makes me sweat and it has a lot of varied exercises. I prefer the organization and interface of Wii Fit Plus, but I think EA Sports Active is better for actually being active and burning calories. The graphics are decent; the motion detection is good, but a few exercises have recurrent detection issues; but ultimately it does what it sets out to achieve. I’m actually highly anticipating a new game in the series if EA decides to do something like that.

I’m going to give Dead Space: Extraction a roll tomorrow. It’s gotten rave reviews and looks really nice, but it’s also an on-rails shooter. I’m pretty much evenly torn about what to think about it, so a good ‘ol playthrough should clarify matters. Oh yeah, and I also rented Super Monkey Ball, which seems pretty solid. Whereas Samba De Amigo looks really fun and perfect for the Wii, but falters in execution; Super Monkey Ball so far hits all the right notes and delivers on what you’d expect. It’s bright, colorful, full of personality and solid gameplay. That’s the makings of a solid game!

New Job and New Confusion

I’m back at EA!

This probably seems crazy to some, but I feel great about it.  I left the games industry for my own reasons, I experienced some web development and the amazing world of employment insurance and job searching.  Sometime in the middle of there I explored lots of things: knitting, crochet, bread making, beer making, wine making, cheese making, gardening, sewing, painting, first aid, snowboard instruction.  You know what?  I’ve never stopped paying attention to videogames in the whole of it.   Heck, we got a Wii for Christmas and have been enjoying the new take on gaming which that machine provides.

I finished my First Aid on Monday, went to the FutureWorks presentation on Tuesday (and reworked my online and offline resumes shortly after), then Wednesday I reapplied to all the game places I know of and visited Gossamer Threads to discuss a potential short-term contract.  One of the places I applied on Wednesday was EA for a temporary front end programmer position.  I received a call back from them within two hours!  I postponed my follow-up meeting at Gossamer Threads on Thursday so I could interview at EA, and the interview went super well – allowing me to get back in touch with some former co-workers and market my new-found attitude and desire to thrive in the industry.  I still had a deadline for noon on Friday to get back to Gossamer Threads, but I was eagerly awaiting good news from EA…  And it came at about 11:30am, allowing me to reject the GT offer and sign all the paperwork for EA all before end of day Friday.  I start 9:00am on Monday.

So, to field a couple of questions:

  • Why EA?

I had rough times at EA, and I had good times.  Turns out the last position I had (on the front-end team) was a particularly good time.  EA’s also got the best benefits I’ve heard of (or directly experienced, although that doesn’t say much) and a ton of people with similar interests to mine.

  • Why front end?

The front end team I was on was fantastic.  The whole front end department is run very well with good processes, good people and good work.  It’s an environment I can see myself in for the long-run.

  • Why contract?

Honestly, this is a “foot in the door” position.  I’ve been looking for a games job since October 2008 and have had no bites, no nibbles, not anything.  Ideally this would be an “RFT” (Regular Full Time) position, but I’ll take this as a stepping stone.  Plus, if I do a damned good job and the contract just can’t be renewed and I can’t find another TFT or RFT position at EA, then I can enjoy some of the summer!

On a different topic, I’ve been doing a little bit of ActionScript programming to get back into the front-end role.  I don’t know if EA is using ActionScript 3 now or not, but that’s what I’m practicing with.  I discovered this site called Rosetta Code which has coding problems that they encourage users to solve in every conceivable programming language.  I submitted the ActionScript entry for the 100 Doors problem.  I also wrote a solution to the Fibonacci generator, but there was already an entry there.  I’m going to throw the code and embedded .swfs onto my Projects page, but I’m running into some issues consistently styling the embedded flash across Firefox, Chrome and Safari.

Lastly, I’m super interested in a database communication layer for ActionScript.  There are two projects I’ve found: ASQL and AsSQL.  I haven’t looked much into either yet.   From what I’ve gleaned, AsSQL is geared more towards Adobe AIR.  The whole Flash thing is also super confusing.  There’s MXML which is a command-line compiler for straight-up .as files, but it’s also a type of descriptor file for the compiler.  There’s Flex, Flash and MXML which are all valid ways to build Flash projects, and might all be equivalent except in interface, except that I have no idea if they’re equivalent or not.  I thought there was more, but it could just be that I was in “rant mode” and was getting ahead of myself.   Nevertheless, there are a lot of acronyms and tools that can easily overwhelm a novice ActionScript programmer like myself – even coming from a background in C++ and, to a lesser extent, Perl.

Posted in Uncategorized. Comments Off

OFA 3 Certified!

I am ecstatic!  Actually, “relieved” is probably a better description.  Finally, after two weeks of hardcore study and practice; I’ve achieved my Level 3 OFA certification!  I completely aced the written portion, scoring 96%, but I struggled significantly more with the practical, scoring only 80%.   Practical exams are funny things.  I think I really excelled at the practical evaluation for my CASI 1 certification, but I froze and stumbled everywhere for my OFA 3 cert.  The evaluator was quite nice, though; she was aware that students get very nervous for the practical and often make mistakes they don’t regularly make.  She said that, despite some serious mistakes I made, I was able to think about it, backtrack and get myself back on the right path before bringing any harm to any of my imaginary patients.

It’s really odd doing these practicals for another reason – you are given scenarios, then students in the class have to fill the roles of patients (or students in the case of CASI) while you imagine everything in the scenario to actually be happening.  Sometimes you’ll completely forget that a patient’s face is covered in blood, for instance, simply because their face isn’t actually covered in blood.  It’s important to keep asking the evaluator if you’re unsure of anything.

Since I don’t actually require OFA 3 for work, I’m considering joining the St. John Ambulance Brigade as a volunteer in order to keep up my first aid training.  This gem of an idea was given by a peer in my class last Friday, and I think it’s completely brilliant.

Anyway, the hardcore studying and fretting and dreaming about first aid (sometimes combined with The Simpsons) is now over and I can enjoy a brief moment of downtime.  Tomorrow I’ve got two morning appointments already!

Posted in Uncategorized. Comments Off

Brief Pause

The OFA Level 3 course has finally wound down.  Friday was the last day and Monday is the final exam.  This is good because I feel fairly confident going into the exam, and there’s no longer the obligation to be at school all day, then study for several hours every night.  However, this also means I need to study like crazy before the final – mostly in the form of running through practicals.  The final exam consists of a 2-hour written portion and a 4-hour practical examination which puts you in different scenarios and has you handle them appropriately.

Meanwhile, I took time this morning to update My Website.  Nothing major, just reorganization and tweaking of some text.  I think it’s more functional now as an online resume, and it’s easier to navigate.  More small changes will be rolling in soon – mostly along the lines of filling in more info on what work I’ve contributed to specific projects.

I also just installed Git and Gitosis on my dev server.  I haven’t used Git before.  I’ve used Subversion just a little bit; CVS a fair bit, but just basic usage; and Perforce quite extensively back at EA.  I’m looking forward to using Git to manage my personal projects.  The first candidates up to bat: my website and my small game called Planet Wars.

Posted in Uncategorized. Comments Off

Javascript, Perhaps?

As I normally do, today I read several RSS feeds I subscribe to via Google Reader. Of particular note is today’s blog on web apps. That entry talks specifically about Apple’s new iPad, but that’s not the part that got me thinking.

I’ve been doing game development and web development for a couple of years each, with my most recent project (my website) being done in Python via the Django framework.  Now, I’ve got to say that I really like working in high-level languages like Python and Perl, and the thought of working with Web GL is pretty exciting.  Besides that, I was also thinking about web apps and how they’ll play out in the future in terms of possibly replacing desktop apps, and opening up cross-platform development even moreso.

The point is, I think I’m finally going to crack down and buy a full text on Javascript.  I’ve used Javascript to do jQuery “dressing” on webpages, and quite enjoyed that.  WebGL will be a Javascript implementation too.  I’m interested in what else there is in the realm of Javascript development?

Naturally, I won’t be able to buy any such text until I get some cash flow again.  Taking this OFA Level 3 course is really great, but it’s costing me over $800 in direct fees, and I’m not eligible to receive EI while going, so that’s another $800 not coming into my pocket.  In essence, it’s costing about $1600 – so I definitely hope I get my certification!

Posted in Uncategorized. Comments Off

CASI, OFA, Acronymia

Finally, a little rest in the midst of this busy, busy week.

Last Friday I began my CASI Level 1 certification at Grouse Mountain. It was close to 12 hours each day over three days of snowboarding, lectures, teaching, and skill improvement. After that, I’d spend several hours a night studying the reference material to make sure I knew my stuff. I wound up being a walking, talking reference manual for several of the other students – a roll I remember well from computer science in university; and a roll I rather like taking up. I passed my certification just fine, so now I’m certified to teach beginner snowboarders!

Immediately on the Monday following my CASI 1, I began classes for Occupational First Aid Level 3 from St. John Ambulance. This course is way more intensive than the CASI 1 course! Although it’s only 8:30-4:30, it’s over two weeks, and there’s roughly three hours of homework each night. Additionally, the course is often physically intensive with lots of rolling of patients, and packaging of patients onto spine boards. Many of the steps of the “Priority Action Approach” have strict time limits – failure to finish each step within the time limit will result in a 100% deduction in the final practical exam.

So, since the Friday before last, I’ve been doing physically intensive day classes with night studying non-stop. Yesterday I just vegged out and relaxed. I’ve been doing a little too much of that today too, but I appreciate the break.

Posted in Uncategorized. Comments Off

A New Day

While I’m unemployed, I’ve got a few things going on. I’m registered in Occupational First Aid Level 3 starting next Monday, so I’ve been studying like crazy for that over the past few days. I started casually reading the manual before Christmas, but I way underestimated the sheer volume of material to cover. I’m on track to finish reading the text before the course starts, but I won’t have much time for review. Hopefully the hands-on course material reiterates a lot of the content, assisting in review while the course is happening.

Additionally, I’m taking my CASI level 1 Snowboard Instructor training starting this Friday. I don’t anticipate the CASI1 course being anywhere near as complex or difficult as the OFA3 course, so I haven’t attempted any study on that yet. Plus, there’s no user manual to pickup beforehand. However, I have taken it upon myself to do some long overdue snowboard tuning. I’ve meant, for years now, to try p-texing gouges in my snowboard base and figured now would be as good a time as any to jump in and give it a shot. With some success, I’ve also given a good touch up to my edges and an initial wax coat to the base.

Since I’m unemployed from being laid off, I’m also receiving EI benefit from the federal government. The best advantage this gives me is government subsidized income at a new job. I can’t remember the exact subsidy (something like 30% up to some maximum) or the duration, but to even qualify for the subsidy I need to have a case worker from a government approved career and employment center and develop a “Back to Work Action Plan.” I’ve scheduled that in for this Thursday morning.

And that brings us up to the next event which is occurring today. I got a career/jobs newsletter from the province of BC listing a career fair at Science World today at 9am. Tickets are $5 at the door, cash only. This is essentially the only information I have about this career fair. I’m going to do a little more research to see who will be there first, but I still plan on going regardless. I want to show up with several copies of both my games and web resumes, but even moreso I want to see who will be there, what types of jobs they have, and what sort of training they require for those jobs.

I’ve figured out that one thing I dislike about programming as a career is the lack of recognizable certifications. For instance, if you want to put that you know Python or C++ or D as a language on your resume, you can’t just get a certification course and list the certification; you have to illustrate through actual experience that you have the necessary skills in the given language. While this is a much better system for getting a really good feel for how much somebody really knows a language, it’s also a huge burden on the programmer looking to diversify their skillset, as they have to take on several projects in their spare time in order to demonstrate skill. The trick there is choosing a project that is interesting, demonstrative of skill, and doesn’t take too many years to finish. By checking out this career fair, maybe I can gauge which certifications I’m currently working on will be the most valuable, and which certifications I’m thinking about getting will help out the most.

Posted in Uncategorized. Comments Off