Archive for the ‘ideas’ Category

digital preservation

Wednesday, April 18th, 2012

I have been an active member on the Stack Exchange family of sites [nearly] since StackOverflow started a few years ago.

Recently a new proposal has been made for Digital Preservation. Many of the proposed questions are interesting (including one of mine) – and I would strongly encourage anyone interested in the topic to check it out.

The topic has resparked a question I have had for a long time – why is important to archive data?

Not that I think it’s inherently bad to hold onto digital information for some period of time – but what is the impetus for storing it more-or-less forever?

In tech popculture we have services like Google’s gmail which starts users at a mind-boggling 7+ gigabytes of storage! For email! Who has 7GB of email that needs to be stored?! For a variety of reasons, I hold onto all of my work email for the duration of my employment with a given company – you never know when it might be useful (and it turns out it’s useful fairly frequently). But personal email? Really? Who needs either anywhere near that much, or to hold onto it for that long? And those few people who arguably DO need that much, or to keep it forever, can afford to store it somewhere safely.

I think there is a major failing in modern thinking that says we have to save everything we can just because we can. Is storage “cheap”? Absolutely. But the hoard / “archive” mentality that pervades modern culture needs to be combated heavily. We, as a people, need to learn how to forget – and how to remember properly. Our minds are, more and more, becoming “googlized“. We have decided it’s more important to know how to find what we want rather to know it. And for some things, this is good:

If you are a machinist, is it better to know how to reverse-thread the inside of a titanium pipe end-cap, or to go look up what kind of tooling and lathe settings you will need when you get around to making that part? I suppose that if all you ever do in life is mill reverse-threaded titanium pipe end-caps, you should probably commit that piece of information to memory.

But we need to remember to forget, too:

when you need to make two of these things. Ever. In your entire life. In the entire history of every company you ever work for. Well, then I would say it’s better to go look up that particular datum when you need it. And then promptly forget it.

The historical value, interest, and amazing work that is contained in the “Domesday Books” is amazing – and something that has been of immense value to historians, archivists, politicians, and the general public. Various and sundry public records (census data, property deeds, genealogies, etc) are fantastic pieces to hold onto – and to make as available and accessible as possible.

Making various other archives available publicly is great too (eg the NYO&WRHS) – and I applaud each and every one of those efforts; indeed, I contribute to them whenever I can.

I continuously wonder, though, how many of these records and artifacts truly need to be saved – certainly it is true of physical artifacts that preservation is important, but how many copies of the first printing of Moby Dick do we need (to pick an example)?

I don’t know what the best answer is to digital hoarding, but preservation is a topic which needs to be considered carefully.

tax day

Monday, April 16th, 2012

Tax Day in the US is “late” this year because the 15th of April was a Sunday.

I was able to prepare and file my taxes early-ish (January) thanks to a proactive employer who got our W2s out quickly.

Every month I look at my pay stub, and am appalled at how much the various governmental agencies claim is “theirs” of MY worked-for pay:

  • 11.3% – Federal
  • 4.7%  - State
  • 3.8% – Social Security
  • 2.3% – Lexington-Fayette
  • 1.3% – Medicare
  • .5% – Fayette County
  • 23.9% total taxes claimed

And it’s only that “low” because I participate in (completely legal) programs to reduce my taxable income (401(k), FSA, etc which reduce my taxable income by about 12%).

We have not yet added-in the state and local sales taxes that are claimed, nor the federal, state, and local fuel taxes (over and above sales taxes in most states). Currently I am not a home owner, but when that eventually changes, I’ll be paying property taxes – a fee to the city/county for the privilege of living there!

Of my take-home pay, if I spend $2000 per month on “stuff” (groceries, eating out, gas, shopping, whatever), about 7% of that is going to the tax coffers of the county and state (and maybe city, depending on where you live). 7% of $2000 is $131 (or if you want to add 7% on top of the $2000, it’s an additional $140).

I am a proponent of pay-as-you-go – in all areas of life: if I want to make use of something that belongs to someone else, or that is maintained by the “people” (eg roads), I do not at all mind paying for that opportunity.

