Tuesday, December 30, 2014

Monday, December 29, 2014

Wednesday, December 24, 2014

Tuesday, December 23, 2014

So, Germany now has a popular openly racist movement. Wehret den Anfängen.

Monday, December 15, 2014

Wednesday, December 10, 2014

Subaru in letter to me: "This is your final payment notice."

Subaru in letter to me: "This is your final payment notice."
Me super mad: "What is this? I don't owe you any money!"
My wife: "No, no, no, this is final as in final payment on our loan, you now actually own your car, not final as in We're sending grim looking guy to your door next week".

Tuesday, December 9, 2014

Brilliant visualization how small biases in individuals negatively impact group composition http://ncase.me/polygons/

Brilliant visualization how small biases in individuals negatively impact group composition http://ncase.me/polygons/ 
via Julian Harris 
http://ncase.me/polygons

Monday, December 1, 2014

COMIC: How Browsers Market Themselves


http://daverupert.com/2014/12/comic-browser-marketing/

What is faster: HTTP or HTTPS? Hint HTTPS by an order of magnitude.

What is faster: HTTP or HTTPS? Hint HTTPS by an order of magnitude.
Beautiful experiment visualization.
You should put your site behind SSL: Speed is just one of the reasons.
http://www.httpvshttps.com/
PS: Of course, the real win comes from SPDY which doesn't work with plain HTTP. You want to use that one as well, of course.
http://www.httpvshttps.com

Wednesday, November 26, 2014

This.

This.

"There’s a whole category of native apps that could just as easily be described as “artisanal web browsers” (and if someone wants to write a browser extension that replaces every mention of “native app” with “artisanal web browser” that would be just peachy)."

https://adactio.com/journal/7863

Saturday, November 22, 2014

Amazon really understands e-commerce:

Amazon really understands e-commerce:
Yesterday night, just before going to bed planning to read I typed "William Gibson" into Amazon on my laptop and then bought "The Peripheral" from the result page (not some detail page) using 1-click. I then went to bed and opened by kindle, pressed the home button to select the new book and the kindle realized: Malte, just finished this book, lets sell him the next in the series – so it asked, "Buy the next in the series"; I said Yes and so I bought 2 books with about 3-4 click on 2 devices in under 2 minutes.

Wednesday, November 19, 2014

My comment on Remy Sharp's excellent blog post https://remysharp.com/2014/11/19/my-five-promise-patterns:

My comment on Remy Sharp's excellent blog post https://remysharp.com/2014/11/19/my-five-promise-patterns:

The "Always end with a catch" pattern in probably not good advice. One should only add a catch if and only if one had wrapped the same program in a try-catch-block in a synchronous program.

If a catch is necessary to show the error on the console then that is a bug in the promise implementation; working around that in user code is bad because another party may add a catch block that may actually be handling the error but now it still goes to the console and your example just prints the stack but fails to print the error message – the library just can do a much better job at this.

Some promise libraries ship with this "bug" because in a purist view of promises (probably involving the word monad) it is not a nice that this requires adding catch handlers in the same execution stack as the promise was created – but real world programming has shown that there is absolutely nothing worse for programmer's productivity but an error that was thrown but then just "eaten" by the system instead of notifying the programmer. Basically you sit in front of a machine and it doesn't work, but it doesn't tell you why.

