Thailand Group Study Exchange

November 13th, 2008

Every year, the local Rotary Foundation district participates in a Group Study Exchange (GSE) with a Rotary district in another country. The idea behind the exchange is that the local district sends 5 people over to the remote district for 4 weeks, and on the flip side the remote district sends 5 people over here for 4 weeks as well. During the trip, the team participants offer several presentations talking about life and culture here in the U.S., or more specifically in the area in which we live. Obviously, the team also spends time touring the other country and learning about their culture. Almost everything is paid for by the local and remote Rotary districts–airfare, lodging and food are all provided. After the team returns, they are expected to share their experiences with local Rotary clubs and other organizations.

Last year the exchange was with a Rotary district in Australia, and next year I hear they are going to Spain. This year, the exchange is with a Rotary district in Bangkok, Thailand. After submitting my application and interviewing with members of the Rotary Foundation this past Tuesday evening, yesterday afternoon I was pleasantly surprised to get a call inviting me to become a member of the team this year.

My first reaction to hearing the news can be summed up in a single word: Whoa… While I had spent a good amount of time talking to Katrina and deciding whether or not to apply for the GSE, it wasn’t until I was invited to join the team that it became real. I mean, it’s 4 weeks of being away from family and friends in a country where very few people speak English and the culture is vastly different. On top of that, this is definitely not a vacation, in that we have full schedules almost every day of the trip. Gaucho Software would have to be put on hold for a month and the meteorology courses I’m taking a Central Michigan University would have to be put on hold for a semester.

On the other hand, I would get to go to Thailand! I’ve never been to Asia or even outside of North America before, so this would be quite an experience. Over there, team members are matched with someone in the other country who has the same profession, so I would get to see first-hand how software engineering and/or meteorology differs in that part of the world. 95% of the Thai people are Buddhist, so I would get to learn more about that religion and see tour Buddhist temples. Not to mention the architecture of other buildings, the excellent food, and the list goes on and on.

This morning, I formally accepted the invitation and now the preparation begins. Wish me luck…

Wireless Network

September 21st, 2008

When upgrading to the ASA 5505 router, I was left in a situation where there would be two routers on my home office network: the ASA acting as a main wired router, and my old Linksys router acting as a host for wireless clients. The ASA was connected to the cable modem to my provider, and I set the internal network to 192.168.1.0. The wireless router was a host on that internal network with a WAN IP of 192.168.1.5 and a LAN network of 192.168.5.0. This works fine when accessing hosts on the internet, but it was less than ideal when trying to access the wired internal network from a wireless computer. Because of the firewall and NAT happening on the Linksys device, wireless devices were second-class citizens on the LAN.

There was this little radio button the Linksys router that would switch the device from Gateway mode to Router mode. Hmm, that looked promising, so I tried it. This was nice, because NAT was no longer active…a host on the 192.168.1.0 network could talk to a host on the wireless 192.168.5.0 network. The drawback was that I would have to add a separate route from wired hosts to send traffic to the 192.168.5.0 network through 192.168.1.5 instead of the default ASA gateway at 192.168.1.1. With the relatively small size of my network here, that’s not much of a problem, but I still felt there should be a better way.

Since I wanted to stick with one default route of 192.168.1.1, I looked into adding another VLAN to the ASA box, to see if it could route packets to 192.168.5.0 down the port that connects to the wireless router. Unfortunately, my ASA is only licensed for 3 VLANs which are all in use (outside link, inside link, and DMZ). I could spend a few hundred bucks upgrading my ASA license to support more VLANs, but it just didn’t seem worth it.

Another option is to add a managed switch to the internal network and use that to setup VLANs. New hardware is always fun, but again this would cost a couple hundred bucks and there has to be another way…

Finally, the solution became immediately obvious…so obvious that it’s amazing I hadn’t thought of it before. Instead of connecting a wire from an internal port on the ASA to the WAN port on the Linksys, I tried connecting from the same internal port on the ASA to an internal LAN port on the Linksys, leaving the WAN port on the Linksys unused.

This setup works perfectly. I changed the internal network of the Linksys to the same 192.168.1.0 as the ASA internal network, and gave the Linksys an internal IP of 192.168.1.2. The ASA is already running a DHCP server on the 192.168.1.0 network, so I disabled the Linksys DHCP server. Wireless hosts are now first-class citizens on this network…

ASA Port Forwarding

September 4th, 2008

