Comments
Sorry about the comments bug… When I moved my website just a few days ago I failed to update one thing so the link to make comments was working. No wonder it was quiet.
Andrew Flanagan on February 22nd 2008 in Actual Events
Sorry about the comments bug… When I moved my website just a few days ago I failed to update one thing so the link to make comments was working. No wonder it was quiet.
Andrew Flanagan on February 22nd 2008 in Actual Events
Hmm… well this is kind of a blow for the security departments that have been relying on this. My “work” (notice the parentheses) laptop has whole disk encryption and it’s terrible. For some reason it usually (like 4 out of 5 times) does not ask me for my password anymore (and it really does seem random) and it takes noticeably longer to do anything on the machine (which is why I barely use it and didn’t even take it with me this trip). Now it’s revealed that it apparently doesn’t even really protect anything!
So much for “corporate security”.
Andrew Flanagan on February 21st 2008 in Actual Events, Geekiness, Ranting & Ravings
I like the idea of widgets in OS X and the way Dashboard works. However, other than the calculator I don’t find myself using them very much. But I finally found a Dashboard widget that really is handy. It’s a tool that lets you track packages from a variety of places (Amazon, UPS, FedEx, USPS, etc.). You enter the tracking tag a nice little widget is created. It will change status and will also integrate with Growl to give you notifications (so you don’t have to always look at Dashboard to notice a change).
Here’s a screenshot.
And a link to the author’s (very nice) website. Any widgets that any of my readers use and find useful?
Andrew Flanagan on February 13th 2008 in Actual Events, Geekiness
You’ve seen Ron Paul’s support. Now there’s a fund-raising “money bomb” for the Republican Party (which allows you to donate to McCain, Romney, or Huckabee). It’s at http://www.february7.org/. Here’s the dazzling results as of 6:44am PST:
Andrew Flanagan on February 7th 2008 in Actual Events
Andrew Flanagan on February 1st 2008 in Actual Events
So I had been looking for a new VPS host… I’ve used GoDaddy for a while and although it was decent a few years ago because of it’s pointy-clicky Plesk interface, I’ve since found that it’s easier to maintain it myself at the command line. I’m still running Fedora Core 2 and in order to upgrade, it’s really painful. Back in the day, there were packages that I could install but now my only real option is to upgrade the OS entirely (which involves backing up, wiping, and restoring). Seems easier to move to a Gentoo-based VPS, save a few shekels, and get better performance. I also previously only used my server for hosting simple LAMP web sites. I’d like to move towards not only Apache/MySQL/PHP but also Ruby on Rails, Subversion, Trac, and other things.
So, my two main options were VPSLink in Seattle, WA and Slicehost in St. Louis, MO. These were chosen somewhat arbitrarily based off of reviews (mostly “personal” type reviews from blogs).
I purchased a 1GB RAM VPS for a month from VPSLink and a 3 month 512MB RAM VPS from SliceHost. Prices for equivalent products are very close but SliceHost does require a minimum of 3 months.
First off, I noticed that my ping time is obviously pretty good to the Seattle based VPSLink. I get 30-40ms response. I get 50-60ms response from SliceHost. Now, I remote into a server in the D.C. area and try again. Now I get a response time of 90-100ms for VPSLink and 30-40ms for SliceHost. This seems to make sense since SliceHost is more centrally located. Since my website traffic is fairly evenly spread across the U.S. (only rarely overseas) this seems to be a plus for SliceHost.
I like the SliceHost management interface. It’s a “developer” type interface that’s very simple but very fast and gives me a lot of flexibility. I don’t like the VPSLink interface. It’s annoying and (as I just noticed tonight — doesn’t always seem to be exactly running). Most of the features are similar but I do feel like I can really control things better with SliceHost. For starters, the VPSLink is dog-slow compared to SliceHost and also has separate sections for billing, support, management, etc. It’s a pain to deal with. SliceHost is essentially one page with tabs. And it has more features like the rescue mode (mentioned below).
Well, the VPS with VPSLink is FAST. I do an emerge –sync && emerge world and I get the entire Gentoo installation updated quickly. However, now things seem a little odd and it seems like something’s caused a memory leak. Rather than chase it down, I do a reboot instead. Whoops — mistake. Gentoo (configured in a Xen environment) has a known bug which causes some problems. A trivial fix but I need to boot with a Live CD or something similar. And my server is in a data center in Seattle somewhere. Hmmm… I contact tech support — do they offer a Live CD equivalent boot? They do not. SliceHost does. This is a big deal overall. Especially with Gentoo, I have a bad habit of goofing something up and breaking my boot process. Since I’ve always dealt with locally stored boxes, it’s just a minor annoyance to have to connect a monitor and keyboard to the system and resolve the issue. However, the only fix VPSLink offers is “rebuild the box”. So if I break the boot process, I lose ALL data on the box. Ouch.
So, after one month of using SliceHost and not really being excited about rebuilding my VPSLink box AGAIN, I’ve canceled VPSLink and have begun to migrate all websites from my old Fedora Core 2 server to the new SliceHost Gentoo. It seems stable, fast, and reliable and if I do make a mess of things I’m confident I can get it back up and running without too much pain.
Over the last week I’ve spent FAR too much time trying to resolve little things like successfully getting non-Roman characters into the MySQL database (it’s odd the way the Gentoo MySQL USE flags work), getting Apache updated and still having PHP work, resolving a mess of library dependencies (I got to use revdep-rebuild — yay!) and also playing with Jails and getting an SSH account setup that chroot’s it to it’s web page root. All fun stuff but time consuming. I love Gentoo though — it’s not always the cleanest but it seems like you’re never “stuck”. Or at least that’s been my experience.
Andrew Flanagan on January 30th 2008 in Actual Events
There’s always so much to do. Every task that is completed falls into the category of “repeating event” that will simply have to be performed again as entropy sets in (cleaning, cooking, personal hygiene — such as it is, etc.) or “nice try” which was simply an imperfect and increasingly simplistic appearing attempt at a solution. To some extent you’re stuck with the repeating events and must simply hurry and do them well enough to at least stay in place like the Red Queen in Alice Through the Looking Glass. For everything else, there’s a sense of struggle to churn out something that’s really superior. You want the best and you constantly strive for it. But you make imperfect relationships, imperfect software applications, imperfect decisions. As time goes by you can review (if you’re depressed) the imperfections that trail behind you. The farther away ones are usually laughable, considering that at one time that was your best shot. The closer ones still seem reasonable but somewhat lacking. But of course as time goes by and they recede into the past as well you’ll start to chuckle at them too.
So are things really getting better? Is the stress of “getting better” actually creating better results? The problem seems to be that the perception of your abilities on a continuum slides backwards at the same rate at which progress occurs. The more you learn and grow and “better yourself” the more you realize that you had previously overrated your knowledge, experience, and skills.
I don’t think this means that we shouldn’t try. But we should try to keep in mind that perfection is unattainable (here on Terra Firma at least) and if we’re humbled by looking at our mistakes from 1 or 5 or 10 years ago, then consider that 1 or 5 or 10 years from now we’ll likely be just as humbled looking back to what we’re doing or thinking or speaking (or writing in a blog) right now.
I know this isn’t much of an “essay” but it made for a cutesy title. I’m sure I’ll think better of the idea later.
Andrew Flanagan on January 30th 2008 in Actual Events, Ranting & Ravings, Somewhat Random
There have been a few Slashdot submissions here and here. They’re concerned with an article published by two professors from NYU that assert that Java (and similar high-level languages) are damaging to teach as the “first language” of a Computer Science education. Since I wasn’t a real CS major, I’m perhaps a little outside of this discussion. However, I cut my teeth on C/C++ at school before moving on to the high-level languages (really just .NET and some very high-level languages like Ruby and Python).
I tend to agree with the conclusions. It’s not that there’s no place for Java. It’s just that without the fundamentals of pointers, memory management, and basic understanding of the construction of complex data structures which are just handed to you with Java or .NET, it’s very difficult to fully comprehend what you’re doing
I had a very good professor that taught algorithms and data structures at school and although at the time, the experience was painful, I’m sure it has helped immensely. Despite my affection for things like Ruby on Rails which is extremely high level, I’m annoyed sometimes because of the indeterminacy of functions and the vagueness of the specifications. When you write a language that can do powerful things in one line of code, you’re taking a lot of shortcuts and it can be surprising when a function returns something very unlike what you expected do the complexity of the underlying code. Basically, you ignore things like sorting algorithms entirely in favor of the “built-in” sort routine. How does it work? Well, you can dig it up in the code, but most people will simply use it and assume that it’s the fastest for all of their needs. What happens is that writing code becomes an assembling of pre-built components. It reminds me of “building” Ikea furniture. Granted it takes a certain amount of handiness to put together your new desk but you’re not gaining skills that you can use to build anything yourself without first being handed the pre-built pieces.
I tend to think of myself as primarily a Software Engineer. I’m not just a programmer because I do a lot more than write code. But I’m also not much of a Computer Scientist because I spend very little time actually attempting to improve upon techniques and mechanics of processing information. These definitions are a little vague, but I feel that Software Engineering is more what I do because I apply creativity to the process. I think one can be a Computer Scientist and a Software Engineer but I don’t think my work normally falls into both categories. I’ve always found the role of a traditional Architect to be similar to Software Engineering. It’s an application of creativity (design, color, texture, material, etc.) to a field of science (physics) that results in [hopefully] useful buildings. There are some “cutting edge” Architects that attempt new and innovative projects but most Architects are working with existing ideas and applying them creatively.
I’ve heard that Frank Lloyd Wright’s buildings although amazing in appearance and remarkable in their artistic qualities are often problematic in simple ways. Flooding basements, leaking roofs, etc. were the result of a poor implementation of a great and artistic idea. It’s not enough to be artistic and creative; a good system like a good building works and functions as it should in addition to its aesthetic qualities (which make it unique).
I’ve always seen this distinction between implementation-focused approaches and theory-focused approaches. Implementation is desirable for the production of new applications and system but will always be held back by advances in theory. It seems that Computer Science has largely lost its way in North American schools by focusing too much on implementation without teaching theory. Programmers are cheap. It doesn’t take a lot of brains to assembly code from pre-built components and creativity often is the only difference between a good programmer and a mediocre or poor programmer. Without new advances in theory, applications and systems will simply have to stand on their desirability of implementation (i.e. how easy is to use?). New ideas must be infused into the process for real advances to be made.
The use of so-called AJAX seems an interesting example. The ability to use things like the XMLHttpRequest object were available for quite some time before companies like Google began using it to do amazing things. This is entirely focused on implementation. Web 2.0 applications (whose primary distinction seems to be AJAX technology) are an innovation in implementation only. Many “hard-core” programmers find the terribly sloppy and inefficient results that often result less than satisfying. It does cool things but isn’t there a Better Way? I use AJAX quite a bit these days and it’s handy. However, I have only a bare understanding of how it works and what might be a better design. I don’t tend to concern myself with the next evolution of the Internet– I focus on building things that work with the technologies that now exist. But AJAX really isn’t a huge advance — in fact its “magic” often results in massive security holes, odd and unpredictable behavior, and hugely increased server overhead.
At the same time, a Software Engineer who truly understands the science of the code that he writes is likely to make far fewer mistakes and write much more efficient code. Even without much creativity, a programmer who can optimize code is a desirable catch for any software company. I think that everyone should understand the underlying details of code even if some end up focusing on the creative, implementation focused approach or the theoretically, algorithmic approach.
I mentioned security in regards to AJAX and this seems important. It’s well and good to provide applications that do the same things in easier ways but without a strong cadre of Computer Scientists, developing faster, more secure, and more reliable ways of doing business, we end up with applications that are never properly tested (it’s difficult to test code that just does magical things!) and never adequately secured.
A little rambling of a post — hopefully I’ve managed to convey something. Your comments welcome.
Andrew Flanagan on January 22nd 2008 in Actual Events, Geekiness, Ranting & Ravings
Jonathan Edward (the famous preacher) had a sister that was apparently quite a difficult woman. A potential suitor came calling one day and had apparently not heard of her nature. Edward’s father attempted to talk him out of the idea. The suitor replied that he thought that she had received the grace of God so what difficulty would there be? The father’s reply:
“The grace of God will dwell where you or I cannot!”
I picked this up from Rev. Rayburn’s sermon on January 6, 2008. It’s not in print yet but should be available on www.faithtacoma.org before too long.
Andrew Flanagan on January 12th 2008 in Actual Events, Somewhat Random
Ruby on Rails is such a beautiful thing… Here’s some view (presentation) code that I slapped together in about 2 minutes:
<% Category.find(:all).each { |category| %> <div id=<%= category.cssid %>> <h2><%= category.Name %></h2> <ul> <% category.items.find(:all).each { |item| %> <li><%= item.ShortDescription %></li> <% } %> </ul> </div> <% } %>
Basically, it let’s me easily list out categories and then items within those categories on a webpage (with per-category styling supported). It’s interleaved with HTML and produces very slick output. It just feel so natural and that’s what I love about it.
Andrew Flanagan on January 11th 2008 in Actual Events, Geekiness