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.

Hosting IronPython and IronRuby

Michael Foord: "An exploration of how to embed Dynamic Language Runtime engines into .NET applications (C# or VB.NET). It addresses topics like presenting an API from your application to user code, handling errors and how to interact with dynamic objects from a statically typed language." - This is pretty intriguing. I wondered aloud the other day about why you'd want to host things in a shell, but hosting the DLR interactively inside an application, hmmm sounds like SmallTalk, would be extremely cool.

This is the sort of thing guys like Adam Stone, or Chris Roth, would come to love in Visio. Heck, this is something I'd love to have time to work on myself.

I had begun to put a grammar together for a Visio specific language, for shape building, but haven't pursued it any further. It would've been hosted inside the DLR, which could then be hosted using these techniques. I'd still like to do it.

Labels: , , , , ,

Posted by Rob at 5:57 PM | 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? "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 "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.

Is it AIR, Flash, Flex, ActionScript?

The Flash Blog: "Ok so those are some of the words that will take on new definitions. There are also terms that will either change or go away completely. For instance, what should I say when I want to refer to the Flash authoring tool? Well stay tuned from Adobe on that one. For now I will specifically either say the version, as in Flash CS4, or just call it Flash authoring. As you may have heard from various sources, Flex Builder may soon be undergoing a name change. This makes total sense as the IDE is used for much more than just developing for the Flex framework. Stay tuned as we continue to roll out new pieces of the Flash Platform re-branding effort." - I've got to be honest and say, this is super confusing. On .NET Microsoft has done a good job separating terms. The CLR is the runtime , it is the machine. The .NET Framework is, well, the framework you build on top of; access to the OS, Collections, etc. Language terms are clear, we have C#, VB.Net, IronPython, IronRuby, and a host of other languages. We also have an IDE called Visual Studio.

So I could say "I built that on .NET, using C#, and Visual Studio". I have no idea how you describe that in the Adobe AIR/Flex/Flash/ActionScript world?

Would it be "I built that on AIR, using ActionScript, and the Flex IDE.", or something else all together?

I've been mixing AIR and Flex to mean the scripting language all week. I'm fairly certain AIR is equal to the .NET CLR?

Oh, and where does AIR fit into "Flash is being redefined?"

Hopefully we'll get some clear terms from Adobe soon, then maybe my pea brain can understand how everything works together.

Labels: , , , ,

Posted by Rob at 9:52 AM | 2 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 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.

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.

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.

Dumping ground language

James Robertson: "The next time someone claims that C# or Java are 'easier' because they use 'standard C style syntax', this is worth pondering: a comment I saw pass by on Twitter" - Wow! When I read that I thought to myself, No way there's that many keywords! Well, I was wrong. According to this page there are 77 keywords and 16 contextual keywords. I really hope C# doesn't continue to become a dumping ground for features. Like LINQ support, why? Sure it makes the code look a bit cleaner, I guess, but why add that directly to the language? I thought that's why the CLR is open? So someone could come along and create the "Database Programming Language" and it magically works with the other .NET languages?

Labels: ,

Posted by Rob at 3:28 PM | 2 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.

IronRuby on Rails "ironruby running unmodified rails!" - That's pretty darned sweet.

Update: John Lam: "IronRuby doesnít just let you run Rails; it lets you interact with the rich set of libraries provided by .NET. Youíll be able to use IronRuby to build server-based applications that run on top of ASP.NET or ASP.NET MVC. Youíll be able to use IronRuby to build client applications that run on top of WPF or Silverlight. Youíll be able to use IronRuby to test, build and deploy your .NET applications. Youíll be able to run Ruby code in your web browser and have it talk to your Ruby code on your web server. Thatís a feature that we feel that many folks will enjoy." - Wow.

Labels: , ,

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

Yes, that stuff is fun IMHO

Jason Bock: "There will be a nice .NET API I'm going to make around this with unit tests so the rest of my code doesn't have to deal with monstrosity." - I'm kind of weird like that. Integration projects are fun to me. I had the opportunity a few years back to write a .NET assembly on top of a component for collecting PLC data. It was extremely fun and I was able to use it on a few different projects.

Labels: ,

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

DLR Tutorial "The Dynamic Language Runtime (DLR) is a layer on top of the .NET Framework 3.5 aiming at help you to build dynamic languages in .NET. Languages created with the DLR could be a language embedded in an application (like before) or a new language for the .NET platform like IronPython or IronRuby provided by Microsoft."

Labels: , ,

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

IronPython and Visual Studio

Harry Pierson: "We've hired a few people around here recently (including me obviously). However, if you have a burning desire to work on IronPython (or IronRuby) and Visual Studio, we're still hiring" - This is exactly what's needed to make IronPython and IronRuby really slick! Complete integration into the Visual Studio IDE. Make them first class citizens.

Labels: , , , ,

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

Silverlight, IronRuby resources "There are other people that have blogged about silverlight and IronRuby before, it might be a good idea to check them out as well." - Tagged for later.

Labels: , , ,

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

