Friday, August 29, 2014

The Mobile Device Membrane

Back when the iPhone was first released there were no Apps.  The Steve told us that all of the apps would be web-apps & that the Safari browsing experience on iOS would be the same as on a computer.

But, as we all know, people wanted apps.  So rather than watch people jailbreak their phones to mod them & run their own applications Apple decided to cash in on the phenomenon.

So now if you want to develop those apps then you have to have a mac.  And then you have to distribute your app through the iTunes AppStore.  So they are going to get some serious money out of you one way or another before you ever sell one app.

That aside - what was initially interesting about apps in the Walled Garden was that unless you were jailbreaking your phone - there was zero software piracy.  To offset this the price of apps came way down.  An image editing or productivity app was now $10.  I saw that as a good thing.

But... Nowadays - there has been a sea change.  It would seem that every website has their own app.  And they really want you to use it.  If you don't then you get to use the "mobile version" of their website.  You would normally think that would simply change the page layout to be optimized for a smaller screen.  But wait, no - functionality is falling off of the page too!

This is where the model starts to change and introduce what I am calling the Mobile Device Membrane.  It is faster to change a web site than it is to change an app.  You need user-consent to update an app therefore it is easier to change a web site than an app.

Unless - you have multiple versions of the web site.  (i.e. the nerfed/hobbled 'mobile version') In that case you update the main website first - then maybe the mobile version & then you release the feature in the app.  Maybe you even wait for the results of micro-testing prior to including that feature at all.

The result is that mobile devices never have the cutting-edge functionality anymore.  If you require or desire that then you need a laptop, not a tablet.

I recently broke my iPad screen & considered buying a replacement/upgrade.  After thinking about it for a long time I realized that I didn't want one and that a laptop would be a far better choice overall.  I ended up getting the screen replaced at Radio Shack (nice job & very reasonable) and I'm still laptop shopping.

While I very much enjoy the iPad I have found that I use it less as a technical tool & more as either a productivity tool or as an entertainment platform.  I do not find it useful for writing software for example.  But watching videos, playing games, or reading PDF files are the main reasons for which I use it.

I also find it awkward for working with graphics.  The issue of using a stylus vs. having a screen protector is an added complication but either way, the inductive touch interface lacks the sort of precision response that I would get from using a Wacom tablet.  If I were serious about doing graphics work - I can't imagine not going that way. 

The alternative is to always draw things zoomed in like you are fingerpainting in the small.  While a useful metaphor for a workaround - it gets on my nerves.

In the end tablets are not computers & the companies that make them do not want them to be.  A computer is an anarchy-box where the user can get in there & do anything that they want.  Tablets are walled gardens that Thou Shalt Not Use in-any-way-the-manufacturer-finds-objectionable.

Therefore tablets are merely consumer electronics.  Very Useful ones, but that's it.

The one killer application that I recommend highly is TeamViewer.  Remote access to actual computers is the most useful & underrated application of this technology that there is. 

You know all of those computers in the cloud?  Using your tablet to drive one is a serious force multiplier.  It is somewhat clunky, but ultimately very powerful.

Thursday, August 28, 2014

What do we want? Security! When do we want it? 30 years ago

There was one message that stuck to me like a barnacle at HOPEX:

"It has been 30 years & Johnny still can't encrypt"

This is to say that encryption - which we all know to be a Good Thing - is far too hard to do.

As evidence to back up this assertion I offer the simple question: How many IT professionals do you know that regularly uses PGP (or GPG) to encrypt their email?  Do you have a keyring with their public keys?

If you are an IT professional - how often do you encrypt data?  Have you ever set up an SSL certificate?  Exchanged SSH keys?

There you have it - even the experts don't encrypt and when they do it is painful.

I was having a conversation yesterday where we compared the average person's attitude about encryption to that of Big Business & Climate Change: "Oh Wow.  That's a Big Problem.  You mean I have to Think about that and maybe actually Do Something?  Well that sounds like a lot of work & expense that I don't want to be bothered doing.  Let's just ignore this & see if it goes away."

In fact, in terms of Big Business - security is an expense also. Have you ever noticed that SSN's and Credit Card numbers get encrypted now, but little else, if anything is?

This is the ugly face of "compliance" where you have IT departments going out of their way to do as little as possible to comply with the law - as opposed to embracing the idea & making changes across the board.

But, of course, neither of those problems are going away of their own volition.

What am I doing about it besides complaining?

I have started an OpenSource project on GitHub called "johnny".  (As in the quote above)

I will be adding tools here to allow people to perform different encryption-related functions.