I came across the first less-than-trivial configuration situation on the ASA router this morning—port forwarding. On consumer routers, this is absolutely simple to setup, just specify what port number you want to forward and select the internal IP to forward it to. On the ASA, it’s a bit more complicated, and I decided to document it here in case anyone is Googling around for an answer. For this example, we are forwarding incoming traffic on port 8080 to a device on the internal network using the same port number.

First, you have to add the port to be forwarded to the outside interface’s access list. In ADSM, go to the Configuration panel under the Firewall section. Then click on Access Rules, and select the outside interface in the table. Click the Add button. Here, use the following settings:

  • Interface: outside
  • Action: Permit
  • Source: any
  • Destination: any
  • Service: tcp/8080 (or any other port number you would like to forward)
  • Description: (optional)
  • Enable Logging: (optional)

Click OK to add the access rule. Then click Apply at the bottom to upload the configuration to the router. In the end, it should look like this:

Now that we are allowing traffic on that port, we need to tell the router where to send the traffic. Click on the NAT Rules section and click the Add button to add a Static NAT Rule, using the following settings:

  • Original Interface: inside
  • Original Source: 192.168.1.5 (replace with internal IP)
  • Translated Interface: outside
  • Translated IP: Use Interface IP Address
  • Enable Port Address Translation (PAT)
  • PAT Protocol: TCP
  • PAT Original Port: 8080 (replace with your port, on the outside interface)
  • PAT Translated Port: 8080 (replace with your port, on the internal device)

Again, hit OK to add the NAT rule and apply the settings to the router. It should look like this:

That’s it, you’re done!

Updated Gaucho Network

September 4th, 2008

For quite some time now, I’ve been wanting to upgrade my office network, which doubles as my home network as well. From the business standpoint, I wanted some more reliable equipment along with some added security by enabling me to connect to the office network over a VPN when I’m on the road. From the home standpoint, I wanted to add a couple of ethernet outlets upstairs, mostly to enable the quick transfer of media from the file server downstairs, as wireless can be pretty slow.

A few weeks ago, I finally took the initiative and started looking at some equipment. For networking, no one is going to blame you for ordering Cisco equipment, so I started there. Their routers start at about $350-400 and move up from there pretty quickly, which is more than I originally was looking to spend, so I started looking at a few other brands. Brands like ZyXEL offer less-expensive business-grade equipement at about half the price, and I checked all the high-end equipment offered by consumer brands like Netgear and Linksys.

It didn’t take long to rule out the consumer equipment. While a lot of the features were there, I was constantly running into reviews complaining about reliability issues, and to me that was a key issue. Another common issue with consumer equipment was bandwidth capacity. A lot of them only handled around 15MBits, with some others moving up to 50-75MBits. VPN speeds were definitely slower, most of the time running around 10MBits because of the extra processing required to encrypt the packets. Ignoring VPN, these routers were faster than my network connection (10MBits), but I was looking more for something to handle up to 100MBits so it would grow with my connection for many years to come. Despite this limitation, a lot of them had gigabit connections on the WAN side. Not sure why…

While doing my research, I kept going back to look at the Cisco router. I was looking specifically at their ASA line of products. The ASA line replaces the older PIX routers, and there is quite a model spread from the 5505 for small office environments, all the way up to the 5580 for the enterprise. Even at the low-end, the 5505 was able to handle 150MBits of throughput for unencrypted traffic, and an impressive 100Mbits of VPN traffic bandwidth. All of the reviews said the device was rock-solid and never crashed. Setup seemed to be a bit more difficult, with a lot of it taking place on a command line, but I have some past experience with Cisco’s IOS and thought this would be a good time to brush up on my knowledge. Finally, with support for VLANs, an 8 port Cisco switch built-in with 2 power-over-ethernet ports, and an insane 10,000 simultaneous connections supported, it was hard not to like this device.

I ended up going for it, and shiny new 5505 is sitting on my desk. The device is a lot easier to configure than I originally expected. The device arrives with a dynamic configuration by default, so it just worked when I plugged it in to my network. There is an online Java application that is hosted on an HTTPS server. Configuring the VPN end-point and getting the iPhone to connect to it and split-tunnel all traffic through the router took all of 20 minutes. It’s taking me a little longer to configure my Mac to connect over the VPN, but I just need to spend some more time on it. I find it ironic that the iPhone is more prepared for the enterprise than the Mac is. Overall, I couldn’t be happier with my decision.

Switching gears a little bit here, from the home side of adding additional outlets, I bought a 24 port patch panel to punch down all the cabling on, and 500 feet of Cat 5e to wire it all up. Cat 6 was definitely a consideration but it cost twice as much, and with Cat 5e handling gigabit just fine I saw no need to spend the extra money. If 10-gigabit starts becoming standard, I’ll just upgrade the cabling in my office.

