RSS-ing

I ebb and flow when it comes to RSS. Oh sure it’s great in a lot of ways, but I also found that because I can keep up with a zillion websites that I do… and it becomes a huge time sink out of my day. Addicted to information, I guess.

So I’ll use RSS, then go away for a while, then come back, then go away… and now I’m thinking about coming back again for my daily “catch up on everything I care about” -fare.  So as I plod my way through NetNewsWire I see how many feeds I need to manually massage to get back on track. I notice that just about every Blogspot-based blog needs a manual re-subscription to get things back on track. WordPress.com-hosted and sites hosted by individuals seem to still be working just fine.

Another reason I’m happy I avoided Blogspot. 🙂

The interesting thing? Most of the sites of true merit I checked manually anyways. As I sift through most of the other blogs and news sites I subscribe to… gosh… if there isn’t just a lot of noise to sort through. Much use of the “Mark Everything as Read” command.

Of course, my little blog here contributes to the mess…. be it signal or be it noise, you can decide for yourself.

How did we manage before Google?

I’ve been working on a new programming project that’s new in every way. It’s a new project, it involves new API’s, new platforms, new paradigms, new things to explore… just about everything with this project is new.

When I get stuck and wonder how to get something done, first I turn to documentation. The docs are useful but generally are straight API docs. I need more conceptual docs, I need more HOWTO docs. So I look for sample code, and while some code is linked to from the docs, it many times hasn’t been enough to satisfy my question. So I do what has become natural in this day and age: turn to Google. Within a few keystrokes and clicks, I tend to find what I’ve been looking for. I can implement a solution in my code, get back to work and get on with things. Progress is quite rapid, all things considered.

What did we used to do?

I recall having to walk down the hallway to talk to other engineers at the company and ask for their help. Working from home for the day job and then having my own side gig, I just don’t have that luxury any more. Oh sure there are people I can turn to when I need it via IM or email or phone, but the world is growing so diverse in languages, technologies, platforms, APIs, and then the depth of what’s within those areas that often I ask someone a question and their response is “never used that before… never did that before… I don’t know”. 😦   While that isn’t solely a problem of today, in the old days we’d then turn to things like Usenet newsgroups or ad-hoc mailing lists; today we’d use web forums and official mailing lists But no matter whether we walked down the hallway or posted online, those all took one thing: time. If you walked down the hall you had to keep asking until you found someone who had a clue about the problem set, then you’d talk at great length, you’d get sidetracked, and eventually get back to your desk and work. If you posted online, you had to wait for a response with netiquette saying you should give it at least a day or two for people to respond. That sort of lag time isn’t always acceptable.

Now with so much content being online and Google’s amazing search capabilities, it takes almost no time. Chances are your problem isn’t unique, thus someone has asked about it before. And if you’re lucky, someone has responded with a useful solution… and Google was there to index it. Just craft your search string well and hopefully you’ll dig up what you need and be back on track within a few minutes of typing, clicking, and reading. The only thing we need is for people to keep their data online: websites can’t go away, blogs can’t close up, else that knowledge and information goes with it.

I’m quite impressed with how much I’ve gotten done this past week. With everything so new and having to wrap my head around so many things it’d normally take me a few weeks to get done what I’ve accomplished this week. The immediacy of the giant collaborative network that is The Internet is becoming a more awesome thing and powerful tool each day.

Hard Drive Upgrade

It appears the hard drive upgrade for my MacBook Pro is mostly complete and successful.

I’ve had the stock hard drive in the machine and space was running tight. As a developer you can quickly fill up your hard drive with all sorts of things, especially artifacts from the compile process. Since the MacBook Pro still has a lot of life left, why not just upgrade the drive? Looking at Other World Computing‘s prices, I am amazed at how much you can get for so little money.

I settled on a Hitachi Travelstar 7K500, which is a 500 GB 7200 RPM drive. It’s one of the biggest and fastest 2.5″ hard drives you can get today. It’s not the fastest nor the biggest, but when I looked at all factors it ended up being the best all around. If this was going into a desktop machine I might be able to accept a little more vibration, a little more power consumption, a little more heat generation, but since this is a laptop, sorry, no.

