|
This is a blog of mcr at sandelman.ca |
Thu, 27 Dec 2007Some notes about our trip to Europe '07 In March 2007, Liam, Meaghan and I travelled to Prague and Florence. We went to Prague for IETF 68 (http://www.ietf.org/), and we went to Florence for fun.
We travelled KLM from Ottawa to Prague, by train from Prague to Florence, by train from Florance to Milan, and by KLM back to Ottawa.
A bus picked us up at the Ottawa train station and took us to the Montreal airport. We left on March 16, 2007. We had two suitcases, and a backpack. Liam had his car seat and an umbrella stroller. We had an allowance of 4 suitcases. Our suitcases were from Canadian Tire, and were a set of 4, each one that fit into another. We had a set like that already, and we got another one. We took the two biggest ones (one blue and one red), and we packed one of the smaller ones into the bigger ones, since we anticipating perhaps bringing stuff home with us. We brought diapers for about 5 days, giving us enough time to locate a source of diapers in Czech. At the montreal airport they took our stuff, and we learnt that the plane was full, so Liam wouldn't get his own seat. At the gate, we learnt that the plane was not a 767, but instead, a 747-400. This is a bigger plane, faster. But not as new. They delayed boarding us --- we learnt, perhaps not accurately, that the previous days' flight had been cancelled, and since there were many people who needed to be rebooked, that this was why they had put a bigger plane in. Once on the plane, we were told that we would have to wait another hour. WHY DID THEY BOARD US? How stupid. The reason: we can't land in AMSterdam before 7am, and the 747 would get there too fast. Initially, we were seated behind a bulkhead, but Liam is too big for the baby crib that they can attach to the bulkhead. A woman with one child was next to us initially. She had a 4 and half year old. Another woman arrived, they had been double booked. I understand overselling the airplane, but I don't understanding issuing two boarding passes. The second woman had a baby (infant) and a 5 year old girl. They agreed that they would take the seat next to us, and the other woman would move to another seat, since she didn't need the bulkhead for the infant crib. We found the accomodations on KLM to be distinctly below our expectations for KLM. Seats too small, plane too old, service not that great. At Schiptol we had some time, and Meaghan had some left-over wine from dinner. We found our gate, found that there was a security screen at it, and that it wasn't open yet, so we went back and ate expensive croissants. We also found Radia Perlman and Charlie Kaufmann sitting on the floor, waiting for the same connecting gate. (They are well known IETF types. Google them. I think they are a couple now! Oops. Maybe that's a secret.) The 100ml limit on "fluid" meant that Meaghan couldn't bring her half-drunk bottle of wine with her. The bottle was 125ml, but it was only half full. The Czech-air plane we got on was new. It had only made two flights before the one we were on. It was almost empty. When we arrived in Prague, our luggage arrived VERY quickly, but our gate-checked stroller and car seat took a long time to locate. We had arranged with the hotel to have a car pick us up. That worked well. It was just charged to our room. On the way in to town the fellow turned on the radio. I wish I could remember what song was on, but like in the intro to Unbearable Lightness of Being it was a popular song, but with Czech lyrics. I'll talk about our time in Prague later. It was less than 10C that week, which was annoying. It had been 13-17C the week before.
We had booked tickets on the train from Praha to Firenze. This was an overnight train from Praha to Munchen, and then a train from Munchen (Munich) to Firenze the next day, via the Austrian Alps (i.e. through Innsbruck). The trip through the alps would be in daylight. I booked on bahn.de, which was relatively easy, but they were unable to get me a ticket price. It was 300EU for the three of us. I wish I had paid a bit more for first class from Munchen to Firenze. There were three train stations listen for Praha. I picked one. The one I picked was not the main one. I hesistated to go to the main one. I wish that we had. The train actually started from there, and went to the smaller station (which had NOTHING). We were at the wrong end of the train, and had to run down the platform. I left the car seat on the first run, and went back for it, and then got on the train at the front, and walked to the back. We had a nice roomette — two bunks. Very nice train, very modern. At Munchen, we arrived, detrained, and found washrooms and breakfast. We arrived early, before 6am, and our train left at 9am. Liam had fun. Later we saw a seen from the movie Bourne Supremacy --- he walked right past a bar where Liam had been standing under a table. Had Liam been there when they filmed, he would have been in the scene! It's nice to know that it wasn't a fake set.. The train to Florence was full. It was hard to find a place for all our luggage. I hurt my arms and my back lifting it up to the overhead bins. I had to take painkillers and muscle relaxants for days. In my relaxed stupour, I must have turned my ankle one day on the cobble-stones, and not even realized it. We left on Thursday March 22 at 8pm, arriving in Firenze at 5:30pm on Friday March 23. We took a cab the four blocks to our hotel, since we didn't know how far it would be, and had too many bags. We had repacked my briefcase/laptop/etc. into our spare suitcase for this leg.
On March 29th, in the morning, we booked Trainitalia first class to Milan. We left at 9:30am. The day before, while booking the tickets, some gypsies nearly seperated Liam from us in the train station. We had two seats (should have booked three) next in the first class car next to two Americans (a couple) from San Jose who were travelling. We went to Milan, exited the station (which was under significant construction), failed to find the washrooms, and took a bus to Malpensa airport. The airport bus express dropped us at departures, and the hotel had a lot of difficulties with the idea that they would be picking us up from departures, rather than arrivals. I don't recommend them. From there, we took a hotel shuttle to our hotel and checked in. It was nearly 3pm by then, and Meaghan's cousin had called us back only that morning to confirm that we should visit. The hotel was very much un-impressive (the Crowne-Plaza Hotel). We a shower, changed and took the hotel shuttle back to the airport, where we caught the airport express train back downtown. The airport express train does not connect to the main inter-urban train station, but uses one of the two commuter rail stations. This is rather inconvenient for travellers who want to arrive/depart from Malpensa and see the rest of Italy by train. Malpensa is about 60km west of Milan. From there, we took the subway to the east side of Milan, where Meaghan's cousin picked us up. It was 5pm-ish by then, middle of the rush hour. We had dinner at her house with her husband and two kids, and then just before he went to work (he edits highlights from Italian soccer games for a sports news channel), he dropped us back at the subway. We took the subway back to the commuter station, learnt that after 9pm, it's a bus to the airport, and waited for that. The bus took us through the west side of Milan, along lots of boulevards and rows and rows of 5-storey apartments. (There is a word for that, but I forgot it). From the airport, we took the shuttle back to the hotel. We had some beer and wine at the bar (and milk), and we went to sleep.
Our flight from Milan/Malpensa left at 11am-ish. We didn't want to be in a rush in the morning. We could have stayed downtown really. There was no advantage to being at the airport hotel. Had it been right at the airport, it would be made more sense. We flew uneventfully to Amsterdam, had a bit of a rush across the airport (which included a stamp through passport control as we "left" Europe. I think that we entered it on the overnight train when we entered Germany). We then got on another rather crowded airplane, again a 747. This time, we weren't at the bulkhead, but we were in the middle, two seats on the left of the right-hand aisle. There was almost no space for me. Opening my laptop so that Liam could watch Thomas was a real challenge. He slept finally. We deplaned, did customs and then had to wait two hours for the KLM bus from Montreal to Ottawa. We ate at a very bad restaurant at the Montreal airport. What idiot decided to mix restaurants (that don't take kindly to luggage carts), into the space used by airlines to check people in? KLM needs to stop running their own bus --- instead use Voyageur/Greyhound, which run hourly buses, so that we don't have to wait so long. Or make a deal with VIA please. This entry was just about our travel. I didn't mention anything we did. posted at: 12:25 | path: /travel | permanent link to this entry Fri, 26 Oct 2007How to extend a file system using LVM/XEN You have a nifty XEN domU running on top of an LVM backed dom0. You run out of space, and you need to extend. It's not hard, but it can be tedious if you don't want to the domU down. The hardest part is making sure that there are no processes using the partition you want to extend, as you have to umount it. While ext2online (available in RH kernels, but not, as of 2.6.18, stock) permits you to expand the file system, unfortunately, with xen 3.1.0, extending the Logical Volume underneath does not communicate the new length to the domU. Usually, people miss the NFS exports. To unexport temporarily (which does screw any client using it), you can use exportfs. You need to give it the IP addresses (possibly with netmasks) that you wish to remove. They have to match. This is still easier than running exportfs -a -u, editing the /etc/exports and running exportfs -a, as it doesn't screw quite so many NFS clients. In these examples, tbm800-[~] root 1 #df -H /proj/thintropy/skeletons Filesystem Size Used Avail Use% Mounted on /dev/sde5 11G 8.0G 2.1G 80% /proj/thintropy/skeletons tbm800-[~] root 7 #umount /proj/thintropy/skeletons umount: /proj/thintropy/skeletons: device is busy umount: /proj/thintropy/skeletons: device is busy tbm800-[~] root 9 #exportfs -u 192.168.7.169:/proj/thintropy/skeletons tbm800-[~] root 10 #umount /proj/thintropy/skeletons Now, we need to know what the backend block device which was used
to mount the device. Unfortunately,
airbus-[/var/log/xen] root 10 #grep tbm800 xend.log | grep skeletons | grep DevController
[2007-10-09 09:32:02 xend 3682] DEBUG (__init__:1072) DevController: writing
{'domain': 'tbm800', 'frontend': '/local/domain/1/device/vbd/2117', 'dev':
'sde5', 'state': '1', 'params': '/dev/AirbusGroup0/tbm800skeletons', 'mode':
'w', 'online': '1', 'frontend-id': '1', 'type': 'phy'} to
/local/domain/0/backend/vbd/1/2117.
[2007-10-09 10:43:49 xend 27521] DEBUG (__init__:1072) DevController: writing
{'domain': 'tbm800', 'frontend': '/local/domain/14/device/vbd/2117', 'dev':
'sde5', 'state': '1', 'params': '/dev/AirbusGroup0/tbm800skeletons', 'mode':
'w', 'online': '1', 'frontend-id': '14', 'type': 'phy'} to
/local/domain/0/backend/vbd/14/2117.
Note the 2117. We need to know the domain-ID, as well. airbus-[/var/log/xen] root 11 #xm list tbm800 Name ID Mem(MiB) VCPUs State Time(s) tbm800 14 192 1 -b---- 7812.5 airbus-[/var/log/xen] root 12 #xm block-detach Error: 'xm block-detach' requires 2 arguments. Usage: xm block-detach <Domain> <DevId> Destroy a domain's virtual block device. [1] 31565 exit 1 xm block-detach airbus-[/var/log/xen] root 13 #xm block-detach 14 2117 Now, we can manipulate the LV: airbus-[/var/log/xen] root 14 #lvextend -L +10G /dev/AirbusGroup0/tbm800skeletons Extending logical volume tbm800skeletons to 20.00 GB Logical volume tbm800skeletons successfully resized Next we can attach the block device again. We need to know some details, but they are in the config file:
airbus-[/var/log/xen] root 15 #grep tbm800skeletons /etc/xen/tbm800
'phy:/dev/AirbusGroup0/tbm800skeletons,sde5,w'
airbus-[/var/log/xen] root 16 #xm block-attach
Error: 'xm block-attach' requires between 4 and 5 arguments.
Usage: xm block-attach <Domain> <BackDev> <FrontDev> <Mode>
Create a new virtual block device.
[1] 31646 exit 1 xm block-attach
airbus-[/var/log/xen] root 17 #xm block-attach 14 phy:/dev/AirbusGroup0/tbm800skeletons sde5 w
On the domU, again, now we can resize things: tbm800-[~] root 12 #e2fsck -f /dev/sde5 e2fsck 1.40-WIP (14-Nov-2006) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/sde5: ***** FILE SYSTEM WAS MODIFIED ***** /dev/sde5: 323289/1310720 files (1.4% non-contiguous), 1979906/2621440 blocks And finally, the resize operation: tbm800-[~] root 14 #resize2fs /dev/sde5 resize2fs 1.40-WIP (14-Nov-2006) Resizing the filesystem on /dev/sde5 to 5242880 (4k) blocks. The filesystem on /dev/sde5 is now 5242880 blocks long. tbm800-[~] root 15 #mount -a tbm800-[~] root 16 #df -H /proj/thintropy/skeletons Filesystem Size Used Avail Use% Mounted on /dev/sde5 22G 8.0G 13G 40% /proj/thintropy/skeletons tbm800-[~] root 17 #exportfs -a The device is now 22G in size. posted at: 00:59 | path: /howto | permanent link to this entry Thu, 04 Oct 2007Holy life immitates art batman! http://blag.xkcd.com/2007/10/01/the-meetup/
posted at: 03:01 | path: /oss | permanent link to this entry Some highlights of pictures from 200 7 http://www.sandelman.ca/lrmr/photos/2007-09/img_4628-9-0.html http://www.sandelman.ca/lrmr/photos/2007-09/img_4638-9-0.html In our house, a lot of trains are built. Many are operated by cookie monster. The result, however, is usually disaster:
http://www.sandelman.ca/lrmr/photos/2007-08/img_4418-8-0.html Oh, and Diesel is evil:
I made this:
and again, the next weekend, for the second party:
http://www.sandelman.ca/lrmr/photos/2007-05/img_4049-5-0.html No trains at all:
posted at: 02:46 | path: /children | permanent link to this entry Wed, 19 Sep 2007how to test Ruby On Rails RESTful I had a bit of a mystery while trying to test out how RESTful routing of Ruby on Rails worked. My controller looked like:
respond_to do |format|
format.html # show.rhtml
format.yml {
text = ''
text = boottime.logical_host.macaddress + ":\r\n"
text += " geometryX: " + lastcc.geometryX.to_s + "\r\n"
text += " geometryY: " + lastcc.geometryY.to_s + "\r\n"
render :context_type => "text/yaml", :text => text
}
end
and my test case looked like:
get :show, :id => mac
When I first tried doing:
get :show, :id => mac+'.yml'
it failed to work. That's now how to do it. I went through many attempts, and finally realized that the extension should be "yaml" not, "yml" (and in the respond_to) as well.
get :show, :id => mac, :format => 'yaml'
assert @response.body.include?("geometryX")
assert @response.body.include?("geometryY")
works. Silly me. posted at: 15:18 | path: /oss | permanent link to this entry Sat, 15 Sep 2007Thank for the replies. I received 27 replies... this linkedin thing is actually useful. Although there was no way for me select people who were in Canada, and therefore likely to own a .ca domain. I had to go through my linked in contacts and select things one by one... so I might have picked a couple of people by mis-click of mouse. This email is just generated normally. Here is a summary of the pain which is CIRA, but first some quick answers. You do need to be the admin-c for a .ca domain to vote. Further you need to have elected to be a member of CIRA in order to vote. You get one vote per person. Sorta of. It's one vote per unique admin-c, so if you have three domains, two of them with bob@sympatico.ca ad the admin-c, and one with frank@sympatico.ca, then you can vote twice. One of the things that I would like to change at CIRA is this silly process. It should either be one vote per person, or one vote per domain. One vote per person is actually difficult to enforce, because there are big ISPs that would just list different people for each domain. A second thing that I am concerned about it the complexity and difficulty in dealing with CIRA. Their emails are not sent reliably (many people I've talked to complain about this), and there are both too many useless emails, and still, too little visibility into what they are actually doing. A third thing is the elections and AGM process. Many of you couldn't figure it out, and neither could I. See below. CIRA has finally adopted a reasonable threshold of 20 endorsers to be on the slate (as recommended by an ICANN committee and I think also, WISC). Their AGMs are not well attended, and their attempts to webcast it have been dismal failures. Some of you will remember that CIRA decided that they had to enforce having Java+Javascript on in order to let you vote, and had no concerns whatever for our rights to keep our computers secure. A fourth concern I have is the abandonment of the munipical domain system, and the rampant squatting in the top-level zone. I would have much preferred to keep FOO.ca reserved for organizations that could demonstrate some kind of national trademark (such as, for instance, a federal incorporation), as that would have kept the squatters out. Once someone squats on, say, cycling.ca, the rules don't permit, say, a cycling group in Ottawa to have cycling.ottawa.on.ca, while one in Calgary has cycling.calgary.on.ca. Not only does this permit more logical zone names (ones you probably can guess... imagine airport.ottawa.on.ca!), but it also permits more groups to be members. I would have proposed that longer names would have lower prices. This could be done by making the registration good for more than one year, so as not to increase the overhead costs of processing the payments. You may not agree with me, but CIRA never asked you, that's part of the problem. A final thing is technology. CIRA is not ahead, and they are not leveraging things properly. On the one hand, they spend big chunks of money on an Oracle license (to keep the list of zones in), and on the other hand, they spend no money on a bind9 maintenance agreement, because, they can get bind9 for free. They don't run the IETF standard provreg EPP system (at least they didn't last I checked), which means that your registrar has to run custom software to talk to CIRA. Different software than to talk to .com. This also means that CIRA is simply unprepared for securing DNS, something that Sweden, Germany, Brazil, Porto Rico, and soon, .gov is doing. (The latest attack on the unsecured protocol takes 10 packets to impersonate your zone...) Why you can't show support for me! Their process is supposed to go like this: a) you get nominated. b) at the end of the nomination period, the nominated get a login to finish filing out some forms, i.e. to make sure you are a real person, and haven't been bankrupt, etc. c) people show support, you need 20 endosers to be on the slate. d) then there is an election. As far as I could tell, there was a step between (a) and (b), where CIRA would review the name, and having thrown out silly ones, would contact the nominated. Apparently not. The email with the password goes out immediately. (Why I need another password is beyond me. I think that owning a CIRA zone should be a prerequesite for being a board member!) CIRA doesn't try very hard in their email system in my opinion, and on July 20, having not received any password from them, or any link to their system which would re-send my password, I contacted them. The deadline was Monday July 23, 6pm. I exchanged a number of emails with their coordinator, and finally, at 5:50pm, I got a new password (I was in Chicago, at IETF, in meetings). I wasn't fast enough to get in before 6pm. I complained more. They spent a WEEK thinking about it, and then said that they couldn't adjust their software, because their software was SO secure and it would mess it up. Frankly, the above behaviour is one of the reasons I think the organization needs a kick in the pants. The boards have featured at most one pseudo-techie, and essentially no people with actual technical Internet management experience. Instead, it has been lawyers and bad marketroids, and the result has been excessive bureaucracy, and little actual progress on the real technical things that matter. So, that's my story. If you want to get involved, I would urge you to read the other nominated candidates profiles and "show support" for them. Don't vote for the nominations committee list of members. Boot them all out. posted at: 16:47 | path: /cira | permanent link to this entry Wed, 06 Jun 2007I got home today around 6:30pm. Liam ran to the front door to greet me, and then immediately started crying and poking his knee. He talked about a boom on his knee, and while I was wondering he then poked my knee and worried about my boom! Such a very sensitive person. It's really amazing. Seems that he is feeling my pain. Only I'm not actually in pain, I just walk very slowly now. It started on Saturday evening. Four and half hours into my Karate Black Belt test (at http://www.douvris.com/ ) I jump backwards while sparring, and at the time (I think), someone else who is sparring near Ray and I, also jumps back. Only I jump first, and they land on me, and my left knee takes the impact. My knee cap was on the side of my leg. Sensei Dom put it back, and the pain went away. I tried to finish the test using a spare brace, but that didn't work, so I had to watch for the last 20 minutes. On Sunday morning, I didn't get to take part in the demonstration at all, I had to watch. I did receive my belt though. I am now officially "Sensei Michael"... If you like, you may approach and receive wisdom. (see http://en.wikipedia.org/wiki/Four_on_the_Floor, http://en.wikipedia.org/wiki/Ti_Kwan_Leep ) On Monday, I saw a sports medicine doctor at the Carleton Sports Medicine Clinic. I got an X-ray this morning (along with my teeth cleaning), and saw my physiotherapist. Third injury in the past 8 months... To be fair to Karate, none of the injuries would have needed attention except that I didn't want to stop training, and they prevented me from training. posted at: 00:35 | path: /children | permanent link to this entry I finished reading Rainbows End by Verner Vinge. It's set in 2025, and he finds a neat way to introduce us to the world of 2025: through the eyes of a 75 year old who has just been cured of Alzheimer's. He has to catch up on the past 20 years, just like the rest of us. This book should be read by everyone who is a member of the IETF technical community. Particularly those who do router security, ad-hoc networks, and pwe3... posted at: 00:10 | path: /books | permanent link to this entry I got a copy of the Jack Whyte's The Lance Thrower from Amazon some time ago. It was very hard for my relatives to find that on my Xmas book list. It was, I thought, the continuation of the book Clothar the Frank from Whyte's Arthurian series. I started reading it, and thought.... gee he's really recapping a lot. As I read more, I realized that someone he was saying it all again. Only maybe with fewer words. Well, today I learnt the truth. The Lance Thrower is the US edition. Clothar the Frank is the Canadian (maybe world) title, and is definitely a longer book. That also explains why the book was so hard to find. So, I guess I'm still waiting for the next installment in the series that started as The Skystone. posted at: 00:06 | path: /books | permanent link to this entry Fri, 18 May 2007how to activate a volume group Using the magic of the "lt_hotswap" module, I can remove the cdrom in my T42's ultrabay. It gets removed from the IDE sub-system, and I can then insert my spare hard disk.
Laptop ultrabay hotswap driver version 0.3.1
lt_hotswap: '\_SB.PCI0.LPC.EC.BAT1' found (Hot-Swappable)
lt_hotswap: '\_SB.PCI0.IDE0.SCND.MSTR' found (Hot-Swappable)
lt_hotswap: '\_SB.PCI0.PCI1.DOCK.IDE1.PRIM.MSTR' found (Non-Swappable)
lt_hotswap: '\_SB.PCI0.LPC.FDC.FDD0' found (Hot-Swappable)
lt_hotswap: '\_SB.PCI0.PCI1.DOCK' found (Hot-Swappable)
lt_hotswap: Requesting IDE eject!
lt_hotswap: Attempting to eject
PM: Removing info for ide:1.0
PM: Removing info for No Bus:ide1
lt_hotswap: Attempting to eject
ide1: BM-DMA at 0x1868-0x186f, BIOS settings: hdc:DMA, hdd:pio
Probing IDE interface ide1...
hdc: TOSHIBA MK4018GAP, ATA DISK drive
PM: Adding info for No Bus:ide1
ide1 at 0x170-0x177,0x376 on irq 15
PM: Adding info for ide:1.0
hdc: max request size: 128KiB
hdc: 78140160 sectors (40007 MB), CHS=65535/16/63, UDMA(33)
hdc: cache flushes supported
hdc: hdc2 < hdc5 hdc6 hdc7 hdc8 hdc9 hdc10 >
So, I ran my normal script that mounts partitions by LABEL= and it complained that my /dev/MaraUltraBay/* files weren't there. Oops. Where is the volume group? After some futzing, I learned that I did to run: marajade-[~] root 179 #vgchange -a y MaraUltraBay 11 logical volume(s) in volume group "MaraUltraBay" now active marajade-[~] root 181 #lvs LV VG Attr LSize Origin Snap% Move Log Copy% CACHE MaraMainDisk -wi-ao 3.00G DistrosKernel MaraMainDisk -wi-ao 4.00G ProjectOpenswan MaraMainDisk -wi-ao 3.00G ProjectXelerance MaraMainDisk -wi-ao 2.00G ProjectsHifn MaraMainDisk -wi-ao 2.00G UMLROOT MaraMainDisk -wi-ao 2.00G BackupEtc MaraUltraBay -wi-a- 500.00M ProjectCobbix MaraUltraBay -wi-a- 1000.00M ProjectCroquet MaraUltraBay -wi-a- 2.00G ProjectStudioX MaraUltraBay -wi-a- 4.00G ProjectThintropy MaraUltraBay -wi-a- 3.00G ProjectVpnx MaraUltraBay -wi-a- 2.00G ProjectsFreeradius MaraUltraBay -wi-a- 1.00G ProjectsHifn2 MaraUltraBay -wi-a- 6.00G ProjectsMisc MaraUltraBay -wi-a- 2.00G ProjectsOpenswan2 MaraUltraBay -wi-a- 4.00G UMLROOT2 MaraUltraBay -wi-a- 2.00G marajade-[~] root 183 #/root/etc/sswboot start Now, really, this needs to be driven by the hotplug system. I wish that it wasn't quite as many twisty shell scripts... all alike. posted at: 01:17 | path: /colo | permanent link to this entry Wed, 09 May 2007Three weeks ago I accepted a position as Director, Consumer Desktop Development at Thintropy Inc. Today, it was announced that XDS, Inc, of Durham, NC acquired Thintropy. See: http://www.prleap.com/pr/76656/ I can't tell you much about what we are doing, but it doesn't involve IPsec. It does involve Linux, and I'm excited about it. (No surprise here. It took the lawyers something like 12 weeks to finalize the deal...) I continue to work 1/2 time at VP R&D of Xelerance Corporation. Xelerance has a number of security related products in development, which will be announced in June. Xelerance continues to provide 3rd level support for IPsec, and I will continue to hack on Openswan on a regular basis. posted at: 18:48 | path: /work | permanent link to this entry Fri, 04 May 2007Cartoon U giving away drugs to students From:
So, the students who most need to be exposed to well designed systems are being fed junk. posted at: 00:58 | path: /oss | permanent link to this entry Mon, 30 Apr 2007A critique of "agile" and an interesting response Steve Yegge has a nice rant about -isms, including the agile movement at: http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html Everything he says is correct, but he misses the point. All things that are apparently effective will have also-rans. The whole .com era was about that! He says that he's observed a lot, but doesn't give us details. I'd like to know them. I don't think he's actually ever pair programmed, and no, ten people at a keyboard is not better. The revolutionary thing about the XP methodology (XP is just one of many agile methods), was that it wasn't revolutionary. It just gave me language to discuss what I'd already been doing. He then goes on to discuss the google agile methodology. It sounds great. But, the best response I was pointed to is at: http://www.xprogramming.com/xpmag/jatBaseball.htm
posted at: 00:17 | path: /agile | permanent link to this entry Fri, 20 Apr 2007Despite what the thread at: http://www.mail-archive.com/linux-raid@vger.kernel.org/msg07378.html says, William L. Thomsom Jr. is reporting a real bug. [root@grouper dev]# fdisk -l /dev/sda | grep sda6 /dev/sda6 2 4865 39070048+ fd Linux raid autodetect [root@grouper dev]# fdisk -l /dev/sdb | grep sdb6 /dev/sdb6 2 4865 39070048+ fd Linux raid autodetect root@grouper dev]# mdadm --create --verbose /dev/md1 --level=mirror --raid-devices=2 /dev/sda6 /dev/sdb6 mdadm: /dev/sda6 is too small: 0K Yet, making ONE adjustment changes things: [root@grouper dev]# fdisk -l /dev/sdb | grep sdb6 /dev/sdb6 2 4865 39070048+ fd Linux raid autodetect [root@grouper dev]# fdisk -l /dev/sda | grep sd.6 /dev/sda6 2 4865 39070048+ 83 Linux [root@grouper dev]# mdadm --create --verbose /dev/md1 --level=mirror --raid-devices=2 /dev/sda6 /dev/sdb6 mdadm: size set to 39069952K mdadm: array /dev/md1 started. Curiously, that's all I had to do. Subsequent partitions (I had 8 of them to raid), just worked. Likely this is a bug in the kernel, where once one partition has been used, it winds up caching the disk label, and therefore some other effect no longer occurs. Oh: [root@grouper dev]# uname -a Linux grouper.sandelman.ca 2.6.18-1.2239.fc5xen0 #1 SMP Fri Nov 10 13:58:27 EST 2006 i686 i686 i386 GNU/Linux Why would I make 8 40G partitions on each of a pair of 320G disks? And then raid pairs, and then add them all to an LVM? Well... imagine that I get some bad sectors somewhere. That means that my RAID will get degraded to single disk. If I want to continue working, and not replace the disk immediately, it turns out that I can find another 40G on another platter rather easily, and raid that together instead of the piece that I lost. Then I'll look at SMART and other info, and find out if the disk is really dying, and try to get it replaced, but in the meantime, I feel more safe. If, while waiting for the replacement disk, I got a second failure, in the other disk (both disks are, same vendor, and probably sequential out of the assembly line), then I'd loose everything... unless I can just degrade part of each disk, and keep working. [root@grouper dev]# mdadm --create --verbose /dev/md7 --level=mirror --raid-devices=2 /dev/sda7 /dev/sdb7 mdadm: size set to 39069952K mdadm: array /dev/md7 started. [root@grouper dev]# mdadm --create --verbose /dev/md8 --level=mirror --raid-devices=2 /dev/sda8 /dev/sdb8 mdadm: size set to 39069952K mdadm: array /dev/md8 started. [root@grouper dev]# mdadm --create --verbose /dev/md9 --level=mirror --raid-devices=2 /dev/sda9 /dev/sdb9 mdadm: size set to 39069952K mdadm: array /dev/md9 started. [root@grouper dev]# mdadm --create --verbose /dev/md10 --level=mirror --raid-devices=2 /dev/sda10 /dev/sdb10 mdadm: size set to 39069952K mdadm: array /dev/md10 started. [root@grouper dev]# mdadm --create --verbose /dev/md11 --level=mirror --raid-devices=2 /dev/sda11 /dev/sdb11 mdadm: size set to 39069952K mdadm: array /dev/md11 started. [root@grouper dev]# mdadm --create --verbose /dev/md12 --level=mirror --raid-devices=2 /dev/sda12 /dev/sdb12 mdadm: size set to 39069952K mdadm: array /dev/md12 started. [root@grouper dev]# mdadm --create --verbose /dev/md13 --level=mirror --raid-devices=2 /dev/sda13 /dev/sdb13 mdadm: size set to 39069952K mdadm: array /dev/md13 started. [root@grouper dev]# pvcreate /dev/md1 Physical volume "/dev/md1" successfully created [root@grouper dev]# pvcreate /dev/md7 Physical volume "/dev/md7" successfully created [root@grouper dev]# pvcreate /dev/md8 Physical volume "/dev/md8" successfully created [root@grouper dev]# pvcreate /dev/md9 Physical volume "/dev/md9" successfully created [root@grouper dev]# pvcreate /dev/md10 Physical volume "/dev/md10" successfully created [root@grouper dev]# pvcreate /dev/md11 Physical volume "/dev/md11" successfully created [root@grouper dev]# pvcreate /dev/md12 Physical volume "/dev/md12" successfully created [root@grouper dev]# pvcreate /dev/md13 Physical volume "/dev/md13" successfully created [root@grouper dev]# vgcreate Grouper1 /dev/md1 /dev/md7 /dev/md8 /dev/md9 /dev/md10 /dev/md11 /dev/md12 /dev/md13 Volume group "Grouper1" successfully created [root@grouper dev]# vgs VG #PV #LV #SN Attr VSize VFree Grouper1 8 0 0 wz--n- 298.06G 298.06G VolGroup00 1 24 0 wz--n- 76.25G 6.16G [root@grouper dev]# pvs PV VG Fmt Attr PSize PFree /dev/md0 VolGroup00 lvm2 a- 76.25G 6.16G /dev/md1 Grouper1 lvm2 a- 37.26G 37.26G /dev/md10 Grouper1 lvm2 a- 37.26G 37.26G /dev/md11 Grouper1 lvm2 a- 37.26G 37.26G /dev/md12 Grouper1 lvm2 a- 37.26G 37.26G /dev/md13 Grouper1 lvm2 a- 37.26G 37.26G /dev/md7 Grouper1 lvm2 a- 37.26G 37.26G /dev/md8 Grouper1 lvm2 a- 37.26G 37.26G /dev/md9 Grouper1 lvm2 a- 37.26G 37.26G posted at: 02:23 | path: /oss | permanent link to this entry Mon, 09 Apr 2007I discovered that the default /dev/MAKEDEV does not create the xbd2 device entries, so a NetBSD domU does with three disks does not get initialized properly by default. Normally, you run "cd /dev && ./MAKEDEV xbd2" and you are done. But, now that NetBSD has an mfs based /dev, the results are not saved. The problem is that if you edit /dev/MAKEDEV with vi, it renames the file, which means that it creates a new file in the mfs. (It is mounted with union option). Really, I think that the mfs /dev should be mounted below the real /dev, and also created elsewhere, so that one can decide of the node should be permanent or not. I could have mounted the / on another virtual machine (one nice thing about virtual machines), but NFS exporting / to another NetBSD machine and mounting it (which it gets the underlying /dev), and running MAKEDEV was easier. posted at: 12:34 | path: /colo | permanent link to this entry Mon, 02 Apr 2007Quirks and Quarks gets it wrong This is what my play list says about the Quirks and Quarks downloads. Quirks & Quarks - CBC Radio - QQ-170207-01-Obesity Quirks & Quarks - CBC Radio - QQ-170207-02-Bird Butts Quirks & Quarks - CBC Radio - QQ-170207-03-Peregrine Recovery Quirks & Quarks - CBC Radio - QQ-170207-04-Moth Antennae Quirks & Quarks - CBC Radio - QQ-170207-05-Question-Frozen Carbonation Quirks & Quarks - CBC Radio - QQ-140207-01-Censorship in Science Quirks & Quarks - CBC Radio - QQ-140207-02-Giant Clams Quirks & Quarks - CBC Radio - QQ-140207-03-Ancient Agriculture Quirks & Quarks - CBC Radio - QQ-140207-04-Dusty Planet Quirks & Quarks - CBC Radio - QQ-140207-05-Columbus Silver Quirks & Quarks - CBC Radio - QQ-030307-01-Walking on The Moon again Quirks & Quarks - CBC Radio - QQ-100307-01-Peruvian Sun Towers Quirks & Quarks - CBC Radio - QQ-100307-02-Smart Scrub Jays Quirks & Quarks - CBC Radio - QQ-100307-03-Origin of Lice Quirks & Quarks - CBC Radio - QQ-100307-04-AEGIS Quirks & Quarks - CBC Radio - QQ-100307-05-Cowbird Mafia Quirks & Quarks - CBC Radio - QQ-100307-06-Question, Lightbulb Lifespan Quirks & Quarks - CBC Radio - QQ-170307-01-Mars Ice Quirks & Quarks - CBC Radio - QQ-170307-02-Chimp Tools Quirks & Quarks - CBC Radio - QQ-170307-03-Bone Printer Quirks & Quarks - CBC Radio - QQ-170307-04-Hearing Mammals Quirks & Quarks - CBC Radio - QQ-170307-05-The Elephant's Secret Sense Quirks & Quarks - CBC Radio - QQ-240307-01-BC Algae Quirks & Quarks - CBC Radio - QQ-240307-02-Dinosaur Burrows Quirks & Quarks - CBC Radio - QQ-240307-03-Modified Malarial Mosquitoes Quirks & Quarks - CBC Radio - QQ-240307-04-Friendly Monkeys Quirks & Quarks - CBC Radio - QQ-240307-05-Herzberg Winner - Bond Quirks & Quarks - CBC Radio - QQ-310307-01-Sugar Fuel Quirks & Quarks - CBC Radio - QQ-310307-02-Kuiper Collision Quirks & Quarks - CBC Radio - QQ-310307-03-Marmoset Chimera Quirks & Quarks - CBC Radio - QQ-310307-04-Wind Hunter Quirks & Quarks - CBC Radio - QQ-310307-05-E. coli and Chimps Quirks & Quarks - CBC Radio - QQ-310307-Questions- Body Temperature What's wrong with this? This is because the "album label" says: [Quirks & Quarks - Dec. 16, 2006] [Quirks & Quarks - Dec. 2, 2006] [Quirks & Quarks - Dec. 23, 2006] [Quirks & Quarks - Dec. 30, 2006] [Quirks & Quarks - Dec. 9, 2006] [Quirks & Quarks - Feb. 10, 2007] [Quirks & Quarks - Feb. 17, 2006] [Quirks & Quarks - Feb. 24, 2007] [Quirks & Quarks - Feb. 3, 2007] [Quirks & Quarks - Jan 6, 2007] [Quirks & Quarks - Jan. 13, 2007] [Quirks & Quarks - Jan. 20, 2007] [Quirks & Quarks - Jan. 27, 2007] [Quirks & Quarks - Mar. 10, 2007] [Quirks & Quarks - Mar. 24, 2007] [Quirks & Quarks - Mar. 31, 2007] [Quirks & Quarks - March 17, 2007] [Quirks & Quarks - March 3, 2007] This is a plea for sanity. YYYY-MM-DD. Please. posted at: 21:46 | path: /standards | permanent link to this entry Mon, 19 Mar 2007Today, I got a call on my mobile phone from a Bell Mobility sales person. The irony is that, were I a Bell Mobility customer, he couldn't have called me, since I'm in Prague, roaming on GSM. He wanted to offer me a Bell Mobility corporate package. I explained that I was not interested in what I call a cordless phone. Sorry, Bell and Telus don't offer mobile phones. They are just cordless phones. Cordless phones have a base station (usually in your house), and you can go some distance. You have to use the phone that came with the base station, and one can't use different phones with the same base station. Mobile phones such as those based upon GSM, seperate their handset from the identity, and you can roam almost anywhere in the world. You can switch phones by just switching the SIM card, or make my phone become your phone by doing the same thing. What Bell "Mobility" sells is just a cordless phone. Sure, it has a larger range (a good part of Canada, and some parts of the US) than the one I can get at Walmart, but that's really it. Bell will switch to GSM. When it happens, I will switch. Or to Telus. posted at: 14:36 | path: /travel | permanent link to this entry Mon, 05 Mar 2007I finally got around to trying to burn a DVD. It is an ISO image to upgrade an IBM PPC machine that I maintain. I have 0,0,0 0) 'HL-DT-ST' 'DVDRAM GSA-H10N ' 'JL10' Removable CD-ROM in it, which I got last fall. Often takes me awhile to install new hardware, because apparently it's a good idea to turn the power off first. That involves a reboot... which my computers almost never do. I tried cdrecord, and got a message telling me I should use "ProDVD", which is a binary-only program from the author of cdrecord. Hmph. I don't think so. After some searching, I did: growisofs -Z /dev/scd0=HMC_Recovery_V6R1.0_1.iso posted at: 15:31 | path: /oss | permanent link to this entry Mon, 29 Jan 2007How to get Asterisk working under a XenU Asterisk works in basic SIP mode, but you can't use any of the conference facilities, and or any of the announcements without a source of 1khz interrupts. Normally, this comes from the zaptel driver in the kernel, if you have a stock FXO card. You can also use ztdummy on 2.4 kernels using the USB interface for timing, and on 2.6 kernels you can get 1khz timing from the RTC driver. But, there is no RTC on Xen. The solution is to use the ztdummy driver, but to REBUILD your XenU kernel with HZ=1000, so that it can use the stock timer interrupts. In theory, the in-kernel HPET interface should be used instead, and I hope to adapt the code. I also expect to reduce the number of .h files, and most of the dependancies. (Note, you need the CCITT CRC routines available in your kernel as well) I have placed my tgz file of drivers/char/zaptel at: note that it overwrites drivers/char/Makefile and drivers/char/Kconfig. I will produce patch-o-matic and git trees soon. I put a kernel that I'm using at: If you use this, and it works, I'll clean it up a bit more. The config items you need to get HZ=1000 are: gimli-[xen/xen/xen-3.0.3_0-src/linux-2.6.16.29-xen] mcr 1062 %grep HZ .config # CONFIG_HZ_100 is not set # CONFIG_HZ_250 is not set CONFIG_HZ_1000=y CONFIG_HZ=1000 CONFIG_MACHZ_WDT=m CONFIG_NO_IDLE_HZ=y This is under the "Processor Type and Features" item in menuconfig, if you are looking that way. Near the bottom: "Timer frequency (100 HZ)" is the default. 1000HZ settings make the kernel a bit more intensive, and it might be that you have to also adjust the Xen scheduler at bit. I haven't done this yet, but seem to have good results. With these changes, I can now deploy Asterisk into XenUs at a colo. posted at: 03:51 | path: /colo | permanent link to this entry Mon, 15 Jan 2007some notes on IBM OpenPower LPARs and VIO channels I thought I'd share something I just learned about VIO disks by a process of experimentation, based upon some comments I found in a wiki, but couldn't confirm anyplace in documentation. You can run: mkvdev -vdev lv_cayenne_home -vadapter vhost9 -dev dev_cayenne_h mkvdev -vdev lv_athabasca_sl -vadapter vhost9 -dev dev_athab_sl I.e. set two virtual disks to be on the same host/server adapter. Linux, sees, properly: root@cayenne:~ # dmesg | grep 'Attached scsi' Attached scsi disk sda at scsi0, channel 0, id 1, lun 0 Attached scsi disk sdb at scsi1, channel 0, id 1, lun 0 Attached scsi disk sdc at scsi2, channel 0, id 1, lun 0 Attached scsi disk sdd at scsi3, channel 0, id 1, lun 0 Attached scsi disk sde at scsi3, channel 0, id 2, lun 0 This is a nice thing, because you can then add disks to running LPARs, and get the SCSI bus rescanned by doing:
that means you can also do things like perform rescue operations on a sick LPAR's root disk by mounting it on another LPAR, and you can do this without rebooting. In particular, if you have provisioned your VIO server with enough spare SCSI server adapters, you can easily add LPARs without restarting the VIO server. The instructions we read suggesting creating a new VIO channel per disk, which seemed dumb. We much prefer to have a seperate LV on the VIO server per partition, because ideally we can resize them as well. posted at: 21:44 | path: /colo | permanent link to this entry Some thoughts on the BSD license http://www.groklaw.net/article.php?story=20070114093427179 writes some interesting things... which I excerpt:
...
...
...
posted at: 20:04 | path: /oss | permanent link to this entry Thu, 11 Jan 2007This video is illegal in some places Today I posted a video on Youtube of my son Liam. http://www.youtube.com/watch?v=HNV4AdZx4Qw (If you want the AVI file, I can make that available. I'm told that there is a way to get a raw stream out of youtube) Liam is 19 months old, and he has four major passions: 1 Chasing the cats and squealing loudly 2 sitting on my desk, talking on both my phones at the same time (a cisco voip phone, and a polycom PSTN two line phone). I think it would be funny to teach him to pick up random telephones, scream "Sell! Sell! Sell!" into them, and run away. 3 playing with his Thomas the Tank Engine toys (and trucks, and anything that can be pushed around the place) 4 watching Thomas and Bear in the Big Blue House videos The video I took is illegal in some places. But, not for the reasons you might think. While, yes, we do have some videos of him swimming in the tub that I won't post, it does seem reasonable that I can take a video of him... watching a video. You'll notice in this video that Liam is watching TV. On TV, you can even hear Tutter the Mouse talking. There is a splash of sun over the screen. But, in many places (not Canada, where we have a "Fair Use" regime) this would be considered illegal copying. If Hollywood has it's way, to plug this "analog hole" (me pointing my video camera at my TV set), they would force the makers of all video cameras to look for a watermark in the signal. If my camera saw the watermark, it would BLANK the input. So, if I pointed my camera at Hollywood content, even if my son was also in the picture, my camera would blank. Even 50 years (or was it 75? or was it 100?) after the video was produced, and it is supposed to go into public domain, I still would be unable to take a video (or maybe even a picture) of my son watching his favorite show. (nice firehat too, eh?) posted at: 21:06 | path: /children | permanent link to this entry
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||