Dropping the lines from upstairs has been a bit more difficult than I was expecting. I naively expected to be able to look up the wall from the basement and see the outlet connection box from below. Of course, this isn’t the case, as each wall has a bottom 2×4 to complete that edge of the frame. I’m still working on finding the best way to send the wire through a small hole in the connection box, and target a small hole at the bottom of the wall frame.

I still have some work to do, but will try to update this with photos when the job is completed. Stay tuned.

Customer Service

August 24th, 2008

There have been two instances of excellent customer service that I’ve experienced recently. The service offered in both instances was so good, that I decided to blog about them.

The first experience took place just before WWDC this year. Usually after a year of hammering on a laptop battery, I pick up a fresh battery before the conference, simply because it’s important that the laptop works all day while taking notes in the sessions. Usually I replace the battery with an Apple standard battery, but this year I decided to give a third party a shot. FastMac has a battery for the MacBook Pro that claims it will last longer than the Apple one, and it’s about $20-30 cheaper too. I ordered it and waited patiently for it to arrive.

After hearing nothing for about a week (and WWDC getting dangerously close), I decided to give them a call. The person I talked to was apologetic, stating that they ran out of stock just before my order was placed. Bummer. Fortunately, FastMac did have new Apple batteries in stock, and not only did they offer to switch my order, they added rush shipping to make sure it would arrive before the conference, and knocked the price down to $10 less than they were charging for their own battery. The unit arrived with a day or two to spare, and overall it was a great example of a company going the extra mile.

The second experience happened just a few days ago. I’m installing a new network here at the office, and part of that new network was a Cisco router. As usual, I ordered the new equipment from NewEgg. It arrived, and seemed to work okay out of the box, but for some reason I was unable to connect to the device using the ASDM or over the web configuration interface. I called up Cisco, and the tech I spoke with there spent an hour and a half on the phone with me trying to troubleshoot the issue. The nice thing was their use of WebEx to help troubleshoot, so they could share my Desktop here and work with the router themselves directly. In the end, it was determined that the router I received had a corrupted flash chip, because we were unable to write any new data to the flash disk.

I went through NewEgg’s online exchange interface, and it was looking like I needed to pay to ship the damaged router back to them (shipping of the replacement device was free). I was a bit put off by this. While I agree it wasn’t NewEgg’s fault I received a bum router, I also shouldn’t pay extra for something that wasn’t my fault either. When calling up NewEgg to ask an unrelated question, the representative I was speaking to noticed that I was charged shipping to return the damaged device. Not only did he refund the return shipping amount, but he also put through an order for the new device to ship before they received the damaged one. To top it all off, he upgraded the shipping on the replacement to next-day air for free.

In this last situation, both Cisco and NewEgg get major props for great service. The new router arrived and it’s worked perfectly from the get-go.

New Disk

June 5th, 2008

Having an application like Seasonality that relies upon online services requires those services to be reliable. This means any server I host has to be online as close to 100% of the time as possible. Website and email services are pretty easy to host out to a shared hosting provider for around $10-20/month. It’s inexpensive, and you can leave the server management to the hosting provider. For most software companies, this is as far as you need to go.

This also worked okay when Seasonality was simply grabbing some general data from various sources. As soon as I began supporting international locations, I stepped out of the bounds of shared hosting. The international forecasts need to be hosted on a pretty heavy-duty server. It pegs a CPU for about an hour to generate the forecasts, and the server updates the forecasts twice a day. Furthermore, the dataset is pretty large, so a fast disk subsystem is needed.

So I have a colocated server, which I’ve talked about before. It’s worked out pretty well until earlier this week when one of the 4 disks in the RAID died. Usually, when a disk in a RAID dies, the system should remain online and continue working (as long as you aren’t using RAID 0). In this situation, the server crashed though, and I was a bit puzzled as to why this occurred.

After doing some research, I found that the server most likely crashed because of an additional partition on the failed disk—a swap partition. When setting up the server, I configured swap across all four disks, with the hope that if I ever did go into swap a little bit it would be much faster than just killing a single disk with activity. The logic seemed good at the time, but looking back that was a really bad move. In the future, I’ll stick to having swap on just a single disk (probably the same one as the / partition) to reduce the chances of a system crash by 75%.

After getting a new disk overnighted from Newegg, I replaced the failed mechanism and added it back into the RAID, so the system is back up and running again.

