Search Results: "rul"

30 January 2010

Wouter Verhelst: On MySQL and Oracle

I think Monty has well and truly lost it. The European Commision, after careful consideration, has cleared Oracle's purchase of Sun:
The Commission's investigation showed that another open source database, PostgreSQL, is considered by many database users to be a credible alternative to MySQL and could be expected to replace to some extent the competitive force currently exerted by MySQL on the database market.
I'd go one step further, and would say that MySQL is not a credible alternative to PostgreSQL. But whatever. Hopefully, if MySQL fails, then PostgreSQL will (finally) get the attention that it deserves. I'll have a real database every time over this piece of... anyway.[1] This is a fair argument, and to be sure it is certainly not a problem for anyone to migrate from MySQL to a MySQL fork, or (with some work) from MySQL to PostgreSQL. But Monty seems to disagree, and now tries to get Russia and China to block the merger. What's next, Andorra? [1] comments on this blog item in defense of MySQL will be vigorously moderated away. MySQL is a POS that falls over if data is corrupt, that corrupts its own data (most distributions call 'mysql_recover' in their initscript for a reason), and whose C API does not properly support cursors unless you want to block concurrent access until the cursor is closed (paragraph 3). Every time a customer asks me about MySQL, I vigorously recommend against it, because it's a bad idea.

29 January 2010

MJ Ray: World Economic Forum 2010

It still doesn t seem to be getting the coverage, but this is the sixth year that I ve written about the World Economic Forum, which is basically where large corporations try to tell governments how to rule their populations, as described in this VIRUS article. This year, it is overshadowed in the UK by war-starting former Prime Minister Blair giving evidence to the Iraq enquiry. If you have satellite television, you can watch it live on SFinfo at 13e (schedule). There s more detailed listings on Klack. In previous years, English audio has been on one side of the stereo channels. It looks like almost none of the SFinfo coverage is live this year. Maybe they ve noticed comments like mine from 2005:
I am convinced that if more people watched it for themselves, there wouldn t be any need to publicise against them. Without the soundbiting and polishing of TV news, these people are scary. They re less slick than the European Social Forum, too.
If you find live coverage on any other stations, please could you leave me a comment here?
In that vein, BBC News has Ten things you didn t know about Davos (thanks Policomm). Amongst other things, this isn t the 40th WEF and Bill Clinton was the first sitting US president to attend, so its influence is a fairly recent mistake. Once again, there an official programme, as well as @davos which seems to be talking much more than listening seems appropriate for WEF, no? To close with a quote that s also in the VIRUS article:
But I don t want to go among mad people, Alice remarked.
Oh, you can t help that, said the Cat: we re all mad here. I m mad. You re mad.
How do you know I m mad? said Alice.
You must be, said the Cat, or you wouldn t have come here.
-Lewis Carroll, Alice s Adventures in Wonderland (Puffin Books, 1946)

Joey Hess: xmonad layouts for netbooks

How a window manager with tiling layouts makes a 1024x600 resolution livable. I spend a lot of time in front of a screen, and for the past year I have used only my netbook. No desktops, no laptops. Just a cheap $200 computer that is nearly a kid's toy. The most challenging thing about this is dealing with the 1024x600 screen resolution. When I moved to this screen from something with many more pixels, it at first seemed very cramped. After a year, I think that the most important part of coping with the small screen is the flexability and customizability of layouts provided by the Xmonad window manager. In this post I will explain a few layouts I have developed for fitting specific tasks onto the netbook screen. (I assume that you know maybe 0.1% of Haskell (about what I do), and can read Haskell code without having a brain aneurysm.) web browsing
It's important that the web browser have as few toolbars and other cruft as possible, as horizontal space is especially at a premium. I've configured both Epiphany and Firefox to put everything in one tool bar. But now I use Chromium, which comes pre-configured that way.
What the netbook is designed for. You just want a web browser, taking up the full screen, and with its own tabs. So far, so easy: that's Xmonad's Full layout. But, you sometimes want to see two websites side-by-side. This layout accomplishes that, allowing the sizes to be adjusted as needed. It also uses Xmonad's Magnifier to zoom the smaller window when it's focused, which is useful if you briefly need to see more of a web site.
mySplit = magnifiercz' 1.4 $ Tall nmaster delta ratio
    where
        -- The default number of windows in the master pane
        nmaster = 1
        -- Percent of screen to increment by when resizing panes
        delta   = 3/100
        -- Default proportion of screen occupied by master pane
        ratio   = 60/100
screenshot screenshot web development If you're doing web development, you'll want probably one big web browser window, but also with a nice wide terminal on the same screen, in order to see web server logs. A simple way to do this is to mirror Xmonad's Tall layout by 90 degrees.
myWide = Mirror $ Tall nmaster delta ratio
    where
        -- The default number of windows in the master pane
        nmaster = 1
        -- Percent of screen to increment by when resizing panes
        delta   = 3/100
        -- Default proportion of screen occupied by master pane
        ratio   = 80/100
The myWide layout uses the full screen width for a single terminal, and splits the width when there are more. This is sufficient for viewing logs and doing minor things at the shell prompt, in between testing the result in the web browser. Of course a terminal can be temporarily moved to the master area by pressing mod-return, if you need it to be larger. screenshot screenshot chat
Tips on configuring Pidgin for a netbook: Set it up to use vertical tabs to save horizontal space. Configure the input area to only 1 line tall, and turn off as much other cruft as you can. The menu bars, sadly, cannot be disabled, nor can the excessively large borders. In my screenshots, you can see that stuff wasting space that could be used to show four more lines of text.
For chat, you want to put the buddy list on the side of the screen, and use the rest for conversation windows. Xmonad's IM module takes care of allocating a sidebar on the screen for the buddy window. The rest of the screen can be occupied by any layout you choose. I like to have the conversation windows be as wide as possible, and typically only want to see two conversations at a time. But sometimes I might have a dozen visible. A good layout to cope with those needs is Grid.
myChat' l = withIM size roster l
    where
        -- Ratio of screen roster will occupy
        size = 1%5
        -- Match roster window
        roster = Title "Buddy List"
myChat = myChat' Grid
The withIM layout puts the buddy list on the left; I prefer it on the right for some reason, so I tweaked my layout to do that. All it took was using the reflectHoriz layout modifier to get a mirror image of the layout. Then I reflect the inner layout back to its normal orientation. Being able to throw in a few function calls and mutate a layout like that is where Xmonad shines.
myChat' l = reflectHoriz $ withIM size roster $
            reflectHoriz $ l
screenshot screenshot logs
Ever notice that tail -f wastes the last line of the terminal? On a netbook this matters. shorttail lets the last line be used.
I have a dedidated workspace that I use to tail logs, and as a place to send long-running tasks (such as compiles). The layout for this needs to keep windows wide, to see whole logged lines, but they need only be five or so lines tall. And it's convenient to have one bigger window with the small ones below. Xmonad has a perfect layout for this, called Dishes, because it's sorta like a stack of plates.
myDish = limitWindows 5 $ Dishes nmaster ratio
    where
        -- The default number of windows in the master pane
        nmaster = 1
        -- Default proportion of screen occupied by other panes
        ratio = 1/5