We should be encrypting everything.

So I am going to try to make the tools available & simple to use in the hopes that I can encourage others to do likewise & start using them.

Remember:  It is one thing to find a needle in a haystack.  It is another thing entirely
to find a particular needle in a stack of needles.

Wednesday, August 20, 2014

BitBucket to the Rescue .. oh wait

Based mostly on the sort of work that I have been doing in my career I got away from Open Source development for a while.  As I pointed out in my last post talking about GitHub I had to blow the dust off of my SourceForge account and start to do a comparison of the two.

It seemed like I had found a home for my code and it would be neither of them.**

I was aware of BitBucket much in the same way that I was aware of GitHub.  In my mind they were yet-another-online-source-code-repository.  Maybe this was true in the beginning and maybe I just never bothered to look at the differences between them because I was stuck in my own perspective.

They all let you store versioned documents.  They all have issue-tracking.  (SF calls them Tickets)

Both GitHub and BitBucket pick up your image from Gravatar. (Which I actually found a little off-putting as I had forgotten that I set it up for use with my long-broken PS3)

However, they all have successfully distinguished themselves from one-another. 

SourceForge is the old school regime.  They have projects-of-the-week and send you piles of email if you let them.  They have co-branded/sponsored "solutions centers" geared around specific types of development to foster communities.  They have job-searching services. 

GitHub comes on like a social media site with charts & graphs reinforcing a model of continual posting and @yournamehere message/pestering so that you interact with people talking about your code.  They also force Git & Open Source down your throat.

And then there is BitBucket.  They come off as Git-centric out of the gate, but offer Mercurial as an option.  So they play to the popularity of course, but provide for choice. 

For the sake of comparison I went through the same process that I did yesterday on GitHub, creating a hello-world project.

When I created the repository I was given a choice of Git or Mercurial.  Score Point #1.
I was then asked if I wanted the repository to be public or private, with private the default.  Score Point #2.  (GitHub charges  ~$85/year for that)
Digging into this further I see that I can have a workgroup up to 5 on this account for free.  Score Point #3. (That is specifically what GH charges ~$85/year for)

Where BitBucket shows it's dot-org-ness is when it comes to using the site directly from the web site - you cannot.  You must use either the command line tool or else the SourceTree tool.  While it is a handy tool - if only because it transparently works the same way with Mercurial as with Git, I resist dictating tools to people.

Also - GitHub shines even more with the ability to edit files in place on the web-site.

** When I went back & repeated the experiment with SourceForge - I discovered that they have been keeping up with the Joneses: Wiki, blog, git, svn, cvs, mercurial, & bug-tracking, oh my!

So this is not as clear-cut as I once thought it was.

What I will point out is that there is no integration between repositories on SourceForge.  Your svn repo has nothing to do with your mercurial repo has nothing to do with your published files, etc..  So if you support multiple source-control tools - then you have to support them.

So in the end I think that it might just come down to a question of who are you working with?  That is, if you are looking to contribute to an existing project, then you are stuck with the decisions that the project founders made before you - unless you have the audacity to fork.

However if you are looking to start a project & are looking for a home - you need to ask yourself a few questions:
  • What license am I using?  If it isn't Open Source - rule out GitHub
  • How large is my team? If it is less than five, consider BitBucket
  • How important is collaboration and what form should it take? Wiki, Blog, direct messaging? If you want twitter-style messaging, use GitHub - if you want blog or wiki SourceForge wins out.  (Of course if you just use IM and email then any of them work fine.)
  • Are you encouraging crowd-sourced participation?  Both SourceForge and GitHub are focused on pulling other people in.  SourceForge appeals to the civic-minded where GitHub uses the peer pressure tactics and rewards mechanisms of Social Media.  Know your audience. 
  • Do I need closed-source?  You might be working under contract & not have a choice.  SourceForge or BitBucket are better starting points.
  • What tools am I using? CVS or SVN look no further than SourceForge.  Git users rejoice in choice.  Mercurial users ignore GitHub.  If you are looking for web-page-based-contributors then GitHub is the slickest interface.
  • Do I need to edit files in a web browser? GitHub is your only choice. 
  • Am I just making something available for download?  If you just want a page for people to download your stable releases then SourceForge gives the most professional looking download page experience.
So what am I going to end up using?  In fact - for now - all of them.

What is more - if I find myself pioneering projects rather than simply participating in them - I will mostly likely create cross-linked & cross-synced repositories on all three.  Why would I do such a thing?  To maximize participation & reach.  These are all communities.  It would be worthwhile to reach out to anyone who would listen, no?

