Search Results: "tar"

20 November 2007

Martín Ferrari: The times they are a-changin'

I had lost interest in the DM thing. Since August, when I asked for advocacies, those were posted to the newmaint list, and then nothing happened. Also, since a few days ago my NM process is running again, and there was the questioning about people becoming DM when they're close to finishing NM. Today, Gunnar sent a mail encouraging people in the Perl group to become DM, and I answered with those arguments. To my surprise, Joey Hess contacted me to tell me that my application ahd slipped under the radar for being too early and that I could be added now to the keyring. So I gathered all the required data and sent a bug report. A couple of hours later this message surprised me to no end: I am already a Debian Maintainer!!111one!! I must say that I'm completely stunned, I'd have expected to wait a couple of weeks, or months... This feels so... un-debian! :) I very happy for two reasons: obviously because now I can upload my own packages, but also because maybe this can finally make a difference for Debian. Thanks to everybody who has helped this to happen, and hope that more good changes are on our way! Now, if you excuse me, I'll have a beer to celebrate. Tomorrow I will start pestering my sponsors for their last sponsored uploads :) Tags: Planet Debian, Planeta Debian, Planet Lugfi, Debian

19 November 2007

Evan Prodromou: 28 Brumaire CCXVI

I'm glad to note that there's been a lot of movement over the last few weeks for the Montreal Coworking space. Patrick Tanguay, who's been organizing the project, let me know recently that we're closing in on a space. Which is just fantastic. Coworking is a loose term for a number of different ways of working together. The term is most commonly used for a kind of shared office where participants pay for either a fixed space (their own desk) by the month, or they pay for the use of a pool of free spaces (shared desks) on a daily or part-time basis. There are the kind of office resources, like WiFi, conference rooms, printers, copiers, etc. that you expect from an office, but unlike most shared-office situations, there's also an emphasis on community and communications. It's a great kind of work environment for people who would otherwise work at home or in caf s, such as freelancers, contractors, and startuppers -- or for people visiting from out-of-town. I've been to a couple of the Bay Area (California) coworking spaces -- the one at Citizen Space in San Francisco and the one at SocialText in Palo Alto. Both were convenient, fun, and social -- a good place to get some work done. Patrick's been working on a Montreal coworking space for a while -- talking to the City and neighbourhood development organizations -- and he's settled on a space in Mile End. It looks pretty fantastic. You can see the pictures and a map at the Montreal Coworking Web site. I've been working out of the house for about 5 years, and I really like the freedom and convenience it affords. That said, I'm really looking forward to having a more formal environment to work in than my home office. It's great here, and I feel very comfortable, but it would be nice to be out of the house. I also tend to meet with contractors and partners at local caf s, which can be distracting -- I'm looking forward to having meeting rooms. There's a 5 7 ("sank ah set" -- it's what we call a cocktail party here in Montreal) planned for people who'll be involved in the site planned for this Wednesday, November 21, at Bar Inc. (250 Mont-Royal Est). I won't be there -- we'll be in New Jersey by then -- but I hope others interested in the coworking take the chance to go. tags:

JS-Kit and data portability I've been a big fan of JS-Kit since I heard about it. I featured it in my list of 10 Web APIs for LinuxWorld, and I use it on my own personal site for comments. But one thing that concerns me, and that I've asked for clarification from JS-Kit about, is data portability. If they went out of business (heaven forfend), or if I figured out another cool way to do comments on my site, I'd like to be able to migrate old comments to the new system I'd build/use/buy. But as far as I can tell, there's no interface to download all comments on a site (either in HTML or some other structured format). I think this is going to be a key issue for people building Web sites with UI widgets in the future. It's a really, really useful way to make sites, but I don't think many developers are going to be willing to invest in a platform with no "insurance" that they can be flexible in the future. Sure, it's free of charge, and it seems kind of mean to use the poor JS-Kit folks and then move on to someone else -- but realistically it's an option you need for development. tags:

One-liners Some other stuff I'm thinking about today:
  • On the "upcoming events" front, we've got some plans to make BarCampCanada1 happen here in Montreal in May 2008. I'm not sure how that's going to shake out, but I'm excited about the possibility of a nationwide BarCamp.
  • I'm interested in Heather Ford's and Jimmy Wales's 50 parties idea - having fifty parties in one year to bring together local Free Culture people. I think we should have a party here in Montreal. Maybe in the Spring...? Maybe to coincide with BarCampCanada1?
tags:

Julien Blache: pommed v1.12: oops

That’s a bugfix release for MacBook, PowerBook and iBook users. Pommed v1.11 will refuse to start on these machines claiming it didn’t find any event devices to use; I raised the number of expected event devices in v1.11, but unfortunately that number is only correct for the MacBook Pro. So, here is v1.12 to fix that, and sorry :-)

Russell Coker: WTF - Let s write all the code twice