The upgrade process was fairly smooth. I purchased the drive with OWC’s upgrade bundle, which includes their “On The Go” enclosure kit with the FireWire 800 interface. I thought it was also cool that their little upgrade toolkit was included. I didn’t really need most of the tools within it, but the nylon pry tool was useful. I installed the new drive into the enclosure, plugged it into the MacBook Pro, and used Disk Utility to format and partition the drive. I then used a Mac OS X 10.6 OS install DVD to reboot the machine (boot from the DVD). Once rebooted, I launched Disk Utility, selected a drive, selected the Restore panel and restored my internal drive (source) to the new external drive (destination). I let that run overnight.

Waking up this morning, I shut the machine down and went about taking the MacBook Pro apart. It’s actually pretty easy to do, so long as you have the right tools (e.g. anti-static wrist-strap). Plus, OWC makes a series of videos that show you exactly what to do. It’s mostly unscrewing a lot of little screws, the details once you get inside are where the videos helped most, but even then it’s pretty painless… just a matter of figuring out what to do.

So the old drive comes out, new drive goes in, reassemble the MacBook Pro, put the old drive into the external enclosure, and restart the machine. She started right back up, no fuss, no muss!

Performance? I can tell there’s an improvement. Going from a 5400 RPM to a 7200 RPM drive, plus whatever other advances are in the drive yeah, you can tell things are peppier. Any sort of read from disk is going faster, even just basic things like browsing in the Finder and listing the contents of a folder. I have noticed web browsing is faster, since web browsing can be very disk intensive as it reads to and writes from cache files. A good test will be later on when I start running Xcode and compiling, pushing real memory to the limits and involving a lot more virtual memory… how will swapping improve? I figure some, but just how much remains to be seen.

So far so good. There’s a lot of work still yet to be done, but that’s just a matter of time. I’m shifting around some files since I was able to make a better partitioning scheme. Spotlight is doing a full reindex and that’s going to take a while. I’ll suspend Time Machine backups during the day today and let it run overnight tonight since I’m sure it’ll have to do quite and extensive backup.

All in all, a good upgrade. Went smooth. More storage space. Better all around performance of the machine.

Now if I really wanted to see a performance upgrade, those solid state hard drives would be cool, but the price tag is scary! (OWC’s Mercury Extreme Pro SSD, 480 GB, $1579.99!!!). But OH the performance is wicked. 🙂

Updated: Now that I’ve been using it a bit longer, a few things to add.

It’s quiet. In fact, I think it’s quieter than my OEM drive (which was also a Hitachi). When I was working with the old drive in the external enclosure, I could hear it, clicking, whirring… not loud, but noticeable. But the new drive never made noise that I could hear above the rest of the din of whirring drives in my office.

Speaking of whirring, I don’t feel any vibration through the case of my MacBook. And maybe it’s just me, but it actually feels like there might be less. It’s hard to say. My body, specifically my left hand, is having a feeling of “something’s missing”. Like any vibration before was slight so the loss of it is barely noticeable. So maybe I’m imagining it, maybe I’m wanting to feel less vibration, but I can’t even say it’s vibration I am or am not feeling… just there’s a sense in my left hand (which rests over where the drive is located) that something is missing.

Heat generation doesn’t seem to be any different, at least that I’ve noticed so far. In terms of just what I feel through my hands on the machine, and smcFanControl’s temperature readout. That’s good.

Power consumption? Just have to wait and see. Not going to be using my battery any time soon.

The machine is still the machine. I can’t go faster than the CPU and video lets me go. But without question anything needing disk i/o is faster. Not some giant leap faster, but you can tell things are peppier.

I’m happy! All around good upgrade.

Upgrades and obsolescence

In years past, if a computer was 3 years old it was on the way out. For a computer to still be in service after 5 years was strange… that it was still being used was impressive, that such a relic could still be useful.

It was especially harsh in the Mac world. Whereas you may still see someone today using a Pentium with Windows 98 and being happy about it, you just don’t see many Centris or Performa or Quadra still in circulation, except perhaps in a hermetically sealed off elementary school. But even these days that’s rare since most of those can’t exist in the modern world of the Internet (especially with a need for Flash).

