Search Results: "Martin"

12 April 2006

Martin F. Krafft: Asian women and western men

Following yesterday's blog entry, a derogatory comment reached me why we would be spending the evening with the sort of girl that would go to hotel with foreign men. This prompted me to write a short note of how I see the position of the women in these countries with respect to this subject. I hope you are aware that this is a delicate topic, of course, and that I write nothing but about my own perception and interpretation. There are two types of women who'll readily engage with foreign men: those receiving money for a night and those looking for more. Nothing needs to be said about the first. As for the second, I can understand their position very well, and if it weren't for assholes coming to this country trying to "score" and exploiting their position, there'd be nothing to be said against it. For the young women in these parts of the world, foreign men are attractive for two reasons: first, they have money, and thus give them the hope and maybe even a chance to live a better life then they are forced to. It is very unlike Western women seeking rich men to buy them lots of jewelry, for the women here it's more a question of existence. On the other hand, the women here seem to prefer Western men, since they are generally perceived to be more gentle and "good". I have been told on numerous occasions now that it is not uncommon for Asian boys to beat their wives when drunk. Unfortunately, the situation seems to be bad enough for the women to forget about the chance that Western men may do the same (and I'd believe more do than we would be willing to admit). So in the end, the girl we met was far from a "prostitute", and having talked to her, it hurts me that she should be perceived as such by some of my readers. I'd much rather spend time with her at a club than most of the superficial girls you'll find in the Western world.A I hope this sets things a little more straight.

11 April 2006

Martin F. Krafft: More luck than brains

