Omnifarious is currently certified at Journeyer level.

Name: Eric Hopper
Member since: 2000-12-18 11:34:17
Last Login: 2009-05-19 05:58:02

FOAF RDF Share This

Homepage: http://www.omnifarious.org/~hopper/

Notes:

I've been a C/C++ programmer for a long time. I've also been working on The StreamModule System for a long time. I've written one commercial application using it and numerous small test programs, including a port forwarder.

I also write small papers and essays on technical topics when the whim strikes me.

In an effort to get google to consolidate my online identity, here is a link to my ClaimID page: Eric Hopper' ClaimID

Interesting Advogato links:

Projects

Articles Posted by Omnifarious

Recent blog entries by Omnifarious

Syndication: RSS 2.0

27 Jun 2009 (updated 27 Jun 2009 at 18:08 UTC) »

Programmer's block

I've been working on coming up with a nice C++ (or, actually, C++0x) interface to Skein hash function.

Skein has an interesting tree mode in which it's possible to parallelize the hash function calculation to a significant degree. I wanted to write a general interface for this so I could make a command line utility that used it to test it against sha256sum command.

Applying a tree hash to an existing file is a no-brainer. But I wanted to be able to handle much more general cases in which the leaf data may not be available on a random-access basis. In particular if the file is coming in on stdin or something similar.

I was having difficulty coming up with a general extensible interface for this. Partly the interface for the system for handling leaf data needed a way to allocate chunks of leaf data to work on, and then release them. This would allow for a sliding window type approach to fetching leaf data.

My biggest and most recent breakthrough was realizing that the leaf data objects were like ::std::auto_ptr objects. I didn't want to force heap use, so I needed the data about a leaf to be copyable. But I didn't want to have to have any kind of silly reference counts or anything like that. So that meant I needed it to be moveable, not copyable. Just like auto_ptr. But auto_ptr is a klduge in C++. In C++0x there is a very nice concept called rvalue references that let you implement move semantics very cleanly.

It took me awhile to realize I wanted move semantics. I kept on beating on the interface and coming up with usage scenarios that were just awkward and broken. Once I figured it out, things went a lot easier.

Here is a link to what I finally came up with: skeintreepp.hpp.

Syndicated 2009-06-27 07:22:29 (Updated 2009-06-27 17:42:23) from Lover of Ideas

14 Jun 2009 (updated 14 Jun 2009 at 10:18 UTC) »

Number puzzle

Many years ago I was presented with an interesting puzzle. I did not solve it. I had to be told the answer. It is a very simple answer, but it isn't dumb. Figuring it out requires a significant leap of lateral thinking.

I figured I'd put it here for the amusement of others. Comments will be screened. I will eventually reveal the correct answer, but it may be a few months. :-) And now for the puzzle itself:

What is the next number in this sequence?

  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 20
  • 22
  • 24
  • 31
  • 100
  • 121

Syndicated 2009-06-14 09:08:24 (Updated 2009-06-14 09:09:35) from Lover of Ideas

24 May 2009 »

What I've been up to for the past few days

Well, actually, a whole lot of stuff, including spending some time with [info]klicrai and someone who tends to go by Crymerci online, but doesn't have an active LJ.

But, the topic of this LJ entry is the work I've been doing on creating a nice C++ interface for Skein, Bruce Schneier and friends entry into the NIST SHA-3 competition.

Anyway, I'm basing my work on the code in their NIST submission. And, as I said before, it's a nice C++ wrapper for Skein that attempts to give access to all of Skein's nifty features that are in excess of the NIST requirements. It's a hash function, it's a PRNG, it's a MAC algorithm! No, it's Skein!

One kind of gets the impression that Bruce and company are miffed by the fact that Rijndael was chosen over Twofish for the AES competition. And their response was to create a new algorithm that was faster, probably more secure, inordinately flexible and impossible to level the "it's too complicated to analyze effectively" criticism against. That criticism was one of the reasons Twofish wasn't selected in the AES competition.

Syndicated 2009-05-24 01:36:58 from Lover of Ideas

15 May 2009 »