However, I despise double-dipping and multiple-paying on the same service/product. A prime example is the concept of a toll road: if the road is owned/operated by the “government” (which is really the people, but with a delegated responsibility to maintain the facilities), it makes sense to me that it should cost something to have to take care of that road. However, if the government wants to charge a toll for a road, then it must eliminate the fuel tax that every driver pays: by charging a toll and a fuel tax, drivers have double-paid for the privilege of using the road.

Double-dipping affects all consumers in every other purchase they make as well because corporations are charged taxes on their income, and since businesses are in business to make money, they have to cover that cost from somewhere, which means it comes from their customers.

Several years ago I wrote a paper on implementing a flat tax in the United States. In the intervening years, I have become convinced that the premise on which I wrote that paper is not the best (ie, taxing income), but that it was a solid start in the Right Direction™.

What needs to be done instead is far simpler, and would in the process also eliminate the need for most of the IRS, and give substantially more power directly to the people over the direction their government takes.

Abandon the concept of an income tax entirely.

Eliminate taxation on gifts (including estates). Eliminate the “special” Medicare and Social Security taxes.

Implement a flat sales (or “consumption”) tax on all non-food purchases in the country.

One of the beauties of the sales tax is that everyone pays it – whether you are “rich” or “poor”, it is equally, and fairly applied to all – and it’s shown every day on transactions around the country: you buy a $20000 car, you pay $1400 in sales tax. You buy a $40000 car, you pay $2800 in sales tax. That’s a simple, easy-to-understand model, and one that everyone can follow straightforwardly.

According to Wikipedia, in 2007 total tax receipts (income, employment, corporate, excise, gift, estate) to the Federal government was just under $2.7 trillion. That’s trillion – with a “t”. According to this site, total personal income in the US in 2010 was $12.3 trillion (in 2007 it was $11.9 trillion)*.

IF every American who earned an income paid a flat tax on that income (with no deductions, no special categories, no “loopholes”, etc) of 23%, that would *completely* cover the tax receipts of the Federal government. That would be a simple solution – if it wasn’t for what one of my favorite entertainers said:

The income tax has made more liars out of the American people than golf has. –Will Rogers

Let’s end that lying now.

In 2011, the US spent $10.9 trillion. Subtract out non-durable goods for the moment (a quick way to distinguish food out of the mix, though I’m sure people didn’t spend $2.5 trillion on food^). That brings us down to $8.4 trillion.If every person who bought something new in the US paid a sales tax of 37%, that would more than cover the tax receipts of the Federal government. With the far more probable $0.5 trillion spent on food at home, that gives $10.4 trillion spent. A sales tax rate of %26 would cover the Federal tax receipts.

Businesses already collect sales tax. Collecting a different rate is simple.

If the “average” citizen saw that on top of his $10 meal at Applebee’s he needed to pay $2.60 in taxes, it might help him budget better. It’s certainly more transparent – and easier to track.

Yes, it would put all kinds of tax attorneys, accountants, and the like out of work – but it would also mean that folks wouldn’t have to spend hundreds of millions and billions of dollars per year to worry about their taxes: pay when you buy. It’s really that simple.

Eliminate the overt, unnecessary complexity of our tax code, and make it the simplest to understand and comply-with in the world.

Oh, and make the US an enviable target for corporations wanting to headquarter/operate here: no taxes on business income would be a clarion call to start/operate here.


*See bea.gov/newsreleases/national/pi/2012/pdf/pi0212.pdf for more recent numbers
^according to creditloan.com/infographics/how-the-average-consumer-spends-their-paycheck, the average 2.5 person household spends $3750 per year on food at home (untaxable in my plan); there are 325 million people in the US; that’s 130 million households and $487.5 billion (just under $0.5 trillion)

baggage

Tuesday, April 3rd, 2012

I see Allegiant Air is starting to come around.

For several years, many airlines have had checked bag fees – but carry-ons are free. But it’s having carry-on bags that slows everyone down while inept and hapless travelers try to wedge their carry-on and “small personal item” into overhead bins, under the seat in front of them, or in a neighbor’s lap.