This is why Chrome changed the behavior: Uncaught promise errors will go to the console (works in Canary, apparently not yet in stable). I don't have a good list of promise libraries that do the right thing, but the one I work on does :) https://github.com/google/closure-library/blob/master/closure/goog/promise/promise.js
Another thing that goog.Promise does to help debugging is that it "throws" every explicit call to reject (https://github.com/google/closure-library/blob/master/closure/goog/promise/promise.js#L162). The error is immediately caught and ignored – but if you set your DevTools to "break on caught exceptions" it will also break for rejects – which is what you want since they are semantically equivalent to throws. 
https://remysharp.com/2014/11/19/my-five-promise-patterns

Friday, November 14, 2014

/me is preparing a study comparing various web comics about comparative studies of papers that were rejected for...

/me is preparing a study comparing various web comics about comparative studies of papers that were rejected for being too meta.
http://xkcd.com/1447/

Sunday, November 9, 2014

SPIEGEL ONLINE has a 24 hour live stream of the fall of the Berlin wall edited from various camera people who were...

SPIEGEL ONLINE has a 24 hour live stream of the fall of the Berlin wall edited from various camera people who were at the right spot at the right time. Page is in German but actual stream has no comment.
http://www.spiegel.tv/filme/mauerfall-neu-erlebt-kapitel1-m911/
http://www.spiegel.tv/filme/mauerfall-neu-erlebt-kapitel1-m911

Wednesday, November 5, 2014

Dear lazy+: What is the TL;dr of the election results in California and the bay area?

Sunday, October 26, 2014

I so wish I could play Sim City 2000 on any of my devices.

Wednesday, October 22, 2014

Andy Wingo, maybe the smartest person I know and probably the only person on the planet with major contributions to...

Andy Wingo, maybe the smartest person I know and probably the only person on the planet with major contributions to all open source JS VMs, tries to set up SSL TLS. Hilarity Sadness ensues.
http://wingolog.org/archives/2014/10/17/ffs-ssl

Tuesday, October 21, 2014

Tuesday, October 14, 2014

Of all talks I've ever seen, this one from Mathias Bynens had the highest rate of "Oh shit, I've written code with...

Of all talks I've ever seen, this one from Mathias Bynens had the highest rate of "Oh shit, I've written code with that bug in it. … Multiple times. Oh, and also that bug. That was like last week."
Mathias Bynens: JavaScript ♥ Unicode
https://www.youtube.com/watch?v=zi0w7J7MCrk

Monday, October 13, 2014

Inspired by a tweet by Kelly Ellis I made this image.


Inspired by a tweet by Kelly Ellis I made this image.

Wednesday, October 8, 2014

Sunday, October 5, 2014

OK, this is awesome. I want Internet Explorer 5.5 on my smart watch!

OK, this is awesome. I want Internet Explorer 5.5 on my smart watch!
http://youtu.be/GZx-LJH5J_I

Thursday, October 2, 2014

Scaling usage requestAnimationFrame and a solution for avoiding style recalculation more than once per frame.

Scaling usage requestAnimationFrame and a solution for avoiding style recalculation more than once per frame.

Recently some code that I wrote for Google internally was open sourced as part of the Closure library: "goog.dom.animationFrame"
https://github.com/google/closure-library/blob/master/closure/goog/dom/animationframe/animationframe.js

The library is quite interesting as it solves a big issue when working with browser animations in larger teams:

2 or more tasks want to do work in the same animation frame.

Say task 1 is animating your navigation while task 2 is animating some parts of the content.

In the worst case now the DOM operations look like this:

Animation frame:
Task 1 measures position of object A.
 - Triggers style recalculation
Task 2 changes position of object A.
 - Invalidates previous style calculation.
Task 1 measure position of object B.
 - Triggers another style recalculation
Task 2 changes position of object B.

The new library solves this with the following API:

var animationTask = goog.dom.animationFrame.createTask({
  measure: function(state) {
    state.width = goog.style.getSize(elem).width;
  },
  mutate: function(state) {
    goog.style.setWidth(elem, Math.floor(state.width / 2));
    animationTask();
  }
});

When code wants to schedule an animation frame, they have to supply two functions: One to measure the DOM and one to mutate it.

Because of this separation the library can serialize all the measure and mutate operations to happen in 2 phases: First all the measurements and then all the mutations.

Thus the operations against the DOM per animation frame now look like this:

Animation frame:
Task 1 measures position of object A.
 - Triggers style recalculation
Task 1 measure position of object B.
Task 2 changes position of object A.
Task 2 changes position of object B.

Note, how one style recalculation disappeared – and as more tasks are added this scales further without introducing any additional recalculations.

Besides this major feature, the library also solves the following problems:
- designed to minimize per frame memory allocation.
- designed to avoid accidental scheduling of the same work more then once per animation frame.

If this sounds useful, go ahead wrap the code in some module system of your choice and make your app a little silkier.
https://github.com/google/closure-library/blob/master/closure/goog/dom/animationframe/animationframe.js

Wednesday, October 1, 2014

Today marks 4 years of working at Google, which is 20% of another anniversary: 20 years of somebody being nice...


Today marks 4 years of working at Google, which is 20% of another anniversary: 20 years of somebody being nice enough to give me money for programming.
It all started in 1994 at a company called Integrated CASE and Concepts that hired me as an after-school-job to copy their manuals and floppy disks and then needed a website – with all their highly skilled Smalltalk engineers having no idea how this crazy new HTML thing worked. 

CASE, or Computer Aided Software Engineering, for you kids out there, was the dream of the 90s that if you would just punch at the problem long enough, some diagram drawing thing would bring the same productivity gains to software engineering that CAD brought to drawing complicated 3D models by hand. And here I am still typing this into a text editor.

It was great to learn Smalltalk (the programming language, the social skills came later or never) from some of the original OO people. I then proceeded to forget everything they taught me at least 3 times (after sufficient exposure to Perl, University and JavaScript) but enlightenment always slowly came back to me. Definitely being reminded of the VisualWorks debugger is the #1 trigger that brings out the grumpy-old-man in me.

Here is to another 20 years and the hope that we'll have time traveling debuggers[1] in 2024.

[1] Doesn't require major advances in physics although those would also help.

Tuesday, September 30, 2014

English speakers often make fun of German's long words – and rightly so.

English speakers often make fun of German's long words – and rightly so. In my personal unscientific way, however, I often have to disappoint them when I say: These aren't actually independent words per se, instead this is just a different spelling rule where compound words are constructed by joining independent words with zero characters where English sanely (and to great comfort of natural language processing algorithms out there) uses the space character. So, how would English look with the German spelling rule applied?

Here is Yonatan Zunger's recent insightful post https://plus.google.com/+YonatanZunger/posts/5zURdTM5xMW with the zerolengthcompoundwordjoiningrule applied:

When in the aftermath of 9/11, we created a "homelandsecuritydepartment," I was certain at first that it must be a bad joke; it combines the two most terrifying namingschemes of the twentieth century into one.

First, we have the one described in this article: "Homeland" was a favoriteword of the Nazis, and they used it to label everything. Because of this, the word disappeared from the politicallexicon of the western world after 1945; nobody in their right mind wanted to use it. 

The second is the general format: the twentieth century was also famous for a bestiary of ministries, departments, and committees of state-, national-, and homelandsecurity. I once asked a German friend of mine just how the press there translated the name of the DHS; she told me that for the obvious reason, they just left it as "DHS." That would be because Germany had its own statesecurityministry, the Staatssicherheitsministerium, or "Stasi" for short. The USSR had its statesecuritycommittee (Комитет государственной безопасности, or KGB for short); in fact, nearly every Communist dictatorship had something following this namingscheme.

I'm not sure what kind of collectiveamnesia, sick sense of humor, or thinlyveiledthreat was behind the decision to give it this name. 

PS: Besides the spelling aspect the word-character of these compounds, does seem to increase the likelihood of the compound word transcending above the original meaning leading to beautiful examples such as Zeitgeist, Weltschmerz and Schadenfreude.

This guy getting this office is everything that is wrong with politics.

This guy getting this office is everything that is wrong with politics. And this is coming from a 200% EU positive person.
https://gigaom.com/2014/09/30/hacked-celebrities-were-stupid-says-incoming-eu-digital-economy-and-society-chief/

Monday, September 22, 2014

This year at JSConf EU we used 3D Projection mapping to spice up the venue for the first time – and it worked much...

This year at JSConf EU we used 3D Projection mapping to spice up the venue for the first time – and it worked much better than I could have imagined – so much so, that I decided to write a blog post about it. Lots of animated GIFs and a video ahead:
https://medium.com/@cramforce/wtf-is-happening-d67a92937584
Direct link to the video of our opening which includes a live performance by Stuart Memo and Jan Krutisch WTF is happening? JSConf EU 2014 Opening
https://medium.com/@cramforce/wtf-is-happening-d67a92937584

Monday, September 15, 2014

Starting our journey back to the bay area. Hamburg, Copenhagen, San Francisco.

Sunday, September 14, 2014

Another GIF from JSConf EU.


Another GIF from JSConf EU.

Day 2 at JSConf EU


Day 2 at JSConf EU

Saturday, September 13, 2014

Opening my conference JSConf EU.


Opening my conference JSConf EU.

Wednesday, September 10, 2014

Setting up JSConf. #lasers


Setting up JSConf. #lasers

Sunday, September 7, 2014

Meanwhile in Germany: The radio news report that the electricity companies are worried that they can't take the...

Meanwhile in Germany: The radio news report that the electricity companies are worried that they can't take the sudden loss in solar power during an upcoming solar eclipse.

Wednesday, September 3, 2014

http://coloringforgrownups.com/

http://coloringforgrownups.com/
http://coloringforgrownups.com

What would you expect this to do:

What would you expect this to do:

Saturday, August 30, 2014

Germany. The other picture.


Germany. The other picture.

Saturday, August 16, 2014

<3 banksy.


<3 banksy.
Avoid "engaging" with this post if possible.

Friday, August 15, 2014

Was shooting this burger king commercial. But I'm sorry, you don't actually get wagyu beef at most locations.


Was shooting this burger king commercial. But I'm sorry, you don't actually get wagyu beef at most locations.

Sunday, August 3, 2014

Some Sunday fun: I created a map of all the places the JSConf EU attendees are from http://bit.ly/1pROQXN using...


Some Sunday fun: I created a map of all the places the JSConf EU attendees are from http://bit.ly/1pROQXN using Google Fusion Tables.

Friday, August 1, 2014

Amazing visualization of the mobility of historic figures in Europe (and towards the US) over the last 2000 years.

Amazing visualization of the mobility of historic figures in Europe (and towards the US) over the last 2000 years.
http://youtu.be/231zuH3uMwc

Monday, July 28, 2014

Excited about this week!


Excited about this week!

Sunday, July 27, 2014

RE: https://plus.google.com/+MalteUbl/posts/hDbF8SrGCub


RE: https://plus.google.com/+MalteUbl/posts/hDbF8SrGCub
My first ever brisket came out amazing. I followed
http://amazingribs.com/recipes/beef/texas_brisket.html
got up at 7, smoked the meat at 225F to150F for about 5 hours, then grilled it in aluminum foil for 3 hours at 225F to 203F and then stored it in a beer cooler to slowly cool down to 180F for another 2 hours.

Stand back, I'm making brisket.

Stand back, I'm making brisket.

Thursday, July 24, 2014

Wednesday, July 23, 2014

"The Leader of the Unfree World


"The Leader of the Unfree World
Mass incarceration, perhaps the greatest social crisis in modern American history, is without parallel on a global scale."
http://www.theatlantic.com/politics/archive/2014/07/the-leader-of-the-unfree-world/374348/
O_o Maybe the 10x health care spending leads to 10x people in prison.

Sunday, July 20, 2014

My new favorite product: Extra virgin olive oil with 0 calories.

My new favorite product: Extra virgin olive oil with 0 calories. Immediately bought 500 bottles for smooth calorie free vegetable oil flavor.
#USA   #USA  

Thursday, July 17, 2014

Building infrastructure for lunch.


Building infrastructure for lunch.

Tuesday, July 15, 2014

Apparently winning the world cup is even better when the games are so late at night that everybody is completely...

Apparently winning the world cup is even better when the games are so late at night that everybody is completely wasted by the time they end :)
Video of victory celebrations with lots of flags and drunk Germans.
http://m.bild.de/video/clip/wm-2014/nacht-der-sieger-36816516,wantedContextId=17410084,variante=S.bildMobile.html