There is an interesting web site WorseThanFailure.com (with the slogan “Curious Perversions in Information Technology”) that documents amusingly failed projects. The name used to be TheDailyWTF.com but changed due to the idea that for some projects success (interpreted to mean limping along in production) is worse than failure (being scrapped and re-written). I’ve created a new category WTF [1] on my blog to document such projects, both ones that I have personally witnessed and ones that friends and colleagues have seen. In the 90’s I spent some time working on an OS/2 GUI program to be the front-end for a mainframe backed system used by call-center workers. The first thing that they did was to develop a file naming scheme, they decided that all source files should be in the same directory (not unreasonable), but that 8.3 should be the limit of file name lengths in case there was a need to port the system to Windows 95. The fact that porting a program which did little other than display a GUI and talk to a S/390 server to a different OS was difficult (given the large amount of platform specific GUI code) was lost on them. Then they decided that the first two letters would be “FE” in case the source was merged with another bank project (of course the bank had many “Front End” systems talking to mainframes - so even this didn’t guarantee that they would be free of name clashes). Characters 3 and 4 were to represent the section of the program, and as the 3 character extension was one of “.h” or “.cpp” that left exactly 4 characters to name the file - we may as well have numbered the source files. Eventually one of the guys started making jokes about the file names by trying to pronounce them as words and that convinced a majority of the developers that the files should have long human-readable names. As the NMAKE expert (they insisted on not using unsupported software such as GNU make) it was my job to fix all the file names. The bank had an internal users’ group for the C++ development environment, but the contractors were not invited to attend. You might think that it would make sense to have the most skillful C++ programmers attend the meetings and share their knowledge, but apparently attending such meetings was a perk of being a permanent employee. What do you do when you have a C++ development project running behind schedule and a permanent employee who has had no prior exposure to C++ and wants to learn? One manager believed that assigning the junior programmer to the project is a solution to both problems - it was good for teaching the programmer C++ in a hurry but not so good for the deadline. There was a lot of excitement related to the back-end development. The mainframe guys assured me that CICS could never handle bad data and it totally wasn’t their fault if my program sent bad data to them and the region crashed. The first CICS region crash occurred when the mainframe guys told me to make the unused space in text fields “empty” - to a C programmer this means filling them with the 0 character but it killed the CICS region (apparently “empty” means filled with spaces to CICS programmers). A later region crash came when they told me to change the field length for the account name everywhere that it occurred - they told me that they wanted the change immediately - so I changed a macro definition, ran “make”, and sent a transaction with the changed size. Apparently “immediately” really meant “after we have spent an hour of software development changing magic numbers throughout our system”. I’m assuming that COBOL has some facility that roughly compares to C macros for defining field lengths and that it was the programmers not the language that was at fault. When the project became seriously behind schedule they hired some expert programmers from another country to help with the development. The experts decided that we needed to redesign the system (not that it had been designed in the first place) to use a “model view controller” architecture. When the real business logic is all on a S/390 and the only logic in the front end is to combine the contents of some screen-scrapes from a virtual 3270 terminal into a single GUI dialogue (with the first screen occasionally getting data from the IVR system) the benefits of MVC seem rather small. The new MVC version of the system was dubbed “phase 2″ and there were a series of deadlines for changing over from “phase 1″ which were missed. So the original team of developers continued on their project without any help from the “experts”. The last report I heard (some time after leaving the project) was that Phase 1 had gone live in production while Phase 2 was still being developed (at that time Phase 2 had a year of development and Phase 1 had about 15 months). The lesson to be learned from this is that management should only hire people that they can control. If you hire a consulting company and then let them do whatever they want (as opposed to solving the problem that they were hired to solve) then at best they will do no good and they may just slow things down. One of the more memorable incidents was when the project manager was talking to his 2IC, he said “I think we’re really breaking ground, [pause] I’m breaking wind and we’re breaking ground”. My desk was a few meters from where the wind (and ground) were being broken, I unfortunately was able to verify that wind was being broken but was not as certain about the ground. I did learn some useful things during this project, one was the fact that sample code from library vendors should not be trusted and ideally should be read from a print-out not pasted into the project source tree. The CTI library vendor had buffer overflows in their sample code. Another useful thing was the coin-tossing method of dispute resolution. If two good programmers have a disagreement about how to implement something tossing a coin is a quick way of resolving the dispute - this only works with two good programmers (in which case either idea will work). The project in question was messed up in many ways. I may write another post in the WTF category about it.

Adam Rosi-Kessel: Smooth Velouria Espresso

I just discovered the recently-opened Velouria Espresso in Jamaica Plain via this subscribers-only article in the Atlantic. Velouria marks the latest arrival in the single-origin coffee movement pioneered by George Howell. In a nutshell, the idea of single-origin coffee beans is that if beans are identified with a particular region (or even particular grower), the farmers will have more incentive to distinguish themselves. Ultimately, coffee beans will be known like fine wines, and the best growers will earn premium prices (thus bringing even more money to underdeveloped areas than coffee sold as fair-trade). Flatblack Coffee Company, near my office, operates under similar principles. More details in this episode of On Point with George Howell. Velouria distinguishes itself with its focus on brewed coffee rather than espresso (although they have plenty of that as well). The shop features the “Clover” coffee machine (”Bring out the subtle nuances of all of your coffees through complete, independent control of all of the important brew parameters: grind size, dose, water temperature, and contact time.”) I got a cappucino and a single-origin Kenyan coffee made with the Clover Machine. (Actually, two distinct single-origin Kenyan coffees, which Steve surreptitiously swapped on me while I wasn’t looking). They were all excellent. My cappucino started with a little foam heart in the crema:
P1040782
Amazingly, even when it was finished, the heart was still faintly visible:
P1040784
Steve enjoyed his espresso as well:
P1040783
Velouria has no website that I could find. it’s at 389 Centre Street, Jamaica Plain, MA 02131. Beware the Yelp page as it has inaccurate hours information — just call them at (617) 522-2400 if you’re wondering if they’re open. Now if we could only get a place like this in one of the vacant storefronts in Roslindale… Technorati Tags: , , , , ,

Manoj Srivastava: Manoj: Eragon

I liked the book. Sure, it is The Lord of the Rings meets Star Wars , but, the book had a nice flow and it was written by a fifteen year old, fer gawds sake. The very fact that he can turn out a page turner of a book when others of his age can t string together a grammatical sentence spelled correctly is amazing. Overall, derivative, unoriginal, and simplistic though the book is, it has an original charm a very good book for children, and one that adults can read through as well. So I went to this movie with high hopes. What a let down. This was merely a notch above the Beowulf debacle. Lack luster performances, bland, drudge of a movie, with all kinds of interesting elements and nuances from the book removed. Crude, unimaginative, ham handed performances all around. The plot line, which did not follow the book, was dumbed down, there were implications that the Elven princess was a potential love interest (faugh), and the refreshing pace of the book fell off to a plodding soporific caricature. It is an offense to the book, and to the author. I was going to point out the differences between the movie and the book; and why they difference made the movie worse, but after 30 or so items this post would have gotten to be too big. And, having written it, I have the release of the rant, so I no longer have to include it here. Anyway, Wikipedia says that the film came in at #235 in the all time worldwide box office chart but was met with dismal critical reviews, scoring only a 16% composite score on Rotten Tomatoes I feel sorry for you if you suffered through this, as did I.

18 November 2007

Raphael Geissert: KCheckGMail 0.5.7.3 released

Three days ago I released KCheckGMail v0.5.7.3: nothing but a one-bug fix release.