But something changed a few years ago. Apple changed to Intel processors, and Moore’s Law appears to have tapered off. My MacBook Pro is 4 years old and performs well-enough. Oh sure would I love to upgrade? Yes. But what would I gain for that? I’d lose a FireWire 400 port. I use a USB port. I lose the express slot (but big deal, I’ve rarely used these). I’d gain an SD card slot, but that’s of minimal use to me. I’d gain 802.11n wireless, but that’s not a huge deal since I’m mostly wired up and when I use wireless it’s just short bursts of network need and it’s fast enough as it is. Faster processor and graphics, but for the most part what I have works… it’s sufficient for email, web, IM, whatever… only compiling would be better but there my bottleneck is the hard drive. Gaining the nifty new multi-touch trackpad would be cool.  But really… for dropping a couple thousand dollars I’m not gaining a HUGE advantage over what I presently have. The biggest thing I’d really want is more RAM since I’ve maxxed out the capabilities in this machine but again due to compiling code you just can never have too little RAM.

The one other upgrade needed? Hard drive. The drive in here I’ve outgrown. I’ve ordered a Hitachi Travelstar 7K500 7200 RPM model from Other World Computing. That’s about the best I’ll get these days: 500 MB of storage on a faster 7200 RPM drive. That upgrade right there should help overall system performance. Yes there are some slightly faster drives, slightly larger drives, but the Travelstar seemed the best bet in terms of price, performance, capacity, low noise, low vibration, lower power consumption… to me it was more important to have a cooler, smoother, quieter, less battery draining drive than say a Western Digital Scorpio Black (whose performance benchmarks were wicked awesome). That upgrade should be here today, and I’ll be down for a while while I do the drive transfer.

But I just find it interesting that while this MacBook Pro is showing its age, it still churns along respectably well. I don’t feel a need to upgrade now because there isn’t the obsolescence there once was. Oh sure, within a couple of years I’m probably going to replace it, but it feels good to not have to plan for a new machine every few years.

Further Android impressions

Been reading the official Android developer documentation. The Notepad Tutorial is the most complex introductory step-by-step tutorial they offer. Going through it I can say a few things that I find pretty cool, mostly about Eclipse.

  • The “Organize Imports” command is awesome.
  • I like to type things out manually and format code my own way. So that the Eclipse IDE wants to format things its way, wants to code-complete, and keyboard shortcuts aren’t fully the same as true Mac editing? Well… it’s getting on my nerves. But I’m trying to remember that “ok, when I open a brace/bracket/parenthesis, it’ll close it automatically and also indent to the next level”. So I just have to try to stop typing so much.
  • When you get a compiler error, that it attempts to suggest fixes and you can just pick from the list? That’s kinda cool.
  • Bring up a contextual menu in source code, Source, Override/Implement Methods…and then you can just pick inherited methods to override and a template is inserted? That’s cool.
  • I don’t like how not-seemless all the work is. This is certainly where Apple has things down. You see, in the Apple world all parts of the toolchain work together. The language makes things go. To help the language make things go, the library provides a base NSObject that (almost) everything descends from, and also provides design patterns for everyone to follow. These patterns then are implemented by the tools, so things like Interface Builder allow you to just click and connect everything. The entire toolchain is integrated and supports the greater developer paradigm, so things are smooth. But here in this Android world? Not so much. There’s still a lot of manual hooking of things together, from the layout XML to the code to make everything go. But I will say, the trick with the generated “R” class is a pretty slick way to try to blend this all together. I just wish the editing process was a little more smooth.
  • I’m curious why Eclipse is sooooo slow with things like opening files. I mean, I’ve got an 8-core Intel Mac Pro with 10 GB of RAM. There shouldn’t be such pauses just to do simple operations like opening and closing files.

All in all, it seems that Eclipse strives to help you out as much as possible. I like that. Sometimes I wish it wasn’t so helpful, but I reckon that’s probably because I’m not used to it. The real test will be spending a long time in this world then switching back to say Xcode and seeing what I miss and then hate about Xcode lacking. 🙂

I went to the bookstore and got the Pro Android 2 book. Of the various “How to program Android” books out there right now, this seems like it has potential to be the best one, not only in terms of how the book itself is put together, but the breadth and depth of topics covered.

The more I work in this, the cooler it is. Yeah, I also see more of the rough and painful edges, but yeah.. this is neat.

I did realize one thing tho. I don’t like looking at Android. There’s a grace and elegance that Apple brings to everything it does. They care about the design down to the last pixel. Looking at Android GUI? It feels like I’m thrown back to 8-bit Atari games. Not really, but that’s the only analogue I can think of to describe it. It just doesn’t look as graceful nor sexy as iOS or anything Apple does.

