Saturday night I finished up a project I had started on Friday night, installing a fender-extender on the Connie.
While I hadn’t had any problems with crud getting thrown up from the front wheel, I just didn’t like the idea of that happening. There are a few vendors, but I went with Murph’s Fender Extender. They run a great shop, and cater to Connie owners.
Installation was pretty straightforward. After talking to the guys on the C.O.G. list about it, I realized that it really wasn’t necessary to take off the front wheel or the fender itself; rather I could install it while both were mounted and it would probably be OK. The hardest part was finding the glue.
Reading the directions on Murph’s page I find that they are a little more detailed than what came with the kit! Well, after clamping the thing for 10 hours and on top of that using two steel bolts bonded with red loctite; I think it should stay on there just fine.
Somehow I managed to purchase my Connie without noticing a little rust spot on the gas tank. You might say I was blinded by love? Whatever the case, it needed to be repaired.
The spot itself was tiny on the surface; about 3mm wide. Since I knew I could fix it well but not pretty, I figured this was a good chance to practice as I’m going to cover the tank with a tank-bra anyway.
The repair went really well. I scraped off the rust and crud with a razor first and followed it with 1000, 1500, and 2000 wet sand paper until the metal was a mirror like surface. After 2 coats of primer which were sanded down I added the base coat, two layers. The paint was color matched to my bike, but it was really thick; I’m wondering if I should have used thinner. Same goes for the clear coat! Well I am learning, that was part of the goal.
It is repaired now; the metal is protected, and the repair itself looks like it was done by a beginner. It is fine with me, though, as the cost of getting that fixed at a shop would justify getting the whole bike re-painted in one-go anyway.
Saturday afternoon I use diet cola and aluminum foil to clean the rust off of the chrome exhaust pipes. Yes, diet cola and aluminum foil.
After scouring the Internet searching for recipes to remove rust from chrome, I ended up with the following (in order of potency):
I didn’t want to use strong chemicals so I started with Soap & Water. That helped, but didn’t do much. The cloth and vinegar and cloth and cola didn’t do much either. Aluminum foil & Vinegar, though, that was the jackpot!
It took the rust off like a hot knife through butter. I was surprised, and my friends didn’t believe me. The exhaust pipes are like a mirror now. If you search around the Internet yourself you will find the claim made all over the place.
I can tell you that it works (but be sure to test it out in an inconspicuous area first in case it doesn’t work!).
Following the cleaning I used a razor blade to scrape off melted-on boot sole; and finally wrapped up with two coats of Carnauba wax.
On Saturday night I replaced the windshield bolts. A couple of them were missing, and the other problem was that some of the bolts were the wrong size. That lack of attention to detail is unacceptable when it comes to safety.
Since the last issue of the Chicken Gazette, Moritz Heidkamp polished the website compiler Hyde to produce the Chicken Gazette on the call-cc.org server. From now on, all issues can also be read on the web. A nice feature is the addition of an Atom feed to this site, so you can now point your favorite feed reader to http://gazette.call-cc.org/feed.atom and get your weekly update on Chicken delivered to your home! Thanks Moritz for this nice piece of work.
Further kudos go out to Manfred Wischner who kindly granted us the use of his beautiful chicken painting in the new Chicken Gazette logo. The original version can be found over at photocommunity.de.
1. New Infrastructure - Final Cleanups & Salmonella As An Aid For Egg AuthorsThe move to our new infrastructure is almost complete now. With a fix in Chicken's scheduler (see below), our fine webserver Spiffy now runs without glitches (so far), serving all of http://call-cc.org/ to you.
Also Salmonella, our testing framework for extensions, caught quite a few failing eggs. At the moment of writing we are down to 6. You can check the latest salmonella reports for yourself and if you are an egg author you can even setup an Atom feed for reports on your own (or your favorite) eggs. As Mario Goulart put it:
If you want to be notified when some egg breaks, you can subscribe to the egg feeds. They are updated when the the daily testing process fails. If you have a Subversion account for the eggs repository, you can create a custom file for you which summarizes the status for all the eggs you want to follow. Take a look at one of the custom files under the salmonella-custom-feeds directory. They generate feed files at http://tests.call-cc.org/feeds/custom.2. The Hatching Farm - New Eggs & The Egg Repository
The cleanup expanded over to the egg repository structure. Usually Chicken eggs are stored in the conventional trunk/branches/tags subversion hierarchy. Egg authors release an egg by tagging the trunk with the appropriate version number. This version number is then used by chicken-install and henrietta (the CGI script that runs on call-cc.org and its mirrors to deliver eggs) to determine dependencies. If an egg has not got a tag yet, the version is displayed as trunk. As this makes it hard for other authors to rely on an unversioned egg, Mario Goulart proposed the tagging and release of all these eggs. Progress of this action can be tracked on the bugtracker.
Other than that, there was also some development going on:
Also note that the egg repository crossed revision 20000 this week (the revision in question has been cunningly grabbed by a certain Mr Z). Keep those commits coming, everyone!
3. The Core - Bleeding Edge DevelopmentSince Spiffy at http://www.call-cc.org was experiencing occasional hangs after the infrastructure migration, a lot of investigative work was done to track down the issue. Felix suspected the scheduler to be the culprit and thus reworked it in the safer-scheduler branch which got merged into the experimental branch this week. Testing of the new scheduler is (as always) very welcome, especially if you have programs at hand which make heavy use of threads, of course.
Another effect of the safer-scheduler Chicken seems to be a significant performance improvement for Spiffy as Mario Goulart showed by wgetting the complete GNU Emacs manual (687 individual files totalling 6.3MiB) from it with the old and the new version. The timings are impressive: about 11 seconds with the old version and only 1.5 seconds with the new one, or as Mario put it: "It's like removing (sleep 8) from the code!" However, it is not yet entirely clear what the cause of this performance boost is since the new scheduler is not the only change that has been introduced in this branch so far. We'll keep you posted about further insights on this topic.
4. Chicken TalkOne rather active discussion at chicken-users this week has been started by Jim Pryor. Jim has packaged all eggs for Arch Linux a few months ago and is now in the process of upgrading those to their latest versions. However, he had a bit of trouble properly extracting the required meta data from the eggs which lead to a discussion about the state of packaging Chicken extensions for other package managment systems in general as well as the clean up flurry mentioned above.
Another interesting thread has been started by Christian Kellermann. He is asking about how to export functions from a Chicken library which can be called from C. Felix and Thomas Chust chimed in and gave some insightful advice.
On chicken-hackers there has been some activity regarding the plans of founding a legal entity for the Chicken project. Christian Kellermann had contacted Eric Kow of the Darcs project asking him about their experience with the Software Freedom Conservancy and shared his reply with us. Mario Goulart pointed out that the OpenEmbedded project uses a German e.V. as its legal entity which might very well be an option for the Chicken project, too.
5. Omelette Recipes - Tips and TricksThis is the first installment of a new Chicken Gazette section which will feature interesting Eggs and how to use them as well as general Chicken tips.
This week's featured egg is Hyde, the static website compiler which is used to generate the new Chicken Gazette website. Its intent and use are similar to those of Webgen or Jekyll. It allows mixing pages of different markup languages and generates a complete static website with a single command. It is not yet as feature-rich as its contenders but it's easy to extend and of course it enjoys the general merits stemming from being written in Scheme.
To get a general idea of how to use Hyde, check out the example session featured in its documentation. For a real-world use case, check out the Chicken Gazette's sources!
In the previous exercise we examined the working of the DES block cipher for a single 64-bit block. In today’s exercise we extend encryption to an entire file, following the procedures of FIPS 81.
In the descriptions that follow, Pi is the ith plain-text block, Ci is the ith cipher-text block, Ek is the encryption function with key k, Dk is the decryption function with key k, IV is the initialization vector, and ⊕ is the xor operation. There are four block modes:
The initialization vector is a 64-bit block given by the user as a “salt” to the cryptographic process. Padding gives the final block a length of eight bytes and can be accomplished in many ways, all of which must be reversible for either ascii or binary files. FIPS 81 specifies a method that never increases the number of blocks in the file, but requires an out-of-band indicator (say, in the message header) to specify whether or not padding was applied; that method is generally no longer used. Our padding method adds a byte of x80 followed by sufficient bytes of x00 to fill the final 64-bit block, so the message length always increases; in particular, a final block that is exactly eight bytes long causes another full 8-byte block to be added. It is simple to remove the padding; just remove all trailing x00 bytes and the immediately preceding x80 byte.
Of the four methods, ECB is probably the most-frequently used but also the least secure, since repeated blocks will be encrypted identically. Of the others, OFB is most resistant to bit-errors during transmission. If in doubt, CBC is always a good choice. Since there is no particular need for secrecy, the IV can be prepended as the first 64-bit block in the encrypted message (or the last block, or the nth block for some n agreed between sender and receiver), as long as care is taken that no IV is reused with the same key; thus, a common IV embeds the current date and time.
Your task is to write functions that encrypt and decrypt files using the four block modes described above. In the next exercise we will continue our examination of the Data Encryption Standard by looking at Triple DES, cryptographic hashing, and keying procedures. When you are finished, you are welcome to read or run a suggested solution, or to post your own solution or discuss the exercise in the comments below.
Yesterday I got the Clymer’s service manual in the mail from Murph’s, so with the Kawasaki service manual already in handy I’m ready for servicing my bike!
I’m very proud to announce Ocamlnet 3.0.0, a completely overhauled version of Ocamlnet.
Wish I had some problems that needed solving with ocamlnet!
(via caml-list)
Here is one person’s top ten list of ways to fail to obtain a PhD.
Interesting quotes:
Ph.D. school seems to be a magnet for every kind of procrastinator.
Advisors expect near-terminal Ph.D. students to be proto-professors with intimate knowledge of the challenges in their field. They should be capable of selecting and attacking research problems of appropriate size and scope.
A Ph.D. is a small but significant contribution to human knowledge. Impact is something students should aim for over a lifetime of research. Making a big impact with a Ph.D. is about as likely as hitting a bullseye the very first time you’ve fired a gun. Once you know how to shoot, you can keep shooting until you hit it. Plus, with a Ph.D., you get a lifetime supply of ammo.
It does not matter at all what you get your Ph.D. in. All that matters is that you get one. It’s the training that counts–not the topic.
(via ycombinator)
The Data Encryption Standard has been one of the most successful ciphers in history, and is still in use today, especially in its Triple DES variant. The Data Encryption Standard is officially described by FIPS 46-3, though if you are not fond of reading algorithm descriptions written by government lawyers there are many other descriptions available on the internet.
DES is a block cipher, operating on 64 bits at a time. Here is an example:
PT P r o g P r a x
HEX 50 72 6F 67 50 72 61 78
KEY 01 23 45 67 89 AB CD EF
CT CC 99 EA 46 B1 6E 28 90
There is more than one way to encrypt a message longer than 64 bits; we will examine them in a later exercise.
Your task is to write the code to encipher and decipher a single 64-bit block using the Data Encryption Standard. When you are finished, you are welcome to read or run a suggested solution, or to post your own solution or discuss the exercise in the comments below.
Just posted the updated version of DrSync for Racket on PlaneT.