Omni, designing for the iPad

The Omni Mouth: "I want to say that's sort of crazy, except our own CEO Ken Case created a terrifyingly accurate faux iPad using a 3D printer. It-well, it even has a little Omni logo on it. And a 30-pin dock connector. And... look, it's just very, very realistic and I'm a little worried about how much sleep everyone is getting, okay?" - I think I need a 3D printer. This is a great way to put together a UI, just move a bunch of paper around. I remember our UX team doing this at Visio. They'd do usability with pieces of paper. Great stuff.

Labels: , ,

Posted by Rob at 7:35 AM | 0 comments | Click here for a permalink to this entry.

Hockenberry on iPad

Craig Hockenberry: "What I find most interesting is the inclusion of the iWork applications. I suspect that we'll all benefit from working in Pages, Numbers and Keynote without the distractions of the web, Twitter or chat. And in the long run, we'll prefer it." - Short, but sweet, observation from a man that has embraced both the Mac and the iPhone as developer and user.

Labels: , , ,

Posted by Rob at 10:14 AM | 0 comments | Click here for a permalink to this entry.

Yes, the desktop is still king.

Daniel Jalkut: "It's an unfair fight. We know exactly what the web can do, and we have a good idea of what it plans to do, thanks to its (laudable) open standards. But none of us has any idea what the next iPad, iPhone, Wii, Xbox, TomTom, whatever, will do. Don't get me wrong: the web is excellent at innovating, but it innovates for publishing and social interaction. It doesn't innovate on desktop UI or device integration, the very areas where brilliant desktop applications shine. And it innovates, as I have already suggested, in the art of catching up." - I know the web is great for a lot of stuff, but the client/desktop is still king because it can completely embrace the environment in which it lives. The web experience has to live inside a lowest common denominator shell, the browser.

Labels: , , ,

Posted by Rob at 9:52 AM | 2 comments | Click here for a permalink to this entry.

Great iPhone SQLite tutorial

dBlog: "I see many people asking for SQLite tutorials around, and since I am using SQLite for the next part in the Advanced RSS Reader Tutorial, I thought I would write up a quick tutorial on using SQLite with the iPhone SDK." - Now, couple that tutorial with Gus Muller's FMDB and you're off and running.

Thanks guys!

And yes, I am aware of Core Data. I even have Marcus Zarra's Core Data book, just need time to dig into it. I'll definitely be using that down the road some time.

Yes, there's a Mac application in my future, I can smell it.

Labels: , , , , ,

Posted by Rob at 11:33 AM | 0 comments | Click here for a permalink to this entry.

Using Shrty

This simple example assumes a few things.
1) _shrty is a member variable.
2) shrtySvcWithName - We're creating a service instance that doesn't require a name or password. (E.G. IsGd)
3) self implements the ShrtyDelegateProtocol protocol.

First things first.
#import "Shrty.h"
Shrty.h will include everything you need to use Shrty.

Next you'll need to create a ShrtySvc instance. The code below illustrates how you may choose to do that. In this case we're passing the service name, Is.Gd, into a helper method to create our instance. There are constants defined in ShrtySvcConst.h for all the services supported by Shrty.

// Go create an instance of the IsGd service.
[self _createShrtyInstanceFromServiceName:kShrtyIsGdSvcName];
if (nil != _shrty)
{
NSString* urlToShorten = @"http://rob.crabapples.net/";

// Shorten the URL.
[_shrty shortenUrl:urlToShorten];
}
In the example above I've removed some code for brevity's sake. Another thing to note is use of the helper method _createShrtyInstanceFromServiceName, included below. This method is part of ShrtyAppController.m, you'll find it in the Shrty source, it's part of the test project.

- (void)_createShrtyInstanceFromServiceName:(NSString*)serviceName
{
[_shrty release];

_shrty = [ShrtySvc shrtySvcWithName:serviceName userName:nil userPassword:nil delegate:self];
}
If all goes as expected you should expect to receive a callback to your didReceiveShortenedURL method.

- (void) didReceiveShortenedURL:(NSString*)shortenedURL
resultCode:(NSString*)resultCode
{
if (nil == shortenedURL)
{
NSLog(@"GOT A NIL RESULT, DOH!");
}
else
{
NSLog(shortenedURL);
}
}
Then you can do with that URL what you please, post it to Twitter, or Facebook, or whatever.

Labels: , , ,

Posted by Rob at 12:45 PM | 0 comments | Click here for a permalink to this entry.

Sounds good to me

Matt Gemmell: "Ship a mac software product. Being a self-employed contractor is wonderful compared to being an employee, but being a software vendor has always been the goal. Three years from now I'd like to be self-sufficient with my own software, and the first step is to release a 1.0 product." - Matt has contributed some really great code to the Mac community. In fact his Open Source contributions inspired me to write some small, free, source code and give it to the Mac community.

Good luck Matt, we'll be looking for some cool stuff to come out of Instinctive Code.

Labels: , , , ,

Posted by Rob at 8:51 AM | 0 comments | Click here for a permalink to this entry.

Free Objective-C/Cocoa Code

Merry ChristmasI've been tinkering with some code off and on for a while, and thought I'd finally share it with the Mac Developer Community in hopes of getting some feedback as well as some users.

The project is called Shrty, short for "Shorty", and you can use it to shorten URL's in your Mac Desktop or iPhone application. The code is a work in progress, but I'm hoping folks will find it useful.

Shrty shorten currently supports bit.ly, j.mp, tr.im, ping.fm, and YOURLS based URL Shorteners. I have support for su.pr coming, the parsing required a bit more work and it's not quite finished.

Expand is not quite ready. I need to work on the parsing code for all of services.

The project basically contains a sample application that exercises Shrty, and the Shrty Library Code. The test application is nothing fancy, and in fact is pretty darned ugly, but if you decide to make use of the code I'm sure you'll make a great UI for it.

If you have any feedback please drop me a line, rob.fahrni@gmail.com. In the meantime, Merry Christmas!

Christmas Present Icon by Icon Drawer, www.icondrawer.com

Labels: , , , ,

Posted by Rob at 12:53 PM | 0 comments | Click here for a permalink to this entry.

Please, for the love of Pete, use version control

When I started my development career back in 1988 one of the best pieces of advice I've ever received came from a very small indie shop called Burton Systems Software. His advice was simple, "I don't care whose version control system you use, but you NEED to use one." Dave Burton, the proprietor of Burton Systems, makes his living writing a version control system called TLIB. Needless to say, we purchased TLIB, and the rest is history.

Duct Tape, fixer of all things!Look, if you're doing any type of development; web, desktop, or whatever, and it's text based and constantly changing, you NEED to use a version control system. There are plenty on the market. Everything from free to paid, and they all have their plusses and minuses.

My two cents

For my "money" I like Subversion, commonly referred to as SVN. The cool kids are using distributed version control systems, like Git, Mercurial and Bazarr, but in the end they're just another version control system. My take on Git is this, it's good if you're working with an open source project and exchanging patches, or working disconnected with your laptop. Beyond that I just don't see much advantage in these over existing systems. But, please feel free to leave comments, educate me.

Where do I keep this stuff?

Putting your work in the cloud. Ooooohhh, the buzzword of the year. Yes, you can of course keep this stuff wherever you'd like. A lot of companies with their own servers keep their source repositories on the corporate network.

There are other options of course. If you have someone hosting your domain chances are they have Subversion support, and if you don't mind wearing an administrator hat they're quite easy to manage.

The ultimate choice, of course, is to use a company that takes care of your repositories. If you have an open source project you can keep your code at Google, that's nice, and free. If you have a commercial product and don't mind spending a few bucks you can host your code on services like Beanstalk for Subversion repositories, or give GitHub a try if you're using Git. Both Beanstalk and Git have a nice pricing structure, that include free repositories with some restrictions.

Religious Wars

Version control is another one of those religious things in software development, so go compare the features, find one that works for you and use it. There's nothing worse than having a hard drive fail and seeing all your work disappear.

Labels: ,

Posted by Rob at 1:49 PM | 5 comments | Click here for a permalink to this entry.

Great job opportunity

Ned Batchelder: "We need someone who can jump into a project with both feet. If you don't know the technologies needed, you can learn them quickly with a minimum of fuss. Good overall engineering skills are a must, as well as a passion for delivering polished software even in demanding circumstances. We build and maintain outstanding software and experiences, and would like your help to continue to do so." - Ned's an all around good fella, and a great software engineer. The Tabblo team is doing some nifty stuff and if you're looking for a job this could be a great place to land.

The position is on site, but I'm not sure if the Tabblo team is still in Boston or if they've migrated to California? I'm going to guess they're still in Boston.

Labels: , ,

Posted by Rob at 12:52 PM | 0 comments | Click here for a permalink to this entry.

Weekend mode

Brent Simmons: "What I'd love to have is a "weekend mode" in my client. (Or it could even be a separate client.) The weekend mode would show me only mentions, direct messages, and items with links. However, the items-with-links would not include yfrog and similar links: if it's just a picture of someone's sushi or their wacky goldfish, I can skip it." - That's a good idea, just another type of filter for your Twitter stream.

Labels: , ,

Posted by Rob at 9:51 AM | 0 comments | Click here for a permalink to this entry.

Uhh, yeah, that sounds about right.

Michael Lopp (a.k.a. Rands In Repose): "It was end game. The time in the project where you pay for every single shortcut you've taken, for every specification you didn't write, and for all the warnings from engineers that you've ignored. All the data is grim. Bug arrival rates are skyrocketing while bug resolution rates are pathetic because, uh, well, engineers are still finishing features." - I think we'll be there again in a few months. Oh, wait, we're ALWAYS there... Go read the article, it's fun.

Labels: ,

Posted by Rob at 11:51 AM | 0 comments | Click here for a permalink to this entry.

Clearly I'm doing something wrong

