The iPhone Lover/Hater

| Tags: my-life, iphone, train

It’s Monday and I enter the train home after a day full of work. The train is well filled but I get a seat between a woman browsing on her Samsung smartphone and some guy I ignore at first.

I pull my iPhone from a pocket of my Jeans as the guy besides me starts talking: “Ahh, an iPhone 5. Nice! It’s twice as fast as the iPhone 4S”.

I try to ignore him and open Tweetbot to check my Twitter timeline. As I’ve been pairing with a colleague on a project the whole day I haven’t looked at Twitter for the last 9 hours and there are 50 new tweets.

The guy goes on: “It’s rectangular, rather flat, has rounded corners and does what it’s meant to do.”

Oh dear, where does he get something like that from. I throw a sideways glance at him. Could be from an ad agency, at least he talks that way.

Most of the new Twitter posts are boring. A post from someone reporting about his 10 km run. I’ve muted Runkeeper and some other running related clients and hashtags, but from time to time some post of that kind still filters through. There’s also some new consultancy wisdom tweeted and retweeted by my colleagues. No funny posts and nothing really exciting.

“Movies look great on the iPhone 5.”

Really? I open Riposte and check out App.net. That’s a much more nerdy timeline and not as crowded as Twitter.

“But the battery sucks. Yeah, the battery really sucks. I had an iPhone 5, but I returned it because the battery sucks. I’ll probably get myself a Samsung Galaxy.”

Huh, what’s changed. Is he getting offensive because of being ignored?

“Are there any good apps for the iPhone 5. I didn’t find any back then. And it sucks for games. I think they rushed the release of the iPhone 5 a bit.”

No way opening the Kindle app and trying to read my current novel “Third Shift” by Hugh Howey as the guy tries hard to get some reaction from me. I don’t feel like arguing why I like my iPhone, though. I’m not religious about it. It works for me. If something different works for you, then by all means get that.

“But movies look great on it.”

In that instant I remember hearing David Lynch talking about how you can never experience a movie on a phone. That still holds true for an iPhone 5 - even with it’s 4” display.

Luckily I need to change trains now.

Cloud Atlas

| Tags: movies, books, fiction

A half year ago I saw this trailer of the then announced movie “Cloud Atlas”. The trailer got me interested. So I browsed around the web a bit and found out that it is based on a novel said to be spectacular and impossible to make a movie from.

So I bought “Cloud Atlas” by David Mitchell in Amazon’s Kindle Store and since I prefer to read the book before watching movies based on it, I started reading.

The book is great. It consists of six stories ranging from the 18th century to some more or less distant future. Each of the stories is written in its own style and uses a language matching the time.

The first story – the one from the 18th century – is quite difficult to read – It is written in a rather archaic English – and for me it was also quite boring. But the rest is all a very good read. The stories are told in two parts. You read the first parts from past to future and then the second parts come in reversed order from future to past.

All stories are somehow connected. There are people reading the older stories or watching them as a movie, but there are more than those obvious connections.

Now I also watched the movie. It is impossible even for a movie of nearly three hours to show each scene described in the book, but it captures the essence of the book.

One interesting aspect of the movie is that it tells all stories simultaneously. Sometimes you see 5 minutes of each story and sometimes the movie runs in a mere amount seconds through all six stories. At first it is a bit irritating, but in the end it is a good technique to bind all stories together and to remind the audience what the current situation is in each story.

The book carries some subtle notion of reincarnation and the movie reinforces that notion in a kind only a movie can, but you’ll have to see for yourselves.

One more tidbit maybe: In one of the stories taking place in the future a sort of fast food restaurant is described that uses golden arches in it’s logo. My brain made a connection to a currently existing chain of fast food restaurants. It’s hard to make that connection when watching the movie. Either the book isn’t as explicit in that case as I imagined or the movie makers decided to not be as obvious as the book.

So definitely first read the book and then watch the movie.

Static Publishing Again

| Tags: blogging