This brings up the question of how likely something like this will happen in the future. The server is about 2 and a half years old, so disk failures happening at this age is reasonable, especially considering the substantial load on the disks on this server (blinky lights, all day long). At this point, I’m thinking of just replacing the other 3 disks. That way, I will have scheduled downtime instead of unexpected downtime. With the constantly dropping cost of storage, I’ll be able to replace the 300Gb disks with 750Gb models. It’s not that I actually need the extra space (the current 300s are only about half full), but I need at least 4 mechanisms to get acceptable database performance.

In the future, I will probably look toward getting hot-swappable storage. I’ve had to replace 2 disks now since I built the server, and to have the option of just sliding one disk out and replacing it with a new drive without taking the server offline is very appealing.

Catchup

May 23rd, 2008

Wow, I think this is the first time I’ve opened MarsEdit in months. Looks like my last post was back in February, so I figure an update here is long overdue. I don’t have any particular topic to talk about today, so this post will be a catchup of everything happening here in the past 3 months.

The biggest change has been a new consulting gig I picked up back in March. Clint posted on Twitter about a contract position for an iPhone developer on the Ars Technica Job Board. The kicker is that the job was to code a weather application. I had been curious about iPhone coding, but didn’t have time in my development schedule to fit another pet project. On the other hand, if I could learn iPhone development while getting paid, I could definitely shift some projects around. Being a weather app, this job matchup was too good to pass up; so I sent in my resume one morning back in March. That afternoon, the company got in touch with me for an interview, and the following week I flew out to their headquarters to get up to speed on the project.

The development cycle for this app was pretty quick. With the first deadline of a working demo only 3 weeks from the day I started, I really booked it and started pumping out code. My life was pretty much coding, from time I woke up until going to bed. A rough, but fairly good demo was completed, with 10k lines of code in those first 3 weeks. I had about a week off, which incidentally was the same week of my 30th birthday. It was great to take a little bit of time off, party with some friends, and enjoy life.

Then the second stage of the project kicked in, which needed to be completed in only 2 more weeks time. The second stage was definitely slower, so I was able to sleep a little bit more, and see Katrina from time to time. :-) The resulting stage 2 app was pretty polished. The company I’m working with has a few contacts at Apple, so they arranged to demo it in Cupertino. That was a couple of weeks ago and from what I heard, the demo went pretty well. All the work definitely paid off. You should be seeing this product hit the market some time this summer. I’ll definitely post more about this when the time comes.

Our Moke After all that work and Katrina’s semester coming to a close, we decided to take off on a vacation. We found a great deal on airfare and hotel down to Barbados, so we decided to jump on it. We spent last week on the south coast of the island soaking up the sun, learning the culture, having a blast driving around in our little moke (see photo), and just getting some good R&R. There’s not a ton of stuff to do on the island, but definitely enough to keep you occupied for a week or two. We toured one of the 14 Concorde jets in existence, visited some caves, walked a historical museum, snorkled with some sea turtles, and enjoyed some excellent food.

With a constant 15 mph trade wind, the surf on Barbados was better than any other Caribbean island I’ve visited. Furthermore, our hotel room opened up onto the beach, so I was able to walk about 50 feet from our patio and paddle out to bodyboard. Needless to say, several surf sessions took place that week.

With summer finally finding it’s way to central Michigan, the mountain biking season has now begun. Bodyboard being a fairly difficult activity in Michigan, mountain biking has become my main form of exercise. For the past 10 years, I’ve been riding a Trek hardtail. I’ve put over 3000 miles on it, and the gears are almost completely shot. So I was posed with a decision of either spending a couple hundred bucks on a new set of cogs, bearings, and a chain, or breaking down and purchasing a whole new bike.

I had been looking at getting a full suspension bike for the past few years, so I started visiting bike shops around here to ride some different models. I had hit every bike shop in a 30 mile radius, without any luck. Finally, while we were down in Lansing for the day, I checked a few bike shops down there and found my new ride. Of course the bike shop didn’t have the right frame size, so I had to order it.

New Bike

A week later, it arrived, and I picked it up the day after we got back from Barbados. So far, I love it. It’s a Trek Fuel EX 5.5 complete with disc brakes, 3-5 inches of adjustable travel in front, and 5 inches of travel in back. Clipless pedals were not included so I swapped mine out from the old bike. I also added a seat pack (with tools to fix a flat and a few other necessities) and installed a new speedometer. My previous bike was so old, that even with the full suspension upgrade and a much beefier frame, this bike is lighter than my last. This weekend will be the first time I take it on the trail…definitely looking forward to it.

