Replacing the couch

Our first step, upon deciding to remove the garage wall, was to go purchase a couch. It didn’t take us long:

New couch

We’ll be picking it up next weekend, once the garage wall has been removed so we can get it in. This unit has a fold down center console, and dual recliners. It will be replacing both the recliner and the sofa. The console doesn’t have power ports, so we’ll be adding those later.

Renovating the RV

My wife and I have been in our current RV for about 2 years now. It is a 2007 KZ New Vision Sportster 41′ toy hauler (41KGx2).We bought it used, so it already had a bit of wear on it. We decided a couple weeks ago to do some major fixing up.

Floor plan of our RV

Note: not shown in the above floor plan is the 2nd door in the garage (storage area), nor the bed loft above it. I’ll be posting some pictures later on.

One of the problems with fixing up an RV is that the doors on an RV are only 24″ wide. We’ve about worn out the current recliner and sofa. But buying a new one was a challenge because of the narrow door width. We had about resigned ourselves to ordering one from an RV company, but then a plan started coming together (don’t you just love that?).

We originally purchased a toy hauler because we liked the idea of being able to take our motorcycle with us. But what really sold us was the idea of using the extra space to expand our living area. So for the past couple years our “garage” has actually been my piano room. We also put a 2nd refrigerator in there, and use it for ironing. It was really nice having the tailgate, because we could easily move big things into it, like the refrigerator.

We had originally thought that the separate garage would provide a mini-apartment for our kids when they visit. This hasn’t happened, though. The kids usually sleep in the fold out couch or loft in the main area. So it occurred to us, why not take down the garage wall, opening up the main area space?

I realize that the main reason for the garage wall is to keep the gasoline smell out of the living area. But we don’t keep the motorcycle in the garage. When we go somewhere, the first thing we do when we get there is to take it out.

Once we started thinking about taking the wall down, we realized that without the wall, we could bring any size furniture into the living room through the tail gate.

And so the project begins. I’ll be posting our progress as we go.

HomeKit

I’ve been playing with Apple’s new HomeKit framework. It attempts to provide a way to integrated all your automated home devices, allowing a single app to control them all. Even better, Siri can be used.

This is still early, so we’ll have to see how it plays out. But you can bet I’m going to be looking at how to use this technology in my RV. I’ll be blogging about it going forward.

Have a Disneyland Day!

Yesterday I had a Disneyland day.

I grew up in Los Angeles. Disneyland was only a 45 minute drive away, so we tended to go quite often; maybe several times a year. So I guess I’ve probably been there about two or three dozen times. The joy of going to Disneyland is permanently etched into my brain. And it evokes very good feelings.

I have very fond memories of entering through the gates, seeing the old fashioned steam train rolling by on a hill covered in flowers spelling out the word Disneyland in bright colors. Then walking up main street USA. The excitement of all the interesting shops and things happening. Old fashioned jalopies and horse drawn wagons drive by. Musicians and Disney characters wander about. Just thinking about it puts me in a great mood.

I was thinking about that while riding my motorcycle into work yesterday. The weather was beautiful. We’ve had a lot of rain, so things are unseasonably green around here. It was a beautiful drive on a beautiful day in a beautiful city. I had to stop while the train went by. The question occurred to me: “Why don’t I feel the same way right now?”

Austin is full of interesting things. I work a block off of Congress, in view of the Capitol building. There are lots of interesting shops all over downtown. People in bicycle rickshaws, amphibious buses, horse drawn carriages, human powered mobile bars, and wandering bands of tourist on seques routinely drive by. And in the evening there is music everywhere.

It occurred to me that there really wasn’t much of a reason to feel less excited about my ride to work than I felt walking through the gates of Disneyland. It was really just a matter of perspective; the result of letting myself fall into a numb routine where I stopped seeing all the beautiful and interesting things in my day to day life. “Going to Disneyland” was like hitting the reset button, and helps me to see things fresh, even those things that I’d seen dozens of times before.

I resolved right then and there to try to see everyday like I was going to Disneyland.

I hope you have yourself a Disneyland day, too!

Lavaca and Bower and Grunt, oh my!

I had a couple weeks off over the holidays. Since we didn’t have any big plans, I wanted to take the opportunity to learn something different. So I chose to dive into learning Lavaca.

Lavaca is a “curated collection of tools” that provides a “web application framework designed to jumpstart development of hybrid and single page applications”. It is available free from Github.

