It’s official!

In the end, it was easy–even easier than pressing the “easy” button at Staples–to get my new self-hosted Wordpress setup going. Almost as soon as I got started, however, I realized that I was not going to find myself being happy anytime soon with most of the Wordpress themes out there. I don’t profess to be an HCI expert, but I’m no fan of visual clutter and find that it really gets in the way of actual content. I’ve got plenty of clutter in my life as is, especially on my desk (which bothers me less since most of the world doesn’t see it, thank God). But there are two places where I tend not to appreciate clutter: in my living space and on web pages.

So after doing a bit of searching around (using the terms “minimalist”, “Wordpress” and “themes”), I came across the Satorii theme, which I am now adapting for my own site. It’s a nice black/white theme that supports navigation (for my key pages) and looks great (and loads fast, thank you). This template rocks, and I thank the author for his fine work

And because I absolutely need to be able to view my site properly through a mobile web browser, I found the Wordpress Mobile Edition plugin. So for those of you who are all googly eyed over your Android and iPhones out there, you can browse my site. (I’m not expecting that this is a huge number!) I also thank the author for his fine work on this much-needed (and desired) plugin.

So with Wordpress, we have a winner. I like the fact that these guys seem intent on making sure that everyone (even those who are DIY like myself) has the good stuff, not just those who use their commercial offering. Within minutes, you can get this wonderful software working on your hosting site–or even your own server, which I am also doing for other purposes–and you really won’t find yourself looking back.

Happy Holidays!


Moving…

Well, it was a tough decision. As much as I like Google Sites for private team collaboration, the same cannot be said about using it for my personal web presence. As of today, I am making my blog (even with its remaining imperfections) the new home for “all things George”.

So effective immediately, http://gkt.cs.luc.edu will redirect you to http://www.thiruvathukal.com. The old site will continue to be available at http://sites.google.com/a/etl.luc.edu/gkt but will be decommissioned once I have finished migrating the remaining content. I’m really close!

Please don’t take any of this as a loss of Google love. I just found myself needing a lot more customization potential. The thing that pushed me over the edge, however, is the ability to support a minimal mobile theme, so you (the dear reader) can view my pages (most of the time) through a mobile web browser.

Enjoy!


It’s Comcastic…not

Well, it is definitely wreaks of desperation: Comcast has recently decided to hijack DNS requests, especially when unsuspecting end users are “helped” when they type information into the URL field of their favorite web browser. Here is a picture of my typo “ig” being fed into Yahoo! Search without my consent:

So first, let me start by saying, “Thanks, Comcast.”

The worst part of what Comcast is doing is that there is an irritating opt-out process, as noted in Ars Technica, where one is forced to log in, when this could be done without a login. Worse, when I tried to opt out, the username I created with Comcast fails to work (yes, they’ve seemingly changed something). I hope 4G proves to be a winner in Chicago so we can eventually dump team Comcast. They obviously have complete disdain for their customers to be ruining the internet in this fashion.

Then I realized, “Why am I using their DNS servers anyway? I’ve always been smart about this, but when I did a recent upgrade to make my router developer-friendly, I forgot to change the DNS servers.

As luck would have it, Google recently announced their own public DNS service. You simply set your nameservers to 8.8.8.8 and 8.8.4.4 (easy to remember, eh?) on your router and you won’t ever have to deal with Comcast’s DNS squatting again. This gave me a nice little performance boost (pages loading almost instantly) so I was able to kill two birds with one stone, pardon the cliche.

There are other public DNS options for those of you out there who don’t trust Google and the Internets. I’m not going into that here but you can search for public DNS easily enough.

Happy surfing (again). God only knows what Comcast will do once they figure out that we don’t want their help.


Back to Wordpress

Well, it’s official. Welcome to my new blog. After giving a major blogging solution a try for awhile, I began to find the overall experience pretty substandard. The inability to customize templates easy and have even a semblance of proper navigation (for key pages) began to take its toll.

In the end, I want something that is well-maintained and offers a baseline level of customizability (read: greater than zero) that allows me to maintain an attractive yet professional presence. Given that we (Nina and I) decided to go with the excellent hosting provider, site5.com, to set up a site for business purposes, I figured, what the heck? I can just move my existing content to Wordpress and host it myself.

