Jan Varwig

  • Profile
  • Projects

Abstraction, indirection and making change easy

January 15, 2021

Abstraction is one of the timeless values of the programming profession, and one of the pillars that make the complex systems we create even possible.

Without abstraction, we’d be writing software in machine code, and while that would have its benefits, I believe even those who bemoan contemporary software’s sluggishness would not want to throw away all of their modern tools. After all, both the expectations towards software, as well as the underlying hardware architectures have gotten considerably more challenging over the years.

But, like other important ideas and concepts, abstraction often becomes dogma, and by being applied toughtlessly, it can introduce the very thing it was meant to contain: complexity.

Continue reading

Flow vs. Typescript

February 15, 2017

At work we have a fairly large React Codebase that is about a year old and has been typed with Flow from day one. I always wanted type support in Javascript and at that time, Typescript was out of the question since it didn’t support many of the features I take for granted in my Javascript work (ES6/7 features, most importantly array and object destructuring). So we went with Flow, under the assumption that since both Flow and React are Facebook projects, they would work nicely together.

A year later, we are in the process of completely replacing Flow with Typescript. Over the last year, Typescript has added all the features I was missing, while Flow started to show serious problems. I want to list some of the individual points that made us switch and then give some advice for projects attempting the same.

Continue reading

AngularJS Controllers: Patterns for successful use

October 28, 2014

This post summarizes a talk I gave at the AngularJS Meetup Berlin in October 2014.

Controllers are are a vital but widely misunderstood part of AngularJS. Thousands of clueless articles and very unfortunate examples in the official documentation are helping to spread confusion instead of clarity about the proper use of controllers.

I want to shed some light on the issue and present how we use controllers successfully in the Contentful user interface.

Continue reading

Waddling Along

September 21, 2014

The world is not yet finished, but everyone is behaving as if everything was known. This is not true. In fact, the computer world as we know it is based upon one tradition that has been waddling along for the last fifty years, growing in size and ungainliness, and is essentially defining the way we do everything. My view is that today’s computer world is based on techie misunderstandings of human thought and human life. And the imposition of inappropriate structures throughout the computer is the imposition of inappropriate structures on the things we want to do in the human world.

Ted Nelson

Now, I want to add something to that and especially to the brilliant article I found that quote in. Something that is becoming increasingly clear to me over time.

I don’t like technological change very much.

I don’t like technology in itself, for its own sake.

I don’t like to create things I don’t need, to solve problems I wouldn’t have if some other solution hadn’t shaped those problems in the past.

I’m not looking for problems, not searching for them.

The ones that already present themselves are enough, and the technological issues are not the ones that matter.

In technology, almost nobody ever stops, looks back and tries to put the past into context. Everyone is always breaking new ground before understanding where we stand.

The question seems to always be “What can I do with this?”, not “What problem does this solve?”.

Now, while adventuring step by step into opportunities that present themselves as they appear is a sure way to make progress, but you won’t be able to influence your direction very much. You run into danger of getting hopelessly lost or end up in a place you don’t actually want to be.

By creating and creating myriads of aimless possibilities we’re making the world unnecessarily more complex, losing ourselves in it at the same time.

Continue reading

The Desktop Metaphor

December 8, 2013

It’s funny, lately I’ve been observing myself on multiple occasions sitting on the couch with three mobile devices: My Kindle, my iPad and my Phone, using them in parallel. A scene like this would not have raised any attention in Star Trek - the Next Generation, yet here it is being played out, in the reality of my living room.

picard-padds

So, this is our return from the round trip that has been the Personal Computer. The desk, as a workplace where you spatially arrange your documents to deal with them has been emulated by graphical operating systems inform of windows you could drag around and icons you would arrange on your screen.

The funny thing is, this has never actually really worked well. Unless you’re on a Mac with a big screen, you are far more likely to run your applications in full screen and merely switching between them. (This is because a) Windows, as opposed to the Mac, never really encouraged developers or users to work with apps in windowed modes and b) Until, the advent of 24-inch monitors and higher pixel densities, there just wasn’t enough room on the screen to display multiple apps in full fidelity at the same time.)

Now here I am, with three screens (“windows”) in retina resolution of different sizes. On one I am reading a book. On the second I’m either taking notes or looking things up in a browser. On the third I’m exchanging a couple of words with a friend through instant messaging or send an email to someone I just realized I would really like to see over christmas.

This is the traditional Desktop, literally the Top of my Desk (ignore for the sake of the argument, that I’m actually on a couch. What’s the difference even)? Just as before the personal computing revolution, I’m arranging different aspects of my work around me and interact with them individually, shifting my attention by grabbing one device and putting the other away.

This already works exceptionally well and there’s no denying that this is the direction we’re all headed. While I’m not convinced that the traditional computer with display, mouse and keyboard will ever disappear completely (Picard is still using one!), the future for most people will probably be a couple of independent tablets that are casually repurposed through software for whatever task is at hand.

The future is here. Over 300 years early.

10500200_3

Continue reading
Next

Impressum/Datenschutz

Powered by Jekyll with Type Theme