Archive for the ‘Tech’ Category

Fawkes Does Some (Quasi-Interesting) Technical Things

Sunday, January 24th, 2010

Several people doing this Iron Blogger thing are writing technical blogs rather than the more classical, perhaps less interesting “here are some things I did this week.” I’ll split the difference: “Here are some technical things I did this week…”

Web Design: myquestforcollege.com

Two weeks ago, I wrote an entry about the web, design, and my relation to it. In it, I stated my intention to make a site for my mother’s college consulting business. This weekend, in the midst of shifting from dayshift to nightshift back to dayshift, I, in fact managed to get it done. I started it over the summer. The sites design was based on playing with both the notion of the college search process as a “quest” and the logo which my mom designed and had designed—partially inspired by my signature

My Signature she took the Q and the C from Quest for College and made this:

I thought this looked like an X. Between these facts, I decided to run with the notion of a treasure map, treasure hunt, etc. I made this:

I am happy with how it turned out. My goal was to make it as professional as possible and I think it turned out well. What do you think?

Site Specific Browsers: Hiveminder

I was recently introduced to the notion of Site Specific Browsers. The idea is that with the increasingly blurry line between web apps and desktop apps, it is useful to abstract the former into the latter. In addition to giving you a quick shortcut into running an app, it gives you a sandboxed execution environment which will prevent one site from crashing the rest of your browser (much like the model in Chromium). I recently, copying Evan, used Fluid.app to roll a Gmail app that lives in my dock where Mail.app used to live. Thanks to some nice functionality that Fluid packaged in, it also has a nice badge label that shows the number of unread messages. I was trying to think of other use cases for this. The one I came up with was Best Practical’s to-do solution, Hiveminder.com. I rolled it using the standard Fluid procedure and got this:

This works, but isn’t ideal for such a site in my opinion. I thought this was a perfect change to play with another nice feature that Fluid threw in … the ability to convert it to a menu extra:

This gives this, in my opinion better, interface to activate it:

It was my opinion that the sidebar was kind of unnecessary for this interface. Luckily for me, Fluid has yet another feature that lets you add a user stylesheet for any site. After throwing this in:

#info-wrapper {
	display: none;
}
 
#headers {
	display: none;
}
 
.dropshadow_left_wrap1 {
	float: left;
	position: absolute;
	left: 0;
}

I got this:

I set it as a StartupItem. Hopefully this will encourage me to use hiveminder more consistently in the future.

Window Managers: XMonad.app

For a while now, more and more of my technical friends have been using the XMonad tiling window manager in their linux distros. I use OS X as my main OS these days, but I still spend quite a bit of time playing with command lines and wanted the ability to have full screen or split screen with terminal emulators. Given OS X’s BSD underpinnings and the XQuartz project, running XMonad on OS X is perfectly possible. There are nice directions on the XMonad wiki for using XMonad on OSX. But these directions are set-up to always use XMonad as your window manager when you are running X. Since I use things like Gimp.app , Inkscape, and Wireshark that are not really suited to a tiling window manager, I wanted an easy way to switch it on or off in a nice way. To achieve this I first, rather than using a .xinitrc, made a system-wide xinit script. I originally tried switching on an environmental variable, but this was not getting passed through the right way. Ultimately, I decided to use the app’s plist. So, in /opt/X11/lib/X11/xinit/xinitrc.d/97-xmonad.sh I wrote:

if [ $(defaults read org.macosforge.xquartz.X11 UseXMonad) -eq 1 ]; then
    export USERWM=$(which xmonad)
fi

(if you use Apple’s X11.app rather than XQuartz.app, you’d want it in /usr/X11/lib/X11/xinit/xinitrc.d/97-xmonad.sh instead and you’d use org.x.X11 rather than org.macforge.xquartz.X11).

Then I created an XMonad.app by setting up the standard directory structure:

XMonad.app
|-- Contents
|   `-- MacOS
|       `-- XMonad
`-- Icon

In XMonad I wrote:

#!/bin/bash
defaults write org.macosforge.xquartz.X11 UseXMonad 1
/Applications/Utilities/XQuartz.app/Contents/MacOS/X11
defaults write org.macosforge.xquartz.X11 UseXMonad 0

Finally I whipped up a niceish aqua-style XMonad icon:

and … ta-da:

(It is worth noting that normally I plan to use it mostly with my second monitor, so that the dock and menu bar won’t be in the way).

So, there you have it, other than the ruby class I taught (slides and example code at http://sipb.mit.edu/iap/2010/caffruby ), and the Google phone interviews I had, those are the technical things I did this week.

I hope you found them interesting. On to the last week of IAP ! (:-/)
~Donald

Fawkes Analyzes Relationship to the Web – Uncertainty Reigns

Monday, January 11th, 2010

The web is an interesting thing. It has its pros and its cons. It has fundamentally changed the way the entire world works. While connecting people and creating flows of information on an unprecedented scale it has also developed new and different fringe cultures. Its use has grown rumors and memes aplenty, helped organize revolution, launched careers, ruined lives and it has ruined them.

It has been observed that it managed to revolutionize the world in ways that only the printing press had managed before it. And yet, the web runs on deceptively simple technologies. And enough abstraction is stacked on top of those that pretty much literally anyone can add to it given the inclination. If they use many of the tools freely available they can even arrive at a relatively professional-appearing (if formulaic and/or poorly marked-up) site with minimal skill. It is because of this fact that a lot of Computer Scientist / Software Engineer types these days tend to scoff at  people who aspire to be a web designer or web programmer. It is so simple to get off the ground and do the basics that we begin to fail to see it as worth of our time. I know that at times I have taken this prospective, and I know I am not alone in it. Add to that elitist perspective a tradition of gross misuse of tools, glaring design flaws in some of the cornerstones, and hairy privacy issues and its no wonder that many veterans in the field shy away completely.

Yet, there are many, from the proverbial man on the street to some of the world’s largest corporations who are betting on the fact that the web is THE future of computing, and that all the rest will fall by the wayside. Take Chrome OS as an example of this mentality. And as time goes on, more professional standards develop better tools and platforms which allow the writing of better code and the field eventually looks at the core like most other software. Decentralization provides convenience and (potentially) redundancy. Be it in the strictly technical concepts of the move towards “cloud storage” and the rising success of distributed version control systems or the social development of “digital nomad culture”, it is apparent that whether or not the web is becoming THE platform of computing over time, it is certainly becoming a major one.

It is for these reasons that I can’t actually afford to ignore the web as a platform. And I haven’t. Throughout middle school, high school, and up to the present, I have learned and used at least the basics of most key technologies (HTML, CSS, JavaScript, relational databases, PHP, Adobe Flash). But my grasp of how much I cared about the field has always been tenuous. Though I have owned donaldguy.com for a number of years, and utilized a number of its subdomains for complete simple projects, I have never gotten around to writing up the main pages. Since arriving at MIT I have gained access to the websites for almost every group I am involved in (sipb-www was the first SIPB list I was added to after being prospectivized,  I have webmaster bits for the Toons, for East Campus, and for Fifth East), and yet have not made any of the major redesigns or overhauls I have considered (though, thanks to biyeunand price mostly, SIPB’s, got done without me). This IAP, I was signed up for the 6.470 web programming competition (and attended almost all the lectures, picking up at least some new info from the Flex and GWT lectures, and reading about HTML5 during the rest), but dropped the class because I didn’t have a team and had no excitement about or good ideas for this year’s challenge.

And yet, I am spending a good portion of my newly created downtime reading The Samshing Book and the canonical text on the Ruby on Rails web framework. While in the later case, this is largely because I can’t be a well rounded rubyist while remaining ignorant of Rails, it is not as though I don’t intend to use it… at some point. Last week, for example, I attended a hackfest held by Boston.rb which as usual was held at the offices of Rails development studio thoughtbot. After seeing their offices, some of their work, and meeting some of the people there (though I was perhaps a little more shy than I’d have liked), I think I may want to apply for an internship there, if Google doesn’t work out.

The up-shoot is that I am quite conflicted regarding the web. I am curious why this is and wish to briefly examine here, if you’ll indulge me, dear reader. When approaching creations for the web there are a number of mentalities, mostly addressing the relative importance of content and form. It is indisputable that good content is essential for a website to be considered good, by any reasonable standards. The difference in mentalities is whether good content alone is enough or whether good design is essential as well. There are further differences in what constitutes good design. Some people are satisfied take a minimalist approach: Edward, for example, has a nice minimalist layout over at ezyang.com. I could whip up a similar site at donaldguy.com or dguy.org in under an hour (though truthfully — I have less interesting (to others) material to talk about). And yet, I would never be satisfied to use such a design. For some reason my design sensibilities want a much more graphically attractive design. The problem is that my design sensibilities seem to currently outstrip my design skills… and I’ve never been quite sure how to fix that. Or even if I can. I like to think of myself as both an artist and a scientist. But my arts have always been wordy– singing, theater, poetry. Though I can look at a design and decide if I like it, I don’t know that I really have the ability to create a design I like from scratch.

I suppose I really need to practice to find out. During IAP, despite dropping the web design class/competition, I really need to make sure to get some web work done. Ideally, I probably need to finish the site for my mother’s college counseling business that I was asked to do more than a year ago and actually got around to working on mid-summer before I got taken down by mono.

If and when I manage this, I will be sure to post the results here.

In the meantime, if anyone has any specific thoughts on how to settle my relationship with the web, to improve my design skills, or just wants to reflect on their relationship with the web, feel free to discuss it in the comments.

Thanks for reading,
Happy New Week,
~Donald