XP, OSX And What Just Is Value?

I am typing this from a second generation Mac running an updated version of Tiger OSX (10.4.x).  I have it beefed up, as much ram as I can put in (but due to bus architecture only uses 3.3 of the 4 gig of ram), a 360 gig hard drive.  I haven’t upgraded to the newest Snow Leopard — teetering on whether the $120 or so full upgrade recommended for this Mac would be worth it vs. putting the money into a new one.

Upstairs I have a Compaq running Windows XP.  Also, a few servers with base Windows Server installed on them, and dual booting to Gentoo and Puppy Linux and a live distribution of Ubuntu for whatever various reasons I see fit.

In the 90’s and early 2000’s I played the value and expandability game with my Windows machines.  You know — get the ram later, maybe upgrade the processor later (which never happens), new video cards (but they change the slot configs constantly). It was always a game to calculate building vs. pre-made etc.  My time vs. money.  I remember porting data off PS/2’s with zip disks and DOS drivers to save it all.  Working hours on print drivers, maybe days.  Very painful.  Making machines run like Cubans fixing cars that run forever.

Later on after owning several notebooks I came to this conclusion:  what you buy, then and there, is what you get.  You *might* allow for a few upgrades like ram, harddrive, or maybe just maybe a slight OS upgrade.  But in the long run, when its time for that new OS your hardware is too slow (i.e. the 32 vs. 64 bit changeovers).  Or, the performance doesn’t justify spending $250 on that new old architectured processor, when you can put the money towards a screeming fast motherboard and newer architectured processor.

And if you are a developer, like me, you dont give a damn you just WANT IT TO RUN so you can write software.

——————

Value, to me, is something that does what you want for a long long time with minimal fuss.

Now recently I thought I’d install the latest greatest NetBeans on my Tiger Mac so I could develop a an invention in JavaFX.  I like Macs, its like having a Linux machine with a clean interface.  But, if you are a developer you know that upgrading the open source Java SDK on a Mac is near next to impossible.  FUSS.  I installed the SoyLatte port for Java 6, was not trivial.  For some reason, like Windows integrating its browser into the OS in the old days, Mac thinks it has to control someone elses software kit — Java.  In fact I think just recently (October 2010) Apple announced the support of newer JDKs (newer than 1.4 GASP!!) on its OS’s.

I ran into this same problem trying to install Eclipse on the Mac too.   Finally I got sick of it, went to my XP machine, and was up and running in 15 minutes  I had wasted 3 hours on the Mac, I had a protoype piece running in under 1/2 hour on XP.

So here’s my question to Apple: Why?  Why lock out Java installations or Flash engines?  Why make it so difficult for devlopers to use something besides Coco to make apps?  Why require us to upgrade ever year or two at cost?   Why can’t Apple make an OS that delivers value for as long a duration as Windows 98 or XP?

XP first came out in August 2001.  Wikipedia reports it still has almost 49% market share.  I can do anything wiht my hardware and software on it.  I will upgrade to Windows 7 soon — probably a new notebook — but that old Compaq will keep chugging along.  XP’s last support is suppost to be – April 2014.

Mac Tiger was released in April 2005.  It’s last update was in 2009.

14 years of functionality vs. 5 years of functionality.

There are of course payoffs for choosing one or the other that may be time soaks.  Windows requires a lot of virus software etc.  ts registry corrupts, needing rebuilding every so often. But, it hooks up with every piece of hardware; more software than any other OS.  It offers choices.  The Macs are generally rock solid; a nice solution-in-a-box if you need such a thing.  You probably won’t be unhappy but it requires a commitment to the Jobs school of thought.

Please don’t misunderstand me I really like Mac’s a lot.  But the difference between a Windows OS and a Mac OS is comparing a Ford pickup to a slick Harley.  Both can haul,  just pick your poison.

HTML Editors? I thought they’d be so great in the future

I don’t know how old you are or from whence you came but in the 1990’s a lot of us were using crazy tools that had nice WYSIWYG html designers in them like Visual Interdev, or Macromedia Homesite or Dreamweaver, or Frontpage or whatever.  There weren’t many but in our little two-tiered world these were awesome for getting a UI up off the ground and running.