Statistical patterns in primes

There is an interesting new result showing that the distribution of prime numbers obeys a modified version of Benford's Law. The result also shows that another sequence who's distribution is somehow fundamentally related to the distribution of primes, the 0s of the Reimann zeta function.

It is my feeling that results like this do not strongly affect the usefulness of prime number based cryptography algorithms like RSA. But this is just a guess on my part. Does anybody have a more definitive answer?

Syndicated 2009-05-15 01:18:23 from Lover of Ideas

12 May 2009 »

I sympathize with Dick here

The Daily WTF is a publication I generally really enjoy. Their recent article Java is Slow! is one I sort of take issue with.

I don't like Java or anything to do with it. I've said that before in this blog and I'll say it again. I can write a Python script to print "Hello world!" that takes less time to run than an equivalent Java program.

There are sweet spot for being simple to develop in, speed and language verbosity. Java completely fails to hit any of them. It has many of the ills of a compiled language with regards to how easy it is to develop in, and is even slower in many regards than most interpreted languages, and it's almost as verbose as COBOL.

And many of you will complain that Python is definitely slower than Java and point at benchmarks. The benchmark I care the most about though is "Hello world!", and that's a benchmark Java fails miserably at.

The reason I care so much about that particular benchmark is that Java's miserable failure at it is seen by people who want to use Java as a reason absolutely EVERYTHING should be in Java. Because the JVM is so expensive to start, you should only start it once, and then Java should become your OS.

I'm sorry, but no. Python has a perfectly acceptable VM, and it starts up in 10s of milliseconds or less. It's not compiled, so it's quick and easy to develop in, and maybe it isn't as fast in the long haul, but those other attributes more than make up for it.

If I really care about speed and want to use a compiled language, I will use C++. If I don't and I want a nice, easy to develop in language, I will use Python. Others can use Perl or Ruby if they want to. Java has no reasonable place in the development landscape, and it never will.

Syndicated 2009-05-12 22:41:22 from Lover of Ideas

119 older entries...

 

