Categories
technology

I-want-itis

Every now and again I get a powerful dose of I-Want-Itis. This is when you just HAVE to have something. Previous doses of I-want-itis have lead to some interesting purchases including.

  • A Rock Extreme laptop
  • An Apple titanium PowerBook
  • A Nissan Pathfinder 4×4 (R made me buy it)
  • A Gibson Les Paul custom
  • A BMW 3.2L Z4 (R’s fault again :-))
  • an O2 XDA and XDA-IIi
  • A Zenith El Primero watch
  • A Seiko Kinetic Stingray Divers

There’s just nothing I can do to stop the bug. The lure of a shiny new toy is too great, sob 🙁 Each of these was a great purchase in it’s own right and I don’t regret them for a second. Except the last one hasn’t worked consistently for the past 4 years. I’m getting so fed up with having a really expensive and beautiful watch that just refuses to work despite ridiculous (500 bucks + ) charges every time I get it serviced. Therefore I’m in the market for a new watch. Something that combines the craftsmanship and rugged charm of my Zenith Rainbow with the durability of a G-Shock Casio. I think I may have the answer. Seiko, a company with a fine engineering heritage, have invented a hybrid mechanical-quartz movement called the Spring Drive. What’s that you may ask. Well, it uses an advanced version of the traditional spring powered automatic movement with a quartz-based electronic regulator (driven much like a dynamo on your bike) to electro magnetically controlling the movement of the wheels & levers known as “the escapement”. The result is a watch that performs near the accuracy of quartz with a beautifully crafted and decorated mostly mechanical 30-jewel movement. But enough of the technology. What does it look like? Outside Japan, few realise that Seiko manufacture a range of premium quality, mostly hand-built mechanical chronometers called “Grand Seiko”. The price of these is comparable with low to mid range Rolex and the performance is on a par with the best Swiss watches AT ANY PRICE.. They also manufacture a professional spec (PROSPEX) divers watch called the MarineMaster. I remember seeing the original 300 MarineMaster (MM) a few years ago. It’s very close to the Rolex Submariner in design and in my opinion is of comparable or better quality in every respect. If you don’t believe me, find one on ebay. You won’t be disappointed. So I guess I got a really bad dose of I-Want-Itis when I saw a cross between the Grand Seiko GMT with Spring Drive and the legendarily tough 300 Marine Master in polished titanium alloy. The result is shown below.

Seiko MM Spring Drive 600M

I love the classic design with the twist of features such as a sawtooth rotating bezel, the GMT hand & allen-key locks for the strap (look closely). The price is a Rolex-like 2700 euro & it’s only available from Japan or Hong Kong. I’ll try to resist but the smart/dumb money is on me buying one within the next 3 months, DOH!

Categories
technology

Snake-oil sales increase

Just read a compelling article from Grady Booch about the perils of believing the hyperbole surrounding Service Oriented Architecture. Personally I think SOA is a great idea but I’m struck by how similiar to the OMG’s CORBA it is and how, in effect, the real evolution is using a arbitrarily firewall traversing port and protocol for messaging. That semi-solved the messaging problem, delegated the security problem and the rest, as they say, is history… Thinking about Steven Vinoski’s comments about a service oriented approach I’m a little dissatisfied. The temptation to want blueprints and cookbooks for all problems is great but there’s a large inherent value in having these. Not to mention the peace of mind that comes with applying an industrially accepted architecture to a thorny issue like service meta-data. I’m too jaded to want to roll my own 🙂
To this end SOA standardisation is being seriously advanced by Steve himself and the other participants in the OpenSOA Collaboration which promises greater standardisation and hopefully industrial acceptance for SOA data layer and service composition technologies. Principally SDO and SCA. The value of service composition and the possibilities for workflow automation are compelling but what as Grady so eloquently puts it, what works so well in the powerpoint sandbox doesn’t yet translate to real world software systems.

Categories
technology

Who writes code like this?

The infamous International Obfuscated C Code winner from 1984. I have a sizeable bet that it’s Bjarne Stroustroup, the inventor of C++. However, Brian Kernighan is also a possibility. Send me your thoughts based on coding style etc.
int i;main(){for(;i["]
An explanation of the code goes something like this.
int i;main(){for(;i["]i;++i){--i;}"];read('-'-'-',i+++ "hell\
o, world!\n",'/'/'/'));}read(j,i,p){write(j/p+p,i---j ,i/i);}
==== add some whitespace ==========
int i;
main()
{
for (; i["]i;++i){--i;}"]; read('-' - '-', i++ + "hello, world!\n", '/' / '/'));
}
read(j, i, p)
{
write(j / p + p, i-- - j, i / i);
}
===== and char subtraced from itself is 0, and char or pointer divided by itself is 1 =====
int i;
main()
{
for (; i["]i;++i){--i;}"]; read(0, i++ + "hello, world!\n", 1));
}
read(j, i, p)
{
write(j / p + p, i-- - j, 1);
}
======= j is always 0, p is always 1, lets remove them ======
int i;
main()
{
for (; i["]i;++i){--i;}"]; read(i++ + "hello, world!\n"));
}
read(i)
{
write(0 / 1 + 1, i-- - 0, 1);
}
======= 0 / 1 + 1 is 1, subtracting 0 does nothing, decrementing a local variable this is never used afterward also does nothing =======
int i;
main()
{
for (; i["]i;++i){--i;}"]; read(i++ + "hello, world!\n"));
}
read(i)
{
write(1, i, 1);
}
======== replace read(i) with write(1, i, 1) =====
int i;
main()
{
for (; i["]i;++i){--i;}"]; write(1, i++ + "hello, world!\n", 1));
}
====== i[n] can be rewritten *(i + n) or *(n + i) ======
int i;
main()
{
for (; *("]i;++i){--i;}" + i); write(1, "hello, world!\n" + i++, 1));
}
=== as i gets incrimented, we dereference the next char of the string which is always non-zero till we hit the null terminator, all the matters is that the string is the same length as "hello, world!\n" =====
int i;
main()
{
for (; *("hello, world!\n" + i); write(1, "hello, world!\n" + i++, 1));
}
===== so now we can see we incriment i, printing out the next character of hello world till we hit the null terminator ====

With thanks to slashdot and Thomas Scovell (who has it tattooed on his arm)

Categories
technology

StringTree JSON

Just been having a look at StringTree’s JSON light and nimble JSON parser. Sure, it’s not validating but it’s very light. and ideal for basing a J2ME implementation on. Sure, there’s tavon’s JSON-J2ME library but that has unfortunate dependencies on J2ME polish which should best be avoided. I’ve got nothing against polish but a dependency is a dependency and Chris would not be happy. So I’m in the process of adapting StringTree to be a fast’n’lite non-validating JSON parser for j2me mobiles. I’ll let you know how I get on.