TEMP1= mktemp /tmp/tempenv.XXXXXX exit 1 perl $CONF_DIR/project.pl $@ > $TEMP1 if [ $? != 0 ]; then return fi . $TEMP1 rm -f $TEMP1There are several things wrong with this. First it uses a temporay file. Secondly it uses more processes than are required and thirdly it doesn't clean up after itself properly. If perl failed, the temp file would still be created, but not deleted. The last problem can be solved with some suitable uses of trap:
TEMP1= mktemp /tmp/tempenv.XXXXXX exit 1 trap "rm -f $TEMP" INT TERM EXIT perl $CONF_DIR/project.pl $@ > $TEMP1 if [ $? != 0 ]; then return fi . $TEMP1 rm -f $TEMP1 trap - INT TERM EXITOf course this can all be replaced with a single line:
eval $(perl $CONF_DIR/project.pl $@)
After boarding is complete, I sometimes walk to the business class purser and ask for today's paper. Since I usually fly in the evenings, Lufthansa stewards never deny this request for they are not going to need the paper anymore -- there's nothing more boring than old news. On Swiss flights, I always get a categorical "no" as the answer, the reason being that only business class passengers get papers. It's worth to note that Lufthansa has shelves with papers in the gate area, so I only rarely have to ask the in-flight crew, usually only when the Financial Times wasn't available for grabs. Swiss doesn't consider this an important service.
Cheap economy tickets are not rebookable. However, I cannot afford to spend twice or thrice the amount for a ticket, just to be flexible. I have often arrived at airports early. If I am on a Lufthansa flight, I can usually get switched to an earlier flight for free, or for the rebooking fee of 35 EUR. Swiss has never made a compromise. I have had to spend additional nights in a place just because there weren't any seats in my booking class, even though the flight was nearly empty. I know that Swiss is actually performing according to the rules. But one reason why I like Lufthansa so much is because they often bend the rules to please their passengers, no matter whether they are students or high-shot managers. Since Swiss wants to see themselves as the luxury airline, they have no concept of people who can't afford to pay shitloads. Typical Swiss, in some ways.
Lufthansa serves meals even on short flights if you fly between 18:00 and 21:00 hours. Swiss offers sandwiches whose consistency suggest they should be used to lessen the impact in case the airplane goes down, not eaten.
Lufthansa has great Florida orange juice. Swiss has some cheap crap from the supermarket.
Lufthansa serves free alcoholic beverages (incl. beer). Swiss charges Swiss prices (4 EUR for a 0,33 litre can of beer).
open-tcp-listener-accept-loop from Riastradh’s TCP proposal, and extended my own networking proposal to reflect this. For quick testing, I wrote a simple server that evaluates scheme code. No sandboxing or other fancies are implemented, but I think it shows pretty nicely how easy it is to build a multi-threaded TCP server in Scheme48. The code is available via lisppaste.
And to all of you that are like me still in 2005: An guatn Rutsch, und a guats neichs!
'(conjure cc) is a child of the logger named '(conjure).
This may all sound overly complicated, but getting started is very straightforward:
;; ,open spells.logging
(define log-info (make-log ‘(test) ‘info))
(configure-logger ‘())
(log-info “hello world!”)
make-log creates a logging procedure. Logging procedures take a single argument to be logged; the argument may be an arbitrary object; it is up to the handlers on how to go about formatting this object. The argument passed to the logging procedure is wrapped in a log entry, which additionally contains the log level.
The name of the logger that is to be used is '(test), and 'info is the log level. If the logger '(test) doesn’t already exist, it is created on the fly with no handlers and the root logger as a parent; it can be configured later. This separation of logger creation and configuration is important: In a real application, the logging can be configured from the command line or a configuration file; you don’t want to (hard-)code it into the same module that uses the logger.
(configure-logger '()) configures the root logger (which has the empty list as name) with a default configuration. configure-logger also has an optional argument in which you can provide a custom configuration, but I won’t go into this now, since this part of interface is most likely to change. The default configuration amounts to logging everything on (current-output-port).
Finally, we log a simple string through the logging procedure log-info. The output looks like this:
(test: [info] hello world!)
Well, enough of this for now; if you got curious you can take peek at the code.
I'll bet that we will look back of this era of quasi-networking and wince, "How did we ever live that way?" And the idea of wanting to carry all of your content with you will seem both old-fashioned and rather ridiculous.I was recently very happy to acquire a large quantity of data files (about 15 thousand), each of which would take me hours to days to do anything with. And I have a few hundred CDs and DVDs with a terabytes or so of achived data on them. There is probably more stuff here than I would ever be able to look at in a regular lifetime if that were all I ever did. I'm adding stuff to the collection regularly. All of this is data that is not freely available; some of it is private stuff like email archives, some more is music, and every other sort of digital media known to man. Except oddly, software, which is almost nonexistant from the hoard except for a few bits that slipped in by accident. The chance that I'll ever look at any single one of these files is probably on the order of one in a thousand, although it's certianly possible that a computer might look at them all and search out some that I will be more likely to look at. Even though I know that I will probably never use most of this stuff, I hold onto it as archives mostly because it's easier to do that, than to decide if I really need to keep it. Or to get it back if I mistakenly discard it. That basic tradeoff, plus the fact that it's very easy these days to aquire large quatities of data and hold onto it cheaply, are the main factors behind this hoarding. What I've described might seem extreme, but it's not very uncommon and most of the people reading this probably do it too, to some extent. But the really interesting thing to me is that if this data were the only data I was able to use, I'd be very unhappy and bored and unable to accomplish much. The interesting thing is all the other data that I don't bother hoarding, because it seems so likely that it will be easy to get it if I need it. Some examples of this data -- and there are untold terabytes of it out there -- include: the complete source and binaries for a dozen operating systems; the complete revision control history of a thousand free software projects; tons of archived web sites, concerts, and movies in the internet archive; every usenet post ever made; every mailing list post I've ever read (or ignored); dozens of bug tracking systems with millions of bug reports; probably not very good scans of any artwork of any significance; more ephemeral blog posts than even boing boing can link to, etc. I don't hoard that data. The tradeoffs dont make hoarding it worthwhile; it's easier to just hope that most of it will always be available, and use my limited resources to keep the small parts of it that I'm responsible for backed up and available to others. Which tends to feel like a better use of time and resources than hoarding data, by the way. I suspect that there is more of this sort of data out there that's important to me, than there is for the average person right now. After all, most people don't find old bugs in bug tracking systems and the history of software's modification in revision control systems interesting, and I understand there might even be a few to whom usenet archives from the 80's arn't fascinating. And I know that the amount of data out there that's important to me has gone up over time. So the big question to me is, will I begin to find my hoarded data is useless, will it ever stop being important, and will I stop adding to the hoard? Some technological advances, like faster bandwidth, could tilt the balance that makes some things worth hoarding now. But at least for me, data still seems to be worth hoarding if the cost of accessing it is more than the cost of keeping it on media, or if its future availability can't be guaranteed. There are a lot of services that don't meet these criteria, things like itunes, and bittorrent, and netflix. These things won't stop hoarding; they'll just make hoarding easier, despite themselves. If it were still the 80's I'd be hoarding nearly every freely available thing I listed 5 paragraphs above. Some of it no longer needs to be hoarded thanks to technological change, some of it due to new services, but it seems to me that the really important change that tilts the balance from hoarding data to not is a growth in trust, and a change in what kinds of data are valuable. I trust the Internet Archive. I (sorta kinda) trust Google. And so I trust them to keep their content available, and so I don't try to hoard it. More and more I find freely licensed data, whether it's Free software, CC licensed media, or whatever, to be more valuable than proprietary data. And because it's freely licensed it can be archived online for everyone, by everyone, with network effects, and no need for hoarding.
Nokia 770.set :repository, "you@example.com--archive/whatever--trunk--1.0"The "export" setting can be omitted if you really want baz to check out all the arch directories full of version control junk onto your live servers. Note that the repository follows a specific version. If you branch your deployed version, you'll need to change the repository to the new version.
set :scm, :baz
set :checkout, "export"
Next.