Wednesday, January 25, 2006

Character Conversions from Browser to Database

Looks geeky.

Tuesday, January 24, 2006

what is the Unicode Mark of the Beast?

It should be obvious by now that Unicode is a tool for both good and evil. Now, it is also known that 666 is the Number of the Beast. The question now arises, what Unicode character is the Mark of the Beast?

Now, character 666 in Unicode, or U+029A in hexadecimal, is this innocent-looking thing:


Could it be the mark of evil?

Our other candidate is sneekier. Since hex is almost always used in discussions of unicode, maybe U+0666 (decimal 1638) fits the bill better:


This one also happens to be the digit "6" in Arabic. How convenient, as the Church Lady might say.

The Professional Device Hole

I don't normally take the time to read Freedom to Tinker, because it just gets me angry. This is no exception.

Not only will it protect Hollywood from the downside of the bill, it will also create new barriers to entry, making it harder for amateurs to create and distribute video content — and just at the moment when technology seems to be enabling high-quality amateur video distribution.

And this comment:

Who is a professional is a horrendous problem for reasons that nobody has mentioned yet: what about independent low budget filmakers? Will it be illegal to sell professional equipment to them because they “aren’t really professionals” or will they be chained down by rediculous DRM schemes?

This isn't only or even mostly about piracy, this is about stopping competition.

Monday, January 23, 2006

TPCI - TIOBE Programming Community Index

The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system.

This stuff is fun to look at, but I can't believe they so casually recommend picking a programming language based on how many people are currently using it. I think Paul Graham or ESR has a rant about that, somewhere.

Sunday, January 22, 2006, 2006-01-21

Wednesday, January 18, 2006

Monkeygrease Overview

Monkeygrease, Monkeygrease,
why do we sing of your fame?
Monkeygrease, Monkeygrease,
because we like saying your name.

(and also because it's a cool idea)

Thursday, January 12, 2006

proof that it works

import junit.framework.*;
import java.lang.reflect.*;
import java.util.Arrays;
* JUnit based test
* Created on January 12, 2006, 10:35 PM

public class DoNothingTest extends TestCase {

public DoNothingTest(String testName) {

protected void setUp() throws Exception {

protected void tearDown() throws Exception {

public static interface BunchaMethods {
void doVoid();
int getInt();
String getString();
Integer getInteger();
Object getObject();
int[] getIntArray();

public void testNewInstance() {

BunchaMethods b = (BunchaMethods) DoNothing.newInstance(BunchaMethods.class);

b.doVoid(); // nothing happens!

assertEquals( 0, b.getInt());

assertEquals( null, b.getString());
assertEquals( null, b.getInteger());
assertEquals( null, b.getObject());
assertEquals( null, b.getIntArray());



java code you shouldn't need, but sometimes do


import java.lang.reflect.*;
import java.util.Arrays;

* Creates a dynamic proxy that simply does nothing and returns null
* or "0", when any of its methods are called.
public class DoNothing implements InvocationHandler {

* Creates a do-nothing proxy that implements all the interfaces.
public static Object newInstance(Class[] interfaces) {
return Proxy.newProxyInstance(DoNothing.class.getClassLoader(), interfaces, new DoNothing());

* Creates a do-nothing proxy that implements one interface.
public static Object newInstance(Class iface ) {
return newInstance( new Class[]{iface});

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Class returnType = method.getReturnType();

// if the method isn't supposed to return anything,
// return null
if(returnType == void.class) {
return null;

// if we have a return value, return whatever it is
// that new arrays of our return type are filled with.
// this is a convenient way to get "0" as the right
// kind of primitive, or null for objects, in one
// line of code.
return Array.get( Array.newInstance(returnType,1), 0);


Tuesday, January 10, 2006

Uniform (

Blogging this now before I forget to read it.
Uniform is a java class library supporting runtime supertyping. In practice, that makes it somewhat like Latent Typing or Duck Typing.

This looks pretty damn cool. I'm going to tell people at work to look at it.

Thursday, January 05, 2006

MF Bliki: ImplicitInterfaceImplementation

Both Java and C# share the same model of pure interface types. You declare a pure interface by going interface Mailable, then you can declare you implement it with class Customer implements Mailable (in Java). A class may implement any number of pure interfaces.

One of the things this model ignores is that you have implicit interfaces whenever you have a class. The implicit interface Customer is all the public members declared on Customer. One thing that neither Java nor C# allow you to do is to implement an implicit interface - you cannot write class ValuedCustomer implements Customer.

Incompatibilities Between ISO C and ISO C

I don't work in an environment in which C is the main language, and I haven't since well before 1999, so I don't know how many people really use C99. When I think "C", I think C90. But this still makes for some interesting reading.

Tuesday, January 03, 2006


PIC_0198, originally uploaded by jeff_robertson.

Most unfortunate sign ever?