Category Archives: About Me - Page 33

Talk About Growing Pains

It was a little while ago I installed Windows 8 with great visions of developing Windows 8 and Windows Phone 8 applications.  Because of an issue that I suspect was caused by Hybrid Sleep mode, I ended up rolling back to Windows 7.

That’s worked out well for me.  I continued to update my CarTracker Windows Phone 7 app for my use.  Meanwhile, I waited for the Windows Phone 7.8 update.  Since that doesn’t seem to be coming anymore, I went to T-Mobile and got myself a new Windows Phone 8.  It’s great.

So then I need to install my CarTracker app on my new phone.  I try to install the Windows Phone 8 SDK on my Windows 7 install.  Nope, you have to install it on Windows 8.  So I fire up my Windows 8 virtual machine and install Visual Studio 2012.  Then I try to install the Windows Phone 8 SDK.  Nope, you have to have a 64-bit install of Windows.  So then I scrap that VM and create a new VM, install Window 8 64-bit, install Visual Studio 2012, then the phone SDK.  That’s working now.

After getting VirtualBox talking to the phone (tip: enable USB 2.0), and getting the virtual machine to talk to TFS on my host PC (tip: bridged networking), I got the CarTracker source loaded.  Then I had to install 3rd party controls.  Finally, I could build and deploy the app.  But I couldn’t deploy to the phone, only to the emulator.  This was a simple mistake on my part. (tip: set the phone app as the startup project)

Before I converted the project to a Windows Phone 8 project, I wanted to branch the source code and get a working deployment on my old Windows Phone 7.  Windows Phone 7 requires the Zune software.  Zune software require .NET 3.5 (tip: install .NET 3.5 from Control Panel>Turn Windows Features On/Off).

It’s been many years since I’ve had to do so many steps to get something working.  This is like Linux-grade configuration and setup.  I’ve been so spoiled by well-working Windows software and such a degree of compatibility that this seems incredible.  And I think this behavior is encouraged.  Everything is all “disconnected” “loosely-connected” “loosely-coupled” whatever.  I don’t think, actually, I’ve very sure that if I wasn’t a programmer and that I hadn’t been here many years ago, when you had to take care of yourself, I would be lost.

Windows 8 is a huge gamble for Microsoft, much like XP was when there weren’t any drivers and DOS applications weren’t compatible anymore.  I guess in a couple years things will be good, but we’re in that painful time right now.  Windows Phone 7=Windows 7, Windows Phone 8=Windows 8.  Don’t try to mix them.

You Like It, You Buy It.

Over the weekend, I had the opportunity to overspend on a pair of shoes.  I thought of the saying, “who would ever pay retail prices” and realized there are some circumstances where it may be warranted or at least justified.

First, I was in an upscale mall.  Obviously, this is going to command high rent for the tenants.  Things haven’t been so great for the retail sector, so it was good to see the shop even still in business.

Second, the store was not a chain store, just a mom-and-pop.  If not being a reason to shop there, at least it’s a reason to give them a pass on higher prices since they can’t compete with the volume of a chain.

Third, and what I felt was the most compelling reason, was that the store had a selection of product that I had never seen anywhere else.  It was very boutique-ish, but still had a good selection of sizes and colors for each model.  There were a lot of high-end shoes – actually they were sandals – from brands you don’t see in all the chain stores.  It was as if the owners deliberately chose to not stock anything you could get somewhere else, which might have been a wise decision.

Because of that uniqueness, I chose to patronize the store in order to preserve its importance in the retail space.  Without business owners taking a chance like this and making obscure, high-quality brands and specialty models of better-known brands available, everything would be the same everywhere.  Total homogeny.  Plenty of people complain about the generic landscape of retail, but is anyone willing to put their money where their mouth is?

Key Board

When I’m at work, there’s some desk items that cause some distraction.  It could be the stuffed creatures on the shelf, it could be the NERF guns or the NERF Super Soaker missile (“The F Bomb”).  But for some people, the thing that catches their attention is my keyboard.  It’s a new keyboard, but it doesn’t look new.  It’s old-school.  It’s actually impossible to find a decent picture of it online.  Even the manufacturer’s website doesn’t have a flattering photo of it.  It’s a KeyTronic.  It’s been my favorite keyboard brand for at least 15 years.  It hasn’t changed its look in 15 years, nor has it changed its feeling.