Monday, July 14, 2014

Do I have to mention this is NSFW if it is after 5pm?

Do I have to mention this is NSFW if it is after 5pm?
College Humor's take on Net Neutrality. Do yourself the favor…
https://www.youtube.com/watch?v=xjOxNiHUsZw

There are only 2 kinds of people: Those who can fold an umbrella stroller without making the transformers sound and...

There are only 2 kinds of people: Those who can fold an umbrella stroller without making the transformers sound and those who can't.
https://www.youtube.com/watch?v=8JySDiW0psM

Saturday, July 12, 2014

Tuesday, July 8, 2014

The Ex-Google Hacker Taking on the World’s Spy Agencies | Threat Level | WIRED


http://www.wired.com/2014/07/morgan-marquis-boire-first-look-media/

Wow http://dinaburg.org/bitsquatting.html

Wow http://dinaburg.org/bitsquatting.html
"Bitsquatting refers to the registration of a domain names one bit different than a popular domain… Computers suffer from errors that manifest as memory corruption of one or more bits…"

Sunday, July 6, 2014

I know I'm like the millionth person to share this but this video is truly a milestone in cinematography.

I know I'm like the millionth person to share this but this video is truly a milestone in cinematography. At least filming of fireworks will never be the same again.
http://youtu.be/a9KZ3jgbbmI

