Simon Richter: New year's resolution
"Do things on time."
Oh, wait.
"Do things on time."
Oh, wait.
I missed this one when it happened earlier
last month, but I'm still putting it on
my 2007 page of Bad Technology.
Thanks to a colleague for pointing it out.
Apparently MSN's Santa-bot made inappropriate
comments to children and was exposed in
Microsoft's
sex-obsessed RoboSanta spouts filth at children The
Register
After that, it was almost inevitable that it
would be taken off-line, even if just for a
short while, so I think the next headline
could have been predicted:-
Microsoft
kills Santa Claus The Register
What surprised me was the ham-fisted PR
attempt described in
Microsoft
accuses kids of bullying Santa into sex chat The
Register
If it was a mistake, then admit it. How did
it happen? Unruly programmers wanting
easter eggs
at Christmas, did someone
make the Santa-bot by modifying a porno-bot,
or was it a learning bot finally corrupted
by all the abuse it was sent - like Arnold on
UEA/tsw's #pubfood IRC?
Truly bizarre.
There might be some that are more popular than others, but the way development will happen will be much more divided into using different languages in the same project, where the different languages are suited for different things. This is the whole Polyglot idea.I'm dubious, and wonder what he would consider to be the underlying sociological and economic factors driving this change. Programming languages are, in the end, about people in all their weirdness, so to understand where languages are going to go, you have to consider those human factors, as I've attempted to do here. One trend that points to a slow proliferation of languages is of course the lock-in cited in my article. Today's big languages (Java, and on the web, PHP) won't just go away from one day to the next, just as C, Cobol and Fortran have not disappeared with the advent of Java. That process will continue, making it likely that new languages will carve out new territory for themselves rather than exclusively cannibalizing existing installations from older languages. This naturally leads (slowly) to more languages, even if the next generation has a Next Big Language. And why shouldn't there be one? Ola talks about a situation where various languages run and interact on top of a runtime (JVM). Isn't that similar to what we've had with C, though? Perl, Tcl, Python, etc... all run on top of C. Sure, the JVM is a step up from that in some ways, most notably GC, being a bit more consistently cross-platform, and having a wider array of libraries, but in the end, it still comes down to the network effects of being able to read and write a common language, whatever it runs on. Obviously, the network externalities of programming languages are not so strong that they hit a tipping point after which one language crushes all the others, but they are strong enough to consolidate leadership in one or a few languages. Programmatically, Jython, JRuby, (and Hecl?:-) may even find it easier to interact on the same platform, but the humans writing the code will still push for consistency and the minimum set of common tools in order to aid the sharing and review of code. Another way to look at it might be from an organizational point of view. Today's biggest fish in the pond, Google, only allows four languages for their production systems. What would a "no big language future" organization look like? I can't believe they'd welcome a big hodge podge of things. In conclusion, as computers are ever more widely used, it's certain that more languages will be utilized. However, it's also likely that from time to time a few languages, with one in the lead, will emerge as the leaders.