Finger Gaming: "According to a report at VentureBeat, the six-member team at Backflip Games has earned more than $1.75 million from its iPhone apps in the company's first seven months of business. The team attributes its success to effective use of in-game advertising and cross-promotion." - I don't know what to say about that, other than, WOW!

Labels: , ,

Posted by Rob at 2:15 PM | 0 comments | Click here for a permalink to this entry.

Great Mac Software Companies

Old School Happy Mac.I was asked recently "If you could work for any Mac software development company, who would it be?"

Well, that's a really tough question. Here's a list of companies I have a ton of respect for. Some are small, mom and pop type shops, others are computing giants.

Here they are, in no particular order...There ya go! A list of great Mac development shops.

Labels: , ,

Posted by Rob at 4:01 PM | 1 comments | Click here for a permalink to this entry.

Shipping a 1.0 Mac App

Brent Simmons: "The idea behind the lecture was to talk about what makes a great Mac app. I took that as an excuse to talk about everything from work habits to UI to marketing. In other words, I threw in just about everything I know - which, it turns out, only takes about an hour to deliver. :)" - A whole lot of this is common sense, or knowledge you've already gained, if you've worked in the development world, but it is definitely worth revisiting because it's just too darned easy to forget. As developers it's easy to get caught up in adding one more thing to the mix, which can kill your 1.0 launch.

Great stuff, go take a look.

Thanks Brent!

Labels: , ,

Posted by Rob at 2:09 PM | 0 comments | Click here for a permalink to this entry.

Seasonal Look

Rob's 2009 Jack-O-LanternDan Wood's Mac Indie Marketing: "The idea was to get as many indie developers to insert a bit of code, and some artwork, into their application, and have it released before Halloween. Then, simultaneously, Snow Leopard users would notice that a lot of their apps - at least those that were from participating indie companies - had special Halloween icons." - I love this idea, and would participate no questions asked, if I had a Mac Application. It should be no surprise I'd participate, just look how my header graphic changes month by month. Not to mention how much I LOVE HALLOWEEN! Great stuff.

Labels: , , , , ,

Posted by Rob at 9:19 AM | 0 comments | Click here for a permalink to this entry.

Smart Phone Platforms

Robert Scoble: "He says on Windows Mobile and other phones it's getting downloaded far less often than that. Westergren told me if he were starting development today he'd build for the above three platforms and is seeing more growth in Android than the others, so he'd bias to iPhone and Android, if he had to make a choice of only two platforms to develop on. This is also what I'm hearing from many other developers." - Yep. I love me some iPhone development, so much so I wish I could find a way to do it full time. Having said that, Android is looking more and more like a solid number two, with the Palm Pre coming in at number three in my book.

My brother, who co-developed RxCalc, is dug in at Verizon for mobile service, and he's looking at Droid for his next phone. Not a bad choice.

Labels: , , , , ,

Posted by Rob at 9:46 AM | 0 comments | Click here for a permalink to this entry.

Facebook Scaling

Dare Obasanjo [via James Robertson]: "Haystack runs on commodity hardware (i.e. Dell Linux boxes with a terabyte SATA drives) and is a custom file system which keeps all file indexes in RAM to speed up lookups. Today Haystack is so optimal that it only takes one I/O operation to load a photo compared to 3 I/O operations for the previous optimized implementation and 10 I/O operations for the initial NFS based system. Haystack is so scalable that they once accidentally disabled their CDNs and Haystack served all photos on the site without breaking a sweat. The service was built by 3 developers in a couple of months. It will be Open Sourced in the near future." - Very darned cool post. The Facebook guys are really tearing it up. I know I've been critical of them in the past, believing them to be the next MySpace, but they've gone so far beyond anything before them.

A side note. I love Dare's soft sell at the end of the article, "If you're interested in working on or building systems similar to the ones described above for the 500 million users who utilize Windows Live services. Send me a resume, we're always looking for good developers."

Microsoft has lost its luster, I'm afraid. I don't know many, if any, people that have Microsoft on their places to work list. There are too many exciting startups, especially in the social space, to work for the "New version of the 80's IBM."

Labels: , , ,

Posted by Rob at 8:58 AM | 0 comments | Click here for a permalink to this entry.

How to kill a product

Ned Batchelder: "Tabblo is written on the Django framework, and therefore, in Python. Ever since we were acquired by Hewlett-Packard two and a half years ago, there's been a debate about whether we should start working in Java, a far more common implementation language within HP. These debates come and go, with varying degrees of seriousness." - Ned may be talking more about the debate they continuously have within HP but the bigger nastiness is how easy it would be for Tabblo to fail by doing a rewrite. Where's the benefit to the user? There's nothing wrong with Python and there are plenty of successful projects in Java. If HP needs to interop with Tabblo, they have web services, communicate with Tabblo using whatever makes sense to you. End of story.

Labels: , , , , ,

Posted by Rob at 10:05 AM | 0 comments | Click here for a permalink to this entry.

D&D, only $10,000.00

Jerry Fahrni: "I spent many hours playing D&D with paper, pencil and physical dice. I remember when I thought hi-tech was writing a small app that would randomly generate characters on my then new Commodore 64." - We used to have all kinds of fun playing D&D! We always made Jay(Jerry) the Dungeon Master, he hated it, but was very good at it. Those were good times, very good times. Pepsi, candy, friends, and lots of D&D. Mom used to have to step over the comatose bodies sprawled about the living room the day after. Anywho, I digress...

Go check out the video, it is VERY cool. Too bad a surface table is not affordable.

Labels: , , ,

Posted by Rob at 11:23 PM | 0 comments | Click here for a permalink to this entry.

iPhone developer gets out

MacWorld: "Second Gear's FitnessTrack and Emergency Information iPhone apps are dead...long live BitBQ's FitnessTrack and Emergency Information! Yes, Second Gear developer Justin Williams has sold his two apps to BitBQ's Patrick Burleson." - I'll hang in there myself, with hopes the App Store will improve based on developer and user feedback. It'll get better, it has to.

Labels: , ,

Posted by Rob at 9:23 PM | 0 comments | Click here for a permalink to this entry.

Custom URL shortening

I purchased a new domain a while back with the intent of creating my own URL shortening service.

I'm writing this now because I just noticed an entry, from Mr. Bob Kepford, on Twitter about setting up his own. It reminded me, I need to get this show on the road.

But what should I use? I've decided to go with Adjix. They have a very simple setup for creating your own custom shortening service by using Amazon S3 as the storage mechanism and they simply redirect from your URL, through Adjix, and off to the desired URL. Pretty sweet!

So, what do you need? Simple, Adjix has a weblog post to explain the entire thing. After you've read it, and configured your own service, read the next entry to complete the full setup.

Dave Winer, A.K.A. Dr. Bootstrap, was one of the first to do this, and it's working quite well for him.

Dave's own custom label shortening service, r2.ly, has been online and working for a while now.

Example r2.ly shortened URL.

I will be applying this to my own, white label, URL shortening service, soon, I hope.

Labels: , , ,

Posted by Rob at 11:36 AM | 0 comments | Click here for a permalink to this entry.

The Ramp Champ Story

The Ramp Champ Icon.Louie Mantia: "In December, we brainstormed ideas for what the different ramps should be and decided who would design them. We laid out plans for a bunch of ramps: a default ramp (which was transformed into Clown Town), the Icon Garden, Breakwater Bay, Space Swarm, Tiki Island, Ninja Attack, and Happy Place. Of course, I'd be lying if I said these didn't go through major revisions (and name changes) over the course of the design phases, but these were the final names based on the ideas we had in December." - The IconFactory is a class act, and I absolutely LOVE stories like this. It's fun to read about the history, and process, of any new product. Ramp Champ is an especially beautiful iPhone game, and I'd imagine one of the first to embrace In App Purchase.

If you want to have some fun the $1.99 price tag is worth the price of admission, especially if you love carnival games.

Get it on iTunes.

Labels: , , ,

Posted by Rob at 8:06 AM | 0 comments | Click here for a permalink to this entry.

VIM, on the Mac?

Emilio Cavazos: "Thanks to plugins, I was able to extend MacVim with most of the features that make TextMate such an amazing editor. I was also pleased that it looked like a mac app and not some hideous Linux port." - Your mileage may vary. At least the Linux crazies enthusiasts will have a familiar experience if they switch to the Mac. Having said that, this could be a great tool for the folks. Personally I'd probably choose BareBones BBEdit, but FREE is often good enough for most people.

For my HTML and CSS needs, which are pretty minor, I've been using Espresso and love it. There's also the very popular Coda from the fine folks at Panic.

For day-to-day development on the Mac it's hard to beat XCode.

Labels: ,

Posted by Rob at 9:37 AM | 2 comments | Click here for a permalink to this entry.

On iPhone Flash Apps

Louis Gerbarg: "On my iPhone 3G it runs really choppy, on my 3GS it runs acceptably, but it still isn't smooth. Given the OpenGL performance people have seen on the 3GS that is still pretty bad. I have not done any invasive tests by instrumenting the binary, that is just what I can get via basic usage. The sad thing is that there is no reason it has to have performance like this." - I'm sure we'll see it get better, but, since it is OpenGl it's going to chew on battery. I wouldn't use this for real applications, but it could be a great choice for games. Especially those "one off" games for movie and product promotions.

Labels: , , ,

Posted by Rob at 10:03 AM | 0 comments | Click here for a permalink to this entry.

Ruby on the Mac

Mac RubyMacRuby: "The new MacRuby 0.5 runtime is built upon LLVM, a compiler infrastructure also sponsored by Apple. Thanks to LLVM, MacRuby is able to transform the Ruby abstract syntax tree (AST) from the parser directly into highly optimized machine code. MacRuby supports both Just in Time (JIT) and Ahead of Time (AOT) compilation. The JIT mode will compile down the code at runtime, and the AOT mode will allow you to save on disk the compilation result. AOT compilation makes MacRuby a true Ruby compiler." - Hmmm, how long until we have full support in XCode for building compiled Ruby? Then, that begs the question, how long before we see native compilation of Ruby for the iPhone?