Friday, July 4, 2014

Thursday, July 3, 2014

Saturday, June 28, 2014

Very insightful article.

Very insightful article.
""The thing about us businesspeople is that we love our customers rich and our employees poor.""
http://www.politico.com/magazine/story/2014/06/the-pitchforks-are-coming-for-us-plutocrats-108014_full.html#.U67PWJ_n8m-

Thursday, June 26, 2014

Being the soccer expert that I am, It took me until the score was updated to realize that Germany was playing in the...


Being the soccer expert that I am, It took me until the score was updated to realize that Germany was playing in the dark jerseys.
Not many people know you can just add +whatever to gmail addresses

Saturday, June 14, 2014

Just saw this in a presentation about security and LOLed a little bit.


Just saw this in a presentation about security and LOLed a little bit.

Tuesday, June 10, 2014

This morning my son learned how to open doors.


This morning my son learned how to open doors.

Saturday, June 7, 2014

RIP Alan.


RIP Alan.

Tuesday, June 3, 2014

The iOS WebView can now run fast JavaScript instead of artificially throttled.


The iOS WebView can now run fast JavaScript instead of artificially throttled.

Thursday, May 29, 2014

Meanwhile at JSConf Part 2.


Meanwhile at JSConf Part 2.

Meanwhile at JSConf


Meanwhile at JSConf

Wednesday, May 21, 2014

Me goes to other team: Could you be a bit careful with your submits we have a demo tomorrow morning, mkay?

Me goes to other team: Could you be a bit careful with your submits we have a demo tomorrow morning, mkay?
Me then goes ahead and breaks the build myself.

I'm super excited that we just open sourced JsAction – a tiny library for declarative event delegation.

I'm super excited that we just open sourced JsAction – a tiny library for declarative event delegation. Thanks Rui Lopes and Nathan Naze  for taking the time to untangle it from our code base and open sourcing it.

My current – not yet open source – framework is based on JsAction which is basically a way to say in the DOM: I care about clicks on this DOM node, please let me know under this "name" when there was such a click.

