Screen Shot 2013-09-11 at 9.53.16 AM

Finally my mouse feels naturals under OS X as well

It’s weird, when I started to use a regular mouse on my Mac, it felt off. The acceleration curves are not the same as with Windows and it felt very unnatural to me. Other experience that as well and there are several fixes.

I tried all suggestion I could find (except Mouse Curves Prefs, didn’t exist at that time) and then I bought a Razer Orochi. This solved my problem.

With these settings, it’s very Windows like. Still different, but I can work perfectly with it.

Screen Shot 2013-09-11 at 9.53.16 AM

Screen Shot 2011-12-02 at 9.24.55 AM

Apple’s Review Process makes me frustrated and sad

We created a small App in a few days for a trusted customer. After some arguable but quite productive Review round with Apple, the App was really polished and streamlined.

Our apps main functionality is to upload, share and vote photos of bodybuilding athletes. We faced the following rejection reasons:

12.3 We found that the experience your app provides is not sufficiently different from a web browsing experience, as it would be by incorporating native iOS functionality.

So we had some partner websites of our customer that we displayed in the in app browser. We removed them in the end.

17.2 We found that your app requires customers to register with personal information to access non-account-based features, which is not in compliance with the App Store Review Guidelines.

We asked for a Nickname and an optional email address. We stated clear from the beginning, that we will use the address only to contact the user in case he won the sweepstake. Apple suddenly stopped mentioning it.

10.6 Apple and our customers place a high value on simple, refined, creative, well thought through interfaces. They take more work but are worth it. Apple sets a high bar. If your user interface is complex or less than very good it may be rejected

We shuffled some dialogs around to make it a bit different. And they mentioned a place, where a Youtube video is embedded in the news feed. We removed all Youtube Videos.

20.2: Official rules for sweepstakes and contests, must be presented in the app and make it clear that Apple is not a sponsor or involved in the activity in any manner

Makes sense, we included it in a Information Screen which is displayed when you enter the Sweepstake the first time.

2.2: Apps that exhibit bugs will be rejected

Our backend had a bug. We fixed that.

Then all of a sudden, they let us into the Store! We were like yeah! until we realized that due to a bug/api change in iOS 5, Restkit couldn’t upload images on iOS 5 devices and other strange behavior. The restkit team fixed it. And we submitted the update for review.

Now we’re already half a year into the project, spent many unpaid days just to please Apple and bring the App in the store when Apple rejected us again:

8.3: Apps which appear confusingly similar to an existing Apple product or advertising theme will be rejected

Oh yeah. The only thing we never touched in this 6 month was the look of the app:

Luckily Apple mentioned, that their main concern is the rounded icon. So we removed it and were looking forward to publish this critical update to our already released app.

And then it started getting weird. Apple rejected us again:

18.2: Apps that contain user generated content that is frequently pornographic (ex “Chat Roulette” apps) will be rejected

And they provided a screenshot for what they found to be explicit:

Ok, we understand that! Naked upper bodies are quite something. So we removed these images and implemented a tagging system, which allows users to report images so we’ll review and remove them.

After replacing the images the app looked like this:

We were really confident to get into the App Store now!

No luck, still

18.2: Apps that contain user generated content that is frequently pornographic (ex “Chat Roulette” apps) will be rejected

and additional

Your app allows to vote for people which is inappropriate for the App Store. 