Labels: , , , ,

Posted by Rob at 2:28 PM | 0 comments | Click here for a permalink to this entry.

Great Job, if you live in New York

jobs.joelonsoftware.com : "Fog Creek is looking for top-notch developers with super awesome talent and the burning desire to get things done. We have a very successful core product (FogBugz), and we're coming out with two new products: StackExchange--the engine behind the enormously successful developer site StackOverflow--and another product we'll be revealing in a few months"

Labels: , ,

Posted by Rob at 7:33 AM | 0 comments | Click here for a permalink to this entry.

Developers cool towards iPhone

MacWorld [via @chockenberry]: "Even if your 99 cent application gets downloaded 10,000 times, after Apple's 30 percent cut that's just $7,000 in revenue-not profit, mind you, just revenue-and if you spent the last six months of your life working on that application, you better hope you're still working a day job if you want to cover living expenses." - I still believe there's a market for GREAT iPhone apps, but some may be cool on the idea. That's ok, I'll plod along, looking for a nice niche to settle into, but I can see some giving up all together. It can be discouraging to see your work go unused, or receive little return on your investment. Such is life. Find something you love and work at it. It may pay off, and if it doesn't you may find something positive to take from the experience. I know I have.

Labels: , ,

Posted by Rob at 1:59 PM | 0 comments | Click here for a permalink to this entry.

Freelance Development Pitfall

Run faster little hamster!Rob Walling: "My first reaction is that becoming a freelance developer (or starting your own consulting firm) can also be a lot less conducive to launching a product. Instead of being able to justify a somewhat fixed salaried workday, you find yourself working longer and longer hours as client demands increase. In addition, freelance development requires a lot more mental energy than being a salaried employee. Mental energy that can't be spent launching your product." - Just over a year ago I was ready to jump into the freelance world. My plan was to use freelance work to support my Mac development habit. Alas, after talking to a number of people, I heard the same thing over and over and over. One, I wasn't going to charge enough to make it work, two, you're ALWAYS on a treadmill. Either you're working long hours to satisfy client requests or you're out trying to hustle business. Now, I know some folks that are doing quite well. They keep their heads down and have a reputation for delivering, but they do work TONS of hours and it seems like it never ends. That's a huge challenge to overcome.

The best job in software is still the job that allows you to develop a product and "ship" it. It doesn't have to be on a shiny CD/DVD, it just needs to be "packaged" and available for purchase. If your product is decent it affords you the time to actually plan for the next version, put your head down, and deliver it. I like that model.

Labels: , ,

Posted by Rob at 8:46 AM | 2 comments | Click here for a permalink to this entry.

Duct tape and bailing wire

Duct Tape, fixer of all things!Joel Spolsky: "Jamie Zawinski is what I would call a duct-tape programmer. And I say that with a great deal of respect. He is the kind of programmer who is hard at work building the future, and making useful things so that people can do stuff. He is the guy you want on your team building go-carts, because he has two favorite tools: duct tape and WD-40." - Sometimes duct tape and bailing wire is enough to get the job done.

Labels: ,

Posted by Rob at 4:34 PM | 0 comments | Click here for a permalink to this entry.

Giving up on the iPhone?

Mike Ash: "What about my part? That part is pretty simple: I have abandoned the platform. Apple's nonsense is just too much for me. There's no joy in iPhone development, and an enormous amount of frustration. It's much more fun, not to mention profitable, to take whatever effort I would spend on iPhone development and spend it on Mac development instead." - While I'm not ready to abandon the platform I can certainly understand why Mike would abandon iPhone development. I myself like developing for the iPhone but would love to have the time to write a full fledged Mac application. I have many ideas, but they're much larger than the applications I can build for the iPhone/iPod Touch, thus, I keep working on the phone. Besides, it really is quite fun.

Labels: , , ,

Posted by Rob at 7:49 AM | 0 comments | Click here for a permalink to this entry.

Advantage MonoTouch?

MonoTouch: "We take Inteface Builder one step further than XCode does by making MonoTouch automatically bind any outlets you define on your interface and any methods that you define in your interface to your C# code." - Who'd have thunk Apple's own Interface Builder would be outdone by a bunch of hacks? Not me.

Labels: , ,

Posted by Rob at 10:40 AM | 0 comments | Click here for a permalink to this entry.

Mini on The Company Meeting

Mini-Microsoft: "Did he talk about how we're losing the edge on client development for Windows and how it's all a confused multi-SDK technology mess centered around everything being .NET based?" - Interesting take. When your own devs say your SDK offerings are a mess, well, that's a problem. As for .NET, it makes developing applications a whole heckuva lot easier. The runtime plus framework are brilliant; pick your favorite language and get busy, C#, VB.Net, Iron Ruby, Iron Python, [insert your favorite here.] Some would say "Hey, that's too confusing." Not really. Everything being equal from the runtime and frameworks perspective is really nice. They have great tools; UI creation is way easier in Windows than on the Mac, at least it is for me.

All that said, I'd rather spend my days writing Mac, or iPhone, software and beat my head against the Interface Builder wall than spend another day writing Windows applications.

Maybe someday I'll have that opportunity. For now, Windows, and to a lesser degree Linux, pays the bills. It's strange. Not that long ago I'd have considered working for Microsoft again, maybe. Now, now I don't think I'd consider it, unless it was on a pure Mac, or iPhone, application.

Labels: , , , , ,

Posted by Rob at 4:52 PM | 1 comments | Click here for a permalink to this entry.

A great little Objective-C Blocks example

Jonathan Dann: "Lets make our code more robust, we all like robust. Blocks are anonymous functions, we can write them in-line and the can capture variables from their enclosing scope." - A great little example of using Blocks in Objective-C, restoring state after a change to a Quartz context. Handy.

Labels: , ,

Posted by Rob at 9:26 AM | 0 comments | Click here for a permalink to this entry.

The Truth of a Vertical Market App in the App Store

I'm referring to my own experience as an Independent Apple iPhone Developer. Since RxCalc went into the store things have been slow for us, slow but steady. Please, don't take this as a complaint, I'm very proud of our little effort, and I feel that sense of pride when I talk to people about what my brother and I have done. It's our baby, even if it's not making us piles of cash, we're committed to supporting and nurturing it. It wont be left to whither on the vine. There's work to be done!

To date, by my calculations, we've sold 99 copies of RxCalc. Apple Core Labs has received our first check from Apple, it was a very exciting day! In fact, we're going to celebrate it. Yes, I believe in celebrating your victories, no matter how small.

Something I've come to realize about our chosen vertical market is it's very difficult to reach our target audience. It's very obvious Pharmacists aren't finding the RxCalc product page, or our weblog. After announcing that tomorrow (Labor Day) RxCalc would be completely free for one day I expected to not make a single sale, completely understandable, yet we sold a copy yesterday, yes, a single copy. So, it's very obvious our best vehicle thus far is the App Store itself. To that end I wonder if Apple would be open to adding a weblog like capability to the store so our announcements could be linked off the main product page, or brought to the surface a bit more easily, when potential customers land on the iTunes App Store page for RxCalc. Maybe a "News", or "Announcements", section on the page with a headline that announces current activity for the product?

Of course I leave it to Apple to help us because the App Store is a walled garden, they're in charge of their own, and our, "nightmare." I'm not unhappy with my overall experience, I'd just like to see it get better, and as a little guy just getting his feet wet, I can use all the help I can get.

Labels: , , , , ,

Posted by Rob at 11:18 AM | 0 comments | Click here for a permalink to this entry.

Nature as a development model?

Will Shipley: "The latter is the touchstone of great design: we must strive to make our programs require as little learning as possible on the user's part. Each little thing they have to learn about our program is another obstacle to them using it fully, another tiny chunk of enjoyment stripped from their experience." - I really like Will's take on heuristics. While we'd all rather have an algorithm solve the problem, like nature, we often find edge cases that fall outside the algorithm. I experience this each and every day at Pelco, where I work on our video viewing clients(A.K.A Decoding User Interfaces.) We just want the software to work for the guy watching the video so we have to do things to deal with different camera models, or deal with recorded video that changes recording quality mid-stream. Is it painful, why yes, yes it is, but the guy using the software doesn't have to know that. We just make it work.

Labels: , , , ,

Posted by Rob at 11:49 AM | 0 comments | Click here for a permalink to this entry.

Fresno Area Geeks Unite!

Robert Schultz: "I've been thinking about some ideas to help promote local developers and programmers here in Fresno and getting to know others. One idea I really liked and experienced once was Startup Drinks San Francisco, which was really fun. I was new to the city and I got to meet with lots of developers for some great startups based in the city. So why not here in Fresno?" - This sort of event is definitely needed. Since writing my Fresno, technology black hole post I've discovered a LOT of new Fresno based talent, especially in the web and design areas.

Now, all we need to do, is springboard that into a Visalia Geeks Dinner and Drinks!

Labels: , , , , , , ,

Posted by Rob at 7:59 AM | 0 comments | Click here for a permalink to this entry.

More App Store Developer Frustration

Stormy Productions Blog: "The second problem is the inconsistency of the review process. One app gets approved with feature set X and another with identical features gets rejected. For example, I submitted two apps on the same day. Both were radio apps for different radio stations and contained identical features. One app was approved after a week while the second app received the dreaded this app is "taking unexpected additional time for review" email. It's been over a month now and this second app still hasn't been approved. I even got the eventual call from Apple telling me I need to change a phrase in the app description and was also told once I did this the app would be all set. The other app that was approved contained this exact same phrase. In fact, both these apps were updates and have had the same descriptions since they were approved by Apple last Fall! So, I immediately changed the text Apple found offensive, and now several weeks have gone by and no word on the app being approved. All Apple is willing to say is "there is no additional information to share at this time"." - This is pretty frustrating. Read the whole thing to get an idea of what he's experiencing. We're cooking up a quick usability fix to RxCalc we'd like to publish, but how long will the review take? Hopefully not too long.

