The Economic Walden

READING:
Nickel and Dimed: On (Not) Getting By in America
Barbara Ehrenreich

Ehrenreich’s Thoreau-like adventure, with the world of manual, minimum-wage jobs as her Walden.

The basic conclusion of the book is simple: A job and hard work does not translate to a ticket out of poverty.

All books

In 1998, Ehrenreich, like Thoreau before her, set off to see if she could survive on her own; she reported her findings in Nickel and Dimed: On (Not) Getting By in America, which I started and finished today.

While Thoreau set off for this cabin in the woods surrounding Walden Pond, Ehrenreich set off for a more contemporary, yet just as isolated area: Leaving (to a degree) her safety net of family, Internet access, home and current occupation (writer), she sought full-time work for poverty-level wages.

Working as a waitress in family-style restaurants (think Denny’s), as a maid as part of a home-cleaning crew and as a menial associate at the world’s largest retailer – Wal-Mart – Ehrenreich came to the conclusion that having a full-time job was not the ticket out of poverty:

Something is wrong, very wrong, when a single person in good health, a person who in addition possesses a working car, can barely support herself by the sweat of her brow

  – Evaluation chapter

She worked in three different cities – sometimes working two jobs at once – and yet she still comes to the conclusion that she could not have endured much longer than the month she allotted for each city/job if she had had any sort of non-basic (food/clothing/shelter) costs: These non-basic costs would include any medical care, fixing her car and so on.

It’s a disquieting message that Ehrenreich went into this project expecting, yet her proof-by-experience is damning.

While I don’t necessarily agree with all her conclusions/accusations – she paints all management as Dilbetian pointy-haired bosses, and still wonders why the menial workers (of which she became one) don’t demand more for their labors – her book draws some interesting conclusions, many of which she never specifically states:

  • She is an educated, healthy, unencumbered woman. What of others with families or ailments. If she can barely get by, what does this mean for others who shoulder extra burdens? From what Ehrenreich writes, she was a rarity among those she worked with in many ways: Car, ability to put a deposit on an apartment, no children and associated costs/constraints. Again, if she can barely – just barely – make it, what of others?
  • She worked with a lot of co-workers – full-time workers – who were either homeless or depended on a second income (spouse, friend, roommate) to cut housing costs.
  • Affordable housing just is not keeping pace with the demand. If one considers geographically accessible housing (low income workers frequently have no car), and the number of affordable units dwindle to near-zero.
  • Food costs are higher for the less wealthy simply due to conditions – for example, Ehrenreich once received a box of food from a food pantry, and one item in the collection was a canned ham. Without a refrigerator – and in her case, living alone – the extra meals this large hunk of meat could provide were only marginally useful to her: Without a refrigerator, she’d have to eat it all in one sitting. (She ended up donating this box of food to another pantry). While I’ve read similar reports – the poor have to eat fast food/buy from convenience stores due to time constraints, but the costs are higher – it hits home with an example such as this.
  • I hadn’t realized that a lot of companies hold workers’ first weeks check as a security deposit of sorts, giving the money back at some future (termination, after X months) date. For someone living check to check, this is another incentive to not leave a job – one can’t afford to miss a check in this manner.

This book was written in 1998, when the economy was booming. Especially in Minnesota, where Ehrenreich’s last job was located, the boom fueled a demand for workers, yet conditions were still appalling and wages seemingly artificially low. Today, whatever leverage workers had due to a demand for manual/service-sector labor is obviously missing. It’ll be interesting to see if she revisited this issue recently to see – in a statistical manner, at least – how things have been changed by the job market forces.

Ehrenreich (almost) closes with the following message:

When someone works for less than than she can live on – when, for example, she goes hungry so that you can eat more cheaply and conveniently – then she has made a great sacrifice for you, she has made you a gift of some part of her abilities, her health, and her life. The “working poor,” as they are approvingly termed, are in fact the major philanthropists of our society. They neglect their own children so that the children of others will be cared for; they live in substandard housing so that other homes will be shiny and perfect; they endure privation so that inflation will be low and stock prices high. To be a member of the working poor is to be an anonymous donor, a nameless benefactor, to everyone else.

  – Evaluation chapter.