Let’s reverse that policy and allow one carry-on bag per person for free (laptop bag, backpack, purse, etc). Then have all other bags be checked (maybe charge over 3 checked bags – or not, that’d be up to the airlines).

I’d put money down that most everyone’s flights would be substantially smoother that way.

creamy, cheesy baked potatoes

Monday, March 12th, 2012

I don’t like sour cream (not when I know it’s there, at least).

However, I do like creamy baked potatoes.

And I like cheesy baked potatoes.

My solution?

Cream cheese instead of sour cream!

Directions:

  • bake potato(es) to desired doneness
  • split in “Wendy’s” fashion (perforate with a fork, and squeeze the ends perpendicular to the perforations)
  • dollop whipped cream cheese into opening
  • mix in
  • add bacon bits, other cheese, chives, etc to taste

The cream cheese also does a good job of substituting for any butter you might otherwise have planned to add to the potato.

Be sure the cream cheese is of the whipped variety – solid cream cheese takes too long to mix in :)

fill-in-the-blank takeout and delivery

Thursday, February 9th, 2012

Somebody should start a fill-in-the-blank takeout and delivery service.

Want Arby’s? Call FITB. Want Chinese? Call FITB. Want groceries? Call FITB.

I bet there are a *LOT* of people who’d take advantage of services like that if they were offered – I would.


Maybe I should start the first one in Lexington.

doing technical phone screens

Monday, October 3rd, 2011

Related to a previous post on career development, I thought it could be interesting to look at one approach to the technical screen that I have used over the past few years when interviewing candidates.

  1. for folks with no “real” experience yet, I ask them to rank themselves on a few key technologies on the “Google scale”
    • the range is 0..10 where a 0 is no knowledge, 1 is some, 10 is “you wrote the book”, 9 is you could’ve written the book, or you edited/contributed
    • on a few occasions, I have had folks ask to change their ranking from their initial [overconfident] statement to one that is much closer to inline with their true experience/comfort/knowledge level – and that’s OK in my book – honesty is always the best policy here
  2. a couple quick “about us” questions – open-ended inquiries that let the candidate tell me what they’ve done for work
    • this verifies their resume
    • gets them warmed-up for the rest of the call
    • allows the candidate to brag on something
  3. perhaps a couple quick probes to find out more about a specific experience
  4. a few basic / intermediate questions to assess candidate’s technical chops (ie, verify that their resume is accurate)
    • this goes along with my personal rule of “never put anything on a resume you don’t want to be asked about”
  5. open-ended, intentionally-vague questions to gauge problem solving ability, and methodologies
    • see how they go about refining the problem statement (if at all)
    • gauge estimation skills
    • gauge teamwork and delegation aptitude
  6. a few intermediate/advanced questions about an area they *don’t* know anything about – to gauge their response to unfamiliar/stressful situations
    • in my field in particular, it is impossible to know every new technology or even (probably) to be truly 100% aware of those that you do use every single day
  7. a few intermediate/advanced questions in their now-articulated fields of expertise (presuming I have any)
    • this verifies more of their stated (and unstated) job experience, and helps determine at what title/work level they should start
  8. lifestyle/workstyle questions
    • how much they enjoy travel
    • how they handle last-minute demands and “requests” by customers and management
  9. a few questions to gauge flexibility of response to changing requirements
    • for example, switching a project from being Solaris-based to Windows-based part way into implementation because a new CIO has come in, or new licensing is available, etc
  10. open time for them to ask me whatever they may wish to know that I can tell them
    • this usually ends-up being very short because the candidate was stressed-out over the interview, and can’t think of anything about the company they want to know on the spot

What I try to NEVER ask:

  • “trivia” questions – I bet there are C questions even K&R couldn’t answer :)
  • I guarantee I can ask you a question about your area of expertise you cannot answer…just like I guarantee you could do the same to me
  • since that is the case, trivia questions are pretty pointless, and more of an ego stroke to the asker than anything else
  • pointless “MindTrap“, lateral-thinking questions
  • riddles are fun – but only add to the stress of the interview
  • pointless problem-solving and estimation problems
  • for example, “how would you move Mt Fuji”, “why are manhole covers round”, or “how many gallons of water flow into New York Harbor from the Hudson River per hour”
  • estimation problems are wonderful tools and games to play, but not in an interview
  • illegal questions
  • sometimes they slip out, but it’s never intentional :)