It's been a busy three days since I last wrote. The climax (or lowest point) must have been the loss of my wallet with about 800 Bhat of cash (16 EUR) and a credit card inside. I left in on a telephone in a bus station in Khon Kaen during a very stressful moment trying to get to our next destination. Luckily, within ten minutes I noticed the loss and could cancel the credit card, so the damage is minimal (although I should hope that one day it hits me hard because I apparently never learn and leave my things all over the place -- like the camera on the return trip from Zanzibar/Tanzania). Anyway, shortly after the loss, we ended up in a very fortunate situation ("more luck than brains"), but more on that later. Last time I wrote, we were in Khorat, headed for Phimai the same evening. With about four hours to spend, we opted for a massage, and I chose the traditional style with a weighty woman bouncing up and down my body and twisting it into unnatural shapes. Nevertheless, I felt absolutely great afterwards and am looking forward to the next time. The massage took a little longer than expected, and when we finally made it to the laundry place to pick up our load, they had just closed. But nothing is impossible in Asia, and soon we had one person tell another to find the owner in a hairdresser shop, and she happily made an exception and handed over our bag. Feeling very good, we headed for the bus terminal to find the bus leaving 90 minutes later than planned, so we spent the time watching the busy life of Thais departing and arriving before riding for 90 minutes to Phimai, where we had to wake the owners of the guest house despite having called in earlier to let them know of our late arrival. The room was spartan but moderately clean, and we passed a night only disturbed by the continuous sounds obviously made by cockroaches, though none seemed to be in our room itself. Jokingly, I remarked that there is nothing to worry as Thai cockroaches would take off their shoes before crawling onto the bed, but I am yet unsure whether that was reason enough for Aline to finally drift to sleep. Phimai is a tiny town housing a beautifully restored Khmer temple, said to be the best preserved in Thailand. Without a guide, and with the heat picking up to a stifling level already at 9:00 o'clock, we decided to better spend the time in a bus, traveling north to Udon Thani, but first spent a visit to the Phimai national museum, and the "Banyan Tree," a huge assembly of trees with Thais picknicking in its shade. Leaving Phimai with a bus, we had to hop on another in Thalak Ke, about 10 kilometres away from Phimai, but our initial joy of catching an air-conditioned ride for the 4 hour trip to Udon Thani was severly lessened when the bus pulled in and was completely crowded. We stood pressed against each other for the first 90 minutes of the trip, until we reached Khon Kaen, where lots of people got off before lots more got on, but we were able to get seats in between. Having arrived in Udon Thani, the plan was to leave the same day for the Laotian border to catch a boat along the Mekhong river to Chiang Khan, but that seemed impossible without a visa for Laos, which is $30 per person and a little too much for the joy of the journey. A little disappointed, we stayed in a luxurious hotel (10 EUR per night) and strolled around the city at dawn, chatted a while with a Welsh expat about old European men coming to Thailand to find women, and finally headed for the Mandarin restaurant, suggested in the Lonely Planet. The place was sketchy, with a loud television set blasting some Thai soap opera, and the staff really misunderstood the meaning of "appetiser" and "vegetarian", so that I ended up eating a giant plate of "Chinese Hors d'Oeuvre", Aline's spring rolls with shrimp paste, and the Pad Thai I had ordered. They forgot the noodles, and Aline's Tofu portion was too hot, but our tummies stuffed, and we sank into bed early. The night was horrible, I was plagued by stomach aches and the fear of a repeated experience -- the last time I ate Pad Thai along this meridian was in Vientiane, and I came down with food poisoning, and I felt exactly the same way as back then throughout the night and morning. I stayed in bed long but fortunately found that I had just put too much food into my belly (which wasn't used to it, we had been eating sparingly), and walking solved the problem. Weighing our options, we decided on the route of the next two days. Initially, it was to be Loei and the Phu Kradung National Park, but seeing that it was a little too difficult to reach with public transportation, we decided to head back to Khon Kaen, forget about Udon Thani and the lost day, and continue to Nam Nao National Park along the route 12 between Khon Kaen and Phitsanulok, with an optional stop shortly after Lom Sak for some whitewater rafting. It was after being told that all busses were overbooked (remember, Songkrat, the New Year's festival bringing every Thai back to his home, starts this week) and our furious attempts to find a hole to slip through that I left the wallet on the telephone. I noticed the loss on our way to the other bus terminal, but it was too late, and it didn't help that nobody spoke English anymore (basically ever since we left Ayuthaya). As said, the money wasn't a big loss, the credit card immediately cancelled, driver's licence and insurance cards also being no biggie, but the wallet still contained one item of interest: the receipt for the cargo bag with the children's clothing waiting for me in Chiang Mai (hopefully). We had our friendly Tuk Tuk driver took us to the tourist police to file a report, with which we should be able to reclaim the bag even without the receipt -- Aline also fortunately took a picture of the bag. But the tourist police was out for the day and as we came to realise the misery of our situation -- it was about 18:00 o'clock by now and we were looking at losing another day on our journey, a friendly women with very good skills of English walked around the corner and told us to hop on her car. We were so glad to be able to follow someone's command that we didn't even ask where she was taking us, but on the back of the pickup, we learnt from her two students that she was an English teacher taking us to the police headquarters. There, we got the report and again boarded the pickup heading back to the city. We still did not know how to continue from Khon Kaen towards Phitsanulok in the lower north of the country, but the lady offered to negotiate a rental car for us after heading to another police station to help her student with a report against a British man, who had left her in the top-end hotel without paying the bill. Fortunately, she knew the real name and telephone number of the guy, so he'll surely get his share, that bastard. The rented car with driver to Phitsanulok would cost us between 4000 and 5000 Bhat (80 to 100 EUR), which we thought was too expensive, and it was again our lady friend who decided to head for the busses again and try her luck. She got us on a 2nd class bus to Phitsanulok, leaving Khon Kaen at 3:45 in the morning, and with about 7 hours to kill, we took her and her two students for dinner and to a discotheque as a form of thanking her for her help. Her name, by the way, is Jill, and she runs the "Khon Kaen Language Centre", teaching English, Japanese, German, and Spanish to about 20 students, half of whom live in her own house as they come from far away. We talked much with her and her students that night. Dinner was a huge buffet with everything you can imagine, including cow stomach and pig intestines (and yes, I tried them both, though I need not do that again), and grills at the tables for a very cozy atmosphere (if it hadn't been for the live band that was playing just a tat too loud). Jill apparently spends her days helping other people, not only learning languages; people come to her for relationship troubles, legal issues, or other difficulties such as my lost wallet. She does not choose to help people, but feels that as a Thai, she must. This attitude prevails throughout the population (as soon as you leave Bangkok and the tourist centres in the south) and is maybe the most important reason why this country is such a great place to be. After dinner, we ended at a discotheque with another live band, including singers and dancers, and even though it was clearly too loud for my taste, the band was very good, and we had a splendid time getting drunk on Thai beer -- after all, what else was there to do until the bus left. I also found out that Jill runs an Internet cafe and consequently left her with 10 Ubuntu CDs to try out, and give away to her computer-savvy students. It was great to explain to her what "free of charge" means, but very hard to actually get her to accept it. After the discotheque, she took us to her house for showers and a quick meal, and I tried to demonstrate Ubuntu to her, but did not succeed within the small time frame I had available. The reason was that her house uses static IPs, and I could not figure out how to tell the Live CD to use a static IP -- it did not ask me. Anyway, this isn't anything I cannot solve via email once I return to Switzerland. We left the city on time and were looking at 5:30 hours of an uncomfortable, rocky bus ride, but thanks to ample space, it went by quite quickly. We gave up on the plans for the national park and postponed the "experience of nature" until Pai (see below), and also found out that April is not the month to go whitewater rafting in Thailand, so without any stops, we reached Phitsanulok and quickly headed for a hotel to sleep through the midday heat, a little too long unfortunately to still get some errands done, like cashing traveller cheques. I am now sitting in an Internet cafe in Phitsanulok, and we did get most of our to do list done. We'll stay here for one night, enjoying the "food festival" over at the night bazaar, and head for Sukothai tomorrow. Having made the acquaintance of a very helpful employee of the Thai Tourist Authority, we now have the possibility to ride along in his van tomorrow, iff he makes it back from Bangkok in time; otherwise we'll go by bus and meet him there for another festival and a light show in the old city of Sukothai, which is now known as the historical park, which the Lonely Planet describes as "Thailand's most impressive World Heritage site". Also, tomorrow, Songkran starts in Sukothai (a day before the official start), and we have been told that Sukothai is one of the two best places for the event on numerous occasions. The other is Chiang Mai, and we were lucky to get two seats on a plane leaving Sukothai for Chiang Mai on the 14th, so we'll get to spend more or less two days in each of the "party centres" (Songkran ends on the 15th, though some cities just keep on going). I have to say that I am very excited about witnessing this event. All the shops in all the towns keep piling water guns on the streets, and for three days, the camera will be better left in the hotel as the entire city soaks itself in water. I cannot wait to buy one of the biggest guns, make a run for the all the Thais, and then give the gun to a child. While I am talking about plans, I might just as well continue my brain dump. From Chiang Mai, we are currently looking at 2-3 days in Pai, a village north-west from Chiang Mai with beautiful landscapes and many hill tribes within walking distance. I'll be leaving Chiang Mai for Yangon in Myanmar, and am currently faced with four choices as to how to spend my remaining time in that country. Mind me while I share these options with you: The simplest options would have me drop the clothing and gifts off at Julie's guest house; Julie is Swiss or German and frequently organises for clothing and similar items to be sent to refugee camps in Myanmar. Then, I could travel to Myanmar and be free to spend the time in Yangon and Mandalay, showing Linux to people, head out into the countryside, or spend my time in the monastery to which I have been invited. These options all appeal to me, approximately in decreasing order. The last option depends on whether Julie organises a trip to a refugee camp anytime soon, in which case I may be able to go along. I'll keep you posted. That's it for now from me from southeast Asia; we're off for the night bazaar. Thanks again for reading along.

8 April 2006

Martin F. Krafft: Restless travellers

We've been busy travelling, never spending more than a night in the same place. Leaving Bangkok on the "3rd class" train for Ayuthaya was an experience of its own kind. The platform was full with people waiting for the train to arrive, and when it did, we witnessed something totally unexpected for the Thai: they almost quarelled to get into the train first to catch a seat. Fortunately we got lucky in the otherwise crowded wagons. We stopped frequenly, and a glance out of the window would give you a peek into the lowest end of Thai civilisation: barracks built along the tracks with large numbers of people vegetating along. Inside the train it was hot and sticky, and we were surely happy to disembark in Ayuthaya about an hour later than planned. Ayuthaya was the Siamese royal capital between the 14th and the 18th century (the name derives from Sanskrit and means "undefeatable") and a bunch of temples and ruins, most with strong Khmer influence, survived the various Burmese attacks until today, making the city a nice attraction for those who like "stone piles" (as I've heard them described). We had made arrangements from Bangkok with the Baan Lotus Guesthouse, run by a lovely lady who spoke good English. Apart from the broken light in our room, the setting, the friendliness of our host, and the cleanliness of the rooms were definitely worth the price. After visiting Wat Phra Mahathat, the temple home to a Bhudda's head embedded in twisted roots, we had a guide escort us to a remote Elephant camp to witness the preparations for the upcoming New Year celebration (Songkran) in a week from now -- we are definitely looking forward to that. Later that night, we met some locals at a bar for chatting and went to bed late, thanks to our host handing over the keys and making an exception to the 11pm curfew. We got up to meet the guide from the night before, who took us around three temples before dropping us off at the boat stop for a short cruise around the island (Ayuthaya is encircled by a river). Our train to Khorat (Nakhon Ratchasima) was scheduled for 12:23, and so we had to forgo most of the temples due to time constraints; Ayuthaya is close enough to Bangkok to come back here again during a future trip. Reaching the station with ample time, we found the (express) train to be full, but did not feel like waiting for the slower train an hour later, so we talked the station ward into getting us on anyway. Interestingly, I think he would have tried his best even if I had not slipped him 100 Baht (2 EUR) under the table. We got on, and even had two seats in an air-conditioned wagon, so the trip was quite relaxing -- to the point that we almost missed our stop. Shortly before reaching Khorat, we rode through a thunderstorm, and there was a light drizzle as we stepped out of the station. The distance from Bangkok showed, the Tuk Tuk drivers (Tuk Tuks are the infamous three-wheeled taxis you find all over Southeast Asia) didn't hassle us, it was in fact not at all easy to find one, and when we did, he did not know where the Tokyo Hotel, our chosen home for the night, was located. With a map in hand, we thus simply started walking, but had to run for shelter at an ice factory when the rain picked up and sent cats and dogs onto the streets that really aren't made to take that much liquid. Eventually, a Tuk Tuk picked us up and got us to the hotel safely, and an hour later, the rain stopped. We did not miss a beat to get outside and ended up at "The Mall", a magnificent American-style "shopping paradise" (as Aline would call it) which clearly showed that shopping is one of the top passtimes for Thais. We ended the evening at Khorat Texas, a very nice bar in the centre of the town, with decent food and live music. As I was rolling a cigarette, a local from the next table curiously came over, and shortly thereafter, the two of us joined the three of them at their table for some cultural exchange in broken English. We picked up quite a few handy Thai expressions but also came to the conclusion that the Thai don't really know how to say things themselves and would often disagree with each other over the endings of words. But as the beer kept flowing, we seemingly got better at Thai intonation, although the language is definitely very hard for Europeans. I could not help but notice though that it seems to be better suited for cell phone conversations in noisy places while one of the three men we met kept chatting away to his wife for an hour while the band was playing in the background. This morning, we weren't motivated to get up before 11, checked out, made travel arrangements for our next destination -- Phimai -- dropped off some laundry, and then headed for the national museum, which we only found through the technique of circling and spiralling inwards. Not much to see otherwise here. The Lonely Planet guide says this city is unexciting, but it grows on you if you spend longer periods of time. Sure, like most cities, I say. As it stands, we have reason enough to abandon the place and spend tonight in Phimai, close to the famous and beautifully restored Khmer temples of the area, so that we can hopefully spend as much time as possible in the temple area before the heat gets unbearable. Nevertheless, speaking of heat, yesterday's rain shower cooled the air by 5 or 10 degrees, and it's very bearable right now. I have to point this out because in general, the month of April is not a month during which to travel Northern Thailand due to the temperatures approaching 40 degrees during the day. I know for sure that next time, I will be looking into clothing made out of fabric better suited to handle large amounts of sweat than cotton. We hope to leave Phimai on a bus to Udon Thani. I expect that shall be the next time I get to write. Thanks for reading along.

