June 27, 2008 04:42 AM :: Utah, USA 

June 27, 2008 04:42 AM :: Utah, USA 
June 27, 2008 04:30 AM :: Utah, USA 
June 26, 2008 11:14 PM :: Greece 
One of the great things about Qt is that you can compile the code under esoteric OSs (mmh?) like Windows or MacOS. Although I’ve almost never used windows, I did the packaging of yzis. I used the Nullsoft Installer, which is ok.
I had several issues with static linking, and thought maybe some of you could give some help about it. Don’t ask why I want static link, this is not the issue here.
Problem #1:
The most important one is Qt itself. I expected that to be easy, but it is not. The FindQt4 shipped with cmake 2.4.8 or 2.6 is not really aware of static lib, or is it ? Nor is the one from kde svn. I’ve tried using the one from quassel-irc, but it fails as well. If you can help me with this, the code is available.
It seems (according to #qt on irc) that it makes sense to have two different Qt installed, one static and one shared. I did that (double the space used…) and in one of them did “configure -static” and recompiled qt. Now the *.a are much bigger, and though qyzis links against those *.a, it still depends on the DLLs, according to “dependencies walker”. Gr…
Problem #2:
Then, there is the problem of gnuwin32 tools. In the lib/ directory, you can find for example
And the DLL (libintl3.dll) is in the bin/ directory. I need to ship the DLL with qyzis, because cmake found the dll, and linked against libintl.dll.a. In a perfect world, I would like cmake to use the libintl.lib and have a static link, but i dont know how to convince cmake of doing that. Do you know ?
Problem #3:
How do you find out what kind of library a file is ? According to what I’ve found googling the web, libraries can have a wild number of different names (libX.dll, libX.dll.a, libX.lib, libX.a, all of this without the lib prefix and so on…). Even worse : libX.a for example, could be either a static lib or the stub for the DLL. Do you have clarifications about this ? Do you know of a reliable way to know which kind of library it is ? (DLL, DLL stub, or purely static).
Ok, here it is, things have finally settled and we are happy to bring you the first alpha release for Yzis. The foundations are stabilizing, and we are now focusing on fixing bugs and porting to different architectures, OSs, and interfaces.
What you have so far :
The most noteworthy missing feature is the KDE embeddable component, we are aware of this, and this is the main thing we shall work on after 1.0 is out.
At this point, we are not yet asking for broad testing, but developers not afraid of bleeding edge are encouraged to test it out. If you can help with porting/solving bugs, this is of course even better.
You can join us on #yzis on freenode to discuss all of this.
The web site has been updated, and you should find information about getting the source from source control (mercurial) and compiling on most platforms.
The tarballs and the windows installer can be downloaded from this url:
http://labs.freehackers.org/projects/list_files/yzis
Below are some screenshots showing the different interfaces (qt/linux, ncurses, qt/windows):
I’ve been pushing some new photography to my photoblog over at Sumatro.com. I have a new set of work lined up, all being published at 9am every morning. To keep up to date, subscribe to the RSS feed.
Would love some comments/idea/abuse on the photos if you have the time.
June 25, 2008 07:55 PM :: England 
June 25, 2008 09:54 AM :: Germany 
Are you ‘up to date’ if you are still using a static webpage today? I wouldn’t say that there is a global answer to that question and everybody’s got to find out for himself.
Usually I’m a big fan of automatism and technology and its advantages - but is it really worth it? Let’s have a closer look at the topic:
A Content Management System (CMS) is a program, running on your webserver, generating the html output for the visitors browser, which is actually a good thing, if things are changing a lot.
But a CMS is just a piece of software that needs updates and patches too, disregarding new features and stuff as there might be undiscovered security holes which might turn out to be a rather serious problem. I don’t want to question any cms here. I just want to make you think if you really need one.
I’ll give you an example: My domain stargazer.at hosts a portal page, offering links to my services, my blog, whatever. As my services don’t change that often, there is no need for dynamical created content as things just don’t change. If I think back, the last update on the portal page happened four month ago. Since then it wasn’t touched anymore. Regarding security, this would be quite fatal. In the other hand, my blog here gets much more love and changes much more often. That’s why I am using Wordpress here and plain html on my portal page.
June 25, 2008 08:50 AM :: Vorarlberg, Austria 
Nick was home from college this past week, and I took a lot of time away from working on the blog and BIOSLEVEL to spend some time with friends. It was a good time for sure, but I always come to regret it when I realize how little work I've done.
Hopefully I get things back on track over the next few days. I'm way behind on several reviews for BIOSLEVEL, and some of the products were just released in the last two weeks or so.
I also rebuilt two of my computers in to new housing, with a few new components that were sent to me for review. Let me say that I hate reviewing some CPU coolers. A certain company that will go unnamed for now sent two CPU coolers that otherwise seem impossible to install on an Intel machine. Stay tuned for a review, if I ever get them installed.
On top of all that, I somehow started playing World of Warcraft again.
There's an article on Slashdot about a US Senate hearing on laptop seizures at border crossings. This affects me, because I travel to Canada a lot and plan to move there within a year or so.
It's a problem because my job requires me to handle what amount to people's medical records as data files on my laptop. It's part of my job, and often I work from home. As of right now, I never take my laptop with me to Canada partly because I don't know what would happen if a border agent decided to inspect or copy all of my data. I can get in very serious trouble for breaching patient confidentiality. On the other hand I could get in serious trouble if I refused to allow a search for myself; at best I'd be turned way at the border, having wasted hundreds of dollars to travel there.
I really don't know what I'm going to do when I move. I'll probably have to wipe my computers clean before shipping them up there. Another option would be to encrypt all the data, upload it to the server that hosts my website, then download it all again after I move. It's insane that I'd have to do such a thing though. And shuffling sensitive data around to strangers' computers and servers isn't the safest thing in the world either.
How do lawyers and doctors and people with trade secrets and other people with classified or legally protected information handle border crossings? It's a bit of a conflict of interest.
June 25, 2008 06:08 AM :: Pennsylvania, USA 
Ok, I hinted that I would do a more thorough review of GitHub, the new and easy-to-use git repository hosting site. Although I’m still no power-user I’ve come to know the features that make GitHub worth using and so far unique.
The “Fork” feature is probably the most important one. Instead of just cloning a repository and working on it locally, you can fork it on GitHub. When you fork a project everyone can see you did, and has a nice flashy graph-view so they can see where you branched and what commits you made that are not (yet) in the upstream.
And if you have introduced changes that you think would benefit the project you can send people (e.g. the original project owner) a “pull-request”. The recipient can then easily fetch/merge your changes into his project. It really doesn’t get much easier to contribute to (open-source) projects. I certainly did for the first time ;)