To my amazement, Wordpress setup on most reputable hosting providers (site5.com being one of them) takes minutes. I was able to download the Wordpress tarball to my top-level web directory and start the install. The only prerequisite to get the installation going was to create a database, which is done painlessly through the control panel. Within minutes I was up and running. Things have sure come a long ways since the days when I had to do everything meticulously at the command line.

And importing existing content from the “old” blogging provider was a snap. I exported from my existing site and imported into the new one.

Anyway, for those of you who want to maintain a bit more professional presence, you can go with a number of freely available solutions, but for under $4-$10/month, there are a number of solutions. I went with site5.com, because they’re seemingly among the few who have eliminated the rather lame storage and bandwidth restrictions. If you’re going to compete with the big boys (read: cloud providers), you can’t be having these ridiculous limits. And besides, if you are hosting sites that take up a lot of bandwidth, it’s just a matter of doing traffic shaping to keep customers from getting out of hand. (Lucky for me, I don’t think there are millions of people reading my blog, but who knows?)

Surf’s up!


Getting Ubuntu 9.10 to work (mostly) right on my netbook

Alright, this posting isn’t going to be long. I’ve been running myself ragged lately.

So Ubuntu 9.10 (hereafter Karmic Koala) was released in late October. I was anxiously awaiting it for my Acer Aspire D250 netbook. I also wanted it because a number of packages were out of dates, even in backports, and I tend to be kind of lazy about having to rebuild packages from scratch unless there is a good reason.

I did a fresh install of Karmic and, voila!, things didn’t work completely well. For one, the wireless LAN (Broadcom) didn’t work out of the box, whereas in 9.04 (Jaunty) it did. This is because Jaunty, seemingly, was picking up the restricted Broadcom driver by default (a good thing). Not so in Karmic. There were many other things not to like (from my p.o.v.) including the default selection of an “ext4″ filesystem. So I decided to go back to 9.04 and attempt a distribution upgrade (via Update Manager).

Going this route allows you to stick with what is known to work, and works well. Ubuntu 9.04 does work reasonably well on many netbooks, especially if you install the restricted backports to replace certain drivers (Atheros in particular). But you will likely want to take the plunge and upgrade to 9.10, especially if you are doing development work (e.g. Mercurial is way out of date on 9.04).

Happy hacking!

MacPorts, Part 2

As I reported in my earlier posting, I found a workaround for using MacPorts on a case-insensitive filesystem. After numerous attempts to figure out how to get an image to auto-mount cleanly, I decided enough is enough. I tried everything, including AppleScript and Automator. Great stuff, but the same scripts that worked when I would launch them manually failed to work properly when I tried to “open at login” on the dock. Needless to say, those technologies seem kind of half-baked to me.

So I decided to do a full backup of my system (using Time Machine) and reinstalled the OS, this time making sure my boot volume has the proper filesystem (HFS+, Case Sensitive, Journaled). Make sure you run Disk Utility from the DVD before beginning the install process.

You have two choices when doing an restore from Time Machine. You can do it after the install completes (and before creating your first user) or after installation using the Migration Assistant (in Applications -> Utilities). If you go with the latter option, I suggest creating a different username so you can use the same username as you had before (assuming you want it).

Anyway, I don’t think too many people have been glued to their computers wanting to know how this turned out, but I have decided to fix the problem permanently for my own sanity.

The lowdown: If you are serious about doing software development on your Mac, you want case sensitivity in your filesystem. Or at least make sure /opt lives on a case-sensitive volume that mounts at boot time.

Chicago 2016 Nolympics: A longtime resident’s view.

I wasn’t among the naysayers. Honest. Yet I won’t say that I offered any kind of vocal support, because I definitely had more than my share of concerns, especially as a parent trying to raise two children in this beautiful city.

But it’s now official. Chicago won’t get its Olympics. Neither will Illinois. Neither will the USA.

It is my prevailing view that a unique confluence of issues contributed to the failed bid. Yes, we have our fair share of corruption in Chicago and Illinois, and it’s safe to say that we’re really in the cesspool of American politics. But let’s face it. Something really did do us in. And USA’s recent performance on the world scene certainly didn’t help us much, regardless of your political views. (For an interesting view of international concerns that may have been at play, see this Slashdot posting about USA border security.)