I know it's a little late, I mean, three days ago!

Anyways, better blog about it now than not bloging about it ever.

This release was prepared by the new dev, Luis Pereira. It fixes an authentication problem in newer versions of gmail.
This time I also uploaded the md5 checksums signed with my key, for those who are interested in that stuff.

As usually, the new version can be downloaded from [url]http://kcheckgmail.sourceforge.net/download.html
Currently there are no packages neither for sarge nor etch, I'll build them as soon as I fix my wannaBuild.
And for unstable, I've already sent the new package to Anibal so I hope he'll have some time soon to review and upload the package before bugs about the new gmail version are filed in the BTS :)

Now that I'm finally writing a blog post, I think I'll also write something about what's up with me lately:

Some days ago I submitted my NM application :yes:

But besides that, I've been very busy lately because of school (exams, home work, etc), university (preparation courses, admission exams, etc), Real Life (tm), and because of some Debian-related work.

And I don't expect this to get any better soon (not before the end of the year), I'll be taking some other courses after school exams so I might be even more absent from my other projects (only some QA work on Debian seems to be easy lately).

Evan Prodromou: 27 Brumaire CCXVI

I've been getting really interested in the new crop of Linux-based operating systems for mobile devices. I got a Nokia N800 earlier this year, which I've found really useful -- although a little frustrating, too. And I've been following the developments on OpenMoKo with great interest, too. So last Monday, when Google Android came out, I offered to give an experienced developer's opinion of the development kit for Network World. I spent most of the afternoon trying out the SDK, checking out the documentation, watching the presentation videos, and working on sample applications to get a feel for it. I'm pretty impressed with Android, and I think it's got a good shot to become the Open Source mobile application platform. I think that whoever wins in this space has the chance to shape how all mobile phone platforms work in the future, and to take a good chunk of the market. Opening up the phone platform to allow a real marketplace of third-party apps is, I believe, going to be a huge advantage for whoever can make it work. I think the main two contenders in the area are well ahead of Android so far, but they're really going to have to capitalize on that lead in the next 8-10 months before the first Android handsets are set to hit the market (late 2008 -- although we'll see about that schedule). And I'm not sure they've got the means and commitment to do it. Nokia has been screwing around with the N series of Internet tablets for a while. Which is great -- the operating system is clever, the GUI ("Hildon") GTK-based, and development in Python on the platform is a breeze. The basic tools -- media player, RSS reader (ingenious), Web browser, email, etc. -- work well. However, for unexplained reasons, Nokia hasn't put a damn phone into the thing. If there is a similar device that does everything that the N800 (or N810) does, plus has a phone in it, which one are people going to buy? It seems obvious to me. The other interesting OS is OpenMoKo, which I think is a great project with exactly the right goals. However, there's been some disappointment in the enthusiastic community around the OS as schedules have slipped and the developer preview devices shipped without a functioning dialer app. These two projects will have to fight uphill against the fear, uncertainty and doubt generated by the Android announcement and SDK release, even to stay in the game. And, to be fair, Google's announcement was masterful: classic vaporware -- for a product that won't be shipping for at least a year. But they got a pretty solid list of partners for the platform to sign on (albeit with only vague requirements for support). Best of all, they released a one-two punch of a bunch of developer information videos with tantalizing views of a nice-looking potential device, and a good SDK with tons of documentation and developer tools. It even includes an emulator that looks like a little phone. Awww! Android is slick, it's deep, and it's well-designed. The architecture is smart and sophisticated without being too clever for its own good. It's built on conservative -- maybe a little too conservative -- twin pillars: Java and Linux. For hardware providers, there's Linux's tried-and-true driver framework. For applications developers, way up at the top of the stack, there's good ol' boring Java, with new and smart APIs targeted specifically for mobile device apps, all on top of a new virtual machine called Dalvik that (supposedly) optimizes the hell out of Java bytecode. I was really impressed that the emulator emulates much more than just the Java APIs -- you can build ARM binaries in C that run on the thing. Very nice. Am I still going to get an OpenMoKo device? Maybe. But I'm going to continue playing around with the Android SDK, and looking for early developer versions of Android-supporting devices? Oh, yeah. Oh, and the article I did the research for is here; strangely it ended up on ComputerWorld rather than NetworkWorld. OK for me, though. tags:

More about me and my cool life So, I talked yesterday (Journal/27 Brumaire CCXVI) about how much weight I've lost in the last few months, which has been great. Another thing that's been going on for me is that I've started using the Getting Things Done process for scheduling my tasks and my time. I've never been particularly good at managing my time, but at least I've always known that however late or irresponsible I might be, my brother Ted would always be later. But when I visited San Francisco in August, Ted was really doing great. Friends and family kept telling me how responsible and down-to-earth Ted seemed lately. And whenever he had an idea for something to do, he wrote it down in his little Sidekick device. Ted showed me how the GTD system worked for him, and so I went out and bought the book and started reading it. I have been doing GTD for a few months now, and I've found it really satisfying. I don't worry as much any more about little things that I should be doing -- they're all captured in my system. It's really gratifying. I don't know if I've been quite as successful as Ted in improving my personal productivity, but I do know that I'm feeling a lot better about things and about myself. Which is really all that matters. tags:

Skating away Maj, Amita June and I went ice-skating today. It was AJ's first time out on the ice, and she really enjoyed it (most of the time). We had a couple of spills, mostly because it was really my first time skating with a 2-year-old, and partly because it was her first time skating with anyone. We went to the indoor rink near our old house on rue Cartier at the corner of Marie-Anne. Pretty soon we'll be able to go outside on the pond at Parc Lafontaine. catching our breath Maj isn't really a big skating fan, but she seemed to have a good time this time around. Which made three of us. I think we've got the makings of a Sunday-afternoon family tradition. We'll see, at least. tags:

More one-liners
  • I'm glad to see that the Mister Wong logo contest I talked about a while ago (Journal/21 Thermidor CCXV) has borne fruit. The top 12 logos look pretty good.
  • Maj and I have been catching up on season 3 of Deadwood lately. Great show, nice to see that season three is as solid as previous ones.
  • We've got RecentChangesCamp coming up in San Francisco in February 2008 (I think). Anyone interested should get involved at http://aboutus.org/RCC2008 .
  • What's the best alternative to the Sitemaps protocol for people who are into RDF? I'm thinking you could just make a hugantic RSS 1.0 feed -- after all, it is the "RDF Site Summary" format. Best of all, most search engines consume RSS as a recommended feed format. I'm going to try it with Vinismo and let you all know. The downside: I'm not sure many processors will handle a 100,000-item RSS feed very well.
  • Norman Mailer died just as I got around to reading the copy of ''Oswald's Tale'' I stole from the Driskill Hotel last year at South by Southwest. I can't help feeling responsible.
tags:

Russell Coker: Better Social Networking

When advogato.org was still cool I signed up to it. It was an interesting research project in skill metrics (determining the rating of people’s coding skills by the votes of others and weighting the votes by the rating of each person), and it was nice to be rated Master soon after I joined. I still use it on occasion for the blog syndication feature (when I find a good blog on Advogato I add it to my Planet installation). When orkut.com was really cool (when every time I had dinner with a group of people someone would ask if they could be an “orkut friend”) I signed up to it. It was interesting for a while but then most people got bored with it. Now there is Facebook and MySpace for social networking for social purposes and LinkedIn.com for business related social networking. I periodically get invited to join those services but have not been interested in any other than LinkedIn. I can’t join LinkedIn because their mail server is regarded as a SPAM source by my mail server but their web server refuses to provide any information on why this is (the rejection was apparently long enough ago that it’s rolled off my logs). The problem with all these services is that I am expected to sign up with each of them and go to a moderate amount of effort in writing up all the data in the various web pages. Writing it is a pain, keeping it up to date is more pain, and dealing with spam in “scrap-book” entries in Orkut is still an annoyance which I don’t want to multiply by four! So far the only step I’ve seen towards addressing this issue is the XFN - XHTML Friends Network [1] project. But that seems to be of fairly limited scope (just referring to the friendship status of people in a <A HREF link). I believe that the requirements for social networking are:

  1. Personal data about each person, some of which may only be available to friends or friends of friends.

  2. The user owns their own data, has full control over where it’s sent and the ability to request people who receive it to keep some parts of it secret.

  3. Ability to send email to friends of friends (determined by the wishes of each friend and FOAF).

  4. Ability to get a list of friends of friends.

  5. Incorporation of a standard format for CVs (for business social networking).

I think that the only way to go is to have a standard XML format for storing all personal data (including financial, career, and CV data) that can be used on any web site. Then someone who wants to be involved in social networking could create an XML file for a static web server (or multiple files with different content and password protected access), or they could have a server-side script generate an XML file on the fly with a set of data that is appropriate for the reader. The resulting social network would be entirely distributed and anyone could write software to join in. This covers item 1 and part of item 2. For sending email to friends of friends it would be good to avoid spam as much as possible. One way of doing would be requesting that friends publish a forwarding address on their own mail server in a manner similar to SRS [2]. SRS include the ability for such addresses to expire after a certain period of time (which would be convenient for this). In fact publishing SRS versions of friends email addresses would be a good option if you already use SPF [3] and SRS in your mail server. This covers item 3. The XML format could include information on how far the recipient could transfer it. For example if my server sent an XML file to a recruiting agency with my CV it could state that they could distribute it without restriction (so that they can give it to hiring managers) with the possibility of some fields being restricted (EG not tell the hiring manager what I used to get paid). For my mobile phone number I could send it to my friends with a request that they not send it on. This covers part of item 2. The URL for the friends file would of course be in the main XML file, and therefore you could have different friends lists published from different versions of your profile (EG the profile you send to recruiting agencies wouldn’t include drinking buddies etc). This completes the coverage of item 2. Then to have a friends list you have a single XML file on a web server that has the public parts of the XML files from all your friends. This means that getting a list of friends of friends would involve getting a single XML file for each friend (if you have 100 friends and each friend has 50 unique friends on average then you do 100 HTTP operations instead of 5,000). Minimising the number of web transfer operations is essential for performance and for reliability in the face of unreliable web servers (there is no chance of having 5,000 random web servers for individuals all up and accessible at the same time). This covers item 4. Item 5 is merely a nice thing to have which allows more easily replacing some of the recruiting infrastructure. As any such XML format will have several sections for arbitrary plain text (or maybe HTML) for describing various things the CV could of course be in HTML, but it would be good to have the data in XML. I posted this in the “blog” category because blogs are the only commonly used systems where end users do anything related to XML files (the RSS and ATOM feeds are XML). A blog server could easily be extended to do these social networking systems. As with a blog users could run their own social networking server (publishing their XML files) or they could use a service that is similar in concept to blogger which does it all for them (for the less technical users). Then an analogy to Planet, Technorati, etc in the blog space would be public aggregation services that compare people based on the number of friends they have etc, and attempts to map paths between people based on friends. This could also include GPG [4] data such that signing someone’s GPG key would cause your server to automatically list them in some friend category. The XML format should also have a field for a GPG signature (one option would be to use a GPG sub-key to sign the files and have the sub-key owned by the server). I don’t have any serious time to spend on implementing this at the moment. But if someone else starts coding such a project then I would certainly help test it, debug it, and contribute towards the XML design.

Theodore Ts'o: Does perfect code exist? (Abstractions, Part 1)