I adjust my questioning to fit the situation, timing, and candidate responses – so it’s [somewhat] different every time.

When the interview is done, I write-up my evaluation of the candidate and send it on to the hiring manager. In line with Joel Spolsky‘s “Guerilla Guide to Interviewing“, I make sure to put my firm conclusion of Hire/No-Hire near the top, and again at the bottom – with my reasoning in between.

One thing I have noticed about almost every interview I have ever taken or given is that I end up learning something in the process – and not just about the candidate (or company). It’s important to listen to both how and the candidates responds to questions, and what they say.

So, if you ever get the chance to interview with me, you have an idea of how I’m going to run the show :)

effective error messages

Monday, September 26th, 2011

I had a recent conversation with an old classmate, and he stated that using asserts when programming Java is useless because an exception can generate more useful information. Exceptions are only ”more useful” if you are a developer or perhaps supporting an application. When a bug report or support case needs to be created, supplying the “raw” errors can be a useful tool in finding a solution.

However, to go back to my friend’s point, he asked how an assert can “benefit someone that is running the application”. The short version is that NO ”error message” that is in the frame for a developer will [likely] benefit the person “running the application”.

David Pogue wrote about this more than a decade ago, but it’s something that still has not taken-hold in most applications: the human-friendly error message.

The C Compiler in MPW (a Macintosh programming tool kit) gives you messages like this: “You can’t modify a constant, float upstream, win an argument with the IRS, or satisfy this compiler.” Or this: “Type in (cast) must be scalar; ANSI 3.3.4; page 39, lines 10-11. (I know you don’t care, I’m just trying to annoy you.)” Or how about “This label is the target of a goto from outside of the block containing this label AND this block has an automatic variable with an initializer AND your window wasn’t wide enough to read this whole error message.”

The BeOS‘s native browser, Net+ (pronounced “net positive”), had amusing error messages – in fact, it was those amusing messages that spurred the name of the OSS reimplementation of BeOS, Haiku.

For instance, a user might see the following error message if they try to access a website that is unavailable:

Cables have been cut
Southwest of Northeast somewhere
We are not amused.

If the user tried unsuccessfully to authenticate against a website, they might see:

Server’s poor response
Not quick enough for browser.
Timed out, plum blossom.

One you might see, however, in a product I use frequently:

2011-09-08 19:03:58,590 INFO Thread-12 [org.apache.beehive.netui.util.logging.Logger] [info] Register RequestParameterHandler with
prefix: checkbox_key
handler: org.apache.beehive.netui.tags.html.CheckBox$CheckBoxPrefixHandler
2011-09-08 19:03:58,591 INFO Thread-12 [org.apache.beehive.netui.util.logging.Logger] [info] Register RequestParameterHandler with
prefix: checkbox_group_key
handler: org.apache.beehive.netui.tags.html.CheckBoxGroup$CheckboxGroupPrefixHandler
2011-09-08 19:03:58,592 INFO Thread-12 [org.apache.beehive.netui.util.logging.Logger] [info] Register RequestParameterHandler with
prefix: radio_button_group_key
handler: org.apache.beehive.netui.tags.html.RadioButtonGroup$RadioButtonGroupPrefixHandler
2011-09-08 19:03:58,592 INFO Thread-12 [org.apache.beehive.netui.util.logging.Logger] [info] Register RequestParameterHandler with
prefix: select_key
handler: org.apache.beehive.netui.tags.html.Select$SelectPrefixHandler

Gee, thanks Apache!

Compare that with Google’s Chrome browser that puts a frowny face on a file folder and says “Oh Snap!” when something goes wrong (whether it’s the browser’s ‘fault’ or not).

So why don’t more applications come with “friendly” error messages?

Part of it is because developers too often are concerned with getting something shipped (shipping is a feature, after all), that they don’t stop to consider who is going to actually use the software.

User. The four-letter-word of the development community. Developers all too often (I’m as guilty as anyone on this) of forgetting that what they are writing is for someone else to use. Not for them to work on, debug, develop, extend, and futz with. No, it’s to use.