But nowadays I am hard pressed in the programmer world to see anything that well, seems like some awesome futuristic create a great app solution with a great WYSIWYG editor.  In fact if anything, things have become (at least in my world) much more “codey.”  I mean for the sake of the gods even Actionscript/Flex UI’s are all code with no real fun drag an drop interfaces; none worth mentioning at least.

Its sad isn’t it?  I mean, in the way that those kids from the 1950’s thought we’d be living on Mars now disappointing.

WHY?

I think this situation came about for a few reasons:

  1. A division between designers and programmers.  So, designer tools  are predominant for UI.  Developers might use a prototype tool to wireframe something out but that’s about it.  Generally, all the CSS and skinning is handled by a design pro.   It’s better that way, because it takes a lot of work, talent, and its not the same thing as coding the guts. (Fireworks, Balsamiq)
  2. Its just as fast to code.  Why bother with a drag and drop layout when you are going to have to tweak the code anyway?
  3. Scaffolding.  If the UI is predictable, the domain is sound, and UI work is just not that important (Craig’s list for instance)  then just do the ultimate code generation.  You can sidestep WYSIWYG editors for that. (Django, Grails)

WHAT I USE

For some of my straight sites, I just use a tool called HTML Kit build 292 from Chami.  It’s shareware, and does the things I need: HTML, CSS, and Javascript code coloring; term library, ftp client, and a quick preview and button for browser display.  I know several powerful programmers who use just something like TextMate or VIM or Text Wrangler, or Notepad++ or whatever.

I use Grails for quick prototyping because of the plugins and GORM, that allows me to quickly get a domain up, if I need something that powerful.

I tried different WYSIWYG editors and, honestly, cant justify the expenditure on the Adobe products because I don’t design for a living, I code the guts.  The Eclipse plugins are wanting, and anything in Firefox etc. just isn’t worth the trouble.  HTML Kit just lets me get at it quick and I am well versed in the web languages so, its nothing.

Wireframing tools ARE cool.  I took a product through a lifecycle trying both the newer Adobe Flash Catylist, and Adobe Fireworks just this year and it is cool but I don’t believe it.  Code generators outside of raw scaffolds make me nervous — doing a UMD (up-middle-down)  design is ALWAYS a bad idea if a domain is involved.  Because, the domain is a different beast  — different requirements, different technology (for instance, an object cannot be always be stored in its natural state if the domain has reporting or audit requirements).

For wireframing I kinda settled on Pencil, a Firefox plugin.  Also I love Visio but I just use that for documentation and UML.

Oh Well

Those days like in Star Trek where you can create an application by clicking on a few giant buttons on a touch screen aren’t here yet — because some of us are in the business of writing those touchscreens.

Guess you’ll just have to wait.

Agile Veerings: Balance vs. Craftsman

When I had first started hearing about Agile practices, although they weren’t named that (usually XP) over 10 years ago there were some things that were scary, and some things that were cool.  Pairing seemed scary and I wondered how long it would be until misapplication of that occurred.  But the planning for a reasonable within limits set of features to deliver to maintain life balance and productivity made me say: FINALLY!!!  It was an XP valued attribute.

For instance, we know that if a football player had to participate in 3 games a week pretty soon there would be no football players.  Development is mentally tiring — it has its limits.  Creativity has no bounds in engineering — time off can equal a solution.  Its just how we work and no amount of  forcing the issue will change that.

For a while it seemed that this would be the case — work hard for 40 hours, have time off — plan it all and you are golden.  After doing RUP and etc. and just being in tech we knew there was a rollercoaster of hours, but maybe Agile could help make those hour mountains (like 16  hour days) turn into manageable hills.

Something changed though.   This idea of craftmanship; which in addition to a good developer also entails that the said developer is completely dedicated and working, of their own volition, tons and tons of hours because they LOVE to do it.  Companies are looking for people who not only put in a work week, they put in a work weekend, nights (those people who email at 2 am CHECKED IT IN!!!) and walk on water with their blogs and projects etc.    Like the cow in Hitch hiker’s guide: it wanted to be eaten.