Android – next steps

Now that I’ve gotten some introductory Android programming stuff done, the next step is diving deep into the developer documentation.

Still working my way through it all, but just reading through the Android Application Fundamentals and gosh… what a bunch of neat stuff. Or at least, so it seems here on paper.

How applications aren’t these monolithic things, but instead a collection of components. There is no main(). The notion of Activities, Services, Broadcast Receivers, and Content Providers. That’s pretty neat. Then how those Activities group together in a Task, how components across the system can work together, pushing and popping off the task stack. That level of modularity and integration is pretty cool. It’s like the whole system is a giant plug-in architecture of sorts.

iOS vs. Android – programmer first impressions

I did my first “Hello World” style Android app yesterday, and while it’s only a first impression I wanted to share my first impressions.

My background is that I’ve been a professional Mac software developer for about 15 years and a hobbiest Mac and Apple developer since I was a wee lad. I used to work at Metrowerks, makers of CodeWarrior, back in the day when CodeWarrior was “the thing” for Mac software development. So I’ve not only used developer tools, I’ve made them. That all said, I don’t have a lot of iOS experience from a developer perspective because I’ve only so much time in a day and just didn’t have time nor a job that required it. But that’s changing and so into the abyss I go. I say this because yes, my initial Android experience is going to be tainted by the world I’m coming from. I’m not saying the new world is bad, just different.

Java

Android uses the Java programming language. I haven’t touched Java in over a decade, and I know the language has evolved. First thing I did was pick up a book on the language. I bought Learn Java for Android Development by Jeff Friesen. The book has NOTHING to do with Android itself, it’s a pure language book. But I choose this book because the book is geared towards Android so it doesn’t waste time talking about matters irrelevant to Android, like AWT. I didn’t give the book a hard-read, nor did I bother with doing much of the exercises because I don’t feel I need it (famous last words?). I’ve used Java in the past, I’ve been programming for quite a while, and the book is geared towards someone who is starting from scratch. So talking about Generics? It’s akin to C++ templates so I just needed to get the details and differences. Container classes? Just give me an overview of what’s there, I don’t need to read 10 pages about all the various methods and what they do (that may come later for reference).

That all said, there’s a lot that’s changed in Java since I last really used it and I think a lot of the changes are good. Being able to “inline” a lot of things, nest classes, anonymous classes… it’s nice to just define your “callback” right there as you go along. It’s nice to have a language that’s more pure OO than C++ (Objective-C is pretty good at being true OO). It’s nice to see the library expanded, and things like Generics added. Yes there’s a lot of syntax I’ll have to get used to, but that’s how it is when you switch from one language you’ve used for years to one you haven’t. I should be alright.

But while the language is fine, the IDE is another story.

Eclipse

Oh…. I don’t like.

You see, every platform does things they way they do it because they believe they have something different and better. Mac OS X is one thing, Windows is another, Linux another… and everyone does their thing differently. Sure most of the core concepts are the same, but little details of interactions and how widgets work and the parts mesh vary. And Java apps seem to like to do things their own way, perhaps with a Windows-bias since many Java developers are Windows-based. Coming from the elegant world of the Mac user experience? Using Eclipse feels bizarre and klunky. I’m sure I’ll get used to it, but it still feels strange and like a step backwards in terms of human-computer interaction and experience.

One thing that really bugs me is I don’t like being forced into a tabbed single-window-only interface. I’m not that into tabbed interfaces, but I have come to appreciate when tabs are good and when they are not — for me. Apple’s really pushed a single-window mode of being on Mac OS X, and for the most part that’s alright. What I find I like is the ability to exist how I want to exist. Sometimes I want two windows because I need to arrange the content as I need to to do my work. Other times I want these “windows” to be grouped together and thus having the content in multiple tabs within the same window makes the most sense. I like options. If Eclipse allows me to escape this tabbed world, I haven’t found it yet.

Tools Install

You want to develop for the Mac? These days it’s pretty much Xcode. You download, you install, and off you go. All the apps you need, compilers, libraries, documentation, everything. It’s simple and rather painless.

