August 2004 Archives

Chris Shiflett

AddThis Social Bookmark Button

Related link: http://shiflett.org/archive/56

The schedule for ApacheCon has been published, and it looks like it will be a great conference for PHP developers.

I will be giving a 3 hour PHP security tutorial on Sunday. If you missed the one I gave at OSCON, you’re in luck, because I plan to work hard to make this one even better. I’ll also make some enhancements to the PHP Security Workbook and provide that as the handout.

In addition to the tutorial, I’m giving a 60 minute talk with mod_perl core developer Geoff Young about testing PHP with Perl (two great tastes that taste great together). Geoff is a fantastic speaker, and this talk should be very fun and entertaining. Mixed in with the inevitable banter between us, we hope to provide some practical and useful information that you can apply directly to your PHP development.

Among the other interesting talks are a 3 hour tutorial about scalable Internet architectures by Theo Schlossnagle, a 60 minute talk on PHP 5 by Andi Gutmans, and Adam Trachtenberg’s popular talk, Why PHP 5 Sucks! Why PHP 5 Rocks!.

I usually spend most of my time at conferences in the halls and social gathering places, but I think I’ll be attending quite a few talks this year. It’s good to see such a nice lineup of talks. I’m definitely looking forward to it.

Hope to see you in Vegas.

Andy Lester

AddThis Social Bookmark Button

Six little words immediately mark you as unprepared for the interview and sour your future boss on your viability as a candidate.


Here’s the scenario. You’re across the desk from the hiring manager. He’s thanked you for taking the time to come in, and tells a little bit about himself, and provides details about the position that weren’t in the ad. After a minute or two of this, he lobs out “So, that’s what we do. Tell me about yourself.” You get a puzzled look on your face and say it:


“What do you want to know?”

They’re the
six words that say “I’ve failed to prepare.” Probably three out of four interviewees give me that answer.


Anyone who’s heard my talk with Bill Odom on how to get a good job (or HREF="http://conferences.oreillynet.com/cs/os2004/view/e_sess/5372">read
the slides) knows that I’m down on the idea of memorizing snappy answers to stupid questions, especially “How do you move Mt. Fuji”-type questions that are somehow meant to see how clever you are. “Tell me about yourself” is not one of these dumb questions, and you’ll get it every time if the interviewer knows what he’s doing. It might be some other open-ended conversation starter (”What can you bring to our company”, “How can you help us out”, etc), but the intent will be there: The hiring manager wants you to sell yourself, and you must oblige.


The first step in getting past the tendency to say “What do you want to know” is to change your view of the interview. It’s not an inquisition, where you only speak when spoken to, and answer only those questions asked. Your primary responsibility is to sell yourself, to show the manager that you have the skills he or she wants. When the hiring manager says “tell me about yourself,” that’s your cue to show what you’ve done on your “prepare for the interview” project.


Yes, it’s a project! Think of your job interview as the first day of your new job, with the hiring manager or HR or whoever you’ll be meeting with as your new boss. Your assignment is to bring to the interview a presentation on why you are the right person for the job. The job ad probably tells you a lot about what the required skill set is. Your search of the company’s website should tell you something about what they do. Googling for email from company employees on technical mailing lists and newsgroups
may give an idea of what day-to-day tech life is like. You may even want to talk to the hiring manager directly, either on the phone or in email, to find out any other details that might help you in preparing. This isn’t weird or creepy: The hiring manager wants to hire you! She wants you to be the answer to her prayers!


You might also find, as part of this project, that things aren’t everything you wanted. Maybe you’ll find that the company runs all IIS and Exchange, and there’s no way in hell you’d work for such a place. Maybe they work in an industry you have no interest in. Maybe you’ll find that it’s not a good match for you before you waste your time. There’s nothing wrong with canceling a job interview.


There are plenty of books out there that give you “great answers to tough interview questions”, but most of them talk about slick ways to get out of silly, overly aggressive questions that you probably would only get from a company that you don’t want to work for anyway. Take these canned responses from the books with a grain of salt.


Focus on the big question. Know how to answer “tell me about yourself”, as it applies to the job you’re applying for, or you’re wasting your time as well as the interviewer’s.


(See also “The worst way to start a resume”)

brian d foy

AddThis Social Bookmark Button

I’m writing this as I try to install pdftk, which Sid Steward uses quite a bit in PDF Hacks. I have a lot of time between steps.

First, I went to the pdftk site. The documentation for the program looks great, and the program looks useful. I want it.

Not so fast, cowboy. He says “Mac OS X users must build and install GCJ, first.” Eh? There is even a reference to special build instructions from John M. Gabriele. GCJ doesn’t come with Mac OS X.

Well, I need to get GCJ I guess. Not so fast there, either. After looking around the GCJ page and discovering that the download page does not have links to anything I need to download (like GCJ), I finally find a mirror site for GCC. Yep, I need to download all 34 MB of it. It’s downloading right now. (17 minutes)

Why do I need all this? I think this sums it up: “Pdftk is also an example of how to use a library of Java classes in a stand-alone C++ program.” I just want to play with PDF files and try some of the things in this book. I don’t care about Java or C++. In fact, I’m wondering why I even have to know that. At this point I’m just some dumb consumer, but I have to worry about all this other stuff.