I can’t remember the guy who first said it in an IT context, but he quoted an advertisement for the pony express that went something like “Young men, preferably orphans, wanted.”  Wow.  I am hearing that all over now.  And I am calling out this misuse of the word “craftsman.”  The arts and crafts movement was a movement against this very thing.  Just read Morris and Ruskin, the founders of the movement almost 150 years ago.   One of the big pieces of the movement was to allow a worker to create the entire piece . . .  as modern Agile addressed this or used this?

No, not really.  Just take a simple application in an Agile management tool.  The parts are broken down over and over — a developer may never see a single outcome of their work.   So the satisfaction goes away.  So, the so-called craftsman will never really like to do what they are doing having lost autonomy over what they are doing to the higher ups.  And, of course, life balance is lost.

So here is my statement:  everyone is different, and people are craftsman at different levels.  If a company requires this modern Agile assembly line environment they very simply should not try to hire the people that are fanatical craftsman; its a lose-lose for both sides.  The company won’t let the craftsman work in the manner the person wants, ensuing in the unhappiness and less productivity of that person.

All places can still benefit from the ideas of modern building methodologies but they have to be kept in perspective.  Life balance is just another way of saying that people get tired, and need time off to work well.   Let’s not ignore the realities of physiology to accommodate some sort of strange twist on a good idea.

Mountain Bikes and Misapplication of Sliced Bananas

Have you ever known someone like this?  Maybe it was a child:

“Well, I was making tomato soup and I saw the bananas sitting there, and thought they’ll just go to waste.  So I sliced them up in the soup!  Then, remembering I had some cheese and sausage and pickled herring left from that party — I threw them in, and also the last of those brownies from the office meeting.”

Yum.  That’s gotta be some great tomato soup.

If the goal was to make tomato soup . . . it was quite missed by the misapplication of ingredients.  Sliced bananas don’t work well in everything.

Mountain Bikes

Recently I was looking for a rear cargo carry rack for my mountain bike.  For the winter, I have mounted some monstrous tires to float over the snow and grip some ice.  Monstrous.  I also have the need of carrying some cargo so I started to look for a bike rack that bolts onto the rear.  I can’t find one.  I looked at maybe 10 models, even very expensive ones.  None provide the clearance on the giant snow tire or meet the specifications of my particular bike.  None.

One company I talked to suggested this: “Why don’t you just use a smaller tire, then the rack will fit.”

To which I responded: “Thanks, but that would defeat the whole purpose of the snow tires!”

So basically the guy suggested I add sliced bananas to my soup, ignoring the whole requirements of what I need, just to make one little thing work.

So — I made something myself.

Misapplication of Sliced Bananas in Technology

This kind of scenario has so many equivalencies in the tech world I’m making a second pot of coffee just to think about them!

Off the top of my head, I’ve found sliced bananas in these situations:

  • Tooling.  For some reason a lot of places lock down tooling.  One contract I worked at wanted high quality graphics, but wouldn’t give me anything close to Photoshop to create and edit them! I couldn’t even install my own license on my work machine, so I did it on my notebook offsite.  Else — use the company standard “pixel paint.”  Dear god.
  • Features.  Hey — Powerbuilder worked pretty good in 1998 right?  So why not use the same usability documents for a web app?  (This is a true story . . . )
  • Methodology.  You knew I was going there!  If we have all those Agile tools let’s use them!  In fact, let’s retrofit the project INTO Agile that’ll make it . . Agile.  It my not get done but who cares.

Recently the methodology sliced banana has been rearing its ugly head up everywhere.  I have been talking around and reading sites etc. and it looks like a lot of the rigid agile stuff has been falling to the wayside.  So the providers of it are trying to do anything to sell it.   For instance, I have talked to several places that talk about TDD and how important it is but barely anyone uses it.  TDD is a sliced banana, definitely.  Or what about top-down agile?  This is where all the projects info is put into an Agile tool with the intent of making a dashboard for upper management.  But — once this is rooted in upper management the very “Agile” nature of the project is scuttled because if there’s a problem, it can’t be changed.  Another sliced banana.

