Posts from — January 2008
Ruby on Rails
I’ve been thinking about web applications recently and one thing is for certain: if you want to develop a web app, there is no shortage of opinions about the best way to do it.
I was turned to thinking of web apps by a Steve Yegge post concerning code bloat. The post isn’t specifically about web apps per se but touches on the programming language flavor of the month: Ruby and it’s signature preparation Ruby on Rails (RoR).
Flavor of the month is probably too strong a phrase. It appears that Ruby and RoR have been around for a little while now and are actually solving real problems for real people. That’s good news. Probably the best indicator that the RoR crowd is onto something is the effort to replicate their web app framework into other languages. They say that imitation is the best compliment.
So I’ve decided to investigate what the hubbub is all about. If the fanboys are right, then there might actually be something here worth learning. It’s often true that there are many ways to skin a cat, but all things being equal, the approach that achieves cat sans skin is what most people end up doing.
I’ve considered taking CSCI E-75 (Building Dynamic Websites) in the past but could never fit it into my schedule. That class focuses on using the traditional tried-and-true LAMP stack for developing applications. There’s nothing wrong with that. If anything, thats preferable to learning a single framework since the skills used in constructing a web application from discrete components is valuable for the insight you get into how things work under the hood in just about all frameworks.
Of course, the flip side to that is that no-one uses discrete components anymore unless they really need to. The whole point of a framework is to solve the common problems once and then do targeted customizations where needed. That’s why no sane individual writes blogging software anymore. You get a copy of Wordpress and move on to the writing part.
I think that’s where RoR is probably a winner. The complaints about RoR are mainly concerned with scalability and speed. Nobody seems too concerned with either of these problems to abandon their efforts yet. It’s kind of taken on faith that more attention to these problems will yield improvements once the pain level gets too high. That’s the way it is with all new technologies. The same criticisms were leveled at Java by C++ programmers (and still are) when it was new. Most of those problems have evaporated as implementations have improved.
I’ve installed the code on my machine and purchased a book to thumb through. With any luck, I’ll have an app up and running before too long. It’s all about the pain level though. If it’s harder to do the simple things, you’ll hear about it. I’m looking forward to making progress and getting things done.
That’s why computer science is cool. You end up getting to play with really cool stuff. And it’s always fresh.
January 30, 2008 2 Comments
Computer Science Education
It seems like there are a lot of people that have distinct opinions about CS education today. The more I look, the more I find articles written by other prominent computer scientists on what they see as really key deficiencies in CS curricula. One of the more interesting and entertaining posts comes from a Google employee. In this long and humorous post, Steve Yegge talks about compilers and why they are key to understanding the discipline of CS:
The first reason Compiler Construction is such an important CS course is that it brings together, in a very concrete way, almost everything you learned before you took the course.
You can’t fully understand how compilers work without knowing machine architecture, because compilers emit machine code. It’s more than just instructions; compilers need to understand how the underlying machine actually operates in order to translate your source code efficiently.
Incidentally, “machines” are just about anything that can do computations. Perl is a machine. Your OS is a machine. Emacs is a machine. If you could prove your washing machine is Turing complete, then you could write a compiler that executes C code on it.
But you knew that already.
You can’t understand how modern compilers work without knowing how Operating Systems work, because no self-respecting machine these days runs without an operating system. The OS interface forms part of the target machine. Sure, you can find people working on five- to ten-year mainframe projects that ultimately run no faster than a PC from Costco, and they may dispense with the operating system due to time constraints, plus the fact that they have a worldwide market of one customer. But for most of us, the OS is part of the machine.
You won’t understand how compilers work unless you’ve taken a theory of computation course. The theory of computation reads like part one of chapter 1 of a compilers book. You need all of it.
I’m taking CSCI E-207 (Introduction to Formal Systems and Computation) as the very last course in my program at Harvard Extension. Given that the orientation of the school with respect to CS coursework is clearly biased towards [Read more →]
January 24, 2008 2 Comments
Classes on Functional Programming
I’ve been busy with finals this past week so the posting has been light. Now that I’m all done with the Fall semester I’d like to bring up a particular area of concern about the computer science classes at Harvard Extension: there are no classes that focus on functional programming.
January 22, 2008 2 Comments
The HES Community: Life as an ALB student…
Over at Harvard Extended, Ian posted about a problem that is particularly acute at the Extension School: lack of student community.
If there is one thing that is particularly difficult about being a HES student, it has to be the sense that you are all alone in tackling some of these difficult classes. My first semester, I was required to be on-campus to take a couple of clases because they were required and did not have on-line sections available. In general, there are about 5 times more classes available as on-campus classes than as distance classes. Since I actually live in Washington, DC, I had to commute weekly to Cambridge to attend class.
In the evening, I would dutifully sit for class along with the other students. Of course, there was little socializing between us. We simply didn’t have the time. With one class at 5:30 and another at 7:30, most people would be done with classes by 9:30. At that hour, most people are thinking about heading home to make dinner rather than hang out on campus to socialize.
This makes sense. Most people attending HES have day jobs. Many have families as well. The free time that college students have in the evenings and weekends to make friends with classmates and socialize simply isn’t there for HES students. As a result, there is less of a feeling that you are a part of the college than, say, the College students. At the College, most students live in the dorms and are carefully matched with others to stimulate interesting dialogue with others. There is a deliberate effort to create community from a group of people that might have widely different backgrounds.
At HES, there is none of this. There are a few HESA events every now and then, but they are poorly attended and not much use for learning about your fellow students. Probably the best oppportunity I had to meet my fellow ALB candidates was EXPOs. With a small class size, there was at least a bit of an opportunity to get to know a few others.
I’ve suggested in the past that there should be a greater effort on the part of the HES administration to bind the students together. One suggestion that I had was to have us all join a cohort based on our ALB admit year. Since we all proceed towards the degree at different rates, this seems like a sensible manner of connecting everyone. In as much as people have to take EXPOs to apply for the ALB, that might be another mechanism for joining people together. Nothing builds community like shared experiences, particularly difficult ones.
I’m probably going to graduate on 2009 without knowing a single person at HES. That’s a bit sad. I’ll have friends and family there but it’s not the same as graduating with classmates. Only someone who has shared your struggle can truly understand what it means to get to that day. I’m hoping that between now and then, I’ll make a few more friends at HES to share graduation with.
That would be nice.
January 16, 2008 No Comments
Field of Study and my Reading and Research Project
I’m thrilled.
My Field of Study application has been approved which means that when I am awarded the ALB, I’ll have a Computer Science “field of study” noted on my transcripts. Yay! Also, one of my previous professors has agreed to provide support to my effort to complete a Bachelor’s thesis (called a Reading and Research project). This is all good news.
One of the weird things about HES (and Harvard in general) is that undergraduate degrees don’t have majors per se, but concentrations. Harvard College has a long list of undergraduate concentrations:
January 16, 2008 10 Comments
I Love My MacBook : MacFUSE
I just wanted to share with you another cool tool that I’ve been using: MacFuse and SSHFS.
With this very neat program, you can use SSH as a means to mount a remote filesystem. In a lot of circumstances, the only way you might have to access another machine is via SSH. There are native tools on OS X (Tiger and Leopard) to copy files from one system to another. Native command line tools like ftp and scp are among them. Of course, those tools don’t allow you to integrate a remote filesystem into the current one on your machine in a seamless fashion.
January 13, 2008 2 Comments
I Applied For Financial Aid
Not that I think I’ll get any. As it turns out, my EFC (Estimated Family Contribution) is much higher than the Cost of Attendance at Harvard Extension. The main reason that I did it is because I then qualify to obtain student loans and as an “independent” student, I can borrow more than a “dependent” student, even if my EFC is too high.
Like many people employed full time, I get some tuition assistance from my employer. In my case, I get about $8000 per year to attend school. As long as I get a B or better in the classes, they pick up the tab for tuition, fees, and books.
Of course, I need to pay the tuition in the meantime. As it turns out, my current method (using a credit card) is costing me too much in interest during the term. I’ve decided to investigate using student loans to help with that financing. If all goes well, I’ll be able to pay them off at the end of the term and leave with a zero balance. Of course, I can always just consolidate the new loans with some old ones I have. It turns out that the interest rates are really pretty low right now, especially compared to credit cards. As long as you are enrolled in a degree program at an approved school, you can borrow money to go.
This kind of financing will be even more important once I apply to graduate school. Classes at the school I’m looking at cost about $4K each which is a lot to carry on a credit card for 4 months. What will probably happen is that I’ll run up some student loan debt and then get a direct federal consolidation loan to roll it all into one payment.
I’ll let you know how it goes.
January 11, 2008 No Comments
Harvard’s Latin Salutatory Address at Commencement 2007
May the Harvard Force be With You!
I actually understood some of that without looking at the subtitles. How nerdy is that?
January 10, 2008 No Comments
Problems in Computer Science Education
A recent article discusses a worrisome trend in computer science education:
It is all about programming! Over the last few years we have noticed worrisome trends in CS education. The following represents a summary of those trends:
- Mathematics requirements in CS programs are shrinking.
- The development of programming skills in several languages is giving way to cookbook approaches using large libraries and special-purpose packages.
- The resulting set of skills is insufficient for today’s software industry (in particular for safety and security purposes) and, unfortunately, matches well what the outsourcing industry can offer. We are training easily replaceable professionals.
These trends are visible in the latest curriculum recommendations from the Association for Computing Machinery (ACM). Curriculum 2005 does not mention mathematical prerequisites at all, and it mentions only one course in the theory of programming languages.
Any individual who has spent as many years working on a CS degree as I have can tell you that there is a distinct difference in the way that Computer Science is taught now as compared to how it used to be taught. I’ve certainly noticed a difference. It’s important to quantify that difference before we decide if its a positive trend or a negative trend.
January 10, 2008 2 Comments
Harvard Extension Really is Harvard
As you might guess, there is a bit of confusion regarding the degree programs from the Harvard Extension School. I was in my first semester at HES when the following article was printed in the New York Times:
Harvard, for Less: Extension Courses’ New Allure
One of my professors was interviewed for the article. His impression was that the reporter was trying to get him to admit that the program wasn’t as rigorous as the regular Harvard College classes.
For instance:
At Harvard, although extension students must maintain a C average and fulfill language, science and math requirements, they may deal with the perception that they are not full-fledged Harvard citizens.”Some people are like, ‘What are you exactly?’ ” Ms. Shortill said. “But some people are like, ‘Oh my goodness, you can do that? Wow, that was really smart of you to figure that out.’ “
It’s a topic that is endlessly discussed on various college websites whenever the school is mentioned.
I’m going to list a few reasons why I think that you can make a strong case that the degree you earn from Harvard Extension is comparable in many respects to the degrees you earn from the other undergraduate and graduate schools at Harvard.
January 8, 2008 35 Comments