Bryan Cantrill recently wrote a blog entry, where among other things, he philosophized on the concept of “perfect code”. He compares software to math, arguing that Euclid’s greatest common denominator algorithm shows no sign of wearing out, and that when code achieves perfection (or gets close to perfection), “it sediments into the information infrastructure” and the abstractions defined by that code becomes “the bedrock that future generations may build upon”. Later, in the comments of his blogs, when pressed to give some examples of such perfection, he cites a clever algorithm coded by his mentor to divide a high resolution timestamp by a billion extremely efficiently, and Solaris’s “cyclic subsystem”, a timer dispatch function. Watching his talk at Google where his introduction and sidebar book review on Scott Rosenberg’s “On Dreaming in Code”, it’s clear that he very passionately believes that it is possible to write perfect code, and that one should strive for that at all times. Perhaps that’s because he mostly writes code for operating systems, where the requirements change slowly, and for one OS in particular, Solaris, which tries far harder than most software projects to keep published interfaces stable for as long as possible. In contrast, the OS I’ve spent a lot of time hacking around, Linux, quite proudly states that at least inside the kernel, interfaces can not and should not be stable. Greg Kroah-Hart’s “Stable API Nonsense” is perhaps one of the strongly and most passionate expositions of that philosophy. I can see both sides of the argument, and in their place, both have something to offer. To Bryan’s first point, it is absolutely true that interfaces can become “bedrock” upon which entire ecosystems are built. Perhaps one of the most enduring and impactful example would be the Unix programming interface, which has since become enshrined by POSIX.2 and successor standards. I would argue, though, that it is the interface that is important, and not the code which initially implemented it. If the interface is powerful enough, and if it appears at the right time, and the initial implementation is good enough (not perfect!), then it can establish itself by virtue of the software which uses it becoming large enough that it assumes an important all out of scale with its original intention. Of course, sometimes such an interface is not perfect. There is an apocryphal story that when S. Feldman at AT&T labs first wrote the ‘make’ utility, that he did so rather quickly, and then put it available for his fellow lab members to use, and then went home to sleep. In some versions of the story he had stayed up late and/or pulled an all-nighter to write it, so he slept a long time. When he came back to work, he had come up with a number of ways to improve the syntax of the Makefile. Unfortunately, (so goes the story) that too many teams were already using the ‘make’ utility, so he didn’t feel he could change the Makefile syntax. I have no evidence that this ever took place, and I suspect it is an urban myth that was invented to explain why Makefiles have a rather ugly and unfortunate syntax that many would call defects, including the use of syntactically significant tab characters which are indistinguishable from other forms of leading whitespace. Another example which is the bane of filesystem designers everywhere are the Unix readdir(2), telldir(2), and seekdir(2) interfaces. These interfaces fundamentally assume that directories are stored in linear linked lists, and filesystems that wish to use more sophisticated data structures, such as b-trees, have to go to extraordinary lengths in order support these interfaces. Very few programs use telldir(2) and seekdir(2), but some filesystems such as JFS maintain two b-trees instead of one just to cater to telldir/seekdir. And yet, it is absolutely true that interfaces can be the bedrock for an entire industry. Certainly no matter what its warts, the Unix/Posix interface has proven the test of time, and it has been responsible for the success of many a company and many billions of dollars of market capitalization. But is this the same as perfect code? No, but if billions of dollars of user applications are going to be depending on that code, it’s best if code which implement such an interface be high quality, and should attempt to achieve perfection. But what does it mean for code to be perfect? For a particular environment, if the requirements can be articulated clearly, I can accept that code can reach perfection, in that it becomes as fast as possible (for the given computer platform), and it handles all exception cases, etc., etc. Unfortunately, in the real world, the environment and the requirements inevitably change over time. For example, Bryan’s cyclic subsystem, which he proudly touts as being if not perfect, almost so, and which executes at least 100 times a second on every Solaris system in the world. I haven’t looked at the cyclic system in any detail, since I don’t want to get myself contaminated (the CDDL and GPLv2 licenses are intentionally incompatible, and given that companies — including Sun — have sued over IPR issues, well, one can’t be too careful), but waking up the CPU from its low-power state 100 times a second isn’t a good thing at all if you are worried about energy conservation in data centers — or in laptops. For example, on my laptop, it is possible to keep wakeups down to no more than 30-35 times a second and it would be possible to do more but for an abstraction limitation. Suppose for example an process wants to be sleep and then receive a wakeup 1 milliseconds later, and so requests this via usleep(). At the same time, another application wants to sleep until some file descriptor activity takes place, or after 1.2 milliseconds takes place. 0.3 milliseconds later, a third process requests a sleep, this time for 0.8 milliseconds. Now, it could be that in all of the above cases, the applications don’t actually need exact timing; if they all get their wakeups plus or minus some fraction of a millisecond, they would be quite cool with that. Unfortunately, the standard timer interfaces have no way of expressing this, and so the OS can’t combine the three wakeups at T+1.0, T+1.1, and T+1.2 milliseconds into one wakeup at T+1.1ms. So this is where Greg K-H’s “Stable API Nonsense” comes into play. We may not be able to solve this problem at the userspace level, but we darn well can solve this problem inside the kernel. Inside the kernel, we can change the timer abstraction to allow device drivers and kernel routines to provide a timer delta plus a notion of how much accuracy is required for a particular timer request. Doing so might change a timer structure that previously external device drivers had depended upon — but too bad, that’s why stable ABI/API’s are not supported for internal kernel interfaces. Is this that the interface could have been extended? Well, perhaps, and perhaps not; if an interface is well designed, it is possible it can be extended in an API and/or ABI compatible way. There usually is a performance cost to doing so, and sometimes it may make sense to pay that that cost, and sometimes it may not. I’ll talk more about that in a future essay. Yet note what happened to the timer implementation. We have a pretty sophisticated timer implementation inside Linux, that uses heap data structures and buckets of timers for efficiency. So while I might not call it perfect, it is pretty good. But, oops! Thanks to this new requirement of energy efficiency, it will likely need to get changed to support variable levels of accuracy and the ability to fire multiple timers that are (more or less) coming due in a single CPU wakeup cycle. Does that make it no longer perfect, or no longer pretty good? Well, it just had a new requirement impact the code, and if criteria for perfection is for the abstraction defined by the code to be “bedrock” and never-changing, and no need to make any changes in said code over multiple years, I would argue that little to no code, even OS code, can ever achieve perfection by that definition — unless that code is no longer being used. (This is the first of a multi-part series of essays on abstractions that I have planned. The next essay which I plan to write will be entitled “Layer surfing, or jumping between layers”, and will be coming soon to a blog near you….)

Evan Prodromou: 26 Brumaire CCXVI