I’m following John’s instructions, so I’m building gcc with “make bootstrap”. That’s running right now. time passes. It’s still running. He says “On my 500 MHz G3 Powerbook with 256 MB of memory, that step took about 4 hours.” I’ve got a G4 Powerbook, but still, this is taking a while.

After an hour and a half, the compilation aborts with an error. Ugh.

It’s the same error that John points out in his instructions. Ed Smith-Rowland reported the bug, and Trevor Harmon pointed out a faulty header file from OpenOffice (why did I even bother installing that?), which is also mentioned in the fink FAQ and elsewhere.

I remove the offending file. Maybe I should have just moved it out of the way. Nah, I’m feeling mean. Kill it! Die file die!

$ sudo rm /usr/local/include/dlfcn.h

I start over. Well, not really. Most of the work is already done and make(1) can pick up where it left off, or at least I think it does, but it’s running configure. Hmmm… it looks for there are even more subdirectories with even more stuff to install.

I start listening to yesterday’s Marketplace, and the teaser is someone saying “I look at my reader as someone whose not stupid at all. Even if they’re not a techie, they’re smart, they have a life, and this stuff should just work for them.” Preach it brother. It turns out that the teaser is from Walt Mossberg of the Wall Street Journal, and I’m surprised that I like something that he said since I haven’t liked the few columns of his that I have read. The gcc compilation is still going. I check out some of Mossberg’s columns. I don’t like with reviews of the iPod, but other things seem okay.

My cat comes in and curls up among the cables under my desk, and the gcc compilation is still chugging away. Marketplace ended, so I’m listening to All Things Considered now. This is often how I measure work time: how many public radio programs I listen to.

As I wait, (why am I waiting?), I write an article for next month’s The Perl Journal, and I occasionally check in on the compilation. All I wanted was pdftk, I remember. This started so innocently. I start to think that I might have been able to re-implement pdftk in perl faster than it takes to install it. Sid does mention Perl a couple times in the book, and one of the hacks is about PDF::API2, but I also remember that I tried this before and never finished it because the module interface was a bit too low-level to be immediately useful.

An hour later, it looks like the gcc compilation has finished successfully. I install it. It installs a lot of things that I will probably never use for anything. This takes a while too, but not quite as long as the compilation.

I download the pdftk 1.0 src and start to compile that. The documentation mentions adjusting some Makefile parameters, but I just go for the defaults. Boy does that compile a lot of things. This thing better work.

It finishes compiling after a couple of minutes, but I pause before trying it out. I hope I haven’t wasted all of this effort. I run it with no arguments, and I get the help summary. Well, at least it doesn’t blow up.

Okay, now for the test. I want to append one PDF file to another. Things like PDFmerge and texexec haven’t been able to do the job. For some reason they both mess up the page rotation.

Lo and behold, after all that, it just works. Thank god.

Jono Bacon

AddThis Social Bookmark Button

Recently, I had the pleasure of attending the european Friends Of O’Reilly get-together in Enschede, Holland. This event was an invitation only affair that was attended by around 130 people involved in interesting parts of the technology spectrum. Not only did the event give everyone a chance to get to know each other, share some beer and chat about what they are doing, but it was an excellent opportunity to indulge in a little game I love to play - people watching.

Now, don’t get me wrong. I know this ‘people watching’ thing sounds like some kind of ominous stalking activity, but I promise you it isn’t. The general idea is that you look at someone who you have never met before, and you try to guess what their ambitions are, what their quirks are and generally what shapes their life. When my girlfriend is wandering around a shop and I am sat outside waiting with all the other bored spouses in a similar position, I generally play this game and observe the people who wander past me. Within my little world I envisage people who work for the CIA, drug pushers, bored housewives, children’s TV presenters and a host of other wacky vices and professions that I see in people, all based entirely on their appearance and body language.

When I am at technology conferences, events and shows, I generally try to adapt the game to guess what kind of technology people are into. This is often fun, and as these events are typically attended by friendly people who I get to know, I sometimes get a chance to check if my scorecard is accurate. Admittedly, I don’t always get it right - I once had someone pegged as an anarchic BSD user who hated capitalism and had anti-Microsoft tendencies. Later in the bar it turned out this individual was an accountant from East London who codes in Visual Basic in his spare time. Oof.

Ever since I started playing ‘people watching’, I have noticed a few correlations and patterns in groups of people who use similar technologies. I have not been quite so committed as putting these results into a spreadsheet, but I am pretty sure someone is going to email me and ask for one anyway. These patterns have certainly not been triggered in my mind by stereotypes or pre-judged opinions, but they have been genuinely formed from identifying similar sets of behavior. Likewise, these patterns are not necessarily related to physical appearance or movement - they are sometimes similarities in interests, curiosities and opinion. This is no exact science, and if you are a student reading this and expecting to see some scientific proof behind my observations, you should really have a look somewhere else. Although I would love to share with you my observations about specific groups of people, I am not going to. The simple reason behind this is that my interest and the reason behind this blog entry is not on the observations, but why these similarities exist. Many sciences are based around the concept of patterns, correlations, humanistic similarities and other defining properties of groups. There must be a reason behind this, surely?