After two years with WordPress I decided to again move to a totally different blogging engine. WordPress started to annoy me when I wanted to write a post about a testing framework I had implemented in Dart. This post contains one block of code and the WYSIWYG editor in WordPress made it a pain to just type it in. I somehow got around this with typing it in somewhere else, copying it into the editor and fumbling with the font settings.

There is a Markdown plugin for WordPress, but then all posts are handled by it – even if they weren’t written using Markdown.

Back then I read about Jekyll and Octopress and started playing with it.

Octopress seemed like a good starting point as it contains some useful rake tasks and a framework for a blog. I didn’t like the theme and even being able to change the colors wasn’t enough to make it attractive for me. I was satisfied with the theme I used in the WordPress blog.

So really hard editing and much cleanup was needed. I learned a bit about liquid, the templating library used in Jekyll and had an occasion to code in Ruby again.

Unfortunately, the transition won’t be as imperceptible as I would wish for. I have never before looked into the templates for RSS and Atom feeds but since Octopress only comes with a template for an Atom feed and I still wanted to serve a RSS feed for those who have subscribed it, I needed to have a deeper look into this topic.

Wordpress generates its page numbers as ids for the entries in a feed even though you don’t see that page number anywhere else and permalinks use a human readable format.

The new feeds now again contain ids based on the permalinks and many feed readers will most likely display the feed as a whole bunch of new entries. Sorry about that.

Thanks to Apache rewrite rules everything else should work as before.

You’ll probably notice that there is no more search box at the top. That’s because there is no database. All pages are generated and served statically. Take a search engine of your choosing and search for anything you’d like to find there with “beeger.net” as a context. Since it’s all static again, the search engines should have no problem indexing the site.

10th Anniversary of beeger.net

| Tags: css, design, html, theme

Today is the 10th anniversary of this blog. With a little help from the wayback machine I’ll take a look at those past 10 years and make fun of my website design efforts.

At first beeger.net was pretty empty. It only contained a logo and I only had it registered to have the e-mail-adress robert@beeger.net. Anyway it looked way to empty and as I learned about blogs, I decided to start one myself. I started it by using a Windows tool simply called Blog. With this tool I typed my first posts into an integrated editor and Blog generated the HTML files for me which I then uploaded to the server.

I wanted a cool logo for my website and began sketching some ideas until I had one that looked fairly cool in my mind. Unfortunately my limited talents could not transfer the image in my mind to the screen of my computer or a piece of paper. So I started programming the generation of the logo in Java. The logo is a combination of arcs and lines. I remember running the program over and over again and moving lines and arcs around till it looked good.

Also of note on this one is the background color. Somehow I always liked beige and creamy colors. It also shows in the Squareness look and feel which I created some time later and the current design of the blog.

Back then table layouts were the way to do website design and the table layout is clearly visible in this first version.

After using Blog for a year I switched to MovableType . Back at that time MovableType was a fresh blogging system that I could host myself on my website. It had a nice templating system and posting new blog posts was a joy. But it wasn’t until 2005 that I changed the look of the site.

The logo stayed the same, but the background got changed to white and was less aggressive. Though it was still a table layout, it was a bit more subtle by leaving out some borders. Also notice the side menu. Side menus were the big new thing - at least for me - and I spend considerable time to get the CSS right. I also added some CSS-only buttons telling things none really wanted to know like what MovableType version I was using and that the site was valid XHTML 1.0 and CSS.

One of my biggest problems of all time is that I always want to create something visually cool but simply fail to make it happen. There’s always so much that gets lost or wrong on the way to the paper or the screen that I dump it. So I’ve always played around with ray tracers and such tools. By combining things in a script like for POV or by arranging them in a tool like blender and then applying materials to those objects one can things that look good without having to be overly talented in drawing.

In January 2006 I was playing again with blender and somehow ended up creating a scene that looks like some highway in cyberspace. I think Tron inspired me here. I spend much time fiddling with it and even added motion blur to it. I liked it so much, I rendered two shots of the scene, came up with the title “Travelin’ The CyberSpace - A Nerd’s Blog” and made it the new theme.