Looking toward the summer, I’ll be headed out to WWDC in San Francisco next month. A lot of good parties are starting to fall into place, so it should be a fun week. After that, we’re heading over to camp in Yosemite for a few days before coming home and spending the rest of the summer here working.

CFNetwork Versions

February 25th, 2008

Sometimes it’s important to know what version of Mac OS X your users are running, especially when making decisions on what versions of OS X to support in future software releases. In the case of Seasonality 2.0, I have decided to take advantage of all the developer changes in Leopard, both to make Seasonality a better application, and to shorten my development time (thus giving me more time to work on additional features).

Previously, I haven’t performed any OS statistics on user data. It would be easy to do, since Seasonality downloads forecast and image data from a web server here at Gaucho Software, but I haven’t written the code required. However, some of these Seasonality data requests are using the typical CFNetwork methods of downloading data, and these connections provide the current CFNetwork version in the HTTP UserAgent, and thus will show up in my web server logs.

The problem is that I have been unable to find any kind mapping between CFNetwork versions and the corresponding version of Mac OS X. I decided to take it upon myself to generate (and hopefully maintain) such a list here. Most of this data is from viewing the Darwin source code on Apple’s web site, but some of these are just from personal observations, and some are educated guesses (marked with a question mark).

HTTP UserAgent   Version of Mac OS X
CFNetwork/339.5   Mac OS X 10.5.5
CFNetwork/330.4   Mac OS X 10.5.4
CFNetwork/330   Mac OS X 10.5.3
CFNetwork/221.5   Mac OS X 10.5.2
CFNetwork/221.2   Mac OS X 10.5.2 Developer Seed?
CFNetwork/220   Mac OS X 10.5.1?
CFNetwork/217   Mac OS X 10.5?
 
CFNetwork/129.22   Mac OS X 10.4.11
CFNetwork/129.20   Mac OS X 10.4.9 - 10.4.10
CFNetwork/129.18   Mac OS X 10.4.8
CFNetwork/129.16   Mac OS X 10.4.7
CFNetwork/129.13   Mac OS X 10.4.6
CFNetwork/129.10   Mac OS X 10.4.4 - 10.4.5 (Intel)
CFNetwork/129.9   Mac OS X 10.4.4 - 10.4.5 (PPC)
CFNetwork/129.5   Mac OS X 10.4.3
CFNetwork/128.2   Mac OS X 10.4.2
CFNetwork/128   Mac OS X 10.4.0 - 10.4.1
 
CFNetwork/4.0   Mac OS X 10.3 or earlier

Signs that Apple is Becoming a Big Evil Corporation

January 21st, 2008

Over the past few years it seems that Apple is slowly selling its soul. It’s a bit unsettling, as many people look to Apple as an example of a virtuous company. That’s how it started anyway, just two guys in a garage designing cool computers. Now it seems with every record quarter, new kick-ass product, and innovation made in media, Apple sells itself out. Before I continue down this road, let me make it perfectly clear that I still think Apple has it’s virtues. Apple products are top-notch, and I’m happy the Mac market share is expanding at the rate it is, simply because more Mac users means more potential Seasonality users. The Mac platform is a good place to be right now. So before you send me that hate mail, just remember that I’m telling it as I see it, and this is how I’m seeing it.

What does it mean to become a big, evil corporation? To me a big, evil corporation is one that is driven completely by profits, does not care what it sells, just that consumers buy it, and doesn’t care what it does to produce the products it sells. Actually, it pretty much is against everything that Apple stands for: free ideas, thinking different, and building tools that innovate to help you innovate. Imagine a bright, shiny, chrome shield of virtue; Apple’s coat of arms if you will. Here are a few things I’ve noticed keeping that shield from being shiny and new.

The iTMS

I spent some time thinking back to where it all started, and the best turning point I could think of was the introduction of the iTunes Music Store. I still remember the day this store opened. I remember downloading a fresh version of iTunes, and checking out the hip store that was so easy to shop at. 1-click shopping to purchase any of thousands of songs. Sure there was DRM, but there had to be or else none of the music companies would go for it. “Apple did good though! Only $0.99 a song, and you can play it on 5 devices, AND burn it to a CD!” DRM was certainly a bullet Apple had to bite, otherwise the iTMS would never exist as it does today. However, Apple as a corporation is about free thinking, selling products that you can use for endless innovation. DRM is most certainly against those ideals, being practically invented for the music and movie industries, which are the epitomes of big, evil business… Chink.

.Mac