Let’s focus on the Chicago problem, since it is in many ways a separate state from the rest of Illinois, and the USA in general. I think when I first started thinking that something is seriously rotten in Chicago (ironically, brought to a conclusion in Denmark. Thank you, Shakespeare.) was the closing of Meigs Field. In many ways, this incident sheds light on what we observed in this town the past couple of years when it comes to the 2016 olympic bid. I’ll leave the details to history but in this unfortunate incident, our august Mayor destroyed this airport–the one I used to fly into or over on Microsoft Flight Simulator–in the middle of the night. Granted this airport was experiencing limited use, but it was used by the Tuskegee Airmen to provide free airplane rides to Chicago youth, something many youth never get a chance to do in their lifetime, owing to the challenging economic circumstances for many in this city, good economy or not. In any event, in a show of legitimacy, the mayor opted to bulldoze the airport in the middle of the night, in what was the beginning of increasingly autocratic and authoritarian behavior not seen since the rise and fall of some of the world’s worst dictators. It was the sort of thing you simply never expect to see in the USA in modern times.

So the brutal closing of Meigs Field (couched, of course, in the guise of Burnham Plan) was the beginning of the end for this formerly popular mayor. But wait, there’s more. For each item, I list the basic consequences to the residents, who always come out on the short end of the bargain (if at all).

  • School violence: I’ve lost count but in many parts of Chicago, our kids cannot go safely to/from school, despite being relatively safe at school in most cases. The number of kids to die on or near school grounds is unacceptable. I still remember seeing Arne Duncan brought to tears as yet-another school student was murdered.
  • Parking meters: The mayor had a brilliant idea: Lease the city’s “valuable asset” to a private company. Since then, parking rates are up by more than 400% in most parts of the city. I’m no fan of people, including mysellf, driving all the time and everywhere, but the reality is that this money is lining the pocketbooks of FOD (friends of Daley). Worse, now that the parking meters are replaced by vending machines, those with families, the elderly, or people with disabilities would be wise to park close to the parking pay station, if you are lucky to get a spot. You need to get out of your car (try this with 2+ kids), feed the machine, wait, wait, wait, and then (drum roll) put the ticket back in your car. Not much fun. It will be even less fun in winter.
  • Property taxes: While the housing market was going down, you guessed it, the city was raising property taxes. While they ended up adjusting some downward but not far enough. With the booster shot of county tax increases, we’re really getting the hose job, and Chicago is becoming an increasingly unattractive place to live and do (small) business. It’s no wonder that most of the folks interested in the Olympics represent big business interests. It would be one thing if these raises were put toward anything useful (education, public transit, and public safety) but there seems to be no visible movement on this front and at least for the moment, these taxes are not resulting in better revenue, so the cuts will keep coming anyway.
  • Skyway Robbery: We should not forget that the mayor’s great inspiration for parking meters came from the lease of the Chicago Skyway. It now costs almost $4 to ride on the bridge to nowhere. (Oops, that’s in Alaska.) I love Indiana but, please, it shouldn’t cost $4+ to go there from Chicago. Something is seriously messed up. I was going to add Midway Airport to my list (which he also wanted to privatize) but this appears not to have been successful, so I’ll spare you (the readers) the agony. Speaking of Indiana, we love going there, but adding $8 to the trip is a bad deal for everyone and probably deters some Hoosiers from coming to Chicago (bad for business).
  • Potholes-r-us: If you like potholes and bad roads, you’ll love Chicago. In fact, it would be even worse if it were not for the stimulus. I can’t even go a few blocks without running into one of these sinkholes. It’s worse than when I was a graduate student on the south side in 1988. Worse, there are people constantly digging up the streets for one inane reason or another and, of course, the city could care less and has no regulations for how to patch things up. I’m guessing every city in America has road problems, but I don’t care. I live here and want it to be safer. We have some of the worst roads in America. You can only blame so much on the extreme climate.

I’m sure I have left a good number of things out. It doesn’t matter. I think what we are seeing is what happens to a city when leadership (no matter how well-intended) doesn’t change periodically. The current leadership has run out of ideas, and the Olympics was probably the last idea we’re going to see from them in awhile. There is no doubt that our mayor has done much good for the city. Some of his projects have turned out astonishingly well (e.g. Millennium Park). Even so, these projects show evidence of major cost overruns and the inability to stay on schedule, something that will not serve a host Olympic city well. I think the IOC did a big favor for us by saving us from ourselves.

