Learning C, Number Representations

Title image for project with title Learning C, Number Representations

In C, the code in the following if statement is evaluated to true:

Why is that?

Because of how numbers are represented in C.

  • 38 is just 38
  • '&' is a char, also represented by the number 38
  • 046 is an octal number, representing 38
  • 0x26 is hexadecimal for 38

So that's why all following snippets print something.

Now, I shoud have known this by heart by now. But software development grows in you organically, not at once after taking a course at the university.

Anyways, great stuff from K&R, n'est pas?

Building the Charlie Rose iPhone App

Title image for project with title Building the Charlie Rose iPhone App

The Charlie Rose Show is an incredible source of knowledge. Here's the gist of it in one sentence:

Acclaimed interviewer and broadcast journalist Charlie Rose engages America's best thinkers, writers, politicians, athletes, entertainers, business leaders, scientists and other newsmakers in one-on-one interviews and roundtable discussions.

In case you don't know it, you should check it out. Unfortunately, this high level of quality in content isn't to be found in the digital distribution of the program. To watch an episode of the show on an iOS device in Europe you have to download the flash video file from the webpage, convert it to mp4 and then add it to your iTunes library for syncing. A bad user experience The Charlie Rose iPhone App is trying to eliminate. Every little corner of the app and content is optimized for mobile usage. So it should work reasonably well even if you're on a train somewhere passing by quiet little Austrian villages. The source code is public and freely available for download. The question of content copyright will be answered soon, I hope. It would take getting 5 minutes of Charlie Rose's attention - no small task when the man has people like Barack Obama on his monthly agenda. Technicalities: Wrote an API in Python 2.7 using Flask, BeautifulSoup and a standard MySQL Connector. Deployed it on Heroku with ClearDB and Logentries add-ons. Encoding.com for streaming HLS video. AWS S3 with CloudFront for distributing png images. On the iOS side: AFNetworking, CVUMoviePlayerView, SDWebImage, ISO8601DateFormatter, IIViewDeckController. CocoaPods for library management, Mixpanel for analytics, tried to keep classes under 300 LOC (Objective-C categories help). Vollkorn from Google WebFonts, single beta test with simple OTA distribution (still faster than TestFlight or Hockey). Best lesson learned: saying no a lot keeps you sane when building a product.

Update: The Charlie Rose iPhone App has been featured 3rd on the Apple App Store / Education. Happy lucky dev!

Image of the Charlie Rose iPhone App being featured on the Apple App Store

View on github badge Download on the App Store Badge

To Hell And Back With VSaaS

Title image for project with title To Hell And Back With VSaaS

Widely-known Video-Streaming-as-a-Service products that should allow you a quick setup are incredibly hard to use. If you have to deploy a small number of flv video files to be streamed with HLS, you’re in for a ride. AWS Live Streaming, StreamMonkey, Zencoder, PandaStream, they all promise fast easy-to-use software, but don't deliver. Maybe I’m just stupid. Why U no understand the API stupid. But I do know my way in *NIX shells and adventured at the edges of Objective-C. That should qualify someone as a potential user of video streaming services. Encoding.com did the trick, even though their interface is beyond refactoring. If chance creates a need for VSaaS in your company, keep in mind that it’s probably going to hurt.

The State of iOS Development

Title image for project with title The State of iOS Development

The iOS Community is blossoming. It gets a lot of help from the Ruby people. It delivers pretty impressive apps. It gets new hardware toys once in a while from a beautiful big white company. A lot of Objective-C open source projects are so well written that you can't take your eyes off the code. Just look at AFNetworking, that pretty woman in a red dress. Nobody can really complain in our world. And Apple reviews aren't that long, if you think about it. Oh, the podcasts. Really interesting people broadcast their thoughts in our shared language. Do you use tabs or spaces for indentation? You just feel good hearing that. I'm staying, Objective-C. You're one heck of a friend!

Building the iGNANT iPhone App

Title image for project with title Building the iGNANT iPhone App

A beautifully designed iOS Application that publishes articles about artists around the world and has a healthy 3000 culture-affine active userbase (the web app enjoys 300.000). This side-project was the most time-intensive I'd ever done. Working together with a world-class art lover (Clemens Poloczek - video interview, email) just keeps you going. The details in design were as important to him as was the stability of the end product to me. And even though we broke every rule of "Ship it!", we solved a problem in the world. People that want to enjoy contemporary art while taking a subway now have a nice way to do so. Technicalities: Wrote an API in <insert your joke here> PHP that queries data from the main Wordpress blog. Noticed after the fact: serious design flaws in the API from over-using OOP and under-using OOS. Image converter for making large jpegs from the main Wordpress blog mobile-ready (downscaled PNGs). A few shell scripts for cronjob automation. iOS app with a few software design flaws, but overall ok. Standard Over-The-Air distribution worked perfectly fine for two large beta tests (more than 20 people). Had to deploy a hotfix after the v1.1 release. Custom VirtualHost entry to the servers' httpd.conf because I blew it client-side by shipping an update with the wrong API URL - yep, that stupid! Thank the greek philosopher gods for that little voice in my head that said "Developer! Make the app handle network errors gracefully before submitting it to the AppStore". Because the app was solid, people only experienced six hours of the error message "COULD NOT CONTACT SERVER". After the hotfix, everything was green lights again. A good learning experience, that's for sure. Guess that's what you get for not studying Computer Science at a University - having to learn useful stuff the hard way.

Download on the App Store Badge

Building CVUMoviePlayerView.(m|h)

Title image for project with title Building CVUMoviePlayerView.(m|h)

A small but useful little Objective-C class. It allows iOS Developers to quickly add to their project a UIView subclass that plays back remote videos. It wraps around MPMoviePlayerController. Once you've added it to your workspace, a four-liner is enough to get you started:

The project came about after a frustration with the top level API of the <MediaPlayer> framework. Even if it's not used by a lot of people, writing this class has made me a better programmer by solving a real problem in the software world. So if you're thinking about open-sourcing something you've been working on lately, don't! Simply

View on github badge

Building objclibs.com

Title image for project with title Building objclibs.com

A brief adventure into open-source completely backed up by my current employer, XING (thank you for that). Objclibs.com is a small html5 app that lists proven Objective-C libraries. It doesn't get more than 1500 hits a month, but it's still useful. And I learned a lot about engaging in the open-source community and about managing EC2 instances. The work is based on Thomas Fuchs' microjs.com, with little twitches made here and there on the model layer. Technicalities: Forked madrobby/microjs.com . Searched GitHub, blogs and sites for good iOS OOS. Changed the structure of the JSON data used for listing repository information to fit Objective-C instead of JavaScript frameworks. Domain management with hover.com. Rake command for one-line build and deploy. Double fun software development.

View on github badge