The king is dead, long live the king.

 

The tensest political handshake in modern times.
The tensest political handshake in modern times.

What I’m reading a lot on social media is a very determined effort to falsely equivocate either Obama or Hillary Clinton with Trump (whether their characters, their campaigns, or their future presidencies).  In my view, this is particularly disingenuous.  To put Obama’s presence and stature or Clinton’s experience and dignity up against Trump’s impulsiveness and braggadocio and call them basically the same thing just isn’t being honest with one’s self.

This, I think, is probably the most insidious choice that voters made because it assumes a “pick your poison” baseline, that both are bad.  Further, a vote for what is “lesser of two evils” excuses all the other bad traits about Trump.  It essentially doesn’t matter how bad Trump was, is, or will be: at least he’s not as evil as “that nasty woman.”

But the Hillary-evil narrative painted so well during the campaign got more and more thin as it wore on.  What evil are we really talking about?  That she and staffers made the tragic misstep of putting a private email server in use?  This was a decision that I’m sure Clinton will rue for a long time, but as the FBI has repeatedly cleared her of treasonous intent, it’s hardly evil.  That the Benghazi attacks were bungled?  Absolutely.  It was tragic and security lapses were made.  Mistakes happen, even at the highest level.  Is she evil in her mishandling?  I don’t think so.  She’s worked hard to establish stability in the area since and her tone has been proved to be one of calm in the face of calamity.

The Trump image we’ve all seen during the campaign itself (forget 10-15 years prior) has shown itself to be frightening.  What I can’t wrap my brain around is why so many Christians, children of the Reagan GOP, would turn a blind eye to his enabling of very bad behavior.  Here’s a man that can’t lose gracefully.  He sues the press when he doesn’t like how they cover him in the headlines.  He lashes out publicly at women and minorities.  He has no sense of decorum befitting of the office.

And yet still I hear how basically they’re all the same.  That one choice is just as bad as another.  That’s just not true, and you know it, no matter how badly you want that square peg to fit.

Mishandling errors

For the past 3 years, I’ve been working full-time as a software engineer.  This has been a substantial, if not calculated, change for me.  I’d been an hardware engineer for longer than I care to think about.

Perhaps the biggest, while subtlest difference between the two career paths that I didn’t see coming is this: determinism.  I simply love the relative absolute nature of software.  I’m sure some might argue me on that one.  But, you get my point.  For the most, the outputs of any software project can be clearly predicted; the inputs can be nicely quantized, packaged, and displayed in automated fashions.

I love going to work.

Even on the tedious days of making error handling code, it’s still all fun.  Exception handling is one of those topics that is grossly underestimated.  It’s hard work, it’s time-consuming (and no one appreciates that investment), and it’s rewards are always deferred.

I’m reminded of all of those points when I witness — virtually everywhere in “real life” —  examples of horrendous error handling.

Case in point

While attempting to post a mobile deposit to my bank account, I got an error.  The transaction didn’t post, for whatever reason.  This was on my Android phone, from which I’ve made dozens of successful deposits in the past to the same bank with the same app.

Fair enough, errors happen.

But the error message I was greeted with was the following:

Not much help there, huh?

The point of error handling is twofold:

  1. Assist the user in resolving the problem
  2. Provide the developer with the conditions prior to the error from which to find a solution to the problem

From the above screenshot, there’s next to nothing for the bank’s engineering team to go on.  The tech support tips I got amounted to, “Have you tried uninstalling?”

It’s no wonder that most people’s relationship with software is terrible.  And I’m a software engineer (now)!

Day 30+: a postlude

(Copyright Vectorbelly Webcomics)

While the rest of the world is preparing for super sportsing, I’m taking the opportunity to tinker. This post is a continuation of the GaSiProMo challenge I took part in a while ago.

Today’s update brings in the next stage of that project with my OsRAM LED display: better packaging.

The goal here is to reduce the amount of “rat’s nest” wiring from the prototype to a more manageable amount of cabling for better display of the pretty blinky lights.

So I harvested an old Shuttle micro PC for its hard drive cables, which are nicely bundled.  The first step was to make a breadboard carrier for the OsRAM.