I had really thought that this would be a fairly quick exercise. I’m already familiar with HTML, CSS, JavaScript, jQuery, PHP, and so forth. But I was in for a bit of a surprise. I guess in the past few years that I’ve been focused on learning iOS and native mobile technologies, the face of web development has changed. And it’s changed a lot.

I’m glad to say that the days of throwing together some HTML, CSS, and JavaScript files to create a static website are gone. Websites are now created using real software engineering practices such as build systems, automated testing, dependency management, and formal deployment mechanisms. Sure, one can still throw together some files and upload them using FTP, but why would one want to do so? The good news is that there are powerful, open source tools available to automate and manage the whole process. The bad news (for me) was that there are a bunch of powerful, open source tools that I needed to learn to use. But that’s not really bad news, is it?

I realized that I needed a project to work on. I’ve never been able to learn new things very well unless I could find some way to apply it. So I reached back into my past projects, did some looking around, and found that the Celestino Couture website that I converted to WordPress several years ago hadn’t been updated in about that long. So I contacted Rusty and Sergio and asked if I could use their website as an exercise in learning Lavaca, and with their ok, off I went.

My goal in this exercise is to create a responsive web design that will be easy to maintain and extend over time, and can be deployed natively to Android and iOS devices, as well as the web and other mobile devices.

So I created a test site, and started through the Lavaca Guide, taking side trips to go learn Bower, RequireJS, Node, Grunt, YUIDoc, Dust, LESS, and Jasmine. It’s been fun, and I still have a lot to learn and a lot to do to finish up the new website, but it’s been a great experience. I’m really delighted with what our web team has been doing with Lavaca, and glad to get a better handle on the capabilities of responsive web versus native apps.

So that’s what I did over the holidays. I’ve got to say that it has been a blast! I still have a lot of learning to do, but I’m really enjoying it.

Why I’m Firing TimeWarner Cable TV

I’ve been pretty dissatisfied with TimeWarner cable for a long time. Some of this stems from having run across several lousy contractors/technicians. But my more recent complaints include:

  1. A very high number of bugs in their DVR programming.
    It seems that each DVR code update fixes one or two bugs, but always adds a few new bugs. They evidently do not test their code before delivering it to my DVR. I say this because I typically find bugs within minutes of using the updated code. I can’t recall a time when there weren’t bugs in my DVR, even after exchanging units, trying different models, etc. As the director of a large group of programmers, I know that I shouldn’t be discovering their bugs for them. That’s what Software Testing and QA is all about.
  2. Dishonest technical support
    They appear to have a standard response of “Oh, we fixed something in our back-end (or database).” I’ve heard this multiple times in situations where it was pretty clear to me that this was a stalling tactic, or an item on their support check-list. For example, on New Year’s day I was unable to watch video-on-demand, including trailers. I suspect that a lot of folks were home that day, and the high volume of on-demand streaming overloaded their back-end systems. I remember thinking at the time “this will be resolved tomorrow when everyone goes back to work”. Well, a few days later I started getting recorded phone calls informing me that “they had done some investigating and fixed some settings in their database, would I please retry the problem to see if it had been fixed.” Sheesh. Liars.
  3. Automated, nagging phone calls. They’re using computer generated phone calls to repeatedly call me day and night. I scheduled a technician to come out as a result of the New Years outage, but I’ve also been having low signal problems (intermittent pixellation). Now their computer is calling me with a recorded message lying to me about having “fixed the problem”, and would I please confirm and call them back at some stated phone number, otherwise my technician appointment might be cancelled. The message is fairly short, and the phone number stated twice before hanging up. WTF? How about giving me a chance to write the number down? To make matters worse, their computer wouldn’t leave a message when I didn’t answer, so I couldn’t even get the number from replaying their message. Does anybody at TimeWarner every try using their own service?

On the one hand, they provide the fastest internet service in my area. The RV park where my RV is currently parked provides cable hookups at the site, so TimeWarner is conveniently available to me when not traveling. And it’s pretty time consuming and inconvenient to switch provides (eg. cable to Dish or DirecTV). However, I feel like I’m not being a responsible consumer by continuing to subscribe to such an unethical, incompetent company.

Most of the people I know switched to Dish, DirecTV, or U-Verse long ago. Since I live in an RV, my options are somewhat limited. I don’t have the option of U-Verse, and until recently the mobile antennas available for Dish and DirecTV only support 1 channel viewing/recording. This has changed recently though, so I’ll be investigating my options and making a switch to Dish or DirecTV.

As inconvenient and expensive as it will be to switch, I refuse to continue to support a company that treats its customers like this.