Labels: , ,

Posted by Rob at 9:16 AM | 0 comments | Click here for a permalink to this entry.

Open sourcing something

After reading Daniel Jalkut's excellent essay on Open Source software, I have a question.

Which of the liberal licenses are best for code that can be used in a commercial product as well as a GPL'd product?

Links to license particulars would be greatly appreciated. I'm currently looking at The BSD License.

Labels: ,

Posted by Rob at 8:58 AM | 4 comments | Click here for a permalink to this entry.

What's challenging in Cocoa?

Theocacao: "I sent out a general request on Twitter, asking what specifically the biggest obstacle was when you first started learning Cocoa. Out of the roughly 118 responses I got back, no one topic completely dominated." - If I'd responded to this I'd have said...

#1 Interface Builder
#2 Cocoa is big

Interface Builder had been the biggest hurdle for me, and Cocoa, like most frameworks I've switched between, takes some time to figure out. I really like the feel of Objective, but it's a bit strange looking the first time you see it.

Labels: , ,

Posted by Rob at 2:53 PM | 4 comments | Click here for a permalink to this entry.

Finding and fixing iPhone/Mac memory leaks

Ref CountMobile Orchard: "Some memory leaks are easy to see by looking at your code. Some are much more difficult. This is where Instruments comes in. Instruments has a 'Leaks' tool that will tell you exactly where you're leaking memory so that you can get in there and fix it!" - These are the types of tools every developer should learn. Hard as we try to write clean code we will, on occasion, forget to release a reference to an object and you get the dreaded memory leak. I must admit the Cocoa reference counting mechanism is a bit odd to an "old-school" Windows/COM developer, but I've learned to deal with the oddness.

Oh, there is a great tutorial for Windows COM guys to explore if they're coming over to Objective-C/Cocoa to help with the ref counting mechanism.

Labels: , , , , , , , ,

Posted by Rob at 1:39 PM | 0 comments | Click here for a permalink to this entry.

Great summary on Jalkut's GPL essay

John Gruber: "In some sense, Jalkut's essay could be considered a big "Duh" - a statement of the obvious. To wit: that GPL-licensed software projects discourage participation from developers working on anything other than other GPL-licensed software projects. That's pretty much the stated goal of the FSF. BSD-licensed projects encourage participation from developers working on just about anything." - It's not that Open Source is bad, it's just restrictive. Gruber's points are fantastic. I think there's a lot of FSF developers that see Open Sourced projects as free, but they see things from a different perspective. Open Source is socialism, BSD style licenses are more like a democracy. If I used a piece of Open Source software and found a bug, and was able to fix it, I'd be happy to give that back to the community. I wouldn't, however, build a business on top of it.

It's not bad, it's just not as open as people would like you to believe.

Labels: ,

Posted by Rob at 9:22 AM | 0 comments | Click here for a permalink to this entry.

Pharmacy, there's an app for that.

RxCalc IconApple Core Labs Blog: "Apple Core Labs first iPhone/iPod Touch application, RxCalc, is now available on the iPhone App Store." - It's been a long time coming. My brother and I knocked RxCalc out over the course of a few months; an hour, or two, at a time. It was a labor of love for both of us. Jay, or Jerry as most know him, has wanted this application for years, and I wanted to develop an iPhone/iPod Touch application. It was a perfect match! We'd started and stopped the idea of a pharmacokinetics calculator many times over the last six, or so, years on various platforms, but the iPhone was such a natural fit we had to see it through to completion this time.

Jerry provided the math, and workflow, I did the UI and wrote the code. It's worked out quite well.

So, here's to a long, and hopefully prosperous, run for RxCalc. We have so many ideas, the list is quite long now, and would definitely like to hear from anyone using it, good or bad.

Labels: , ,

Posted by Rob at 9:26 AM | 0 comments | Click here for a permalink to this entry.

The evil side of the GPL

Mr. Good LookinDaniel Jalkut: "Now for the most controversial point of this article, where I suggest that the GPL does more to harm collaborative development than it does to help it." - Developers beware. If you incorporate GPL'd code into your code base you could be in trouble. This is the evil side of the GPL. Proponents of the GPL like to talk about freedom, but it's not free, there's big cost, namely the distribution of your source code.

There are many different license types floating around out there. Pick the right one for your project so you don't end up in court.

Labels: ,

Posted by Rob at 7:57 AM | 0 comments | Click here for a permalink to this entry.

Mac Development Job

jobs.joelonsoftware.com: "We are looking for a software engineer who has a passion for creating innovative high quality software using the latest tools and technologies. You must be a self starter who loves solving problems in a logical self-disciplined manner. We are looking for someone who will fit well with our development team and remain courteous and friendly with both staff and customers at all times." - I also love the the following bullet points...


  • Want to work with the latest tools and a 30 inch screen?

  • Want to work for a company where innovation and software development is taken seriously?

  • Want flexible working hours and no silly dress code?

  • Want a career where what you achieve really matters?

  • Are you a clever problem solver with an enthusiastic and positive attitude?

  • Are you a self starter and still able to work in a team?

  • Can you get things done?

  • Labels: , , ,

    Posted by Rob at 3:53 PM | 0 comments | Click here for a permalink to this entry.

iPhone Dev Camp

Mike Sax: "Join me at iPhone DevCamp 3, July 31 - August 2 (yes, that's a weekend) on Yahoo Campus in Sunnyvale, CA." - I may have to go to this, since it's on a weekend. Hmmmm...

Labels: ,

Posted by Rob at 12:23 PM | 0 comments | Click here for a permalink to this entry.

Listen to your users

Nick Bradbury: "If you've never supported your own software, spending just one day doing tech support will be an eye-opening - not to mention humbling - experience. You'll have to keep your ego in check, because most people who contact tech support do so because they're having problems with your software, some of whom will use colorful language to describe the annoyances they're running into." - Nick is right, on all accounts. I did developer support for a couple of years at Visio and most of the time people called because they'd run across some edge case, or wanted something we plain didn't do. On rare occasion the language could become quite, as Nick puts it, colorful. In the end it helps you create a better product and keeps you interested in pleasing the people you really work for, the users of your product.

Labels: , ,

Posted by Rob at 2:26 PM | 0 comments | Click here for a permalink to this entry.

Common sense coding

Dan Wood: "Without further ado, here are some guidelines that I try to follow. Some of these, but not all, are directly related to issues that Clang has caught. (If you have any of your own to suggest, add them to the comments please!)" - A great set of rules that apply to not only Objective-C but coding in general. But, if you're new to Objective-C, or new to coding in a language that hands you a rope and allows you to place it around your neck, this article is for you.

I really, really, like Dan because at the top of the article he mentions "no K&R style bracing", a man after my own heart.

Labels: ,

Posted by Rob at 8:25 AM | 0 comments | Click here for a permalink to this entry.

Flex visited by a Smalltalker

James Robertson: "Flex development takes place using XML. I'm sure that some developer somewhere thought this was a good idea - but he needs to be taken out behind the woodshed, stat." - I had a rant about XML a little while back. James and I are in total agreement on this point.

Labels: , , , ,

Posted by Rob at 3:37 PM | 0 comments | Click here for a permalink to this entry.

iPhone icon viewer

Sebastiaan de With: "Composition is not an icon generator or designer in any way; it is made for people who care about the way their icons look, and want to get a break from the horrible workflow of mashing previews of icons together in Photoshop. There will be several easy-to-access Photoshop templates accessible from the app, but the actual design work is left to applications that are excellent at that kind of work. It will also be completely free!" - This will be an extremely handy application for designers and developers. When you create an icon for the iPhone, or Touch, you create a 57x57 pixel image with square corners and try to keep if fairly plain. The iPhone the rounds the corners and applies lighting across the top of the icon. It can be tough for a designer to visualize the final product and it's a pain to build the app and push the icon the iPhone Simulator just to see what the icon will look like.

This is a tool every iPhone developer, and designer, will want as a part of their toolbox.

Labels: , ,

Posted by Rob at 9:31 AM | 0 comments | Click here for a permalink to this entry.

Delphi on Mac OS X?

Allen Bauer: "I guess the proverbial cat is now out of the bag. As was shown in the Delphi/C++Builder roadmap at Delphi Live!, Project X has been under way for a while now. So now you know some of the reason why things have been rather quiet here since I could not really talk about what I'm working on. The good news is that we now have a returning top-shelf engineer working on the compiler. This person was heavily involved with the original Delphi on Linux project, so there is a lot of institutional knowledge that he's able to bring to the table." - I have a lurking interest in Delphi. The guys at Embarcadero, formerly CodeGear, formerly Borland, create great IDE's and developer tools. Here's hoping the embrace the Macintosh way and make it impossible for someone to tell an Objective-C/Cocoa application from a Delphi Mac OS X application.

The good thing is it opens the doors to more developers, the bad thing is is opens the doors to more developers. If developers coming from Windows bring all their Windows baggage along with them we'll get some pretty crummy Mac applications. If they embrace what the Mac development community has know all along they should do just fine.

What is it Mac developers do differently? They create elegant, useful, stable, simple, to-the-point, software. You see it time and again on the Macintosh and I've come to appreciate it. The application I use to post to this weblog is a prime example, MarsEdit is something I use everyday, and it fits all those qualities I've listed above. Most Windows applications have noisy UI's, just look at Microsoft Word, and you'll see what I'm talking about.

So, Embarcadero, please, please pay attention to the toolbox and make sure everything you do looks like belongs on the Macintosh!

Thanks