screenshot screenshot
In the second screenshot above, I have 6 windows open, but only 5 are visible. The limitWindows 5 accomplishes this. It's handy mostly because gnome-terminal has a bad habit of crashing when resized to 0x0. (That's gotta be a bug in something!)
Notice that the screenshots above also have Procmeter in a sidebar on the right. I (ab)used the withIM layout to do that:
myLogs' l = reflectHoriz $ withIM procmeterSize procmeter $
              reflectHoriz $ l
    where
        -- Ratio of screen procmeter will occupy
        procmeterSize = 1%7
        -- Match procmeter
        procmeter = ClassName "ProcMeter3"
myLogs = myLogs' myDish
coding Everything above was easy. Doing coding (or writing) on a small screen is where it gets hard. When I'm coding I want to have one window that is exactly 80 columns wide, and as tall as possible, where I do the main development. Then I need a minimum of two other windows also visible: one action window for running tests and the like, and one to view references (emails, man pages, other files, etc). I may need to view any of these windows fullscreen at any time, of course.
As an example of the three window rule: While I'm writing this post, I have a reference window open with my .xmonad/xmonad.hs, and an action window open where I am managing screenshots.
Often, deep into something, I will accumulate many other reference and action windows. But three seems to be the magic, minimum number for me; use of screen or anything else doesn't reduce it; if I can't see all three at once, I will waste time and concentration flipping back and forth. The Xmonad layout I've developed to handle this is based on the handy FixedColumn layout, which automatically keeps the master window 80 columns wide. I modify this by adding the Magnifier, so that my action and reference windows "pop out" over the master window when focused.
myCode = limitWindows 3 $ magnifiercz' 1.4 $ FixedColumn 1 20 80 10
The 1.4 was carefully tuned, to magnify a window to be big enough to be usable for editing, reading, or command-line, while not obscuring too much of the other two windows. And again I use limitWindows, to only show three windows, in order to keep them all as big as possible. Other windows are hidden offscreen, but I can rotate to them with alt-tab as needed. screenshot screenshot reading ebooks When I'm reading an ebook, I want to have the reader in the middle of the screen. But a widescreen netbook like mine is too wide to comfortably read text all the way across, so it's nice to have margins. (In the margins, I put terminals, or notes.) The ThreeColumns module has a layout that does just that.
myBook = ThreeColMid nmaster delta ratio
    where
        nmaster = 1
        -- Percent of screen to increment by when resizing panes
        delta   = 3/100
        -- Default proportion of screen occupied by master pane
        ratio   = 2/3
screenshot putting it all together I join all my layouts together, so Xmonad will allow switching between them. These three combinations all have the same layouts, only ordered differently, so that different workspaces can have different default layouts.
codeFirst  = myCode    myWide    myGrid    myDish
dishFirst  = myDish    myCode    myWide    myGrid
gridFirst  = myGrid    myDish    myCode    myWide
Xmonad layouts can be decorated with things like title bars. To save horizontal space, I leave off the title bars on layouts where they are not needed to disambiguate windows. Two helper functions can be applied to add or remove titles (and also cause the layout to avoid the Gnome panel.)
withTitles l = noFrillsDeco shrinkText myTheme (desktopLayoutModifiers l)
noTitles l = desktopLayoutModifiers l
I have semi-dedicated workspaces; one for each of the above activities. To assign a layout to a workspace, I use the PerWorkspace module.
Notice that the "web" workspace has only two available layouts. Meanwhile, the "book" workspace always uses the specialized myBook layout; I don't use that layout elsewhere.
perWS = onWorkspace "logs" (withTitles $ myLogs' dishFirst) $
        onWorkspace "web"  (noTitles   $ (mySplit   myWide)) $
        onWorkspace "chat" (noTitles   $ myChat' gridFirst) $
        onWorkspace "book" (noTitles   $ myBook) $
                           (withTitles $ codeFirst)
Finally, I allow toggling between the currently selected layout and fullscreen mode, and use smartBorders to avoid displaying borders when there is only one window onscreen.
myLayout = smartBorders $ toggleLayouts Full perWS
Xmonad layout optimised for the small screen of a netbook: Done! (For now...)
screenshots screenshots screenshots screenshots screenshots
PS: Thanks to #xmonad regulars for always having the answer I need up their sleeves.

28 January 2010

John Goerzen: Greek Mythology and the Old Testament

I have lately been reading Homer s epic poems: first The Iliad, and now I am nearly done with The Odyssey. I figure there isn t anyone alive today that believes that Zeus literally caused thunder in answer to a prayer, or that Athene really transformed Ulysses between having a youthful and an aged physical appearance at a whim. Despite our understanding that these poems don t reflect a literal truth, we still find meaning and truth in them. It is for this reason that they are read by high school and college students all over the world. This same reason drives our reading of more modern plays and novels everything from King Lear to Catcher in the Rye. We learn something of the author s world, something about our world, and if we are truly lucky, a deeper understanding of the universal truths of human life. And it is with that preface that I suggest that the Old Testament or parts of it, at least ought to be read in the same manner. Modern Christianity speaks of a loving, caring God, one who is deeply concerned for the wellbeing of all. Under this understanding, forgiveness is more desired than retribution, and helping the week is better than enslaving them. How then can one square that with a literal reading of the Old Testament? This was a key question I asked over a span of perhaps 15 years. I was perplexed that the God of Love ought to turn someone into a pillar of salt for turning her head the right way, that almost all life on earth might be extinguished by a flood, that slavery is condoned and regulated, and all sorts of people being stoned to death, animals killed for no reason. In short, the God of the Torah, at least, didn t seem to me to be even the same person as the God the Church talks about. I raised this question with many people, and there was even a seminar on it at a convention I went to in 2001. The answers I got usually were of one of two types: 1) God is beyond our comprehension, and this is one of the mysteries we will never understand because that s just the way it is; or 2) the arrival of Jesus changed things, and it s impossible for a modern person to fully appreciate the laws as they existed prior to that. These are really two sides of the same stick: they re both saying, Yep, that s odd. But we have to believe that the Bible is inerrant and literally true, so we just have to accept the mystery and move on. Except I m not so good at accepting mysteries and moving on. It strikes me as odd that nobody even mentioned the third option: that some of the stuff in the Old Testament is, to be blunt, made up. This even though I have come to learn later that some of those people probably believed this to be the most correct explanation. Now, that doesn t mean it has no value or that is doesn t show us truth. Romeo & Juliet was made up, but we learn from it. A typical example of this is the creation myth. There are some that are very defensive about it, perhaps thinking that it weakens their religion to admit it might not be literally true. To me, I find that insisting upon its literal truth weakens the religion; can we not see how a piece of literature speaks to us today and leave it at that? Need we say that Shakespeare s Julius Caesar is an inferior play because it is a work of historical fiction? The position I suggest here is not some crazy nutjob position. Wikipedia has a concise overview of some of the scholarship surrounding these ideas. I now count myself as somewhat inspired by Homer to read the Old Testament in the same way that I read Homer: as a story that can speak to us today, one that inspired a nation in captivity and after, and launched perhaps the most amazing religious movement in history. I only wish that more people would admit the possibility of a non-literal reading of the Bible. This return to an earlier era of Christianity is, in my mind, the only way that Christianity can maintain its relevance in this age. Update: A note I received suggests I ought to make a bit of a clarification. I am not bothered by the fact that people have differing opinions about the historicity of Genesis. I m all for putting all the opinions out there for sure. I think that really the concern over whether Genesis is literally true or not is mostly irrelevant. I have no problem with Christians that find Genesis to be literally true. What I m lamenting is the attitude that you re not Christian if you re not sure that Genesis is literally true or saying anything else about Genesis undermines Christianity. I believe neither of those statements, and would really rather that we collectively got past the creationism vs. evolution debate already. Update 2: It appears that my use of a bit of technical language has caused some confusion. A creation myth can be defined as a supernatural story or explanation that describes the beginnings of humanity, earth, life, and the universe (cosmogony), often as a deliberate act by one or more deities. It is a category of explanations. Simply calling the Genesis story a creation myth is an act of categorization only, and doesn t imply anything about its accuracy or value.