Then there are feeds. You can watch projects, which means that your feed includes any commits/comments on the watched projects. It goes without saying that this can be quickly overwhelming for active projects.
Comments can be made on specific lines in a commit (or on the whole commit), which is a great feature (think of it as the equivalent to patches being discussed line-by-line in mailing-lists). I still prefer mails though ;)
The syntax-highlighting looks pretty good. I’ve already mentioned the very pale interface (as in low-contrast) and it still has not changed. But I think that most people really browse the commit history in their local clones anyway.
Each project has an attached Wiki too, so you can add a few pages (or a lot if you wish).
To conclude I can say that GitHub is a great service, since it has a free plan for public projects. I would not need it for my personal projects, but to run a or contribute to a open-source project it’s perfect. The amount you use its features is up to you. If you already have a Wiki, already have an active mailing-list and discuss patches there too then you can just use GitHub as the central source code repository (plus the forks of course). The real work is done on your local repository with git anyway, but y’already knew that I guess ;)
June 24, 2008 08:46 PM :: Germany 
So the other day I was thinking what a pain it is to handle text in input boxes on web pages, especially when you’re writing something longer. Since I started using vim for coding I’ve become aware of how much more efficient it is to edit when you have keyboard shortcuts to accelerate common input operations.
I discovered a while back that bash has input modes for both vi and emacs and ever since then editing earlier commands is so much easier. And not only does it work in bash, but just as well in anything else, like ipython, irb, whatever.
So now only Firefox remains of my most used applications that still has the problem of stoneage editing, and I’m stuck using the mouse way too much. It bugs me that I can’t do Ctrl+w to kill a word. Thus I went hunting for an emacs extensions and what do you know, of course there is one: Firemacs. Turns out it works well, and it also has keyboard shortcuts for navigation. > gets you to the bottom of the page, no more having to hold down <space>. ![]()
June 24, 2008 08:20 PM :: Utrecht, Netherlands 
Nvidia reiterated that it won’t provide open source drivers for Linux because the company claims there is no need for it.
June 24, 2008 09:46 AM :: Germany 
I had to install amsn just so could video chat with a friend on MSN. Really? On the plus side, at least I could do it :)
Also, figured out how to use skype on Ubuntu. Skype really want /dev/dsp. And Ubuntu now uses pulseaudio. So basically if you've done anything with sound, Skype won't be able to get the sound. Which sucks. However, pulse audio ships with this handy utility 'pasuspender' which temporarily suspends pulse audio and it's lock on /dev/dsp. So to actually use skype
pasuspender skype
And skype can then seize and monopolize the sound card. So you can use it, but no other sound till you shut Skype down. So it's 2008 and we still can't share the sound card :/.
June 24, 2008 08:39 AM :: British Columbia, Canada 
I just found a couple cool programs called turbotail and multitail while searching for rbot using eix.
Turbotail is just like tail, but it uses dnotify instead of auto refreshing a defined number of seconds. I always thought it was kind of silly to keep refreshing the screen searching for new content with tail. Turbotail just sits there until the kernel notifies of a change in the file that you are tail’ing and then it updates what you see.
Multitail looks like a VERY robust way of viewing multiple files. It can tail any number of files and supports text filtering and even syntax highlighting.
Turbotail works great, but unfortunately multitail crashes when I try to run it from my Yakuake console. I get this:
--*- multitail 5.2.0 (C) 2003-2007 by folkert@vanheusden.com -*-- A problem occured at line 511 in function mynewwin (from file term.c): Failed to create window with dimensions 55x9 at offset -27,-4 (terminal size: 167,19)
Seems to work just fine from a regular console though. It will take me a while to actually learn all of the features of multitail.
June 24, 2008 02:32 AM :: Indiana, USA 
After a while of looking for a new job, I finally got a new job. Well, actually, I’ve been working my new job for about 3 months now. So… I guess it’s not really a new job anymore.
I’m now a full time Linux administrator with ExLibris. Unfortunately, Red Hat is the preferred distribution. That’s to be expected. Most business want to make sure they use something that’s proven and has a clear line of support.
The new job is in Des Plaines, Il, which means I’ll have to sell my house and move a little closer. So far, the job seems pretty good. It’s doing something I like and the people are nice, and most of them seem pretty smart.
June 24, 2008 02:17 AM :: Indiana, USA 
..\..\directory your code is completely dependent on the platform below because you actively worked around the possible platform independence. os.path.join to build a path, don't try guessing whether "/" or "\" is the right delimiter.June 23, 2008 08:04 PM :: Germany 
June 23, 2008 03:04 PM :: Greece 
The following is the release announcemnet from Jeremy White of CodeWeavers (CrossOver):
Hi Folks,
I am pleased to announce that we have shipped CrossOver 7 for both Macintosh and Linux. New in Version 7 is support for Microsoft Office 2007, dramatically improved support for Outlook 2003 and Internet Explorer 6, and a broad range of improvements that should bring improvements to all Windows applications.
For our Linux customers, it also brings expanded support for most Adobe programs, with Photoshop CS and CS2 working particularly well.
For our Macintosh customers, this release also brings a change in our product mix. We are now providing “CrossOver Mac Standard” and “CrossOver Mac Professional”. The new Standard product will mirror
the Linux Standard product, in that it will be a lower priced product with more basic support and no multiple user support. The new CrossOver Mac Professional product replaces the existing CrossOver Mac product. It continues to have our best support, support for multiple users, and, CrossOver Mac Pro continues to come with a complimentary copy of CrossOver Games. If you have purchased CrossOver Mac in the past, you have been automatically upgraded to a CrossOver Mac Pro license.
Finally, another major benefit of 7.0 is that it includes many of the elements of Wine 1.0, which was also released today. This is a major milestone for us, and for the Wine project. Our many years of work, and your many years of supporting our work, have enabled us to help bring Wine to this milestone. I am very proud to have been part of this, and very grateful for all the support of our customers, advocates, and fellow Wine developers.
If you are an existing CrossOver customer with an active support entitlement, you can visit our web site to download this latest version: www.codeweavers.com
You will need to log in with the email and password that you used when
purchasing CrossOver. Please write to info@codeweavers.com if you need help with this process.
Thanks again for all your support, and I hope that you enjoy CrossOver 7!
Cheers,
Jeremy White
CEO
CodeWeavers
—
Version 7.0 Changelog:
New application support:
Bug fixes:
Source: Wine Reviews

