Blog

(posted on 18 Aug 2014)

Almost exactly 5 years ago, I experimented with using a Mac as my main software development platform. The net result was that I abandoned the effort after finding too many obstacles and not enough benefits. In the 5 years since, the Windows and OSX platforms have converged considerably and the kinds of software that I work on have become much more "cloud like" in nature. There has also been a slow transition from Windows first to OSX first development tools to the point where many libraries that I want to install, either don't work under Windows or are a real pain to install.

So I am again diving head first into the OSX ecosystem. This time, I've got a top of the line, refurbished Macbook Pro that was shockingly expensive at about 3 times the cost of my last high performance Windows laptop. At least performance shouldn't be an issue. It's also nice that I can plug 3 external monitors into this laptop so that I can roughly reproduce my 6 screen setup that I had previously.

So far things have been going pretty well but I've not gotten too far in reproducing my development environment. That's my goal for this week. I'll report on the progress that I make.

(posted on 11 Jan 2014)

A friend wrote me with the following question:

Geoff, a woman I know told me that she heard that charging one's iPhone via a USB cable from a laptop does not provide it a "full" charge and that the only way to fully charge it is via the AC adapter and USB cable.

While she is technically incorrect, there are differences between various USB ports and how they provide power for charging. It's actually a very complex subject but the gist of it is that any particular USB port has a maximum amperage that you can draw from it for charging. This can range from as little as 50 mA up to 2100 mA. What sets this limit is the maximum available to the USB port itself, the number and types of devices connected to it and and a negotiation that happens when you plug it in. If you plug your phone into an unpowered USB hub, you will likely get some something around 50 mA. This will charge a high capacity battery very slowly. It's fine for my bluetooth headset or powering a mouse but any modern phone will have issues with it. In fact an iPhone will say that it cannot charge from such a USB port but it will actually charge, just very slowly.

Even with all of this complexity, no matter what it's plugged into and how long it takes to charge, when your iPhone says it's fully charged, it's fully charged... except when it lies to you. Yes, the iPhone will lie to you about it how full the charge is. (I think that newer Android phones do too) When it reaches 100%, it's actually somewhat less (maybe around 95%) and will continue to charge although the number won't increase past 100%. What this does is it allows your phone to run for quite a bit of time and still be at 100%. That makes Apple look good that it has a phone that uses such little battery. Also, modern phones do some power cycling while plugged in and at 100%. They will let the battery drain a bit and then charge back up. This helps with the health of the battery but they don't want you to see your phone at 95% if it happens to be at the bottom of the cycle after being plugged in all night!

You will also find some differences between how laptop USB ports work for charging. An older PC would supply 250 mA on a USB port and when you put the laptop to sleep, that port would be shut off so you had to keep the computer awake to charge a device. My 7 year old Dell laptop does this. When the iPhone came out, Apple changed their USB ports to allow them to deliver more than the standard maximum of 250 mA so that it could charge the iPhone faster than other PCs could. They also would leave the USB port on if you put the computer to sleep while the phone was plugged into it. Most PC laptops have adopted this feature although some have designated a specific port that will be left on and if you plug into a different one, it won't charge while sleeping. My 2 year old HP laptop is like this.

One thing to be sure of, the wall charger that came with your device will likely charge your device at it's fastest rate and often faster than a laptop. One interesting thing that we found was that an iPad wall charger would charge our iPhones at a faster rate than the wall charger that came with the iPhone.

I haven't looked into the USB3 specs but I wouldn't be surprised if they have added these non-standard, high current draw, power features to USB3.

(posted on 13 Apr 2013)

I have been fascinated by the developing field of small, semi-autonomous DIY devices. I have an AR.Drone that, while being nominally remote-controlled, is able to maintain a stable altitude and position, even in light winds with no user input. It is really a user-directed autopilot.

One problem I have noticed with these systems is that they have limited ability to understand where they are and how external forces (and even their own motors) may change their location. Given the scale of these devices (less than a meter in any direction), it would be nice for the device to know where it is, down to an accuracy of centimeters.