breadboard layout
breadboard layout

I chose sockets for wire-wrapping.  I’m a big fan of wire wrap.  It’s old school, but very rapid for prototyping.

wire wrap pins
wire wrap pins
finished wire wrap
finished wire wrap

Next up was to make a mapping of the pins from my Arduino to a breadboard.  This took a while to derive the most optimal routing of wires.

Pin mapping for translation cable
Pin mapping for translation cable

No to my surprise, the HDD housing has one pin blocked.  So I had to Dremel this out.

recovered pin
recovered pin

 

I have a serial port terminal working so that I can type in any message from the PC and have it show up on the OsRAM:

20160207_131515

terminal port

terminal port

Hello, world!

Hello, world!

 

Day 30: final day

This post is part of the GaSiProMo challenge.   You can read more about this here.

I’ve got most of the bugs ironed out in my display interface, but not all have been squashed in the driver portion.  In other words, the method in which I can input text into the OsRAM is working nicely (I’m using a serial port console), but the nuts and bolts of how strings are sent to the display — arguably the most important part of this project — remains broken slightly.

OsRAM write timing
OsRAM write timing

The problem is that I was lazy.  I should have paid more attention to the WR and CE lines for proper data latching into the display at the right times.

Oh well, what can I say?   I got distracted by another project.  So I can show you what I have so far:

But this challenge has been fun.  It’s always fun to work under a deadline to see what you can do.  This forced me to learn more about Arduino.  And despite my first impression, I’ve come to see that it’s pretty great.  I especially love the C++ class support.  For instance, its string and bitwise libraries are awesome.  There are things that aren’t so great, like the editor.  I had consistent undo (CTRL+Z) wonkiness that scared me (I was afraid of code-eating), so I switched quickly to Notepad++ with a good syntax language profile.

Until next year.

 

The lack of file tags in Windows

So, I’m supposed to be working on this month-long challenge.  But hey!  I found some other project to work on.  It’s in service of my recent computer switcheroo, with which I’m a little obsessed lately.

Since recently switching from OS X on an iMac to Windows 10 on a laptop, I sorely miss file tagging. I’ll admit, this is one feature that I had not given much thought when I was preparing for the big leap to another operating system.

Though I’m happy with my switch, I’m also trying not to live in denial.  This is still Microsoft we’re talking about.  They have made incredible advancements as of late with their Windows 10 version.  And yet, in some areas they are very much behind in innovation compared to Apple.

File tagging is a glaring example.

tags in OS X
tags in OS X

If you’re at all interested in the Getting Things Done ethos, then you probably know all about this computer software feature.  On an Apple computer, you can tag a file or folder with a color and/or keyword.  These tags are then searchable.  They can help your workflow dramatically.

For instance, in a folder of downloaded bank statements, it would be incredibly handy to know which ones I’ve balanced against my personal finance software, and which still need to be done.  Tag the files accordingly!

But after my switch, I can’t do this on Windows 10.  And I use Google Drive to be able to do my personal work anywhere, so a file-tagging solution that is platform independent is pretty necessary.

Hence, I began looking for a solution, 3rd party or homemade.

Allegedly, Microsoft pays lip service to file tags, but these aren’t compatible with all filetypes.  So that’s a non-starter.

But then I found this 3rd party solution which sounds very promising.  But it’s not platform universal, so apparently your tags get vaporized when you email them or open the files on some other OS.  You can apparently export your tagging database as an XML file for importing on another computer, but that’s not very intrinsic a solution.  I do like how this solution plugs itself into Windows Explorer and the context shell menu!

File Metadata integration with Windows Explorer
File Metadata integration with Windows Explorer

But ultimately, I think that this won’t be a future-proof solution for my needs.

So instead, I built my own workaround.  And I did it with scripting:  AHK 1 to be exact.  It’s a really fun, easy-to-use scripting language that runs exclusively on Windows.  Don’t even get me started on my frustrations with the native scripting on OS X.  I always intended on learning it one day… until the day I got out of the Mac world altogether.