Yesterday, I purchased the newest model of KeyTronic’s keyboards and this weekend, I’ll have the chance to find out if they are remaining true to their roots.  There’s a couple things I can’t live without on this keyboard.  When I say I can’t live without them, I mean, I bought one for home and one for work.  The productivity loss when I change keyboard layouts is significant.  The KeyTronic keyboard is offered with a large L Enter key instead of the straight bar Enter key.  This makes the backspace half-sized and moves the backslash key up to the top row.  The other thing I can’t live without is the tactile snap of the keys.  Less important, but noticeable, is the huge chasm of empty space between keys.  This is a very forgiving keyboard to type on.  When you type code all day and in the evenings either code some more or blog, a good keyboard is required.  Yet another design feature you don’t see everywhere is what someone called the “stadium seating” of the keys.  When the top row of keys is nearly 50% higher than the lowest row, I find my thumb resting more naturally under my fingers to hit the space bar.

I was looking online to see if there were any other KeyTronic fans.  Outside of product reviews, there’s a couple of threads on a mechanical keyboard forum praising the feel of the KeyTronic, although also admitting it is not a mechanical.  So, besides that, I didn’t find much.  And what I read sort of inspired me to type a bit and remember why I liked this keyboard so much. 

In this day where flat keyboards are the standard, and chiclet keyboards are fashionable, it seems like typing is taking a back seat, which is consistent with the slow decline towards content consumption instead of content creation.  You need a keyboard to type a URL or a status update or maybe an email (so long…); you don’t need a task-oriented keyboard.  Gamers buy keyboards made for their needs.  I would like to believe that this keyboard grew up as a product optimized for the needs of the time, which required much more typing than the current age.  But now it’s become a keyboard made for my needs – extended typing sessions.

So now I’m waiting and hoping that I will have a new keyboard that has all the same great feeling of this one but has a look of “what kind of keyboard is that?” instead of “is that even a USB keyboard?”

To Bed To Rise

When Windows 8 came out, I had planned on making a Windows Store app that would be an alarm clock with sound soother for falling asleep.  Hardly a new idea.  In fact, I was driven more by personal need than personal gain.  I have the Dell Inspiron Duo.  The original one, with the JBL audio dock.  It’s possibly the best-designed multifunction consumer device. The custom dock triggers an app that can be used as a slideshow (like on an office or counter, replacing a digital photo frame), or as an alarm clock (best kept bedside).  The point is, when you’re not using it as a laptop or tablet, you’re using it as something else.

Well, you may know that this product got justifiably poor reviews because of its weight/battery life ratio and isn’t in production or even in warranty anymore.  Regardless, I own one and I have two docks, one at home and one at work.  One day I decided to upgrade to Windows 8 and the clock app wouldn’t launch anymore.  This was heartbreaking for me.  And until a recent explosion of programming motivation, I just used the dock as a charging station.

But tonight is the first live run of my replacement app for the Inspiron Duo “DockClock” or “DuoStage” or whatever they called it.  I’m pleased that I was able to come up with a technique for detecting when the laptop was docked as well as discovering the method for putting the screen to sleep on command.  The rest, involving background sounds, alarm timing, and background animation was easy work.

The original:

image

My prototype, with corner controls displayed:

image

My main regret is that I waited so long to write this app, since there’s a lot of Duo owners out there that have probably lost their capability to use the alarm clock in their docks.  But once I’ve given it sufficient personal testing, I’ll put it out there for download.

Oh, and as a passing mention, it appears I’m in my fifth year of posting on this blog.  I sure didn’t expect that.  There’s a lot of history in here, with some really low points in my life. Despite that, I’d have to say that the present is truly a high point of my life.  Will there be another five years?  Who knows?

Code

This is a good video.  In a way, it’s very surprising to me.  I had no idea there was a shortage of software developers, much less a shortage of that magnitude.  The people in the video made some pretty good points, but I think in some ways it overplayed some parts and missed some other parts.  Of course everyone’s story is going to be different, so this is mine.

My first computer was a Timex Sinclair 1000.

image

This computer was a tiny device that plugged in to your TV and had a keyboard with multifunction keys.  The keys had upper case and lower case, and also could print out a graphic character.  But one of the biggest tricks it would do is spit out a whole BASIC command with a single keypress, when it was in context.