Omnifarious certified others as follows:

  • Omnifarious certified Omnifarious as Journeyer
  • Omnifarious certified baueran as Journeyer
  • Omnifarious certified Fefe as Journeyer
  • Omnifarious certified itamar as Journeyer
  • Omnifarious certified jaded as Apprentice
  • Omnifarious certified ali as Apprentice
  • Omnifarious certified sah as Apprentice
  • Omnifarious certified lerdsuwa as Journeyer
  • Omnifarious certified hacker as Master
  • Omnifarious certified kenelson as Journeyer
  • Omnifarious certified goingware as Journeyer
  • Omnifarious certified ModernRonin as Apprentice
  • Omnifarious certified hanksdc as Apprentice
  • Omnifarious certified Sarah as Apprentice
  • Omnifarious certified mjs as Master
  • Omnifarious certified dan as Journeyer
  • Omnifarious certified mobius as Apprentice
  • Omnifarious certified wsanchez as Master
  • Omnifarious certified sye as Journeyer
  • Omnifarious certified davewiner as Master
  • Omnifarious certified Xorian as Journeyer
  • Omnifarious certified xach as Journeyer
  • Omnifarious certified sgithens as Apprentice
  • Omnifarious certified mathgenius as Apprentice
  • Omnifarious certified xiphmont as Master
  • Omnifarious certified shlomif as Journeyer
  • Omnifarious certified alan as Master
  • Omnifarious certified gstein as Master
  • Omnifarious certified andrei as Journeyer
  • Omnifarious certified jbucata as Apprentice
  • Omnifarious certified usmile1 as Apprentice
  • Omnifarious certified jhyde as Journeyer
  • Omnifarious certified rachel as Apprentice
  • Omnifarious certified jdub as Master
  • Omnifarious certified Bram as Master
  • Omnifarious certified glyph as Journeyer
  • Omnifarious certified ask as Master
  • Omnifarious certified kwoo as Apprentice
  • Omnifarious certified RichardA as Apprentice
  • Omnifarious certified werner as Master
  • Omnifarious certified gary as Journeyer
  • Omnifarious certified Akira as Journeyer
  • Omnifarious certified ebf as Journeyer
  • Omnifarious certified mitnick as Apprentice
  • Omnifarious certified mdupont as Journeyer
  • Omnifarious certified domi as Apprentice
  • Omnifarious certified MisterP as Apprentice
  • Omnifarious certified connolly as Journeyer
  • Omnifarious certified MichaelCrawford as Journeyer
  • Omnifarious certified SIrabbi as Master
  • Omnifarious certified gobry as Journeyer
  • Omnifarious certified Zooko as Master
  • Omnifarious certified kvaneesh as Apprentice
  • Omnifarious certified dlecorfec as Journeyer
  • Omnifarious certified jds as Journeyer
  • Omnifarious certified brouhaha as Journeyer
  • Omnifarious certified jibbler as Apprentice
  • Omnifarious certified yeupou as Journeyer
  • Omnifarious certified kjwoo as Apprentice
  • Omnifarious certified ncm as Master
  • Omnifarious certified titus as Journeyer
  • Omnifarious certified pphaneuf as Master
  • Omnifarious certified kjw as Journeyer
  • Omnifarious certified parkerc as Journeyer
  • Omnifarious certified leio as Journeyer
  • Omnifarious certified oubiwann as Master
  • Omnifarious certified frehberg as Journeyer
  • Omnifarious certified elanthis as Journeyer
  • Omnifarious certified fallenlord as Journeyer
  • Omnifarious certified lllmanulll as Apprentice
  • Omnifarious certified cinamod as Master
  • Omnifarious certified jpick as Master
  • Omnifarious certified Burgundavia as Apprentice
  • Omnifarious certified orique as Apprentice
  • Omnifarious certified jgw as Apprentice
  • Omnifarious certified MarkAtwood as Journeyer
  • Omnifarious certified sfllaw as Journeyer
  • Omnifarious certified sussman as Master
  • Omnifarious certified slamb as Journeyer
  • Omnifarious certified helmut as Journeyer
  • Omnifarious certified mitsue as Apprentice
  • Omnifarious certified apenwarr as Master
  • Omnifarious certified obiltschnig as Apprentice
  • Omnifarious certified tonyyarusso as Apprentice
  • Omnifarious certified robogato as Master
  • Omnifarious certified StevenRainwater as Journeyer
  • Omnifarious certified ciphergoth as Journeyer
  • Omnifarious certified pesco as Apprentice
  • Omnifarious certified avassalotti as Apprentice
  • Omnifarious certified laburu as Apprentice
  • Omnifarious certified bradfitz as Master

Others have certified Omnifarious as follows:

  • Omnifarious certified Omnifarious as Journeyer
  • baueran certified Omnifarious as Journeyer
  • lerdsuwa certified Omnifarious as Journeyer
  • jaded certified Omnifarious as Journeyer
  • goingware certified Omnifarious as Journeyer
  • ali certified Omnifarious as Journeyer
  • dan certified Omnifarious as Journeyer
  • pphaneuf certified Omnifarious as Journeyer
  • stone certified Omnifarious as Journeyer
  • andrei certified Omnifarious as Journeyer
  • sye certified Omnifarious as Apprentice
  • ebf certified Omnifarious as Journeyer
  • mdupont certified Omnifarious as Journeyer
  • domi certified Omnifarious as Journeyer
  • gobry certified Omnifarious as Journeyer
  • SIrabbi certified Omnifarious as Journeyer
  • brouhaha certified Omnifarious as Journeyer
  • kjwoo certified Omnifarious as Journeyer
  • ncm certified Omnifarious as Journeyer
  • kjw certified Omnifarious as Journeyer
  • mitsue certified Omnifarious as Journeyer
  • aratype26 certified Omnifarious as Master
  • helmut certified Omnifarious as Journeyer
  • bcully certified Omnifarious as Journeyer
  • laburu certified Omnifarious as Journeyer
  • jcolinzheng certified Omnifarious as Journeyer

[ Certification disabled because you're not logged in. ]

New Advogato Features

FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

X
Share this page