Ehrenreich then finishes up the book with a short paragraph saying she expects the workers like she worked with to someday tire of taking all the crap and demand a living wage.

Unfortunately, this is not a reality I see happening. For example, one of the points Ehrenreich makes in her book is that job listings don’t necessarily reflect need: Some companies keep a listing going forever, as turnover is fairly constant and the applications are frequently needed. It’s cost-effective to keep the ads running regardless of current needs.

In other words, the lowly workers don’t have any leverage. Yes, they may deserve more money/respect and so on, but – if you’re unhappy with your job – there is always someone else to fill it. It hurts the worker more than the company, or the company would not tolerate this consistent turnover.

Unite and Conquer?

When I first read about the agreement between Sun and Microsoft, I had two visceral responses:

  • Wow. Sun’s Scott McNeally has never had a nice thing to say about Bill Gates or Microsoft. So…wow.
  • Linux

The former is pretty obvious (as in, strange).

The latter explains away the former – it’s all business, and the business here is to unite and conquer against a common enemy: Linux.

Face it – Sun has been struggling for the last few years. Formerly the leader in Unix systems with it’s Sparc chip/Solaris OS, it’s margins have been hit the dot bomb, lower-cost alternatives (such as Intel/Linux) and miscues with Java (i.e., they still haven’t figured out how to really cash in on this language).

Microsoft – with $40B+ in its coffers, has been struggling lately, as well: No, they are not hurting per se, but they see the long-term writing on the wall: The release of Yukon, Whitby and Longhorn keep slipping, anti-trust issues dog them domestically and abroad, and security issues haunt them. In other words, it’s going to take some work to keep this company competitive long term.

Linux is a big enemy of MS, as well: Linux has a reputation of being more stable, less expensive and more extensible (no vendor lock-in) than MS server products.

So – in this respect alone, the MS/Sun truce makes sense.

Let the games begin…

Homer Wants More D’oh!

Word on the wires is that the voice-cast of The Simpsons animated television show have resorted to a work stoppage to get a pay raise.

The cast currently gets $125,000 per episode and are seeking a boost to $360,000 per episode.

This has happened a lot recently, with tough negotiations on the part of actors to get a bigger piece of the pie, especially for successful shows (such as Friends, Fraiser, Everyone Loves Raymond and so on).

To a certain degree, this has some validity: The shows are cash cows, and they – the cast – should get a substantial cut of said pie.

On the other hand, greed seems to drive a lot of these negotiations. Let’s look a little more closely at the Simpsons’ story:

  • Each season is 22 episodes
  • Voice actors currently get $125,000 per episode: $2.75M/season
  • Each voice actor is asking for $360,000 per episode: $7.92M/season
  • This doesn’t count any other benefits (such as syndication royalties). Base pay only.
  • They are voice actors; while – in some ways more difficult than other types of acting, they don’t have to do the following:
    • Dress up for shows
    • Have as many revisions due to other actor’s miscues and so on
    • Look good – the whole Hollywood obsession with youth, no wrinkles and so on. They are just voices

  • While I don’t know this for a fact, I don’t see each season’s taping as taking more than 22 weeks (overall). So this leaves approximately one-half of the year for them to pursue other paying tasks (yes, there may well be some contractual limitations on what they can do).

In addition, the taping for the shows probably takes place in either LA or NYC – two cities with high costs of livings.

But…come on…how tough is it to get by on $2.75M a year?

Let’s do some math: The median household income for the U.S. is approximately $43,000 – that’s per household, not per person.

So to match the salary a single Simpsons’ actor pulls in for one year, the median household would have to work for 64 years. That’s right – if they drop out of school at 16 and work for the years necessary to gain the base income from one year of Simpsons’ voice work (at current rates, not with the desired raise), they will have to work straight through until they are 80 years old.

Youch.

This is not really a ding at the Simpsons’ actors; it’s just that this is a nicer package to compare the lunacy of TV/sports/CEO salaries with those of average folks.

Yes, I know you can make arguments for the high salaries – such as athletes have short careers compared to, say, a CPA. Agreed. But why then does the athlete’s short career pay more – way more – than the longer career of the CPA? Where’s the parity? And what chance does a CPA have to get Nike endorsement contract?? (My accountant will sure never garner this, unless Nike changes its motto to “Just Eat It”…)