Features has me thinking too.  A lot of places that don’t even know their business model want uber-flexible frameworks with high amounts of functionality.  Well, I’ve learned something from mountain bikes, kayaks, other objects like iPhones and iPads.  Things that do a lot of stuff  do not do one thing outstandingly.  Sorry but that’s just how it is.  A super fancy UI (function=eye appeal) is harder to change quickly.  A broad domain model takes more time to extend.

Tooling too.  You want to have it all?  Get the IntelliJ IDE BUT it costs money and is a less flexible environment.  So you like basic editing/quick turn around  time?  Use VIM and the command line; but forget about good debugging.  Some people need a Cuisinart, sometimes the task needs a Cuisinart; or sometimes a person can do everything with a good knife.

Well anyway I think I have made my point.  Most of us would prefer to spend our time on just making simple good ole’ tomato soup when that’s what’s needed.  And its surprisingly difficult to make in the software world.

Voice Recognition? Kinda hard . . . .

Ok I decided yet an foray into speech-to-text software.  I am seeing what exactly I can just do with it and honestly, the idea of being a poor man’s Tony Stark is just too cool to pass up.  Well, I guess his commands are like “computer, reconfigure titanium actuator motors” and mine would just be “computer, open minesweeper.”  Still cool though.

Speech to text: You talk, and the computer either types your statement or executes a command.  Speech to text is also called Voice Recognition – VR.  A lot of these applications also do text to speech — computer speaks the text or responds vocally — as well.

I started to research what was open source, and what wasn’t.  With these four features as a priority:

  1. Be able to take dictation.
  2. Be able to process already recorded audio files(MP3’s)  into text.
  3. Execute commands.
  4. Respond like Hal 9000.

Starting to research I came down with these applications:

  • Open source – Sphinx project from Carnegie-Mellon.
  • Open Source – Simon (a non-American effort).
  • Plain old Microsoft VR functionality on a PC.
  • Shareware – E-Speaking VR software ($14; 30 day trial).
  • Commercial – Dragon Speech from Nuance (Currently $75 with a headset on sale)

Sphinx was purely an API for people wanteing to do academic applications or have a core library to make an app.  There were pieces in both C++ and Java, but I found the startup time quite long since I don’t want to CODE speech to text, I want to DO speech to text.

Here is the Sphinx site:  http://cmusphinx.sourceforge.net/

I played with Simon for about 4 hours, and came to this conclusion: it may be a fancy and high potential application but its over-engineered, complicated, and lacks basic “how-to”  instructions that would have any “see-I-told-you-so” usability experts write the second edition to their books scolding us developers.  There is a LOT of setup to get the thing off the ground: you have to download a dictionary,  load it, you have to create “scenearios,” create grammars, and record a lot of samples before this thing will get off the ground.  And since me and my homey Noam Chomsky haven’t hung out in years I was a little short on linguistics PhD knowledge to make this thing fly.  It exposed all the innards I didn’t want to know.

Also, Simon is with a Linux-based KDE graphics and operations.  I didn’t dig into the architecture, it kinda reminds me of a desktop KDE install on a PC.  But, I think this product is platform-independent and even runs on Mac.

The Simon site: http://simon-listens.org

In all fairness, projects like Sphinx and Simon are crucial for the advancement of VR technology, CRUCIAL.  And I thank the efforts on both projects, thank you!

But I want to be Tony Stark.  NOW, dammit.

Through my searches I found out Microsoft has some VR built in, depending on what you have installed.   Here we go again  . . . grasping for straws . . . . maybe.   First  look in my install of Office 2007.  Hmm, nothing.  I look in my Control Panel-Speech — VR tab is missing.  Upon reading I find this out:  XP OS doesn’t have it, you need to have installed Office 2002 or 2003.   After that, they moved the VR module in Vista to the OS, and Office 2007 and later will not have it.  CRAP.  So I find this site:  http://support.microsoft.com/kb/306537  and a light goes on — just install the right service pack.