To develop for Android? I had Eclipse installed from a prior thing I was working on, but now I had to get another version. So download that. Then I have to download the Android SDK and put that somewhere and tell Eclipse about it. Then I have to actually download and install all the API’s and tools for developing Android apps. Then more configuring. Finally, I can get going. What a pain. I don’t really blame anyone for this because the nature of the beast is so open, requires things from different vendors, and there’s a lot of flexible options. I do think options are good, but I also think there’s something to be said for providing a setup to get new folks started. It’s a high bar of entry, and I can only wonder how a total programming newbie would handle this. If Google could provide a “one click download and install” that gets you going, that’d be awesome. Sure it may provide more than is needed, it may bias towards one product or SDK or something, but get the n00b going, then once they grok the world they can sort things out and streamline later.

Nevertheless, things are going.

First App

A friend sent me this blog posting on writing your first Android app. I figured I’d give it a try before I went through all the Getting Started stuff at the Android Developer website. First, this blog posting was great because it gave better instructions on how to get the tools downloaded, installed, and configured. Thank you for that!

But as I worked through this, it helped me see how spoiled I am in the MacOSX/iOS world, especially with how integrated the developer toolchain is.

Designing the user interface. So, I have to hand-write XML? Holy crap… I thought we were in the 21st century! Oh sure there’s a little tool to work it, but it sounds like no one uses it and it’s very rudimentary. That everyone just prefers to edit the XML by hand. Man, that’s…. unacceptable in this day and age.

Then to hook your GUI into your code, you have to do all this manual labor in code to make it happen. Yes, I’m spoiled by the actions and outlets paradigms in Cocoa, where in my code I can just declare an IBAction or IBOutlet, then in Interface Builder just click and drag to hook everything up. It’s a small thing, but it’s there.

I do like Android Virtual Devices thing, where you can simulate any sort of device. That’s of course necessary, but it seemed to run a little smoother than the iPhone/iPad simulator.

As an aside, I got to learn about a cool prototyping/wireframing tool called balsamiq.  That app is way cool.

From here?

The first impression I’m left with? Android as a technology might be really advanced, but the developer experience is archaic. The toolset just feels really klunky, and I can see how spoiled I am with Apple’s tools.

That said, that’s the toolset and I will work with it. I’m sure I’ll get used to it and come to find things I love and things I hate. I’m still looking forward to delving deeper into the world of Android development. I’ve only begun and I’m sure my impressions will change, but first impressions are important and the impression I’ve been left with is one that desires more. Here’s hoping for the best.

Back to the Mac

Yesterday, Apple held an event to get “Back to the Mac”. You can watch the replay of the keynote here.

My impressions.

First, it’s evident from the growth of the product sales, the revenue, the units shipped… anyone that continues to say Apple is some niche just isn’t paying attention.

iLife ’11? I like it. You can tell this is a mature product suite. It’s not adding major new features but rather refining what it has to a high degree. It’s lots of little touches, little things to help make life easier. For instance, that your Flickr and Facebook albums are just a part of the iPhoto library so you have the same editing interface? Awesome! I’m considering buying iLife just for that, as I know Wife would appreciate it. I got a major kick out of the “trailers” feature in iMovie. They did a great job at making movie editing “for the rest of us”.

Lion. Mission Control makes sense because yes, they had all these things that were disconnected so it’s time to bring them all together. I’m not sure about LaunchPad, how really necessary it is, but I think it’s something I’d have to play with. I can see for less savvy users that it could be just the thing they need.

Of course, the big thing for me to watch is the App Store. This is a possible game-changer for Mac developers. You can read the store review guidelines here, but it’s behind an ADC login so I’m not sure how publicly I can discuss it. What I will say are the impressions and questions that came to mind when I was watching the keynote:

  • Apple controls the end-to-end experience, so I assume this means you can’t use your own registration/license scheme, nor your own installer (and probably have to create your install in a particular way). That makes sense, but it’s a bit of a pain for developers since now we’ll have two means by which our apps could be installed, two code paths, two different builds, two different things to have to support and test… it’s just more work on our end, but it stands to reason for the mechanism.
  • I figure this will benefit small developers, but how about big boys? For instance, will Microsoft sell Office? Will Adobe sell Photoshop?
  • Will we start to see competing app stores? It’s well-possible for them to exist, but then what sort of additional headache and nightmare will it be for developers?  Could we see the end of traditional sales channels?
  • What about non-applications? Like plug-ins?
  • The concern is, Apple’s store will become THE face of how you buy Mac software, thus if you don’t comply with them, you’re out of luck and will suffer. I’m concerned about Apple’s content restrictions, technical restrictions (e.g. non-app sales?), and so on.

