If you’ve been paying attention to my github page lately you’ll probably have seen me working on a project I called Tripping Cyril. As the description of this suggests it’s a public rewrite of an internal framework I wrote. First of all, this name is totally made up. I suck at coming up with names, when creating a new project on github these days it simply suggests a name and I went with the first suggestion. Now as I previously mentioned this is a rewrite of an internal framework. Yes a rewrite, not just a copy of it. My internal version wasn’t even a framework really, it are/were mostly just a couple of applications using a very similar base. With all a few minor differences which were getting kind of annoying. So I decided to make it a proper framework that I myself and as it is public also others can simply clone and start hacking on it.
As WhatsApp was bought for $16 billion last week I thought this would be a good time to just talk about chat apps in general. As the title of this post suggests it is starting to become fairly funny. Here in the Netherlands and from what I understand in a few other countries as well people are already switching to a ‘WhatsApp alternative’ called Telegram. It’s already funny to me that they are legit advertising themselves as a ‘WhatsApp alternative’. According to the FAQ this is Telegram is made by the guys from the biggest Europian Social Network VK. Now I’m from Europe and I had previously never heard of this. A quick google search showed me that it was basically the Russian Facebook. Well there is pure people logic for you. Facebook buys WhatsApp so we must get rid of it because otherwise Facebook will know everything, but it is perfectly fine for the Russian Facebook to know everything about us! Yay people logic. Only advantage this Telegram has over WhatsApp in my opinion is the fact that it is encrypted, so your isp, goverment, etc can’t listen in.
Mobile and databases, an almost unavoidable combination. And let me just tell you that it can be a huge pain. Note that most of the examples or ideas here apply to Android, but could likely be applied on other mobile operating systems as well. If you want to use a database in your Android app you’ll quickly stumble upon SQLite. Now there are a few things I expect from a database after having worked with PHP & MySQL for quite some time. Basically I want to read and write my data fast, very fast. I expect it is capable of basically sorting an infinite amount of data (not looking at storage limitations here). I expect I can read and write at the same time. Did I mention I expect it to be very very fast?
So I recently made quite a few projects on github, all with slightly short odd names. So I thought I’d write up about what they actually do, why I wrote them and why I gave them such short and maybe slightly odd names. So first of all I started with ddfs, simply because I needed it. I basically a directory on a server that because got new files the entire day, which I wanted to backup. Now instead of backing it up once a day through cron I thought it would be neat to just lifesync, which would of course also safe that extra load once a day to sync and all. This also gave me a nice chance to work with in this case inotify, which seemed to miss a couple of things. So the end product as I have it in use now is basically a simple server that’ll just send all the new files to the connected clients. So in a way it is distributed as in multiple clients, but besides that it is kind of dumb as it just sends the new files to everyone. But for my use case that was more than enough, I basically wanted live backups to my laptop and desktop after all. So because of this and because I kind of suck at coming up with proper project names I decided to name it Dumb Distributed File System, or just ddfs.
Blocking disk IO really, really sucks. Pretty much all the disk IO APIs out there are blocking, which in my opinion is really, really bad. Basically when most of these APIs were designed they just assumed hard drives are fast and could be written to (or read from) instantly. What a joke. Hell even these days hard drives (and yes even solid state drives) are slow (yes I consider 5 milliseconds to be slow). Now for the other kind of IO also known as network there are also blocking APIs, but at least non-blocking and async APIs have been around for ages. Now for non-blocking/async disk IO most solutions I did find involved threads, which in my opinion is not a proper solution.
Tablet apps, what is really considered a tablet app these days? The answer could be different for everyone of course. But generally speaking I think most people would say it has to be optimized for the bigger size of screen (compared to a phone that is). This answer somewhat seems to be different between the 2 major platforms though, those 2 being Android and iOS of course. Both handle tablet apps entirely different. Let’s start with iOS. There seem to be 2 ‘kind’ of apps on iOS, iPhone apps and iPad apps. In both case the apps are created for one aspect ratio, which honestly is kind of really stupid. This for example is the cause of the black borders in ‘legacy’ apps on the iPhone 5. In my opinion developing for one aspect ratio (or one piece of hardware for that matter) is really stupid, it’s everything but scalable, which they kind of proofed when the changed the aspect ratio with the iPhone 5.
It’s been a while but I finally released an update for Twoons for Android again. It’s mainly a bug fix update although it brings some nice new features. It brings a inline picture viewer for example so you won’t have to leave the client for links like twitpic, yfrog, lockerz, etc. Next to the picture uploading is entirely rewritten. I however took away pic.twitter.com but this is replaced by a couple of popular uploading services. Next to that you can also use your own custom media endpoint.
Today I released a small update for EasterDroid. As you may or may not know Google decided to hide small easter eggs in Android since Gingerbread, usually discovered by tapping the version number in the settings multiple times. EasterDroid is a collection of all these easter eggs. With the update from today you’ll now be able to use these as a DayDream in case you have access to Android 4.2. Next to that I also did a small tablet optimization.
So, I haven’t rolled out a lot of updates in quite sometime. During this time however I got myself the Nexus 7 as it finally released here. One of the first things I started doing with it was optimizing Twoons for tablets. Which I released in v0.4 just now. As tablets obviously have a larger screen I decided to go for multi column, meaning you can view multiple columns at once.
This is actually old news already, but Twoons for Android is finally in the play store. Well finally, it has been in there for over a month already. But I just uploaded a new version (which is currently rolling out). And it’s a rather nice one if I say so myself. I redesigned the way users are viewed quite a bit. You’ll now get to see a high resolution profile picture of the person and you can swipe again to see tweets, favorites, etc, a picture of this is shown below. Besides that a bunch of bug fixes and some internal changes.