Tuesday, August 19, 2014

Getting up to speed with GitHub

I write open source software from time to time.  But it has been a while since I was an active contributor to projects.

As such I am familiar with SourceForge and GitHub is new to me culturally.  There are differences.

I don't use Git.  I do use Mercurial - which makes me something of a pariah when talking to git-heads.  That's sad IMHO since we're both firmly in the distributed version control camp.  I just find Mercurial easier to use than Git and can't be bothered to relearn the syntax again... (I've done rcs, cvs, pcvs, MKS, svn and finally hg - WhyTF would I want to learn Git now?)

Since I'm not a regular git-user I didn't see the point in using Github.  But after having to go there to get just about everything that Adafruit publishes software-wise I gained exposure and started the tire-kicking.

I have an account - gregor42 - so hit me up if you think you want me involved in your code for some reason.  I might even log in regularly enough to see it.

I have to say that I find the pay-to-be-private approach very peer-pressure oriented.  You will make your code Open Source, won't you!?!?!

While I think that Open Source is a great approach - it is not the only approach, nor necessarily the best approach all the time.  But if you are going to be proprietary then everyone wants a piece of that gold nugget that you are mining - starting with GitHub.

I'm also feeling a bit moody today so I'm finding that the push to Share reminds me of Plex from Yo Gabba Gabba and his pushy Fun to Share song that even my young son sees through as slightly disingenuous...

OK - time for a cookie - I'm getting moody.

Monday, August 18, 2014

Fun with Gemma!

Over the weekend I built a sound activated 1 meter long RGB light strip.  (I included a nickel in the photo for scale)

I used parts from Adafruit & followed their helpful instructions.

It was by far one of the easier builds that I have done lately.

It it based on the Gemma - a stripped down version of the FLORA - itself a stripped down version of Arduino.

That is to say that it is controlled by a micro-processor that I can program through a microUSB connector on the board.

At 5k there's not a lot of memory for me to write code into - but given that all that I am doing is reacting to changes in sound & turning on/off lights & setting their color - that's plenty of space.

Connecting to the Gemma with my Mac wasn't immediately successful until I plugged the USB cable into a powered hub instead of the keyboard - be warned.  Otherwise I had no trouble at all, especially since I downloaded Adafruit's Arduino Bundle which comes with all of the required libraries for Gemma, FLORA & Trinket.

Once I programmed the Gemma with the Blink sketch & felt comfortable with that I went ahead & uploaded the Color Organ sketch.  (I will post subsequent modifications later.)

I will warn you - I did not have any luck testing with alligator clips.  This might be due to testing with a battery pack that was not fully charged or it might be due to the very very small connection points...  That being said - I checked all of my connections & they seemed to be correct, so I threw caution to the wind & soldered it up anyway. 

And it worked perfectly the first time.  (That almost never happens for me, so I am still stoked about it.)

Halo Effect vs. the Reverse-Midas Effect

Business School-Minded folks will point at Apple and the success of the iPod & iPhone and will remark on how it drove sales of their other products as a result.  This is called "The Halo Effect".

It occurred to me while having multiple conversations recently about Google Glass than the general consensus amongst the tech crowd is that just about everyone would be far more comfortable using something like Google Glass if it didn't come from Google.

That doesn't exactly say much for the 4 color brand that has dominated internet commerce in the last decade.

Between bullying everyone into creating a Google+ account and being featured prominently in the Edward Snowden revelations, Google has a lot of public relations issues to live down.

The "Reverse-Midas Effect" is the logical converse of the Halo Effect.  It references the fable of King Midas who was gifted/cursed with the ability to turn anything that he touched into gold.  By doing the reverse, we refer to the idea of everything that you touch turning into shit.

Google still provides decent products (like this free blog for example, which they have in fact made worse) - but I'm not going to accuse them in the same way that I would hurl rocks at Microsoft.

But I am going to point out that something stinks and the "image" of Google could use some incense & potpurri.

BBBrevC Up Close & Personal [& Google sucks]

[Wow.. OK I guess I am stuck with reusing images that I uploaded from the computer since Google needs to bully me into using their app to upload an image from my iOS device. What ever happened to the web acting the same everywhere? Not according to Google it seems.  I am not able to upload images right from the the we page anymore.  Way to break the website.  First YouTube & now this - is there anything that Google can't Ruin?]

Well enough of that ^ crap because I am still extremely excited about acquiring my new BeagleBone Black rev C!  It came with Debian GNU Linux 7 pre-installed.  I looked for & found perl, python, ruby & C++.

Since you can access all of the GPIO's directly through the file system - it is actually very exciting to start fiddling around with this thing because of how easy that will be.  Aside from just having another computer around (with no monthly hosting fee attached) this thing shows tremendous promise in terms of being put to work to do something around here.  Maybe even something ::gasp:: practical.

What I see as the hidden feature of the BeagleBone, as well as the other devices in the attached graphic (Raspberry Pi & Arduino) is the standardization of the footprint for building peripherals.

It works like this:

I have the BBBrevC and I plug in my breadboard to it & start building away.

When I have something that works that I like then I want to make a more permanent copy.

I can then do a point to point prototype or a hand-built PCB and attach connectors on my board so that it plugs into the pin-out strips on both sides of the BBB.  (These are often referred to as 'headers'.)

The next logical step is to etch your own board that stacks on top of the BBB.  This is referred to as a "cape" for BeagleBones or a "shield" for Arduinos. (I don't know if "plate" is settled jargon for RaspBerry Pi or not..)

The standard builds itself around the interface - the headers define the compatibility standard.

[Incidentally, I ended up finishing this entry using a desktop.  Google seems to have intentionally broken their own product so that it requires more of their products to function.  I thought that was only something that Microsoft & Oracle did but I guess Google is now firmly in the "Got Evil?" camp.]

Here is the photo of my setup complete with a plastic case, USB to miniUSB cable, HDMI-HDMImini adapter, 5v 2amp DC power supply, mini SD card with adapter, usb to serial pin adapter for bypassing the bootloader, and a nickl & a sharpie for scale.  As you can see it is small.

"Credit Card sized" in terms of two dimensional shape is spot-on.  Even in the plastic box that I bought for it it is roughly the same size as my wallet.

Tuesday, August 5, 2014

In Your Face Technology

The consumer world is finally getting a taste of the technological design goals of my youth and with it gets two steps closer to living in a William Gibson novel.
I am referring, of course, to both Google Glass and the Occulus Rift - two devices meant to get up close & personal with your eyeballs.

Google Glass seems to be aimed at the augmented reality crowd - with the emphasis on their Explorer marketing being on how much it can help you go places & do things.

The Occulus Rift contrasts this by providing a fully-immersive virtual reality display that replaces your view of the world with anything of which you would rather be living inside.

There is a huge price difference for these items & that in many ways reflects their immediate utility & their customer demographic.

By this I mean that despite the immense potential of the Occulus Rift, it is easier to immediately put Google Glass to work as a tool to get things done.  Does that justify a price tag of almost five times more that the Occulus Rift?  I have a hard time swallowing that.

It seems to me more like that price point is intended to make Google Glass a status symbol, much like the first iPhone release.  Unfortunately I think that this is backfiring.  The combination of know-it-all and camera-in-your-face experience of interacting with someone whom is Glass-enabled has led to the immediate adoption of the term "glasshole", applicable to users in public.

I have to say that the term is somewhat well-earned.  By jumping onto the Google platform you almost guarantee a serious degradation of your personal privacy as well as that of everyone immediately surrounding you.  This alone is disturbing but when you combine the price-tag with the inevitability that it will most certainly be riddled with advertising - one really has to question the judgment of anyone buying into this.

Still - I reconsider it every 2 days or so.

The Occulus Rift on the other hand is still largely a toy for developers.  Being a developer - I am cool with this, but still it would be nice to know that if I buy one that I won't be shelling out for something that I will only be able to use if I custom-build my own content for it.

That being said - they have put a lot of work into minimizing latency.  I hear very good things about minimizing simulator sickness - which I think is really important since I suffer from it.  If you are not sure if you too suffer from this then sit down in a room with all of the lights off and watch the Blair Witch Project.  If you get nauseous from the lack of orientation then you might also be susceptible.

Monday, August 4, 2014

DIY ARM laptop for <$200

I know that we keep hearing about Chromebooks and all kinds of very inexpensive computer systems intended for students or people in the developing 3rd world, etc..

You might think that it is impossible to build any kind of computer that you might want to actually use for very little money.  

You would be dead wrong about that!  
Let's have a look at what 5 minutes of Google searches turned up:

Case                   10
Kybd                   35
LCD                    65
Subtotal             $110

Then either: 


BOTH boards for a Grand Total of $200.  (Yes I said "less than" - so choose one board)

This is not a pretty design by any means but it will work 
Both boards run Debian by default – and you have many options to choose from there.


You could forget what I just told you & spend $300 on just a board that can run Windows:

But obviously, that doesn't make any sense at all.