The last day of each year
sees one of the strangest
traditions I've ever noticed.
A 40-year-old English-language film of
an 80-year-old music hall comedy is
played repeatedly on various stations
in Germany - and in Austria, Switzerland,
Denmark and Australia too.
There's not only the film, but
edited versions, localised versions,
spoofs and other shows based around it too.
The film still isn't shown on any English
stations, as far as I can tell.
I'd never heard of it before getting
satellite TV.
So, to see what the fuss is about, grab your
Dinner for One times
(may contain annoying ads if
you switch Javascript on) and sit down with
the satellite TV
(best), or
enjoy this description and script
from analoguesat,
a German-language description
or
this BBC report
which includes this snippet:-
"To the end of his life, Freddie Frinton heartily disliked Germany and the Germans, thanks to his own wartime experience. He refused to allow a German-language version to be made. That is what has led to the extraordinary fact that today the Germans as a nation have embraced a trifling one-act play in English as their all-time favourite entertainment."Anyway, the last joke is on we English. It's much better than the aging boy bands on our TV at New Year, isn't it? (Updated 2008-01-03 with 1 comment)
I shall take this opportunity to join the "global warming? I'm freezing my bottom off here, thankyouverymuch" crowd.
Not much happening here, besides porting some code to Linux and still cursing Windows Installer, though.
Hope you had a good Christmas Day if you celebrate it. The cycling starts again already: RAI Sport Sat (free-to-air 13e) have highlights of today’s seventh Cyclocross World Cup event from Hofstade Belgium at 22:30 CET today (Wednesday). No idea whether it will be repeated… my recent predictions seem to have been a bit wrong.
Hofstade is the sixth elite men’s event to actually happen, after the cancellation of their race at the Milan round. Sven Nys of Belgium leads the elite men’s rankings by almost 500 points from compatriots Bart Wellens and Klaas Vantornout. Daphny van den Brand of the Netherlands leads the elite women by 340 points from USA’s Katherine Compton. 300 points for a win, then 260, 220, 190, 170, and so on. The contests aren’t over yet.
Update: It’s on again 22:30 CET today (Thursday) and repeated at 11:10 tomorrow (Friday) according to teletext.
RAI Sport Sat (free-to-air 13e) have a show called “Year of Cycling” at 17:15 CET today (Monday 24th). I’d expect it to be repeated later in the week, maybe tomorrow.
Brandon, back in my day, I compiled python-imaging on an Amiga 1200 with a 25 MHz 68040 and then uploaded through a 14.400 baud modem.
You youngsters have it easy these days.
With this patch, dpkg-buildpackage starts passing a new variable DEB_VARIANT into the package build process which can then be used by the package to customize itself on different systems.
As already written in the bug report, the prime candidates for this are the gcc package (which currently looks into /etc if it's building on Ubuntu, and then applies a patch that is left out on Debian) and packages often used on embedded systems, which could benefit from splitting out documentation and translations, but where we don't want that in the main Debian archive.
As usual, feel free to tell me that I'm on crack.

A Debian package is uniquely identified by its name and version; there is no further information taken into account by dpkg.
This keeps the packaging system rather simple, but has the disadvantage that all information that would otherwise be placed in extra data fields has to be encoded into these two fields. As the names of all binary packages generated from a single source package need to be known when building the .dsc file, no substitutions are allowed in the package name.
Back in the Good Old Days, the only extra bit of information in the name field used to be the SONAME from the library in the package (thus implicitly saying that each library should have its own package), which meant that the maintainer had to adapt the debian/control file every time a library's ABI changed. This being the Good Old Days, people writing libraries actually thought about things, so ABI changes were few and far between.
These days, libraries are stacked on top of each other, re-exporting the underlying libraries' ABI. The SONAME system could in theory handle these situations if the SONAME of every library whose ABI is re-exported is encoded into the SONAME of the newly built library. So if my own ABI version is "2", and some of the functions I export use types defined in glib, then after building against glib1.2, my SONAME would be somewhat similar to "2+glib1.2".
For languages that don't have a well-defined ABI (i.e. anything but C), the version of the language ABI(s) used will also have to be added.
Obviously, this would also have to be encoded into the package name, which is where trouble starts during transitions. The last C++ ABI transition had all C++ library maintainers add a suffix to the package name; dependent ABIs are not handled at all in Debian right now (which led to the libpng mess).
The existing encoding rules are not entirely formalized, and it is not guaranteed that they are bijective. For example, packages used together with cross compilers have been following the convention of using the name that the native package would use, followed by a dash, the target architecture name, another dash and the word "cross". There is no guarantee that the architecture name does not contain a dash, however, so we cannot simply take the second to last word as the architecture name if the last word is "cross" (think "libgcc1-kfreebsd-i386-cross"), which makes it difficult to write a plug-in to apt that would automatically download the binary for the target architecture and convert it using dpkg-cross.
I've decided to nonetheless go ahead with my request that the "-*-cross" part of the package name space be reserved for packages related to cross compilation; it will work for the time being.
Ian, what you have discovered is not ARM specific. A lot of cast expressions in use in today's software would actually be undefined behaviour, but compilers accept them anyway.
Write that code by explicitly reading the bytes from the array and ORing them together — it is the duty of the compiler to find out that the CPU can optimize this.
Today I was cold-called by someone announcing themselves as "UK
Bank Claim", a service of "the leading company", asking me questions
about my bank charges.
Now, that put my back up right away. I co-own
most of my banking service providers (aren't
cooperatives and mutuals great?), and
you can't get much more confusing service and
company names if you tried.
Then they claimed to be registered with the
Ministry of Justice, but I can find no mention of this registration
service on
the MoJ web site.
I've emailed the ministry to let them know.
The phone number they called is registered with the
Telephone Preference Service.
The call did not send any Caller Line ID and
refused to give a telephone number when asked, so I suspect it may have been from overseas.
I registered a TPS complaint nonetheless.
The caller gave me the domain theleadingcompany.co.uk which
is registered to The Leading Company ltd - UK Limited Company,
(Company number: 6081225), 28-32 church street, slough. Strangely, that is not
the Registered Address: Excelsior House, 3-5 Balfour Road, Ilford
Essex shown on their web site, nor the one listed at
Companies House:-
ROPE WALK SHOPPING CENTRE, ROPE WALK, RYE EAST SUSSEX - are companies
allowed to use multiple registered addresses?
I thought that was forbidden.
In short, who is this company, why are they claiming government
support and why are they allowed to behave like this this?
How far should I go with this?
Do you think I should contact
hedleycreative.co.uk (whose
email address is in their web source) and
ask them why they're working for
phone-spammers?
I guess I shouldn't waste any more time, but
I think it's worth publicising this behaviour
a bit, to try to avoid these people finding
unwary victims.
As part of my research, I may have to
conduct a survey among Debian contributors. The word "survey" usually elicits
frowns because surveys are often misconducted. MJ has taken the time to draft
up some advice to surveyors.
Problems with surveys generally fall into one of two categories: content and
presentation. I'll refrain from making statements about content (Wikipedia has
some stuff on questionaire construction) and instead
concentrate on presentation in the following.
Commonly in the digital age, surveys are administered via a web page or
e-mail. In my recent Ph.D. transfer report,
I identified a number of shortcomings with these approaches:
Asking Debian contributors to click radio buttons on a web page is a bit like
expecting a mountain biking champion to ride a tricycle across a paddock:
painful, if not offensive. Furthermore, web surveys can only be taken while
on-line, when most of us have better things to do.
E-mail surveys address some of these problems, but create new ones: answers
cannot be constrained to a domain (think multiple-choice), character set and
formatting issues make evaluation difficult, and it's impossible to prevent
users from attaching comments or modifying responses.
In thinking about the issue, I came up with a third means to administer
a survey: a console tool. Think of a Debian package which provides a console
application controlled by a study-specific data file. The data file specifies
the questions and their answer domains, and the tool presents those to the
participant. Since most of Debian happens on the console anyway, such an
approach to surveys seems more appropriate.
Interaction with the survey tool would be as easy as pressing the 2 or
4 keys to select one of the multiple choices, and the tool would
immediately move on to the next question (and not wait for the user to hit
enter). Obviously, n and p should allow navigation back and forth
across the set, and c would spawn a text editor to give the user a chance
to attach a comment to his/her current response, in which s/he might criticise
the question or provide additional information. Finally, the tool should be
able to pick up where it left off, should the user chose to exit/suspend the
survey for now. Integration with debconf or another interface abstraction
is also worth consideration.
There is more to it: people change their minds and should thus be able to
amend responses. With their consent, it might be valuable to track such
changes and inquire about their motivations. As I was thinking about how to
realise this, I suddenly arrived at version control: use Git as a backend storage. The set of cool features this
would enable seems to be endless: it works off-line and can be used to track
aforementioned changes, but also offers the possibility to create a squashed
result in case the participant prefers to submit only the final result.
Furthermore, it's a trivial change between anonymous submissions, and
submissions authenticated by a GPG signature.
In addition, the survey tool should be able to display questions according to
previous responses (control flow). For instance, if the survey determines that
a given user is a contributor to the bug tracking system, but not a project
member, it wouldn't make sense to ask when s/he received his/her Debian
account. Furthermore, questions could be dynamically creatable from context,
so that the survey can drill into depth depending on previous responses,
rather than asking the same questions to all participants.
I am currently applying for funding to outsource the development of such
a tool. If you are interested in coding it up and getting paid for it, speak
to me. Here are some more specifications to keep in mind before jumping on:
(continued from "This is Delicious Crack")
Essentially, a .msi file is a relational database, and everything that should happen during an installation is stored as an entity. The benefit is obvious: there can not be any bugs in the packaging that cannot be rolled back easily, as the Installer always knows what is happening.
Well, in theory.
This approach has a massive drawback: you cannot really do anything that was not anticipated. To solve this, the Installer allows you to provide a DLL that takes over a bit of the installation procedure - which still ought to be described in the database. When properly written, these DLLs can be reused and become a kind of standard, such as DIFxApp, which is the handler for device driver installation.
The last remaining difficulty here is that Visual Studio does not know hardware drivers at all (there is a separate SDK), and so it supports neither building nor installing them, which means that I have to edit the .msi file generated here by hand to add the information for the driver installer.
I got a Sony Ericsson k608i. It's fairly old and I don't like Sony
(rootkit distributors that they are), but it was very cheap... if I
didn't have the opportunity to use that, I'd've probably got one of
3's 50-quid Skypephones and ignored the Skype bit. I don't really
know enough yet to buy smart and I'm not a 3G Power Phoner, so I
suspect the bog standard would be good enough for me.
A week on, it works pretty well. 3mail seems to be free to receive
and read, so I can set my mail sieve to redirect copies from my
heavily-filtered inbox to it and then choose between 10p/mail replies
or 50p/day unlimited internet and use mujMail and MIDPssh. Typing on
the phone isn't much fun, but it's not too bad.
The speakerphone is good enough that I don't need to carry a headset
around with me and some of the free video like animated weather maps
are quite fun, but I'm not sure how much I'll use them. I usually
have access to a TV, after all. Even larger train stations often have
TVs around. 2.50 for unlimited access to BBC One, Three, News24 and
itv1 may be useful if there's something I really want to watch, but
I'd expect it to eat battery. Also, the video seemed to flake out far
too easily when moving on local trains.
The camera seems OK, although I haven't figured out how to make it
flash and I've not yet copied pictures off to a bigger screen or a
printer. I've got bluetooth working, but I think I also need to
install obex. I need more time.
Has anyone got either headsetd or alsa pcm type bluetooth working
well? My headset seems to have a very quiet microphone, is slow to
start and has been unstable so far.
(2007-12-12: 1 comment)
I'm back (again) but I'm not feeling 100%
well (again). I'll write about the various
events I attended and share the pictures as
soon as I get bluetooth file transfer working
(is that obex?) but here are some sites I
commented on recently:
The main project I'm currently working on for money is a device driver for an actual bit of hardware.
Since people working on Windows are slightly more used to the idea that money is exchanged for goods and services, this is the primary target platform.
After dealing with all the interesting bits concerning development on this platform, I now have a .sys, a .inf, a .dll and a .xsl to install. The DLL was easy, Windows Installer has special handling for COM DLLs; the XSL file was a bit tricky since it needs to be placed in a "special" directory that will be phased out before Longhorn (the documentation is that old...), and I'm completely lost on the other two as the Installer does not know about the special registration system for drivers at all.
At this point, I started entering the rabbit hole.
Next.