27 January 2010

Craig Small: Manilla, Git and Gjay

Work doesn't often send to me places as great as Manilla in the Philippines, but here I am. It's a reasonably modern place and to me feels more like America than Asia in so many ways, posssibly because of its history. One thing is for sure, noone follows road rules here. Red lights are a suggestion and a zebra crossing is just some painted lines that you do need to stop at.

As for food, it's not that different, in fact this sad lot is about what was different:
Generally though the food has been pretty good but nothing I could get at home.

Good news about Gjay, the previous maintainer said it was ok for SourceForge to hand over the control of the program to me so I've set it up in git and started working on it. Most of the work was getting the code up-to-date to the later gtk APIs and making it work with audacious instead of xmms. It's almost ready for (re)initial release and there is even an ITP ready to go.

Git is a rather interesting and new (for me at least) version control system. I've been using cvs for more years than I'd care to think about and svn but while it is a bit different as you'd expect I haven't had it get in my way. In fact I've been so impressed with Git I have put a few other projects into it, mainly with the collab maintence Debian project for a few of my packages.

<script defer="defer" src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script>

25 January 2010

MJ Ray: Critical Eye: Google, China, DNS and an Event

My Google Bugs page started off as a blog post back in 2006, but I ve moved it to a more permanent home and started to bring it up to date. Recent additions include the China Controversy updated, a recent search bug added andDNS service added. In just over a month, BathLitFest will be holding a debate on Is Google Good For You? Sunday 28 Feb, 1pm 2pm. The key questions are:
In the data-sharing and database age, how much information are we prepared to give away about ourselves and who, ultimately, controls that information? Is the price of convenient, high-speed communication an almost total loss of privacy? And is it right that one company knows more about us than our government, or even than we know ourselves?
Tickets are on sale, priced 7. That s pretty much what I was pointing out back in 2006. I don t hate Google or anything, but we should be realistic: it is a for-profit company, so probably won t be doing anything truly for free. There s always a payback and we should recognise it as part of making an informed choice about whether to trade with them. It s nice to see these questions getting a more mainstream airing. If you ve got any updates for the Google Bugs page, please let me have them.

22 January 2010

Steve Kemp: We have to be ready to do anything. Do you hear me?