Remember when .Mac came out and they weren’t charging for it? “Really, it was free?” Yep. Does it make sense for this service to be free today? Maybe not. There are certainly a lot of people who take advantage of .Mac, and someone has to pay for all that bandwidth and server hardware. It’s not really Apple’s responsibility to provide such a service for no cost to all Mac OS X users. So what’s my dig with .Mac? What I don’t like about it is how many features in Mac OS X and iLife especially are completely crippled for users who don’t subscribe. Why can’t I use any online-accessible directory as an export location for iWeb or iPhoto galleries? To add insult to injury, Apple really puts pressure on developers to make use of .Mac in their software applications. Really then, it’s developers who sell .Mac for Apple. Want to sync X, Y, and Z apps with each other? Sorry you can’t do that unless you have a .Mac account…

The fact of the matter is, I wouldn’t even mind paying for .Mac if it was competitive in the hosting industry. For $100/year, you’re getting a paltry amount of online disk space (this was made somewhat better recently), a couple of email accounts, and some web space with a small helping of bandwidth. Compare to Google, who gives away disk space, email, and shared documents for free. .Mac is just another hook Apple uses to get more recurring money from customers, instead of being a solid innovation in the online sharing community like it should be. Sounds big evil corporationy to me… Chink.

“Because of Accounting…”

It seems we are seeing these paid hardware unlocks from Apple much more frequently. First, last year with MacBook Pros and 802.11n, and now with the recent iPod touch update. It’s blamed on some accounting rules, but really, since when can a company not decide to give something away for free? Why can only products sold on a subscription basis be given free feature updates? Is Leopard a subscription-based product? In the case of the MacBook Pro, the network card was already there, but you had to pay an extra $2 to use it at that speed. Why? Why can’t the users who bought those machines just find out their laptops are even more awesome than before? $2 is a pain in the butt. Katrina has one of these laptops, and we just never paid: not because of the money or the principle of the thing (the latter of which is certainly a valid reason to avoid a product for us), but because it was just another line-item on our todo list that gets lost below all the other important stuff.

Now the big rage is this iPod touch update. 5 new apps for the iPod touch, only $20…what a deal!</sarcasm> Actually, it is a deal. Those 5 apps make the iPod touch twice as useful as it was before, useful enough that I bought one yesterday to replace my Dell PDA. Now I’m in the software industry, so I understand that paid updates are important. You can’t just give away free updates forever, because you have to pay for that continued development. Furthermore, when current iPod touch users purchased their devices, they paid for the current features, so it was worth it to them at the time. If the iPod touch didn’t fit your needs before, then why’d you buy it to begin with?

On the other hand, these 5 applications have been on the iPhone for quite some time. They aren’t really new developments (though there are some new features in each of the apps), and the touch only came out back in September. If someone just bought a product from you less than 6 months ago, you shouldn’t be sticking them with an upgrade fee. Apple screwed up by crippling the iPod touch from the start “to protect iPhone sales,” they should be biting the bullet. It’s just a collection of bits anyway, nothing physical that would actually cost Apple money to offer.

Admittedly, this brings up a tricky topic: upgrade fees. Now since I just bought an iPod touch, if Apple decides a year from now to release and charge for a big software update, how will I feel? Actually, that would be completely fine by me. In fact, I’d be happy if they were still upgrading the software on my device after a year. So where do you draw the line? Somewhere between 5 and 12 months I think. Seriously though, Apple here is releasing software version 1.1.3… This is a point release, what most of the industry would consider a bug-fix. To charge for a point release is absurd, so at the very least, the iPhone/iPod touch development team needs to get their version numbering in check.

Upgrade fees are a fact of life, but these few select examples rub me the wrong way. I’ll be the first in line to buy a new version of OS X every year, but even noting that Apple has to point the finger at “accounting” is kind of a clue the company is going evil. Chink.

iPhone nonSDK

Just over a year ago, Apple dropped the bombshell that it’s new iPod phone would be running a “stripped down version of OS X.” I couldn’t believe it… I thought OS X was just too big for an embedded device, and I’m glad I was proven wrong. That means developing for the iPhone wouldn’t be much different than developing for the Mac. Awesome. Until developers asked Apple how we could go about writing software for the iPhone. Their answer: web apps… Great.

Now to give Apple credit, an SDK is expected sometime next month, and I’m anxiously awaiting such an SDK, but they didn’t get it right from the start. The iPhone is an iPod, but it’s a lot more than that…it’s a mobile device, and developers expect to be able to write software for mobile devices. Actually, development of new software for mobile devices really drives the platforms forward. Not having this is a slap in the face, almost as big as DRM. I’m just hoping they get it right the second time around. It would be a shame if they place too many restrictions or force developers to get “approval” to write apps for the platform. The verdict is still out on this one, but it still strikes me as a big evil company lock-out. Chink (but you might be able to buff this one out).