So, I've been off blogging for almost three months now -- from about mid-August to now. It's been kind of guilt-ridden, and it's also been kind of a relief. Being a B-list blogebrity is a direful burden, and having some time away was restful and relaxing and energizing. But now I'm ready to come back! One of the reasons that I haven't been blogging is that once you fall behind, it's really hard to catch up. So I've decided to not do the entire task at once. Instead, I'm just going to start a page on my 2007 Hiatus and fill that up as time permits. For those of you who care greatly about exactly what I did each and every day for the last three months, you've got a spot to read it. And, truthfully, I dropped out of the B-list ranks on Technorati during my time away. I'm back to my natural position as a C-list blogger, and baby, it feels good. Get ready for some photos of my cats, coming up soon! tags:

Feelings of loss One of the other main reasons I haven't been blogging in the last few months is that I've been losing weight. A lot of weight. I've dropped from a high body mass index (BMI) of about 43 -- dangerously high -- to my current sane but still high 33.6. I'd like to get down to a more reasonable BMI of 30 ("overweight") by the end of the year, and be somewhere around 25 ("normal") by next summer. I can lose weight pretty easily when I put my mind to it. Well, actually, it's still insanely hard, but I'm so damn stubborn and obsessive about things, when I actually sink my teeth into them, that it seems easy to the casual observer. My recipe is simple: reduce the amount of food I eat, do low-intensity exercise about an hour a day, and measure everything as well as possible. I eat 3 good meals a day -- about 50% fruits and vegetables, 25% complex carbs like rice or bread, and 25% protein like beans, tofu, fish or cheese. I steer clear of sweets and I drink alcohol only on occasion, and seldom more than a glass or two of wine. For exercise, I've been running around Parc Lafontaine or on a treadmill three days in a row, then on the fourth day lifting weights at a local gym on rue Gilford. I still have a ways to go, but the results have been good so far, and I'm feeling like I'm getting close to the neighbourhood of what I "should" weigh. I've been getting a lot of compliments from friends and family, which is a great motivator. Most of all, I feel good running, jumping, and playing with my daughter, which is the biggest reward of all. All that said, the exercise is taking an extra 1-2 hours out of my day, and blogging has been the main thing cut out to make room. But I think I can work around that now. tags:

Road trip We're leaving Tuesday for a trip to New Jersey to visit my dad's family for American Thanksgiving. (Yeah, they're my family, too.) We're all looking forward to seeing aunts and uncles and cousins and other extended family, but we're also looking forward to spending our powerful Canadian loonies in the US. The Canadian dollar's gone up and up this last few months, and though it's no longer trading at its ridiculous high of US$1.10 (!), it's still above parity, which means our money stretches pretty well. Coupled with this is the fact that most products here in Canada are still priced as if the loonie were still worth US$0.62. It's not atypical to see a book priced for $7.99 US, $10.99 Canadian. So we're going to do some shopping for clothes, books, music and other goods while we're stateside. I plan on bringing an empty suitcase with me and bringing it back full. (The fact that I've lost a lot of weight makes shopping for clothes particularly enticing.) All within our legal limits for customs returning to Canada, of course! Not to worry, random customs official who's reading this blog for who knows what reason. I'm also looking forward to this trip because we haven't done a driving trip together in a while. Going to Thanksgiving in 2005 was Amita June's second long trip (our overnighter to Ottawa for our anniversary in Oct 2005 was her first), and I think she's going to enjoy it again this time. tags:

Painful upgrade I just upgraded my main server, Antipater, from Debian "sarge" to Ubuntu "gutsy". I was getting pretty frustrated by being 3+ versions back from a lot of the important software running on the system. I wanted to get on Ubuntu for my server platform to have more frequent upgrades (about every 6 months). The upgrade went well, mostly. I updated /etc/apt/sources.list to use the Ubuntu archives, then got all the packages. The installation was pretty quick, even for something like 700 packages. However, when I rebooted to use the new 2.6.22 kernel (up from 2.6.8 or so), the server's responsiveness went way down. My guess is that somewhere in the 2.6.x series, one of the new schedulers is causing my particular configuration some grief. I've trimmed my cron jobs and background processes down to a minimum, but the server is still running a little too loaded. The great folks at iWeb have been really helpful, but they don't support Ubuntu, so I've got to brainstorm for myself. I'm going to have to go in over the next few days to reboot the server and experiment with other kernels -- not fun. tags:

One-liners Some other odds and ends:
  • It's getting cold! We had our first snow flurries a few days ago, and it's been regularly under freezing around here. Time to get winter coats out of the closet -- or, better, buy new ones in the US.
  • My friends at Kokoromi are organizing an excellent games+art event called GAMMA 256 on November 28 at the SAT. Should be a lot of fun.
  • One such friend, Heather Kelley is going to be talking at the Montreal Geek Girl Dinner on Tuesday. Good for her!
tags:

17 November 2007

Meike Reichle: Back from the bookshop

I am wondering ... when exactly did cookbooks stop being about cooking and start being about cooks?

Ond&#345;ej &#268;ert&iacute;k: snapshot.debian.net rocks

Today during upgrade I got the gnome packages broken:

$ wajig install nautilus
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.

Since you only requested a single operation it is extremely likely that
the package is simply not installable and a bug report against
that package should be filed.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
nautilus: Depends: libexempi2 but it is not installable
E: Broken packages
$