But really, all we saw of Lion were some basic things. I’ll be more curious to hear about things at the developer-level, which I reckon will come with WWDC 2011.

Finally… there’s one more thing.

The new MacBook Air’s.

Impressive. That’s all I can say. Sure they are not uber-powerful (slower processor) and decked out (e.g. only 2 GB RAM) when compared to the traditional MacBook and MacBook Pro, but my word what they do offer. The small size, the light weight. You do get an amazing amount of stuff in a very small package. If I travelled often on business, lots of coach class flights, and had to get lots of work done on the road? I could see picking up one of the 11″ models to help me handle email and work on the road.

And at that price point and form factor? Gosh… if I had a few thou lying around, I’d pick up 3, one for each of my kids. Don’t have the money, but it was just that compelling. Granted, your basic MacBook gives you more for less money, but the Air is so cutting edge that yes… it tantalizes me. 🙂

The main point tho is to see Apple well.. getting back to Mac. Mac has always been Apple’s bread and butter, but for the past few years it’s been about iPod/iPhone/iPad, which I totally don’t blame them for. For me personally, I make my living making Mac OS X software, not iOS software, so at times I felt ignored. It wasn’t true, Apple has been continuing to update the OS and Mac, but it just hasn’t been the forefront… I skipped the past couple WWDC’s because they were all iOS focused. But the irony is my life is now shifting away from Mac, just as Apple is shifting back to it. It’s like fashion from the 80’s… retro is cool again, and so is Mac. 🙂

BWToolkit

BWToolkit is a library of code for Cocoa development.

Actually, it’s more than just a library of code. It comes with an Interface Builder (version 3) plugin that simplifies development and use of the framework. BWToolkit is open source under the generous BSD license, and you can obtain it as source code or you can obtain it as a nice “drop and play” package.

I’ve stumbled across BWToolkit a few times in my development work, but it wasn’t until recently that I could begin using it (seems to have a requirement of Mac OS X 10.5 as a minimum…. doesn’t state that explicitly, but you can see it in some of what it does plus examining the source code). In my use of it so far, it’s been really well done and a real joy to development. Having been an engineer of the PowerPlant C++ Mac application framework back in the day, I know what it can be like to write reusable code modules like this, and BWToolkit has a lot of spit and polish.

Some things I like about it:

  • Drop and play. Just download the distribution, install the IB plugin, ensure the framework is added to your project (link to it, copy it into your resulting bundle) and that’s it. So simple.
  • Use is very simple, because there’s no extra work. Just edit merrily away in Interface Builder.
  • It’s got a lot of those widgets that you commonly want to use but there’s nothing standard from the OS for you to use. Oh sure you could make the widgets, but BWToolkit makes things like the BWAnchoredButtonBar, BWAnchoredPopUpButton, BWUnanchoredButtonContainer and so on… it just helps round out those commonly used widgets so all you have to do in IB is just drag and drop and get on with your work.
  • I love the BWSheetController. I wish I had thought of that class! It’s so common to have a xib with a main window (e.g. document) and then you need to display a sheet on the window. To display the sheet, there’s a lot of infrastructure code you have to write every time, and it’s the same code over and over — perfect candidate for a reusable class to factor that out. With BWSheetController it’s even better because it’s just adding an instance of the controller to the xib, hooking up some outlets, and viola… functional sheet with just a few clicks. Wonderful!
  • Most of the classes are based upon Cocoa classes. For instance, BWSplitView is an NSSplitView, the button classes are typically just aggregates of other NSButton’s. It’s good to subclass where it makes sense, instead of fully recreating from scratch.
  • The use of the BSD license pretty much means there’s little reason NOT to use BWToolkit. It makes your life a lot easier, little restriction upon use, it’s free (beer and speech). What’s not to like?