My AR.Drone uses a combination of sonar to measure distance above the ground and a downward-facing camera to see small horizontal movements. This allows it to be amazingly accurate at maintaining a position as long as you stay within about 5 meters off the ground. Above 5 meters, it has a much harder time maintaining a consistent altitude and has a habit of quickly taking off into the sky once you reach the limits of sonar. Also, once you start to move, the horizontal location information is lost.

Adding GPS won’t help much because horizontal accuracy is unlikely to be better than 20 meters and vertical accuracy is even worse. (My bicycle rides often seem to be substantially under sea level, according to the GPS on my phone). GPS is great at generally locating where a device is. But, high precision is difficult and expensive to accomplish. Phones have very tiny accelerometers and magnetometers but just like GPS, these seem to be only useful for gross movements and are not very accurate.

What's needed to bridge the gap between GPS and sonar/visual cues is inertial navigation. This uses highly accurate linear and angular accelerometers in an integrative way to determine a position based on a previously known position. Before GPS, this was one of the ways that guidance systems were designed. Even now, many military systems still use inertial navigation, at least as a fallback, just in case GPS is unavailable. The problem has been that such systems have been large and heavy. It was very interesting to see this Wired article about the development of highly accurate but very tiny sensors that should allow for wider adoption of much more accurate inertial guidance in devices.

This will help build DIY autonomous devices that will be fun to work with. But, it has some other applications that I think are interesting, too. Incorporation of such a device will help create a much better record of my bicycle rides. While my ride distances are reasonably accurate, climbing and descending hills are not reported very accurately. This new technology could record these changes in elevation much more accurately and thus give a much better picture of energy use on a ride. Inertial navigation would be great for smartphone apps that keep track of where you are. There are lots of places in cities and even outdoors in more northerly mountainous or heavily treed areas where GPS signals are unavailable. Inertial navigation would help fill in the gaps and even provide higher accuracy. It would sometimes be great for my phone to know that I’m on the 12th floor, near the north side of the elevators of an office building.

In recent years, RSS seemed to have become stale, with little new developments around it. It’s been available on just about every blog and there seem to have been considerable consolidation around Google Reader as a consumption platform. There have been a few other tools, like FlipBoard that have done a good job of presenting data from RSS feeds into their systems. Even so, there has been little news and little that is really new around RSS.

The problem with RSS has been that there has not been a very good discover-and-follow mechanism that allows people to easily find and then start following the content from an RSS feed. There have been RSS feed icons and various buttons and tools that people have added to their blog so that you can easily follow that particular RSS feed using a specific tool or platform but nothing that is truly open and works with all platforms and is one-click easy-to-use. It has been so easy to Friend, Like, Follow or +1 things with newer tools that RSS has really taken a back seat.

Google’s announcement that they will shut down Google Reader on July 1, 2013 and the firestorm that followed shows us two things:

  1. Google is following the trend to leave behind the open web in favour of controlled information silos.
  2. Many people are resistant to this trend.

This suggests that there is an opening to push for more open, federated systems for distributing information. Maybe with some updated or new protocols to better compete with the silos that Google, Facebook, Twitter, etc. are trying to force us into.

I find it disconcerting how often I see yet another tech company creating a walled-garden, lock-in or a vertically integrated system that provides very little benefit to the Internet as a whole. They stand on the shoulders of many amazing people who selflessly provided groundbreaking technology for all to use. These new companies don't "pay it forward"; they merely look to extract value out of those earlier works.

The unfortunate thing is that by taking such a selfish approach, these new companies are likely hurting themselves as much as they are depriving the world of useful technology. Even in a company as successful as Twitter, I see that by initially keeping a strangle hold on the network and eventually stomping on the ecosystem developers built, and which ultimately helped them succeed, Twitter has severely limited the possibilities that their network might have developed into. I saw where Twitter was going when I developed Twemes.com in 2008 and ended up abandoning any further work in that ecosystem because I saw it as being a losing battle.