Building on the DLR

Matthew Podwvsocki [via Harry Pierson]: "So, I can admit, I've been on a bit of a kick with compilers and such after my posts on DSLs, Compilers and the Irony of it All and Lang.NET and Rolling Your Own. Today is no different, but this time, I'm just intrigued by targeting the DLR instead of the CLR. Thankfully there are a few great references that people are doing right now for these little adventures. One day once I'm more finished with the deep dive into F#, I'll dig a little deeper." - Maybe someday I'll be able to take a look at this, right... Anywho, Matthew has a nice list of examples for building on the DLR.

Labels: , ,

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

Dynamic C#

Charlie Calvert: "All the code that occurs in a dynamic block will potentially support dynamic lookup; even if the accessed members are not known by the C# compiler to exist, it will allow the code." - Does C# have to become a kitchen sink language? Why not let IronRuby and IronPython become the leaders in this regard and keep C# as clean as possible? One of the arguments presented for the inclusion of dynamic support is that PIA's can be expensive. If someone needs to use a COM component generate an assembly in a language that supports dynamic lookup and use that.

C# doesn't need to be all things to all people.

Labels: , , ,

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

On Patterns

Tiggers are wonderful things!John Gossman: "I love the article, but must add I have always struggled with RoutedCommands and CommandBindings. I think the APIs are too complex for what they do, but more importantly I prefer to route commands through my application model, not through WPF's element tree." - Patterns are meant to be used as templates, or here's an example of how do to something. In reality, in the production world, I've found you start off with a pattern only to expand or tweak it to what works for your system.

Labels: ,

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

Proof of concept

Tom Distler: "The videos are displayed using WPF MediaElement objects, and passing in a URL with our custom protocol type and the id of the camera to connect to. The great thing about WPF is that we get all the scaling, reflection, and overlays you see above for free. Another one of our UI guys (Nick) did a demo with live video playing on a 3D cube that can be rotated by the mouse. I will post a screen shot when I get one." - Yes, this week-and-a-half proof of concept was a great deal of fun. Now we need to get the go ahead to do it for real. I must say Tom's DirectShow knowledge has been a breath of fresh air, he's a great addition to the Endura team.

Nick, Brent, and Abe; thanks for creating some compelling demos. A picture is worth a thousand words. The demos are a heck of a lot better than Tom and I showing people a fully constructed graph in GraphEdit that would display grey video.

Labels: , , , ,

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

.NET Source Code

Scott Guthrie: "Last October I blogged about our plan to release the source code to the .NET Framework libraries, and enable debugging support of them with Visual Studio 2008. Today I'm happy to announce that this is now available for everyone to use. Specifically, you can now browse and debug the source code for the following .NET Framework libraries:" - Neat.

Labels: ,

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

Visio + Kuler == Coolness

Saveen Reddy [via John Nack]: "This code just takes the highest rated Kuler colors and draws them in Visio." - Very cool. I'd talked about doing something like this as a widget to change colors in the Windowing environment, but the idea of doing something with Visio never crossed my mind. How weird is that? Nice job Saveen.

I can't tell by my brief look at the code but it would be nice to use it to take Kuler color palettes and create Visio themes (I think that's what they're called these days? There used to be a color schemes add-on that would apply color templates to the drawing. Unfortunately I haven't investigated Visio 2007.)

Labels: , ,

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

Deploying a SQL Database

Scott Guthrie: "The good news is that this week the SQL Server team published the release candidate of a new SQL Server Hosting Toolkit that will make it much, much easier to deploy your SQL solutions remotely to a hosted environment. The toolkit allows you to work with SQL Express, SQL Server 2000, and SQL Server 2005 databases locally, and then easily transfer your schema and data and install them into a shared hosting remote SQL Server account."

Labels: , , ,

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

Windows losing ground with developers?

The Server Side.NET: "Microsoft is not dead, and it is not dying. Rather, the company's decline in market share is a runny nose." - I can definitely see this happening with the focus clearly on web based stuff. If you're doing client side applications Windows is pretty hard to beat, unless you're doing Mac applications, but the server side has a ton of dynamic language support with frameworks that allow folks to be highly productive and it's all free; Ruby + Rails, Python + Django, etc... On Windows we have those two plus we have ASP.NET and [insert your favorite .NET language here], but is that really an advantage? In short No. The real answer is Yes and No. For me it would be easier to use ASP.NET and C# because I already have experience with ASP.NET and C# is super easy to transition to because of my C/C++ background. Sure I could pickup Ruby and/or Python, but I'd need a bit of time to become as proficient with it as I am with C/C++. Who knows in the end it may be well worth my time to be a Ruby/Python dude, only time will tell.

Hey, have you looked at C#'s upcoming LINQ implementation? Check out Scott Guthrie's series on LINQ; Part 1, Part 2, and Part 3. It's going to make life more productive for the C# developer, that for sure.

Labels: , , , ,

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

Note to self, Windows hosting service

Need to revisit this hosting service in a while...

Labels: ,

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


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


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.