February 5, 2014
Plumber is a tiny Objective-C library for creating curved connection lines between nodes (for flowcharts, for example). The constructed path connects the bounding boxes such that the distance between two sides is minimized. I’ve created it since a quick Google search did not reveal anything simple for iOS. The curve calculation algorithm is a direct port of the function used in the Graffle Example of the vector drawing library Raphaël.
November 19, 2013
Nowadays, developers often work in several different development environments and text editors. For example, you may need Eclipse for regular Java development, Android Studio for Android development, Xcode for iOS development, Visual Studio for C#, Sublime Text for web development, etc.. Every tool, however, has different keyboard shortcuts. Since it is hard to remember all shortcuts, there’s a constant loss of productivity when switching tools. If you don’t want to edit all shortcut sets in every tool, you can instead use CodingKeys as an “abstraction layer”.
CodingKeys lets you define unified shortcuts, which are dynamically re-mapped to existing shortcuts of other applications when you switch tools. All mappings can be conveniently edited in a single configuration file. The config file also gives you a nice overview over all shortcuts and grows as you add new apps to your coding toolbox.
November 30, 2012
DollarP-ObjC is an Objective-C port of the $P gesture recognizer to be used in iOS applications.
What is $P?
From the $P website:
The $P Point-Cloud Recognizer is a 2-D gesture recognizer designed for rapid prototyping of gesture-based user interfaces. In machine learning terms, $P is an instance-based nearest-neighbor classifier with a Euclidean scoring function, i.e., a geometric template matcher. $P is the latest in the dollar family of recognizers that includes $1 for unistrokes and $N for multistrokes. Although about half of $P’s code is from $1, unlike both $1 and $N, $P does not represent gestures as ordered series of points (i.e., strokes), but as unordered point-clouds. By representing gestures as point-clouds, $P can handle both unistrokes and multistrokes equivalently and without the combinatoric overhead of $N. When comparing two point-clouds, $P solves the classic assignment problem between two bipartite graphs using an approximation of the Hungarian algorithm. The $P recognizer is distributed under the New BSD License agreement.
May 24, 2012
How it works
TUIO is based on the OSC protocol and usually transferred via UDP. Tuio.js uses node.js and Websockets (Socket.IO) to push OSC/TUIO messages to the browser. TUIO.js converts the messages to events that applications can register with.
August 24, 2011
Recently, the facebook API has been voted »Worst API« in a developer survey. Bad news first: It really is the worst API (or at least the worst API that we have worked with). Good news: It would be quite straightforward for facebook to drastically improve the overall app development experience by working on at least one specific area (see end of this article).
March 9, 2011
Very good presentation by Dan North about »Deliberate Discovery: Code Like You Mean It«. »Ignorance is multivariate« and »We’re ignorant about our ignorance« – yes, based on past project experience, I guess I can confirm that! ;) He also mentions an interesting book called »A mind of its own: How Your Brain Distorts and Deceives«…
February 8, 2011
January 3, 2011
The average software developer reads less than one job-related book per year. This may be true or may not be true. I have no proof for this claim, I just heard or read it »somewhere«.
Making Software: What Really Works, and Why We Believe It does not have an answer either but sheds lights on many much more important issues in the software engineering domain. The book challenges »opinion- and superstition-based software engineering« by reporting results from numerous scientific studies carried out by large research institutes and experienced researchers. Should one trust every belief read on a blog or take every anecdote of a co-worker’s past project experience for granted? Do TDD and pair programming work? Does it pay off to design your application using modules and design patterns? What do we know about bugs?
November 24, 2010
Several months ago, I set a Ruby development environment up on Windows but quickly realised that people were right saying that it doesn’t work well: I had lots of crashes, installation of some gems was tricky, and the Ruby version didn’t play well with the Rails version at that time. So I installed VirtualBox and configured everything within Ubuntu. While it did work in a way, it wasn’t a pleasant development experience at all. Installing virtual machines for testing purposes is fine but for longer working sessions I didn’t like it. First, even on a fast machine working in a virtual machine doesn’t feel as responsive and native as using a real OS. Secondly, things can get inconvenient when you want to use some tools on your OS and some on the guest system (networking modes etc.). Overall, it just makes matters much more complex than using a single system. Now, with Ruby 1.9.2 and Rails 3 I made another try and so far things have been working really well. If you plan to get started with Ruby dev on Windows, here are a few tips:
November 10, 2010
»To be a good programmer is difficult and noble. The hardest part of making real a collective vision of a software project is dealing with one’s coworkers and customers.«
When a book about programming starts with this software development truth, it’s a good sign that it is worth reading. Robert L Read’s short book »How to be a Programmer. A Short, Comprehensive, and Personal Summary« (freely available as a PDF file or web version) was already published 2002 but the material presented is still highly relevant – recommended reading for everyone in programming.