Truly groundbreaking and open technologies layered on the bedrock of the Internet have slowed to a trickle. The only real successes in recent times have been RSS and OAuth. The giant tech companies are trying to bury RSS. And, OAuth is still a limited, fledgling technology.

I hope to write more in this blog about some of the ideas that have been rattling around in my head for the last decade or so, specifically my ideas around adding a layer of Internet infrastructure that can help raise the lowest common denominator and that the next generation of technologies can be built on.

(posted on 21 Dec 2012)

I spent some time this morning going through the software on a computer running Windows XP that has been a workhorse in my office for about 7 years since XP was last installed on it. It was an interesting exercise in electronic archaeology. There was software that I wrote many years ago on this machine. There were also IM clients like Pidgin and IM services from Microsoft, Yahoo and AOL. Remember those? There was lots of software on that computer that I couldn't even identify. I'm sure I installed it at some time but I couldn't even figure out what it was for now.

Over time, I have refined the software that I install on a new computer to the point where it is basically a bunch of web browsers, a programmers text editor and a web server and a software version control system. Everything else lives out on the cloud. My 60GB of music now lives on Google's servers. I backup my photos using Google and CrashPlan. I drag around a 25 year history of documents from machine to machine but that is now a 30 second copy process and CrashPlan keeps them safe. New documents, as rare as they are now, are created on Google Drive.

It seems to me that I will not likely buy/build another new desktop computer. Even a 7 year old machine is still "fast enough" for most of today's cloud based usage scenarios. I have several such machines sitting around that I will reuse when needed. I get a fresh computer ready for someone and get back their tired, virus ridden machine in return. With a little effort, that computer becomes the next fresh machine for the next person. Maybe I will upgrade the RAM or a hard drive and put a newer operating system on but they are still quite usable for Internet use or as a media device.

For the first time in my life, I have found that a laptop computer is mostly sufficient for my day to day work. I still feel more productive when it is integrated into my 7 screen setup in my office but I am surprised how much work I can get done anywhere with just the laptop and an Internet connection. I can even see myself going from a 7 pound luggable laptop to an ultra portable computer or even a tablet with keyboard although I don't thing that iOS or Android will cut it. I still need multiple windows open and lots of software running. Most importantly, I need good cut and paste.

We've come a long ways from the days when I used a 28 pound luggable Osborne 1 with 2 160kB floppy drives and a 3 inch green monitor!

Over the last couple of weeks, I had a chance to "experience" the customer service of a Canadian retailer, FutureShop. I have ordered from their website many times over the last couple of years. They sometimes have pretty good prices and in most cases, they offer free shipping.

My latest order was for 3 bottles of Sodastream syrup. They sold these at list price but they offered free shipping. The particular flavours that we want are not available locally so the free shipping made it worth using FutureShop.

The box arrived and upon looking inside, there was only 1 of the three bottles of syrup. I checked to make sure that I didn't get something wrong and then sent off a message to FutureShop customer service. I explained in detail that I had, what I later learned, a "short shipment".

The first response from FutureShop was and offer of a RMA number. I had to explain to them that there was nothing wrong with the one bottle that I got, and that I just didn't get everything that I ordered. They apologized asked for some more information and said that they had escalated the issue and I would hear from someone in 1-2 days. After waiting for 5 days, I asked for an update and was told curtly that my issue had been esculated and would get a response withing 1-2 days. I complained that it had already been 5 days. I was then told that this esculation was just done that day and it would be an additional 2 days for a response. After 11 days had elapsed, I again asked for an update, stating that I thought that their support had been a horrible experince and that I would be contacting the credit card company to see if they could prompt FutureShop into action. I also mentioned I would tweet my experience. The only response from the support people was an apology for the delay but no real information.

I then tweeted:

I've been stonewalled by @FutureShop for 11 days to get a response about a shipment that did not deliver what I ordered. Terrible support.