Via Joe McCann http://instagram.com/p/oQ9m2KjNnu/


Via Joe McCann http://instagram.com/p/oQ9m2KjNnu/

Tuesday, May 20, 2014

This stuff works! And i want to go back to Maui!

Monday, May 19, 2014

https://medium.com/medium-eng/122d8a40e480

https://medium.com/medium-eng/122d8a40e480
Garry Boyer this should be relevant to your former interest :)
Thanks Nick Santos for the writeup which brings back many painful memories. While you're at it you should change the Medium output to add schema.org markup for Article or BlogPosting! https://developers.google.com/+/web/snippet/
https://medium.com/medium-eng/122d8a40e480

Three Elements for the Standard-kings under the sky

Three Elements for the Standard-kings under the sky,
Seven for the XML-lords in their halls of stone,
Nine for Mortal Men doomed to die,
One for Hixie on his dark throne
In the Land of DOM where the Shadows lie.

From a late Friday afternoon commit description.
CC Web Components

Saturday, May 17, 2014

Researchers ... have solved one aspect of the discrete logarithm problem.

Researchers ... have solved one aspect of the discrete logarithm problem.
Unfortunately the release does not detail which aspect.
http://www2.cnrs.fr/en/2393.htm

Thursday, May 15, 2014

The best product.


The best product.

G+ posts shared as links (as opposed to reshares) on G+ now look pretty on desktop.

G+ posts shared as links (as opposed to reshares) on G+ now look pretty on desktop.
#MobileEventually

Tuesday, May 13, 2014

Safari is entering the eventually-fast JavaScript game with an extra layer of eventuality.

Safari is entering the eventually-fast JavaScript game with an extra layer of eventuality. I hope they also continue to push optimizing on the other end: for startup time which is the primary distinguishing element for the non-installed web.
https://www.webkit.org/blog/3362/introducing-the-webkit-ftl-jit/

Monday, May 12, 2014

Looking forward to the day when "native" and "web" apps will be indistinguishable and the only thing I have to say...

Looking forward to the day when "native" and "web" apps will be indistinguishable and the only thing I have to say to everyone who ever debated which one is better is: haha :)
http://xkcd.com/1367/
http://xkcd.com/1367

Sunday, May 11, 2014

Exploiting wind energy.


Exploiting wind energy.

Life time achievement: Made my first poached eggs ever.


Life time achievement: Made my first poached eggs ever. Learned that some of the tools described in the recipe were not optional. But tasted pretty good.

Truly the best comment in internet commenting history.

Truly the best comment in internet commenting history.
https://news.ycombinator.com/item?id=7027040

Saturday, May 10, 2014

Friday, May 9, 2014

On recommendation engines that are unaware of multiple contexts in life.


On recommendation engines that are unaware of multiple contexts in life.

Wednesday, May 7, 2014

Tuesday, May 6, 2014

Level 3 speaks out about continuous bad service by ISPs particular in the US.

Level 3 speaks out about continuous bad service by ISPs particular in the US.
"That leaves the remaining six peers with congestion on almost all of the interconnect ports between us. Congestion that is permanent, has been in place for well over a year and where our peer refuses to augment capacity. They are deliberately harming the service they deliver to their paying customers. They are not allowing us to fulfill the requests their customers make for content."
"All six are large Broadband consumer networks with a dominant or exclusive market share in their local market."
http://blog.level3.com/global-connectivity/observations-internet-middleman/
http://blog.level3.com/global-connectivity/observations-internet-middleman

I put my life in the hands of the "I'm feeling lucky" button in Google Music.

I put my life in the hands of the "I'm feeling lucky" button in Google Music. So much magic for $7.99 a month. #fanboy  
It also seems the machine intelligence has an elaborate plan to make me finally appreciate house music, by slowly mixing housy beats into the endless stream over otherwise more minimal electronica.

Monday, May 5, 2014

I know, I know, this isn't Instagram. But these are potatoes frying in bacon fat with bacon bits on top.


I know, I know, this isn't Instagram. But these are potatoes frying in bacon fat with bacon bits on top.

Damn you auto complete.


Damn you auto complete.

http://2014.jsconf.eu/


http://2014.jsconf.eu/

Saturday, May 3, 2014

The Zoo


The Zoo

Friday, May 2, 2014

Very insightful article.

Very insightful article. The key line is that while Glass may or may not be successful, something like it will. To me it is exciting that people now are experimenting with ux patterns for devices that will eventually be Moore's lawed (is it cool to use that as a verb?) into being tiny and unobtrusive .
http://www.techdirt.com/articles/20140416/16531326937/history-repeating-google-glass-getting-same-treatment-as-walkman-cameras-once-did.shtml

Thursday, May 1, 2014

Kirill Grouchnikov I made this useful chrome extension for you

Kirill Grouchnikov I made this useful chrome extension for you