Time Capsule

To wrap up my argument, I present the new Time Capsule announcement. If you’re unfamiliar, Time Capsule is basically a networked attached Mac hard drive, a NAS. Apple is marketing it as a Time Machine backup device, a hard drive any of the Macs on your network can use to backup files to. It’s certainly a product that Apple should produce, and it really seems like something they could do a nice job with. So what’s the problem?

For this one, you need a little bit of background. You see, when Time Machine was originally announced at WWDC 2006 (!), Apple claimed that backing up over a network would be supported. To me, this was it. I like running servers, and setting a Time Machine server sounded like a nice idea to me. Even better, last year the NAS market took off, and I ended up purchasing a 1TB NAS from Micronet, expecting to have no problem backing up over Samba, NFS, or whatever other network protocol Mac OS X supported (webdav?). Fast-forward to October 2007 when Leopard was released, and what do we get? You can backup over the network to a Mac running OS X Leopard Server, and that’s it.

So now you have all these NAS devices on the market, and none of them work with Time Machine, without the use of an unsupported hack. Supposedly, Time Machine requires backup to an HFS+ formatted device for it’s hard-link support. Well, my NAS is formatted ext3, which also supports hard-links. And why can’t Time Machine fall back to using a device without hard-link support and just take more disk space by writing more than one copy of the files? Or perhaps it would even be useful for users to have just a single backup copy of their files to a device that doesn’t fully support incremental backups with hard-links. It begs the question, was Time Machine built to truly bring backup to Mac OS X users at large, or was it designed into OS X to sell the upcoming Time Capsules? Chink.

Of the Coat of Arms

So our new Apple coat of arms is a little more battered than when it started. These are definitely areas that need improvement. Am I optimistic we’ll see these issues resolved? I try to be, but when the frequency of these events is increasing, it’s difficult to look at it with a positive note. Maybe it doesn’t matter… Apple still designs a lot of cool products, maybe that’s enough. This is true to some extent, as long as Apple continues to sell it’s products, it will continue to survive as a corporation, and we’ll still be Mac users. The drawback I think comes to customer loyalty. Apple is known as one of the strongest brands worldwide, simply because of their customer loyalty. Practices such as the above that step on their customers are sure to lessen their brand loyalty though. I won’t purchase or design products that use .Mac simply because I see it as a way Apple locks users into that service. I had no interest in purchasing the iPhone/iPod touch until it was announced I could write apps for it, and the verdict of whether that was a waste of my money is still out on that one. Steve Jobs noted 2007 as a great year in Apple history (indeed), and how much has happened in 2008 already. I sincerely hope I don’t have any more chinks to add to this list next January…

Indie Marketing @ Macworld

January 3rd, 2008

Macworld Expo San Francisco is one of the largest, if not the largest, Mac user event of the year. For an indie Mac developer, if there is one conference (other than WWDC) that should be attended, this is it. So why haven’t I attended in previous years? I asked myself that same question last year after hearing about all the indie get-togethers and bar nights.

The Good Ol’ Days

The last time I attended Macworld Expo was back in 2001, just after I graduated from UCSB and before starting a job in Tucson, AZ. A lot has changed in my career in these past 7 years. For one, 7 years ago I hadn’t yet developed any software for the Mac platform. Though I was an avid Mac user, at that time I was programming mostly for Unix, and occasionally on Windows (against my will).

But that was years ago…I started programming for Mac OS X in 2002, so the question remains, why haven’t I been attending Macworld? I think it may have something to do with the conditions of which I have attended Macworld in the past. You see, the first year I attended Macworld Expo was back in 1990. The Mac IIfx was the big new machine at the time, and with the costs of such a machine nearing $10,000, only a few companies had that kind of hardware at their booth. Mac IIcx and IIci’s were more common, as was the Mac Portable—which was new at the time. I attended Macworld every year after that until 1997, when it didn’t make sense to take time off from classes at UCSB to do so. To me, attending the expo was a fun event; almost like going to an amusement park. Yeah…I was most definitely a Mac geek.

Perspective

The thing is, I never saw Macworld as a business event…it was strictly for fun. And now that I’m living in Michigan, it didn’t make sense to spend the money to attend a “fun” event. It wasn’t until I started talking to other developers who had attended the conference that I realized just how much I was missing by not attending.