Thanks Apple for telling us after half a year of hassling, that you don’t want out app :-(

supertrim.meuidraft

Supertrim.me Phase #1

Since long I though about making a weight tracker. Why? Because I need one. It should be simple, nice looking, fast and really just an ad-less weight tracker.

So I reserved an address and started thinking. This was maybe a year ago. Yesterday evening I took it up again and made a little UI draft on how it could look like.

You can view it here and I inserted some not updated screenshots in this post.

The key features are:

  • clean, white, bright
  • widescreen layout
  • content is live editable (if you click on any figure or image, you can directly edit it)
  • css3 based chart (or another fancy thing that gets drawn on the client side without flash)
  • all actions of the page are also available in the sidebar

I struggle with embracing data-binding

I just finished a backbone based project a few weeks ago, where I had precise control over when the Dom is manipulated on which data events. Also I had tight control whether the whole list is regenerated or just a single element of the list. I like that.

Now I finished the KnockoutJS Tutorial, which is great. But it left a strange taste of data-binding-dislike in my mouth.
Data-binding does:

  • tying elements of the view with the model (happens through special attributes in the view code)
  • adding behavior to interface elements (save button)
  • adding conditions on when elements are visible/disabled or not
My gut-feeling dislikes this and I’m thinking about why, maybe because:
  • semantic html is mixed with controller instructions
  • make semantic html probably less reusable
  • introduces another “language” level
I’m a total MVC guy, so everything that removes the controller out of the equation is suspect to me.
It’s MVVM and not MVC and thus probably more geared towards data-driven UI’s whereas my thinking of webapps evolves around an experience, which means context aware actions placed around chunks of data.

Make a Website mobile compatible

There are still millions of legacy, desktop-heavy websites. Often made with ASP.NET or other unspeakable trickery.

One of my project was converting one of these websites into a nice and mobile friendly format. I first tried to do it solely with media queries, which worked good for the visual appearance. But it was bad for the experience, because it was very slow and the mobile browser had to downscale images.

Mobile-first!

As LukeW points out, there are good reasons to treat the mobile visitor as first class citizen.

And so I started to develop this concept to make a website desktop and mobile optimized:

CSS

  • have general css rules in one place (applicable to all screen widths)
  • for each set of resolutions, load extra css files just containing the required rules
  • use link, not @import
  • and use the media queries on link level to prevent unecessary css downloads

Example

HTML

<img class="dynamic" 
              data-large-src='/ImageGen.ashx?width=122&image=/media/123/logo.png'
              data-small-src='/ImageGen.ashx?width=61&image=/media/123/logo.png'
              />

(in that particular case I’m using a special resizing library to serve the image in the proper size)

Javascript

Depending on what you need, you might just get away with inserting JQuery and a little width check, like this:

$(document).ready(function() {
var detectSmallScreen = function() {
window.OnSmallScreen = document.documentElement.clientWidth &lt; 701;
if(OnSmallScreen) {
window.ScreenSizePrefix = 'small';
} else {
window.ScreenSizePrefix = 'large';
}
};
detectSmallScreen();
$(window).resize(detectSmallScreen);
$('img.dynamic').show();
$('img.dynamic').each(function(){
var el = $(this);
el.attr('src', el.attr('data-'+ScreenSizePrefix+'-src'));
});
});

Conclusion

With just a few lines of Javascript its possible to replace images on resize with smaller versions of it. Thats great!


I started to write this article two days ago and since then I extended a lot of it and integrated parameters to dynamically insert the image resizing into the url.

Upgrading Serverloft Debian 5.0 to 6.0

I recently looked into Serverloft. They are a Europe-based hosting company which have scalable cloud servers for little money.

My side projects don’t make money and have almost no traffic. So I’m not willing to spend $60 (Amazon EC2). I have a Webfaction Account to host the more regular projects, but often I dream of being able to scale quickly and blow up my infrastructure in a matter of minutes.

I have Rackspace Cloud, which is really nice, but the servers are US based and I can feel the latency.

But IMHO Serverloft has a major drawback: They offer Ubuntu 10.04 (I don’t like Ubuntu as Server platforms, as I had have bad experience with upgrading), CentOS (I can’t handle Redhat) und Debian 5.0. Debian is nice, but 5.0 does not even have tmux (my favourite terminal multiplexer) in it.

So this is how I upgraded it:

Prepare Debain 5.0

  1. create a new Container, with Debian 5.0 (64 bit) as OS
  2. log in to it
  3. apt-get update
  4. apt-get upgrade
  5. apt-get install vim less dialog
  6. I had the stupid “perl: warning: Setting locale failed.” error, so I added this to /etc/environment:
    echo LC_ALL="en_US.UTF8" > /etc/environment
  7. reboot

Switch to squeeze

  1. sed -i 's/lenny/squeeze/g' /etc/apt/sources.list.d/debian.list
  2. apt-get update
  3. apt-get install apt dpkg aptitude
  4. apt-get dist-upgrade
    this may take a qhile, but don’t move to far away from the terminal, as it will ask some questions about keeping configuration files (uppercase I FTW)
  5. reboot

Final touches

  1. echo deb http://backports.debian.org/debian-backports squeeze-backports main > /etc/apt/sources.list.d/backports.list
  2. apt-get update
  3. apt-get  install -t squeeze-backports cherokee git git-svn mc tmux cherokee-doc libcherokee-mod-libssl libcherokee-mod-rrd libcherokee-mod-streaming php-cgi subversion zip unzip bzip2 git-doc mysql-server
    install your stack or whatever

Node.js, Backbone, Socket.io and Redis. It makes sense.

Two weeks ago I started to implement a small project which should result in a web-based messaging platform.

One very important requirement was, that it supports HTTP Push, meaning WebSockets. After a little bit of googling around I found this article: Re-using Backbone.js Models on the server with Node.js and Socket.io to build real-time apps. I’m sure you found that too :-)

But somehow I didn’t want to reuse the models on the backend, because, the backend should be just some kind of event dump or so.

And then I found backbone-redis (my fork), but whatever I installed with npm, did not work at all. I found another fork and then it all started to get together…..

I’ll publish more, once the project is running stable.

My first two free iPhone toolbar icons!

Dear Internets,

this morning I created two basic iPhone toolbar icons. I really don’t understand why these icons are not shipped with the SDK, so I’m shipping them now. For you. For free.

They look like this:

I included the original Fireworks files as well. Remember, the PNG is only used as alpha mask and thus the colors do not matter, just the transparency.
Download: iphone-icons.zip (176 KB)

They can be used like this:

[[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Icon-tb-settings"] 
style:UIBarButtonItemStyleBordered
target:self 
action:@selector(showInfoArticle:)]autorelease];
photo 4

Apple’s rounding troubles

I’m used to really high quality from everything with an Apple on it. So I was surprised to found this.

From my own experience I know how hard it is to do money calculations with floats. Microsoft had their own problems with it, but what Apple experiences now, is far worse.

  • some prices are not displayed correctly: 2.99Fr instead of 3.00Fr
  • it’s currently not possible to buy something for 3.00Fr
and if yout try to buy anything that costs around 2.99-3.00Fr you end up with this loop:
I’m wondering how long it takes until Apple fixes it….

I do stuff