function eclipseExperience() {
  window.permgen = [];
  setInterval(window.onscroll = window.onkeypress = window.onmousemove = window.ontouchmove = function() { window.permgen.push("memory") });
}

Monday, April 28, 2014

A very smart engineer 20 years ago put txt records into DNS for today.

A very smart engineer 20 years ago put txt records into DNS for today.
https://news.ycombinator.com/item?id=7664031

PAaaS (Personal Assistant as a service) is, of course, an actual thing.

PAaaS (Personal Assistant as a service) is, of course, an actual thing.
https://www.zirtual.com
h/t Mikeal Rogers 
https://www.zirtual.com

Best Product Name Experience Toolkit

Best Product Name Experience Toolkit
http://technet.microsoft.com/de-de/security/jj653751

I'm not generally a big fan of DHH but he did hit the nail on the head here (before starting to ramble about some...

I'm not generally a big fan of DHH but he did hit the nail on the head here (before starting to ramble about some rails specific stuff that is mostly giving 2005 flash backs.)

Test first can hurt API design by prolonging the time between API creation and first real world usage. It is a fine balance and often it is better to go test second.
http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html

Sunday, April 27, 2014

This is pretty sweet. http://sweetjs.org/

This is pretty sweet. http://sweetjs.org/
Mark Knichel, John Lenz Please bind me to a pole, so I don't go and abuse this :)

// Define the class macro here...
macro class {

  rule {
    $className {
        constructor $cparams $cbody
        $($mname $mparams $mbody) ...
    }
  } => {
    function $className $cparams $cbody
    $($className.prototype.$mname
      = function $mname $mparams $mbody; ) ...
  }
}

// An now classes are in JavaScript!
class Person {
  constructor(name) {
    this.name = name;
  }

  say(msg) {
    console.log(this.name + " says: " + msg);
  }
}
var bob = new Person("Bob");
bob.say("Macros are sweet!");

h/t Paolo Fragomeni 
http://sweetjs.org

Wednesday, April 23, 2014

Friday, April 18, 2014

Monday, April 14, 2014

Bug report

Bug report
There has been a major regression in furniture design since I last checked in 1969.

In all seriousness western society is widely failing to live in a nice environment. We're good at building building facades but the innards can largely only be described using the German word grobschlächtig.

Sunday, April 13, 2014

Working from home.


Working from home.
Courtesy of Ubiquity Networks http://www.ubnt.com/picostationm

Saturday, April 12, 2014

Tl;dr Apple uses open source project in their OS.

Tl;dr Apple uses open source project in their OS. Since they are not public APIs puts them on their private APIs blacklist. Rejects all other apps using the open source project.
It is like Google would not index your site because it is also hosted on Linux.
Maybe HTML isn't the future, but there sure will be a post app store world in which the freedom to publish will be restored to the level of the web.

http://rentzsch.tumblr.com/post/82453434093/apple-claims-mogenerators-methods

Thursday, April 10, 2014

Saturday, April 5, 2014

Wednesday, April 2, 2014

A handy guide to things that happen in technology

A handy guide to things that happen in technology

Is it a good thing when
- someone invents a new programming language? Yes
- someone invents a new database? Yes
- someone invents a new network protocol? Yes
- someone invents a new social network? Yes
- someone did something that may seem completely superfluous, redundant, NIH and stupid but has a tiny chance of advancing the art? Yes

I like this, although the article doesn't really do such a great jobs giving examples principles of software design...

I like this, although the article doesn't really do such a great jobs giving examples principles of software design in a library.
Cc David Li we should have something like this.
http://www.altdevblogaday.com/2014/04/01/principled-design/

Monday, March 31, 2014

Jad Boutros Thanks for teaching me how to mess up less often! Good luck with (N+1) endeavor!

On the internet the duration of each day is 48 hours.

On the internet the duration of each day is 48 hours.
#aprilfoolsday

