Skip to main content


Showing posts from 2016

Sessions I moderated at the Cloudflare Internet Summit

In September of this year Cloudflare held its annual Internet Summit . I was asked to moderate three discussions. Videos of all the sessions have now been put online so folks who weren't able to attend in person (remember, it's free and open to the public), or watch the live stream aren't left out. My three sessions were... What Can We Expect from the Internet in 2020? I sat down with Ilya Grigorik  to talk about predictions for the Internet in 2020. Ilya is Web Performance Engineer at Google, author of High Performance Browser Networking  and an expert on Internet performance. Who Will Win the Cloud Wars? It was a privilege to sit down with  James Watters , SVP of Products at Pivotal, and John Engates , CTO at Rackspace to dig into what's happen with public and private clouds in the current 'cloud war'. The Fastest and Most Secure Internet is Closer Than You Think And, finally, Eric Rescorla from Mozilla and Jana Iyengar from Google (

The CloudFlare Internet Summit

This coming Thursday (September 15),  CloudFlare is holding its second Internet Summit  in San Francisco. This year, as I did last year, I will be on stage helping to moderate discussions. The summit is organized as a sequence of 'fireside chats' where one or two guests are on stage talking with someone from CloudFlare. Guests at the summit range from policy makers, to CEOs, to technologists. The goal is to talk about major issues affecting the growth, security and performance of the Internet worldwide. But without the talking being done by pundits, journalists or investors. The people invited to the summit are leaders, thinkers and doers, not professional talkers. Last Year Last year, for example, the President of Estonia  talked with CloudFlare CEO Matthew Prince to talk about Estonia's push to be a digital nation. We also had Andrew Ng from Baidu and Carmen Chang from NEA sit down and talk about the relationship between CloudFlare and Silicon Valley.

Lazy GNU make variables

GNU make has two 'flavors' of variable: simple and recursive . Everyone is familiar the the recursive style (which uses = for definition):     BAR = banana     FOO = one $(BAR), two $(BAR)s     BAR = guava The value of FOO is determined each time FOO is used. In a large Makefile that can mean that FOO is expanded over and over again. If expanding FOO is an expensive operation then determining its value each time can slow down the Makefile. For example,     TODAY = $(shell date +%d/%m/%y) would be very expensive is it would shell out to run date every time TODAY is used (and might have the strange effect of returning different dates if you run your make near midnight). (I've written about that before and in my book on GNU make ) The other flavor of make variable is simple : its value is fixed the moment it's defined:     BAR = banana     FOO := one $(BAR), two $(BAR)s     BAR = guava There FOO is set to one banana, two bananas and not one g

Le Sixième Élément : le code source dans le cinéma

Depuis les années soixante, les ordinateurs jouent un rôle important dans le cinéma. Parfois, ils jouent le rôle de méchants, parfois celui d’outils. Parfois ce sont les enemies jurés de l’humanité, parfois leurs amis. Mais quand un informaticien voit l'écran d'un ordinateur sur le grand (ou le petit) écran, qu'est-ce qu'il voit réellement? Est-ce que c'est du vrai code source ou n'importe quoi ?  Dans Terminator, Schwarzenegger voit un Apple II. Dans le Martien, on montre vraiment du code de la NASA. En revanche, dans Ironman, c'est du code pour un ordinateur LEGO.   Du coup, le code est parfois hilarant, fascinant, stupide ou révélateur. Il y a même des 'easter egg'.

Solving the SETI Decrypting Challenge

I spotted a challenge to decode a message received from a star 50 light years away. Well, at least a message that pretends to be from a star 50 light years away. The idea is if we were to receive a message like this would we be able to understand it.  The message is 1,902,341 binary digits. Clearly that needs chopping up in some way so I factored it and its prime factorization is 7 × 359 × 757. I suspected that the message was either an image or multiple images. After a bit of fiddling around (initially I thought it might be a single image made of 7 colours overlaid) it turned out to be 7 images of size 359 × 757. The code I used to generate the images below is here . The first image confirmed that we were going to see 7 images of size 359 × 757 as it has a horizontal white bar at the top spanning the width and a vertical column on the right giving the height. This first image is a sort of 'frame' indicating that correct way to view the images. The second

Setting up CloudFlare's Universal SSL and Origin CA on Plan 28

Although I work for CloudFlare there are some products that I haven't experienced as a customer and it's always fun and useful to actually behave as a customer and try them out. I like to do this to make sure the experience is good and try to spot bugs. CloudFlare recently released a feature called Origin CA that generates a certificate you can drop onto your web server to ensure that the connection between CloudFlare and the server is secure. CloudFlare also offers a feature called Universal SSL that offers free SSL connections for the connection between a web browser and CloudFlare. Put the two together and you've got SSL from browser to CloudFlare and CloudFlare to the origin web server. Neat. One of my domains,, had a web site that was served over HTTP and I decided to SSL it using CloudFlare. I'd seen it demoed but there's nothing like trying it out for yourself. It was really quick to get set up. is on CloudFlare's free tier

What the "Silicon Valley" Easter Egg code does and how

In the TV series Silicon Valley there was apparently a snippet of code presented that is part of a compression algorithm. The code (or at least part of it) can be executed and the the program will output: DREAM_ON_ASSHOLES The code itself has been published first as a screen shot , then as text and got some press . But I hadn't seen a good explanation of how it works. It looks pretty complicated but most of the code (written in C) is unused and the part that is actually executed is pretty simple (if you've spent years coding in C-like languages). Here it as presented: #include <stdio.h> #include <stdlib.h> typedef unsigned long u64; /* Start here */ typedef void enc_cfg_t; typedef int enc_cfg2_t; typedef __int128_t dcf_t; enc_cfg_t _ctx_iface(dcf_t s, enc_cfg2_t i){ int c = (((s & ((dcf_t)0x1FULL << i * 5)) >> i * 5) + 65); printf("%c", c); } enc_cfg2_t main() { for (int i=0; i<17; i++){ _ctx_iface(0x79481E6BBCC01223 +

Two factor paper passwords

I guess it makes me boring but I try to get people to use stronger passwords. People love to use the same password over and over again, or they invent some amazing scheme like the same single word followed by their birth year, or replacing a's with 4's. And no matter how many password database get hacked the idea that password security matters doesn't seem to really sink in. When I do get someone to listen I tell them to use diceware generated passwords and them write them down in a little book and guard the book jealously (actually, I tell them to use a password manager but most people seem to balk at using software I think for fear of losing their passwords). So I advise them to buy something like this and then keep a record of their passwords generated using diceware . Usually people seem happy to have something that creates them passwords like this: But then they often ask the sensible question: "What if someone steals that book?" And so I s

Apple's amusingly round reuse figures

If you take a look at Apple's Environment page you might well be impressed by the amount of reuse Apple is getting by taking back devices. The numbers look great: What's weird about these numbers is that they are round numbers. In fact they are very simple, round numbers. You just have to be using the right units. Just look at that... 2,204 lbs of gold. But wait! Isn't 1kg roughly 2.204 lbs? (Why, yes. It's 2.20462 lbs). So, sounds like Apple recovered 1,000 kg of gold. Now take a look at tin... 4,408 lbs... 2,000 kg. And silver... 6,612 lbs... 3,000 kg. And lead... 44,080 lbs... 20,000 kg. Here are the figures above converted to kg using 1 kg = 2.204 lbs. Steel 28,101,000 lbs = 12,750,000 kg Plastics 13,422,360 lbs = 6,090,000 kg Glass 11,945,680 lbs = 5,420,000 kg Aluminum 4,518,200 lbs = 2,050,000 kg Copper 2,953,360 lbs = 1,340,000 kg Cobalt 189,544 lbs = 86,000 kg Zinc 130,036 lbs = 59,000 kg Lead 44,080 lbs = 20,000 kg