I guess it’s the disparity that’s troubling, and this also extends to studio honchos/team owners, as well. Part of the problem – as mentioned earlier – is that actors/athletes just want (at one level) their fair share.

Which is fair.

I think that, in many cases, the Suits (execs) are screwing the cast/athletes over.

But it’s still hard to feel sorry for someone whose fair share is 66 gazillion dollars, and they only got half that. Actors/athletes – by their very nature – are public, so they are vested with more criticism for greed than the Suits, but all should share the blame.

I just saw a short blurb – one of those bottom screen-crawlers – on CNN that looked at the average cost to take in a ballgame: Four tickets (Typical nuclear family: Mom, Dad, 2.2 kids and you leave the 0.2 kids in the car…), four hot dogs, four cokes, two hats, parking: $155

Let’s take that median family ($43,000/yr) and a current Simpsons’ voice actor ($2.75M/yr).

Leaving aside taxes – and my guess is that the tax rate will be approximately the same for both parties, as the actor has a financial analyst/planner – the Median Family will spend approximately 18% of their weekly income on this game. The Simpsons’ actor (singular – what if two incomes in this family?) will spent approximately 0.3% of a weekly income on this game.

Something is horribly wrong here….in oh so many ways….

CCTP

CCTP:
This is a newly established protocol, the Computer Component Transfer Protocol. It describes the interchange of non-digital information between two agents (client/vendor relationships, for example).

Formerly know by any number of sometimes synonymous definitions: UPS, DHL, FedEx, USPO (deprecated) and a handful of lesser-used mechanisms.

So, anyway, I ordered some info chips from Dell. Dell – along with Amazon – have invariably given me satisfaction with both their delivery time frames and tracking tools.

Dell had to backorder the chips – don’t ask; not germane – but followed up with message saying it was delayed, and finally shipped and all that.

Yesterday, I went back to the “shipment en route” e-mail to see where things were.

To my surprise, the shipment was in the Chicago (my) area. Great. Should be at my house (home delivery, for this order) by end of the next day tops.

A couple of hours later, I head a truck pull away from my house. I looked out the window to see a DHL truck pull away. Wow. The chips had arrived.

I happened to have that order page still open in a browser window; I refreshed the page and the status didn’t update. Whatever. I guessed that the order would be updated when the truck returned to the depot.

I grabbed the delivery, checked out that all was well, and then refreshed the page again: The order reflected the delivery.

So the trucks/units DHL uses has wireless that updates orders virtually instantaneously (the time gap was roughly 10 minutes and I don’t know of any depot that close to my house).

How cool. So, when I see an order updating (checked in to Memphis station, checked out of same…), it’s pretty damn close to real time. That’s impressive.

It also makes me wonder about the future – when/if RFID is accepted and inexpensive, can we expect to be able to track packages like a Mapquest search, where we can watch the package slowly move down the street so we know when to go to the front door/loading dock to pick up the package?

Hell, if there is geocoding in the order (of the customer’s location), an e-mail/page/SMS can be sent when the package X miles from its destination. In addition to the MapQuest concept.

Is this technologically possible? Absolutely.

Will people want this? Absolutely.

Will it be necessary to keep customers (i.e., if FedEx does it, will UPS have to offer same)? I don’t know.

The real $10,000 question is this: Will such capabilities become like a cell phone – expected nowadays, and not the toy/cool gadget it initially was – or will its allure be considered overkill and, frankly, annoying, like PointCast (remember Push [which, ironically, RSS is picking up on in a Pull manner])?

Database List

PHP and RAD

By PHP I mean, of course, the language. (I’m using v4.1.2, but that’s not the point).

By RAD, I mean Rapid Application Development – and not in the way VB seems to have co-opted the concept and promise. Getting something up and running.

Yesterday – don’t ask why – I had the need to have a type of tool that I had used (helped build) in ColdFusion at another job. Basically, a Web interface to a given application’s database, with a view of the database/table schema.

This ColdFusion tool – against a MS SQL Server – had a couple other bells and whistles, including the ability to set comments for a given table (“This stores all user info….”) or column (“article_id is a unique key for each article entered in the system…”).

Cool.