To take a simple stab at an answer, one could assume that there is some form of catalyst behind the culture in the group. This catalyst may be a person, a concept, an ideal or a goal. If this idea is true, you essentially have a central point of innovative thinking and leadership and the rest of the group are sheep endlessly bleating in tune to that of the leader. I don’t believe for a second that this is the case. Within many communities, there are gods, demi-gods and mere mortals, and I rarely see one true leader who inspires the community with culture and thinking in addition to being the release maintainer and keeping the CVS ticking over.

I think this inherent culture permeates from deeper inside the community - deep within the attractions that draw the community together. In my view, the uniqueness behind people who are attracted to a particular technology is a uniqueness that is sparked by the technology in question. This particular facet of their imagination and personality is the culture and the technology is the catalyst.

What is specifically interesting is how different communities who are aligned around similar technical contexts differ. Take for example, programming languages. Danny O’Brien recently mused on the differences between Perl and Python hackers in Linux User & Developer magazine. Danny referred to the Perl folk as “chaotic/good trickster archetypes” and Python users as “peaceful, northern-european-have-their-glasses-on-a-little-string-to-stop-them-loosing-them sensible fellows”. I think Danny has this pretty much spot on, and this allies with some of the patterns picked up from the blissful science of people watching.

If we take the Perl brigade as an example, what is it that makes Perl hackers have this often off the wall fascination with doing odd things with the language? I know a number of Perl people, and I am often amazed, inspired and sometimes dumbfounded in response to some of the mind games that they play with the language. Some of these games range from simple mental exercises to determine how l33t they are, right up to odd and frankly pointless efforts to contort Perl into every possible box they can think off. If the programming world has a wall, the Perl folks will figure out a way of getting more graffiti on it than anyone else with a more interesting design and possibly on one line.

What is also interesting is that these attributes found in the Perl community don’t always map over to other programming communities. Sure, there are people doing wacky things with Python, PHP, C, C++, Assembly and other languages, but there just seems to be a lot more of this stuff going on in the Perl community. What is it that makes a Perl hacker experiment in these different ways with the language? Is it Larry Wall? Has he made a definable set of boots that everyone tries to walk in? I don’t think he has, but there is something inside Perl people that makes them match up correctly to Perl to carry out their ambitions and interests.

Unfortunately, this is one of those frustrating stories where you don’t really get a full and complete conclusion. I have no idea why we have these similarities in different groups of people, and when I have some time, I plan on doing some real research into the subject to determine why some of these patterns exist. We all have hunches and views, and this is why I wanted to write this blog entry. What do you folks think about the subject, and what kind of patterns have you noticed in technical user groups?

What do you think? Have you seen any patterns in certain groups? Have you a theory on why these patterns exist?

Derek Sivers

AddThis Social Bookmark Button

Related link: http://www.hostbaby.com/designers

My company, HostBaby, is looking for CSS web designers to make a CSS style for a new project we’re doing. For each completed CSS style, we will pay $500. Details here.

Please spread the word.

brian d foy

AddThis Social Bookmark Button

Related link: http://www.google.com/help/features.html#calculator

This morning, Adam Turoff pointed me toward a problem posed by Norman Walsh. He wanted to count the permutations of the middle letters of “morning”, figuring if we mistyped the word, we would at least get the first and last letters of the word right.

His solution was brute force: simply generate all the possibilities and count them. His solution is pretty ugly because it only works for a fixed number of letters.

This reminds me of statistical thermodynamics though. The number of distinct states is the factorial of the number of elements divided by the number of indistinct elements. In the letters in “ornin”, there are 5 ! states (120), but the “n” is duplicated, so there are two indistinct elements. The number of distinct states is then 120 / 2.

Adam tells me that factorials and morning coffee don’t mix though. Well, just google “ 5 ! / 2“.

Adam showed me that I could also get the result in roman numerals.

Uche Ogbuji

AddThis Social Bookmark Button

In a recent entry I was prompted by Brett Cannon’s complaints about how the loud and persistent community furore over Python decorators made it hard to maintain his weekly summaries of the python-dev mailing list. I disagreed with the idea that the community should just bite its tongue and go with what Python’s BDFL says, but I do want to express my appreciation of the work Cannon and other Python chroniclers perform. Here are the resources I use to keep abreast of Python developments:

  • I rarely go a day without reading Daily Python-URL, sponsored by PythonWare. It covers a wide range, including journal articles, weblogs, product announcements, and exceptional excerpts from mailing lists.
  • Dr. Dobb’s Python-URL! (unrelated, I think to the above) is a weekly collation mostly of quotes and links to notable threads on comp.lang.python. It’s also posted weekly to comp.lang.python.announce.
  • The python-dev summary, currently maintained by Brett Cannon, summarizes important threads on the Python developer’s list. One thing that makes this resource stand apart is that many of the other annals cherry-pick whetever they find interesting, whereas the python-dev summary clearly puts in an effort to cover all meaningful threads. The new summary is also posted weekly to comp.lang.python.announce.
  • When a Python release is imminent I study Andrew Kuchling’s What’s New in Python document to figure out what goodies and what wrinkles to expect.
  • I check out Planet Python from time to time. It’s a roll-up of Python-related RSS channels. As such it reels in a good deal of non-Python related material, and sometimes it’s dominated by bric-a-brac. Then again, the bric-a-brac of Pythoneers is in my experience better than the average.

What resource do you use to keep abreast of Python developments?