June 23, 2008 01:36 PM :: São Paulo, Brazil 
Inevitably, as you’re learning a new skill, such as a programming language, you may want to revisit your old work and see if you can do it better. I had this pair of functions to fetch the previous and the next “page” of a source collection, based on the sort order of the source. In plain text, in order to get to the previous “page” I want the source with the maximum sort order smaller than the present one, and with the same parent id. Here is my brute-force approach from a couple of years ago:
CREATE OR REPLACE FUNCTION get_prev_page(INTEGER) RETURNS INTEGER AS $$
DECLARE
self_page INTEGER;
prev_page INTEGER;
prev_src INTEGER;
par_id INTEGER;
BEGIN
SELECT parent_id FROM sources INTO par_id WHERE source_id = $1;
SELECT sort_order FROM sources INTO self_page
WHERE source_id = $1;
SELECT MAX(sort_order) FROM sources INTO prev_page
WHERE parent_id = par_id AND sort_order < self_page;
SELECT source_id FROM sources INTO prev_src
WHERE parent_id = par_id AND sort_order = prev_page;
RETURN COALESCE(prev_src,0);
END;
$$ LANGUAGE plpgsql STABLE;
Ugly, ugly, ugly. I remember what was the main stumbling block here: You can’t use an aggregate function such as MAX() in a WHERE clause. The thing is that you don’t need all those assignments. A little code folding, replacing variables with sub-selects, takes you a long way:
CREATE OR REPLACE FUNCTION get_prev_page(INTEGER) RETURNS INTEGER AS $$
DECLARE
pp INTEGER;
BEGIN
SELECT source_id INTO pp FROM sources
WHERE parent_id = (SELECT parent_id FROM sources WHERE source_id = $1)
AND sort_order < (SELECT sort_order FROM sources WHERE source_id = $1)
ORDER BY sort_order DESC LIMIT 1;
RETURN COALESCE(pp, 0);
END
$$ LANGUAGE plpgsql STABLE;
The “ORDER BY sort_order DESC LIMIT 1″ is a great idiom whenever you need to use an extreme value as part of a WHERE clause.
Even if the two versions of the code above are functionally equivalent, and the PostgreSQL planner probably will rewrite the query to something like version 1, most programmers would prefer version 2. Why? I think there’s a lot to the concept that “coding is poetry”. Version 2 is more esthetically pleasing, because it conveys its inner meaning in a much more succinct way, as in the Merriam-Webster definition of the word succinct: “marked by compact precise expression without wasted words”. At least to me it does. And that’s probably some of the essence of poetry.
June 23, 2008 11:51 AM :: Norway 
June 23, 2008 12:09 AM :: Utah, USA 
June 21, 2008 10:09 PM :: Greece 
June 21, 2008 08:50 AM :: Greece 
My server, mindstab.net, runs Hardened Gentoo. I like it. It provides nice features from grsecurity and PaX like memory randomization, non executable writable memory, etc. However, it really doesn't get along so well with Lisp. Lisp in general seems to like executable and writable memory, and SBCL at least also doesn't like randomized memory. So it took a bit of work to get Lisp onto my server.
Approach 1: Failure
I spent a bunch of time trying to patch the build process in portage to coax SBCL into building. First, of course, I used gcc-config to disable the hardened gcc profile, and just use the vanilla one. Then I created a suid root shell script to call "paxctl -m -p -r -e $1" so that the sandboxed build process could disable PaX features on the SBCL binaries. I added the command to the ebuild, and created a patch to insert the command into SBCL's build process. The process goes like this, portage download's the SBCL source and a pre-compiled SBCL binary. The patched ebuild then calls my suid root script which disables PaX on the pre-compiled binary so it actually runs (as opposed to crashing under PaX) and then a new SBCL binary is built from the source and the pre-compiled binary builds a core file from the SBCL lisp source. The patched SBCL make.sh then again calls the suid root script on the new binary, so it will run. Then it should load the new core and recompile the system for itself. Sadly, while it runs at least, it chokes on the core file and hangs while using 100% cpu. I couldn't get past this so I eventually gave up. If anyone has any suggestions that'd be great.
Approach 2: Success
So the actually solution was as follows: Download the most recent precompiled SBCL binary from the website (1.0.15 for x86), run "paxctl -p -e -m -r -x -s " on src/runtime/sbcl (to cover all the bases). Then run "sh install.sh" to install SBCL to /usr/local. That's it.
The problem with this is you can't emerge lisp packages in portage, you have to install them by hand (unless maybe you want to fake inject the package into the portage database).
I downloaded a copy of slime, untarred it and popped it in my .emacs and I had a full lisp environment ready to go, and on my hardened machine no less. Not so bad.
June 21, 2008 07:07 AM :: British Columbia, Canada 
Bus 006 Device 007: ID 08ff:1600 AuthenTec, Inc.
# layman -a wschlich-testing
# echo =app-misc/fprint_demo-0.4 >> /etc/portage/package.keywords/general
# echo =media-libs/libfprint-0.0.6 >> /etc/portage/package.keywords/general
# echo =sys-auth/pam_fprint-0.2 >> /etc/portage/package.keywords/general
# emerge -av fprint_demo pam_fprint
$ fprint_demo
auth sufficient pam_fprint.so
auth sufficient pam_unix.so try_first_pass likeauth nullok
June 20, 2008 08:18 PM :: Italy 
revolver ~ # lspci
00:00.0 Host bridge: Intel Corporation Mobile Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile Integrated Graphics Controller (rev 03)
00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Contoller #4 (rev 03)
00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 (rev 03)
00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 (rev 03)
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 03)
00:1c.1 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 2 (rev 03)
00:1c.2 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 3 (rev 03)
00:1c.3 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 4 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev f3)
00:1f.0 ISA bridge: Intel Corporation Mobile LPC Interface Controller (rev 03)
00:1f.1 IDE interface: Intel Corporation Mobile IDE Controller (rev 03)
00:1f.2 SATA controller: Intel Corporation Mobile SATA AHCI Controller (rev 03)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
02:00.0 Network controller: Intel Corporation Unknown device 4229 (rev 61)
05:00.0 SATA controller: JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller (rev 02)
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 03)What I have not tried yet:
I needed to add "options snd-hda-intel model=lenovo" to /etc/modules.d/alsa and update modules.
June 20, 2008 05:38 PM :: Italy 
June 20, 2008 02:49 PM :: Germany 