Requirements

  1. Platform independent.  This means I could use the files that I tag both on Windows and OS X (I don’t happen to ever use Linux, so that wasn’t a priority for me).  Their tags won’t become lost when opened on another platform, though the actual tagging process will only be conducted on a Windows computer.
  2. Transferable.  This is a slightly different requirement than platform independence.  The tags shouldn’t get lost when files are emailed, messaged, or synced across cloud services.
  3. Searchable. The tagging architecture must be plainly identifiable in some way, such that they can be searched easily.
  4. Non-destructible.  The tags must not interfere with the files’ usability.
  5. Extensible.  The tags and tokens should be configurable, such that the user can setup their own tagging schemes and change them over time.

I came up with the following:

File renaming

It’s as inelegant a solution as I am old.  But the longer I thought about it, it’s the easiest to implement, the quickest to set up, and meets all the above requirements.  In the scheme that works for me, I have three tags:

  • untagged files
  • tagged with some sort of “todo” keyword
  • tagged with a “done” keyword

Sample output

original: bank_statement_07232015.pdf

tagged: bank_statement_07232015 @TODO.pdf

retagged: bank_statement_07232015 @Done.pdf

Implementation

For this script to work as painlessly as possible, I used global shortcut keys to tag the files one way or the other.  One or more files can be tagged or untagged simultaneously.  Alternatively, you can bring up a GUI to do the tagging.

wtf

You can find the source code on my GitHub.  Here is the source…

Code sample

Day 15: display testing

This post is part of the GaSiProMo challenge.   You can read more about this here.

So I have my display working sort of.  It’s definitely showing good old ASCII characters.  Here’s a quick video of it in action:

You can see my code at GitHub.

I’m quickly realizing that I will need a more sophisticated text parser to make this thing usable.  ‘Cuz sending a character at a time for bit-fiddling pretty much sucks.

Platform Interchange

I suppose that the “Slippery Slope” phenomenon applies to me right now.  A chink in my Apple armor developed some time ago.  Then I got out of the iPhone world all together, which amazed me as much as it did my friends.

The recent maturity of Google’s cloud services (Photos, Drive, Music, etc.) had a considerable hand of this transition.  It’s very hard to argue with free, no matter who you are.

But then you do pay for free.  You pay with your time investment and commitment to the new platform.  For me, that cost has been relatively low.

That brings me to the next big hurdle to topple: OS X and my iMac.

It just suddenly made sense to me to consider the possibility of changing that hardware platform too.  Why not?  When literally all of my documents are cloud-based, I’m free to experiment with any kind of computer.

I’ve been a faithful Apple guy for the better part of 2 decades.  I’ve owned these machines in this order:

  1. PowerMac G4
  2. iMac 24″
  3. Mac Mini Duo
  4. MacBook Pro
  5. MacBook Air

They’ve all been pretty awesome.  But times have changed for me, my interests morphed.  And now?  I changed to an Asus 15″ hybrid laptop.  It’s a beautiful machine.

  • i7 64-bit CPU
  • 8GB RAM
  • nVidia video
  • 1TB hard drive
  • Windows 10.

That last spec is what finally made this all possible.  The Windows 8 debacle proved to be a non-starter for switching from the beautiful, consistent OS X.  But Windows 10 was finally showing itself to be ready to handle my needs.

I’m about a month into this big switch.  So far, I’m loving the choice.  It’s different, but good.  Not everything has been perfectly smooth, but no computer platforms are.

In particular, I really really miss filesystem tagging.  If you use those on OS X, you’ll be sorely disappointed with its lack on NTFS and Windows.  There are of course third party software solutions for this, but I don’t think they will work with Google Drive or Dropbox across other filesystems and operating systems.  For instance, I still work sometimes on my wife’s MacBook, so I need file tagging / coloring to work across them both.

The only solution I can think of is to simply make subfolders for my files.  The layout could look like this:

\Folder\Statements\2015\

…and then inside here, I could put:

\TODO

..and

\DONE

Then I get full syncing across platforms, and most importantly, visibility on where I left off.

Details aside, I’m the first to admit that there’s a certain polish lacking over here on this side of the computer and phone fences.  I miss that homogeneous sheen that OS X and iOS seem to exude.

And yet, for sheer horsepower and agility, I’m really appreciating what Windows 10 and Android devices offer.