I needed both more and less.

I didn’t need the comments, but I did need the ability to see – via a Web browser – the following:

  • A list of all databases for a given mySQL database server
  • For each of those databases, the tables said database
  • For each table, the schema (column name, type, nullable, default) for each

Now, there are tools out there (like PHPmyAdmin) that can do whole browser-based DB management, but I didn’t need that much.

I just needed what I listed above: Database, drill to tables and schema. Very simple.

And – as it turns out – it was relatively simple. Yes, took some work to get it somewhat organized, but really not that big a deal.

Highly functional (read-only, as desired), totally self-contained in one file, and compact (less than 200 lines).

Cool. And this includes a little (very little, but some) error-trapping, comments, CSS style and so on. I think this is a very simple code file to follow and modify as desired. Do so.

Here’s an example screenshot – notice the following functionalites:

  • Echos host name (set in file as an ini param)
  • Database selection – defaults (first hit) to first database on server (alpha); an onChange event refreshes the page upon new database selection; maintains state of selected DB
  • The Change DB button is there so a user can keep hitting this button to see any changes to the currently selected database (like a Window F5 keystroke)
  • Selection of a database will reload page with full detail of all tables in said database. Could do differently, to allow drill to tables and then drill to table detail. Coder choice
  • Not pictured: If the selected DB has no tables, only an error message will display, not a non-app error message or other nonsense. Fails gracefully.

And here’s the code; it works for mySQL 3.2.3 on both Linux and Windows (all you have to do is change the host/username/password params).












Database List



// Server defaults

$host = [host name];

$username = [user name];

$password = [password];

// open database connection

$chandle = @mysql_connect($host, $username, $password) or die("could not connect to server");

// Get list of databases; run everytime

$db_list_sql = "SHOW databases";

$db_list_results = @mysql_query($db_list_sql) or die("could not get DB list");

$db_list_rows = mysql_num_rows($db_list_results);

// if database name posted, set; otherwise default to first database

if (isset($_POST[‘my_db’])) {

$my_db = trim($_POST[‘my_db’]);

}

else {

$my_db = mysql_result($db_list_results, 0, "database");

}

// get table list for given db

$table_list_sql = "SHOW tables FROM $my_db";

$table_list_results = @mysql_query($table_list_sql) or die("Table list failed");

$table_list_rows = mysql_num_rows($table_list_results);

?>



HOST:




Database: 







// if no tables, echo out error message

if ($table_list_rows < 1) {
echo "

This database has no tables

";

}

// this will only run if table rows exist

// nested loop: First of tables, for each table, second, display the table schema in tabular form

for ($t = 0; $t < $table_list_rows; $t++) {
$current_table = mysql_result($table_list_results, $t, "tables_in_".$my_db);

echo "










";

// get columns for given table

$column_list_sql = "SHOW columns from $my_db.$current_table";

$column_list_results = @mysql_query($column_list_sql) or die("column list failed");

$column_list_rows = mysql_num_rows($column_list_results);

// get column info

for ($i = 0; $i < $column_list_rows; $i++) {
$current_field = mysql_result($column_list_results,$i,"field");

$current_type = mysql_result($column_list_results,$i,"type");

$current_null = mysql_result($column_list_results,$i,"null");

if (strlen($current_null) == 0) { $current_null = " "; }

$current_default = mysql_result($column_list_results,$i,"default");

if ($current_default == NULL) { $current_default = "(null)";}

// echo results

echo "






";

} // end columns

echo "

$current_table
Column Type Nullable Default
$current_field $current_type $current_null $current_default

";

} // end tables

?>

// close connection

mysql_close($chandle);

?>






Obviously (?), such a tool should only be deployed to an admin area of a site – and there are layers of functionality, security and complexity that one can add to such an app.

But I’ve worked with a lot of coders who were just that: coders. NOT programmers.

A tool such as this is helpful; they don’t have to pop open a database tool (or command line) to query a given database to find out if a given table has a column called “user_profile” vs. “userprofile” or if a given column was int vs. char vs. varchar(255) vs. [longer text].

Useful.

Even if not, a good exercise.

Bush and Broadband

According to a recent Reuters’ report, President Bush is pushing for universal broadband Internet access as part of his re-election platform:

“We ought to have universal, affordable access to broadband technology by the year 2007,” Bush said in a speech focusing mostly on homeownership. “And then we ought to make sure that as soon as possible thereafter consumers have plenty of choices…”

  –  Bush wants cheap high-speed Internet access for all by 2007, CNN, 3/26/2004

OK.

Define “universal” and “affordable”.

And – while I support the underlying message (should be like access to radio/TV signals) – this is not exactly high up on the priority list of most Americans.

Until I see some details about this proclamation, I will remain skeptical and view it as a campaign stunt.

I.e. If one had a job, the “affordable” part would be less of an issue (if no job, whatever “affordable” is, well, it isn’t).

I.e. If one had a well-paying job, the “universal” aspect would be less of an issue (with bucks, you can get most anything).

Comes down to jobs…

Tunnel Vision

In a recent entry, I remarked that I was not surprised but frustrated that commenters on an article about MS and bundling issues on Kevin Drum’s Washington Monthly blog turned into a Slashdot-type thread.

Instead of discussing the issue at hand – bundle, who gets to decide? (government, courts, producer, marketplace or some combo) – it turned into a thread that was all about bashing MS, touting OSS, saying people should dump Windoze into the river and get a Mac and so on.

Some valid points raised, but…this was not the time nor place for same.

I wrote Drum and asked him why he thought the thread went off the road in such a precarious manner. His reply:

Every single post about technology turns into a Mac vs. PC thread (or Linux

vs. PC or everything vs. PC). It usually doesn’t take more than three or four comments before it starts.

  –  Kevin Drum e-mail, 3/25/2004

In other words, he’s sort of given up on the expecting intelligent discourse when tech issues are raised. They always seem to degenerate into some sort of technological jihad.

This reminds me of Eric Raymond’s recent rant – again, commented on in this blog – about OSS’s poor track record with user interaction.

The thread running through each of these articles is pretty simple: Many tech folks – even those who are actually pushing products out there for us to use – are blind. They don’t get that much of this tech stuff is incomprehensible voodoo to most of the world; they can’t seem to look in a peripheral manner to see the big picture or the gradients of gray.

I.e., if an article mentions Microsoft, it’s time to slam MS and promote Linux/Apple/OSS etc. Whatever the article’s topic.

I.e., people want choice, even if it’s to pick “WAN, LAN or Build Own TCP/IP stack” via a wizard for network connectivity.

Bleh.

I’m all for choice; I’m all for getting MS to – somehow – toe the line and behave in a legal manner (moral manner? what percentage of capitalistic companies behave morally??).

But there is this relatively small group that is making all the tech decisions for everyone, and this small group has, in many cases, blinders on. This small group does not know better.

Evidence? Call Myth-Busters!

Myths busted (People = the vast majority of the world):

  • People want choice: No they don’t; they want something they can work cheaply, interchangeably (think .DOC or .XLS files) and that doesn’t require learning. They don’t want to have the choice to download a plug-in to view this or that. It should be installed by default. If not, bugger off.
  • OSS is better because the source code is available: Most people don’t care; they will never look at the source code, even if they run Linux. Take this a step further: For most People, ‘source code’ is…uh, what??
  • MS is devil spawn: Both in the U.S. and E.U., Microsoft has been found guilty of major infractions. Fact. Yet MS has brought (yes, ‘at what cost!?’) a certain degree of standardization to the desktop (the People’s computer). The Web has taught us that this is a good thing. I love that I can send someone an Excel spreadsheet and be pretty damn confident that the recipient can open it. As Martha Stewart would say, that’s a good thing.
  • OSS is free – as in Freedom, not (necessarily) as in Beer: People: “Huh?” and “Big whoop…”

Obviously, this is simplified, but it’s a good snapshot. Most people don’t care about the “religion” of technology; too many technologist seem to fall into the religion trap. At the same time, these examples leave out the potential benefits – invisible to People – that OSS can bring, for example.

But the invisibility is an issue: If People don’t see it, they won’t care. And few like to be educated so they can see the formerly invisible, especially if they don’t care about the course (in this case, tech).