So one day, my dad brings home this Timex Sinclair and gives it to me.  He says it’s a computer.  I’ve always loved computers.  Back in 1st grade, in a workbook, there was a page with three futuristic views and you chose which one you felt was going to be the real future.  Unsurprisingly, I chose the one with the big computer banks and I wrote beneath it, “I like conputers (sic) and how they work.”

Since I was so awestruck by computers, I had this device hooked up in no time and immediately started using it.  The very first thing I did was type in my name, which was very difficult because each keypress would generate a BASIC command.  Laboriously, I typed in each character of my name, then backspaced over the command that was inserted.  Finally, I got my name entered and pressed Enter.

“Syntax Error”

I look up at my dad and say “What?  It doesn’t know my name?”

And my dad thrust the owners manual at me and said, “No, you have to read this.”

And so I did, starting with two-line programs that would fill the screen with graphic characters (10 PRINT “JHGJSFGJD”; 20 GOTO 10).  Then I remember the first time I struggled trying to figure out how I could fit two pages of code onto the tiny screen, thinking that if the program code scrolled off the top of the screen it would be lost.  Then I just started “doing it.”  Coding just became something I did.  And back then, if you wanted a computer to do something, you made the program yourself.

My take on being a coder, which isn’t one expressed in the video, is that it’s pretty close to being a god.  As a coder, you are creating things.  And not creating in the artist sense, because most all art is simply a static representation.  A coder creates something that does things.  Mechanical and electrical engineers should have the same feeling.  When you’re done with your work, you can release your creation and it lives on its own.  That’s pretty powerful.

The other thing about coding, and the one that always makes me tell everyone “I love being a programmer”, is that it makes your life so much easier.  If there is anything you do that is difficult, repetitive, or monotonous, you can write a program to do it for you.  Like a boss.  You can’t fully grasp how great of a feeling this is unless you’ve actually done it.  When you spend a hour a day doing a task, and you invest a couple of hours into writing a program, then you gain an hour back every day because that task is now automated, that’s the miracle of software.  And that’s the reason businesses need programmers.

The video doesn’t mention this, but software development has been one of the most resilient professions in recent times.  If you’re good, you should not have any issue finding a job.  Although the video overplays the supposed awesomeness of working at Facebook, Twitter, or Google, there are many great companies that love their IT departments and usually give them a break when it comes it corporate rigidity.  Although some people are after the money (i.e. recent post), you can still get a great income from doing something you love.  And when you love it as much as I do, it’s hardly considered work.

So, get yourself involved with coding, or get someone else coding.  Don’t see it as a chore, or a task, or as work.  View it as creating, as art, as play.  Create something tiny and say, “what if?”, then “what now?”

Customer Service, Done Right and Done Incredibly Wrong

I’m writing this on a day that hasn’t really been in my favor, so it’s probably going to be a bit more harsh than usual.  But anyway, to have a post in the rant category with a tag of kudos would be rather odd.

Sometimes it takes a spectacular display of behavior to elevate something very good to the excellent level, and at the same time, showing the bad as very bad.  A couple of weeks ago at Fuddruckers, the GF and I ordered our food and sat down to wait for it.  When the server arrived with the food, she asked, “Did you get your shake, yet?”, which we hadn’t.  The server said, “Hold on just a minute,” and immediately went over and made the shake herself and brought it right over.  While she was doing that, I commented “I’m impressed she has taken personal responsibility for the problem and is fixing it.”  When she brought the shake, the GF gave expressed the same and thanked her for her level of service.

Fast-forward to a meal this weekend at Cracker Barrel.  I order my usual plain cheeseburger, which arrives not plain.  This isn’t the first time this has happened.  Cracker Barrel cooks don’t seem to understand what plain means.  As is typical at restaurants, a “runner” brought the food and when it was commented my burger wasn’t plain, she was confused. She offered a fresh bun and I accepted.  Just as she was walking away, our waitress came over and asked if everything was ok.  She saw the burger and commented defensively, “I put it in as plain” to which I sarcastically replied that it’s nothing new.  The GF asks the waitress if we can get a new bun, and incredibly, the first word out of the waitress’ mouth was “no.” 

“No?” 