7 April 2006

Andrew Pollock: [debian] Usability issues with changelogs.debian.net

Thanks to Martin for pointing this out to me. I'd have never found out about this or this otherwise. I don't want to be providing a service that people hate. That's no good at all. So I've ditched the Debian logo watermark. It was just aesthetics. I liked it, but heck, I am but one... The markup issues in w3m are interesting. The plain text output is inside <pre> tags, and obviously it renders as intended in all graphical web browsers, however it only renders readably in lynx but not links. So it looks like I've got some HTML tweaking to do. In the meantime, you can obtain the results in glorious text/plain if you ask the right way.

6 April 2006

Martin F. Krafft: Sawasdee, Thailand!

The day of our departure to Thailand was remarkably stressless, I even found the time for lunch and coffee with one of my dearest friends. We had plenty of time catching the flight to Vienna, and if it wasn't for the filthy Danish sex tourist who kept burping, snorting, and generally being a bother next to me on the fliught from Vienna to Bangkok, I would have said the trip was perfect. We got in to the city in the afternoon, found a fair hotel next to Sukhumvit Road and headed off to run errands, cashing traveller cheques, drinking juices, and walking around. Just ready for sunset, we got up to the 59th floor of the amazing Banyan Tree Hotel, and two further flights of stairs led us to the roof-top bar. That evening, we went through Patphong and Soi Cowboy, the two centres of the infamous Thai ladyboys, and after a beer or two, we headed for the hotel and drifted away almost immediately. Our plans to head for Lumphini Park in the morning to participate in the Tai Chi sessions were foiled by oversleeping, but we can do Tai Chi on other days. Rested, we headed for the train station to send off the bag with clothing via train cargo to Chiang Mai, where it will (hopefully) be waiting when we arrive in two weeks' time. This message reaches you from Chinatown, we're catching something to eat before going 3rd class to Ayuthaya. Tourists usually take a taxi for 1000 Baht (about 20 EUR), we pay 15 Baht each and will be in touch with the locals. This being my first post on my trip towards Myanmar, so there's nothing much to write. One thing I found noteworthy is the change in the way taxis work these days. Two years ago, I learnt to insist on taxis starting their meters rather than quoting a price up front. Last year, my cousin and I made first experiences with taxi drivers refusing to go with the meter. This years it's nearly impossible; apparently too many tourists didn't think enough and now the drivers are unwilling to give up the profit from ripping them off. Example: Sukhumvit to Hua Lamphong station was 69 Baht in a taxi (our hotel told the driver to behave), and I sure we would have been quoted 200 Baht with a possibility to bargain the driver down to 140 or so. Anyway, that's it form today. I'll write again from Ayuthaya or Khorat.

4 April 2006