Use a car analogy: I don’t really know how an automatic transmission works, but I want my car to have this. I prefer to drive only cars with same (and clutches everywhere thank me…). There are good, solid reasons to use a manual transmission: I don’t care. Which takes less experience/learning? Automatic.

I’m done.

Ditto for computers. People want to take the computer home, plug it in and…bingo. All done.

And this, my friends, is how you start a flame war!

Text vs. Not Text

Many of the powerful features supplied by Web scripting languages (and use beyond the Web) is the ability to handle text.

Move. Push. Pop. Array to string; string to array. RegEx to add/split/replace and so on.

Powerful stuff. Different levels of “powers” for different languages, but – overall – text handlers are available and impressive in most Web languages.

More difficult once one hits a non-text item, for example, an image.

There are a whole bunch of ways to approach this issue (depending on the language, database/not and so on), but here is one generic example: Assume one has a databased app that stores the text (headline, full article) of a some online news story.

Assume, as well, that the article (or its CMS – content management system) allows (optionally) one image to complement the story that is not databased (except for pointer) but resides in the file system.

Pretty basic.

Yet, while text-based info can be validated against some text-based rules (trim item, must be more than 10 chars and less than 255 chars, cannot be a dupe for its column [headline, full article] and so on).

Images? Little more complex.

  • Is provided image (via upload) valid?
  • Is image a [list or not of acceptable image types]? I.e., is image a JPG?
  • RE: Previous point – is the test against the file extension (i.e. a text file with a “.jpg” extension) or a real test as to what the file is (i.e. “text.txt” is really a JPG)?
  • Any rules on file size? – Height, width, file size
  • Any rules on what to call the uploaded image? I.e. should “rose.jpg” be transformed to “[article_id].jpg” or does each image get it’s own directory? (Can’t have two different “rose.jpg” image in same directory)
  • Transformations: Is the upload supposed to resize/resample [different format] a valid image upload? Copy those images (full-sized, thumbnail for example) where?

Each of the above points is relatively trivial; taken together, it’s a lot of trivial decisions (only JPG?) and conditional logic.

Way messier than text handling. Yes, best handled – as I have done – with different functions and so on…but still…messier.

Full disclosure: I just finished a “update” area of a Website that permits an image upload (along with lots of text stuff). The image processing/trapping – for one image on a page that has a half-dozen text areas and various mappings (to other areas) – is roughly 20 percent of the code.

In this particular case, I was/wasn’t doing the following – this is not rocket science:

  • Uploaded image must exist (PHP)
  • Uploaded image must be a JPG (ImageMagick)
  • New image overwrites existing image (so no unique issues)
  • Standard – but messy – process to resize a given image to 1) full-sized and 2) thumbnail images on given (local) server
  • Upload those full/thumbs to remote server
  • Defaults are set for the processing of full/thumb images

OK, there are defaults set for text, as well – usually NOT NULL and length is not more than [max] characters.

