Latest Entries »

Jenna Wortham of the New York Times seems to think that new technology should be cheap enough for poor people to afford it. My first question is: Why?

Headlines are not normally created by the journalist, but are apportioned by editors who sometimes miss the point. Jenna’s article, which in the NYT has the headline “More Tech Magic, if You Can Afford It“, in my local newspaper is headlined “Tech magic comes at a price out of reach for many”. But in this case, the editors in question did get the point Ms. Wortham intended.

While writing about Google Glass, she reports handing her demo device back to the Google employee “…with the sinking feeling that it could be a while before I’d be that close to them again.”

And why would she have such a feeling? She writes:

That’s because they cost $1,500, and they are being made available largely to developers and people who are eager to figure out how to build applications for them.

Her entire article rants on and on about how wonderful the new technology is and how terrible it is that poor people won’t be able to afford it. Until the price does down. And even when the price does go down, how terrible it will be that the poor won’t be able to afford the newest versions, since the price for the latest and greatest will be higher than state-of-the-art.

But what the heck is she complaining about? It’s not fair! That’s what. “…it would be a shame if the only people who participate in this leap forward are those who can afford it.” Bat puckey. Cannot “the poor” wait five minutes until they CAN afford it? Apparently this is a tragedy. She agrees with Anil Dash, an entrepreneur and blogger who raised similar concerns last year in a post titled “You Can’t Start the Revolution From the Country Club.” She nods sagely in agreement with Dash’s pathetic premise, and except for the obvious fact that this premise is completely false, we might be tempted to go along with it, too. You can take it to the bank that technological revolutions almost always start from the so-called “country club”. The fact is simply this: if the “country club” doesn’t adopt the new technology at its inception, then nobody else is getting it either. It turns light outside when the sun comes up. No sooner. Deal with it. Just because you don’t like something doesn’t give you an entitlement to have it otherwise.

And fairness? What is it about certain people that they think that being poor gives one rights superior to the better off, who have to work for what they get, too? Oh, sure, you work at a dead-end job, a job that you qualified yourself for by spending your time goofing off instead of getting an education that would make it possible for you have a better job. Therefore you are entitled to the same choices in life as someone who put business before pleasure and prepared for the future?

Please spare me. I can sympathize with someone affected by breaks that resulted from circumstances truly beyond their control, but most people are poor because of choices they themselves made, or are in situations that they could, with some effort, work themselves out of. Ms. Wortham’s own experience shows clearly that being poor is, with some effort, only a temporary condition. She says she couldn’t afford that iPhone because she was working in a poorly-paying job. But now she can afford one. Does she think she’s the exception?

I’ve been poor, and I’ve been moderately well-off. I knew precisely why it was that way at every point. There was no-one to blame but myself, and I would have felt ashamed of myself for blaming anyone else but myself, and I would have felt like a fool for asking for extraordinary consideration for my condition. “Hey, Steve Jobs, I can’t afford that nice new iPhone because I’ve gotten myself into overwhelming debt due to wanting crap I couldn’t afford, so you must sell me one for one-third it’s retail value (or better yet gimme one for free). That would be fairer, wouldn’t it?”

Maybe my desire for an iPhone (or a Windows Phone) should lead me to better my condition so I CAN afford one.

Originally submitted at O’Reilly

This cookbook provides more than 100 recipes to help you crunch data and manipulate text with regular expressions. With recipes for popular programming languages such as C#, Java, JavaScript, Perl, PHP, Python, Ruby, and VB.NET, Regular Expressions Cookbook will help you learn powerful …

A Very Handy Addition to my Bookshelf!

By Cyberherbalist from Olympia, WA on 7/17/2012

 

4out of 5

Pros: Helpful examples, Easy to understand, Well Organized, Well-written

Cons: Index could be expanded

Best Uses: Student, Expert, Novice, Intermediate

Describe Yourself: Developer

I got this book hoping to find “recipes” for the various Regex problems I run into in my work, and it has more than fulfilled my expectations. Finding a thankfully clear tutorial on Regexes was an unexpected plus.

A previous reviewer, Steve of Houston, TX, complained about the recipe numbering scheme, like where the text might say “see Recipes 3.15 and 3.16″. He said he couldn’t figure out what these numbers meant or where there was a list of them. What?! Did he actually have a copy of the book in hand? The Table of Contents lists each recipe and gives its title. The format is X.Y, where X is the chapter and Y is the individual recipe. If one is referred to Recipe 2.6, it is child’s play to turn to chapter 2 and find the sixth recipe. They are clearly marked. This is entirely intuitive, and I cannot understand how he could have missed it.

(legalese)

The occasion for this post is a little contretemps I experienced on StackOverflow.com recently. The topic of this blog post is the question posed by acidZombie24, a member of StackOverflow, over 3 years ago. I was one of those who responded to the question. My answer was:

Databases don’t have keys, per se, but their constituent tables might. I assume you mean that, but just in case…

Anyway, tables with a large number of rows should absolutely have primary keys; tables with only a few rows don’t need them, necessarily, though they don’t hurt. It depends upon the usage and the size of the table. Purists will put primary keys in every table. This is not wrong; and neither is omitting PKs in small tables.

Note that the statement “Database don’t have keys…” refers to the original text of the question title, which was subsequently changed by an edit.

This answer did not make much of an impression on anyone (the questioner never marked any of the answers as Accepted and nobody gave me any upvotes), until just the other day. And this was a downvote (which subtracts reputation points). If warranted, I don’t mind a downvote, if it is a legitimate beef with my answer, but given the downvoter’s comment I thought it unwarranted. He commented on his downvote, and a little conversation ensued:

jmoreno: A single row table doesn’t need a primary key, anything else should have one defined to avoid duplicates. – Jun 21 at 0:57

Cyberherbalist: Yes, generally, but business rules determine whether duplicates are to be permitted — it is not inconceivable that duplicate entries in a table might not only be permissible, but expected. It depends upon what is being stored, and what use is made of it. BTW thanks for the rep hit — this answer doesn’t actually contradict the accepted answer. Your absolutism is noted. – Jun 21 at 17:15

jmoreno: If you’re storing exact duplicates, you’re storing the wrong thing. As for the rep hit, remove the slam at people that think that every table should have a PK, and I’ll remove it. – Jun 21 at 18:28

I was a little puzzled about the reference to my supposed “slam” at people who think that every table should have a PK. I looked over my answer and comments to others’ answers for any insults and did not see any. Unless by “slam” he meant the term “purist”? Perhaps he thought this was intended as an insult? It wasn’t so intended — heck, I am a purist about certain things, and I think I’m justified in those cases, and accept that differences of opinion are natural consequences of free speech. In fact, I am a purist when it comes to people trying to bully me around, and thus I will not remove the “slam.” I will simply wear the loss of 2 reputation points as a badge of obstinacy! No problemo.

It just so happens that at the moment I am working on a little utility at work which accesses a table that has no Primary Key. And that was not due to oversight by our typically conscientious and highly competent Data Administration staff. In this case, the table stores rows which, once inserted, are never updated or deleted. Our DA staff are really in love with “natural keys” (sometimes to a fault) as Primary Keys, and if they had thought a PK was necessary, then By Golly that’s we would have gotten, LOL. But this is the table:


CREATE TABLE [dbo].[agency_message](
[agency] [char](3) NOT NULL,
[subagency] [char](1) NOT NULL,
[effective_date] [smalldatetime] NOT NULL,
[message_text] [varchar](1000) NOT NULL,
[requested_by_user_name] [varchar](50) NOT NULL
)

The table is used as follows: when a user signs into the application, the system compares the system date/time with the “effective_date” in the table, and uses the row with the largest effective_date whose effective_date is not greater than the current system date/time, if one exists (the additional criterium is a match on agency/subagency).

The reason there is no primary key is because no row is ever updated or deleted once inserted, and we retain all rows for the sake of having a history of agency messages.

Given that our DA staff are, with all due respect and good will, purists of the best stripe, I consider that this table’s lacking of a primary key to be arguable evidence that tables do not always require primary keys. Business rules, as I said above, must prevail, and in this case, the Business Rules dictated the table structure.

Old High School friends of mine just posted some Facebook comments on “ancient” technology they still possessed, and it caused me to think back about my old devices.  Brian mentioned that he still had his father’s old slide rule (and could still use it), which was quite cool!  Some of the people reading this post may not know what a slide rule is, though.  Check it out on Wikipedia: Slide Rule.  For the record: I haven’t forgotten how to use a slide rule, either.

My very first scientific calculator was the Berkey 4030, which I purchased back in 1975 for $110, which is about $470 in 2012 dollars:

BERKEY 4030 Scientific Calculator, circa 1975

The Fix is Found

Earlier I said that there was this bad crashing problem with HamTechExam and that I better find it and fix it.  Well.

I cannot claim any heroism here.  It has taken me too long to get around to it, and the best thing I can say about the whole process is I don’t know how on earth this version of the app made it past the App Hub testers.  It couldn’t possibly have worked in the state it was in.  Maybe they were applying goose grease that day, and it just slipped in.

So, for what it’s worth (and for those who bought the app and couldn’t use it, that would be “not much”), the problem is fixed.  It is in certification and perhaps in a day or so it will be published.

All I can say is: my apologies.

It’s just come to my attention that one of my apps (HamTechExam) is blowing chunks upon startup, failing to function.  When I first heard this I thought that it couldn’t be possible, since the other two similar apps (all running on the same basic code) were having no such problems.  But when I checked my own copy of the app it did not work, confirming it.  Really hard to understand how this was possible, since it was supposedly tested by Windows Phone personnel.  I know it was working then.  Perhaps it was the last update to WP7? 