Uche Ogbuji

AddThis Social Bookmark Button

Related link: http://mail.python.org/pipermail/python-announce-list/2004-August/003318.html

I was surprised to see an old rant of mine quoted in Dr. Dobb’s Python-URL. Of late I’ve simply ceased to think about SOAP. It has become an irrelevance. I rarely come across SOAP in my sojourns. I’m not sure whether this is just bias coloring experience.

I had two recent run-ins with SOAP late last year: one while using Java and one while using Python. The state of Python’s SOAP implementations seemed a complete mess because of neglect. The state of Java’s SOAP implementations seemed a complete mess for a near-opposite reason: energetic conformance to the many SOAP flavors. This slavishness to SOAP’s worst aspects makes it impossible to figure out how to portably work with rich data using SOAP. If you’re not sticking to Java’s primitive data types (in particular, if you’re thinking of your data in XML terms), there is no chance these libraries will fit your head.

But putting the misery of these experiences aside, I’m surprised at how little I’ve had to worry about SOAP. As it became clear to me that Web Services were becoming a menace to much of the goodness wrought by XML, I worried that I would be forced to do a lot of gritting my teeth at work while I accommodated clients’ insistence on WS. This hasn’t turned out to be the case. In several cases where WS “end points” have been suggested, I’ve been surprised at how easily my suggestions of a REST-like alternative are embraced (the fact that I could usually whip up running code in hours helped a lot).

In the comments to part 2 of my Web Services chronicle (see also part 1), Mark Baker challenges me to substantiate my statement “Web services have found critical mass greater than any other distributed computing technology before them.” I made that statement based on observations at that time when it seemed WS was everywhere. Strangely enough, it is soon after that article that I stopped seeing signs of WS dominance. And as I think back on the matter, it was a rather precipitous decline.

So has WS and its SOAP center truly begun to melt away, or is that just the order I’ve imposed on my corner of the Universe? Of course in my superstition I worry that now that I’ve mused about it, I’ll be punished by a SOAP development request from a client in the near future. Time to stock up on shamrocks.

Do Web services still loom large in your world?

David Sklar

AddThis Social Bookmark Button

XUL, for the uninitiated, is Mozilla’s XML-based UI language. You build your (client-side) interface in XUL, wire the widgets together with JavaScript, and ta-da! You’ve got a standalone application.

The PHP connection comes in when using a JavaScript XML-RPC library to call an XML-RPC server (written in PHP, in this case) to provide dynamic info to your XUL app. (Yes, you too can write your own Gmail!)

I am curious to play around with XUL, but first I need to think of an app that I could experiment with building. (And why I should use XUL instead of PHP-GTK, I suppose.)

I know little enough about XUL and about IE to wonder if one could write an IE plugin that could understand and render XUL. That would dramatically increase the XUL potential-user base.

MySQL Cluster is a shared-nothing main memory database clustering technology that MySQL bought from a division of Ericsson. It removes that pesky single point of failure from the database portion of your architecture, but it’s not a panacea — if you’ve got a lot of data, you need a lot of RAM. In a given cluster, you can store (Nodes x Available-RAM-per-node / Redundancy-level) bytes of data.

For example, if you arrange your 10 nodes in redunancy pairs (each piece of data lives in two places, so “Redundancy-level” is 2), and each node has 4Gb of RAM, then your cluster can hold 10 x 4Gb / 2 = about 20Gb of data. It’s “about 20Gb” because all 4Gb on each node isn’t really available to MySQL Cluster — the OS needs some RAM, too.

Future versions of MySQL Cluster will use memory as a disk-backed cache so your storage is bounded by available disk instead of available RAM.

After the meeting, I had an interesting conversation with Johan and Hans (who now works for MySQL) about accessing the NDB Cluster native API directly from PHP. This mode of communication with the cluster wouldn’t have an SQL parser, so you’d have to do a bit more work to build queries. With the Cluster API, retrieving data is easiest as lookups on primary keys.

This structure would make the NDB Cluster an excellent session storage handler for PHP — fast, reliable, and makes sharing data across load-balanced web server machines a snap. If you’re looking for a neat PHP/C++ coding project, I think Hans and Johan would be happy to help out anyone who wanted to work on this.

Have you worked with XUL and/or MySQL Cluster?

Jacek Artymiak

AddThis Social Bookmark Button

Related link: http://www.oreillynet.com/pub/wlg/5464

I agree with Matthew, EuroFoo was fun, inspiring, but…

Of course the main problem with something like EuroFoo, with so much going on, is that you can only be in one place at any given time. So you miss all the other good stuff.

Couldn’t agree more. Let’s hope O’Reilly start Euro editions of their confernces soon!

Uche Ogbuji

AddThis Social Bookmark Button

Related link: http://mail.python.org/pipermail/python-announce-list/2004-August/003319.html

The whole Python decorators imbroglio has everything going for it: pity, terror and farce. The players flounce from duelling polls and patches to advocacy pieces born of excessive free time. Mix in all the hand-wringing about what this means about the state of the Python community and there’s my cue to mix myself a cocktail. Brett Cannon says:


“In the old days, Guido would Pronounce, and we’d all bite our tongues
(although not necessarily each his own). The less time Guido can make
for Python, the more important becomes graceful capitulation.” Tim said
this and it makes me wish for the old days. People had *months* to
comment on decorators and no one spoke up until something went into the
language. Procrastination is not a virtue when it comes to major
language evolution discussions. What was worse was when the emails
started repeating themselves (which was pretty much from the get-go when
this exploded). Seemed like people decided to start talking without
doing some research. Granted the PEP was outdated and the wiki page was
not up yet, but this stuff was covered in the Summaries before and you
could have just Googled for the previous threads.

Personally, if I was Guido, I would have said that the community had
their chance to speak up and they just didn’t take it. But Guido is a
nicer guy than that so people are getting a second chance with this.
Personally this came off a great case of the tyranny of the majority in
my eyes. There is a reason why Python is a dictatorship.

At this point people should be hashing out which syntax alternative they
want to present to Guido on comp.lang.python_. No more talking on
python-dev, no more syntax proposals. The community should set a goal
date (Sept. 1 seems good) and just choose a bloody alternative. Then
when Guido makes his choice people accept it or just go to another
language. No one had better voice their disappoint once Guido chooses
his syntax or I will personally come beat you over with a stick for
being a whiner.

This does seem to read like whining about whining, though. After all, people want Python to be popular, and it is. This means that debates in Python will involve ghetto-blaster volume and heavy noise per unit of signal. That’s success, and it’s glorious. Not to pick on Cannon, but his comments sounds like so much Pining for the Days of Great Greeks when Guido was dictator of the Peloponnese through Mycenae. “Alas”, the bard says, “Now we condescend to this garrulous Athenian democracy”. This cacophony may be irksome to the annalists, but in this case it’s the product of a great culture.

I’ve always been happy with Python’s development. It worked well when there was a relatively small core that quickly hashed out key decisions in relative obscurity. I still think it still works well now that marathon newsgroup threads, blog jousts and Wikis string together a chaos of comment on what direction the language should take. Python has a solid foundation, and this flame war exposes more of the strengths than the weaknesses of the language and community.

What do you think about how the decorators discussion reflects on Python?

chromatic

AddThis Social Bookmark Button

Related link: http://www.eurobsdcon.org/

Europe’s a hotbed of BSD development and use these days. If you’re on the Continent at the end of October, drop by Karlsruhe/Germany to meet BSD Hacks author Dru Lavigne, Henning Bauer, Greg Lehey, Soren Jorvang,
Alistair Crooks, and other famous hackers. Who knows, you may even be able to pick up our little “BSD Success Stories” booklet!

Matthew Langham

AddThis Social Bookmark Button

Yesterday afternoon I returned from the first Foo camp (for Friends of O’Reilly) held in Europe. “EuroFoo” was held over the past weekend at the University of Twente in Enschede in the Netherlands. Luckily, that’s just a 2 hour drive from where I live in Germany. One of the great things about Europe (now) is how easy it is to “cross borders”. You can really cross from one country into the other without noticing. Of course the language changes and you suddenly don’t understand the road-signs – but I digress.

First off, I’m way happy that at last O’Reilly is beginning to move some of the US “conferences” (yes I know Foo is an “invitation only” event and not so much a conference) over to Europe. I’ve ranted often enough about that in the past. And it does look as though we’ll see a European version of OSCON in the not too distant future.

EuroFoo was extremely interesting with a great mix of topics being presented and discussed by around 120 people from all over Europe who “really know stuff”. Talks ranged from “lock picking” to the “BBC creative archive” to “Bluetooth and Linux” to “Brain hacks”. Take a look at the Saturday schedule to get an idea of the diversity. In all, it seemed to me that the subjects of the sessions were slightly less “geeky” compared to what I had read about the US version. I would personally also have liked more of the sessions to be “discussion and brainstorming” affairs and not so much “lectures”. But maybe that’s just me. Of course the main problem with something like EuroFoo, with so much going on, is that you can only be in one place at any given time. So you miss all the other good stuff.

After a day of sessions it was “socializing time” over some good food and beers. At last I got to meet plenty of people I’ve only emailed and can now put faces to names at last. EuroFoo was a great event and I brought away loads of things to think about and look into in the future. Hopefully there will be a repeat event next year.

Quite a bit of information with links to pictures and blogs can be found over on the EuroFoo wiki which was also used extensively before EuroFoo to set up and discuss the sessions.

Andy Lester

AddThis Social Bookmark Button

As I go through dozens of resumes, I’m amazed by how many people still waste the crucial top two inches of their resumes with drivel like this:

Objective: A fast-paced, challenging programming position or other technical position that will utilize and expand my technical skills and business experience in order to positively contribute to an organization.

You and everybody else, buddy. Why should I give it to you?


That top of the resume is prime visual real estate. It’s the first thing I see when I open your email or Word document. I want to see a summary of who you are, and how you can help me by joining my organization.


Here’s an imaginary summary from a programmer applying for a Linux-based web development position:

7 years
professional software development, most recently specializing in Perl and PHP, including


  • Developing object-oriented Perl and PHP, including interfacing with Oracle and MySQL on Linux (3 years)
  • Creating intranet database applications with ColdFusion and Access (2 years)
  • Creating shareware audio analysis programs for Windows in C/C++ (5 years)