June 20, 2008 09:55 AM :: Germany 
I’m releasing part of the code developed during my PhD. Those are tools useful in the field of convex processing, and more precisely to solve a problem called convex feasbility problem.
This is based on Qt4, and released mostly under the GPL (with an added restriction : you must cite my work if you use this). Oh.. and there are unit tests, examples, and documentation, too.
caution : rest of the post is for those mathematically oriented people, and no more related to free software.
The convex feasbility problem is to find a point in the intersection of closed convex sets inside a Hilbert space. Believe it or not, quite some real-life problems can be formulated as such, for examples some image reconstruction problems in medical imaging, or also in the field of signal processing.
There are a lot of algorithms to solve this, you can find more information about those in the bibliography of my papers, or those from my PhD advisor M. Combettes.
This code provides the necessary tools to play and test those algorithms. Besides all elementary methods on Euclidian/Hilbert Space, it provides a way to compute projections on different interesting convex sets. There are also the needed tools to experiment with tomography, which is one of the main application in my PhD. You can compute the radon transform of an image and use this as data in convex feasibility formulation.
This is of course mostly of interest for those working in convex optimization and/or tomography. I want to highligh the fact that sharing such kind of code is very rare in this community. I would have gained a lot of time at the beginning of my thesis if other people had provided such code.
June 19, 2008 04:45 PM :: Germany 
# vim: set sw=4 sts=4 et :
# Copyright: 2008 Gentoo Foundation
# Author(s): Nirbheek Chauhan <nirbheek.chauhan@gmail.com>
# License: GPL-2
#
# Immortal lh!
#
June 19, 2008 07:44 AM :: Uttar Pradesh, India 
What's the Common Lisp version of Perlmonks or Ruby-forum? I have yet to find it.
comp.lang.lisp is largely crap. 50% of the traffic on that list is spam about shoes and fake watches. The other half is equally split between:
The Common Lisp community (if you can call it that) is a bunch of really smart guys, but they all live isolated in hermit shacks up in the mountains and they spend their time doing magic tricks with Lisp that few people ever see, and if you wander too close they throw rocks at you.
What's the Common Lisp equivalent of perldoc or rdoc? We have the Hyperspec. It's an impressive document, but it's a bunch of painful HTML that looks like it was created in the early 90's, probably because it was. It reads like a dusty, dry, technical document probably because it is. What it's not, is friendly or easily readable.
Perl has CPAN, Ruby has rubygems, what does Lisp have? Either a hand-rolled system definition script, or if you're lucky an ASDF install file. ASDF is the semi-standard Lisp way of installing libraries, except that it doesn't quite work in Windows, it doesn't check dependencies or handle different versions of a package very well, and it doesn't work the same on all Lisp implementations. Many people in the so-called community think it's not very good.
The fellow running Lispcast makes another good point. Where can you download Lisp? It's not obvious.
You could say "OK Brian, good idea, now get to work!" The problem is that even if I had the time or willpower, I'm not the smartest guy in the world. I honestly don't think I could design and run and maintain a CPAN. And even if I did, would anyone use it? But I do know that there ARE plenty of smart, enthusiastic people using Lisp. Yet high-quality friendly code is largely not being produced.
Peter Christensen wrote about "langauge snobs" and the importance of community. One point made is that some really ugly, horrific languages have been extremely successful simply because they've been accessible and fun. An example given is the scripting language in Second Life, which has over 2.5 billion lines of code written in by tens of thousands of amateurs and has accurately modeled a realistic 3D environment with thousands of users at any given time. All in an ugly language some guy invented AND implemented in one week. The developers admit that the language is total crap, but it doesn't matter. 1) It has very good and accessible documentation, 2) it has a very newbie-friendly community, and 3) and it's easy to pick up, throw together some code and get immediate results. Three things Common Lisp lacks.
This is something I've said myself many times: an active, supportive, enthusiastic community is essential for the health of any programming language. Common Lisp simply doesn't have one and it's a shame.
I still secretly hope that Clojure or NewLisp or Arc turn out to be a huge success. They are the kinds of things Lisp needs today.
June 18, 2008 07:47 AM :: Pennsylvania, USA 
They asked for it - they got it… a nice DDoS
(spreadfirefox.com and mozilla.com were unreachable for a couple of minutes after 17:00 UTC).
Anyway… go ahead and download it, it’s a good piece of software. I tried out beta3 and the RCs, and I like the new version so much, that I’m now using Firefox as my default browser again (after more than two years with Konqueror as my default browser).
Nice birthday present by the way, Mozilla! Thanks! ![]()
June 17, 2008 06:17 PM :: Shanghai, China 
The best browser ever, landed on earth today but while big daddy was busy asking everyone to do their homework to get ready for the party, he failed to do his own.
First and foremost, as all of us came know a little later, the download day was not just 17th June, 2008; it was 17th June 2008 at 10:00 am PDT. No one ever cared to inform that important piece of shit. All big daddy wanted was a 1 million downloads in 24 hours, he didn't care how frustrated you would be to find out that you don't see your download at 12 am of June 17th, local time. And no Sir, I am not asking you to take care of all the time zones here, a simple countdown timer on the website would have been enough. Moral of the story: Big Daddy, you came up with something really impressive, you made us do our homework, but you failed to do your own!
Now, everyone knows that the digg effect is not just limited to sites on Digg's front page. Anyone can feel it; especially when you want 1 million downloaders to come to your site when you release the most anticipated browser ever, what on earth were you thinking ?! It's never going to be a breeze. Everyone knows that! Again, you failed to do your homework! Moral of the story: You promised us all the good things on June 17th, and all the good things you did give, but; the overall experience was somewhat dissapointing :(
Ok, now that my rant is over, I am off to start enjoying my brand new browser :)
June 17, 2008 06:04 PM :: India 
I purchased my MacBook back in November of 2007, shortly after the Santa Rosa chipset update. I'd use Mac OS X a little previously, mostly in the form of trying out OSX86 on my old laptop. After using it for several months as my primary mobile platform, I decided it was time for something different.
OS X is nice and all. User-friendly, intuitive, and works fantastic with the hardware Apple ships. I still feel it's lacking in some areas where Linux excels, such as configurability and the space for customization. Not to mention that there's essentially no decent games out for OS X. I can install Linux and throw on a native version of UT2004 and play away now.
Installation wasn't horribly difficult, but Mac OS X was needed at least initially, and I didn't realize this. Gentoo now boots without an issue on the MacBook. All that I need to finish doing is installing the programs I need and setting up the WiFi.
I'm hoping that I have all the hardware working correctly in the next week or so, and that includes the web cam and touchpad. My only other concern is battery life. It'd be fantastic if I get the same amount or more battery out of the machine with Linux.
June 17, 2008 04:29 PM :: Uttar Pradesh, India 
Friday a guy on the phone said he'd call me back Monday or Tuesday to give me an update on when / whether they're ever going to send me my monitor. Monday came and went with no call. Not really surprising.
I filed a complaint with the BBB today. We'll see how that goes. At the BBB Westinghouse has around 150 complaints in the past 36 months, but 133 of them were supposedly solved "satisfactorily" and Westinghouse somehow still has the highest possible rating at the BBB. I've read some things about the BBB not being an entirely neutral entity itself, but who knows. I'll start filing complaints with other consumer groups if I need to.
A good handful of people have left comments here at my blog saying they aren't going to buy anything from Westinghouse themselves, which is great to hear. I may mention my blog to Westinghouse next time I call them, if there is a next time. Is not sending me the monitor I paid for really worth losing a bunch of customers?
The sad thing is that I really do need a monitor with component and composite inputs, and they are somewhat rare (the local store had none except Westingcrap brand). However I have found a Gateway model that has them, so maybe that'll work out. I'd gladly take a refund from Westinghouse rather than a monitor at this point.
June 17, 2008 07:56 AM :: Pennsylvania, USA 
I've spent almost the whole last week testing different mail clients because I somewhat wasn't happy with mutt (especially the address book functionality sucks). Also, now that there are new methods in categorizing data, via tags/labels for example, the possibilities of processing my mails effectively with mutt seemed limited.
Until now I've used my INBOX as a staging area to organize tasks which are associated around the projects I am involved. I simply kept mails which required action on my behalf in my INBOX. Be it that I just have to reply or that I have to look at something or fix a bug, you get the picture. Since I get lots of emails (~1000 on an average week) things got quite messy in times and I sometimes forgot about some of those mails/tasks. What I ideally wanted to have is a way to label messages and then search my INBOX for mails which have a certain label assigned, or limit the number of mails I see by certain key words. The IMAP protocol supports user defined labels which would be a starting point, but mutt doesn't support them
(it should be noted here that mutt wasn't designed to work with IMAP in the first place).
I first took a look at sup. Sup is written in Ruby and promises a completely new approach to mail. Most of it's features are inspired by gmail and mutt. It supports labeling of messages, vim style key bindings and some really nifty quoting features like auto folding in mailing list threads. It's usage is quite intuitive when you come from mutt and I've used it exclusively over the last week. But, all those nice shiny features aside, sup has some major drawbacks. To allow labeling of messages it manages it's own index where it keeps all the related meta data. The problem with that, is that it doesn't update the mail status on the server side. Means, mails that appear as read in sup are still unread in the INBOX on the IMAP server. You also cannot move mails between IMAP folders, sup provides it's own folder mechanism though. Also, if you access your INBOX from another mail client and change things, like moving mails to folders etc. sup won't start anymore because you have to sync it's local index again with the IMAP account.
The other client I've tried was cone which is part of the courier-mta project. This mail client is designed from the ground to deal with IMAP accounts (it supports POP3 as well), therefore it allows labeling of messages. It also allows you to store it's configuration settings on the IMAP server itself and supports IMAP address books. That all would fit perfectly if it's user interface wouldn't be that crappy (IMO at least). Well, I have to say that I am quite used to have vim key bindings everywhere possible, browser, shell, editor (hah!) and preferably in my mail client as well. Also the way how mailinglist threads are visually presented in the INBOX listing is not satisfactory once you're used to the nice thread view mutt offers.
So it seems I won't get 100% lucky anytime soon. I didn't try alpine, because form what I've seen on some screenshots it doesn't provide a nice thread view. And before someone now says “gmail”, I don't like to have my private mail on a machine I have no control over whatsoever
.
At least I was able to solve my todo crisis. Tante mentioned remember the milk lately on friendfeed as being a nice tool to manage ones todo lists. While I have heard of it multiple times, I haven't tried it until two days ago. I have to say it's quite nice. I love the fact that you can navigate your online todo list with the keyboard only
and especially that you can mail new tasks, which then appear in your task INBOX (hah! another one). Though I would prefer not to have to process new tasks which I've send by mail in my task INBOX again.
So I think for now I'll stay with mutt, although it's IMAP support is somewhat limited.
What mail clients to you use and why? Do you have any suggestions? Did I miss one (ncurses/command line clients only)? Is there a nifty tool to integrated IMAP address books in mutt (I've searched but with no luck)?
UPDATE: Ok, it seems I was a little quick on this one, because cone has a nice threading view. You can enable it by using $ + T. I'll use cone now for the upcoming week and see if I can get used to it's different key bindings (I constantly hit ”j” and ”k” to navigate around but it doesn't work
). Anyway, the better IMAP support will probably be worth it.
June 15, 2008 08:49 PM :: Germany 
So we now all have broadband connections and everything is great, right? Well, not quite. Some providers have better services than others. My connection seems rather fragile at times and tends to die about once in three-four days. When that happens, no amount of resetting the equipment helps to get it working again. It’s an upstream issue that I have no control over.
But there is another problem. Once the cable modem starts working again, the router (which receives an IP address from my provider, and serves LAN and wifi locally) doesn’t seem to know this and doesn’t automatically re-establish a connection. Or I’m not really sure what it does, it’s a black box and there is a web interface to it, where there’s a button to press to do this, which sometimes works. But what really is happening, who knows. There seems to be a weird timing problem to the whole thing, where if I kill the power for both the modem and the router and they both come back at the same time, it generally works. However, if the modem is taking longer to negotiate a link, the router will be disconnected. And apparently doesn’t try to reconnect on its own, so I’ve been stuck rebooting the two a few times until the timing is right. Resetting them separately for some reason doesn’t seem to work.
So what can be done about it? Well, the router does have that stupid web interface, so it’s possible to make those clicks automatically if we’re disconnected. Python’s urllib makes this very easy to do. First we login with router_login, which submits a form with POST. Then we check the state of the internet connection with check_router_state, which just reads out the relevant information from the page. And if it’s disconnected we run renew_router_connection to submit another form (ie. simulating the button click on the web page).
More than just testing if the router has a connection to the provider, broadband connections sometimes have connectivity problems. Even if you can get a connection, the provider sometimes has problems on his network, meaning your connection doesn’t work anyway.
So I came up with a test to see how well the connection is working. It’s an optimistic test, so that first we assume we have a fully functional connection and ping yahoo.com. It doesn’t matter what host we use here, just some internet host that is known to be reliable and “always” available. For this to work these conditions must be met:
dns1 in the code) to look up the host “yahoo.com”.So first we ping yahoo.com. If that fails, it could be because dns lookup failed. So we ping the provider’s nameserver. If that fails, the provider’s internal routing is probably screwed up, so we ping the gateway. And if that fails too then we know that although we have an IP address, the connection is dead (or very unstable).
#!/usr/bin/env python # # Author: Martin Matusiak <numerodix@gmail.com> # Licensed under the GNU Public License, version 3. import os import re import sys import time import urllib ip_factory = "192.168.2.1" password = "" inet_host = "yahoo.com" def write(s): sys.stdout.write(s) sys.stdout.flush() def grep(needle, haystack): if needle and haystack: m = re.search(needle, haystack) if m and m.groups(): return m.groups()[0] def invoke(cmd): (sin, sout) = os.popen2(cmd) return sout.read() def ping(host): cmd = 'ping -c1 -n -w2 ' + host + ' 2>&1' res = invoke(cmd) v = grep("rtt min/avg/max/mdev = [0-9.]+/([0-9.]+)/[0-9.]+/[0-9.]+ ms", res) if v: return int(float(v)) def find_lan_gateway(): cmd = "route -n" res = invoke(cmd) v = grep("[0-9.]+\\s+([0-9.]+)\\s+[0-9.]+\\s+UG", res) if v: return v def load_url(url, params=None): data = None if params: data = urllib.urlencode(params) f = urllib.urlopen(url, data) return f.read() def router_login(): form = {"page": "login", "pws": password} load_url("http://%s/login.htm" % ip, form) def check_router_state(): state = { "conn": None, "gateway": None, "dns1": None } router_login() s = load_url("http://%s/js/js_status_main.htm" % ip) if s: v = grep("var bWanConnected=([0-9]);", s) if v == "1": state['conn'] = True elif v == "0": state['conn'] = False if state['conn']: g = grep('writit\\("([0-9.]+)","GATEWAY"\\);', s) if g and g != "0.0.0.0": state['gateway'] = g g = grep('writit\\("([0-9.]+)","DNSIP"\\);', s) if g and g != "0.0.0.0": state['dns1'] = g return state def renew_router_connection(): router_login() form = {"page": "status_main", "button": "dhcprenew"} s = load_url("http://%s/status_main.htm" % ip, form) return s ip = find_lan_gateway() if not ip: ip = ip_factory write("LAN gateway detection failed, using factory ip %s for router\\n" % ip_factory) else: write(