Making the BBC micro:bit display the BBC Micro owl logo

Back in the 1980s I had a BBC Micro Model B. I still have that machine and repaired its power supply not long ago. The logo of the BBC Micro was a dot matrix owl: Well, I was lucky enough to be lent (for one evening!) the most recent incarnation of the BBC's attempt to teach Britain's children to code: the BBC micro:bit . It's a lovely little machine and I hope many children have fun programming it. Unfortunately, I suffer from the Demon Machine problem: show me a computer and I have to make it do something. Programming the device is really simple. There are multiple options and an online editor for each language. When you are ready to program the micro:bit it's trivial because the editor downloads a .hex file that you drag and drop onto the device (it appears mounted as a volume). I chose to use MicroPython and write a small program that displays the (old) BBC Micro logo (the owl above) on the micro:bit's 5x5 LEDs. Since the owl is much larger t

Finding free images for commercial use

From time to time (especially when writing for the CloudFlare blog ) I've needed to find an image that will help illustrate a piece of web writing. As I want to only use images to which I have a license and don't want to spend money the answer is... Creative Commons . And my first port of call is flickr which has nice options for searching for content by license. Typically when using an image from flickr I will add a caption to the image with the license type, a direct link to the image page on flickr and a direct link to the person who took it. For example, here are some Creative Commons cupcakes from flickr with an appropriate line of information about the image giving the license, image link and photographer. CC BY 2.0 image by Eugene Kim .