Images are different. Why?

  • Different defaults – MORE defaults – need to be set (dupes, type, width, height, color depth…)
  • Text rules are usually resolved via submitted values (POST values); images require examination of uploaded (or not) file.
  • Text rules may require examination of uploaded (POST) text and database text. Images (or any uploaded file) usually requires the same AND file structure examination (example: Yes, “article_name” = x in the database; but – for an image – one has to check to see if “article_image” is a dupe or whatever in the database AND file structure (unless storing as blobs, which has it’s own overhead)

Sigh.

UPDATED: 3/27/2004 I cut short this entry due to fatigue yesterday. Here is what I left out:

While it’s true that you can – and should – build tools to handle the different (i.e. non-text) datatypes, that’s part of the issue: You have to build them.

For text, most language offer a plethora of tools (regEx, split, arrays and index/substring functions alone handle most of heavy lifting) built in – to different degrees with different languages.

Extensive image – or other file – handling mechanisms are either missing or pale in comparison to the text tools. To a degree, this makes sense – most data processing is text processing, and text often needs to be massaged (parsed, for example), file uploads are usually just an upload/validate that file is [such and such] a file, rename and move. There is not much massaging of the file innards; there is often much monkeying with text strings.

Yet there is a dearth of tools for image processing/validation built in to many languages (I’m not certain, but I think Java does a good job of natively allowing image access – sizes, type and so on).

For other languages – such as PHP or Perl – a (wonderful/brilliant) third-party tool – Imagemagick – allows all sorts of image manipulation/validation (see the IBM tutorial).

While third-party tools can either extend a language’s abilities – or replace native implementations with a better toolsets – these tools must then be available on whatever server the code is deployed. This can often be a huge issue.

For example, get The Suits to sign off on installing a free, open-source (yeah, no support contract/contact) program like ImageMagick on a server. Or you have your own personal site on shared hosting, and the company won’t install this tool. In either case, you could be screwed.

Native support is virtually always preferable, for the preceding reason (it’s there, guaranteed) and for performance issues. Another layer of abstraction over existing code is not the way to go, for the most part.

In addition, non-native tools – be they user-defined functions or third-party products – are not familiar to all developers, so there is that learning curve/slowed production.

For example, all PHP coders know how to grab a substring.

However, if I build an imageDiscovery() function that validates image, passes back the image extension and sets default image HxW and so on, well, that’s custom code that same developer will have to learn if he works on my code/site. Ditto for a third-party tool (such as ImageMagick): The same developer might be used to a different third-party tool, or none at all. Again, learning curve/slowed production.

Ah well, end of rant.

Religion Wars

Kevin Drum – formerly of Calpundit, now of Washington Monthly – usually writes on politics, but in an article today he tackled – in an oblique manner – the browser wars.

What was interesting – to me – is that the article basically zeroed-in the whole issue of bundling products: Microsoft’s contention has always been that it’s not up to judges to decide what goes into a product, it’s the call of the company and the marketplace.

There’s a great deal of validity to this. (Yes, have to consider the monopoly issues; agreed.)

But the comments on this issue (yes, a couple are mine) pretty much focused on how MS sucks, how IE is not compliant, how Opera or Mozilla is the better browser, how OpenOffice is a good replacement for MS Office and so on…

Uh, OK, some valid points, but that’s … uh … not the focus of the article. It’s about bundling.

And people turned it into a Holy/Religious War.

I hate this shit. That’s what’s happening in the Middle East folks; it’s why Richard Clarke is being praised/slammed in Washington D.C. right now.

In a disturbingly overwhelming way, all three issues (MS, Middle East and Clarke) are focused on most anything but the actual issues going on. Just keep twisting the facts…or use one part of one fact to launch on an attack on some unrelated issue…

Maybe I’m just getting too old and cranky; maybe I’m irregular; maybe I’m upset to discover that John Stewart’s The Daily Show isn’t real journalism! Gasp!

Java Jive

I mean the Java language, not the beverage.

I’ve been working in Java for the last few days – just for kicks – and it’s been a mix of highs and lows:

Highs:

I haven’t worked in Java for about a year, and I’ve never worked in Java for an extended period. So the relearning process – each time – is fun in that it’s great to rediscover this language.

Each time I go back to Java, I have more programming notches on my keyboard, so I better appreciate all that’s gone into this language. It’s considerable.

Having done the Java-installation process before, I didn’t have to do this process for my current machine. Yay. Installation of the SDK is still somewhat a geek fest.

My years of working with Linux – for the most part, straight command-line – are paying off for Java. The lack of a good IDE (see “Lows,” below) don’t hurt that much. I just code in my HTML editor (currently ColdFusion Studio), and compile and run from the (DOS) command line.

Lows:

I haven’t worked in Java for about a year, and I’ve never worked in Java for an extended period. So the relearning process – each time – is frustrating. I keep wanting to do things I could do before (say, Process C) without learning Process B. Jumping ahead…

I still hate the AWT – sure, I can use Swing, as well/in place of, but the AWT is still essential in many ways (at least for demos that I look at to learn and so on). Struts, currently, are far beyond me.

My favorite IDE – Symantec’s Visual Cafe, very MS Visual Studio like – was sold to someone years ago and they, in turn, sold it to someone else. I think the product is currently either dead or way too expensive (~$3,000?). And my copies (v1 and the Database Developer’s version) won’t run on my main box (Win2000) – they don’t recognize Win2000 as NT. Crap. Visual Cafe kicked but over Sun’s Forte and Borland’s JBuilder (both of which I have installed on my Win2000 box), and Visual Cafe is a much older product. Interesting.