Labels: , , ,

Posted by Rob at 8:03 AM | 3 comments | Click here for a permalink to this entry.

Poor UI Design

The Daily WTF: "'I honestly think that Aquamacs could have tried a third row of buttons on this confirmation dialog,' notes Rowan Lewis" - Yikes! Hey, I just wanted to save the file. Thanks.

Labels: ,

Posted by Rob at 9:15 AM | 0 comments | Click here for a permalink to this entry.

Cross platform, a myth?

Marcus Cavanaugh: "Developing for multiple operating systems at once is like talking on a cell phone while driving: You can accomplish each task successfully, but you'll excel at neither. Unless you develop an application with a native GUI toolkit and relentlessly embrace native operating system conventions, you will achieve mediocre results. The more you disregard or abstract away your target platform, the more diluted your user experience becomes." - Yep, you make tradeoffs to achieve cross platform applications. I see it all the time, but that's just a part of the game. Often you have to go "lowest common denominator", like not taking complete advantage of the platform. An example that comes to mind, because we do video, would be choosing OpenGl over Direct3D on Windows, but I guess if it works and it's good enough, no harm, no foul, sort of. The thing is the users will notice, something will feel off. The example of Office on the Mac is a great one. It's busy. I've become accustomed to very trim user interfaces in most Mac applications, but Office is full of buttons, and you notice it.

Getting the user experience correct isn't an easy thing to do, when you do get it right you may never know, if you get it wrong the users scream to high heaven.

Labels: , ,

Posted by Rob at 11:03 AM | 2 comments | Click here for a permalink to this entry.

Web diagramming?

yUML [via Doug Finke]: "Create online UML diagrams in seconds from inside your blog posts, articles and documents." - I'd experimented with doing web based diagramming back in early 2002. This is an idea whose time has come, but not just for UML, for all kinds of connected diagrams. Flow charts, organization charts, data flow diagrams... the list goes on. The yUML guys use text to direct their diagram creation, back when I did my experiment I used OPML to create a hierarchal connected diagram because OMPL was a perfect fit for it. I used Visio, created a simple application to parse the OPML and turn it into something the Organization Chart Add-On could parse, executed Visio programatically, launched the Organization Chart Add-On programatically, generated the diagram, saved, and exited Visio. When I was thinking the web service through I figured the hardest part would be scaling of course, since I was using Visio to generate the drawings, but that's easy enough to work around.

This is great stuff, and I hope to see more in the future.

Labels: , ,

Posted by Rob at 8:54 AM | 0 comments | Click here for a permalink to this entry.

Windows 7 Graphics Performance

Engineering Windows 7: "Many have experienced scenarios where an application, or Windows itself, stops responding momentarily. This is type of a performance issue that can be impacted significantly by the performance of graphics in the PC. We categorize these as desktop responsiveness issues. Improving responsiveness, both in real terms and by avoiding non-responsive moments, is one of the key ways that performance is improved in the system. It is also hard to measure." - While I love my Mac, and wish I could write code for it daily, I make my living writing software for Windows and Linux. Windows 7 looks promising considering we have need to display live, and recorded, video from multiple sources, and do it quickly. In the security world folks demand, and expect, great performance. A 500 millisecond(1/2 a second) delay from the time the image is grabbed until it arrives at the display is TOO slow, now imagine having to do that for 16 streams simultaneously. Graphics performance is so important, even at the UI level, which is why these particular changes will be so welcome. For video we lean on the GPU, but the user interface relies on good old Windows GDI. Let's hope it works!

Labels: , ,

Posted by Rob at 7:35 AM | 0 comments | Click here for a permalink to this entry.

New world developers are lazy

Xee comments, [via Daring Fireball]: "Earlier, I tried to get a hold of the latest specs for the PSD file format. To do this, I had to apply to [Adobe] for permission to apply to them to have them consider sending me this sacred tome. This would have involved faxing them a copy of some document or other, probably signed in blood. I can only imagine that they make this process so difficult because they are intensely ashamed of having created this abomination. I was naturally not gullible enough to go through with this procedure, but if I had done so, I would have printed out every single page of the spec, and set them all on fire. Were it within my power, I would gather every single copy of those specs, and launch them on a spaceship directly into the sun." - I know the old formats can be tough to deal with, try cracking Visio's, it's very complex. This sounds like a case of someone coming into development from our very open gigabytes of ram and clear text file formats. I can't be sure of course, but that's how it sounds. Hey, there once was a time when performance was critical. Try doing everything you had to do in the 640k-1MB range. Heck, iPhone applications are bigger than that today! So at that time binary was king, set a bit here a bit there, be as efficient as possible.

I was just talking with a couple of folks at work about this yesterday. In software, like fashion in some ways, our trends run in circles. Does anyone remember Windows .INI files? They were clear text files divided by sections, each section could have one to many name/value pairs so you could find things by section and keyword. If you needed an array you could have a name/value pair point at a section that was the array. Pretty simple format, reminds me of JSON. Then the registry came into play. Similar idea, a bit richer, much harder to deal with as a user, not easily moved like a text file, but it became the de-facto standard for saving user and application settings. Then XML became all the rage. Now we're back to clear text, but it's not quite as friendly to parse, but it's great for moving data around in a standard way. Applications started using it for user settings and for their native file format? That seems a bit weird to me, but ok, folks seem to like it. Now JSON is becoming popular, and as I said above, it reminds me of our old .INI files. We seem to have come full circle in some ways. Before you know it a new kid will discover the virtues of binary file formats and we'll start the cycle all over again.

Labels:

Posted by Rob at 8:39 AM | 2 comments | Click here for a permalink to this entry.

Breaking on a memory allocation

I keep forgetting to write this down, so it's going on the good ole weblog for searching later.

If you have your code setup to do heap allocation tracking, _CTRDBG_LEAK_CHECK_DF and you'd like to break on a specific allocation, here's what you do once you've started debugging.

Add the following to the watch window.

_crtBreakAlloc

Set the value to the allocation you'd like to break on. Now, if you're using the multi-threaded DLL runtime you'll have to provide a better context to the debugger. Like this.

{,,msvcr90d.dll}_crtBreakAlloc

So, if I'd like to see who allocated a hunk of memory, they were the 1000th caller, and they didn't free said memory, set the value to 1000, and the debugger will stop on allocation 1000.

Handy, big time handy.

Article on MSDN with more details, How to: Set Breakpoints on a Memory Allocation Number.

Labels: , , , , , ,

Posted by Rob at 1:48 PM | 0 comments | Click here for a permalink to this entry.

Leave well enough alone

Brian H. Madsen: "A colleague of mine sent me this little snippet of gold yesterday - it had me laughing like a drunken seal so i figured i'd share it." - Every coder is tempted to "fix" things, sometimes it works, sometimes it doesn't. I'm guessing this is a case where it doesn't work to mess with the current implementation, even if it's not so pretty.

Labels: ,

Posted by Rob at 9:53 AM | 0 comments | Click here for a permalink to this entry.

View from a C++ noob

Armin Ronacher: "I just recently started using C++ for university (about two months ago) and still have a hard time accepting some of the weird syntax rules and semantics. For someone that mainly does Python development C++ feels very unnatural. In Python the syntax is clean and there are no ambiguities. C++ is drastically different in that regard. I know there are tons of resources on the net about C++ pitfalls already, but I thought I have to add my own for people switching to C++ with a background in Python and/or C." - I forgot how daunting C++ can be coming from another language. I struggled with C pointers for the longest time after coming from BASIC, then a dear friend said these words to me.

* means contents of
& means address of

That's all it took. From that day forward I could deal with pointers.

Python looks weird to me, especially the whole indentation thing.

Python is one of those languages high on my list of languages to learn, which also includes Ruby and Smalltalk. Objective-C wasn't on there, but I'm knee deep in it now. I believe Objective will be a good sprintboard to learning Smalltalk, either that or a hinderance.

Labels: , , , ,

Posted by Rob at 10:30 AM | 0 comments | Click here for a permalink to this entry.

Bootstraping iPhone Development

Craig Hockenberry: "There's no two ways about it. If you're going to develop iPhone applications, you're going to do it on a Mac. The whole toolchain is Mac-only: you can't do it in Visual Studio or Eclipse or anything else that runs on Windows" - More great advice. The idea of purchasing a Mac Mini is a great idea, if I do say so myself. It will get you on the road to developing and keep the costs down.

Labels: , ,

Posted by Rob at 9:55 AM | 0 comments | Click here for a permalink to this entry.

Great approach

Justin Williams: "I'm a big fan of foundation releases. In other words, release the bare minimum you possibly can to constitute a 1.0 and then let your users help decide the direction your application ships." - Let me add a bit to that statement. Ship a very solid 1.0 foundation release and let your users chime in. I just had this very conversation with a dear friend, and iPhone app developer. He's encouraging me to wrap up my 1.0 iPhone app and get it in the store. He's right, I need to finish up, and just "Ship it!"

Labels: ,

Posted by Rob at 9:34 AM | 0 comments | Click here for a permalink to this entry.

Great iPhone app advice

Double Encore, Inc. : "To determine price, you need to first figure out who your target market is. Hint: for most apps, your target market is probably not 'all iPhone users, everywhere.' Far too many apps are priced for volume on the App Store despite not having a larger enough target market. If your niche app can command $9.99 from those users or industries that would benefit from what you offer, why price your app at $0.99? All you are doing is reducing your chance of breaking even and turning a profit." - I have an iPhone app coming, really, it is, trust me. The thing I'm struggling with most, is price. The application targets a very focused market. There are a couple of apps like it, but not exactly like, and they're sitting between the $0.99 and $3.99 range. When I began working on the product I was thinking I'd sell it for $39.99, yep, that right, very high end. Now it's looking like it'll fit in the $4.99 and under range. We'll see!

Labels: , ,