In just a few lines, she’s summarized the real meat of who she is and what she’s going to bring to the position. The key words for the job to hit are bolded, to make them easier to find for the reader. Note that in this case, she has not bolded “Windows”, “Access” and “ColdFusion” because that’s not something she chooses to pursue further. It’s part of her background, but not worth emphasizing.


The skeptical reader may ask “But what if she’s applying for something that’s not a Linux web position?” Then she’ll modify her resume for that job when she applies for it. Takes only a few minutes, but it’s more likely to draw the interest of the reader. You’ve got a computer, you’re flexible! Tailor the resume to the position.


The still-skeptical reader may say “But what if I’m applying for 100 different jobs?” Don’t apply for 100 jobs. There aren’t 100 jobs out there that match you and your skills. Why waste your time? But that’s a topic for a different rant….


Bonus mini-rant: “References available upon request” is also fluff. Nobody has ever said “Hmm, this guy LOOKS qualified, but doesn’t have references available. I better not bother with an interview.” Kill it.


(See also “The worst way to start a job interview”)

What other silly mistakes do people make in the quest for a job?

Derek Sivers

AddThis Social Bookmark Button

As you can see by my other posts here, I *LOVE* programming. It’s really my 2nd favorite thing on earth. But tonight as I had to do yet-another “web signup form” thing, I just found myself HATING the process.

  • new or existing?
  • existing? login.
    • login correct? give cookie & move to edit form
    • not correct - give prompt to email forgotten password or create new
  • new? create.
    • username available? create in database - give cookie & move to edit form
    • not available? give error until unique ID chosen
  • form for basic info: name, address, etc
  • if editing past info, pre-fill form fields and make [SUBMIT] button an [EDIT] buttong
  • if brand new, form fields are blank, and [SUBMIT] button is a [CREATE] button
  • Validate everything submitted, relentlessly
  • Give errors where crucial things are wrong : repeat form until correct
  • move to part two of their signup-form
  • repeat

UGH!! Anyone found an PHP-based shortcut for this dreariness?!? I can’t just cut-n-paste past forms, because each one I’ve done over the years is just different enough, that it would be harder to copy-and-change than just start anew.

But there’s got to be an easier way. This is SO monotonous. I’ve spent dozens of hours of my life doing these. I don’t want to do all this stuff again. So I keep procrastinating.

ANY TIPS?!

Those of you who have graduated from this dreariness, please enlighten the rest of us still stuck in it.

brian d foy

AddThis Social Bookmark Button

Last night I bought a “refreshed” 40G iPod for $300 from the Apple Store. The battery was run down so I didn’t get a chance to look at it until this morning.

There’s 8G of music on this thing, and I even like some of it. The problem is I can’t just hook up different iPods to my computer and copy all of my music to it. One iPod should be enough for anyone, right?

Since this music is going to disappear when I load up all of my music, I need to save it somewhere else. I mounted the iPod as a FireWire device. I already know I won’t be able to see anything interesting in the Finder, so I go straight to the Terminal. The iPod mounts under /Volumes and I can peek inside any directory that I like.

Right now I’m copying all the stuff I want to keep.


Here’s something else that’s cool: I got a federal government discount on everything I bought. On the back of my American Express I wrote in big, bold letters “ASK FOR ID”. The clerk noticed my US Army ID and gave me a big discount.

chromatic

AddThis Social Bookmark Button

Related link: http://www.linuxjournal.com/article.php?sid=7735&mode=thread&order=0

Ten minutes after the space shuttle Columbia disaster, the FBI distributed contact information for all law enforcement personnel in the Houston area. Tom Adelstein writes in the Linux Journal about ERN, “… a LAMP application at the heart of the nation’s crisis management.”

Uche Ogbuji

AddThis Social Bookmark Button

Related link: http://lists.xml.org/archives/xml-dev/200408/msg00070.html

There’s an interesting discussion in progress on XML-DEV (besides the above URL, look out for other August subject lines with “constraint”), including this insightful entry by Mike Kay. The memorable kernel of his point is: “It’s not the job of computers to limit what people are allowed
to do (or the job of the IT department to regulate the business).”
The only problem with this thread is that everyone seemed to forget The Schematron: on the road to ISO standardization, increasingly well-implemented, and just what the doctor orders for constraints. Also don’t forget Jeni Tennison’s Datatype Library Language.

brian d foy

AddThis Social Bookmark Button

At the Open Source Convention, I heard a lot of Perl people bemoaning PHP 5. I’ve never really had anything against PHP. I don’t care to use it, but that’s just my preference. Some people really hate it though.

I figure that they must have something that people like if it is so popular. I figure it is easy to use and widely available. Perl was once easy to use, but lately I’ve seen a lot of complaints about how hard it is to install modules and whatnot.

What have we missed that the PHP folks clued-in on? You might be tempted to bash one side or the other, but I’d really like to hear people talk about the good things that PHP does for its users so we can learn from it (and make our stuff easier to use).

brian d foy

AddThis Social Bookmark Button

Related link: http://www.wired.com/news/politics/0,1283,64602,00.html?tw=wn_tophead_1

The people who have been commenting on or sending me mail about my post, “Apple supporters shout down Real” have consistently disagreed that no one can be shouted down in the online world. Here’s another news story though: Noah Shachtman from Wired News reports that this time it’s the Republican Party that is the target.