My work workstation is called "nonblocking" (which it usually is unless I'm forced to start Eclipse).

My work workstation is called "nonblocking" (which it usually is unless I'm forced to start Eclipse). So, I have this script on my laptop called nb to log into the workstation and I'm sometimes confused and type nb when I'm already logged in. Eventually I created this script with the same name, implemented as
echo "YOU'RE ALREADY ON NB STUPID!!!"
Always makes my day :)
#thelittlethingsinlife

Monday, March 24, 2014

Sunday, March 23, 2014

Amazing story and awesome journalism by Polygon.

Amazing story and awesome journalism by Polygon.
Via Ariya Hidayat
http://www.polygon.com/a/street-fighter-2-oral-history

Fun fact: When my kid watches "Terminator" I will have to explain the concept of a phonebook, but not an autonomous...

Fun fact: When my kid watches "Terminator" I will have to explain the concept of a phonebook, but not an autonomous robot killing machine.

Via: https://twitter.com/AsaTait/status/446723785341677568

Saturday, March 22, 2014

Don't drink water, fish (and fishy mammals) ....


Don't drink water, fish (and fishy mammals) ....

Tuesday, March 11, 2014

iOS 7.1 introduces a minimal UI meta tag.

iOS 7.1 introduces a minimal UI meta tag. I find it weird that this should be opt in as it will make the safari experience differ per site, but it is definitely as awesome feature.
http://jsbin.com/bazen/1

Sunday, March 9, 2014

Power outlets in our new bedroom have USB outlets. Mind blown.
Does anyone know of a cheapish (<= $50) IP managed power switch (for 110 Volts)?

Thursday, March 6, 2014

Comcast is such a fail – it is hard to express.

Comcast is such a fail – it is hard to express.
I'm moving Saturday, so I ordered a transfer of service. This alone took me one hour, because I had to realize that the flow only works when not logged in – when logged in the website gets stuck in a stupid upsell flow trying to sell me some kind of TV service that has this weird concept of channels where you can't pick what you want to see.

Of course, you can't actually complete this online: They want to call you to finalize the transfer. OK. They tried calling me 3 times. Every time I picked up and there was nobody on the other end. 4th time it worked. After getting my details the person who called me put me on hold "for just a few seconds" and then I stayed there for 15 minutes until I finally hang up.

In related news internet service at my old house is super flaky, requiring a modem restart about every 15 minutes. Now tethering LTE over T-Mobile. Argghhh.

Saturday, March 1, 2014

#importantdata

#importantdata
http://en.m.wikipedia.org/wiki/List_of_films_that_most_frequently_use_the_word_%22fuck%22

Brilliant music video remixed from 80s dance movies.

Brilliant music video remixed from 80s dance movies. Also these guys played at my wedding, which was an awesome party until the police showed up and then still was after they left again with slightly reduced volume :)
http://youtu.be/IVUvBkvhlVk

After using this for conferences for many years and recommending it to lots of people, I finally made the switch...

After using this for conferences for many years and recommending it to lots of people, I finally made the switch myself to the best sub $10k (also sub $1k :) WIFI hardware
http://www.ubnt.com/unifi#apac

- supports 802.11ac and speeds of up to 1300 Mbps in the 5 GHz radio band and up to 450 Mbps in the 2.4 GHz radio band
- simultaneous dual-band operation with 3x3 MIMO technology for each band
- Range of up to 122 m (400 ft) and two Gigabit Ethernet ports
- Easy mounting - sleek wall or ceiling mount design sports unique LED provisioning square
- Power over Ethernet functionality

$295 at Amazon http://www.amazon.com/gp/product/B00D80J2XU/ref=ox_ya_os_product_refresh_C
http://www.ubnt.com/unifi#apac

Tuesday, February 25, 2014

This is insanely amazing: An eye ray traced with WebGL

This is insanely amazing: An eye ray traced with WebGL

http://www.vill.ee/eye/
http://www.vill.ee/eye

How to design a good API?

How to design a good API?

API design is incredibly hard, you'll get it wrong. The only way to make a good API is to take someone else's API, figure out why it sucks and then to try to fix that while copying every single other aspect that does not suck. So whenever you design an API you need to be able to answer the question for every element of it: Where did I "steal" this from and why is it not the same as the original?
And one of the best sources to steal from is yourself. I've been rebuilding the same framework roughly every 2 years since 2005 (possibly before but that becomes more paleontology) and it seems to be getting quite good by now; I'll still make a new one in a couple of years.
Because one will fail to design the perfect API, the only professional thing to do is to anticipate failure and plan accordingly. It is hard to say what that means: To me is currently means that for every API to build a less abstract/declarative/opinionated building block which can be easily assembled to form the API that I want, but which, if the API turns out to suck (which it will) can be reassembled to do something else.

Mr. Steve Jobs (see video) suggests to steal ideas in the general case of design – and APIs aren't even copyrightable (Right? Oracle? Right!), which was a wise decision by the forefathers of our laws to let us iterate on API design. So, does "stealing" an API mean to literally copy it? There is a good argument for that as it decreases entropy in the API universe making them easier to learn for your customers – but, I think, it should be OK to add a little artist touch to some of the things :)
http://www.youtube.com/watch?v=CW0DUg63lqU

Sunday, February 23, 2014

Saturday, February 22, 2014

The chart shows income-percentiles for US cities.


The chart shows income-percentiles for US cities. The difference between SF and Miami is quite staggering. SF has by far the widest range between 20th and 95th percentile. In related news: The percentage of bros on Valencia street has increased drastically over the last few months. Glad I'm moving away.
http://www.washingtonpost.com/blogs/wonkblog/wp/2014/02/21/how-rich-is-too-rich-it-depends-on-where-you-live/

This is gold!

This is gold! The bug that was fixed with the recent iOS release. Apparently OSX is still vulnerable, but the fog of war is strong on this one.

