Somebody already figured out how to run an SSH server on the iPhone - and how to compile std unix tools for the phone as well. App=Website no more.
Hackers employed social hacking and malware they knew wouldn't be caught by anti-virus software to do cleverly executed digital break-ins. Testing your malware against common anti-malware software is coming soon to a techno-thriller near you. It's an obvious thing to do: Roll-your-own malware tested properly against all the known detectors, used sparingly to avoid unnecessary risk of detection and consequent development of immunity.
Here are some quick geek tips to optimize your Tour de France TV-watching beyond what the broadcast offers.
One of the annoyances of std (Danish) tour coverage is that the reporters suck with numbers. The coverage has improved lately, adding actually knowledgeable former rider Rolf Sørensen to the reporting mix, but still - we don't get the numbers we deserve, so we simply have to make our own.
The first thing we need to do is do our own timing - and why not use this convenient javascript stop watch (or your watch or your cell phone). Secondly, and this is where the reporters really suck, we need proper numbers for how fast the riders are going. The most useful numbers are time/distance instead of the usual distance/time. These numbers are both easier to observe, using the stopwatch, and more meaningful: Tour math is mostly about how much time difference a rider or group of riders can make up during the remainder of a climb or a race.
Third, to make sense of these times we need some sensible ideas about how fast the racers are actually able to go in different terrain. Here are some pointers observed during this years tour:
Geek-optimized tour watching involves timing the front groups as they pass landmarks and/or the official 20, 15, 10, 5 km gates, comparing these speeds to the incline exactly where they are. It then involves comparing time gains per minute to the peleton, figuring out from these numbers the speeds of the different formations on the road, figuring out time to the top, computing plausible total time gains losses. Checking relative performance along different parts of the route also. The many split times of the javascript stop watch are a great help here.
Mountain relevant speeds
km vs km/h | 10 | 15 | 17 | 20 | 22 | 25 | 30 | 35 | 40 |
0.5 | 00:03:00 | 00:02:00 | 00:01:46 | 00:01:30 | 00:01:22 | 00:01:12 | 00:01:00 | 00:00:51 | 00:00:45 |
1 | 00:06:00 | 00:04:00 | 00:03:32 | 00:03:00 | 00:02:44 | 00:02:24 | 00:02:00 | 00:01:43 | 00:01:30 |
1.5 | 00:09:00 | 00:06:00 | 00:05:18 | 00:04:30 | 00:04:05 | 00:03:36 | 00:03:00 | 00:02:34 | 00:02:15 |
2 | 00:12:00 | 00:08:00 | 00:07:04 | 00:06:00 | 00:05:27 | 00:04:48 | 00:04:00 | 00:03:26 | 00:03:00 |
2.5 | 00:15:00 | 00:10:00 | 00:08:49 | 00:07:30 | 00:06:49 | 00:06:00 | 00:05:00 | 00:04:17 | 00:03:45 |
3 | 00:18:00 | 00:12:00 | 00:10:35 | 00:09:00 | 00:08:11 | 00:07:12 | 00:06:00 | 00:05:09 | 00:04:30 |
3.5 | 00:21:00 | 00:14:00 | 00:12:21 | 00:10:30 | 00:09:33 | 00:08:24 | 00:07:00 | 00:06:00 | 00:05:15 |
4 | 00:24:00 | 00:16:00 | 00:14:07 | 00:12:00 | 00:10:55 | 00:09:36 | 00:08:00 | 00:06:51 | 00:06:00 |
4.5 | 00:27:00 | 00:18:00 | 00:15:53 | 00:13:30 | 00:12:16 | 00:10:48 | 00:09:00 | 00:07:43 | 00:06:45 |
5 | 00:30:00 | 00:20:00 | 00:17:39 | 00:15:00 | 00:13:38 | 00:12:00 | 00:10:00 | 00:08:34 | 00:07:30 |
5.5 | 00:33:00 | 00:22:00 | 00:19:25 | 00:16:30 | 00:15:00 | 00:13:12 | 00:11:00 | 00:09:26 | 00:08:15 |
6 | 00:36:00 | 00:24:00 | 00:21:11 | 00:18:00 | 00:16:22 | 00:14:24 | 00:12:00 | 00:10:17 | 00:09:00 |
6.5 | 00:39:00 | 00:26:00 | 00:22:56 | 00:19:30 | 00:17:44 | 00:15:36 | 00:13:00 | 00:11:09 | 00:09:45 |
7 | 00:42:00 | 00:28:00 | 00:24:42 | 00:21:00 | 00:19:05 | 00:16:48 | 00:14:00 | 00:12:00 | 00:10:30 |
7.5 | 00:45:00 | 00:30:00 | 00:26:28 | 00:22:30 | 00:20:27 | 00:18:00 | 00:15:00 | 00:12:51 | 00:11:15 |
8 | 00:48:00 | 00:32:00 | 00:28:14 | 00:24:00 | 00:21:49 | 00:19:12 | 00:16:00 | 00:13:43 | 00:12:00 |
8.5 | 00:51:00 | 00:34:00 | 00:30:00 | 00:25:30 | 00:23:11 | 00:20:24 | 00:17:00 | 00:14:34 | 00:12:45 |
9 | 00:54:00 | 00:36:00 | 00:31:46 | 00:27:00 | 00:24:33 | 00:21:36 | 00:18:00 | 00:15:26 | 00:13:30 |
9.5 | 00:57:00 | 00:38:00 | 00:33:32 | 00:28:30 | 00:25:55 | 00:22:48 | 00:19:00 | 00:16:17 | 00:14:15 |
10 | 01:00:00 | 00:40:00 | 00:35:18 | 00:30:00 | 00:27:16 | 00:24:00 | 00:20:00 | 00:17:09 | 00:15:00 |
10.5 | 01:03:00 | 00:42:00 | 00:37:04 | 00:31:30 | 00:28:38 | 00:25:12 | 00:21:00 | 00:18:00 | 00:15:45 |
11 | 01:06:00 | 00:44:00 | 00:38:49 | 00:33:00 | 00:30:00 | 00:26:24 | 00:22:00 | 00:18:51 | 00:16:30 |
11.5 | 01:09:00 | 00:46:00 | 00:40:35 | 00:34:30 | 00:31:22 | 00:27:36 | 00:23:00 | 00:19:43 | 00:17:15 |
12 | 01:12:00 | 00:48:00 | 00:42:21 | 00:36:00 | 00:32:44 | 00:28:48 | 00:24:00 | 00:20:34 | 00:18:00 |
12.5 | 01:15:00 | 00:50:00 | 00:44:07 | 00:37:30 | 00:34:05 | 00:30:00 | 00:25:00 | 00:21:26 | 00:18:45 |
13 | 01:18:00 | 00:52:00 | 00:45:53 | 00:39:00 | 00:35:27 | 00:31:12 | 00:26:00 | 00:22:17 | 00:19:30 |
13.5 | 01:21:00 | 00:54:00 | 00:47:39 | 00:40:30 | 00:36:49 | 00:32:24 | 00:27:00 | 00:23:09 | 00:20:15 |
14 | 01:24:00 | 00:56:00 | 00:49:25 | 00:42:00 | 00:38:11 | 00:33:36 | 00:28:00 | 00:24:00 | 00:21:00 |
14.5 | 01:27:00 | 00:58:00 | 00:51:11 | 00:43:30 | 00:39:33 | 00:34:48 | 00:29:00 | 00:24:51 | 00:21:45 |
15 | 01:30:00 | 01:00:00 | 00:52:56 | 00:45:00 | 00:40:55 | 00:36:00 | 00:30:00 | 00:25:43 | 00:22:30 |
15.5 | 01:33:00 | 01:02:00 | 00:54:42 | 00:46:30 | 00:42:16 | 00:37:12 | 00:31:00 | 00:26:34 | 00:23:15 |
16 | 01:36:00 | 01:04:00 | 00:56:28 | 00:48:00 | 00:43:38 | 00:38:24 | 00:32:00 | 00:27:26 | 00:24:00 |
16.5 | 01:39:00 | 01:06:00 | 00:58:14 | 00:49:30 | 00:45:00 | 00:39:36 | 00:33:00 | 00:28:17 | 00:24:45 |
17 | 01:42:00 | 01:08:00 | 01:00:00 | 00:51:00 | 00:46:22 | 00:40:48 | 00:34:00 | 00:29:09 | 00:25:30 |
17.5 | 01:45:00 | 01:10:00 | 01:01:46 | 00:52:30 | 00:47:44 | 00:42:00 | 00:35:00 | 00:30:00 | 00:26:15 |
18 | 01:48:00 | 01:12:00 | 01:03:32 | 00:54:00 | 00:49:05 | 00:43:12 | 00:36:00 | 00:30:51 | 00:27:00 |
18.5 | 01:51:00 | 01:14:00 | 01:05:18 | 00:55:30 | 00:50:27 | 00:44:24 | 00:37:00 | 00:31:43 | 00:27:45 |
19 | 01:54:00 | 01:16:00 | 01:07:04 | 00:57:00 | 00:51:49 | 00:45:36 | 00:38:00 | 00:32:34 | 00:28:30 |
19.5 | 01:57:00 | 01:18:00 | 01:08:49 | 00:58:30 | 00:53:11 | 00:46:48 | 00:39:00 | 00:33:26 | 00:29:15 |
20 | 02:00:00 | 01:20:00 | 01:10:35 | 01:00:00 | 00:54:33 | 00:48:00 | 00:40:00 | 00:34:17 | 00:30:00 |
Flat road relevant speeds
km vs. km/h | 40 | 45 | 50 | 55 | 60 | 65 | 70 | 80 |
0.5 | 00:00:45 | 00:00:40 | 00:00:36 | 00:00:33 | 00:00:30 | 00:00:28 | 00:00:26 | 00:00:23 |
1 | 00:01:30 | 00:01:20 | 00:01:12 | 00:01:05 | 00:01:00 | 00:00:55 | 00:00:51 | 00:00:45 |
1.5 | 00:02:15 | 00:02:00 | 00:01:48 | 00:01:38 | 00:01:30 | 00:01:23 | 00:01:17 | 00:01:08 |
2 | 00:03:00 | 00:02:40 | 00:02:24 | 00:02:11 | 00:02:00 | 00:01:51 | 00:01:43 | 00:01:30 |
2.5 | 00:03:45 | 00:03:20 | 00:03:00 | 00:02:44 | 00:02:30 | 00:02:18 | 00:02:09 | 00:01:53 |
3 | 00:04:30 | 00:04:00 | 00:03:36 | 00:03:16 | 00:03:00 | 00:02:46 | 00:02:34 | 00:02:15 |
3.5 | 00:05:15 | 00:04:40 | 00:04:12 | 00:03:49 | 00:03:30 | 00:03:14 | 00:03:00 | 00:02:38 |
4 | 00:06:00 | 00:05:20 | 00:04:48 | 00:04:22 | 00:04:00 | 00:03:42 | 00:03:26 | 00:03:00 |
4.5 | 00:06:45 | 00:06:00 | 00:05:24 | 00:04:55 | 00:04:30 | 00:04:09 | 00:03:51 | 00:03:23 |
5 | 00:07:30 | 00:06:40 | 00:06:00 | 00:05:27 | 00:05:00 | 00:04:37 | 00:04:17 | 00:03:45 |
5.5 | 00:08:15 | 00:07:20 | 00:06:36 | 00:06:00 | 00:05:30 | 00:05:05 | 00:04:43 | 00:04:08 |
6 | 00:09:00 | 00:08:00 | 00:07:12 | 00:06:33 | 00:06:00 | 00:05:32 | 00:05:09 | 00:04:30 |
6.5 | 00:09:45 | 00:08:40 | 00:07:48 | 00:07:05 | 00:06:30 | 00:06:00 | 00:05:34 | 00:04:53 |
7 | 00:10:30 | 00:09:20 | 00:08:24 | 00:07:38 | 00:07:00 | 00:06:28 | 00:06:00 | 00:05:15 |
7.5 | 00:11:15 | 00:10:00 | 00:09:00 | 00:08:11 | 00:07:30 | 00:06:55 | 00:06:26 | 00:05:38 |
8 | 00:12:00 | 00:10:40 | 00:09:36 | 00:08:44 | 00:08:00 | 00:07:23 | 00:06:51 | 00:06:00 |
8.5 | 00:12:45 | 00:11:20 | 00:10:12 | 00:09:16 | 00:08:30 | 00:07:51 | 00:07:17 | 00:06:23 |
9 | 00:13:30 | 00:12:00 | 00:10:48 | 00:09:49 | 00:09:00 | 00:08:18 | 00:07:43 | 00:06:45 |
9.5 | 00:14:15 | 00:12:40 | 00:11:24 | 00:10:22 | 00:09:30 | 00:08:46 | 00:08:09 | 00:07:08 |
10 | 00:15:00 | 00:13:20 | 00:12:00 | 00:10:55 | 00:10:00 | 00:09:14 | 00:08:34 | 00:07:30 |
10.5 | 00:15:45 | 00:14:00 | 00:12:36 | 00:11:27 | 00:10:30 | 00:09:42 | 00:09:00 | 00:07:53 |
11 | 00:16:30 | 00:14:40 | 00:13:12 | 00:12:00 | 00:11:00 | 00:10:09 | 00:09:26 | 00:08:15 |
11.5 | 00:17:15 | 00:15:20 | 00:13:48 | 00:12:33 | 00:11:30 | 00:10:37 | 00:09:51 | 00:08:38 |
12 | 00:18:00 | 00:16:00 | 00:14:24 | 00:13:05 | 00:12:00 | 00:11:05 | 00:10:17 | 00:09:00 |
12.5 | 00:18:45 | 00:16:40 | 00:15:00 | 00:13:38 | 00:12:30 | 00:11:32 | 00:10:43 | 00:09:23 |
13 | 00:19:30 | 00:17:20 | 00:15:36 | 00:14:11 | 00:13:00 | 00:12:00 | 00:11:09 | 00:09:45 |
13.5 | 00:20:15 | 00:18:00 | 00:16:12 | 00:14:44 | 00:13:30 | 00:12:28 | 00:11:34 | 00:10:08 |
14 | 00:21:00 | 00:18:40 | 00:16:48 | 00:15:16 | 00:14:00 | 00:12:55 | 00:12:00 | 00:10:30 |
14.5 | 00:21:45 | 00:19:20 | 00:17:24 | 00:15:49 | 00:14:30 | 00:13:23 | 00:12:26 | 00:10:53 |
15 | 00:22:30 | 00:20:00 | 00:18:00 | 00:16:22 | 00:15:00 | 00:13:51 | 00:12:51 | 00:11:15 |
15.5 | 00:23:15 | 00:20:40 | 00:18:36 | 00:16:55 | 00:15:30 | 00:14:18 | 00:13:17 | 00:11:38 |
16 | 00:24:00 | 00:21:20 | 00:19:12 | 00:17:27 | 00:16:00 | 00:14:46 | 00:13:43 | 00:12:00 |
16.5 | 00:24:45 | 00:22:00 | 00:19:48 | 00:18:00 | 00:16:30 | 00:15:14 | 00:14:09 | 00:12:23 |
17 | 00:25:30 | 00:22:40 | 00:20:24 | 00:18:33 | 00:17:00 | 00:15:42 | 00:14:34 | 00:12:45 |
17.5 | 00:26:15 | 00:23:20 | 00:21:00 | 00:19:05 | 00:17:30 | 00:16:09 | 00:15:00 | 00:13:08 |
18 | 00:27:00 | 00:24:00 | 00:21:36 | 00:19:38 | 00:18:00 | 00:16:37 | 00:15:26 | 00:13:30 |
18.5 | 00:27:45 | 00:24:40 | 00:22:12 | 00:20:11 | 00:18:30 | 00:17:05 | 00:15:51 | 00:13:53 |
19 | 00:28:30 | 00:25:20 | 00:22:48 | 00:20:44 | 00:19:00 | 00:17:32 | 00:16:17 | 00:14:15 |
19.5 | 00:29:15 | 00:26:00 | 00:23:24 | 00:21:16 | 00:19:30 | 00:18:00 | 00:16:43 | 00:14:38 |
20 | 00:30:00 | 00:26:40 | 00:24:00 | 00:21:49 | 00:20:00 | 00:18:28 | 00:17:09 | 00:15:00 |
Dagens historie om at fakturaer hos DKHostmaster kan nås med et HTTP GET request, og altså linkes til, kan udvikleren af siden da ikke være stolt af. Det er meget 1995-agtigt at lade være med at checke for HTTP metoden. Og det er ihvertfald ikke med på REST noderne, men det er måske også så meget forlangt. Måske oplever de det som en service - det er nemt og man kan sende en URL i en email.
DK-Hostmaster bruger PHP. Er der ikke en venlig PHP hacker der vil fortælle dem hvor nemt det er at sikre sig mod den slags?
Everybody knows that if they don't control the domain where their blog is or the domain where their email is, they have no control. Which of course is as true for IM and for the up and coming market for cross media presence as it is for email and blogs. Some combination of Atom/APP and Jabber (with SMS, RSS, etc. gateways) should solve this issue - but it needs to be packaged and included in Wordpress and Moveabletype - and hosted by commonly available webhosts, simply part of the standard makeup of a webhost. Including the option to download a usable archive of everything in one file.
This happy "we're OK and we were slashdotted" piece claims to say something about Rails not being a problem under load - but the solution suggested involves avoiding Rails calls like the plague with a completely custom made, Rails-agnostic caching solution.
[UPDATE: Much more interesting approach here]
The spreadsheet in the Open Office suite has a number of annoying features - the most ridiculous being the following dialogue which pops up every time you try to delete the contents of a cell with the delete key*.
This is wrong on so many levels. There shouldn't be a dialogue in the first place - the delete key is a simple option intended to just white out what you're pointing at. It's not a conversation starter. On top of that the unwanted dialogue is horrible with just too many options to make it convenient to grasp in one look.
*The idea is that backspace is the simple delete and delete offers something else - but this is non standard and therefore unintuitive and painful.
E.g. a TextCat derivative. There's absolutely no reason to trouble us bilinguals with choosing a language in a form since its easy to figure the language out from text - particularly if we narrow the choice to the languages the user installs.
Hmm - we're supposed to contribute to open source on our own I guess - so I should probably check if this is XUL/Javascript (more hackable) or C (probably a bridge to far for me right now)