Anyway, I now have 3 bad reviews in the Marketplace, which is unfortunate.  I am going to figure out what the problem is tonight and hopefully get this squared away.

Jumping into Ads

Apologies for the long hiatus.  I’ve been busy is a bad excuse, but it’s true.  Well, it’s not so much busy as lazy.

Anyway, I got quite discouraged after all this time with 8 apps in the marketplace, some since WP7 launch, but only an extremely lackluster download performance in the Marketplace.  I was beginning to think nobody appreciated me.  Or, more to the point, it seemed clear that nobody liked my offerings.  I’ll confess it: my best performer, the Fraction Calculator, has accrued a mere 185 downloads in the past 9 months or so.  Obviously, at this rate, I’m not heading for a state of independent wealth, that’s for certain.

So I kind of temporarily tossed in the towell while I tried to think of something I could do that would actually be popular.  I’ve been trying to pick up the skillset of an XNA game programmer, but this has been proving to be a rather tough climb in learning-curve land.

But over the past week it seemed like I really needed to try out converting one of my apps from paid to ad-supported.  I picked my most anemic app, Just Sayin’, to work on first. This app has gotten only  12 total download over the past seven or eight months, all paid, so I guess this means that I’ve earned about $7 from the effort — which was small, since it was a quick throwaway.  I didn’t really expect much from it.

As my subject for putting an ad into it, I decided to reissue it, renamed “Free Sayin’”, and with some enhancements.  And so I did it.

The result has been somewhat dramatic.  To my surprise, and it has been less than 5 days since I published it, and I don’t yet have any download numbers, the ad unit has already gotten 3,600 impressions, and there are about 7 reviews on the thing — to this point none of my apps garnered any reviews, except for Fraction Calculator which got exactly one.  I guess the app, by its nature, engages the user somewhat, and to go through the entire stock of clever sayings and quotes that it displays might take an hour or so if someone is diligent at sitting there, and this might explain the impression count.

Since then I have reissued Fraction Calculator and Decimal2Fraction calculator as free, ad-supported apps, but they are new enough that I have virtually no data on them.  I don’t expect much from them, but… one never knows.

I guess the future of ad-supported apps is perhaps brighter than for paid apps.

On Saturday, 4 June 2011, they held the Nth Portland Code Camp.  I don’t know what N is equal to, but it was the 5th one I’ve attended.  It was quite good, all things considered, although I think I prefer the venue they’ve had on 4 of 5 camps I’ve attended, Reed College.  This one was held in downtown Portland, at Eliot Center.  Eliot Center is part of a Unitarian church facility, which is takes up the entire city block.

The Keynote

The classes were all held in the Center, although the lunch was distributed from a large assembly room in the lowest floor of the church proper, and the keynote was delivered in the chapel.  And what a delightful old structure the chapel is!  Here’s a photo of the keynote being delivered, taken using my Dell Venue Pro Windows Phone:

2011 Portland Code Camp Keynote with ScottHanselman

2011 Portland Code Camp Keynote with ScottHanselman

Scott Hanselman did a bangup job delivering the Keynote, and in true Hanselman style combined wit and information for a very entertaining session and well worth the trip to Portland from my home town of Olympia, Washington (110 miles one-way).

In true Mike Clark style, I don’t remember much from the keynote except for the way the projector kept overheating and turning itself off, necessitating someone resetting it.  About eight times, I would guess.  And one story Scott told about one of his Africa trips.  He may have blogged about in the past, but I don’t remember it from his blog.  Here’s a paraphrased version:

While on a trip with his family to Africa a few years ago (his wife is from there), they were driving between Nairobi and some podunk town I don’t remember the name of, and there was seemingly nothing between them except trackless wilderness.  They started having trouble with the Landrover vehicle, namely one of the brakes locked up and they were having to drive it with the brake on one wheel smoking away.  Scott said someone in the car suggested they stop and pour water on the brake to cool it — which he thought if they did it would shatter the brake and possibly make things worse.  He started to think that they were in serious trouble, possibly mortal trouble!  As he was having this thought he saw ahead of them a Masai warrior standing by the track, in full Masai traditional dress.  He thought that maybe they could stop and ask the fellow where there might be some help for their vehicle.  As they neared him, Scott said the Masai gentleman wasn’t paying any attention to them, his focus was entirely on the cell phone in his hands, busy texting!  Here out in the middle freaking nowhere there was this Masai warrior wearing centuries old traditional dress, texting manically away on a 21st century electronic device!  Scott said he pulled out his cellphone and to his surprise found that there were a full five bars!  More than could commonly be counted on in Portland.  So, he relaxed knowing that he would be able to summon help if the vehicle did break down.