Some things I don’t like:

  • I found a bug (BWSplitView’s show up in initial random locations if the host window’s “visible upon launch” setting is not on). I reported the bug via email but have received no reply from the author (it’s been long enough). Granted, it seems he’d prefer filing it in his bug tracking system, but I don’t have the cycles right now to do that so I wanted to at least email to ensure the bug didn’t slip through the cracks. So, I’m not sure how active the project is right now. *shrug*
  • There’s not much documentation. Granted, there’s enough to get you going, and eventually you can figure things out. But to make a well-rounded distribution, full documentation of the classes/widgets and an accompanying sample application that shows everything off would make for a better final product.
  • Some of where documentation would be very useful would be things like bottom bars…. you can do bottom bars now so, what’s the point of this class? What advantage does it provide? Or is it a holdover from long ago when the OS provided no means whatsoever? In which case, is the bottom bar class smart about the OS version? Again, one could figure it out from reading code, but formal documentation is better.

All in all, a nice little toolkit.

Steal my software? I’d prefer you didn’t, but…

As a software developer, I’ve dealt with the subject of piracy of my product long before it was hip for the RIAA and MPAA to demonstrate what dinosaurs they were with their business model.

What’s the bottom line?

Don’t treat your customers like criminals. Yes, you are going to have some loss to theft. But you only have so much time and energy, so how do you want to spend it? Fighting the people who spoil it? Or making the product better for everyone else?

Granted, with the rise of the Internet and a new “electronic-based” generation, the times have changed somewhat: digital piracy is easier because we’ve got more ways to share files, distribute files, and a whole generation that views things differently than us old folks. But in the end how a developer chooses to spend their time is still the developer’s choice.

I prefer to make better software.

Yes, I still think it’s worthwhile to put some restrictions and registrations in place. I still think some measure of anti-piracy prevention is necessary. If nothing else, it lets legitimate users know this software isn’t free and here’s an avenue through which they can properly obtain it. But it will always be an arms race between the good guys and the bad guys, and if you spend all your time fighting the pirates then you’ll spend none of your time making good and useful features — things that actually will sell your product and get people to use it.

Jeff Vogel is a games developer and he makes the case that yes, you should steal his software — to an extent.

Generally, I agree with him. Piracy is wrong and I won’t go out of my way to encourage it. I think Mr. Vogel rationalizes the behavior of pirates a little too much, but it’s refreshing to see developers trying to look at the situation from the other side.

And while I’m not sure his solution is truly the best solution, it’s an interesting one:

If you like PC games but you usually pirate them, I want you to start actually paying for one game a year. Just one. Please. You should do it because you need to do it to help something you like to continue to exist. Sure, you might find that doing the virtuous thing feels surprisingly good. But, in the end, you should do it for the reason anyone ever really does anything: Because it is in your best interests to do so.

In his bottom line, he’s right, and I’ve known this for years — especially when the whole Napster thing started. It is this point that folks need to be educated about and it is this point that needs to be driven home. After that, it’s up to the individual if they wish to continue to steal or not, and it’s their moral and ethical judgment call to make. There’s not much more we, as content producers, can do.

For you see, whether we make software, porn, music, movies, digital images, any sort of this media or anything other sort of product in this world… we do it because we like it. We do it because we’re good at it. And we do it because we need to make a living to feed, clothe, and house ourselves and our families. Consequently, we hope to get a return on our labor. The way our markets work, that means if you want our product, you buy it; you get our product, in exchange we get your money and can then use that money to buy food, clothing, shelter and whatever else we need or want in life. If we exert this effort to make a product or provide a service and this product/service does not make us any money (for whatever reason), we will not be able to spend our time on that product/service because it’s not being fruitful and we’ve got tummies to fill and backs to clothe. Thus, if there’s no return on the investment, then the investment will stop.

Why should you care if I can’t feed my family? Because if I can’t feed my family, then the thing I make that you love will disappear.

If you like the music I make but I’m unable to make it any more, no more new albums from me.

If you like the movies I make but they take weeks or months to make and I need to spend that time doing something else to pay my bills? Then I won’t be making any more movies for you to watch.

If the software I write is useful to you but you found a bug or the software is no longer compatible with your latest computer upgrade, don’t expect me to be able to fix and update my software unless I’ve got the time and money to do so.

In the end, if you like what I do and want to continue to enjoy what I do, you need to support what I do. If you support what I do, I can then continue to produce what it is that you find good, and we all live happily ever after. 🙂

So yes, there can be some interesting points about piracy, and it is a Sisyphean task to fight it. But only addressing symptoms will never make it stop nor even reduce it. Educating the consumer about how their theft only comes back to bite them and it’s in their own best interest to not steal, that’s what will truly help the cause.