Good people steal ideas, right? On that basis I setup a static domain to host the javascript and icons I use upon a few different sites & projects. This was preempted by the release of a new version of the excellent jQuery library. I also managed to put together a tremendous hack to solve a pretty annoying problem running multiple distributions from a single external kernel under KVM. Ubuntu users, in particular, will be well aware of dmesg SPAM coming from the use of CONFIG_SYSFS_DEPRECATED. In short the way that the kernel presents information beneath the /sys tree has changed over the life of the kernel - and this has a knock-on effect to the userspace supplied by different distributions and releases of GNU/Linux.
Some distributions need an "old" kernel and an "old" udev with "old" udev rules in order to create the appropriate device nodes such that the kernel will boot & mount its filesystems. (i.e. These need CONFIG_SYSFS_DEPRECATED to be set.) Conversely some distributions mandate a "new" minimum kernel version, and supply a "new" version of udev with "new" udev rules and they absolutely will not function when presented with an "old" kernel. (i.e. They must have kernels without CONFIG_SYSFS_DEPRECATED set.)
I've solved this problem via a kernel patch which is both evil and genius. The details are a little me-specific, but in short: Ultimately udev doesn't get an empty /dev tree to play with, instead it finds one already pre-populated, such that any devices it cannot create are there regardless - because the devtmpfs implementation has already created them. Genius. And evil. So very evil. Meh. Steal that idea. I dare you .. (I'm impressed at how well devtmpfs works, and how easy I was able to make my "patch of evil"tm. Just a few lines in fs/namespace.c.) ObSubject: The Last House On The Left

Russell Coker: Three Monopolists

  1. This afternoon I tried to unlock my old Three mobile phones for the purpose of getting cheap net access as described in my previous post [1]. I wanted to use Dodo 3G Internet (via the Optus network) for my parents which would cost them $139 per year and I wanted to use my old Three phone tethered to their PC as the 3G modem (cheaper than buying a new 3G modem). I took in 3 Three phones to the Three store to get unlocked, I actually have 4 old Three phones (my wife and I are each on our third Three phone) but I seem to have misplaced one. It turned out that the two newer phones (LG U890) can t be unlocked as they are permanently locked to the Three network. The older LG U8110 can be unlocked, doing this took 30 minutes of the Three employee speaking to other Three employees on the phone and I will now have to wait 4 days to receive an SMS with the unlock code. So the Three anti-competitive behavior of making it unreasonably difficult to get a phone unlocked and of selling phones that (supposedly) can never be unlocked wasted them 30 minutes of store employee time when other potential customers were queuing up as well as 30 minutes of employee time in their call center. If the call-center employee was based in Australia then as the minimum wage is $14.31 per hour [2] that would have cost them at least $14.31 for 2*30min of work, as a rule of thumb it s generally regarded that the costs of employing people are twice the salary (including costs of maintaining office/shop space, paying managers, doing paperwork, etc). So it probably cost Three about $29 to unlock one of my phones and tell me that the others can t be unlocked, when I find phone 4 it will cost them another $29. As $29 is my typical monthly bill this has got to make an impact on the profitability of Three. If they were smart they would have sent me an SMS when I got a new phone telling me whether the old phone can be unlocked and if so giving me the code to do so. For phones that can be unlocked I doubt that would make anyone unlock their phone who wouldn t do so anyway, and for phones that can t be unlocked they could encourage the owner to give the phone to someone who wants a phone for pre-paid use (thus locking in a new customer). It probably won t be worth the effort of cracking an LG U890 phone to save my parents $10 per annum. As I couldn t get the LG U8110 to talk to my laptop I guess that forces my parents to eventually use Three for 3G net access. But they could have just matched the Dodo price and got the same result without having me spend half an hour in their store. Update: I just enquired about ending my Three contract for 3G net access ($15 per month for 1G of data) in favor of the yearly prepaid option of $149 per annum for 12G. The prepaid option would save me $31 per annum and allow me to use more than 1G in the busy months. But it seems that I subscribed to a two year contract for that one and I have 6 months to go. Over those 6 months they will make about $15 extra in revenue from me while annoying me in the process, this probably isn t a good deal. As my 3G modem is locked to the Three network even if I didn t have a contract I would still be unable to use a different provider.

  2. My mother phoned Optus about her Internet connection and discovered that she had supposedly renewed her Optus cable Internet contract in September last year. Presumably someone from Optus phoned my parents and asked what seemed like a routine do you want to keep using the Internet? question but was really a do you agree to a 2 year contract with a $250 penalty clause for exiting early? . This isn t the first time that Oprus has scammed my parents (previously they charged them rental for a phone that they never supplied), I guess that they have a practice of pulling such stunts on pensioners. I guess I ll have to call the TIO, which will end up costing them more than the $250 penalty clause. The irony here is that as Dodo uses the Optus network I would have used Optus by choice for my parents, but now that they are being scum I will willingly pay the extra $10 per annum to use Three (which while annoying aren t actually hostile).

  3. Finally while Google is admirably living up to their don t be evil motto in regards to China [3] their conduct regarding Google Talk leaves a lot to be desired. Two employees of a company I work for use Google Talk for their instant messaging, this has a Windows client but also allows general access via the Jabber protocol. So these two guys wanted to talk to me via Jabber but Google would just send me email saying X has invited you to sign up for Google Talk so you can talk to each other for free over your computers , I received 5 such messages from a colleague who was particularly persistent. It seems impossible for the Google Talk server to send a chat request to my personal Jabber server (which works well with a variety of other Jabber servers). So I have now started using my Gmail address to talk via the Jabber protocol to other Gmail users. This means that I have a TCP connection to the Google servers open most of the time and Google can boast of having one more active Gmail user. But it doesn t seem to really provide them a benefit. I am going to keep using my main email address as my primary Jabber ID and only use my Gmail address for talking to Google Talk users and only when paid to do so. But as a result of this I recommend that everyone avoid Google Talk as much as possible. Use open Jabber servers such as the ones run by Jabber.org.

It seems to me that none of these companies are really gaining anything from trying to lock customers in. They would be better off spending their efforts on being friendly to people and making them want to be repeat users/customers.

21 January 2010

Daniel Kahn Gillmor: TCP weirdness, IMAP, wireshark, and perdition

This is the story of a weirdly unfriendly/non-compliant IMAP server, and some nice interactions that arose from a debugging session around it. Over the holidays, i got to do some computer/network debugging for friends and family. One old friend (I'll call him Fred) had a series of problems i managed to help work through, but was ultimately basically stumped based on the weird behavior of an IMAP server. Here's the details (names of the innocent and guilty have been changed), just in case it helps other folks in at least diagnosing similar situations. the diagnosis The initial symptom was that Fred's computer was "very slow". Sadly, this was a Windows machine, so my list of tricks for diagnosing sluggishness is limited. I went through a series of questions, uninstalling things, etc, until we figured it would be better to just have him do his usual work while i watched, kibitzing on what seemed acceptable and what seemed slow. Quite soon, we hit a very specific failure: Fred's Thunderbird installation (version 2, FWIW) was sometimes hanging for a very long period of time during message retrieval. This was not exhaustion of the CPU, disk, RAM, or other local resource. It was pure network delay, and it was a frequent (if unpredictable) frustrating hiccup in his workflow. One thought i had was Thunderbird's per-server max_cached_connections setting, which can sometimes cause a TB instance to hang if a remote server thinks Thunderbird is being too aggressive. After sorting out why Thunderbird was resetting the values after we'd set them to 0 (grr, thanks for the confusing UI, folks!), we set it to 1, but still had the same occasional, lengthy (about 2 minutes) hang when transfering messages between folders (including the trash folder!), or when reading new messages. Sending mail was quite fast, except for occasional (similarly lengthy) hangs writing the copy to the sent folder. So IMAP was the problem (not SMTP), and the 2-minute timeouts smelled like an issue with the networking layer to me. At this point, i busted out wireshark, the trusty packet sniffer, which fortunately works as well on Windows as it does on GNU/Linux. Since Fred was doing his IMAP traffic in the clear, i could actually see when and where in the IMAP session the hang was happening. (BTW, Fred's IMAP traffic is no longer in the clear: after all this happened, i switched him to IMAPS (IMAP wrapped in a TLS session), because although the IMAP server in question actually supports the STARTTLS directive, it fails to advertise it in response to the CAPABILITIES query, so Thunderbird refuses to try it. arrgh.) The basic sequence of Thunderbird's side of an initial IMAP conversation (using plain authentication, anyway) looks something like this:
1 capability
2 login "user" "pass"
3 lsub "" "*"
4 list "" "INBOX"
5 select "INBOX"
6 UID fetch 1:* (FLAGS)
What i found with this server was that if i issued commands 1 through 5, and then left the connection idle for over 5 minutes, then the next command (even if it was just a 6 NOOP or 6 LOGOUT) would cause the IMAP server to issue a TCP reset. No IMAP error message or anything, just a failure at the TCP level. But a nice, fast, responsive failure -- any IMAP client could recover nicely from that by just immediately opening a new connection. I don't mind busy servers killing inactive connections after a reasonable timeout. If it was just this, though, Thunderbird should have continued to be responsive. the deep weirdness But if i issued commands 1 through 6 in rapid succession (the only difference is that extra 6 UID fetch 1:* (FLAGS) command), and then let the connection idle for 5 minutes, then sent the next command: no response of any kind would come from the remote server (not even a TCP ACK or TCP RST). In this circumstance, my client OS's TCP stack would re-send the data repeatedly (staggered at appropriate intervals), until finally the client-side TCP timeout would trigger, and the OS would report the failure to the app, which could turn around and do a simple connection restart to finish up the desired operation. This was the underlying situation causing Fred's Thunderbird client to hang. In both cases above (with or without the 6th command), the magic window for the idle cutoff was a little more than 300 seconds (5 minutes) of idleness. If the client issued a NOOP at 4 minutes, 45 seconds from the last NOOP, it could keep a connection active indefinitely. Furthermore, i could replicate the exact same behavior when i used IMAPS -- the state of the IMAP session itself was somehow modifying the TCP session behavior characteristics, whether it was wrapped in a TLS tunnel or not. One interesting thing about this set of data is that it rules out most common problems in the network connectivity between the two machines. Since none of the hops between the two endpoints know anything about the IMAP state (especially under TLS), and some of the failures are reported properly (e.g. the TCP RST in the 5-command scenario), it's probably safe to say that the various routers, NAT devices, and such were not themselves responsible for the failures. So what's going on on that IMAP server? The service itself does not announce the flavor of IMAP server, though it does respond to a successful login with You are so in, and to a logout with IMAP server logging out, mate. A bit of digging on the 'net suggests that they are running a perdition IMAP proxy. (clearly written by an Aussie, mate!) But why does it not advertise its STARTTLS capability, even though it is capable? And why do some idle connections end up timing out without so much as an RST, when other idle connections give at least a clean break at the TCP level? Is there something about issuing the UID command that causes perdition to hand off the connection to some other service, which in turn doesn't do proper TCP error handling? I don't really know anything about the internals of perdition, so i'm just guessing here. the workaround I ultimately recommended to Fred to reduce the number of cached connections to 1, and to set Thunderbird's interval to check for new mail down to 4 minutes. Hopefully, this will keep his one connection active enough that nothing will timeout, and will keep the interference to his workflow to a minimum. It's an unsatisfactory solution to me, because the behavior of the remote server still seems so non-standard. However, i don't have any sort of control over the remote server, so there's not too much i can do to provide a real fix (other than point the server admins (and perdition developers?) at this writeup). I don't even know the types of backend server that their perdition proxy is balancing between, so i'm pretty lost for better diagnostics even, let alone a real resolution. some notes I couldn't have figured out the exact details listed above just using Thunderbird on Windows. Fortunately, i had a machine with a decent OS available, and was able to cobble together a fake IMAP client from a couple files (imapstart contained the lines above, and imapfinish contained 8 LOGOUT), bash, and socat. Here's the bash snippet i used as a fake IMAP client:
spoolout()   while read foo; do sleep 1 && printf "%s\r\n" "$foo" ; done  
( sleep 2 && spoolout < imapstart && sleep 4 && spoolout < imapfinish && sleep 500 )   socat STDIO TCP4:imap.fubar.example.net:143
To do the test under IMAPS, i just replaced TCP4:imap.fubar.example.net:143 with OPENSSL:imap.fubar.example.net:993. And of course, i had wireshark handy on the GNU/Linux machine as well, so i could analyze the generated packets over there. One thing to note about user empowerment: Fred isn't a tech geek, but he can be curious about the technology he relies on if the situation is right. He was with me through the whole process, didn't get antsy, and never tried to get me to "just fix it" while he did something else. I like that, and wish i got to have that kind of interaction more (though i certainly don't begrudge people the time if they do need to get other things done). I was nervous about breaking out wireshark and scaring him off with it, but it turned out it actually was a good conversation starter about what was actually happening on the network, and how IP and TCP traffic worked. Giving a crash course like that in a quarter of an hour, i can't expect him to retain any concrete specifics, of course. But i think the process was useful in de-mystifying how computers talk to each other somewhat. It's not magic, there are just a lot of finicky pieces that need to fit together a certain way. And Wireshark turned out to be a really nice window into that process, especially when it displays packets during a real-time capture. I usually prefer to do packet captures with tcpdump and analyze them as a non-privileged user afterward for security reasons. But in this case, i felt the positives of user engagement (how often do you get to show someone how their machine actually works?) far outweighed the risks. As an added bonus, it also helped Fred really understand what i meant when i said that it was a bad idea to use IMAP in the clear. He could actually see his username and password in the network traffic! This might be worth keeping in mind as an idea for a demonstration for workshops or hacklabs for folks who are curious about networking -- do a live packet capture of the local network, project it, and just start asking questions about it. Wireshark contains such a wealth of obscure packet dissectors (and today's heterogenous public/open networks are so remarkably chatty and filled with weird stuff) that you're bound to run into things that most (or all!) people in the room don't know about, so it could be a good learning activity for groups of all skill levels. Tags: debugging, imap, perdition, wireshark

18 January 2010

John Goerzen: Netbook / Notebook Update

Two days ago, I posted about looking for a new netbook or notebook, and asked for people s advice. Since then, I ve done some investigation based on these suggestions. Rejected Candidates First, I ve outright rejected several options. The Thinkpad X100e was out, mainly because it doesn t compare favorably to the Acer 1810TZ. The X100e s battery life is worse than the 1810TZ, it is heaver, and has a single-core CPU. Secondly, the EeePC 1201N was ruled out. Again, its battery life was quite a bit worse than the 1801TZ, and also worse than my existing Eee 901. Finally, the EeePC was out because of its extremely slow performance. Remaining Candidates I took information from notebookcheck for models I was interested in, and those suggested in the comments at the earlier post. After reviewing them, I made a comparison chart showing issues that matter most to me. Candidates: Battery Life Let s start with battery life. The X200s presents an interesting picture here. In the 9-cell battery, we can expect over 15 hours of life in idle mode, and 7 hours when surfing the Internet over wifi. This was best in class performance for the idle and surf tests, but when under load it drops to one of the worst ad only 2.57 hours. This could correlate with what Lars Wirzenius commented, saying the X200s battery life is poor: obviously it is doing a lot of power management in software to achieve its runtimes, and if a default Linux installation isn t doing that power management, battery life could be poor. The other standard in terms of battery life was the Acer 1810TZ, with 12 hours runtime in idle usage and almost 6 when surfing the net with wifi: that s an hour longer than my Eee 901. It was also the best performer under full load of anything on my chart. Disappointing results were turned in by the HP 2530p. Even with a 9-cell battery, it couldn t match the 1810TZ s battery life. The Dell E4200, with its 6-cell battery, fared even worse though I should note notebookcheck hasn t tested the E4200, so those figures come from elsewhere. Candidates: Size and Weight Looking at weight, the X200s and E6200 turn in amazing weights at under 3 pounds for a 12 notebook. HP s 2530p is the heaviest in the group at 3.84 pounds with the 6-cell battery (the 9-cell will be heavier but I couldn t find specs on it). The 1810TZ checks in at 3.1 pounds, a bit more than half a pound heavier than my Eee 901. Considering size, the E4200 is the thinnest in the group at just 0.79 inches thick. The 2530p is also thin, but is one of the deepest. The Eee 901 is smallest in terms of length and depth, but it is the thickest of all. Candidates: Performance Here you can really see why I complain about the Eee 901 being slow. On the PCMark 05 test, it had a third of the performance of the 1810TZ. The best performer was the X200s, followed by HP s 2530p. In terms of hard disk speed, the E4200 was fastest due to its SSD (though I suspect these tests are not fully evaluating write performance). The SSD on the EeePC 901 didn t help it; it finished with less than half the speed of the E4200. Conclusions From this chart, it looks like there are only three really interesting models: the X200s with its top-of-the-line performance and display, the HP 2530p, and the 1810TZ with its stellar battery life. The disappointing battery life on the E4200 rules it out for me. The battery life on the HP 2530p is modiocre, but it has a touchpad. For the 1810TZ, my main concerns are size of screen and the fact that the screen is glossy. I am not at all a fan of glossy screens. For the HP 2530p, we ve had an HP 2510p in at work. Its size is virtually identical to the 2530p, and felt a bit bigger than I d like. It was also lighter than the 2530p, but still a bit heaver that I d like to see. But the 12 screen might be worth it. The X200s lacks a touchpad, which is a major annoyance in my book. I have reports of 7-hour battery life on it with the L9400 CPU under Ubuntu. Another person has reported 12 hours on Arch Linux using a power saving guide (which looks helpful in general as well). Considering size and weight, the X200s is lighter than the 1810TZ, though only by a little if using the 9-cell battery. It s very slightly bigger in every dimension than the 1810TZ, but perhaps not enough to influence the decision. What are your thoughts?

12 January 2010

David Moreno: Cherokee Summit 2010

The Cherokee web server project is hosting the Cherokee Summit 2010 in Madrid, Spain on May 7th and 8th. The summit will be focused on high-performance and scalable Web technologies. I truly believe this is a major opportunity for hackers, developers and administrators looking for the new alternatives on the Web to bond and share experiences to benefit each other's projects and enterprises, and keep up to date on this field. If you are interested on attending, proceed to the registration site (it's free of charge but seat-limited) and see you there in May!

8 January 2010

Cyril Brulebois: X.Org tricks for Intel users

With the current move of X.Org to unstable, a few tips might help xserver-xorg-video-intel s users. Current issues involve screen turning to black from time to time, including while typing, or after a few seconds of inactivity, or after a few minutes. Depending on the applied tips, it s sometimes possible to switch back to a console, trigger a suspend to RAM, and then get back to an un-black screen. (The funny think being that using s2ram may break the Intel wireless driver, which can be fixed by then using s2disk ) Restarting the X server is usually insufficient. Logs (be it X.Org s or kernel s) don t show anything. Given those issues showed up with the previous X.Org stack too, with recent kernels, it might just be a bug there. Various stuff that can be tried: With that setup (apparently, the first tip is particularly interesting, the second didn t seem to help much), turning to black seems to only happen when using MPlayer or VLC, while it was previously happening while e.g. reading a few lines of IRC backlog Passing various -vo flags to MPlayer, like -vo x11, doesn t seem to help. Have to try with some 2.6.33-rcX before reporting this bug, just wanted to let others know about current findings

3 January 2010

Stefano Zacchiroli: RC bugs of the week - week 17

RCBW - #17 Given that my "most blogged" Debian activity since last summer has been RCBW, what else could be my first post of 2010 if not a RCBW update? With further ado, here are this week squashes by yours truly: No particular remarks, but a long overdue tip of the week: the turmzimmer BTS interface is a great tool for bug squashing. Still, it has a issue with comments which can slow down some activities, but which you can help getting better! First of all you should know that comments are per-package and not per-bug (which might not be obvious, especially since often packages listed on the page have just one bug per-package). That means that you should generally mention the bug you are referring to when you post comments, unless the comments are really package-specific. Additionally, old comments are persistent, so you might get baffled by old comments that "invalidate" current issues. So, if you notice a comment that predates the actual bug numbers, please remove the comment by editing it and stating "no comment" in the form. Ah, happy new year (in case you care about sharp, calendar-based time partitions).

1 January 2010

Thorsten Glaser: RCBD #1

My first RC Bug-squashing Day (or rather night): I picked all of them mostly randomly from the list Zack gave me, and except dietlibc they are packages I had not even heard of before. The first one begun easily (track down licencing information, pimp debian/copyright, but I ended up fixing compiler and lintian warnings and even wrote a manpage for it while there (but for this one, I didn t bump the Standards-Version). The second one was only the second one to complete because the others took longer; it s basically a change of a d mon to use two instead of one listening socket, to work with a doble stack OS instead of just a dual stack OS by not using v4-mapped IPv6 addresses (I considered if to use select(2) or poll(2), or to just fork and have two d mons running, but that seemed too ressource-consuming to me so I chose the less-complicated poll(2) method, looking at popa3d(8) s source code (inherited from OpenBSD) in the MirBSD tree since I could not find my network programming book. The third one was basically communicating with upstream; the bug can be blosed with no change to the package. The fourth one took me a while; luckily I have qemu 0.11.0 on MirBSD, and aurel32 s mipsel qemu images helped a great deal; however, cowbuilder --create failed for me, so I ended up waiting almost the entire night for a-g d-u to finish; in the end, it was simply a bug in upstream s configure.ac which is only exposed due to a toolchain bug on mips(el). To do: my AM Zack needs to upload the NMUs (after checking, of course); I need to communicate some of the fixes upstream (the gidentd upstream is NXDOMAIN ), produce a very small testcase for the mipsel toolchain bug, maybe fix some more mipsel FTBFSen as I have a working qemu instance now, but maybe I ll do that at the BSP when I can t find IPv6 bugs or so that I feel I can fix (I also want to do an mksh release which has to be prepared first RSN, and there s still the need to formally publish the MirBSD-current bi-arch snapshot and make another ISO out of it for BT and prepare the multi-BSD USB stick for allbsd.de ). Annoyances: a-g d-u could ask me things at the start before working for some four+ hours instead of in the middle, and the same questions several times (PAM restart). The sid kernel doesn t boot today but did yesterday, the lenny kernel produces this:
Starting the hotplug events dispatcher: udevdudevd[320]: udev: missing sysfs features; please update the kernel or disable the kernel's CONFIG_SYSFS_DEPRECATED option; udev may fail to work correctly
(I hate udev.) And, worst of all, these annoying fireworks (some sounded like originating from inside our staircase, I pity the neighbour s cats) when one wants to hack Finally, I *loathe* CDBS. Debhelper v5 rules! Oh, and I also was under the impression that Firstname LASTNAME was a French thing, and to a much lesser extent Asian. (@bubulle)

31 December 2009

Mike Hommey: About names and international affairs

Christian writes about the nightmare of using the proper name for people in an international context. I ll add that even in the same country/culture, you can have a hard time, because of another factor: the generational context. People don t necessarily address other people from their generation the same way as they would address people from different generations. And these rules may also vary when people age. Even people from the same generation can have different ways to address people. All in all, naming someone is complicated everywhere, though it is more complicated in international context. I ll also add that there are at least two persons involved in a conversation, and that while it is nice that the sender tries to make an effort to address a person the proper way, the recipient should also not take it bad when someone from far away uses the wrong name, and don t make a fuss about it. That s called tolerance. To give an example that is not about names, but about such tolerance, President Obama recently made a visit to the Japanese Emperor, and bowed before him. If you are living in the US, you probably heard about that, because the media there made a fuss about the US president bowing. It so appears that by japanese standards, he indeed did bow too deeply. But the japanese didn t care much. He s not japanese, he doesn t have the cultural background, and therefore can be wrong. At least he tried. What actually made news in Japan is the US news making a fuss about it.

30 December 2009

Christian Perrier: About properly using people's names...

I recently tried to improve my way to interact with people by mail, in my free software work. Particularly, my intent is to be "better" in using other people names and specific politeness rules. As many of my readers may guess, being involved in internationalization means interacting with people of different cultures. And, when it comes at names, this is just a nightmare..:-) Most so-called "westerners" (western of what, by the way?) are used to the common tradition we share to use people's "first" name....at first...followed by what is most often the "family" name (the one we usually get from our parents). As a consequence, it is fairly easy for me to guess that, interacting with someone named "Barack Obama", I can use "Dear Barack" if I'm in position to use his first name and "Mr Obama" if I need to show some respect distance whatever. Also, as most "western" names are quite familiar in my ears (international culture, blah blah), I can easily guess what is a first name and what is a family name (though, here, "Barack" is probably not the best example). Gender may become a little bit trickier in several cases, but, thankfully, in English, "Dear" does not change with gender (but the third person does whic sometimes leads to problems). The problem arises when interacting with many other culturally different people such as my friends in Japan, China, India, Africa, etc. Here, dammit, the habits might vary a lot and things get harder. Should I call my friend "Kenshi Muto" as "Dear Kenshi", "Kenshi-san", "Muto-san" or whatever? From my readings, I see that most Japanese people do put their family name at first. So, I should then call him "Dear Muto" if I'm very close to him (oh, maybe it's 'her', by the way, who knows?)...or maybe "Kenshi-sensei" because he (oh...or she) is a respected figure in the Japanese FLOSS community...or whatever. Damn! Thankfully, I know Kenshi for years, we're good friends and I know that he's using the "western" way to write his name. I also know he's a man : after 5 or 6 Debconfs, you know everything about people! But, of course, it becomes harder when it comes at people I never had contacts before.....and I don't want to appear as impolite, or silly so, then we jump into my daily "nightmare". Using Wikipedia for hints about Chinese, Indian (the many ones) or even Icelandic or Indigenous peoples of the Americas helps a lot, still. I can only encourage my various friends in free software to do the same. We probably all deeply appreciate when someone shows some knowledge of our culture or at least tries to do his her best to understand our culture. That is probably also part of the mutual enrichment we get in our free software activities. As a tribute for this, I now write my own name as "Christian PERRIER" in my email headers, so that people have a slightly better clue that "Perrier" is my family name and that someone who wants to be familiar with me should call me "Dear Christian". I can probably ncourage my friends all around the world to do the same. For once, using capitals is not about 'shouting' but more about helping other people to figure things out. Next blog writing about the interesting challenge we all face in free software meetings and conferences: shake hands, kiss, hug or just wave? :-)

29 December 2009

Craig Small: Updated: psmisc, gw6c and gjay

Time away from work and its been either raining or hot. So I've updated and released some software. It always seems to happen there is a lot of Free Software development during the breaks.

psmisc got a bunch of updates, including a new program called prtstat which formats the stat file in the procfs for a pid in (hopefully) a nice way. No sooner had I released the latest update when a bug report came in. It seems fuser -m -k is a little too happy about killing itself. The fix is in the CVS but anoying I missed that.

Next up was the Debian gw6c package. I was asked why it didn't get moved from unstable to testing. The problem is that while Linux has iproute, kfreebsd does not so the lack of a dependency was stopping it transitioning. To make matters worse the freebsd template was missing from their package. After some deb-substvars evilness to fix the dependencies and some dh_install overrides in the debian/rules file it should all be happy when its finished.

Finally, I miss having good random playlists. I'm too lazy to make them myself so I use some random thing which often gives me rubbish. A program called Gjay used to be in the Debian archive but got removed, mainly because the upstream stopped supporting it. I can write C (the programming language its written in) and I wanted to use it, so I fixed it. My version is 64-bit clean, so it works on my amd64 and it works with audacious not the old xmms which is great. More importantly, it compiles, it runs and it even works properly.
I'm just wondering if I want to release it out to the wider world or not.

26 December 2009

Stefano Zacchiroli: RC bugs of the week - week 16

RCBW - week #16 ... and here are christmas (for those who care) RC squashes, by yours truly (for those who care too): and here are the usual notes: Hint/request of the week: please add +pending when you do DELAYED/ NMUs, that way filtering out already taken care of bugs gets easier and refreshing a bug log page in the browser will immediately show the new tag at the top.
(Yes, I agree that nmudiff should offer that when passed --delay, I intend to propose a patch for that, but feel free to beat me at it :-P) In other news, christmas vacations are awesome to catch up with books you planned to finish reading months ago ... Update: the patch for nmudiff I've mentioned has been kindly provided by gregor hermann, thanks!

25 December 2009

Joachim Breitner: Building arbtt for Windows

A friend of mine is interested in trying out the Automatic Rule Based Time-Tracker arbtt which I programmed. Unfortunately, he is using Windows and up to now, arbtt only worked on Linux. But as I wanted to check out Haskell s cross-platform abilities for a while, this was a good opportunity to do so. I don t have Windows installed myself (and did not plan to do so), so I did all this under WINE, the Windows compatibility layer, which works very well: It takes only a few minutes to install the Haskell Platform for Windows and then I was able to run wine ghc --make and cabal install. I played around with some simple programs and was surprised by these timings:
$ rm *.o *.hi; ghc --make fourfours.hs ; time ./fourfours > /dev/null
[1 of 1] Compiling Main             ( fourfours.hs, fourfours.o )
Linking fourfours ...
real	0m1.909s
user	0m1.692s
sys	0m0.208s
$ rm *.o *.hi; wine ghc --make fourfours.hs ; time wine ./fourfours.exe > /dev/null
[1 of 1] Compiling Main             ( fourfours.hs, fourfours.o )
Linking fourfours.exe ...
real	0m1.631s
user	0m1.376s
sys	0m0.092s
So it is faster to run a compiled Haskell program on top of a compatibility layer than directly on Linux! The world is in order again, though, if optimization is enabled:
$ rm *.o *.hi; ghc -O --make fourfours.hs ; time ./fourfours > /dev/null
[1 of 1] Compiling Main             ( fourfours.hs, fourfours.o )
Linking fourfours ...
real	0m0.981s
user	0m0.876s
sys	0m0.108s
$ rm *.o *.hi; wine ghc -O --make fourfours.hs ; time wine ./fourfours.exe > /dev/null
[1 of 1] Compiling Main             ( fourfours.hs, fourfours.o )
Linking fourfours.exe ...
real	0m1.270s
user	0m1.036s
sys	0m0.072s
Funny. Anyways, I wanted to port arbtt. The only platform-dependent part is the capture module that gathers the list of open Windows. The Win32 package that comes with the Haskell Platform did not cover all the functions needed to do so, but creating additional function bindings is really easy with Haskell, as can be seen in the Graphics.Win32.Window.Extra module. I also replaced the locking code that prevents two instances of arbtt-capture to run at the same time by equivalent code using Windows mutexes (module System.Win32.Mutex). With these small changes and some CPP conditionals to make the code compile for either platform, the porting was done! Even accessing the files in ~/.arbtt works correctly on Windows, where it will look in the Application Data folder, without changing the code, thanks to System.Directory.getAppUserDataDirectory. But Windows users won t like compiling software on their own. They won t even like installing software by copying various files to certain directories. Therefore, I also had to create a Windows Installer. I picked Inno Setup, because it s Free Software and seems to be simpler than NSIS. The installer puts the compiled .exe files, the example categorize.cfg and the HTML documentation in the right spot, adds icons to the Start Menu ( Edit categorize.cfg , which fires up wordpad, a link to the documentation and the uninstaller), puts arbtt-capture in the Autorun folder, puts the path to arbtt-stats in the PATH variable and starts arbtt-capture at the end (the last three points being optional). Of course it undoes all this when removing the program again. I integrated the call to the Inno Setup installer into the usual ./Setup build process of Haskell packages. Some more details of how to create the Windows installer are mentioned in the README file. Now all this does not magically add a graphical user interface to arbtt, so users will still have to work with arbtt-stats on the command line even on Windows. If this is not a problem for you then you can fetch the latest installer from the arbtt homepage. And if you happen to become a serious user of arbtt on Windows and want to help maintaining the Windows port, I ll gladly share some responsibilities. I m very satisfied with the process and the result and I m happy to know that I can offer some of my programs also to Windows users in the future.It is also a big plus for Haskell with Python, shipping a program for Windows users is likely more difficult. The next step will be providing gtk-based graphical Haskell applications for Windows, including a nice installer that ideally includes all dependencies (gtk etc.).

24 December 2009

Julien Blache: Packard Bell OneTwo all-in-one with touch screen

I ve just bought a Packard Bell OneTwo (M3700), a 600 Euros all-in-one computer with a 20 multipoint touch screen (there are bigger models with 23 touch screen, wifi and some other options). This machine will be used to run OpenBravoPOS, a free (libre) point of sale software. So far, I think this machine is just perfect for the job. Getting it to run smoothly under Linux is not a walk in the park, however. There are some quirks and some assembly is required, but once you re done (that takes a couple of hours at most once you ve got all the info, which you have if you re reading this) this machine is just great. It s fast, with a 2.1 GHz Pentium Dual-Core (T4300) CPU, 4 GB of RAM, an Intel GM45 GPU with up to 256 MB of shared RAM, gigabit networking, a fast 320 GB SATA disk and a combo DVD-drive (not a slot-in, too bad). The screen is nice, and the touchscreen is incredibly smooth, precise and sensitive. The sound is good, the webcam is great and it works out of the box, too! Update: added a note about the card reader. Before you go Enter the BIOS and bump the amount of memory allocated to the GPU to 256 MB. By default, the machine ships with only 64 MB allocated to the GPU, which is low and ridiculous considering it is equipped with 4 GB Installing Debian Forget about installing Lenny with debian-installer on this machine. The standard installer with its 2.6.26 kernel doesn t support the network interface properly. Upgraded installer images with 2.6.28 or 2.6.30 kernels end up locking the machine solid before the first installer screen. Your best friend: System Rescue CD. Your other best friend: debootstrap. Before rebooting, install the 2.6.30 kernel from backports.org. It works like a charm, even if the 2.6.30 on the upgraded installer locked up solid. Go figure :) While you re at it, install X from Testing. You need a recent enough version of the intel driver that will support the GM45 chip. Configuring X This is the first and the biggest quirk on this machine. The LCD is actually wired up to both the VGA and the LVDS outputs on the graphic card, and advertises different resolutions on both. The native resolution (1600 900 on this model) is only advertised on the LVDS output. While fiddling with X, it becomes obvious that the VGA output is used as the boot video device. If you disable the output in X with xrandr, you loose the text consoles. My un(?)educated guess is that this setup allowed them to use a standard desktop PC BIOS instead of using a more expensive laptop BIOS. I may be wrong, but that s pretty much the only thing that makes sense to me. Anyway. If you want X to work properly, you ll have to tell it to ignore the VGA output entirely.
Section "Device"
 Identifier  "Intel X4500"
 Option  "Monitor-LVDS"  "Panel on LVDS"
 Option  "Monitor-VGA"  "Panel on VGA"
