Posts categorized as "reflections":
My Experience Learning Scala
Sometime in the last week I read an article about Scala, actually I think it was the interview with Twitter engineers about Scala vs. Ruby, and it really sparked an interest in the language for me. I’m sure at least part of the reason is because I’ve been writing mostly JavaScript lately and reading a description of Scala it seemed like a number of the functional programming practices I’ve picked up writing JavaScript would carry over well. At the same time though Scala is built on top of Java, a language I’ve become intimately familiar with even if it has fallen somewhat into disuse. Last week after reading the article and feeling this resonance with what I read further about Scala I decided to jump into it and see how much I could pick up.
The Scala website is well documented and has a number of good tutorials but something just wasn’t clicking in my head about the syntax or the language in general. I think feeling like I could get a handle on this language quickly is what has really driven me to obsess about it this past week. I ordered Programming in Scala from Amazon (before Amazonfail as it’s being called on Twitter [From AmazonFail to SorryAmazon]) which I’ve read about 200 pages of and continued to read over (and over) the pdf tutorials available to me. This weekend I started putting together an application written in Scala to be deployed on Google’s AppEngine since they released Java support and Scala compiles to Java. Additionally, my tentative plan for the application is to make use of a number of ‘Social APIs’ which are coming up more and more at work but I still know quite little about. The first API I decided to work with was Twitter’s and in just a couple of days (maybe 16 hours) of work I have the basic model classes written along with BDD specs for them using Scala Specs, and I’m also able to pull the data I want from Twitter and deploy to the AppEngine service. All in all I’d say not bad for a weekend’s work. There is of course quite a bit left to do before the application is finished but I’m proud of the first steps I’ve made. If inclined, the source for this experiment is publicly viewable as twitter-favorites on github.
Releasing My First Wordpress Theme
When I started work on the Wordpress theme for this blog I did so with thoughts of eventually releasing it into the wild but at the time releasing it was by no means the immediate goal. I wrote the theme myself because I wanted a reason to dive into some PHP as well as because I knew familiarity with (one of) the most popular blogging platforms could only be good for me. I started work on it around the time Wordpress 2.5 was released and github shows my first commit on 10 May 2008 though I know I started working on it prior to that because the first commit contains a pretty recognizable set of files.
After working on it for a while I it got to a point where I was more or less satisfied with the way it looked in my primary browsers of concern1. I largely ignored IE(Internet Explorer) because to be honest I didn’t expect much traffic and what traffic I figured I get I didn’t believe would be using IE. As a result I was content with my theme and while I realize it’s not a pillar of web design or anything I think it serves it’s purpose and features the important part, the content, prominently.
This all brings me up to about a week ago2 when I decided I could use some supplementary income and at the time I thought things looked ‘ok’ in IE and so it would be quick to polish things off, get it uploaded and wait to see if it got approved. However, once I read the information available on themeforest and realized what files where required and that there was an approval process I realized I had to take this a little more seriously. Not to mention that when I actually looked at the theme (and hence this site) in IE I realized how wrong I had been about the couple of quick fixes and then upload.
Knowing someone was going to be reviewing my work also made me a little more critical of it. I had included some MooTools in order to accomplish some pretty basic things. I did this mostly out of laziness and so upon looking at my work critically I knew this needed to come out because the 7 or so lines of JavaScript I had written using MooTools were certainly not enough to justify the library’s inclusion (as much as I do love me some Moo). So I took out MooTools and rolled my own native JavaScript to handle things like IE6’s lack of :hover support and IE’s general lack of :last-child support.
There were also some pretty nasty float bugs to clean up and in the process of all that I decided to take a sip the CSS3 Kool-Aid and smarten my suckerfish menus up for browsers supporting box-shadow. After the bugs were squashed and a little CSS3 was tossed in there I had to do something I never thought I’d have to do for a Wordpress theme; write documentation. After documentation it was just putting together zip files and taking some screenshots.
All in all I think developing this theme was a good experience3 and I’m actually looking forward to creating another theme as soon as I have a good idea for it.
The Lesson About /usr
Lately I have taken it upon myself to upgrade certain unix friendly applications which ship by default with Mac OS X Leopard. I can not say for sure what started this but I’m fairly certain it began with MacFuse and and my desire to find various things which would allow me to make use of this awesome bit of technology. The first one I found was sshfs which is available as from the MacFuse developers. Soon after I read something about the mystically difficult to find ftpfs. For reasons I can no longer recall I decided I simply had to find and install it. The one I found was curlftpfs and when I attempted to compile it I quickly discovered my version of curl was not up to snuff.
Having been shamed once by an installer I quickly reached out in search of the latest version of curl’s source. After all I’ve done the configure; make; make install routine plenty of times before. Sadly it took me far too long to realized the vast majority of time I’ve done the configure; make; make install routine it was to install new software not upgrade existing packages. So I went through the process the first time and couldn’t get curlftpfs to compile still; curl had not been compiled to the correct location because the old version of curl was still being found in the path. Running blithely ahead I recompiled with the ‘correct’ prefix of /usr. Now this install location should have been my second clue signifying I should stop what I was doing. Instead I moved right along compiling and installing into the /usr directories. I finished compile attempt number two for curlftpfs having learned it had not been compiled with some necessary option enabled and so it was time to compile curl again this time with the option enabled. Of course here the configure fails because I am missing the necessary libraries.
Naturally forging ahead I go and get the missing libraries compile and install them and try curl again. I have forgotten the reason but I know I was doomed for a couple more failures before I attempted to do what I should have done in the first place which is use my already installed MacPorts and just upgrade. Which is what I eventually try. However, it would appear the port command provided by MacPorts also relies on curl so this is a total bust. At this point I’ve forgotten all about getting curlftpfs to work and just want curl and port working again. By this time my frustration must have been palpable because I have no recollection of what I did to get those two things correctly compiled and running again.
The lesson I have learned from this is pretty simple. Don’t mess with the /usr directory without a backup/restore plan.