I got a twitter response from @FutureShop asking for my order number.Later that day I got a call from someone at FutureShop's head office saying that everything had been cleared up. The product that I had paid for and not received was refunded. That seemed reasonable and she even offered a 10% discount off my next purchase. That was all I was looking for but it took 12 days and a lot of frustration to get to that point.

Today, after verifying that I had gotten the refund, I went to order more syrup FutureShop. FutureShop had raised the price of that particular syrup from $6.99 (the list price) to $11.99, almost double the list price. I send a message to their customer support asking if this was an error and after a couple of hours the response I got back was full of boilerplate but no actual answer. I give up! I'll find another source for this syrup.

From my experience with FutureShop, I see that they have two types of customer support. For questions that come in via their website they must have a high volume data center, like a call center, who's goal is to blast through customer support queries as quickly and cheaply as possible with no regard to being truly helpful. Of the 6 or so responses that I got from this data center, none really answered the question I had asked. I don't blame the people at the keyboards, I'm sure that this is the results of policies set by managers.

The second type of customer support is for social media. This is obviously handled in a more responsive and high level manner. Because this is done in public, they are taking much more care to handle issues quickly and thoroughly. This is how their more general customer service should be handled too. Obviously they do not understand the damage that their existing system is doing to their reputation. I am likely to avoid FutureShop in the future because I know if anything goes wrong, it will be painful to get things fixed.

(posted on 29 Mar 2012)

In 1998 we were living in San Francisco at the height of the dot com boom. We got one of the first residential DSL lines that PacBell started to roll out. It took them 2 full days to get it installed! I think that the initial price was $160/month for what today would be seen as a very slow connection. What was important was that it was always on -- at least if it didn't rain. Not only did we have a "fast", always-on connection to the internet, we could run our own internet services. We could replace our very expensive DellHost server that we were using at that time.

We built a beige box tower computer that had a 400MHz Celeron CPU on an Intel SE440BX-2 motherboard, 128MB of RAM, 10GB of disk space and running Debian Linux and call it Matrix. We ran a number of websites from Matrix. FlashCommerce.com, Flashlog.com and well as personal websites and some sites for others. We created websites to play around with some early SEO techniques and even a bit of content farming. This went on for a couple of years until ISPs started complaining about putting web and email servers on residential connections and we finally had to go back to data center hosted servers. Once Matrix was retired as a production server it took up service as a development server for developing websites before pushed to a production server. Over the years it has it's RAM tripled up to a whopping 384MB and had it's version of Debian upgraded many times. It eventually was too slow to effectively be used as a development server and was retired from development service sometime around 2005.

Matrix still ran reliably so we started to use it to do regular backups of our production servers. We added a couple of hard drives in the years since then as our backup needs increased. It has run for the last 7 years constantly transferring data to and from production servers in data centers around the world and to NAS devices that we have on our local LAN.

I noticed this morning that it was having a DNS problem and that it had not done some of the backups it should have done. I traced the problem down, fixed it and restarted it's backup. The load was too much for it. After transferring a couple of gigabytes from our production servers Matrix crashed. Only the second or third time it has crashed in it's many years of service and only about the third reboot in about 6 years. It never recovered from that crash. The BIOS booted very slowly, RAM check was glacial and it only recognized 2 out the 4 IDE devices connected to it. Matrix halted displaying the dreaded "Operating System not found" error.

I spend an hour or so cleaning it out and attempting get the machine to boot off of different devices without success. So after 14 years of absolutely reliable service, Matrix has been powered down one last time.

(posted on 15 Nov 2010)

I received an email a while back that stated that I owned a certain .us domain name and that the sender owned the .com equivalent. The email offered to sell me that .com domain name for $100 and would use an escrow service to guarantee the transaction. On the surface, this would seem to be an attractive offer except for one thing: I already own that .com domain too!

While I won't waste my time following up on this, it did make me wonder about the "escrow service" that they would have suggested for this transaction. A scam in itself I would assume.