Posted by Rob at 8:28 AM | 1 comments | Click here for a permalink to this entry.

Coding for the iPhone

I've been working on my iPhone application again, it's been months, and I've been making good progress. Cocoa Touch and Objective-C are beginning to slowly sink into my thick skull, which is a very good thing. I have a bunch of experiences to share and I really need to sit down and write them up, with hopes is helps another poor Win32/C++/COM guy make the leap into Cocoa/Objective-C land.

Duct Tape, fixer of all things!What are some of the things I hope to talk about? Glad you asked. The application I'm working on is very table oriented. It's really about data collection, so I've formed some very good patterns for dealing with it. Another thing I'd like to address is my view of reference counting with Cocoa, from a COM developers perspective. I'd also like to dive into is comparing Win32/C++/COM to Objective-C/Cocoa to .NET/C#/pick a language. I think Apple used to have a leg up with Objective-C/Cocoa, now I honestly believe .NET may have the edge in the rapid development department.

Hopefully I'll get around to writing about it some day, but you never know, this tease may be the final word.

As of this writing it's still my goal to become a full time Objective-C/Cocoa/Mac/iPhone developer, that's how much I'm enjoying the experience.

Labels: , , , , , , , ,

Posted by Rob at 9:38 AM | 0 comments | Click here for a permalink to this entry.

The more you know

Jason Bock: "Yesterday I looked at the overhead associated with throwing an exception. Driving into work today, I wondering, 'what's the cost involved in creating the exception object?'" - Not that exceptions are bad. You just need to be aware of the potential cost, especially if you were doing something like... I dunno, streaming, decoding, and rendering video at a high frame rate. Or something like that. Also note Jason's timings were performed on .NET using C#.

Labels: ,

Posted by Rob at 9:10 AM | 0 comments | Click here for a permalink to this entry.

Chris gets all Squirclely

Chris Roth: "It turns out that squircles are a sort of rounded square.You can read about the details on Wikipedia, but I'll summarize a squircle as a a 'circle to the fourth power'. Normally, you would describe a circle as being an x2+y2 kind of beast. A squircle would be what you get if you were to plot x4+y4." - For the mathematician in you. If you're not a math head check out Chris' notes for a little math lesson. Enjoy.

Labels: , ,

Posted by Rob at 8:15 AM | 0 comments | Click here for a permalink to this entry.

Paper, a developers best friend

Gus Mueller: "So a little while back as I was bugging Kirstin about some math (which I knew I had already bugged her about a couple of years previously, but couldn't find my notes on) I decided to get a little bit more organized. And I've now got two pretty thick sketch books, pictured above, with mostly empty pages in them but rapidly filling up. And I thought I'd just pass this tip on to you." - This is something I've done for years. I love National Brands Laboratory Notebooks. I have a stack of them from notes past, doodles, misc notes, strange names and phone numbers, and debugging sessions. They're a lot of fun to go back through and see what I was thinking at the time and how whatever I was working on at the time progressed. Most real drawings, Visio drawings, I've ever created started life on a piece of paper or a white board, maybe I shouldn't admit that, but a good piece of paper is still the fastest way to capture an idea, IMHO.

Labels: , , ,

Posted by Rob at 11:37 AM | 0 comments | Click here for a permalink to this entry.

Core Intuition 16

Core Intuition is quickly becoming by favorite podcast. Daniel and Manton do a great job pulling back the covers on all kinds of topics, especially those related to the Indy Mac Developer scene. Core Intuition Episode 16 is no exception. The thing I found most interesting in this episode, WWDC talk and most importantly payment systems for your first indy release. Dealing with online stores and payment could be a real showstopper, especially if you're not a web-head and you've been heads down for some period of time trying to complete that 1.0 release. Could you imagine coming to the end of a development cycle, thrilled, ready to sell your app, only to spend the next month trying to create a solution to get your product out to the world? Yeah, that would stink!

Note, I was going to give you a link directly to episode 16 but it looks like the guys really rely on RSS to get you those links. No biggie, just subscribe to the feed an you'll get the link, or check them out on iTunes.

Labels: , ,

Posted by Rob at 10:05 AM | 0 comments | Click here for a permalink to this entry.

Parrot 1.0 Released

Parrot.org: "On behalf of the Parrot team, I'm proud to announce Parrot 1.0.0 "Haru Tatsu." Parrot is a virtual machine aimed at running all dynamic languages." - Congratulations! Let's see how many new languages come out of this effort.

Maybe we should grab this and create our own dynamic language for doing development at Pelco? Just kidding.

Labels: ,

Posted by Rob at 7:35 AM | 0 comments | Click here for a permalink to this entry.

But at what cost?

James Robertson: "Just ask yourself: especially in a time of uncertain budgets, is a huge rewrite really the best use of your limited resources? What will your group not be doing for the business while they waste time on that?" - Rewrites are often times destroyers of an applications place in the market, and can destroy entire companies. If you can get away with interop between the old and new, that's probably the best way to go. Go read the post, and the links to the four other posts related to this subject.

I'm sure there are a few great stories out there as well, but jumping on the flavor of the month can be fatal, especially if you have a working, established, product.

Labels: ,

Posted by Rob at 3:36 PM | 0 comments | Click here for a permalink to this entry.

Cool job, Visual Basic Development Lead

Harry Pierson: "The Visual Basic team has a long history of delivering great value to our customers, and we are continuing that in the Dev10 release of Visual Studio. We're looking for a Development Lead to help guide these efforts as well as shape future versions of the compiler." - If I were a brainiac, and a bit of a masochist, I'd be all over this sort of opportunity. My first real programming job was using Microsoft Basic 6.0, awesome compiler, great language, so it's near and dear to my heart. Back in those days we were fortunate enough to get betas of Visual Basic 1.0. Ahhh, Classic Visual Basic.

Labels: ,

Posted by Rob at 6:53 AM | 0 comments | Click here for a permalink to this entry.

A question for AIR/Flex/Flash experts

First question. Let's say I work for a company that does video security systems and I want to be able to drop my video into an AIR/Flash application, how does one do that?

Second question. Let's now say I have to be in complete control of said video stream? Let's also assume I have a high quality media framework, or pipeline, that does this very thing. It's highly flexible and optimized for receiving, decoding, and displaying video, and audio, and meta-data for that matter. It's crucial to use this existing framework. AIR/Flash video won't do, period.

So, the big question is how do we marry our media pipeline to AIR/Flash? I've asked numerous folks and the answers are always the same. You cannot do that. I'm cool with that answer, but there's always a skeptic among the crowd that believes there's a way to "hack" around things when you're told you can't do it. :-)

One answer may be creating our own video codec? We could write that on top of our framework and do whatever is necessary to insert our video into the runtime as we see fit. Could this be one possible solution?

If you're an AIR/Flash expert that has done this sort of work, I'd like to hear from you. We've gone through so many options that won't work, including Alchemy, I don't believe this is possible to do the way we'd like to do it, but someone may have a way.

Thanks!

Labels: , , , , ,

Posted by Rob at 9:57 AM | 0 comments | Click here for a permalink to this entry.

They still exist