I suppose that the same people will say that the GOP, just like Real deserves it, so it’s not bad. Others will probably keep telling me that this doesn’t happen because the net is an idyllic place. Well, it just isn’t so.

This isn’t how I think free speech is supposed to work.

David Sklar

AddThis Social Bookmark Button

For a variety of reasons, some having to do with expanding my technical horizons, some having to do with laziness, I’ve been spending more time with Windows XP these days and less time with Linux.

Things like Cygwin have made my sojourn in the Land of Windows smoother. Another source of incredibly helpful utilities has been Mark Russinovich and Bryce Cogswell of Sysinternals. Thanks, guys!

In particular, programs like Process Explorer and TCPView have filled the grey, jagged hole created by the absence of lsof and netstat. (Yes, Cygwin comes with netstat, but TCPView is nicer.)

Any other Unix natives spending lots of time with Windows? What programs do you use to keep you sane?

Uche Ogbuji

AddThis Social Bookmark Button

Related link: http://www.pythonology.com/success

It’s nice to have quick advocacy references to convince the boos that Python is not too risky a choice in the enterprise. I do wish there were some way of winnowing out the thinly veiled promotions from Python-related vendors. My favorite is “Frequentis TAPtools® - Python in Air Traffic Control“. Nothing says “mission critical” like “air traffic conrtol”.

What are your favorite Python success stories?

Uche Ogbuji

AddThis Social Bookmark Button

Related link: http://www.javareport.com/article.asp?id=9797

I think the most pervasive problem in XML adoption is ingorance and even wilful sabotage of the international foundation on which XML is built. In several recent incidents, both in my consulting work and in my OSS/community work I have come across systems that ignore or break XML’s Unicode character model.

I’ve almost grown tired of saying it, but it is worth saying until I’ve worked through my very last nerve: the single most important aspect of XML is its character model. Ditch XML and use something else before you mess with that. A tremendous amount of damage is done by people who can’t see past the pointy brackets as the point of XML.

Yes, Unicode is hard. There is nothing to be done about this. We have a myriad of languages, writing systems and local conventions, and they complicate just about everything. That’s our wacky, wondrous world for you. Nevertheless, as a software professional in this age, there is no excuse not to buckle down and learn the rigors of i18n. I’m not meaning to be a pedant about this: I know a lot less abotu i18n than I wish I did, and I fall short of good i18n in much of my code. However, I respect the problem and I strive to work on my skills in the area, and my discipline in applying it in software development.

If you use XML in your work, please read “The skew.org XML Tutorial. A reintroduction to XML with an emphasis on character encoding“, by Mike Brown (a truly brilliant article). You might also want to check out my article “Proper XML Output in Python“. Even if you’re not a Python programmer, you might find some use in its discussion of common character problems when generating XML.

brian d foy

AddThis Social Bookmark Button

Related link: http://www.macminute.com/2004/08/17/petition

I just read Dan Gilmore’s We the Media. I was mostly disappointed in it because it was too rosy, as if RSS and blogs and all these fancy new things are great things without downsides.

I got home today and found out (through RSS and blogs), that RealNetworks tried to shame Apple into opening the iPod for other content providers. They posted a petition to their site, but got a virtual group of hooligans shouting them down by flooding their petition with pro-Apple sentiment.

I really like Apple, and I’ve said before that I think they are being stupid in this dispute with Real, but that’s not what bothers me.

Blogs and online things have the same problem as any other media: a small and dedicated group of vocal people can shut down the discussion, just like people show up at Bush or Kerry rallies to chant their messages so the speaker can’t speak. Freedom of speech or information means not only do we get to say what we want, but we have to let other people say what they want.

Other problems, like comment spam and astro-turfing, are other big problems. Any medium that makes it easy to get out good information makes it easy to get out bad information, too.

Can we educate the people about the downside too? I find too often that advocates or new technology, and even those of open source, ignore the problems. If we really cared about free information, we would acknowledge them.

Derek Sivers

AddThis Social Bookmark Button

Related link: http://www.loudthinking.com/

My award for beautiful coding goes to David Heinemeier Hansson.

Go download, install, and run Instiki. (If you don’t have Ruby 1.8.1 installed, it’s worth updating to it just to run Instiki.)

After you’re amazed (will take only 1 minute) go to Rails. Watch the 10-minute video. Close your mouth: it’s open.

Then go set up a free account at Basecamp. Add some schedules & deadlines. Play around a bit.

Absolutely brilliant. All of it. Did the beautiful language of Ruby inspire his style, or was it just a match meant-to-be?

I can’t believe the stuff that David’s done, and this is all just in the last 9 months or so!

I think he’s my new favorite author.

Have you seen? Do you agree?

brian d foy

AddThis Social Bookmark Button

Related link: http://www.bugmenot.com

I ran across BugMeNot.com this weekend while I was researching some bits about the Times web site. The Times wants everyone to register, even to view their free content, and a lot of people simply create a false identity to get a login.

BugMeNot.com simply collects from its users all of those false logins. Now anyone can use them. Never have to remember your Times login again.

They even have IE and Firefox extensions to make it easy to use.

Fear not pay-for-use sites: BugMeNot.com says that they will not list logins for your site if you ask them not to.

Those wishing to debate this may want to read Adam Oram’s “Before you speak of information pirates”, or the lively (though mostly uninformed) discussion at Poynter.