I find all the software here:  http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-6583171b4530&displaylang=en

And after getting all of it finally figure out what I want is the 68 meg file (this was quite painful, I don’t know WHAT I did to my poor Compaq).  So Bingo/Bango its installed . . . I can uh, train it.  I stopped there, because I wasn’t sure how to make it really work on my XP machine

E-Speaking is next.  I am impressed.  It gives you immediate out of the box functionality, a nice interface with commands for your PC machine.  The UI is relatively easy to use.  it TYPES into notepad!   It has a cool talking face you can skin.  Very impressed.  The E-Speaking product does most of what I want, with relatively little pain.  Awesome.  Also, it sits on top of the Microsoft SAPI engine — PC only but who cares for my uses.

Here’s the E-Speaking site:  http://www.e-speaking.com/

Dragon Speech is a pay-for — I have used it before and it is FAST and the UI is very good,  For more money it does what you want.  What I don’t like is reading their site they seem to want to limit your choice of hardware to theirs.  I am not sure though if they can lock out your own blue tooth headset, that would totally SUCK.    At the current $75 price point I may purchase it though.  Also, its difficult to figure out exactly what features come at the different pricings/versions on their site.  I don’t want to have to pay another $100 to have the word commands “unlocked” — or whether I can even train my own apps on their software, it might be quite locked down.  Also Dragon at a higher price level (for both Mac and PC) can do the transcribing of audio files.

Dragon’s site:  http://www.nuance.coI

Its an interesting revenue model to follow for E-Speaking; I have an idea Dragon will follow.  basically, if you build the wrapper and some basic functionality, you can charge for different voices, bigger dictionaries, command libraries for applications etc.  Its like Mapping software — you buy the wrapper cheap, and pay more for the maps you want if you want them.  Not a bad idea.

The winner:  right now, for my purposes: E-Speaking.   It does goals 1,3,4 and very quickly.  None of them did goal 2 — process MP3’s to text.  Maybe I’ll see what it takes to write something like that.

DNS-343 How To Copy Drive to Drive Faster

The time came this week when I decided to replace my aging 500GB drives with something bigger and newer so I purchased two 2TB drives for about $95 a piece and started the task of dropping them into my NAS server planning for my usual mirrored configuration.  I’m concerned with long term redundant storage on my NAS which is the DLink DNS-343.  Can’t say enough about how much I like it.

Currently my DNS-343 has 4 drives, two 1TB drives in a RAID 1 (mirrored) config, and the two 500GB drives mirrored.  I treat the larger array like long-term memory, and the smaller array as short term and it is my more active array.  I do this because the drives spin down on the DNS-343 when not in use so the larger drives are less apt to failure, being less used, protecting that data even more.  And with planned drive upgrades its a nice way to rotate hardware through the NAS.

So my planned upgrade would happen like this:

  1. First, you have two choices for the 500 GB data, since you won’t transfer this until last:
    1. You can make a tar.gz of the data,  transfer somewhere safe, and move it over at the end.
    2. You can just put one drive in the end and transfer the data in a telnet session.
  2. Remove the 500GB Drives.
  3. Add the 2TB drives.
  4. Build the 2TB mirror array.
  5. Copy the data from the 1TB mirror to the 2TB mirror.
  6. Remove the 2TB drives, and replace with the 500GB drives.
  7. Rebuild the 1TB mirror, and copy the 500GB array data to the 1TB array.
  8. Put the 2TB drives back into place, and use the 500GB drives for something else maybe my surveillance system I am playing with (puppy linux has a nice live CD that recognizes camera hardware and has monit0r apps — ‘nother story).

So I do all that but step 4, copy data, is taking FOREVER.  I figure I have to copy about 700GBs over.  It was taking days.  Till finally – DOH! – I figured it out.

Wired up to my network, I was using Windows from my notebook to do the copying.  On a 100Mbps network!!!!  And considering that the drives have to mirror the data, the network has other traffic on it, etc. its no wonder.