jobs.37signals.com: "Besides building something meaningful, here's why you'll love working here:
  • We're a start-up: it's fun, dynamic, and you will make a difference.

  • We've got smart people without bureaucracy or politics.

  • We work in a loft (no cubes here!) in the heart of Downtown Los Angeles: a short subway ride or drive away from most of the city and walking distance from music, art galleries, restaurants, apartments, and night life.

  • We're funded by top-tier venture and angel investors who have helped build companies such as Sun Microsystems, PayPal, Juniper Networks, Good Technology, and Symantec.

  • We offer generous salaries, benefits, and stock options.

  • You'll have the important, little perks such as a fast computer with two big monitors, a laptop, a smartphone, and free food and drinks."


  • There are still great opportunities out there for developers, with great perks! If you're a web guy, JavaScript and CSS, and have Ruby experience this could be a great gig.

    Labels: ,

    Posted by Rob at 7:19 AM | 0 comments | Click here for a permalink to this entry.

    Yeah, we can be bad

    blink, blinkDerek Powazek: "Programmers are the Gods of their tiny worlds. They create something out of nothing. In their command-line universe, they say when itís sunny and when it rains. And the tiny universe complies." - While I'd never compare myself, or anyone for that matter, to God. Developers are, by and large, quite fickle. We can come across as arrogant butt heads, yep. I'm sure there are a number of folks over the years I've completely offended, or pissed off, especially as I've gotten older.

    Labels: , ,

    Posted by Rob at 10:01 AM | 0 comments | Click here for a permalink to this entry.

    The web is not anywhere near the desktop

    Duct Tape, fixer of all things!Ted Patrick: "Today MindJet launched MindManager Web, the online version of the popular mind mapping software. What is cool about it is that it has an identical look and feel to the original MindManager. Actually it makes me wonder when they replace the desktop version with an AIR app." - I don't get it when people think they can fully replace desktop apps with web apps, even if they're written in Flash/AIR, which is kind of cheating because you're running in a runtime, inside the browser, on the desktop. There are certain things the web is good for, there are other things it cannot replace. A drawing application, especially a really good one, is going to be tough to replace.

    Having said that I think the web is great for services and it's super nice when the desktop application can be enhanced by a web service. We did this at Visio with the Find Shape feature. A web service for locating, and downloading, shapes from the web, into the desktop application. It worked quite well and gave you all the power and control of the desktop application.

    Web only apps are still not there as a 100% replacement for the desktop, or client applications. Why do you think we have an iPhone SDK? Folks just couldn't do everything they wanted in the browser.

    From what I know about AIR it has extreme limitations, some will see those limitations as a feature, which is true in some senses. If you have a HUGE investment in reusable frameworks, you cannot easily reuse those frameworks inside the AIR sandbox. That, for me, is a show stopper, which is quite unfortunate because it could be a great competitor to Microsoft's .NET if only you could reuse code more easily. Love or hate 'em, Microsoft has always done a great job of bringing old code into their new worlds. We've been able to bring critical frameworks into .NET very easily, and they behave like great .NET citizens.

    Labels: , , , , , ,

    Posted by Rob at 11:30 AM | 1 comments | Click here for a permalink to this entry.

    What to live in South Dakota?

    jobs.joelonsoftware.com: "Rather than looking for experience with a specific technology, we're looking for people with the proven ability to learn what they need to accomplish the task at hand. Right now we use Python, PostgreSQL, MS SQL Server, Django, Javascript, C++, Qt, and .NET (C#), among other things, but this is always changing."

    Labels: , , , , , ,

    Posted by Rob at 9:46 PM | 0 comments | Click here for a permalink to this entry.

    Interesting Job for ya

    jobs.joelonsoftware.com: "Our ideal person is someone who freelances for a living, but wants to spend two days per week developing music software."

    Labels: , ,

    Posted by Rob at 9:55 PM | 0 comments | Click here for a permalink to this entry.

    MarsEdit Feature Request

    Dear Daniel,

    I'm a very satisfied user of MarsEdit, I love it, it makes my day to day posting quite easy and automated. Now, I'm new to the Mac, so please forgive my naivete if what I'd like to see added to MarsEdit already exists and I just haven't discovered it yet.

    I worked on a Windows product called Visio for 10-years. Visio was completely scriptable via OLE-Automation. One of the coolest things about the model was the ability to hookup code that could be notified when an event took place; like the position of a shape changing for instance. Very cool, and very handy to third party developers that wanted to create their own custom solutions on top of Visio.

    Now, I don't want to create a custom application on top of MarsEdit, but I'd like to write some scripts to help automate some things I'd like to do with each and every new post. I'd like to be notified when I publish, period. If that notification could include some data that told me if it was a new post or a republished post that would be extremely cool, along with the post URL and maybe a few other data points, not sure what those would be right now. :-)

    I'd like to receive the "PostPost", or "PostPublish", event so I could generate a small URL using TinyURL, and publish the resulting URL to Twitter in a standard format, something like...

    Weblog Post, Title: TinyURL

    That's it! I'd imagine MarsEdit is most of the way there, I know you can script it with AppleScript, maybe I just need some lessons?

    Thanks Daniel,
    Rob

    Labels: , , ,

    Posted by Rob at 6:43 PM | 2 comments | Click here for a permalink to this entry.

    Rookie mistake

    Today I spent 30-minutes trying to figure something out, all because I made a very rookie mistake.

    Please, allow me to share, in hopes, you don't make the same mistake in your daily coding adventures.

    On rare occasion I've inserted extra code into some routine that is turned on, or off, by a conditional #define. It's nothing new, coders do it every day. The mistake I made today was I used that conditional in two spots and put the #define DO_MY_SPECIAL_STUFF in both spots. Once in a header, once in the implementation file, because the implementation didn't include the header. The reason I added the #define in both places is because I was in a hurry and didn't want change the project defines, and force a rebuild. Ahhh, save time now, pay later! Which is exactly what I did. My code worked as expected, it failed, gracefully, but it failed, and I couldn't figure out why for quite a while. After getting angry, and scratching my head for a while, it hit me. I'd commented out one of the #defines and left the other active. DOH! Instant badness.

    So, lesson for the day. If you have a conditional piece of code controlled by a #define, make sure that #define is in ONE place, not two.

    Rookie...

    Labels: ,

    Posted by Rob at 6:27 PM | 0 comments | Click here for a permalink to this entry.

    A Developers Company

    Joel Spolsky: "It bears repeating that at Fog Creek our goal is building the best possible place for software developers to work. Finding a great space was not easy. Our ideal of giving every developer a private office is unusual, so itís almost impossible to find prebuilt office space set up that way. That means we didnít have much choice but to find the best raw space and then do our own interior construction." - Pretty swanky digs! Makes me think of my days at Visio. Visio, without a doubt, is the best company I've ever worked for, prior to Microsoft acquiring it of course. It was a company built by developers, for developers. It was great for a LOT of reasons. Awesome people, fantastic product, great challenges, and an unmatched facilities. It looks like Fog Creek has that great developer philosophy.

    Check out the pictures, great space.

    Labels:

    Posted by Rob at 10:23 AM | 0 comments | Click here for a permalink to this entry.

    An idea for Nick Bradbury

    Nick, I was thinking about your Twitter post, and not wanting to resort to using the Twitter API to retrieve a profile image.

    What if one of your NewsGator backend guys implemented IHttpHandler and returned you the requested image, based on the user id?

    So you should be able to do something like http://hodgepodge.newsgator.com/twitter/image/userid.jpg. The IHttpHandler could grab the request, make a request to Twitter for the image, and return it to you. I believe this would work, but I'm not 100% sure. May be worth investigating so you can code things the way you'd like to on the client side.

    If I had a Windows based backend I'd write it for you to try, but, unfortunately I don't.

    Labels: ,

    Posted by Rob at 8:38 PM | 0 comments | Click here for a permalink to this entry.

    More Visual Studio 2008 ick

    I love Visual Studio. I need a little badge I can wear around that says "I (heart) Visual Studio!" I do, I really, really do. But... and there's always a but isn't there?

    The latest release seems to have really gone the wrong direction for the C/C++ developer, in my humble opinion. Editing, debugging, all great. The problem seems to lie in the auto completion/browsing capability. It's horribly slow. This morning, after 30-minutes, I finally had to kill off Visual Studio after right-clicking so I could "Go to Definition" of a method. Yes, I had other stuff to do so I left it alone hoping to come back and the hour glass disappear so I could work, no luck. Nuke it.

    So, here I sit, waiting on a build to complete, and I make the mistake of right clicking on method name again. The IDE is now out to lunch, sorry Rob, no right mouse clicks for you, and you can forget ever seeing that menu you'd like to see.

    Thing is I'll bet the C#, and Visual Basic crowd, are pretty pleased with it. All those nice little pop-up tool-tippy style helpers that allow you to dig into objects to inspect their values is pretty darned nice. Too bad it comes at the expense of the C/C++ side of the equation.

    Maybe, just maybe, there are some settings I'm not aware of that will allow me to get better responsiveness from the bits I do like? I'll need to dig around and see if I can turn off some stuff to improve performance.

    PS, I wonder, if the DNA of Visual Studio has a built in defense mechanism that causes it to misbehave in a VM on a Mac? It could happen...

    PPS, it's still better than Vi, emacs, and gdb on Linux. Heaven forbid I have to work in that all day, every day.

    PPPS, Note to the Linux world. Check out the great job the XCode guys did on their IDE. It uses gdb under the hood and allows you different views of the debugger, gdb console view and a nice GUI view that allows you to set breakpoints interactively.

    PPPPS, I need to look at KDevelop again. Maybe it's much better than I give it credit for.

    Labels: , , ,

    Posted by Rob at 8:49 AM | 1 comments | Click here for a permalink to this entry.

    IPy 2.0

    Harry Pierson: "This is a very pretty sight. Itís a screenshot from the IronPython CodePlex home page showing that 2.0 is the 'current release'. Yes thatís right, dear reader, IronPython 2.0 has officially been released!" - The dynamic language guys have been doing a great job, we have IronPython, IronRuby, and the DLR thanks to them. Well done, and congratulations.

    Labels: , , , ,

    Posted by Rob at 8:17 AM | 0 comments | Click here for a permalink to this entry.

    Yawn, Linux on the iPhone

    Macenstein: "Iíve never been a fan of how user-friendly the iPhoneís OS is. Sure, itís OK, but itís always bothered me that I did not need a USB client, computer and keyboard hooked to it to display a text-navigated kernel, and instead I was forced to use that beautiful graphical interface and intuitive touch screen to navigate my visually stunning and well-designed apps and games." - Once again we have a case of "Pig on Lipstick." While I don't see the lure a lot of geeks do, they do it simply because they can, not because it's useful. Let them play. It's not a real solution and I doubt it ever will be, like most Linux releases it for the geeks, not for real people.

    Labels: , ,

    Posted by Rob at 9:33 AM | 0 comments | Click here for a permalink to this entry.

    Delphi Prism RTM'd

    Nick Hodges: "Today we announced Delphi Prism ó our next generation Delphi development tool for the .Net platform. We have licensed the RemObjects Oxygene technology to create Delphi Prism. Delphi Prism is platform, stack, and database neutral. You can write code for the CLR almost anywhere it exists, including Mono for Linux and the Mac." - This happened a few days back and it represents a very interesting move on the part of the Embarcadero team. Native integration with Visual Studio will bring them a lot of attention, especially with guys like me that live in that environment and thrive in it.

    Congratulations guys!

    Labels: , ,

    Posted by Rob at 10:30 AM | 0 comments | Click here for a permalink to this entry.

    Objective-C Scoping

    Guy English: "In Objective-C the lifetime of an object is not governed by the scope in which it appears - it is managed manually by the programmer." - Nice talk on Objective-C object scoping and how to force the garbage collector to do your bidding.

    Labels: , , ,

    Posted by Rob at 10:34 AM | 0 comments | Click here for a permalink to this entry.

    Gifts for the beginning Mac developer

    The Unofficial Apple Weblog: "Whether you've just started writing your first lines of code or you've just moved over to the Mac/iPhone platform as a developer, this guide is sure to please." - Looks like a great list to me.

    Labels: , , , , ,

    Posted by Rob at 4:00 PM | 0 comments | Click here for a permalink to this entry.

    Making room for the keyboard

    Cocoa with Love: "The iPhone's onscreen keyboard occupies the bottom 216 pixels on screen (140 in landscape mode). That's around half the screen, so if you ever have a text field you want to edit in the bottom half of the screen, it needs to move or it will get covered." - Nice tip for any iPhone developer. There is also a nice example of this in Apple's UIShowcase sample application.

    Labels: , , , , ,

    Posted by Rob at 8:55 AM | 0 comments | Click here for a permalink to this entry.

    Debugging: C++ Templates, Brekpoints, and Visual Studio

    A good friend, and co-worker Tom, has been on a Linux trip lately, which isn't a bad thing since we do create products that run on Linux. I've been giving him a bad time lately about his newfound love of Vi, and now he's getting into gdb, God help us.

    Yesterday Tom posted some very useful tips for debugging templates in gdb, thanks Tom, but man, can it get any more arcane?

    In honor of Tom's hard work I thought I'd share the same tip, only mine will be for those of you using Visual Studio.

    1) Locate the line of code you'd like to debug.
    2) Left-Mouse click in the left 'gutter', the grey strip that runs down the left of your edit window.
    3) Press F5, or select Debug > Start Debugging.
    4) Wait to hit the breakpoint.

    Happy Debugging! Smile, life is good!

    Favorite Linux debugging tip (not): "Just add some printf's to it"

    Labels: ,

    Posted by Rob at 10:05 AM | 0 comments | Click here for a permalink to this entry.

    BASIC is back!

    MSDN DevLabs: "Small Basic is a project that's aimed at bringing "fun" back to programming. By providing a small and easy to learn programming language in a friendly and inviting development environment, Small Basic makes programming a breeze. Ideal for kids and adults alike, Small Basic helps beginners take the first step into the wonderful world of programming" - BASIC has a special place in my heart. My first professional programming job was writing accounting software in BASIC, Microsoft BASIC 6.0 as a matter of fact, what a great language, it was what's referred to as Street BASIC because it was structured.

    Labels: , , ,

    Posted by Rob at 10:52 AM | 0 comments | Click here for a permalink to this entry.

    Question for Mac developers

    So, is there any way to make XCode not default to K&R style bracing. It's just plain ugly, and quite honestly, I can't believe people still use it. When I got my first professional C job way back we didn't use it then, but it seems to have holdouts in the hacker world, namely the Unix style derivatives.

    Anywho, I digress, is there a way to make the braces lineup by default? Thanks!

    Labels: , , , , , ,

    Posted by Rob at 12:39 PM | 2 comments | Click here for a permalink to this entry.

    Aux keyboard?

    Greg Raiz: "This is a quickie concept. A while back I had an idea for a multi-touch keyboard. It was an interesting idea and Iím sure at some point it will become reality. However weíre a software company not a hardware player. What could we do in software using existing hardware?" - This is a neat idea. Use the iPhone as an auxiliary keyboard.

    Labels: ,

    Posted by Rob at 1:48 PM | 0 comments | Click here for a permalink to this entry.

    Delphi Prism?

    Allen Bauer: "In case youíve missed it, while at the SDN conference in the Netherlands, Nick Hodges has dropped some information about Delphi Prism, the next release of Delphi on the .NET platform hosted inside the Visual Studio Shell." - Wow, Delphi fans will either love or hate this move. Those that work in Visual Studio and are fans of Pascal will probably love it, very interesting.

    Labels:

    Posted by Rob at 11:38 AM | 2 comments | Click here for a permalink to this entry.

    Fun with video

    Tom Distler: "So, weíve been developing a slick cross-platform media framework to standardize or products on (proprietry, of course), and I couldnít resist building an ASCII text renderer." - Tom did a brilliant job with the design of our new media pipeline, but this, well, you'll have to forgive him, he couldn't help himself. Smile, life is good!

    Labels: , , , ,

    Posted by Rob at 10:32 AM | 0 comments | Click here for a permalink to this entry.

    iPhone development tutorial

    Cocoa Is My Girlfriend: "Similar to one of my first blog posts on building a basic application for Mac OS X using xcode 3.0, I am going to explain for beginning iPhone/iPod Touch developers how to build the most basic Cocoa Touch application using Interface Builder and an application delegate in xcode 3.1." - Excellent!

    Labels: , , , ,

    Posted by Rob at 12:27 PM | 0 comments | Click here for a permalink to this entry.

    iPhone NDA dropped

    9 to 5 Mac: "Apple today gave up the fight to keep the NDA on released iPhone applications built with the iPhone SDK. The NDA has recieved much bad press and complaints from developers who wanted to communicate their experiences with developing programs for the iPod/iPhone platform." - Good move Apple.

    Labels: , ,

    Posted by Rob at 12:16 PM | 0 comments | Click here for a permalink to this entry.

    One developers story

    Mike Ash: "But even a perfectly normal experience with the iPhone developer program is intensely weird. Compared to the simplicity of developing and distributing a Mac app, Apple's iPhone program is extremely convoluted and strange. Here's the story, step by step."

    Labels: ,

    Posted by Rob at 10:06 AM | 0 comments | Click here for a permalink to this entry.

    More on Chrome

    James Robertson: "it seems that Chrome renders YouTube just fine on my old Windows box - it's just under Parallels that a problem arises." - It's interesting they released only on Windows, and the problem James is reporting makes me wonder if they're using hardware acceleration in their rendering? That would definitely be a problem in the current release of some VM's, I know VMWare Fusion has issues in 1.x, but I'm not sure about Parallels.

    I guess it's time to go look at the code.

    Labels: ,

    Posted by Rob at 9:14 AM | 0 comments | Click here for a permalink to this entry.

    Pet Peeve

    I'm catching up on the Google Chrome hype this morning by reading through their comic book introduction, which is very nice by the way, and I ran into one of my biggest development pet peeves, the use of the word Manager to describe something that manages a bunch of other things. Now, in this case, it could be the top level description given by marketing for the feature, then again it's probably used in the code.

    I keep teasing folks at work I'm going to start using the new terms for these things because they have as much meaning as the word Manager.

    How about...

    1) VicePresident
    2) Director
    3) CEO
    4) CTO
    5) ExecutiveVicePresident

    So in the code you'd find something like...

    ProcessVicePresident* pvp = new ProcessVicePresident();
    instead of...
    ProcessManager* pm = new ProcessManager();
    Yes, that'll work.

    Labels: ,

    Posted by Rob at 8:33 AM | 0 comments | Click here for a permalink to this entry.

    I couldn't agree more

    Jason Bock: "The thing about having a public .NET API using underscores is it doesn't fit the recommended coding style. If you're in Eiffel, that's actually what you do - in fact, you use upper-case and underscores (e.g. GET_CUSTOMER). But it .NET, public APIs should be Pascal-cased with no underscores - e.g. GetCustomer." - It's kind of strange how cultures form around coding style. You have the *NIX hacker that tend to use lower case and underscores and heaven forbid K&R style bracing, ick, the most disgusting coding style EVER! I find it hard to believe the IronPython and IronRuby teams use the K&R style, but they both started life outside of Microsoft, so they have that open source feel.

    I'm with Jason on this, I do prefer Pascal cased public methods, and since there is a standard they should follow it, even if they don't like it.

    Consistency is important.

    Labels: ,

    Posted by Rob at 8:09 AM | 3 comments | Click here for a permalink to this entry.

    Switching to the Mac

    David Alison: "I was quickly able to get the Mac Pro up and running with Windows XP and my development environment in a VMware Fusion instance. With a couple of minor exceptions it worked great, providing me with everything I needed to build my web based solutions just as I had been on my native Windows XP machine." - I must admit, I don't have the slightest clue who this guy is, but apparently a lot of people do so he's a pretty popular link. Anywho, I digress. I love my Mac, I won't go back to Windows, period. It's my biggest desire to write Mac software full time, but I make a living writing software for Windows and Linux. I do however use my MacBook Pro as a portal to development on both platforms. VMWare Fusion is a wonderful piece of software and allows me to run both OS's and easily switch between them. I have only one complaint, it's small, and I know it's not easy to do. I would love to be able to get full hardware acceleration on the GPU. I know, minor to most, especially Mr. Alison who does web services, but it is kind of major to me as we do live streaming of video and this Mac hardware screams! I've seen folks on our team boot into native Windows, using BootCamp, and get awesome video performance. I just wish we could get it under VMWare.

    Labels: , , ,

    Posted by Rob at 8:55 AM | 0 comments | Click here for a permalink to this entry.

    Visual Studio 2008 lesson

    Wow, I just ran into a really freaky behavior in Visual Studio 2008. I'd set the Configuration Properties > C/C++ > Output Files > Object File Name to a custom path, and I forgot to include the trailing backslash, which caused me all kinds of grief.

    E.G.
    c:\dev\mycustompath
    Instead of
    c:\dev\mycustompath\
    Basically the compiler happily created one file with the same name over and over and over and was actually able to successfully link, not sure why that worked, but it did.

    So when I went to link to this particular library I'd get a whole mess of unresolved external references.

    I finally saw my problem this morning. So, word to the wise, remember the trailing backslash. Yes, this was a user error, but it was sure very easy to make that mistake.

    Labels: , ,

    Posted by Rob at 7:45 AM | 1 comments | Click here for a permalink to this entry.

    About

    Rob Fahrni has been a Software Developer for 20 years. He's developed DOS, Windows, Linux, iPhone, and Palm based applications in C, C++, Objective-C/Cocoa, C#/ASP.Net, and, yes, even BASIC...
    About >>



    CrabApples.NET Home Kim Fahrni, Hacker Widow Haileigh Fahrni, My Culinary Journey Taylor Fahrni, Goin' Buggy Jerry Fahrni, Pharmacy Informatics and Technology

    Apple Core Labs, LLC RxCalc - A Pharmacokinetic Calculator for iPhone

    Etcetra

    I work at Pelco. The opinions expressed here are my own, and neither Pelco nor any other party necessarily agrees with them.

    Subscribe to ATC Send e-mail to Rob Follow me on Twitter. My Profile on LinkedIn.