I tried to download the source package of libexempi2, no luck (doesn't exist). Then I remembered I've heard about snapshot.debian.net, so I tried that and added:

deb http://snapshot.debian.net/archive pool exempi

to my /etc/apt/sources.list and voil - it works!

$ wajig install nautilus
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libstdc++5 libpixman-1-0 libglut3 libsqlite0 lib64gfortran2 libqt4-sql
libntfs-3g4 libkdcraw1
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
fam libexempi2 libtrackerclient0 nautilus-cd-burner
Suggested packages:
tracker
The following NEW packages will be installed:
fam libexempi2 libtrackerclient0 nautilus nautilus-cd-burner
0 upgraded, 5 newly installed, 0 to remove and 46 not upgraded.
Need to get 1583kB of archives.
After unpacking 5632kB of additional disk space will be used.
Do you want to continue [Y/n]?
WARNING: The following packages cannot be authenticated!
libexempi2
Install these packages without verification [y/N]? y
Get:1 http://ftp.cz.debian.org sid/main fam 2.7.0-13 [69.0kB]
Get:2 http://ftp.cz.debian.org sid/main libtrackerclient0 0.6.3-3 [41.3kB]
Get:3 http://ftp.cz.debian.org sid/main nautilus 2.20.0-1 [639kB]
Get:4 http://snapshot.debian.net pool/exempi libexempi2 1.99.4-1 [290kB]
Get:5 http://ftp.cz.debian.org sid/main nautilus-cd-burner 2.20.0-1 [544kB]
Fetched 1583kB in 7s (199kB/s)
Selecting previously deselected package fam.
(Reading database ... 210515 files and directories currently installed.)
Unpacking fam (from .../archives/fam_2.7.0-13_i386.deb) ...
Selecting previously deselected package libexempi2.
Unpacking libexempi2 (from .../libexempi2_1.99.4-1_i386.deb) ...
Selecting previously deselected package libtrackerclient0.
Unpacking libtrackerclient0 (from .../libtrackerclient0_0.6.3-3_i386.deb) ...
Selecting previously deselected package nautilus.
Unpacking nautilus (from .../nautilus_2.20.0-1_i386.deb) ...
dpkg: warning - unable to delete old directory /usr/share/mime/application': Directory not empty
Selecting previously deselected package nautilus-cd-burner.
Unpacking nautilus-cd-burner (from .../nautilus-cd-burner_2.20.0-1_i386.deb) ...
Setting up fam (2.7.0-13) ...
Starting file alteration monitor: FAM.
Setting up libexempi2 (1.99.4-1) ...
Setting up libtrackerclient0 (0.6.3-3) ...
Setting up nautilus (2.20.0-1) ...
Setting up nautilus-cd-burner (2.20.0-1) ...

16 November 2007

Dann Frazier: On IRC proxies

Adeodato mentioned using ctrlproxy, so I thought I'd ramble a bit about my experience w/ IRC proxies in general. dircproxy was the first IRC proxy software I tried. It did the job, but the thing that annoyed me the most was that only one client could connect at a time. I'd get home and realize I was still connected at work, and then have to login and send a kill signal to xchat. When I found out about ctrlproxy, and that it supports multiple clients, I was very excited. It did the job, but occasionally it would hang and need to manually killed/restarted, and it had this weird problem of writing logs for one channel to the log file of another. Most recently (and for probably a year now) I've been using bip. I immediately hit an issue with one server - bip would constantly reconnect/disconnect. Upstream immediately went to work on the problem, determined it was a bug in the server itself, and (iirc) sent the server maintainers a patch. Now that's support! bip has been stable for me for nearly 2 years now. I'd also suggest comparing the bug pages for dircproxy, ctrlproxy, and bip. That's not always a good way to measure relative stability, but it resembles my experience in this instance.

Tore S. Bekkedal: ARE YOU AWESOME ENOUGH TO CODE FORTH!?

…BECAUSE I DON’T THINK YOU ARE! This is probably the funniest image I have ever seen on Wikipedia: CODING FOOOOORTH

Ond&#345;ej &#268;ert&iacute;k: SAGE Days 6

From November 9 till November 15 I attended SAGE Days 6 in Bristol, UK. It was a conference and a coding sprint for the SAGE project, which wants to build something comparable to Mathematica, Maple, Matlab and Magma built only from open source components without reinventing the wheel. Sage also provides excellent novel implementations for many mathematical algorithms (not found in Mathematica/Maple etc.).

I was invited to give a talk about SymPy, which is a Python library for symbolic mathematics, that we are doing.

Here are my notes from each day:

Saturday: one, two
Sunday: one, two
Monday, Tuesday, Wednesday: one

Impressions

Very positive. I started SymPy two years ago, because I wanted to play with symbolic mathematics in Python, see for example my presentation I gave at this conference for details. SAGE at that time was just able to do some mathematics things, but it was very weak in calculus, which is the SymPy's main domain. This has changed last half a year, when SAGE people managed to wrap Maxima in Python (which I thought to be completely impossible), so I started to follow SAGE development more closely. After the SD6, I must say I became very excited about the project.

One problem with mailinglists, IRC and other online interaction is that it's very difficult for me to get an impression about the people and the project. Being able to meet the developers and discuss with them face to face gives me the impression very quickly and very accurately.

By far the biggest guarantee, why it is worthy for me to contribute to SAGE, is the project leader, William Stein. He is very rational and pragmatic (I like these two properties) and after many discussions with him, I came to realize that he has basically identical views on the important things as I do and were I on his place, I would do the same decisions as he did and does. That's very nice, because I can concentrate my energy on things that I like to improve and don't have to worry about other things, because I know he will do it right.

The other SAGE developers are experts and with similar attitude as William has. It's enthusiastic to be among people who make things happen. For example one of the authors of Cython, Robert, implemented during SD6 a very nice HTML output, that shows Cython code, with colors according to how many Python API calls are called on that particular line, and by clicking that line it shows the corresponding C code.

SAGE project has a high aim and it stricly goes for it, without looking too much to the right or left, and that's how it should be. And it does produce a lot of very useful and high quality stuff along the way, for example Cython (probably the best wrapper for C/C++ things now, only pypy could possibly beat it, but that's still more a research project) or the SAGE notebook, which looks like a Mathematica notebook, but better and in a browser (together with a revision history, sharing, SSL encryption, etc.).

The only little problem is that currently SAGE developers are all mathematicians and as is well-known, mathematicians looks at mathematic from a very different prospective than physicists. :) And so I need calculus, advanced calculus and only when this is working, and working well, I can build on it some more advanced features. SAGE currently goes a little the other way - it has a lot of advanced features, from number theory, modular forms, elliptic curves, etc., but the basic calculus still needs a lot of improvements. SAGE wraps Maxima, because Maxima is quite fast, very well tested, so it works well. It's difficult to extend and written in LISP and that's very bad. That's where SymPy could help - it's in Python, very easy to extend, but currently slower than Maxima (rewriting parts of SymPy using Cython, or even C directly, will make it faster, hopefully as fast as Maxima or faster).

It's not yet in Debian, but SAGE people are working on it. It's not an easy task unfortunately.

Conclusion

SAGE is a very promising young project and I think it will succeed to provide an open source alternative to Maple, Matlab, Mathematica and Magma.

15 November 2007

Adeodato Sim : A copy-cat strike?

