Category Archives: About Me - Page 32

An Honest Try

I’ve played around with Linux in a few different forms on and off in my computing years.  Recently, I’ve been pretty impressed with the Ubuntu and Mint offerings, since they are really starting to look like polished pieces of software, with friendly installers and GUI management tools.  So, I happened across an older laptop and decided I would make it an Internet machine.

My biggest problem with Linux is that I am a Windows developer.  That means I spend a lot of my time in Visual Studio and SQL Server, neither of which are suitable for Linux.  I could probably get by with Wine emulation for most other applications, but developing is what I do, so I need Windows.  But I figured I could have a laptop that is just for Internet, and with Linux, it would be a speedy little device.

I keep an Ubuntu USB stick handy for disk diagnostics, so I booted that up on the laptop with no problems.  The laptop’s hard drive was dead and I was waiting for a new one.  I figured I’d try something fun and try installing Ubuntu to a 16GB naildrive stuck in the laptop.  Just so you know, it’s impossibly slow when running off a USB drive acting as a hard drive.  No SSD speed here.

Last night, I got my new hard drive, installed it, and downloaded the newest Mint version onto a USB drive.  I went to install and the system froze.  Tried again under compatibility mode and Mint essentially said the machine was not compatible.  So I tried with the newest Ubuntu.  Same thing.  I should have figured as much since Mint is built from Ubuntu.  So I went and installed the older version of Ubuntu I had on my diagnostic USB drive.

Mind you, I went into this install with a pretty positive attitude.  Maybe I was a little unrealistic in how lightweight and fast Linux is supposed to be, but lots of things started adding up.  Downloading the ISO images was so slow.  I thought Linux was huge in universities and they had lots of bandwidth.  I guess that’s not as true anymore?  I was surprised that newer versions were less compatible with older hardware.  I thought things always got better with time.  Then, the install itself took a surprisingly long time to finish – over an hour.  Again, maybe I’m being unrealistic, but I think that my expectations have been molded by the enthusiastic Linux community.

Finally, after install, I have a desktop and everything’s working pretty well.  I map a network drive and try out a few application.  Then the Update Manager pops up.  Yeah, I’m using an older version, so I have to update.  Woah, 471 updates!  That’s almost four times as many as Windows XP’s post-install updates (~120).  Alright, go ahead and update me.  Another hour passes and now I have to reboot.  Linux needs a reboot?  I restart and when I get back to my desktop, I’m prompted for my wireless network passphrase.  That’s odd, I thought Ubuntu would save that.  I re-enter the password again and Ubuntu prompts me again.  Oh.  The 471 updates broke my wireless network driver.  Where do I go from here?  Which update did it?  Not knowing the details of Linux, how would I even begin to troubleshoot this?  Can you even roll back updates in Linux?

So here’s where I picture myself at: I can reinstall fresh then either skip all updates or try to find (guess) which updates botched the wireless and exclude them.  Looking through 471 updates is not high on my list.  The other option is to install Windows XP, which I know will work.

Payback is a Bitch

Yesterday during work break, I went on a walk.  It was a strange, rather painful walk, as my feet were killing me most of the time.  I resolved that I would wear different shoes if I was going to go walking again.  After getting back and settling down, I found that I couldn’t sit.  My back would twinge in that way that says “get ready, here it comes…”  So, I did what was reasonable.  I put some ice on my back and left work to get home and lie down.

At home, I applied the TENS belt and was disappointed after an hour that it wasn’t doing any good.  So I did some leg stretches and then knocked myself out with my in-case-of-emergency-take-these medpack and slept the night away.  I woke up in the morning very, very slowly.  During this extended period of reflection, I found that the stabbing pain was still there, recurring every 10-20 minutes.  Additionally, I found the pain radiating down my leg.  Ohhhhh….  Nice to see you again, sciatica.  How have you been?  I thought I kicked you out years ago.

In my experience, I have two types of back problems.  One affects me when I move and one affects me when I stay still.  It’s my good fortune these two problems don’t occur together.  The first case is severe.  It starts with little warning jabs like I had, then when you don’t expect it, bam.  You are frozen solid and then immobile for about a week.  These incidents have been chronicled in older posts.  The second case isn’t as bad.  I mean it’s not awesome or anything, but it’s not debilitating.  I can take care of it with a few weeks of leg stretches, focusing on the hamstrings.  The important thing is that since I know it’s the second case, I don’t have to necessarily be cautious about moving about.

However, the timing of this recurring injury is interesting since I’m scheduled to take classes this weekend for Reiki.  Reiki, for those that don’t know, is energy healing.  I have a series of pages that I’m writing for this blog on my Reiki experiences that aren’t released yet, but will be shortly after my classes.  This is going to be an excellent first test of the healing ability of Reiki.

Change For The Good, Right Now

In the “these things happen to other people” news, I’ve been a target of a hacker.  As hacks go, it was fairly significant – my EBay account.  The hacker bought a whole bunch of stuff, surprisingly not using my linked PayPal account.  EBay locked my account quickly, notified me, and took care of most all the issues with fees and listings.  Regardless, I felt obligated to apologize to a bunch of people who got caught up in the mess.  One person had actually shipped the product by the time I emailed them.

I’ve been online a long time and my password strength has grown with the ever-increasing threat.  I’ve felt I’ve had a decent password, but I suffer from what a lot of people probably do, and that is password entropy – using the same password on every site.  Well, that’s not entirely true since I do use a variant of my main password for those sites that don’t support the special characters I used.

Now it’s time to get real.  Just before I discovered my eBay account was hacked, I had dealt with some spammer sending me over 7000 emails of random text.  So I was giving consideration to changing my email address, and why not have a different email address for every site?  So my email address for Bank of America would be bankofamerica.com@mydomain.com and for Expedia it would be expedia.com@mydomain.com.  This would be relatively easy to remember and would identify if anyone sold my email address to another company or if my email was stolen or harvested.

But at the time, I felt a bit overwhelmed with the task of changing ALL my emails.  Now, since I have to change ALL my passwords, I might as well go through with it.  In addition, I’ve decided to use a password manager, KeePass.  It seems to be a pretty slick utility and I’m surprised I never gave it a chance before. I think my main reason for avoiding it was that I never wanted to be unable to access a website because I didn’t know my password.

But upon closer inspection of that fear, it is very similar to other fears that keep you from (positive) change.  The fringe cases override everything.  It seems everyone is afraid of the word “can’t,” because it is only interpreted in its absolute and permanent sense.  It’s not “I can’t do this,” it’s “I can’t do this right now.” And the “right now” part is what makes the modern time so awesome, hectic, and dangerous.

So, with KeePass, I can have a password file on my home computer and there’s a version for my phone that I can keep synched.  That should be well enough to let me do what I need when I need to.  And for the other cases, it’s going to have to be the other person disappointed when I say “I can’t” because I’m not going to let it control me.

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.