In any event, as a lifelong fan of the Chicago Cubs, who play America’s pasttime (note, I did not say sport), or baseball, I would say, “Better luck next year.” But there will be no next year. Let’s just hope that Chicago can rebound and get back to a focus on the citizens who actually want to live here (i.e. me).

I’d be remiss if I did not conclude by saying that this is one vote that truly put Chicago at a huge disadvantage: the dead could not vote. And the living could not vote multiple times. Bummer, dudes.


Reacquainting an old Netbook with Linux

I was one of the early adopters of the Asus EEE PC–one of the original Netbooks. This model, the 901, features two internal drives. It’s a bit of a weird setup: one measly 4GB drive, and one 16GB drive. Both are solid state (obviously).

Does anyone here remember their first (external) hard drives? Most were a tiny fraction of 4GB.

In any event, this time around, I decided to avoid setting up swap space when installing the latest version of Ubuntu on it (Ubuntu 9.10 Alpha 6, NMR edition). The reason is simple. It’s kind of silly to allocate swap space a priori in most cases, and it makes even less sense having to decide which drive to put it on for this model.

So I decided this time around to create a swap file instead of the usual swap partition. I already knew how to do this, of course, but I searched Ubuntu and came across this nice FAQ, which covers how to add more swap after installation (search for How do I add more swap? on the referenced page). I’ve also used this trick to add swap space to a “slug” (the NSLU2), which suffers from many of the same challenges as early EEEs. So I hope everyone finds this to be useful. I’m almost finding myself wondering why most OS installers don’t create the swap file instead. Among other things, it would give folks a line in /etc/fstab that could be copied, should there be a need to add more swap space.

You might be saying, “I don’t need swap space.” Think again. Unless you are planning not to use hibernation (suspend to disk), you’re going to find that you need it. So I hope this posting will help others!

Surf’s up!

MacPorts on Snow Leopard without changing your current drive’s filesystem.

I had been experiencing a LOT of trouble with MacPorts on OS X after upgrading to Snow Leopard. As it turns out, I apparently was bitten by the perennial case-insensitive filesystem, which of course is the default option when one installs OS X (or has it installed for them via Apple).

So I followed the instructions on Konstantin Läufer’s Blog: Prerequisites for Building OpenWRT SDK on Snow Leopard with a slight amendment, given that I was completely unwilling to change the host filesystem for no particularly compelling reason. (Yes, I am a Unix guy, but I really don’t care about case-sensitivity when I am not doing programming.)

Enter disk images, which is perhaps one of the best OS X features that is taken for granted and can be a true life saver at times. With an disk image, you can create a filesystem that differs from the host as an read-write image, mount it, and use it from the OS or any application–seamlessly. So here are the steps to get /opt/local to live inside a case-sensitive filesystem but be exposed through the host filesystem (so that MacPorts can be maintained properly):

  1. Launch Disk Utility (Applications -> Utilities -> Disk Utility)
  2. At your discretion, create either a regular read/write image or sparseimage. Sparse images are the preferred option, especially if you want room for growth. Make sure you enable the case-sensitive option, which is needed for MacPorts (at this time).
  3. I suggest putting the image somewhere intelligent like your home directory -> Disk Images (create a folder). You may also want to turn off backups of this directory in Time Machine, if you are updating MacPorts frequently. It is easy to put an entire folder under an exclusion list in Time Machine.
  4. When you created the disk image in step 2, you likely gave it a name. I named my image MacPorts. Upon creation, the image should mount automatically and will stay mounted until you unmount it. In my case, I see the following when I go into Terminal:

    /dev/disk3s2 on /Volumes/MacPorts (hfs, local, nodev, nosuid, journaled, noowners, mounted by gkt)

  5. So by way of example, I did the following. You may opt to do something different, depending on your needs:

    mkdir -p /Volumes/MacPorts/opt/local
    Make sure /opt does not exist. (I will let you decide how to do this!)
    ln -s /Volumes/MacPorts/opt /opt

  6. At this point /opt/local is living on your disk image. You may now proceed with the MacPorts installation on Snow Leopard.