TimeWarner, your monopoly on cable service is not enough to keep me as a customer. Get your act together or go out of business.

Follow up note 1/15/14

We had Dish installed last week and have been delighted. I’m sorry that I waited so long to make the switch. Primetime Anytime is awesome, and the responsiveness of the box to the remote is astounding. Installation was a breeze. We called on Saturday, and they installed it on Monday morning!

Not much blogging activity during 2013

2013 is winding down. I’ve been fairly busy blogging and writing technical stuff over on iOSUnitTesting.com, finishing up a new lynda.com course, and managing the best group of iOS developers on the planet. I haven’t posted here since last March.

I’m going to try to start doing more blogging here, keeping it more personal. Look for my iOS unit testing musing and reporting over at my iOS Unit Testing website. I’m going to try to keep this website more personal, talking about vacations, hobbies, family, travels, and travails.

 

AppCode 2.0 Released

JetBrainz has released a major update (2.0) to AppCode. I purchased my copy about 6 months ago, so the upgrade is free (anytime within 12 months).

The announcement says that Kiwi is now supported, so of course I needed to get a copy and check it out.

I’ve been wanting to redo the WhatsMySpeed code using true TDD with Kiwi, so I’m going to take this opportunity to try out AppCode 2.0 while I’m at it. I’m renaming it to HowsMyFuel to avoid confusion with the older code.

I’ve created a new public repository on GitHub to track this work. Feel free to watch and comment as I go. Since it is on git, you can use the git commit comments to monitor updates.

Motivation for Converting from Subversion to Git

We’re in the process of converting to Git at work. We’ve been talking about doing this for quite awhile, but never really had a compelling reason to do so. Recently though, something happened that has given us that reason.

Many of our projects are done with teams in both Hyderabad and India. We refer to these as “hybrid” projects. In a recent hybrid project, the SVN repository contained a lot of large assets (movies, images, PSDs, etc). Unfortunately, the internet bandwidth in our India office has been pretty bad. This caused updates to/from the svn server to take a very long time. This by itself caused delays, due to the time it took to sync up at the beginning and end of each location’s workday.

But then we threw a real monkey wrench into the works by converting the project to “Branch Based Development”. BBD has become a best practice where I work. We use this term to mean that a branch is created for each and every development task, then the branch is merged back into trunk only after it has been completed, tested, and code reviewed. However, branching/merging in Subversion requires essentially downloading then uploading the entire branch/trunk. I’m probably oversimplifying this, but the result was that each task ended up incurring that long update delay. Often multiple tasks can be completed in a single day, so now instead of a single delay at the beginning or end of the day, we ended up having this delay multiple times per day. At its worst, we were looking a 1-2 hours of delay per task!

At that point, someone pointed out that had we been using Git, this would not have been a problem. Git is much smarter about its branching, and doesn’t require this full upload/download to the remote. Granted, better organization of our svn repositories could have alleviated much of this problem, but we recognized that for international development, a DVCS like Git would be valuable and improve productivity.

So we’re using Git now. My experience with Git has been pretty much limited to clicking on the “Clone in Mac” button on Github. So I needed to learn Git.

Luckily, lynda.com has a very nice Git Essential Training course by Kevin Skoglund. I just completed that course this morning, and I’m excited now to get started using Git.  I recommend that you checkout the lynda.com course if you are just getting started with Git also.

iOS Development on iPad

I’ve started looking at if/how to do iOS development on an actual iPad. I currently use an 11″ Macbook Air. It’s portable and powerful. But I find myself doing everything on the MBA instead of learning how to really use the iPad.

With that in mind, I’m trying to force myself into really using the iPad for everything. It’s clear that most things will be a snap (email, chat, conferencing, etc), but iOS development is a bit of a challenge.

A couple approaches appear obvious:

  1. Remote Desktop to a development system
  2. Edit on iPad, and use FTP/Dropbox/etc. to sync to a development system.
  3. Get Apple to recompile Xcode for iPad (or JetBrains to recompile AppCode for iPad).

The first option is fairly straight forward. Tools such as TeamViewer and PocketCloud make this fairly simple. The only trick here is to set the development system’s screen resolution to match the iPad. This eliminates the need to scroll over the viewport.

The second option is perhaps more interesting. It should have a definite performance advantages, but somewhat greater complexity. There are several blogs talking about using DropBox to expose files on the iPad, then using Textastic or Koder to do the editing.

Option 3 is of course Nirvana for this, but totally out of our control. Anyone from Apple or JetBrains listening?