Dual Allegiance When Consulting

Dual Allegiance?  To both the Freemen, and Duke Leto?  It worked on Dune.  And is a reality for a consultant  in today’s modern world.

Before writing this I searched and searched for quotes about dual allegiance and found nothing.  Lots about fidelity, and loyalty — both ways.  Oscar Wilde seems quite abhorred at allegiance.  But nothing on dual allegiance.

Over the years I have talked to countless account reps and HR people  and it struck me that the definition of what an “employee” really is becomes very gray, and once onsite, whom you owe allegiance to is rife with conflict of interest.

Of course, your first interest should be yourself.  Your health, your family, your sanity, your career without which there is no worker bee.    Although even those choices can conflict (for instance, staying bed in the morning conflicts with all other parties’ interested).

But let’s say you are working with an agency and you get onsite with a client.  Who are you supposed to really be loyal to?  The bottom line here is very gray.  The agency is issuing your check, but the client is giving them the money for that check.  And you are in the thick of things at the clients; the agency probably knows far less than you about how to stay on contract there.    Then, there’s the bottom line technology expertise; most agencies are keyword-driven and know absolutely zilch about tech or actual work conditions while the client is really in charge of your happiness and opportunity (and of course you too are responsible).

For instance, a scenario I have been faced with time and again has been overtime.  Usually its a great thing, in doses.  But lets say the overtime requirements bleed on for a year burning you out.   Most agencies don’t even have a tiny clue as what this means; they just see the big checks coming and want them to keep coming.  Also, sometimes the client doesn’t want the overtime but the employee and agency does and may spin something in a sales manner to get more hours etc.  These kind of situations are bad.

So how do we all mitigate this dilemma, which is very ethical in nature?

I usually look at it like this:  the client is my real customer/employer, and the agency is my partner from whom I have purchased a contract for part of the billing rate.  Most agencies don’t pay bench time and definitely do not supervise onsite projects, so its impossible to see them as anything more than some sort of hr/check issuance service.  Also, most agencies will not step in to protect a consultant because that may jeopardize their big picture status — of having other consultants at that client site.

Also, being a developer, conversations with both parties is quite different.  Agencies rarely have many of the real specs or the expertise to figure out what they are selling to (thus the success of “turn and burn” recruiters).  Your conversations with them will be sales driven, and they will be listening to your words not just to evaluate you as a wholesale product but also for names of your contacts or old gigs you worked to see if there’s opportunity outside of your relationship with them.  With the client, conversations are about solutions for their business almost exclusively.  Most of your contacts and colleagues and new friends will come from the site.  Your compatriots in your profession will come from the site.  And if you do a great job, then they will ask you to come back and pay — whereas the agency will have to wait for another placement before it pays.

The political nature of this can’t be understated, especially if you are trying to stand your ground on what you like to do, your rates, etc.

So you do indeed have dual allegiance during a gig.  Well, a triple allegiance.  Yourself, the agency, and the client.  Experience will teach you your comfort level.   Play it well.

Consulting Vs. FTEship – What Does It Really Mean?

In the last few years of this tentative economy some of us have decided to “hunker down” and take FTEships.  Others of us got laid off and went back to consulting.  Some of us started companies, some of us stopped companies.

Myself, I’ve been a consultant/contractor most of my career.  Also, I have been an FTE twice for product companies I truly believe in.

Anyway.  What exactly do I think of when I think Consultant (= Contractor for my use) versus and FTE?  It’s very simple to me:

FTE

  1. Primary Focus:  the business (i.e. manufacturing) but not necessarily the craft (i.e. developer).
  2. Is on a tract for usually management, maybe architect.  Become better at the business.
  3. Feeling of “job security.”
  4. More easily obtained benefits packages.
  5. Lower pay for more hours.
  6. Usually educated through the workplace.

Consultant

  1. Primary Focus:  the craft/profession of developing.
  2. Tract is usually more knowledge or leadership roles on projects.  Become a better developer.
  3. Accepts risk of short-term project employment.
  4. Usually takes care of own benefits.
  5. Better pay for hours.
  6. Usually self educated.

So there you have it.  The experience in the two realms produces two different types of developers.  Probably a myriad of inputs cause a developer to choose on path over the other.  From my experience and discussion with people it kind of boils down to this:

  • People who need to feel secure become FTE’s.
  • People who want higher pay at greater risk become Consultants.
  • People who need new things and experiences become Consultants.
  • People with long-term business objectives become FTE’s.
  • Many times I find Consultants to be more motivated after hours to work on new technology and solutions.
  • I find that more FTE’s want a life balance and a J-O-B job, which is a good thing too.

Now, a dirty little secret in the development world is that 90% of the time you don’t even talk about what the actual “business” of the applications you are working on might even be.  Most apps are a domain, garbage in and out, and screens designed by God knows who.  You are just a brick layer.  Will the building be a tire store, or a puppy mill?  Don’t know.  But I can lay the bricks.

The Bias Point

My personal bias point, and why I hesitate to become an FTE, is that it really requires a commitment to the business goal that forsakes the profession of coding.  Its almost a conflict of interest.  I find it curious that FTEships are even offered out front — except that they probably save money due to the weird and unresolvable “pay less for an FTE than a Consultant” paradox that has all of us scratching our heads.  The craftsmanship all places are seeking comes from within the individual, not a Director “demanding” a person become a craftsman.  Many times the FTEship is a throat collar to those types.

So I have only this advice:  if you believe in the product like a crazy man, or need a steady job, certainly become an FTE.  If you are dedicated to your craft, stay a consultant.  Some places afford the best of both but its rare.

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.