When, ever, do you flat-out say “no” to a customer?  She immediately started back-tracking when she saw the looks on our faces and I think (or I hope, for her sake) she had intended to say that instead of just bringing a bun, she would take the plate back and fix it in the kitchen.  But, as it turned out, we commented that the runner was going to bring a new bun, and the waitress dismissed herself.

Time passed, and no bun appeared.  I assumed that would happen – that the runner and waitress would each think the other was taking care of it.  As I finished my fries, the waitress came back around and saw I still didn’t have a plain bun.  Again, she didn’t really apologize, she just refused to accept blame for someone else not doing something correct.  At that point she went back and got a new bun in under 20 seconds.

The rest of the meal was uneventful, but we were still shaking our heads at the level of customer service provided.  As I’m paying for the meal at the checkout counter, my cashier is talking to another cashier, discussing that they are both done for the day.  She asks me how my food was.  I responded in a tone that should have roused suspicion, “It was… good.”  There was a short pause while she processed the payment and she asks, “and how was the service today?” and before I could answer, she turned away and picked up on her conversation with the other cashier.  My eyes grew wide.  When she turned back, she didn’t seem to realize that the question had gone unanswered and finished the transaction.  As we walked out, I had plenty of expletives in my vocabulary.

Notice how little description it took for the positive experience and how much more was devoted to the shitty experience.  I’m not sure anyone thinks that good customer service is recognized, but everyone knows that bad service is immortalized.  It is pretty clear that the Fuddruckers we were at empowers their workers to do what it takes to make the customer happy.  It’s also clear that this particular Cracker Barrel does not.  It’s entirely possible that the individual employees contributed to the success or failure, but in the case of Cracker Barrel, it was four employees’ failures – the waitress, the runner, the cook, and the cashier.  That speaks volumes about that location, which we will never return to again.

So, in conclusion, kudos to Fuddruckers for giving their workers the power to fix problems themselves, and no comment to Cracker Barrel for not taking responsibility for mistakes and being too wrapped up in their own selves to find out that they screwed up.

Window Pains

It doesn’t seem that long ago that I was posting about how my computer had frozen during startup and I ended up buying, effectively, a whole new computer.  After returning from a week-long vacation, I found my new computer frozen again at the exact same place.

This time I spent a bit longer trying to get the computer to work, because I had just gotten everything installed and set up the way I wanted it.  I booted to Ubuntu and checked the hard drive – no problems at all.  I did the “automatic repair” multiple times until it told me it couldn’t fix the problem. 

Finally I booted up the Windows 8 media and looked at the repair options.  None were satisfactory.  The closest thing I could find was an option like “Refresh this PC”, which would replace all the Windows files (which I wanted), but would wipe out all installed programs (which I did not want).

With a heavy heart, I made the decision to reformat and reinstall… Windows 7.  In the span of a couple months, I’ve had two Windows 8 installations on two different computers that have been unrecoverable.  The worst part for me is the lack of recovery features, namely, Safe Mode.  If I could only get to a goddamn desktop and look at the event logs to see what happened leading up to the failure, I could troubleshoot it.  Whoever eliminated these diagnostic options out of fear that they would confuse or intimidate novice users is an idiot.

In the previous failure, I had put the blame on hard drive errors, but it was a convenient excuse.  I didn’t really believe it.  I now suspect in both of these cases, it was the Automatic Update process.  I have always had my Windows Update settings where it would download the updates, but I would install and restart the updates when I chose to.  With Windows 8, I decided to let the system do what it felt was best, meaning restart whenever needed.

So I guess I’m going to have to run Windows 8 in a virtual machine, if I even find I have a need for it.

Adjusting the Brightness

I love how things work out sometimes.  Friday morning when I woke up I was so, so tired.  The sun is coming up later and I’m a pretty SAD person (meaning I get Seasonal Affective Disorder).  So I thought this year I will finally buy a sunrise light.  I know they’re around $100, so I started the buying process by mentally preparing myself to spend $100 on a light.

I went out for dinner Saturday and stopped by somewhere I’d seen but never looked in – an HSN outlet.  I love outlets, junk stores, pawn shops, etc.  So I get in there and right up front is a light therapy device with sunrise feature.  Priced at $70.  Awesome.

The store is pretty much how I thought it would be.  Lots of crap I’d buy before I entered my mature "I don’t need shit" mentality.  So, on the way out, I grab the device and head to checkout.