I do look at such email messages closely because sometimes they can be very useful. I had a similar situation where I owned a .us domain, got a message similar to today's message but I did not own the .com domain. A quick check showed that this particular .com has just been deleted (freed for new registration) and that the spammer would have just registered the domain and then sold it to me if I had responded. Instead, I just registered the domain myself. This has happened twice in the last couple of months!

(posted on 11 Aug 2009)

A few weeks ago, serendipity provided me an older, but quite serviceable Macbook.  I've never seriously exercised a Mac in my day to day life due somewhat to the steep buy-in cost but mostly because of inertia.  In that time period I've spent quite a bit of time building up Max (the network name for the Macbook) to match my needs in a notebook computer.  In addition, I decided to use it as the host computer for my new iPhone.  I've talked before about my dislike for iTunes and other problems I've had making Max usable in my life but this is only half of the story.

I have two fairly distinct uses for a notebook computer.  The first is similar to most people's use: Firefox gives me a window to the world.  I consume various media using Firefox or iTunes and indirectly via an iPhone.  I create a few documents or spreadsheets via Google Docs or Open Office. 

The second use for a notebook is less typical.  I write software and I need a complex set of tools to allow me to do that development.  While I still do ocational support of very old Windows desktop and server software that I developed in the 90's, I have been developing for Internet platforms almost exclusively for the last 12 years or so.  (With a few side tracks into the mobile world).  That development has been targeted toward Linux centric technologies with a primary focus on PHP, Ruby, and Python using MySQL.  To do that kind of development you need a development computer that supports these technologies.

OS X, with it's roots in BSD, would seem like a great platform for this.  A slick user interface with a familiar UNIXly environment under the skin was pretty enticing.  So with that, I started the process of getting all of these technologies working on Max.  I quickly found out that many of the software packages that I tried to install would not work with Tiger, OS X version 10.4, only one generation old.  So I upgraded to Leopard, the lastest version of OS X and only a month or so before the new Snow Leopard comes out.  (Interesting: there is no free upgrade to Snow Leopard for purchasers of Leopard just a month before shipping.  Microsoft would not get away with this for Windows.)  What also prompted the upgrade was the issues I was getting trying to install MySQL-python connector.

The archive and install upgrade of Leopard went well and I was pleased with the improvements.  But it didn't solve my MySQL-python issue.  It did allow me to install Aptana, my preferred development editor.  After much experimentation and many hours lost, I did get the MySQL-python connector working.  I've long been using PhpMyAdmin for administering MySQL.  It's so much easier than using a command line MySQL client.  That took many hours more.  Should have been 10 minutes.  The only pieces that were easy were the ones that were already installed and often to get other things installed, I needed to install a different version from the default Leopard version.  That leads to many copies of almost identical software scattered over the BSD/OSX Frankenstein file structure.  Each tool that I installed, complicated the situation.

In the end, I've given up trying to force my requirements on Max.  I'm sure that with a couple more weeks of work, I'd get it working the way that I want.  The thought struck me that at that point, I'd have a computer that meets my needs only as well as my 3 year old Dell notebook.  It might be a little faster but I cannot tell.  There is no software that I *need* OS X to run and lots of apps that while not critical, will not run on OS X.  My experience with OS X has not shown me any compelling reason to use it over Windows 7.  I understand that I'm not a tyical user and that there are many for whom OS X works well and might be ideal. 

I think that if I had been coming from OS X and trying out Windows 7, I'd likely have an overall similar experience.  In a lot of ways, OSX, Windows and Linux have become quite close in terms of features but they all differ in the details of how you get things done.  In the end, it comes down to personal preferences and experience as to what works best for an individual.

So my next "experiment" is to see what Max is like running Windows 7.  Will the hardware work better for me than the Dell with the same OS?  If nothing else, I can easily install the software that I need on it in a couple of hours, and it will hold me over until I figure out my next portable computing platform.  I've got Boot Camp and Windows 7 already setup.  That was easy.  Now to duplicate my desktop setup.

older blog items...