Of course, from the coverage map shown here on the Kenya-Advisor website, coverage is good only along a particular corridor running from Lake Victoria to the coast.  Not that this is worth complaining about!

There were quite a number of sessions at Code Camp, but inasmuch as my interest these days is pretty much all Windows Phone all the time, that was all I was interested in — and there were sessions all day on this vital subject.  In fact during one period there were two sessions, and I sent my wife in to take notes on one while I attended the other.

Kelly White and Alchemy

I wish I could report some details on the sessions, but I was there to acquire information by osmosis, and anyway, for a Code Camp I didn’t see all that much code going across the projector screens.  The most important part of these sessions were two given by Kelly White of Silvertail Software.  Kelly described how he was working with the Marketplace in marketing his WP7 game, Alchemy.  One emphatic thing he said was Do Not Publish Automatically.  His primary reason for this was that if there was something wrong that the tester doesn’t catch, then you have at least a respite to catch it before it goes out into the Marketplace.  He got bitten by this at one point, he indicated.

In fact, I got bitten on this once myself.  It remains to be seen, however, if this would actually be much of a safety feature.  My app got published automatically, having a fatal flaw in it, but I didn’t catch the flaw until a couple of days after it was published.  Waiting to manually publish wouldn’t have helped.  But he’s right in one sense: waiting gives you a chance to verify the operation of your app before it goes out to users.

I Finally Meet Mark Miller

In another session I attended, a “famous developer” named Mark Miller gave a presentation on design.  It was generally quite good and interesting, although I took exception to his characterization of the Metro interface as “terrible design.”  This surprised me, as he seemed to expect that there had to be some kind of color scheme coordination with the tiles and Hubs.  My question is, has he actually worked with the Metro interface?  I have worked with my wife’s iTouch and found its user interface to be adequate but quite clunky and very very prosaic (boring).  This being one of the interfaces that Mark was praising, I have to wonder whether he was being a purist for purism’s sake?  Oh, well, no accounting for taste.

Mark Miller works for DevExpress, and I remember him chiefly from his participation in the podcasts published by Carl Franklin, DotNetRocks and Mondays!  Mondays of course is a total comedy hour, and though it is a scream, is definitely an acquired taste — I have enjoyed it from time to time, but it gets a bit raunchy (a bit?!).  I haven’t listened to it for quite some time (Mark says they haven’t been recording it that regularly of late, everyone being rather busy), but DotNetRocks is purely technical and well worth any .NET developer’s attention.

Mark is very good at explaining things and clearly has a great depth of knowledge.  Both my wife and I got a lot out of his presentation, my quibble about his opinion of Metro notwithstanding.  I had a chance to speak with him personally at the DevExpress table later and found him to be very personable.

Winning!

But the most exciting event of the event, so to speak, was for me the prizes that they had drawings for at the dinner in the evening!  Mainly because I won something!  Not the XBox/Kinect package they had available (of course), but one of the prizes donated by DevExpress.  I won their toolkit named DXExpress Enterprise, which is a $1300 retail value!  The monetary value of the prize isn’t so exciting to me, but the capabilities of the package are worth shouting about!  Check this product out: DXExpress Enterprise Edition.  Tools for WinForms, AJAX, WPF and Silverlight!  Wow!  Nothing for Windows Phone, unfortunately, but hey, I don’t want to look this gift horse in the mouth!  And the package includes CodeRush!  I have always wanted to work with CR, and now I get my chance!  Thanks DevExpress and the Portland CodeCamp!

On the heels of getting my Technician license practice exam into the Marketplace, I am pleased to say that my Amateur Extra license practice exam has been submitted for certification as of tonight!  This comes quickly due to the fact that it is based on the Technician license app, with appropriate verbiage and trade dress changes.  And of course a different question pool!

I expect that it will be approved and available in the Marketplace in just a few days, if the certification process runs true to my previous experiences.

And that’s assuming as well that the tester doesn’t find any Gotchas!

I will now begin working on the last exam app, for the General license class.  This one ought to go quickly as well, although there are a couple of wrinkles.  First wrinkle is some oddities in the question pool that I have to allow for.  Second wrinkle is that the current question pool expires on June 30, 2011!  There is little point of publishing the app if it can only be used for a couple of weeks, so I will publish it with the new question pool, which won’t be effective until July 1, 2011.  It’s OK, there won’t hardly be anyone who will want it in the short period between now and July 1.

My Ham Radio Technician license class practice exam app — that horrendous bug fixed — is now available in the marketplace.

Actually, it was back in the Marketplace a few days ago, but I’m just now getting around to mentioning it.  If you want to check it out, search in the Marketplace with my name “Mike Clark”, or with my Ham Radio callsign, WA7MC.

Screenshot:

Follow

Get every new post delivered to your Inbox.