I didn’t pay attention to how the outlet priced their crap, but apparently, the longer a product sits there the cheaper it gets.  This product must have been pretty old because it rang up at $17.  Holy crap!  I was mentally prepared to spend $100, happy to spend $70, and ended up paying $17.

Last night I hooked it up, but misunderstood and misprogrammed the sunrise alarm feature.  I wanted to be up at 6:00, so I set the alarm for 5:30 with a 30 minute ramp-up time.  That’s not how it works; it started glowing at 5:00 to finish at 5:30. 

So, at 5:30 this morning, my room literally looked like the middle of the day.  Damn that thing is bright!  And I woke up.  I woke up, immediately turned it off and went back to sleep.

It was interesting that the device really did wake me up.  And the waking was pretty easy, not jarring like an alarm.  This week will be the real test.

Yeah, and also on Saturday morning I got to stand my theological ground against a couple of Jehovah’s Witnesses.  The most interesting exchange was when they tried to convince me God was a person. 

“So you’re saying, like a person, he has likes and dislikes?” I asked.

“Yes, of course.”

“So he’s biased?”

“I wouldn’t use the word ‘biased’ with God…”

I pretty much summed up my beliefs for them in that I do give thanks for what I have been afforded, although I don’t feel compelled to give thanks to a specific being with a name.  And lo and behold, that night I find something I put into my subconscious the previous day at a price I never imagined.  So I’m giving thanks for my fortune here and now.

Back in the Game

I’ll just toss out a story I have on seating and lumbar support.  Before owning the MX5, I spent 10 years in an Acura TL.  Its lumbar support was pretty pitiful – just a lever that would push a bar forward in the seat.  But still, I used it from day one because I heard that lumbar support was good. 

A few months after owning the car, my back went out while I was standing up in the office.  I had never had back problems before and at that time, I wasn’t really overweight.  That injury put me out of commission for a week and changed my life forever.  Those of you that have had back failures know you are never the same afterwards.  But at the time I never considered why it happened.  It was a mystery.

Almost 10 years later, I had another significant back failure (and blogged it).  Another week of lying in bed, afraid to move at all.  I attribute this failure to poor riding posture on my then-new motorcycle.  The hump for the passenger seat was pushing very hard into my lower back.  Still though, I never wondered why my back failed to begin with.

At this time in my life, I’m doing a 150-mile commute a day and working 9 hours at a desk – nothing but sitting.  This is literally destroying my back.  The pain was constant, I was popping Advil for days straight, and I was hating life.  After a business trip for a few days, I was feeling better but when I got in the car, within 10 minutes my back was killing me.  I was cursing Acura for having such crappy lumbar support, not like some cars like the old Ford Taurus with the inflatable bladder.

I fiddled around with the seat positions for a while and found two things that turned me around completely.  One, sitting with my legs together.  I used to drive more (ahem) spread-eagle and the bolsters on the seat were pushing on my hamstrings and the sciatic nerve.  Two, turn off the lumbar support.  This shocked me.  After ten years of leaving that bar pushed against my back, I found I never needed it.  In fact, I’m inclined to think that it caused my first, life-changing back failure.  It makes sense that the same pushing of the motorcycle seat and the Acura lumbar support have the same result.

When I was planning the purchase of my MX5, I read as much as I could on the seats and it’s kind of a love-it-or-hate-it thing.  I found a store that sells inflatable lumbar support and budgeted to buy one (at around $100).  After a few weeks in the new seat, with proper seating posture, I don’t think I’m going to need it at all.  I have a slight concern about the side bolsters pushing against my hips, but if I flex my glutes, I can push myself up and the pressure is relieved.  This is kind of motivating for me to (re)develop those muscles that have atrophied from years of deskwork.

So, if you have back pain and are constantly searching for better or stronger lumbar support, maybe you don’t need it.  Maybe the lumbar support is what is causing the back pain, as it was for me.

Resize, Reassess, Restructure, Relief

Downsizing. No, upsizing.  No.  I’m not really sure.  How about resizing?  Yes, I have resized my vehicle.  After 10 years of driving the same model car – an Acura TL – I have changed to a new vehicle.  It is a new 2010 Mazda MX-5.  I’ve been driving it for a week and I’ve had substantial time to reflect on the change on a micro- and macro-level.  Going from a midsize, near-luxury sedan to a roadster is a pretty radical change.  Most people add a roadster as a weekend car; I made it my only car.  I had some logical reasoning going into the purchase, and post-purchase, I’ve affirmed these beliefs and realized others.