Now at best, a 100Mbps network could copy 1 GB of data in about 82 seconds  (1 gigbyte = 8192 megabits).  That’s about 16 hours.  But this wasn’t happening!  The copy was taking days.

So, I downloaded a cool free program off of CNET called Lan Speed Test to test my local.  It was reporting my LAN speeds to actually be around 60Mbps.  So that’s about 137 seconds to copy gigabyte.  About 27 hours to copy all that data.  But it was taking even longer — because of the read/writes on the mirror on the NAS, I measured manually and the transfer was taking about 4 minutes a gigabyte!!  Easily, it was going to take 47 hours or longer to copy and that’s the time it was taking.

I thought — gee why don’t I just telnet in and do a Linux copy?  I can telnet into my router, my modem.  Well, it was almost trivial, I found out that you need to drop something called a “fun-plug” onto your machine to add telnet functionality.  DLink probably locked it off at some level.  People even root these NAS devices and install Debian, but I don’t want to program the thing I just want to finish installing my drives!!!!!

So here were the steps:

  1. Make sure your DNS-343 is upgraded to the most current firmware.  Currently its 1.03, obtained from the DLink site.
  2. Search on the net for “DNS-343 telnet” and you will find out about Fonz’s funplug.
  3. Download it from his site — two files.  I got version 0.5, fun_plug and fun_plug.tgz.
  4. Drop the two files onto Volume_1.  Fortunately, the drives I was keeping (the 1 TB drives) were in that configuration.
  5. Restart the DNS-343.  It will unpack and install the telnet files on the device.
  6. Telnet into your device from the command line like “telnet 192.168.0.32” — don’t worry you aren’t prompted for a uid or password. (about security in a moment)
  7. The mirrored devices are located under /mnt.  What I did was go to the 2TB mirror under /mnt/HD_b2 (cd /mnt/HD_b2) and issued the copy command (use the -a option to preserve the directory timestamps): cp -a /mnt/HD_a2/* .
  8. The copy ensues.
  9. At then end, just remove the fun_plug files and reboot — now the telnet functionality is uninstalled.  There are ways of doing security and leaving it in but, like I said, I’m not interested in playing around I just wanted to copy files.  By removing telnet altogether I don’t have that security hole.
  10. OK — to copy the data from the original drives.  The DNS-343 won’t recognize the old RAID if you put it back.  What you can do it insert one drive, mount it, and copy it or — if you tar’d up the filed and saved them just transfer them from wherever you stored them.

So how was the performance?

Well, at least four times faster easily than the network method.  The data was being copied at a rate of about 1GB/minute from one internal drive to another on the DNS-343.  With this method I could copy all my data to the new drives in about 12 hours.  Also it frees up my notebook from having to leave it running or at home while the copy is executing.

Honestly, I was hoping for faster!  The drives are 3 GBit sata drives, and I believe the busses in the device are supposed to be just that.  But even if the busses are the older 1.5 GBit speeds, it should only have to take about, supposedly, 7 seconds to copy over 1 GB (1.5 GBit speed = about 150MB/second) so my 700 GBs of data should have only taken 12 minutes to copy in a perfect world.  🙂

Adobe Aliasing Alarm with Text!

Something was puzzling me quite a bit as I tried to make some logo’s for some sites.  I was working in an older version of Adobe Photoshop, mostly because it gives me what I need at my remedial level but also because I haven’t converted all my currency to gold so I could afford the new  version.  Anyway, its only a two year old version.

So, I would make logo’s in Photoshop with text.  Mostly to by pass the CSS garbage some CMS applications like Joomla make you crawl through to have a meaningful looking site name.   But when I would upload the logos onto the sites they would render with severe aliasing.  Severe!

The V’s and O’s and anything with diagonals and curves had all these zig zag lines – aliasing.  I would just simply create a canvas in Phootoshop, add text withe the text tool, and export for the web.

After a few tries I realized, maybe the dithering and smoothing the “export for the web” selection added on wasn’t working.  So, I just simply did a “Save As” and chose my preferred format (PNG) and voila! the text-based logos looked nice and crisp.

How I Yearn For The Good Old Days

I’ve been talking with recruiters as the economy has picked up a bit and there’s something different that has happened in the last few years.   Notably, its the treatment that we the developers get when trying to do business with these salespeople.  The treatment has become very much more poor, almost abusive, in many ways.  I talked with several of my developer colleagues and here’s what we’ve been seeing:

  • Immediately we are asked for our rate — without even knowing the person.  If we refuse we are run through the mill and treated poorly.
  • We are asked for all of our contacts — our developer friends — so they can be helped.  if we don’t capitulate again, the conversations with the recruiter and company take a turn for the worst.
  • A few years ago we would agree to meet a recruiter for the first time on neutral ground, like a coffee shop, splitting the distance.  These days the staffing companies are expecting us to drop everything we are doing at our existing job (with raises flags) to go to their site to meet them on un-neutral ground.
  • We are never, ever thanked for our time or, if naive enough, the information we have given them.  Ever.
  • It seems to me that the actual knowledge the newer companies have about actual technology is very low compared to that of 10 years ago.

It’s interesting, this kind of treatment.  It’s interesting because it implies that the day of the turn and burn recruiter is here forever, and gone are the relationships and the long term vision of partnership and future business.  I haven’t formulated any response to this.

For instance, a few days ago I was berated for my rate — I just said, it depends on the job.  Why isn’t that good enough?  But when I ask an accounts manager for transparency into their margin percentage, some of these new types of recruiters and companies will very simply hang up on you.  If you call out that they are in fact selling you a job — that you are a buyer, not someone they are doing a favor for — they get very upset.

By no means do I suggest being belligerant, but lets face it: the idea of “employer” in today’s world is very temporary.   Do you seriously think you’d get paid these days to sit on the bench while they look for another contract placement?  Does anyone think their FTE-ship is beyond an episode of layoffs?  Seriously?  And add to that that we the developers are doing a different profession that they the sales.  We don’t even understand each other’s worlds.  Its all too often I see developers, not companies, putting up with these blocks of productivity and disrespect.

It doesn’t have to be like that.  As developers we have to realize that our peers are other developers.  They are our people.  We spend our daily lives with each other, not with sales or management.  To our people we owe our allegiance and to watch each others backs.  I have yet to see the promise of “if things get bad I’ll pull you right out” from a consulting company; not while there is money to be made.  YOU ARE JUST FODDER.

Now not every place is like the cold heartless consulting firm or company so let us be mindful and not participate in those horrid places.  It starts with you.

DNS-343 USB Printer Hookup Demystified

I’ve had beautiful DLink DNS-343 NAS server for a few years now and I love it.  It takes four drives, currently I have two 500 gb drives mirrored and two 1 tb drives mirrored.  Everything goes on them, gets backed up, etc.  Hook it up to the local router box and it just runs, dammit.  Love it.

So anyway I also have a great Brother multifunction laser networked printer/fax/copy/scan the MFC-7440N.  It’s monochrome, and is my main squeeze when it comes to most of my printing.  Laser never ever clogs.  Prints forever.  I just hook it up to the local router box and it just runs, dammit.  Love it.

Both machines I just leave on.  They power down, the power drain is compensated for easily by an incandescent I replaced with a CFL in a hall where quality light isn’t needed.  When I need them, there they are waiting on the network.

Sometimes though, I need to print out something fancy and in color.  For this I have a Canon IP-4200 inkjet.   I like the Canon’s because the print heads are built into the cartridges — so if you ever clog, just put a new cartridge in.  I had this problem all the time with an Epson, the heads were part of the machine not the cartridge and if you let the printer lay dormant for a month you spent four hours wasting paper and ink printing out test pages.  If you put new heads in it solved nothing boy did that thing cost me a lot of money an time.

And just for the record, I let this Canon sit 9 months without printing and it fired right up and made gorgeouos color photos — no head cleaning!!! Amazing.

Well anyway, I used to hook the Canon, a USB printer, up to whatever computer I needed but I wanted it on the network.  Guess what?  The DNS-343 has a usb connection on the back just for that!  (Or a UPS, if so inclined.)

So I hooked up the printer, turned it on, and sure enough it showed on the DNS-343’s admin web site.  But, I couldn’t access it from any computer!  I tried and tried the prescribed formula:  1.  Install printer driver on computer 2.  Add via the network, searching under workgroups.

For whatever reason, however I have my local network setup, no computer would find the Canon.  So I thought, maybe I can just directly add it with the ip and some Linux designation?

Sure enough — all’s I had to specify was something like //192.168.0.32/lp and it found the printer.  The IP address (or name, if you are so inclined) of the NAS and lp for the printer.  The “lp” is the Linux symbolic link to the printer, if you were wondering.

Fast Paced Workplace with Dedicated Developers? Hogwash

Recently I was helping out a team that was on a death march.  They had all the great things a high energy project requiring dedicated developers employs into the project methodology:

  • Unpaid overtime, lots of it.
  • Moratorium on vacation time – none allowed.
  • Vacation time does not roll over at year end.
  • Mandatory weekends and late nights.
  • Short notice on certain late nights, as much as (gasp) four hour notice for having to stay late Friday or work Saturday-Sunday.
  • Zero, ZEEEEEE-RO, project plan and schedule.

You might think this is crazy.  I am thinking that this is more likely the rule now rather than the exception; I’ve been talking to my colleagues and all of us are having this problem:  poorly planned projects intent on destroying our outside lives; the reasons many work in the first place gathering cholesterol in their ateries by sitting still in place for 8-12 hours a day.

XP addressed this by calling out for the value of  “sustainable velocity.”  It did this by allowing developers to gauge their NORMAL velocity via estimates, and then to use that to predict the amount of software they could do in a short iteration.

Recently I was asked — “golly Journeyman if you are such a great developer then why is amangement never happy with the work?”  It’s because managment only wants one thing — to paraphrase Jackie Mason:  MORE.

Now I am not going to blame them but at some point we have to ask ourselves the simple question that if work is so great, why do they call it work?

Note, I am not saying don’t love your professions or what you do.  By all means do it.  But recently I was pitted against a another less experienced developer.  He billed 38% more than me — 55 hours to my 40.  He made roughly 2/3 as much per hour.  I produced twice the software with 1/5  less bugs.  The bugs took up an average of 50% of the time of the original story (due to requirements).  (This is all from a project tracking tool.)  So, in simple math it took him 110 hours to produce the original software, if we even out the bugs ( it wakes him 4/5 more to do the bugs thats 50% time 110) then it takes him 165 hours to equal my output.  Multiply by 2/3 the pay, he costs 109 hours in my dollars. 273% more expensive than me.

Management though only looks at hours on certain projects; not quality and planning.   So, a person who works more hours is of course more productive — in the new PM Agile world.

Now last wek I was at an Agile conference, and one of the vendors helped me figure out — the change was when Scrum came along. Like in 2007 it made Agile widely adoptable to management — SCRUM did this.  And in Scrum, with a tracking tool that many companies now use like MS Project manger — hours are more important than results.   Estimates are used against developers as accountability, instead of as an aid to get better estimates.   It changed EVERYTHING.

Sooo . . . anyway all my musings aside is why, young or old grasshoppers, we should avoid projects that say “High Energy” or “Want Dedicated Developers.”  Because here are the formulas to calculate the meanings of these terms:

High Energy Environment = poorly planned requiring lost of unbilled hours by task people.

Dedicated Developers = developers willing to work tons of extra hours for free.

Its as simple as that.  I am not saying don’t work hard.  I am just saying, work smart.  You will be taken advantage of if you don’t, your life will become miserable, and your productivity will drop.   70 hours of a burned out developer’s time with 30 hours unpaid on a meangingless project is way less productive than 45 paid hours of a developer’s time on a well thought out, superbly executed project.

And remember — management are negotiators.  Sales.  Compromisers.    They have to be because they work people jobs.  But its up to us to call BS on them:  poor project plans are not negotiable.  Life sucking jobs are not negotiable.  The way to stop the machine, is just to take your toys home and don’t play with them.