static OSStatus
SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams,
                                 uint8_t *signature, UInt16 signatureLen)
{
OSStatus        err;
...

if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
goto fail;
goto fail;
if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
goto fail;
...

fail:
SSLFreeBuffer(&signedHashes);
SSLFreeBuffer(&hashCtx);
return err;
}

Source Adam Langley's https://www.imperialviolet.org/2014/02/22/applebug.html

The real problem was this other piece of code I found in their code base
if (0) { goto fail; buyCovertyLicense(); }
#gotofail  
https://www.imperialviolet.org/2014/02/22/applebug.html

Friday, February 21, 2014

"Secure Transport failed to validate the authenticity of the connection.

"Secure Transport failed to validate the authenticity of the connection. This issue was addressed by restoring missing validation steps."

So, basically any connection on iOS that was supposed to be protected by SSL/TLS (aka HTTPS) was not. Upgrade now!

http://support.apple.com/kb/HT6147
http://support.apple.com/kb/HT6147

Tuesday, February 18, 2014

Today was a good day.

Today was a good day.
I wrote a very complicated program and was proud of myself for writing a very complicated program and then I deleted the complicated program and replaced it with a simple program.

This is big news for Chrome on Android, I think. Woot!

This is big news for Chrome on Android, I think. Woot!

Galaxy Note 3, Galaxy Note II, Galaxy S4, Galaxy S4 mini, Galaxy S4 Active, Galaxy S4 zoom, Galaxy S III, Galaxy S III mini, Galaxy Mega, Galaxy Light, Galaxy Note 8.0, Galaxy Tab 3, Galaxy Note 10.1 and Galaxy Note 10.1 2014 Edition.
http://gigaom.com/2014/02/18/samsung-android-kitkat-4-4-2-upgrade-list/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+OmMalik+(GigaOM:+Tech)

Sunday, February 16, 2014

Translating the ES6 yield keyword to ES5.

Translating the ES6 yield keyword to ES5.
By Peter van der Zee
Cc John Lenz
http://qfox.nl/weblog/313

Friday, February 14, 2014

That is some serious nerdiness about typesets.

That is some serious nerdiness about typesets.
Via Karolina Szczur
http://typesetinthefuture.com/moon/

Thursday, February 13, 2014

Why do I need to verify I am a cable subscriber when the same channel runs for free in 1080p over digital radio...


Why do I need to verify I am a cable subscriber when the same channel runs for free in 1080p over digital radio broadcast?

Saturday, February 8, 2014

Regression to the mean #california #weather

Wednesday, February 5, 2014

Via Valerio Veo


Via Valerio Veo

Since everyone seems to be sharing their good-old days data center war stories, here is my favorite: This was 2008...

Since everyone seems to be sharing their good-old days data center war stories, here is my favorite: This was 2008 when the internet was already pretty mature but online video and especially live video was still somewhat newish. A very creative agency came up with an idea to do a 21 day 24/7 live show driving up excitement for their customer's new thing – of course, they had no idea what it actually meant to produce such a thing, so they eventually reached out to us. While also having no idea what we were doing, we at least had just failed to successfully launch a live streaming internet startup, and so we agreed to pull this thing together in like 4 weeks.

Now, this would probably have been not very exciting, had the creative agency not had one actually very good idea: How to market the live stream? Just book every banner slot in Germany (i.e. the homepage of GMX) and show the live stream with no explanation. The banner had the what is likely a record in internet history: A click through rate of over 30% on the first day. This, of course, is mostly because of the novelty of live internet video in those days, but in the end it meant that we had to serve live video to what was a large percentage of people using the internet in Germany.

Actual serving was done by limelight networks (they got large by serving video for early YouTube). I attached a graph I still had around which shows 9 Gbs, which would have been about 20-30k concurrent streams. I don't remember what our actual peaks were.

The rest of the pictures show our on-site infrastructure. Everyone in advertising being cool, this was in a random house in some hip and gentrifying part of Hamburg, not in a TV studio. We had to get actual internet connectivity there. The pictures show our directed radio link and the even more horrible consumer DSL uplink (we used those redundantly).

Actual video production was still analog, thus the pictures show the encoders attached to 13 servers (2 streams, 3 bit rates, 2 x hot redundant (1 streaming via directed radio and one via DSL), 1 spare) which ran the On2 VP6 encoder on Windows (shiver).

The flash players we developed would automatically pick on of the redundant streams and fail over to the other one if there was a failure or move to a different bit rate. Power was not in any way redundant – the servers had a UPS, so they would not die hard upon power failure, but I think the cameras and video editing equipment was just plugged into the wall – but power did not fail :) The on2 encoders sometimes crashed but this wasn't a problem with the redundant streams and I think the direct radio link failed once, but overall this was a very successful project which shows that you can do everything if you are just sufficiently naïve.
#whatcouldpossiblygowrong