DSC_1590

To begin, I simply wasn’t happy with my Acura.  It had been purchased used and had the same transmission problem as my previous one.  The “buying it used” part had a big effect on me.  I never felt the car was really mine.  I never had any emotional attachment to it – not like the first Acura, which I had bought new.  So buying new was the only option for me.  I felt that I wanted to be back in love with my car.

Looking at the vast choice of cars available, I was very uninspired with all the sedans.  Even the sport coupes didn’t appeal to me.  The thing that annoyed me the most was bulk and waste.  I’ve hated SUV’s and trucks for a very long time.  I’ve recently been on a simplification plan – downsizing and minimizing my footprint.  Becoming a motorcycle rider helped with that.  It’s simple, no-frills, no-baggage transportation.  Looking at sedans, there’s two extra doors and an entire back seat area that will rarely, if ever, get used except to collect and haul crap.  The two seat roadster was the answer.  Of the available roadsters, of which there are very few, I didn’t want to deal with the cost of maintaining a BMW or Audi.  Like I’ve said to others, “I could get a Z or a TT, but I like my money, too.”  So the MX-5 was the answer.

So I satisfied my need for minimalism and initial-ownership.  The roadster choice also fulfilled my need to enjoy driving again.  With my massive commute in a bulky, heavy sedan, I had begun to despise driving.  It was a chore.  And I had to drive sensibly to save gas because my commute was so far.  Riding the motorcycle was a totally different experience.  The small engine meant I could go faster and ride harder without worrying about wasting gas.  The light weight and general “bike-ness” meant I could handle it harder.  The open air experience was unmatched.  In the last few weeks of owning the TL, I drove everywhere with all the windows down and sunroof open.  It was ok, but a convertible is a totally different experience, for the better.

So when I bought the MX-5, I was a little freaked out.  The windshield view is tiny and I wasn’t completely prepared for it.  It took a few days to feel comfortable with the car and then I could relax and understand my feelings in this new car.  One thing that came into my head was an article I had read about people buying large houses.  The article said that people don’t really feel comfortable in large open spaces.  I applied that to my new-found comfort in my purpose-built driving cockpit.  Everything is close at hand.  It made sense.  Then I thought of when I had my first Acura and I bought a cheap beater car: a Toyota Celica.  The Celica was crappy in many ways, but I honestly think I liked it more than the Acura.  Maybe because it was smaller and had a more sports-car atmosphere?  Possible.

I think the TL was supposed to be my “all-grown-up” car.  I had “made it” professionally, I was living on my own, and this was the next step.  Grow up, be an adult, get a responsible car.  I never considered that I didn’t have to follow the recommended path.  So with the MX-5, I feel more like my old self.  And that can’t be a bad thing.

And now that I’m here, the term “mid-life crisis” means something different.  When you’re younger, it’s a joke.  To see some middle-aged person acting like a teenager again seems dumb.  They’re supposed to act their age.  But when you get to “mid-life” yourself, you find yourself evaluating your life so far.  You may discover you haven’t taken the time to have fun, maybe you’ve gotten wrapped up in work and chasing status and collecting “stuff”.  You look around, see all the stuff you have, and while it’s nice to have, it’s also a pain to have. 

“I’d love to have a dozen cars!”  Really, no, you wouldn’t.  You have to store, insure, license, maintain, and wash all those cars.  “I wish I had a house with a few extra rooms.”  No, you have to heat, cool, clean, furnish, and pay taxes on that extra square footage.  People ask me how I’m going to get anything home in my tiny new car.  First, if I’m buying more stuff than can fit in the car, I’m buying too much stuff.  Second, if it’s too big to fit in the car, I should have it delivered.  Third, if it can’t be delivered, I call Enterprise and rent a bigger car for a day.  The likelihood that I would end up at the final choice is very slim.  Buying a bigger car enables bad choices like buying too much stuff.  I can’t take a bunch of crap with me because there’s no room in the car.  If I have trash, it comes out right away, there’s nowhere to put it in the car.

Less is truly more.