I also played around with CSS and discovered negative margins. You see how the menu and the post box overlap the main content block. It was so nice and looked so cool. Well it did until I tested it in InternetExplorer. InternetExploerer was a real spoilsport. It just ignored those negative margins and it all looked really bad. But I won this fight by adding a transparent margin on the left and right side of the background image. Gotcha, IE!

One of the biggest pains in MovableTime has always been the update procedure. You had to upload the new files to the server, make sure you uploaded some as binary and most as text and then there always were some other steps to take care of during an upgrade. Also it got more and more bloated with each new version. So in November 2010 I decided to move to WordPress. With the move to WordPress I also decided to give the site a new look. I took the minimal HTML5 starter theme and tweaked it until it looked like this:

Actually that’s not entirely true. Back then the main title was just “beeger.net”. Unfortunately moving away from static publishing with MovableType to dynamic publishing with WordPress has the effect that the wayback machine can no longer make snapshots of this site. Anyways the look is still the same.

I wanted the website to be readable on a mobile device like an iPhone. So by applying some “mobile first” thinking I got rid of the side menu. There are now only three buttons at the top and a search box. Here’s some more playing around with CSS. Inspired by Mac OS X segment buttons I used children selectors to make the first and last button round at one side. Since it should be readable on mobile devices and mobile devices are often on the way with low bandwiths, I decided to try to make a theme that would use no images. I browsed Google’s WebFont library and came across a font named “Reenie Beanie”  while searching for some font that looks like handwriting. The description of the font tells us that “Reenie Beanie could be used to represent the scribbling of a mad scientist, or the recipes of a genius chef.”. As the subtitle of the website was set on “The Ravings of Robert F. Beeger” the font was a perfect match. Even after more than a year I like this combination of Reenie Beanie for titles and Trebuchet for the rest of the text.

The latest change is only 3 months or something like that old. “beeger.net” looked like a boring title and one day as I registered some more domains, I thought it would be fitting a nerd to have some regular expression as a title. So that’s how the current title came to be. All of the domain names you can generate from it forward to this site.

And well, the background is again a beige tone. Not as aggressive as 10 years ago, but still.

Yoda Expectations

| Tags: dart, dev, web, it-agile-blog-planet

Since releasing the Dart testing framework dahlia two months ago, I have been using it on a Dart project of mine. Although I’m pretty satisfied with it, there’s one aspect of it that is somewhat ugly. To test something in dahlia you specify an expectation and look whether it holds as in

expect(a).to(equal(b))

For my taste there are too many parentheses there and normally you get an additional pair around it when you put it into a one-line it-block like in

it('a should equal b', ()
  => expect(a).to(equal(b)));

So I want to get rid of some of those parentheses and working on my project I took inspiration from Dart’s event system which provides a nice approach for defining event handlers. Here’s an example

someElement.on.click.add(....)

Now I’m experimenting with a new form of expectations

expect(a).to.equal(b)

That looks better. But what about negations and combinations?

expect(a).to.not.equal(b)

can be implemented quite easily, but

expect(a).to.equal(b).or.equal(c)

is another matter. There is no way to know that after the first equal-matcher an and-matcher and another equal-matcher follows as there is no finishing method call that completes the expectation. A solution is to find some expression that puts a marker at the start like

expect(a).to.either.equal(b).or.equal(c)

but “either a or b” is definitely not the same as “a or b” and isn’t really flexible.

Doing it Yoda-style seems to solve the problem

to.equal(b).or.equal(c).expect(a)

For the fun of it, you can make it sound even more like Yoda

to.equal(b).or.equal(c).expect(a).hmm()

I’m unsure whether it solves a real problem, though. Tests shouldn’t be that complicated that the need for combinations of matchers arises. And though it’s fun, the original form where you know the subject before what is expected of it is more readable.