Andy Oram

AddThis Social Bookmark Button

People who casually use the term “piracy” to refer to the unauthorized exchange of copyrighted music, movies, books, and software would gain a deeper understanding of the terms they use by picking up the highly readable book Villains of All Nations: Atlantic Pirates in the Golden Age by Marcus Rediker. This recently released study (Beacon Press, ISBN 0-8070-5024-5) describes the lives and political significance of pirates at the period of their greatest growth during the early eighteenth century.

Pirates, in Rediker’s analysis, were more than just thieves. They created an alternative way to regard work, society, and life’s pleasures in an economically and religiously repressive age.

By the eighteenth century, pirates–their ranks fortified by political dissidents and utopian communalists–had created an on-board ethos of democracy, sharing, and mutual insurance. (They created the earliest social security system.) This is in contrast to the military and trading ships of the day, ruled by absolutist captains who cheated their staff, kept food and water rations criminally low, and freely employed the whip.

The pirates treated people of all races equally, in contrast to the racist practices of their opponents that reached its extreme in slave trading. The pirates admitted women to their ranks and apparently were sexually loose.

The pirates spoke consciously and articulately about the oppression of sailors and others by the sinfully rich capitalists and traders of their time, and refused to be placated by the religious platitudes of such status-quo philosophers as Cotton Mather. (In fact, Cotton Mather admitted to some extent that the pirates were right.)

Rediker does not prettify pirates. He says forthright they were not just bandits and murderers but also terrorists–in the sense that they used violence to create fear and bend others to their will. Still, they possessed a sense of justice and chivalry that is usually missing from modern military engagements.

Pirates were dissolute, destructive, and often drunk. But this represented an excess of their basic vision of freedom: freedom from masters, freedom from the fear of sin, freedom from hunger.

Is it difficult to find a common thread between the villification of eighteenth-century pirates and the villification of people who trade or illegally sell music, moves, books, and software today? Like the old pirates, the information traders create a bounty from the work of others (the artists and writers). But at the same time, they create a new vision of information democracy that contrasts positively with the control freaks and commercial cynicism of the mainstream media conglomerates.

Information traders promote diversity, by allowing people to sample dated and unusual works. In an age where radio stations and movie studios bend their offerings to the profit-based goals of an increasingly small number of owners, this is crucial. Information traders also allow communities to form around works–something studios would like to do but are usually too controlling and hidebound to carry off.

Do information traders hurt the industry, as studios and software manufacturers like to claim? Well, revenues for music and movies are going down. But figuring out what lies behind that statistic is a tough undertaking.

It could be–as many claim–that people aren’t buying much because studios are just suppressing innovation and desperately putting out warmed-over imitations of the same lousy junk year after year.

It could also be–as others claim–that in a bad economy, people aren’t so willing to pay the inflated prices charged for the CDs and movies.

Or it could be–as the studios claim–that people use shared or illegally sold copies instead of paying their fair royalties. This claim has to be weighed against a massive amount of anecdotal evidence–such as everybody I’ve heard talk about their downloading–that says people buy more CDs when they get a chance to sample music online for free. Information traders therefore drive forward the entertainment industry. Low-cost authorized music services may eventually take advantage of this trend. But it’s hard to imagine any authorized service offering the wealth of obscure and challenging works one can get from unauthorized networks.

In emerging economies, anyway, the main source of infringement is not peer-to-peer downloading, but conventional copying and distribution. This phenomenon should have been considered by music and movie executives when digital media first emerged; anyone worth his six-figure salary would have prepared a business case to deal with it.

Villians of All Nations, in showing the environment that created, and was in turn created by, the illegal behavior of one generation, provides much food for thought in our own age, whose direction is increasingly dominated by a wide range of illegal behavior: undocumented immigrants, squatting, drug dealing, arms smuggling, money laundering, terrorism, and–yes–actual sea-based piracy. But in particular, Villians of All Nations can deepen the debate around unauthorized information trading.

Is there an upside to piracy?

Uche Ogbuji

AddThis Social Bookmark Button

Related link: http://creativecommons.org/weblog/entry/4360

You’ve heard about INDUCE, right? It really is going down this time. Even though it’s still in committee, the atmosphere seems to indicate that a worrying proportion of the US Senate may have damned near lost their minds. In its annihilation of personal liberties, this bill could dwarf the DCMA. Apparently there is wariness even within the “creative community” big media claims as clientele (and big media shows every arrogant presumption in the way they use that phrase). A coalition of musicians has written a letter of concern to the committee. Let’s hope this helps kill it there, or let’s be ready for an all-out fight if this one hits the Senate floor.

What are the best ways to help defeat a bad bill while still in committee?

Uche Ogbuji

AddThis Social Bookmark Button

Related link: http://www.paulgraham.com/pypar.html

Apparently in his article “Great Hackers” Paul Graham caused a storm with the following comment: “The programmers you’ll be able to hire to work on a Java project won’t be as smart as the ones you could get to work on a project written in Python.” I don’t hang abut Java circles so I wasn’t aware of any controversy. Graham’s off-hand comment was interesting, but in clarifying his thoughts, I think he has really written an on-the-money essay. Of course, I can’t imagine it will mollify many of those who were originally offended.

You you think some languages attract better programmers than others?