Matthew Palmer: Rewriting in Rails -- A Practical Examination

[Note: this article was mostly written some weeks ago; I left it in my "to be edited" box and then promptly forgot about it. So any and all temporal references are way out of whack. Since originally writing this article, I have commenced an incremental rewrite of an in-house business management application from crazy-PHP (a common -- some may say overwhelmingly so -- dialect of the language noted for it's complete lack of any sort of good software development practices, such as the creation and use of functions (!)) into Rails. Articles on this effort will be appearing presently.] Almost immediately after I'd finished writing my previous discussion on why rewriting software is evil, I decided to make a little experiment. What I did was take a fairly well factored PHP application, and rewite (a portion of) it in Rails. My intent in this was not to produce a production-quality rewrite. I have no interest in proliferating yet more functionally equivalent clones on the world. Instead, I undertook the work simply to get a feel for (a) writing a whole, traditional, Rails app in a short space of time, (b) how quick Rails really was to produce an application, and (c) whether wholesale rewrites really are as boring and life-sucking as I imagined them to be. My methodology was this: with a small amount of knowledge of the target application (SysCP), the existing database schema and templates, and a weekend, rewrite as much of SysCP as I could in a close-as-possible reproduction of critical SysCP functionality. My summary results are: rewrites are as boring as I thought they would be, Rails is powerful but fairly complex and slightly buggy when you get down into it (especially if you're working from an existing -- possibly suboptimal -- database schema), but overall, Rails is Way Good Stuff. On the boredom aspect -- I had two days to write code. I had some domestic duties to attend to (walk the dog, visit the hardware store, help my wife with attaching a new bag rack to her bike, mow the lawn, etc) but on the whole, it was dedicated to programming. I've spent whole days (hell, 40 hour marathon stretches) cutting code before. I knew this wasn't a six-month deathmarch, but only a weekend experiment. Despite that, I feel that my motivation levels were lower than they normally are when coding. I can only imagine what it must feel like, two weeks into several months of hard core coding, knowing that you'll end up with what you had before, functionally speaking. If you are going to do the rewrite thing (and may the Flying Spaghetti Monster have mercy on your soul if you do), then pick the right project. SysCP is large masses of tangled PHP (is there any other kind?) but it has a fair amount of local and global structure once you get down to it -- for instance, it's quite well factored into business logic and display, and the code is broken down fairly logically by action handler, so you get entire source files that look like this:
  if ($action == 'edit')
   
    // 150 lines of twisty passage PHP
   
  else if ($action == 'new')
   
    // Another 150 lines
   
  // repeat for another few actions
and so on. The nice thing about this is that, if you have to look for how something works, you can almost certainly find it in one place in the source. Deciphering it might be another matter, but at least you've got something to start from. As I mentioned, the display in SysCP is pretty nicely split off from the logic -- a large number of templates, with common header/footer files, with some small parts in common templatettes. Some HTML is still generated within the actions, but due to the above action-based structure, it's usually fairly easy to identify all of the HTML that will be associated with a particular action and turn it into a coherent Rails template. I would dread doing a rewrite of the presentation layer of, say, IRM. It's idea of well-factored presentation is to separate print statements from logic by a blank line. To my great shame, I've had the reins of IRM for a year, and it's still this bad. I claim it's because I hate HTML coding with a vengeance, but I think I'm actually just scared to try and tame that particular monster. (Update: Martin Stevens has been doing some good work turning IRM's HTML into Savant templates. The only downside is that I can hear his manic laughter -- caused by IRM's insanity slowly infecting him -- all the way from England, and it's keeping me awake at night). I also had to re-learn that most hated but most important of lessons -- that, no matter how much reading you may have done, until you've cut chunks of code in a language or environment, you have no idea how it actually behaves in your brain. Specifically, I spent a fair amount of my alloted rewrite time learning a few little lessons in how Rails actually behaves, and all of it's cool little features. Of course, everyone is going to have this pain, and I've suffered it in every language that I've done any appreciable amount of programming in, but it's always a shock to the system that -- after all this time programming -- a new language still makes my brane tingle curiously for a while. Luckily, I'd read and digested all of both the Pickaxe (Programming Ruby) and AWDWR (Agile Web Development with Rails) so I knew what was possible, I just usually wasn't sure how exactly, so I spent a lot of time with my head in the books. Rails' little foibles also bit me in the bum more than once. For example, I spent over an hour (a no foolin' hour) trying to hunt down what I was doing stupid in my code to make Rails completely forget about the value of a couple of my fields. The answer turned out to be to restart Webrick (Rails' internal webserver for development testing), and the problem cleared right up. You could hear my screams of anguish from the moon (even through the vacuum of space -- it was a lot of anguish). Rails isn't the Final And Ultimate Solution To The Webapp Problem, but it's a good start. There is near-zero administrative bumf when you're writing a Rails app. Rails is fairly intelligent about working out what you want done from the world around it. Code generators (which produces sensible, minimalist templates -- not the ugly, unmaintainable behemoths produced by Visigoth Studio, which has given the whole code generation world a bad name) handle a lot of the low-level "oh bugger, I have to add a new file" feeling. It's very, very anal about project structure, but (in contrast to many other bondage-and-discipline frameworks I've looked at in the past) this structure seems almost comforting (maybe I'm just getting old and turning into a satisficer). What all this means is that you (a) don't write much code unless it moves you toward your goal, and (b) Common structure means that any Rails app will be fairly familiar to an incoming programmer. Unfortunately it also means that cunning wankers will, sooner or later, work out a whole pile of ugly tricks and contortions to get themselves out of Rails' comfortable-but-no-doubt-incompatible-with-many-people's-ways-of-thinking straitjacket, which I will (sooner or later) end up maintaining. Like many of Rails' (and Ruby's) features, though, I don't see them being any more abusable than most features of any programming language or environment -- and at least they're powerful and useful (unlike, say, register_globals, magic_quotes_gpc, magic single-character variables, mandatory indenting, or banning tabs as indent characters -- I thought I'd spread the slagging amongst lots of languages). Productivity-wise, although I was only just kicking off my Rails webapp knowledge, I felt I was doing fairly well. From experience, what I produced in my weekend was roughly on par with what I could produce in PHP in the same amount of time, had the situation been reversed. Considering that I have about 3 weeks of Ruby/Rails knowledge, and about 5 years of PHP experience, I think that's a big win. (Update: I've since produced a DNS management applet for work in about 6 hours billable time, and a virtual mail account application in about 12 hours, both using Rails. There isn't a hope in hell that I could have performed a similar feat in PHP, especially with the same amount of inherent flexibility that the Rails solutions contain). Overall, my impression of wholesale rewrites as being soul-sucking experiences stands. I suggest they be approached with the greatest of care, and only be permitted after an appropriate period of psychological counselling. There is plenty of code that needs rewriting (but why do I always have to find it?) but replacing it by doing an rm -rf on the source tree and starting again is not the answer.

3 April 2006

Martin F. Krafft: Merger synergy?

Last weekend, Lufthansa finally annexed Swiss, which is now a regular member of Star Alliance. My flight to Copenhagen was booked with Scandinavian (SAS). Troubles already started on Friday morning when the SAS folks in Zurich sent me to the Swiss counter for check-in, yet they didn't know anything about passengers to Copenhagen. But we managed to board the plane eventually and traveled safely to Copenhagen, on Swiss. Today, my flight out of Copenhagen was again with SAS at 17:40, but when we arrived at the airport, the flight was canceled. The SAS people rebooked me on a Swiss flight at 20:05, but the Swiss counter did not open until two hours prior to departure -- and when it did, they did not know about rebooked passengers. What had happend was that SAS decided to simply cancel all flights from Copenhagen (and possibly other Scandinavian airports) to Switzerland and the UK, and to book passengers onto the next available Swiss flights, but without telling Swiss. Merger synergy?

Martin F. Krafft: Windows kiosks

They have kiosk PCs here at the airport, running Windows 2003 over Citrix MetaFrame. Apart from being ass-slow, these systems attempt to be highly "secured": only Internet Explorer is running, the task manager is disabled, and the Citrix MetaFrame apparently sits behind a fascist firewall, which seems to integrate with Windows to a point where Putty could not establish an SSH connection to a server running sshd on port 443 (HTTPs). What the system administrators of course did not realise (and neither does Microsoft), is that Internet Explorer is such an insecure piece of crap that it's effectively no problem to do whatever you want through its holes and bugs. It tooks me only about twenty minutes until I had access to my USB stick, and another five until Putty was negotiating SSH with the help of the Internet Explorer Java Console, which happily relayed my traffic as coming from the iexplore.exe process. I always tend to smile when people talk about locking down Windows, and I regularly find new reasons to do so.

Martin F. Krafft: The design does not allow it

During my trip to Copenhagen, Denmark last weekend, I was booked into a fancy hotel described all over the Internet as the in-hotel of the city (it wasn't my choice). The building had just been converted from a department store to a hotel. After checking in to my room, I noticed that my bathroom lacked a shower curtain, so I promptly went to the front desk to ask them to change that. The guy behind the desk was so incredibly stupid as he smiled at me and answered: "that's because of the design; a shower curtain would not fit the design." He was probably previously selling underwear in the department store and had his role recast without any training. Unfortunately I failed to take a picture of the bathroom, but if there really was some design at work, it was so subtle that you couldn't notice: a regular bathtub, a sink, a toilet, a mirror, and two towel-hangers... nothing more. Oh, and there was one of those blue lines on the otherwise white tiles approximately two metres from the floor. You know, one of those "designs" that you will find in almost every bathroom built in the last five years. Anyway the lack of shower curtains is only one of several reasons why I would never check in to that hotel again, nor recommend it to anyone.

2 April 2006

Barry Hawkins: You, too, can install Debian

Last week while my network access and free time were at a quarterly low, O’Reilly published an article by Edd Dumbill on installing Debian. The article is titled Installing Debian, with the tagline It’s really that easy to install Debian! I am not surprised that people perceive Debian as more difficult to install than some of the commercial GNU/Linux distributions with their slick graphical interfaces for installation. Most people only know of the older way of installing Debian, which is admittedly less than convenient. Debian’s installer has greatly simplified installation, but most people I talk to aren’t aware that it exists, even experienced system administrators. If you are experienced with Debian, but the thought of mentoring someone through a “getting started” period holds little to no appeal, refer them to the article. Low cost evangelization and advocacy, sweet! Plus, extra visitors to the article mean increased visibility for Martin Krafft’s book, Debian System Concepts and Techniques. If you are someone who keeps contemplating an attempt to move to GNU/Linux, and the aims and guidelines of the Debian project appeal to you, check out the article. It may just be enough information to get you going. I haven’t been very productive in my open source work the last week, largely due to “real life” eating up most of my time; part of the ebb and flow for a F/OSS activist, I guess. It is particularly frustrating, since we are experiencing a significant period of productivity in the Debian Java project.

Martin Michlmayr: Madrid

I'm in Madrid now. On Friday afternoon, I returned to Cambridge from Vienna. Unfortunately, I couldn't start packing straight away because I had to work on a paper which was due Friday night. At about midnight my co-author noticed that the deadline had been extended until Wednesday so I went to sleep. The next day I finished packing and then started moving everything into my office at the university. Unfortunately, that took much longer than expected and I missed my bus to the airport. Turbo boost (aka taxi) to rescue and I was at the airport in time. I'm really slowly getting fed up with moving and need to settle down. It's just so much work, and that even though I don't own terribly much. I wonder how other people cope... in the last five years, I've lived in London, Innsbruck, Vienna, Melbourne, Cambridge and now Madrid. Hmm. Anyway, Madrid is fun. I'm sure I'm going to enjoy my time here. The people in the group I work with at the university are incredibly smart and friendly. Last night, Gregorio (my main contact at the university), Diego (the guy I'm staying with) and I went out for dinner... nice food and Sangria! What more do you want? The place I'm staying at is nice... Diego is friendly, we have wireless, a fairly big apartment and there's a balcony where I can see myself sitting with my laptop working on stuff and sipping Sangria... I don't know yet how I'll cope with the commute given that I've always lived very close to work (5 minutes per foot in Cambridge was about all I needed for everything) but I'm sure I'll find something to do. It will also be a really interesting experience to life in a country where you don't speak the language.

Martin Michlmayr: Vienna

I spent Monday to Friday in Vienna, visiting some friends from school. Quite a few people I know moved to Vienna after finishing high school (or later), so I thought I'd go there for a few days to meet up with some of them. On Monday evening, I gave a talk at Debienna, the Debian group in Vienna. I started with one of my presentations about quality issues in free software, but given that we were a small and informal group we often interrupted the presentation for discussions. During these discussions the generic issues I mentioned were applied to Debian and we discussed a number of problems in Debian and what we could do about them. I think it was quite interesting, although it stretched the talk quite a bit and some people were getting restless towards the end. This was also the first talk I gave in German. I originally planned to give it in English but then thought I'd try to do it in German. It went pretty well, although I couldn't think of a number of words on the spot and just used English words instead. (Not counting technical terms, obviously, which I didn't even try to translate.) On Tuesday and Wednesday, I mostly stayed in bed working on my laptop. This was, after all, only a pseudo-holiday and I had plenty of work to do. On Wednesday evening, Veronika (the friend I was staying with), maks (Maximilian Attems) and I went to B72 to see a concert by Das Bo. There was also a DJ from Waxos who was great. Das Bo was pretty good too, although he talked too much crap between songs. On Thursday, Veronika and I went shopping and I bought lots of new clothes. Friday morning, just before leaving, I met with Stefan Holek to do an interview about release management in Plone for my research. He raised a number of really interesting issues.

1 April 2006

David Nusinow: I Can't Believe I'm A "Manager"

Via reddit (which kicks the crap out of slashdot and digg): What I've Learned From Failure.

The link above is a long, but fascinating piece. I've had to become a lot more interested in how to manage software projects since taking on Xorg maintainance, and the same lessons seem to scale up well to how Debian as a whole manages itself. This article talks about some of the major problems that I've seen myself deal with, and the experiences of this guy echo my own over the past year very strongly. Here's a few examples:

"Getting away from weak teams, another source of failure is the omnipresent threat of "chickens." A chicken is not necessarily a weak individual, but a sign of a weak management structure. A chicken is an individual who has significant authority over your project, but does not make a personal commitment to the success of the project. Significant authority includes the authority to impose constraints on the team."

I like this and I've noticed it in the XSF and in Debian as a whole. People are free to work on what they want how they want, and this tends to work out well for us. But we also have no structure in which people must actually commit to what they do. As such, there's no accountability. This frees Debian developers from the preassure of having to work on something they don't enjoy, but it also creates abandoned packages, ignored bugs, and frustrated release schedules. In the past I've described a need for a stick in addition to a carrot for Debian developers, and the sentiment here echoes that idea. I've spoken with Manoj about his conception of personal responsibility in Debian, and I think it may truly be the bedrock on which Debian needs to rest. I still don't have a good mechanism for this yet though.

"Another sign of a weak team is poor development hygiene. There are dozens of development practices that seem trivial to the inexperienced outsider or to the manager focusing on "big wins." Examples of development hygiene include source code versioning, maintenance of an accurate bug or issue database, significant use of automated testing, continuous integration, and specifications that are kept current (whether incredibly detailed or high-level overviews)."

This is a something I myself have had a problem with over the past year. Branden was extremely good about keeping the XSF svn repo and the BTS up to date and well managed. I've done just about the opposite over the past year, and it's bitten me a few times. This however, was a conscious decision on my part, knowing that I was so far behind upstream that it was going to be hard to effectively manage the BTS without a recent codebase deployed to our users. So I focused on packaging instead, and luckily that road is nearly finished. Also fortunately, everyone else in the XSF managed the BTS for me, most notably (in alphabetical order by last name) Julien Cristau, Michel D nzer, Eugene Konev, and David Martinez Moreno, and they've managed to keep it relatively tidy. I'm going to spend some serious effort over the coming months to clean out the BTS so it's more manageable both for users and developers again. Luckly our SVN repo is in good shape still, so for the most part we're doing pretty well here. Debian as a whole also seems to be doing better at this, with lots of public svn repos springing up on alioth.

"It's mandatory to fail early. You need to know you're in trouble right away. That's essential when taking over an existing project or starting something new. You have to find out how you're doing within weeks. Not quarters, not months. The longer you wait, the more inertia the failure will have."

We're getting better at this, and I've sort of made it my mantra for this release cycle. Get things in to experimental as fast as possible, and then when I've fixed the majority of the bugs that show up there, put it in unstable as fast as possible. It worked out well for all the releases I've done so far and I'm going to keep doing it. Michel is really pushing me to keep CVS (or git as of Real Soon Now) snapshots from upstream in experimental, and I really like this idea and plan to follow through with it for this reason. This also echoes some of aj's ideas about speeding up development pace. Hopefully he'll implement them whether or not he becomes DPL, because I think they're going to be important for Debian as a whole.

"Dates are sacred."

We learned this during the sarge release cycle.

"The net result is that I've tried to find the happy medium where I generate weekly management reports on projects. A management report is something that is used to actually make a decision. Everything else is garbage. I've learned that when I haven't had management reports for a project, failure has resulted."

This is an interesting idea. It sort of echoes how I try and provide status updates on my blog, as well as the "Bits from" emails, but perhaps something more like this would be useful. I may try and play with this idea in the near future.

There's a lot more in there, but this entry already got way too long. Hopefully there's some food for thought in there for everyone who's interested in how Debian is run. The Debian development model has carried us very far, but I can't shake the feeling that we need to make some critical changes for it to continue. This will require a certain degree of boldness, but in order to fix the problems with the project I think we just need to clench our teeth and go for it. With that, I'll leave you with one last line from the above: "And if you decide to make changes, have the courage to go 100% with your gut. I've failed more than once when I watered down my convictions in order to appease dissenters. The only thing worse than evangelizing change and failing is looking back and realized you might have succeeded if you'd held firm on your convictions."

25 March 2006

Martin Michlmayr: Compiling the whole Debian archive on MIPS with GCC 4.1

Over the last 2.5 weeks I have built the complete Debian archive on a quad-core MIPS machine donated by Broadcom using the recently released version 4.1 of GCC. In parallel, I have done the same on an EM64T box donated to Debian by Intel. The purpose of this exercise was three-fold: Executive summary GCC 4.1 itself appears to be very stable, both on MIPS and AMD64. There are, however, a large number of packages using code (especially C++) which GCC 4.1 treats as errors. Fortunately, most of them are trivial to fix. By compiling about 6200 packages, over 500 new bugs have been discovered and submitted, 280 of which are specific to the increased strictness of GCC 4.1. Patches for 2/3 of those GCC 4.1 specific bugs have been submitted. Based on my findings, Ben Hutchings has prepared a summary of the most common C++ syntax errors (that weren't treated as errors before G++ 4.1). Most common programming errors Basically, it all boils down to broken C++ code. There were a few bugs in C code, but the majority was in C++. The most common errors I found are: I've posted a detailed report to debian-devel. Acknowledgements (abridged)

24 March 2006

Anand Kumria: Some random odds and sods as well as some ACID

Horms, why not use gworldclock? Martin, I think you are after tra. Andrew, you do realise that you could do that with yum – which has been in Debian for a while now. You'd have probably heard about it earlier if Mako could be bothered to get Atom 1.0 support working on Planet Debian. Rodney, Nokia phones generally use Netfront as their default. If you want to use Opera you have to specify it. I'd be highly skepticle of KHTML being used anywhere memory footprint mattered. It looks like it might be WebCore (dervied from KHTML) instead. But that is only on very recent phones (first half of 2006). Oh, and that is likely to be Yahoo merchant crawler. Yahoo probably thinks you are a corporate whore or something ;-). Finally is it just me or does it strike anyone else as odd that the Mozilla Corporation, with all of its' money, is not able to get a crack group of hackers together so that Firefox 2.0 can render ACID2? At least two of the competitors can already so, what's the go, Joe? (or in this case Mitchell).

Martin F. Krafft: Debian Assassins

I just announced the Debian Assassins Game at Debconf6, which I previously promised. Go on, sign up! What are you waiting for?

Martin Michlmayr: Oz, Cambridge, Vienna, Madrid

So I watched this Australian movie (Somersault) the other day and the cute accent reminded me again how much I miss the country. It has almost been 2.5 years since I left and I'd really like to visit again. Maybe I should try to make it to LCA next year. In a related note, I'm looking for Rob Weir who has mysteriously disappeared from the Internet. Does anyone know what's up with him? As much as I like Cambridge, staying at the same place for 2.5 years obviously doesn't work. ;) Next week I'll therefor go to Vienna for some "holidays" the first thing I did was to sign myself up for a talk... if anyone wants to hear me babbling about quality in free software on Monday, check out the Debienna site. Right after my return from Vienna I'll go to Spain where I'll spend three months working in the Libre Software Engineering research group around Jesus Barahona (a Debian developer) and Gregorio Robles. I'll actually work on my PhD for a change during that time and do cool quantitative work to support the qualitative studies I've done so far. Obviously, instead of packing, I spent the last few days and weeks hacking on Debian stuff, in particular making sure it works on the MIPS and ARM devices I support and which I cannot take with me to Madrid. So we finally have 2.6 kernels for MIPS in the archive now and debian-installer will move to it tomorrow. I've also compiled the whole archive on MIPS with GCC 4.1 but a more detailed report on that is forthcoming. P.S. In terms of Spanish movies, I can highly recommend The Lovers of the Arctic Circle and Talk to Her.

23 March 2006

Martin F. Krafft: Data juggling

Letting yesterday pass by in memories, I wonder how I was able to function even a bit for the last two years or so -- information-wise. While I was still at the Uni Zurich, I found myself almost constantly swamped with so much work that I (a) never got around to do any real research, and (b) turned my digital data into a complete mess. Forget about (a), it's (b) that concerns me right now. The pattern was usually:
  1. My main machine was becoming unstable and dying frequently, either on disk I/O or CPU-intensive tasks.
  2. With much time pressure, I was forced to move my data to a new machine. Two or three times that was accomplished e.g. by copying oldmachine:~/ to newmachine:~/lost+found/oldmachine (I am, unfortunately, not kidding. For the past half a year, I was working out of lapse:~/wing/lost+found/cirrus/lost+found/diamond. wing, cirrus, and diamond are all deceased machines, lapse is my laptop).
  3. Repeat (1) and (2) about three times and add to the mix that I also had a machine at home and a laptop, no synchronisation strategy really, no real backups, and no version control system.
To be fair: my important data was certainly backed up, and most of my work was on F/OSS or projects in our lab's version control system anyway. I am mainly talking about scripts, ideas, correspondence, photos, ... The chaos that built up had me busy all of yesterday. I brought all of my machines together, as well as the harddrives that were still lying around, hooked it all up, and started the endeavour. I set up a RAID 5 on one machine, mad of four 250Gb disks, and with 750Gb of space, I was ready to go. Using any combination(s) of dd nc, tar, cpio, scp, rsync, and unison, it took me several hours to bring all the data onto one machine. Usually, I would try to purge unwanted crap from ~, such as .thumbnails, or .ccache (!), once again wishing for widely-used ~/.var and ~/.etc, So today I have to consolidate about 680Gb of data. Most of it can be purged (I found a linux-2.2.7 directory somewhere in there), but often, I will have to look at two or three versions of a file and decide which one to keep. Fortunately, I am fairly certain it's usually the newest one. My intention is to move mostly everything to under the control of bzr, and then to use unison to synchronise ~ between all machines. However, there are still some unresolved points:
  • unison is for pairs, to keep three or more machines in sync, it's beneficial to have a central machine. I don't really want a central machine.

  • csync2 looks like unison for three or more, but it's a service, with listening daemon and all, and I thus cannot use it to synchronise with my home directories on machines where I don't have root or cannot install csync2.

  • I don't want everything synchronised. When it comes to documents and data, I cannot imagine any exceptions, but dot-directories in the home directory are a problem. E.g.:

    • ~/.gnupg: I don't want my GPG key to be synchronised to remote machines. However, I would not mind to synchronise the configuration or the public keyring.
    • ~/.ssh: Stuff like config and known_hosts can/should be synchronised. However, authorized_keys must not be.
    • ~/.mozilla/firefox: Would be nice, but almost impossible because of Firefox's braindead approach. For instance, you cannot write a new bookmarks.html file while Firefox is running -- it will dump its in-memory copy when quitting.
    • Most of my accounts don't need to store dot-directories for X programmes.
    • My shell or windowmanager configuration may have to be different between machines to support e.g. different defaults, Xinerama, relevant shell variables, etc.
    etc. etc. The ideal approach to the challenge of ~/.etc (I symlink into there for programmes not supporting non-default config file locations) would be a version control system. Since I don't want to depend on a single machine, bzr, git, or the other decentralised systems seem appropriate: keep a base for e.g. ~/.ssh and branch for each machine. However, then I could not use unison for ~/.etc, and just synchronising all .bzr/ subdirectories unfortunately does not work (as empirically determined). And I have not found an acceptable approach to keep the branches in sync; I surely don't want to have to push changes to every other machine before quitting the day, nor do I want to pull in changes every morning from all over the place. I may have to look at git, which IIRC stores every change/commit in a separate file, so then synchronisation of .git/ should do what I want. If you have any input on this matter, I'd be delighted to hear it.
I am still looking for the right tool to do the task of consolidation. mc works okay, but it's just a little too much typing without tab completion. konqueror is just fat, and nautilus currently won't install on amd64. Again, if you have a suggestion, I'd love to hear it. Data juggling is fun, or not. For sure, there's quite some adrenaline flowing around as you issue bulk commands, knowing that it's basically you and a scalpell, and all your digital life on the table. NP: Porcupine Tree, "The Sky Moves Sideways"

22 March 2006

Martin F. Krafft: Myanmar or not?

It all started with about 15 kilogrammes of children's clothing... wait, let's try again: It all started last year on my trip to Laos, about 14 hours walk from Luang Phrabang (the tourist capital). We were guests to a community somewhere up in the hills north of the city, where the children either wore some threads (it couldn't be called clothes anymore) or nothing at all. I felt pity, especially because people from those areas freeze very easily, since it's always hot there. I decided to come back. So when my girlfriend's mother, who runs a second-hand clothing store for children offered I'd take some before she clears out last year's "collection", I gladly did, even though I didn't have any concrete plans yet -- plans, yes, but no concrete ones. So with the clothes in my flat, I felt obligated to do something and finally ended up booking my trip to South-East Asia. Well, Bangkok, from there it's all do-as-you-go. It turns out that by rare circumstances, my girlfriend will be accompanying me for two of the five weeks I have set aside. The rest I am alone. And I wanted to go to Myanmar [0], which is the last of the countries on the South-East Asian mainland I haven't yet visited. But just today, I called the German Department for Foreign Affairs and was informed that Myanmar is fighting with bomb attacks in the cities and avian flu outside -- aside from the internal frictions caused in large by the ruling militia. Anyway, I am less afraid of the flu than of bombs, which are a risk -- however low -- that I won't take because I don't have any influence or control. So I am reconsidering (and I would love to hear any advice you may have). There are, of course, plenty of alternatives: for instance, the circle Chiang Mai, Laos, Hanoi, Hue, Saigon, and back. The clothes will be welcome (and needed) mostly anywhere, and I have at least some experience with the other countries. I doubt I will actually go back to Luang Phrabang because the only sensible way to do so is by spending two days on the boat from Chiang Khong, or flying in to Vientiane. I don't want to do that boat ride again, and I don't have money to burn either (despite flights being rather cheap over there). Anyway, my intention is not to travel and be a tourist, but instead to teach computers. I've done this before and noticed the need, and it's really not hard to get a bunch of interested kids into an Internet cafe, which you "rent" for the day for $20. I don't speak any of the languages there, and few speak English, but it's surprising how little speech is needed (maybe that's Bhuddism?). Sounds like Hanoi or Saigon will be the best places for that. Phnom Penh (in Cambodia) also has me interested. My flight's on the 4th of April, and I shall not return until the 5th of May, although the return date is flexible. I am excited, but also feel somewhat weird. Last year, I took a full turn in my life but have since been disabled. Now that I am regaining control over my body, but at the same time wondering whether a Ph.D. is what I want (I could just do Debian without the academic appendix, and probably earn money more effectively), I am burning to actually dive into the matter to be able to finally answer that question. The trip to South-East Asia just pushes this further out into the future. Some of you may wonder why I am even daring to bother with such petty concerns -- after all, they aren't really existential, more like luxury (compared to some previous troubles in my life). Well, I don't have an answer. I feel weird about it all, and it's been weird to be disabled for the better part of that last half a year, just after quitting my previous job. At least I am maintaining my optimism.
[0]Moray Allen (of the Debian project) was actually the first to give me a good reason (in Brussels) to call Myanmar Burma instead/again -- it seemed backwards before. But apparently, Myanmar was the name chosen by the militia in control, which is undoubtedly not to be supported. Burma has the negative taste of Britain to it -- negative only in the light of the tourist boycott Tony Blair called out last year. I will stick with Myanmar as do most other sources.

21 March 2006

Joey Hess: replacing stuff with busybox

Martin- ric Racine: You asked about embedding Debian with busybox.
Would anybody happen to have more details about exactly which packages Busybox can replace while still providing just enough functionality to boot a Debian-based system up to an X display manager?
This is in general an impossible question to answer since any given Debian package may or may not work with any given utility from busybox. What we do at work to shoehorn a X-capable embedded Debian-based arm system into 32 mb or so of flash, is to install our set of packages, then tweak things until busybox diverts nearly every utility it supports. Then we snapshot the files used for a shutdown, boot, and the specific use of the system we want to support, and copy just those files over to our image, which ranges from 4 to 32 mb. For the busybox related parts of this, we use a program I wrote called busybox-links to set busybox up to divert everything cleanly and (semi-)reversably using dpkg-divert (and in some cases update-alternatives). busybox-links also tweaks a number of init scripts to work with busybox, stuff like editing /etc/init.d/hwclockfirst.sh to run hwclock without the --noadjfile parameter, which busybox lacks, and a dozen or so other such changes. Happily busybox readlink now supports -f, so the main set of things that had to be patches doen't anymore. This set of tweaks likely won't be sufficient for your system, but you can add more in a like vein. busybox-links is contained in our ads-additions package. As for reducing the tweaked Debian system down to just the files needed to run, we use the adsrootbuilder, which is still quite specific to our systems, but which I hope to eventually make less so. Both these packages can be downloaded from our apt repository:
deb-src http://www.applieddata.net/developers/linux/debian ads main contrib non-free
Of course, that's just one of many ways to do it. Part of the problem of embedding Debian right now is that there are as many ways to do it as there are people doing it, and no agreement on the right way, and so little progress in some areas. In the future, I for one would like to see a broad agreement in Debian that making init scripts and the like compatable with busybox is worth doing if it doesn't make them significantly slower or uglier. Then I could send all these tweaks in as patches, which would be a better use of my time than maintaining them going forward, and would make Debian an overall more flexible and more useful system for embedding. (PS, RE what debootstrap installs; it's based on whatever is > standard priority. If you have improvements, might I suggest talking to its maintainer, not blogging?)

Next.

Previous.