teh hayley

I suppose it was inevitable or in-ev-eh-tah-blé as the Spanish would say (yet spelled the same as English).

Today marks the first day that I am supremely behind on my word quota. And by supremely I mean, I haven't started at all. Not on paper, not even in my head.

So here is where I must summon upon the powers of blah blah blah in order to make it to the 1,667. Here ya go. The sixteen sixty seven. Now, I'm a little better off.

Of course, this will mark the first nanowrimo where I've done drivel and word inflation tricks and published it.

So how about a journal entry?

Since I'm pretending to keep this blog tech related. How about I talk about the tech things I'm excited about.

I love Ruby. Once upon a time, I actually built my first web app from scratch in Python. But for some reason it didn't stick. I remember being impressed by Python's English like syntax and how it felt so much more expressive.

The next thing I built from scratch was in PHP many many years later. I was in love with PHP for awhile and was trying to do a lot of my scripting in it (instead of bash or perl or something). I own a book on perl. I programmed a bit in Perl. Ah hell, I've programmed a bit in a lot of things.

But I'm not a programmer. I think just maybe that I might finally be thinking of myself as one, but still not really.

For one, it's never really stuck before. Which is basically true for me in a lot of things. I seem to be totally freaking awesome at getting to "advanced beginner" level really quickly, but then I'm dead in the water. Case in point, I rented a violin once and then in just a couple of hours of watching Sharon Corr, I could play the short version of Erin Shore... beautifully, I'd say. It's not that long of a piece (it's the Erin Shore that precedes "Forgiven, Not Forgotten" rather than the longer version at the end of the album) and I never really did anything else with the violin.

I spent one evening learning the intro to Tori Amos' Winter though it was (and still is) light years beyond my ability. When it comes to piano, I can still barely play with both hands. At the same time.

And even just recently, I managed to rank as a semester 2 Spanish student on this placement test after about 2 weeks of study (my "advanced" knowledge was mainly thanks to Lucero and Por Ella Soy Eva). And as is often the case with me, I have since basically dropped it. (Though at this point, I still do actually intend to pick it back up again).

The point is, though I've programmed in a ton of languages over the course of many years, I still can barely, well, program.

And the point beyond that? Things I'm excited about in tech. See? ADD. Though technically, is it really ADD if one thing led to another? It wasn't like - ooh, shiny thing.

So yeah, somewhere in there I went after Ruby on Rails because it was teh new hotness, OMG. I was wowed by the screencast of DHH crafting a blog from scratch in 10 minutes (or however long it was). I never really got anywhere with it.

I found out about Django. I was having a debate about which one I should pursue at one point. I ended up going with Django and it felt like a much better fit.

Eventually, my first real big app was built: wickedwx on Google App Engine. For awhile there, GAE was my freaking hammer man and it was FREE. Money in the bank or not, I always have this attraction to free (well, or super cheap in the case of Amazon S3).

But I have tech ADD so eventually I started to stray. I learned of node.js and it became teh new hotness for me.

Unfortunately, I couldn't get anything done. Part of the problem at the time was that there were no Heroku like options for hosting it and I didn't have a VPS so I had no instant satisfaction to drive me by being able to post it and share it with the world. Plus, I just didn't really like JavaScript.

So I spun my wheels for like a month or something, all the time not touching Python and losing all of my momentum in it.

I learned of the Rails Rumble (2010) and I decided that that would be my thing. I was going to give Rails another try.

Fast forward a few months and I was no longer using Rails. But I had found a friend in Ruby. Ruby had felt awkward the first time around in the mid 2000s, but somehow it was really clicking with me this time around. And then Sinatra became my Rails substitute because Rails was overkill for most of the stuff I was working on. And then Jekyll became my hammer because of most of the reasons mentioned in the static web site article yesterday.

Editor's update: we are halfway there. More rambling to come to inflate the word quota!

I ended up rewriting wickedwx in ruby and later I was thankful I had gotten the jump on that when Google started pulling the rug out from under developers with their massive billing change.

But for some reason, I ended up straying again. Back to node.js.

I can give a few theories.

This time though, I actually managed to build some things in node (and probably thanks a lot to getting to use coffescript).

But things were too slow and I swear it took me a good 2 or 3 weeks before I ever understood WTF a callback was. Or scratch that, understood it enough to actually do one.

I distinctly remember all of the web scraping stuff I wanted to do, but had no idea how to implement it because of callback spaghetti.

So even though I did manage to build a few projects and useful personal tools with node, fundamentally, I was unhappy.

So I returned to Ruby. And I felt like I was coming home.

And I haven't left since.

So yeah. That's how I know that Ruby must be "the one". Because when I strayed from Python for node, I didn't end up back with Python, I went after something different. So the fact that I returned this time to Ruby instead of chasing after the new hotness like Erlang or Clojure or Haskell or something, it must be love or something.

And now I'm productive again. And happy. Or as happy as someone who still isn't a programmer can be.

One of the reasons I'm not a programmer is just that I consider myself a builder. I'm more enamored with the thought of having the finished widget (the app) than the journey that lead there (the programming).

And honestly, I'm way more productive that way. When I wanted to learn Django basically just to learn Django, I didn't build all that much with it. Now I have a sh*t-ton of half-arsed projects! See, it's better.

So back to the original point of this article.

things I'm excited about and actually using

Ruby

For all the drama from above, Ruby seems to have been the language that I've actually stuck with to the point that maybe, just maybe, I'm actually past the advanced beginner stage.

Middleman

For the reasons listed here.

CoffeeScript

For when I actually do frontend work, it's the language that doesn't make me want to claw my eyes out.

And speaking of which, I never did get around to the irony (or maybe just weirdness) that I was in love with PHP, yet now I can't stand all of this extra noise from curly braces and semicolons and crap.

Leaflet

OpenLayers in a way, was the mapping version of node.js for me. Let me explain. I thought it was awesome and the future, but when I tried to learn it the first time, I got absolutely nowhere. And then I returned to it later on and actually built something with it (wickedwx, stormtimemachine, earthquakeradar). Frankly, it never did get any more pleasant for me. I just ended up with enough of my own code that I understood enough to copy and paste appropriately.

I've never really felt that way about Leaflet. For someone who is still very much a JavaScript noob, Leaflet has been so much easier for me. One of my big complaints with OpenLayers was always the documentation: either you were left with the obscure examples that you'll never need or the API reference guides that only a real programmer can grok (again, I am not a programmer). [ed. note: I don't know if this situation has changed, since I'm no longer actively using OpenLayers.]

Leaflet's tutorials are straightforward and include common scenarios. In other words, you can get up and running with Leaflet very quickly.

things I'm excited about and not yet using

In other words, these could be like node.js all over again: something that may well be awesome, but ultimately isn't a good fit for me.

Sugar

Okay, actually I am using this now on Cyclocane, but it was for such a short piece of code that I don't really feel like I'm using it yet.

Before Sugar, I was excited about underscore. Both of these libraries add sweetness to JavaScript. Adding back in some of the wonderful Ruby-like functionality that I miss so much makes JS (and by extension CS) more tolerable.

Writing with underscore always felt a little bit awkward (I wasn't using it enough for the syntax style to really get drilled into my head). Sugar's syntax looks much closer to the JS I want to be writing. It doesn't shy away from modifying native objects like underscore does.

AngularJS

The tagline is that this is supposed to be what HTML would've been had it been written to support dynamic documents.

I've spent far too much time watching talks about Angular and then not following along with the tutorials, but from what I've seen so far it looks to be the best fit for me going forward.

I'm excited about Angular because of things like intelligent two-way data binding, and having templates that you can actually make sense of because they're not piecemealed together from a whole bunch of different JS files.

If you're undecided on JS frameworks, I think todomvc is an awesome site and I wish more of these sorts of comparison sites existed for way more things. [ed. note: I had completely forgotten that SugarJS has one of these as well]

HTML5 games

Oh boy have I got it drilled into my head that this can be the way that I finally figure out how to elevate myself from beer money to rent money online (and of course, hopefully going far beyond rent money ultimately).

Frankly, I'm more excited about the prospect of "owning" some successful JS based games rather than the prospect of actually learning how to write them.

For one, this is just so far above my current skill level that it just feels impossible. My big plan is to learn from the greats by going through tons and tons of source code and hopefully being able to magically understand it all at some point so I can build my own cool sh*t.

yeoman

Unfortunately, yeoman has jacked me up a little bit. It seems like an awesome tool for building a so-called "single page" web app. But past that, Middleman is way more appropriate.

Unfortunately, I haven't yet figured out how I'd combine the two.

Like what if I want to do layout files or partials? From what I've seen, I think Angular has that capability... inside of its own "single page app", of course. If you want to build multiple pages at the static HTML level, you're going to be doing it by hand with yeoman.

Ultimately, I figure this will get solved in some way. Yeoman may branch out at some point and start supporting layout files and partial templates, or there will become some official way or best practice for how to integrate it with tools that do have this capability.

the $250 chromebook

And finally, the Chromebook.

At this point, I still don't know if the new Chromebook is going to be a success overall, but I feel this thing has the potential to be a big hit.

I'm very close to being able to afford it with my Amazon beer money (money accrued over many many many months because there wasn't anything "exciting" to buy).

I'm almost positive I wouldn't be happy with it overall, so I've come up with the following excuses to (potentially) spend my beer money on it:

Well, I guess that's it really. 2 whole justifications. I do have a family member that I think this might be perfect for, but I've still yet to find out if you can actually share your Chrome OS screen and/or have your computer remotely controlled with the Chromebook. I find "invisible" tech support to be far too frustrating, and if this feature does not exist, I fear things would be just as difficult to do over the phone as they are now.

wrap up

Of all the things I'm excited about, I'd say HTML5 games are the big one. And yeah, I'm using HTML5 in that generic "umbrella" sense that encompasses all of the new HTML5/JS APIs/CSS3 stuff.

Here's to hoping I won't be spinning my wheels forever, as I try to learn it.


teh hayley