Update: One thing I discovered after making this posting, of course, is that there is seemingly no “nice” way to make disk images mount at boot time. I still haven’t figured this out. However, I have discovered that for the most common use (i.e. when I am logged in on my desktop), I just need to make sure there is a proper script that runs at boot time to ensure the MacPorts volume is mounted.
So to get this working, you just need a tiny bit of AppleScript code. You can actually record the actions using the AppleScript Editor in OS X. Then you end up with a script that looks like this:
tell application “Finder”
activate
set target of Finder window 1 to folder “gkt” of folder “Users” of startup disk
open document file “MacPorts.sparseimage” of folder “Disk Images” of folder “gkt” of folder “Users” of startup disk
close Finder window 1
end tell
Pretty slick. Then all you need to do is compile it into an Application (a .app) bundle. Drag the bundle to the “dock” and right click, Open at Login. That’s it. You’ll have the bundle mounted when you log in to your desktop and be available immediately.

Computational Thinking and Core Curriculum

"Computational Thinking" represents "a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use as described by Jeanette Wing (in CACM, Viewpoint, Vol. 49, No. 3). Like many computer scientists, while reading her viewpoint, I felt like she was saying what many (ok, all) of us are thinking during a time where computer science enrollments are still near historic lows. And for those of us who have been down in the trenches trying to remedy the situation, we have been hard at work to introduce new ideas within our respective institutions.

I won’t rehash all of Jeanette’s excellent article. Instead, I hope to commence a discussion that I hope could eventually become a topic or set of topics within Computing Now: how to engage the world in computational thinking. In today’s posting, I am focusing on curricular matters. I pose the rhetorical question: How do we teach computational thinking? It’s a discussion and debate worth having.

For the past few years at my university, Loyola University Chicago, I have been working on how to foster interdisciplinary and multidisciplinary research. My experience has convinced me that it’s easier said than done and will probably require more than merely thinking computationally. It requires us to think from alpha to omega, that is from the beginning of the academic process (the secondary schools) to graduate studies, on how to engage students, other faculty, and the community in general. Toward meeting at least a part of this goal (getting students early) I introduced a new course on the History of Computing, aimed at the vast number of students who enter college and might never have taken a computing course. (After all, it’s not required in most of our secondary school system, remaining a topic of niche interest.)  My initial thought in introducing this course was to acquaint our majors with the pioneering ideas of computing, which do go back thousands of years, because I noticed time and time again that the vast majority of computer science students (and even many professional computer scientists) really don’t know terribly much about computing history–or worse, history itself–and the important impact it’s had on actual history! So I was developing the course concepts and, suddenly, an opportunity presented itself: core curriculum renewal.

At my university, similar to many universities, there is a good amount of rethinking on "what should be required" of all students. In the case of Loyola, the core renewal process focused on areas of knowledge/learning as opposed to what departments are teaching the courses. This important separation of concerns enabled the possibility that departments such as computer science could propose courses in certain knowledge areas, subject to intellectual merit of the course being proposed.  I decided to focus on historical knowledge and, seeing that IEEE  was publishing the Annals of the History of Computing and (now) Computing Then, I gained confidence that there must at least be some merit to the idea. There were also other related courses I discovered on the net (Kernighan’s "Computing in our World" at Princeton and Bergin’s History of Computing class at American University), so it was not without precedent at least to get such courses approved in other universities. What might be without precedent is to get the course included as a recognized core historical knowledge course and to develop a course that meets the rigid requirements of our core curriculum. (The course has proper texts, films, lectures, discussion assignments, and strong writing/presentation components.)

To my amazement and great delight, the course was approved for students to elect as one of their two required Historical Knowledge core courses in 2004, meaning that students can learn a good amount about history in general from a computing perspective. Since then, hundreds of students have taken the course, and many students have approached me to become majors. (Our enrollments haven’t changed dramatically but are improving. We’ll be happy to teach students about computing using a more humane approach.)  I think it’s an important part of introducing computational thinking, especially to incoming students. All too often, I feel that the first contact most students have with computer science starts with heavy-duty mathematics and programming courses, which is definitely important but sometimes fails to present a meaningful context. And a bad first experience with CS, based on my discussions with numerous students, is likely to be the last experience.