The average user doesn’t care that some component interacted in a bad way and caused a stack trace… they don’t care that there even are components and stacks to trace!

It takes conscious effort to write message people can care about, or at least understand. And it’s not because the userbase of a given product are dumb: they’re just not developers. Doctors surely are not dumb as a group, but that doesn’t mean they’re qualified to understand a stack trace on the EMR system.

Developers need to take a step back from their work and remember that there are other people in the world beyond just them, and if the more easy and friendly a system is to use and interact with, the more likely people are to want to use it – which might just keep them employed :)

apple should buy sprint

Thursday, September 22nd, 2011

According to The Street, Sprint-Nextel is at a 52-week low with today’s closing price. Their market cap is $10 billion.

Apple as $70 billion in cash on hand.

Google is buying Motorola.

I think Apple should buy Sprint. And they should stop distributing the iPhone via Verizon and AT&T in the US.

  • guarantee a distribution channel for media which Apple proffers
  • boost Sprint’s value
  • accelerate the deployment of 4g (and better) network technologies (a la LightSquared)

It would also give, in my opinion, a strong leg-up for Sprint on their suit against AT&T’s proposed acquisition of T-Mobile.

technical career development

Tuesday, September 20th, 2011

Career development. Career path. Development opportunities. Taking your career to the next level.

Terms and phrases we all hear and pretty much pass over in our day-to-day lives. Right up until we want to move to a new/better job or performance reviews roll around.

But what do they mean, and how can you advance your career (presuming, of course, that you want to)?

This is by no means an exhaustive list – indeed, I’d appreciate any other ideas / feedback / improvements y’all may suggest :)

For a software developer:

  • be the documentation KING of your code – if it’s not right, make it right
  • own every bug in your code – even when it’s not “yours”
  • be The Guy™ who learns a new component of the code/product (at least conversationally) every few weeks
  • write at least one tutorial a month on the internal wiki/kb about something you found or did with the code
  • write at least one tutorial or similar a month externally (maybe a personal blog) in a general fashion about something you learned or did

For a systems consultant:

  • be the documentation KING of every project you work on – make ABSOLUTELY sure the next guy can do more after you leave
  • own every issue you find, even when it’s really somebody else’s problem (no throwing it over the fence)
  • the The Guy™ who learns something new about the environment or product every couple weeks
  • write at least one tutorial a month and/or give an overview talk of something you learned/did
  • write about what you’ve done (changing names to protect the innocent) on a blog or elsewhere
  • teach as many people as are willing to learn what you know (in your company / on your team / etc)

Focus – decide where you want to be, and plot a course to get there.

Finally, NEVER make yourself “irreplaceable” – the instant you make yourself irreplaceable, you also make yourself unpromotable: after all, if you’re the Only Guy™ who can do your job, why would your boss/manager/supervisor even think of moving you into a new role?


As a side note – if you’re ever working at a customer site, don’t take calls from anyone other than the customer while you’re at your desk/cube/workspace: even if it’s project related, take it in a different room :)

how intel could save itanium

Monday, September 19th, 2011

It’s not news that the Itanium processor is doomed in its current incarnations. Microsoft has dropped support, as has Red Hat – meaning only HP supports it with an active platform in the US (with HPUX).

The Itanim should have been Intel’s chance to totally walk away with the processor market – but they blew it by totally breaking x86 compatibility, and not in a good way: their bungle allowed AMD to develop the x86-64 extensions that are now ubiquitous – even on Intel’s own processors (though they call them EMD64).

With the multi-core industry in full swing, Intel has a chance to make the Itanium relevant once again – package it along side x86-64 cores in a new CPU, a la IBM’s Cell processor.

With Microsoft now looking to branch Windows onto ARM with Windows 8, the x86 architecture is no longer the only [major] game in town.

If Intel were to co-package the Itanium and x86 cores on one chip, or at least in one package, they could start to reap the benefits of both worlds – keep the high-end, “mission critical” market they have that lives on HPUX (though “mission critical” and “HPUX” don’t jive in my head), and bring into that realm the x86 world.

Hey, it’s a thought.