So, uhm, somebody around here must have felt inspired by the French, because this very morning I noticed in the bus a note announcing a strike starting tomorrow. It will last a week. The disagreement seems to come from a difference in salaries between the workers of the company that connects Alicante with nearby towns, La Alcoyana, and the company that runs buses within the city, Masatusa. Accoring to this article (in Spanish), in La Alcoyana they earn up to a 40% less. This seems to happen because Alicante’s Town Council is responsible for transports within town, but it’s the Regional Government that regulates how La Alcoyana should operate. They say they will keep a 60% of the buses, which sounds like a lot to me (how much is it in France, Christian?). We’ll see how it goes.

MJ Ray: What are you doing with pingback splogs?

Is anyone else getting pingbacks from sites consisting entirely of formulaic posts like
"/foo/ /posted-phrase/ today on /title/ - here's a /summary-phrase/ : /quote/"
? I've been rejecting that style of comments because I think sooner or later those sites will be identified as sploggers (spam bloggers) and get penalised in site ranking systems. Another alternative is that once they build enough links, they'll start linking to their paymasters or replace the site with less mundane content. It's a tough call - I've only been seeing such sites for about a month and I usually like the idea of turning spammers to our own ends and these do increase a site's comment count and relevant link network - but I'm a bit worried how these will turn out. Have you seen this style of comments? What are you doing with them? (2007-11-15: 1 comment)

Kartik Mistry: Debian Tshirts

* Sometime ago, I thought, we should have T-shirt for Debian Project Day. I asked Pradeepto and he literally dragged me in pool of thoughts and he started things that had very happy end. Thanks to everybody who contribute so far. The design will be simple Debian logo plus ‘debian/rules’ below it (as we are going to lower the cost!). If you feel, if you can contribute in this, you have limited time! I should have blogged this earlier :(

14 November 2007

Eddy Petri&#537;or: Linux: plain weird network behaviour; Windows is OK

Update: problem fixed, thanks for the comments; it was MTU related issues.

Note: This is a long post, but I expect it to bring in some questions for many Linux people; I advise you to read this when you have enough time.


After the last events related to connectivity at home which have been lasting since Thursday evening and the weird fact that it seems that NAT doesn't work at home, but does at work for the same setup, I called the ISP's support and wasted 15 minutes trying to convince them at least to send a technical team with another modem just to test if that is the reason for the breakage.

Of course, talking to the ISP support and trying to convince them that there might be a problem on their side since NAT works with another provider but doesn't with them, was fruitless.

Tonight I was stuck and tried another approach, convinced I would confirm my suspicion that there is something wrong on ISP's side. Still I am not yet sure what to conclude from what happened.


So, to get a better view of what is going on, I'll describe the setup I have and what are its limitations and characteristics. People in a hurry can skip to the paragraph starting with "I tested" and stare in wonder at will.


So the connection I have is done through a DSL modem which gets the MAC of the network card connected to it and exposes that as its own to the ISP's network. This MAC seems to be quite persistent and special measures must be taken in order to be able to use another NIC to connect. The modem (or probably some machine in ISP's; the IP is 10.10.0.1) offers a DHCP address and everything should work fine.

Because of this "your MAC is my MAC" issue, when I connected the first time, I used an USB NIC since a broken router or some temporary failure would have allowed me to use the Internet connection directly from my laptop. I can say this decision has proven in time to be wise.

The router I used until now is a NSLU2 with Debian installed on it. The built in network interface always faced the internal network.

The router (which I call ritter) served as a NAT router for two machines inside the network, my laptop and my apartment mate's laptop. All until last Thursday, after which it never got back properly.



I tested (doing NAT on my laptop; the laptop shouldn't have been affected by the power problems):

Of course, I have n-checked that /proc/sys/net/ipv4/ip_forward was set to 1, the tables had policy ACCEPT and there were no extra rules, except the basic NAT-ting stuff, the routes were correctly set on both the clients and the machine doing the NAT.


All I could see is that:
  1. the machine doing the NAT was always working fine
  2. at work all NAT clients worked fine
  3. at home any of the NAT "clients" were
    1. able to resolve addresses while the DNS server was in ISP territory and another LAN
    2. ping the outside world (if ping was available - in D-I is not)
    3. hanging when trying to get a http page
    4. telnet-ting directly to the port 80 was ok (but I didn't try to "GET / HTTP/1.0")

So after all of this, I was thinking of trying to see if a new client (the laptop of my apartment mate, a Windows XP machine) would work using the connection at home. It didn't work.

Then I thought of trying to do "Internet Connection Sharing" as is called in Windows. Of course, there was some pain to find Windows XP drivers for the ASIX AX88172 network card (remember, the modem needed to see the MAC of that NIC), but I managed to find the proper one.


And, almost sure the NAT wouldn't work for this case either, I configured the new connection as a shared one. I didn't even disabled the firewall, as I was thinking I could take those down gradually.

I wasn't expecting this, not even by pure chance, but my laptop which was a NAT "client" now was able to browse, ping and do whatever was normal through NAT, while the Windows machine was doing the "Connection sharing".

I was utterly flabbergasted. And that was just the beginning.


I was expecting that the problem coincidentally went away, but after a minute I was proven otherwise. It still didn't work with Linux as the NAT-ting machine. I connected back the USB NIC to the Windows machine and I saw the same thing. NAT was just working.


At that point I was to observe an even more shocking fact: the IP that the Windows machine got was different from the one the Linux machine received, in spite of the fact that the network card was the same, so it would have made sense to get the same one. More than that, the IP that the Windows machine got was from an entirely different network, although it was a valid IP belonging to my ISP.

I was thinking that one reason why it works with Windows might be that there could be some TCP protocol twist that is differently implemented in Windows and the equipment from my ISP gets along better with the Windows network stack.


As a way to test that, I am thinking of forcing somehow the IP on the Linux machine to see if anything changes. But before doing that, I felt the urge to post these, maybe some kind soul will shed some light on this issue for me or drop a hint.

Another reason might be different DHCP servers answering, but I don't know how I can see in Windows who offered the lease.


If anyone has any clue why these weird things happen, please drop a line. I would greatly appreciate it. TIA.

Next.

Previous.