EasyHttp

I haven’t had much reason, until recently, to start messing around with .NET 4 and C# 4. But I just had to do a bunch of stuff involving REST and JSON, and I found that the new dynamic type was very helpful there. Specifically, I used EasyHttp (available on GitHub), which makes it very easy to consume RESTful web services, and (via JsonFx) serialize and de-serialize JSON.

I know that there are other ways to do all this stuff, but I think EasyHttp and JsonFx work well and are easy to use. With dynamic objects, I don’t have to worry about mapping a JSON result to an explicit .NET class; I can just access those members I need to access and ignore the rest.

PHP tip of the day

If you’re running an array through json_encode(), and part of that array is a reference to another array, do _not_ json_encode() *that* array first. JSON-encoding something that’s already JSON results in… confusion. This is one of those things that I would have figured out a lot faster if I had any kind of debugging set up for PHP. Maybe I should look at FirePHP. I don’t do a lot of PHP work, but I’m using PHP right now to test some REST web services that I’m writing in .Net/C#. (Debugging the .Net code, of course, is a piece of cake.)

iMac


iMac
Originally uploaded by andyhuey

When I agreed to develop a Mac app for a client, I’m not sure why I agreed to make it backward-compatible to OS 10.4. Now I’m stuck testing my app on this crazy thing.

The weird thing about Cocoa development is that there are perfectly innocuous things that work fine on 10.6, but don’t work at all on 10.4. And that don’t throw errors either, so it’s pretty hard to nail them down.

Cocoa project

The Cocoa/Mac project that I’ve been working on is pretty much done. It’s not a really big or complicated program, but I just ran a ‘wc’ on it, and it’s a bit over 1400 lines of code, so it’s not trivial either. I’m betting that, if I was more experienced with Cocoa, it could probably be, maybe, 900 lines instead of 1400, but that’s still a reasonable size. Oh, and if I didn’t have to support OS X 10.4, and could have used the garbage collector and other stuff that only works in 10.5+, I could probably have shaved off another 100 lines of code.

My program is replacing an old program written in FutureBASIC. Looking back at the source code for that, it was a bit over 600 lines of code, all in one file. You can definitely write a shorter program if you don’t have to declare variables, or allocate and release memory for them.

Overall, I had some fun learning a new language and a new framework, and figuring out how to solve problems that would have been trivial for me to solve in .Net/C#. I’d like to learn some more Cocoa stuff now, and maybe try writing an iOS app. I don’t really have a specific idea for an app, but I’ll figure something out.

StackOverflow

StackOverflow has been very useful for me lately, both at work (with the usual .Net stuff) and at home (as I try to figure out Cocoa programming). I asked them to merge my work and home accounts today, so I’d have just one account. I hit a 100 reputation score recently on my work account, and I don’t want to risk losing it, if I change jobs, or the company goes bankrupt or something. So here’s my StackOverflow flair:

profile for AndyH at Stack Overflow, Q&A for professional and enthusiast programmers

NSTableView

I just spent what seems like an inordinate amount of time getting an NSTableView to work exactly the way I wanted it to. This page was a good reference, even though it’s a few years old. And thank god for Stack Overflow. I have the feeling that I’ve cobbled something together that a serious Mac developer would laugh at, but it does work, so I’m happy.

Mercurial and Git with Xcode 4

I’ve been reading up a bit more on Xcode 4. The prior version, Xcode 3, had SCM integration with Subversion, Perforce, and CVS. The new version has support for Subversion and Git. (I’m not sure if they dropped CVS and Perforce, but I’ve only seen Subversion and Git mentioned.) And, of course, I decided a couple of weeks ago to use Mercurial instead of Git. Oh well. It’s not a big deal to do version control outside of the IDE, but it’s always nice to have it integrated.

I think I’ll be sticking with Mercurial anyway, since Bitbucket allows unlimited private repositories under their free plan, while Github doesn’t.