Will I have a booth? No. How about one of those ADC developer kiosks? Nope. Why not? Well, this year I just want to re-learn the ropes of the conference. Paul Kafasis has written a nice series of articles on exhibiting at Macworld, but it’s been such a long time, I really want to get a recent perspective on what the conference is like before plunking down $10k to become an exhibitor. So this year, Gaucho Software will be at Macworld as a Quasi-Exhibitor.

What does this mean? Well, it means that I’ll have a lot of similar materials as a company exhibiting would, except for the actual 10×10 foot real-estate on the show floor. First, I designed a different Seasonality t-shirt for each day on the show floor and had Zazzle print them up. Second, I designed a flyer and ordered 1000 copies from SharpDots. Finally, I put in an order through PensXpress for 200 Seasonality pens to give away at the show. Let me elaborate a bit to explain my reasoning for each of these…

1. T-Shirts

I started designing and ordering the first Gaucho Software T-Shirts about 18 months ago for WWDC 2006. Thanks to outfits like Zazzle and CafePress, it’s now easy to print a custom design on a t-shirt of pretty much any color and style. At the time, I just threw the words Gaucho Software across the front and a big logo across the back. It was beneficial to wear at developer conferences like WWDC and C4, because it would give people a better idea of who I was before actually meeting them. Did it increase sales? No…but that’s okay, it was cool to have the shirts all the same.

For WWDC 2007, I designed a t-shirt highlighting Seasonality and I wore it on a day when there was an event at the SF Apple Store in the evening. Surprisingly enough, I found a nice little spike in sales during the day or two after wearing that shirt. Hey, if that one t-shirt helped sales, wearing a different Seasonality shirt each day of Macworld should help too…

2. Flyers

The decision to design a flyer to hand out at the show was easy, but going through the details of actually designing it was much more difficult. First, I had to choose a size. I decided to go with a half-sheet, or 8.5×5.5 inches. I chose this size because I didn’t want the flyer to get lost in the shuffle. I remember getting tens, even hundreds, of flyers every day I attended in previous years. A full page flyer would require a lot of content, and would be more difficult to hand out to people. Going with a size that is as wide as normal page but not as tall, will keep it from getting lost, but still make it easier to hand out.

The design was a bit tricky. I’m used to designing interfaces on-screen using the RGB colorspace. Designing for print is different. First, you have to deal with color limitation in the CMYK colorspace. Seasonality uses a lot of blues…which CMYK wreaked havoc upon. I had to choose a screenshot carefully to make sure it still looked good. Next, I had to deal with the print design being a fixed entity. Application (and to some extent, web) interfaces are dynamic. I needed to find a good way to portray information in a non-changing medium. Finally, I needed to make sure all the necessary information was on the flyer somewhere. I was pretty close to printing a design without any kind of URL to note where to purchase Seasonality. Incredible, yes… That would have made the flyers next to useless. I spent hours designing the flyer, and it took a second viewer only a few minutes to notice the lack of any kind of link. Moral of the story is, have someone check your work before shipping it off to print.

3. Pens

The pens I ordered was a last-minute idea that I think will be pretty cool. Macworld exhibitors usually give away some kind of trinket, and I thought it would be cool to do the same. Most trinkets aren’t often used after the conference ends, and I didn’t want to give someone a trinket they would just end up throwing out afterwards. A pen will hopefully remain useful for most attendees after the conference ends.

Another thing I didn’t want to do was skimp out, so I decided to go for a metal casing instead of plastic. Of course, some plastic pens are very nice, but you can’t tell that by looking at a picture on a website. I figured with a metal pen, it would at least have a decent weight and feel to it. At the same time, I didn’t want a pen that was too expensive either. There’s no way I would get enough sales to cover the costs of handing out pens at $10+ a piece. I ended up finding a nice metallic pen with laser engraving for $1 each at PensXpress. Their turn-around time was pretty quick, and I’m pleased with the results.

4. Profit?

After all this work, I’m not exactly sure what to expect at this point. Obviously, I hope I make enough in sales to pay for all of these materials and my trip costs, but it’s not so much the money I’m looking for here. What I would really like is increased mind-share. Thus far, all of my marketing has been directed towards Mac users who frequent news and download websites. There are certainly a lot of users who fit into this category, but what about users who don’t spend their free time online? I’m hoping to meet a lot of these other users at Macworld, and hopefully it will give me a chance to widen Seasonality’s audience.

If you’re planning to attend Macworld, be sure to look for the guy in the Seasonality shirt and stop to say hello… :-)