EndSection
Section "Monitor"
 Identifier  "Panel on LVDS"
EndSection
Section "Monitor"
 Identifier  "Panel on VGA"
 # The LCD panel is wired up on both VGA and LVDS
 # Ignore the VGA output as far as X is concerned
 Option  "Ignore"  "True"
EndSection
If you don t tell X to ignore the VGA output, you ll end up with a mirror setup and your desktop will use the smallest size so as to fit on both monitors. It isn t pretty, it s plain silly and we want those 20 used fully, dammit! See the full xorg.conf. Touch screen The touch screen is an infrared multipoint touch screen from Quanta. No kernel driver is needed, only an input driver for X is required. Start by adding an udev rule like this one:
SUBSYSTEM=="usb", ATTRS idVendor =="0408", ATTRS idProduct =="3000", SYMLINK+="usb/quanta_touch"
The touch screen will now appear as /dev/usb/quanta_touch, which is more handy and stable than /dev/usb/hiddevN. Grab xf86-input-hidtouch from HidTouch Suite on SF.net, and apply this patch. The aim of the patch is to ignore anything but the first reported pressure point. The touch screen is a multipoint touch screen and as such can report 2 or 3 (not sure) pressure points at the same time. The driver can t handle that yet. The patch also fixes a bad comment and an API difference with newer X versions. Build and install the driver, then edit xorg.conf:
Section "InputDevice"
 Identifier  "Optical Touch Screen"
 Driver  "hidtouch"
 Option  "SendCoreEvents"  "true"
 Option  "ReportingMode"  "Raw"
 Option  "Device"  "/dev/usb/quanta_touch"
 Option  "PacketCount"  "13"
 Option  "OpcodePressure"  "852034"
 Option  "OpcodeX"  "65584"
 Option  "OpcodeY"  "65585"
 Option  "CalibrationModel"  "1"
 Option  "CornerTopLeftX"  "0"
 Option  "CornerTopLeftY"  "0"
 Option  "CornerTopRightX"  "1600"
 Option  "CornerTopRightY"  "0"
 Option  "CornerBottomLeftX"  "0"
 Option  "CornerBottomLeftY"  "900"
 Option  "CornerBottomRightX"  "1600"
 Option  "CornerBottomRightY"  "900"
 Option  "CornerScreenWidth"  "1600"
 Option  "CornerScreenHeight"  "900"
EndSection
There you are. Working touch screen! Credit: the above touch screen setup instructions, including the patch (which I reworked slightly ) were taken from this post on the Ubuntu-fr.org forum. The instructions cover the Packard Bell Viseo 200T touch screen, which is identical to what s used on the OneTwo. If you re looking for a 20 touch screen, go for it; at 200 Euros it s a good deal. Sound The Realtek ALC268 codec as used in the OneTwo isn t properly supported yet, however using model=acer-aspire works for the integrated speakers and the headphone jack. Line out and the integrated microphone do not work. Webcam The webcam is a UVC webcam and the image quality is stunning. I m seriously considering stealing that webcam to replace the iSight in my MacBook Pro. It works out of the box without any firmware. Quite a good surprise :) Flash card reader The integrated flash card reader also works out of the box, for the card formats supported by Linux.

Next.

Previous.