Blog Articles 136–140
While in the hospital, in the state of delirium, I suddenly realized that the ability to add numbers in parallel depends on the fact that addition is associative. (So, putting it simply, STL is the result of a bacterial infection.) In other words, I realized that a parallel reduction algorithm is associated with a semigroup structure type. That is the fundamental point: algorithms are defined on algebraic structures. It took me another couple of years to realize that you have to extend the notion of structure by adding complexity requirements to regular axioms. And than it took 15 years to make it work. (I am still not sure that I have been successful in getting the point across to anybody outside the small circle of my friends.) I believe that iterator theories are as central to Computer Science as theories of rings or Banach spaces are central to Mathematics. Every time I would look at an algorithm I would try to find a structure on which it is defined. So what I wanted to do was to describe algorithms generically. That’s what I like to do. I can spend a month working on a well known algorithm trying to find its generic representation. So far, I have been singularly unsuccessful in explaining to people that this is an important activity. But, somehow, the result of the activity - STL - became quite successful.
— Alexander Stepanov, in an interview on the origin and design of the C++ STL. This is a deeply profound way to approach programming and algorithm design, and is also at the heart of what the Haskell community has been doing for some time now. Seriously, if you’ve wondered why the Haskell library is riddled with Arrow, Category, Monoid, etc., it is to support exactly this mode of thought. A function declares exactly the type of data it requires, in terms of its necessary operations, and operates on any data matching that requirement. Incidently, this article combined with a lab discussion earlier in the week sparked the revelation that a lot of C++ template design patterns are an impenetrable implementation of type classes.
I pushed a new release of argparse4s today. It should reach Maven Central shortly.
Not much new:
- Update argparse4j dependency version
- Add support for Scala 2.10.0
- Move to GitHub
Have fun!
Published on Tuesday, January 8, 2013.
Open source is not a set of rules waiting to be gamed by corporate lawyers and lobbyists. It’s the pragmatic embodiment of an ideal called software freedom, based on the understanding that the flexibility to use, study, improve and share software is the essential dynamic of the new meshed society.
— Simon Phipps in an article on the incompatibility of FRAND patent licenses and F/LOSS. Not the core point of the article at all, but I think this bit nicely captures the fundamental synergy and compatibility between free/libre and open source software.
Published on Wednesday, January 2, 2013 and tagged with
politics and law.
That said, these were all (foreign) policy experts, not technologists. They all seemed to take it for granted that you could draw a line between “bad” products and acceptable / dual-use products. I tried to hold back from saying “every time you people try to come up with legal phrasings about what technologies are ok, you end up putting tools like mine on the wrong side of the line.” In retrospect, I should have said it more loudly.
— Tor project’s German Foreign Office trip report. There is a strong impedance mismatch between technology and law, that crops up everywhere from patents to copyright enforcement to law enforcement vs. dissent.
Published on Friday, December 28, 2012 and tagged with
immigration.
There is a strange idea going around among some anti-immigration politicians, pundits, and lobbyists that changing the law, e.g. to open up more visas or to retroactively welcome people to the country, undermines the rule of law.
If the law is not meeting the needs of the country, if it cannot be consistently enforced, if such enforcement would be unjust, then the law undermines the rule of law. Changing the law so that it can be more practically, consistently, and justly enforced upholds the rule of law by making the law something reasonable to get behind.
Further, holding the law as immutable is not rule of law, it is tyranny of law. Those of you who know your Old Testament stories might recall a couple in which the laws of the Medes and Persians, which cannot be revoked, play a key role. One involved Daniel getting a free night’s stay at Lion’s Den Inn and Suites. Another ended with a state-sponsored bloodbath as the only legal means of stopping a genocide.
If we care about rule of law, we must seek to make the law reasonable and just. Our other options are tyranny and lawlessness.