<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-24453085</id><updated>2012-01-13T19:06:56.029+01:00</updated><title type='text'>Software Woes</title><subtitle type='html'>Rants, tips and tricks</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>85</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-24453085.post-2000106289508252026</id><published>2012-01-13T19:04:00.002+01:00</published><updated>2012-01-13T19:06:56.041+01:00</updated><title type='text'>Attic Manager can now import QHI, MDF and IDB files from QHIM</title><content type='html'>A new version of Attic Manager is released, version 3.00. This version is able to load all formats of Quicken Home Inventory Manager database: MDF, QHI and IDB. Attic Manager works on all versions of Windows, including Windows 7 and 64-bit versions as well.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.guacosoft.com/attic"&gt;http://www.guacosoft.com/attic&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-2000106289508252026?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/2000106289508252026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=2000106289508252026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/2000106289508252026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/2000106289508252026'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2012/01/attic-manager-can-now-import-qhi-mdf.html' title='Attic Manager can now import QHI, MDF and IDB files from QHIM'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-5603009928954597586</id><published>2011-12-11T12:11:00.003+01:00</published><updated>2011-12-11T12:19:01.500+01:00</updated><title type='text'>Load Quicken Home Inventory Manager files on 64 bit Windows</title><content type='html'>I wrote earlier about &lt;a href="http://www.guacosoft.com/attic"&gt;Attic Manager&lt;/a&gt;, a program that is able to load QHIM files so that you can keep using your home inventory on 64-bit Windows 7 (and Vista). Apparently, Intuit has decided to cut further support for this line of products, and since there is not way to export data, you would need to enter all data manually into a new product. Except for Attic Manager, which is the only product on the market that is able to import data from Quicken database.&lt;br /&gt;&lt;br /&gt;Recently, a new version of Attic Manager has been released. Version 2.50 supports loading from both .MDF and .QHI files. If you have .IDB file from Quicken Deluxe, it can also be converted to .MDF format before importing. New import of files with .QHI extension works even on 64 bit computers where Quicken Home Inventory is not installed.&lt;br /&gt;&lt;br /&gt;Beside this compatibility with more operating systems (Attic runs on Linux too), Attic Manager has other advantages: it's much faster, even if you have thousands of items in database it does not slow down. And it stores item pictures in full quality. This makes it much easier to backup and copy the database around, since everything is stored in a single file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-5603009928954597586?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/5603009928954597586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=5603009928954597586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5603009928954597586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5603009928954597586'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2011/12/load-quicken-home-inventory-manager.html' title='Load Quicken Home Inventory Manager files on 64 bit Windows'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-4516303175565272668</id><published>2011-10-26T16:04:00.002+02:00</published><updated>2011-10-26T16:10:36.878+02:00</updated><title type='text'>Quicken Home Inventory on Windows 7</title><content type='html'>Like many others, I have learned about the problem of running QHI on Windows 7. It seems that Intuit has given up on users for this little program. It wasn't anything special after all, but it did the job. I was looking for alternative that would be able to load Quicken data, so that I don't have to type it all in again.&lt;br /&gt;&lt;br /&gt;And here it is, it's called &lt;a href="http://www.guacosoft.com/attic" title="Quicken Home Inventory replacement for Windows 7"&gt;Attic Manager&lt;/a&gt;. It can import data directly from QHI.MDF backup file. All locations, categories, items and even pictures. Import can be done on machine where Quicken Home Inventory or Quicken Classic is installed, OR even on computer that does not support QHI. This page explains how to import it on Windows 7.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.guacosoft.com/qhi" title="import Quicken Home Inventory data on Windows7"&gt;http://www.guacosoft.com/qhi&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This means that you can even migrate to 64bit Windows 7 or some Linux distribution and keep all your data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-4516303175565272668?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/4516303175565272668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=4516303175565272668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/4516303175565272668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/4516303175565272668'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2011/10/quicken-home-inventory-on-windows-7.html' title='Quicken Home Inventory on Windows 7'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-8939718362564374332</id><published>2009-09-25T12:57:00.001+02:00</published><updated>2009-09-25T12:59:00.137+02:00</updated><title type='text'>Moving to a new domain</title><content type='html'>Further posts will go to my new blog at &lt;a href="http://www.backwardcompatible.net"&gt;www.BackwardCompatible.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-8939718362564374332?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/8939718362564374332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=8939718362564374332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/8939718362564374332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/8939718362564374332'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/09/moving-to-new-domain.html' title='Moving to a new domain'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-3242156684921402141</id><published>2009-09-15T17:22:00.001+02:00</published><updated>2009-09-15T17:24:54.370+02:00</updated><title type='text'>Taking over expiring domains</title><content type='html'>&lt;span style="font-style:italic;"&gt;Few years ago I wanted to take over an existing domain that was to expire soon. I wasn't looking much for information about the process, but this would have helped me a lot (if the owner did not extend it, that is):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Taken from: &lt;a href="http://www.mikeindustries.com/blog/archive/2005/03/how-to-snatch-an-expiring-domain"&gt;mikeindustries.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I recently found myself in the position of wanting to register a domain which was owned by someone else. The domain was set to expire in a week, and I figured there was a decent chance that the person who owned it wouldn’t be renewing it. Upon consulting the WhoIs registry on the current owner, I discovered the guy was a bit of a domain shark and didn’t seem to be around anymore.&lt;br /&gt;&lt;br /&gt;So I placed a backorder through GoDaddy for $18.95 thinking that was all I needed to do. During the week that followed, I learned a lot about the domain expiration process. Two and a half months and $369 later, I am the proud owner of a shiny new domain. A really really good one.&lt;br /&gt;&lt;br /&gt;This article will explain the domain expiration process and what you need to do in order to use it to your advantage.&lt;br /&gt;How a domain expires&lt;br /&gt;&lt;br /&gt;Contrary to popular belief, domains do not expire when they say they do. If the owner of a domain does not renew by the expiration date of the domain, the domain goes into “expired” status. For 40 days, the domain is in a grace period where all services are shut off, but the domain owner may still renew the domain for a standard renewal fee. If a domain enters this period, it is a good first indicator that it may not be renewed, but since the owner can re-register without penalty, it can also just be a sign of laziness or procrastination.&lt;br /&gt;&lt;br /&gt;After 40 days are up, the domain’s status changes to “redemption period”. During this phase, all WhoIs information begins disappearing, and more importantly, it now costs the owner an additional fee to re-activate and re-register the domain. The fee is currently around $100, depending on your registrar. When a domain enters its redemption period, it’s a good bet the owner has decided not to renew.&lt;br /&gt;&lt;br /&gt;Finally, after the redemption period, the domain’s status will change to “locked” as it enters the deletion phase. The deletion phase is 5 days long, and on the last day between 11am and 2pm Pacific time, the name will officially drop from the ICANN database and will be available for registration by anybody.&lt;br /&gt;&lt;br /&gt;The entire process ends exactly 75 days after the listed expiration date. For an even more detailed explanation, read the article Inside a Drop Catcher’s War Room.&lt;br /&gt;Landing your domain&lt;br /&gt;&lt;br /&gt;So if domains are available to the general public 75 days after they expire, how do you know your GoDaddy backorder isn’t one of many other backorders from other people using other services? The answer is, you don’t.&lt;br /&gt;&lt;br /&gt;And thus begins the cloak-and-dagger game of “getting in on The Drop”.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;“The Drop”&lt;/span&gt; is the unpredictable three hour period of time in which the domain is deleted from VeriSign’s database and released back into the ecosystem.&lt;br /&gt;&lt;br /&gt;I briefly thought about trying to beat GoDaddy to the punch by manually registering my domain during the drop process, but I quickly found out that there are no fewer than three major services which specialize in pounding away on VeriSign’s servers during the drop period. With their considerable resources and my measly Powerbook, there was no way I could compete on their level.&lt;br /&gt;&lt;br /&gt;So I decided to enlist the services of all three major domain snatching firms in hopes that a) one would grab my domain for me, and b) no one else would be competing against me.&lt;br /&gt;&lt;br /&gt;The three services — Snapnames.com, Enom.com, and Pool.com — all operate in a similar manner. They use a network of registrars to hit the Verisign servers at frequent intervals (but not too frequent to get banned) and snatch as many requested names as possible. If you don’t get your name, you don’t pay. But that’s where the three services begin to differ.&lt;br /&gt;Snapnames.com&lt;br /&gt;&lt;br /&gt;Snapnames.com (the exclusive partner of Network Solutions) charges you $60 for your domain unless there are multiple suitors, at which point there is an open bid auction between suitors. Seems fair enough. Snapnames is a bit of a newcomer to the game, but with their Network Solutions affiliation, they are said to be improving their success rates.&lt;br /&gt;Enom.com&lt;br /&gt;&lt;br /&gt;Not wanting to chance it with only one company, I also enlisted Enom to snatch my domain for me. Enom had reportedly been improving their “Club Drop” service for a year or two and it was now considered one of the top three. Their fee was only $30 and they are based in my ‘hood (Seattle), so I was hoping they would be the company to successfully “work The Drop” for me.&lt;br /&gt;&lt;br /&gt;Here’s where it starts to get sketchy though.&lt;br /&gt;&lt;br /&gt;Enom claims that the higher your bid is (beyond the $30), the more “resources” they will dedicate to grabbing the domain. What the hell? How am I supposed to judge that? Does that mean you’re using one server now and will use 30 servers if I bid $40? Or does it mean that you’re using 30 now and will use 35 if I bid $1000?&lt;br /&gt;&lt;br /&gt;Not knowing exactly what to do, I attempted to bid a couple of hundred dollars during the last day, but Enom required me to send them a fax to become a “verified bidder”. Since I was at home that day and only dinosaurs still have fax machines, I was unable to increase my bid. Oh well, I thought, if someone else on Enom bids higher, at least I’ll be able to participate in the auction.&lt;br /&gt;Pool.com&lt;br /&gt;&lt;br /&gt;Pool.com is the Scott Boras of domain name grabbing — the brilliant, yet conniving agent that players (domains) love and team owners (prospective domain buyers) hate. Pool plays off the power of the unknown in such a fiendishly clever way that you don’t know whether to hug them or kill them. Here’s how it works:&lt;br /&gt;&lt;br /&gt;Pool is the #1 company around as far as number of servers and success rates go. You place your original bid for $60 and if Pool.com grabs your name for you, they send you an e-mail telling you they’ve been successful and that you’ve now entered “Phase 1″ of the two-phase auction system. This is the case whether or not you are the only bidder! Pool.com doesn’t even reveal how many bidders there are.&lt;br /&gt;&lt;br /&gt;Then, in a Boras-like move of diabolical genius, Pool.com informs you that you have three days to place a new sealed bid. If the bid is either one of the top two bids or within 30% of the top bid, you move on to a one-day open bid auction (the “challenger” auction) for final control of the domain.&lt;br /&gt;&lt;br /&gt;Grrrrreat.&lt;br /&gt;&lt;br /&gt;So if I bid $100 and two people bid $140, I don’t even get to move on to the final auction! It’s all designed to get me to up my sealed bid… whether or not there are even any other bidders.&lt;br /&gt;&lt;br /&gt;Note: One other thing I forgot to mention is that before the name dropped, I grabbed all .net, .org, and .info variants (all were available) in order to have more leverage over other buyers.&lt;br /&gt;The chase is on&lt;br /&gt;&lt;br /&gt;Right on time, 75 days after the domain expired, I got an e-mail from Pool.com telling me they’d secured my domain for me. Great. Of the four sources I used, Pool.com was the one I least wanted to deal with. But true to their claims, they ended up being the best agent of The Drop and had just gotten me one step closer to my domain. They had A-Rod and I was the Texas Rangers.&lt;br /&gt;&lt;br /&gt;Unlike the Texas Rangers, however, I realized I could be bidding against myself and entered a sealed bid of $302. I chose that number because it seemed sufficiently high but not so high that I’d feel foolish if I was the only bidder. I added the extra two dollars on the end just to edge out any other people potentially deciding on $300 as their number.&lt;br /&gt;&lt;br /&gt;The next three days were particularly stressful. I had no idea where I stood, and throughout this entire process, I’d always had the sneaking suspicion that the people at these companies are on the lookout themselves for valuable domains. In other words, if someone all of a sudden bids $1000 on a domain, will a domain company decide to snatch it up themselves or “shill bid” against you on it?&lt;br /&gt;&lt;br /&gt;Finally the e-mail from Pool arrived and informed me that I had moved onto the Challenger Auction. There was one other bidder and they had upped their bid to $312 in order to beat me. Not too bad, but I had no idea how high that person was willing to go. I had to decide on a top bid (a la eBay’s proxy bidding) and a strategy for when to place it.&lt;br /&gt;&lt;br /&gt;True to form, Pool.com’s auction system squeezes even more money out of you by making sure the auction doesn’t end if there’s a bid in the last five minutes. In that case, the auction time keeps extending by five minutes until there are no more bids.&lt;br /&gt;&lt;br /&gt;I could try one of two things: Bid high and bid early in an attempt to scare off the other guy, or lull the other guy to sleep by doing nothing until the last 6 minutes. I chose the second method since the ending time was 8am on a Saturday… a time when many people are not in front of computers. I set four alarms for 7:45am Saturday morning, woke up on time, and placed my bid for $500 when the countdown clock hit 6 minutes.&lt;br /&gt;&lt;br /&gt;The system immediately auto-upped the current bid to $369 and I was the leader. Six nervous minutes, fifty browser refreshes, and a thousand heartbeats later, my opponent was nowhere to be found and the domain was mine… ready for immediate transfer to Dreamhost, my hosting company of choice.&lt;br /&gt;&lt;br /&gt;I’m still not quite sure whether the person on the other end was real (although I assume they were), but the bottom line is that by playing every possible angle, I now have an extremely valuable domain in my possession for the reasonable sum of $369. Not valuable because I want to sell it or anything; just valuable because I want it.&lt;br /&gt;&lt;br /&gt;Thank you Pool.com. I love/hate you.&lt;br /&gt;Lessons from The Drop&lt;br /&gt;&lt;br /&gt;Hopefully this article helps you in your own quest for a domain that may be expiring. My best advice is that if your interest in a domain name is only lukewarm, go ahead and use a basic service like GoDaddy, but if you really don’t want to let one get away, you must enlist the services of the big three: Snapnames, Enom, and Pool. It’s anybody’s guess what the final price will be, but by getting all the best agents out there working for you, you ensure at least being in the game.&lt;br /&gt;UPDATE: Both Mason Cole of Snapnames and Chris Ambler of Enom have written in to clarify a few points which I’d like to post here –&lt;br /&gt;&lt;br /&gt;    * Snapnames has an exclusive partnership with Network Solutions which allows them first shot at any and all expiring domains that are currently held by Network Solutions. The domain I got was not held by Network Solutions but a great many are. If yours is, Snapnames is your best bet. You’ll still have to bid against any others who may be after the same domain, but the auction process at Snapnames is pretty fair and straightforward. If you are the only bidder, it will cost you a flat fee of $60. Not bad.&lt;br /&gt;    * Snapnames is actually not technically a newcomer to the game, but their exclusive deal with Network Solutions is fairly new and it is that which has made them a powerhouse.&lt;br /&gt;    * According to Chris at Enom, some less than savory registrars have been known to actually cut the initial 40 day grace period down manually with the intent of repossessing the domain for resale. While this is technically against ICANN guidelines, ICANN has a hard time enforcing its rules on registrars, so just beware when watching for a domain that it may enter the redemption period quicker than you expect. It’s rare, but it can happen, especially with a non-established registrar. This could shrink the 75-day window down to potentially 35 days, and it could also screw you out of your own domain should it expire on you.&lt;br /&gt;    * Chris also confirmed my suspicion that manually trying to snag a domain during the drop is all but impossible if any professional drop catchers are going after it. Enom, Pool, and others have many orders of magnitude times the amount of resources that private citizens have so it’s not even worth trying unless you’re going after an uncontested domain.&lt;br /&gt;    * There is a very sticky issue going on right now with regards to how names drop. Verisign proposed a Waiting List Service a little while ago that basically let you sign up on a waiting list for all expiring domains. It was a flat-rate, first-come-first-serve service where the fees were reasonable but Verisign controlled the whole thing. This would based eliminate The Drop entirely. Companies filed lawsuits and the thing never happened. So basically, registrars got proactive and amended their agreements so that when your domain expires, they can repossess it themselves or sell it as their own. This is what allows Network Solutions, GoDaddy, Tucows, and others to repossess their own domains and use their own services (like Snapnames) to auction them off. An argument can be made that by eliminating the ICANN-mandated redemption grace period, these companies are in violation of their ICANN agreements, but thus far ICANN has been reluctant to take action. It appears ICANN is generally very slow at taking action with anything, so it looks like this sort of practice may become a de-facto standard. The moral of the story is that you should always look to see what registrar the domain you’re after is under and see if they offer exclusive backorder rights to it. Network Solutions does, GoDaddy does, Tucows is starting to, and others may follow suit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-3242156684921402141?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/3242156684921402141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=3242156684921402141' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3242156684921402141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3242156684921402141'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/09/taking-over-expiring-domains.html' title='Taking over expiring domains'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-5776689830560107035</id><published>2009-09-14T14:50:00.002+02:00</published><updated>2009-09-14T14:53:33.749+02:00</updated><title type='text'>Alt+Tab to desktop</title><content type='html'>I wonder why no windows manager or desktop environment implements this. I guess they are too busy copying Microsoft Windows to invent anything original. Anyway, the basic idea is that, instead of having a special Show Desktop button, we would always have the Desktop listed when switching windows or running applications.&lt;br /&gt;&lt;br /&gt;This way you can easily go to Desktop by using keyboard, and not have a special shortcut for that (not to mention that possibility of shortcuts is not something most users are even aware of)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-5776689830560107035?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/5776689830560107035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=5776689830560107035' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5776689830560107035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5776689830560107035'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/09/alttab-to-desktop.html' title='Alt+Tab to desktop'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-3072461548503196957</id><published>2009-08-31T19:54:00.002+02:00</published><updated>2009-08-31T20:00:53.535+02:00</updated><title type='text'>why Blogger engine sucks?</title><content type='html'>I got so frustrated writing blog entries here sometimes. I don't get it: Blogger is used by (presumably) millions of users, yet the most basic things don't work.&lt;br /&gt;&lt;br /&gt;Example 1: Characters &amp;lt; and &amp;gt; do not get transformed to &amp;amp;lt; and &amp;amp;gt; when you switch between the HTML and Compose view. This means that and switching can be fatal to the contents. If you have a piece of C or C++ code with dozen #includes - it's horror.&lt;br /&gt;&lt;br /&gt;Example 2: Shortcuts for Italics and Bold just don't work properly when you backspace. Here, I press Ctrl+b &lt;span style="font-weight:bold;"&gt;now&lt;/span&gt;. Then I delete that word. The indicatior (b letter at top of compose window) shows Bold is on. I press Ctrl+B to turn it off - indicator changes to off, but bold is actually ON. I start typing and bold letters appear.&lt;br /&gt;&lt;br /&gt;I hope this reaches someone in Blogger team and they fix these trivial issues (I won't even mind if they delete this post afterwards when it's done).&lt;br /&gt;&lt;br /&gt;BTW, all this using Firefox 2 and 3 on Linux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-3072461548503196957?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/3072461548503196957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=3072461548503196957' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3072461548503196957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3072461548503196957'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/08/why-blogger-engine-sucks.html' title='why Blogger engine sucks?'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-322196950617851100</id><published>2009-08-31T19:34:00.005+02:00</published><updated>2009-08-31T19:54:31.464+02:00</updated><title type='text'>Slamd64 and Firebird</title><content type='html'>I just installed Slamd64 version 12.2. I know that Slackware -current is 64bit and Slackware 13.0 is out, but out-of-the-box 32bit compatibility of Slamd64 is very tempting, so this is the first 64bit slackware I installed.&lt;br /&gt;&lt;br /&gt;Install went fine, and KDE is running in a matter of seconds. Now, time to compile all the needed stuff for development. Basically, all I need is Firebird, FlameRobin and PHP extension for Firebird (i.e. InterBase).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Compiling Firebird&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You could use the binaries on the website (which I learned later), but AMD64 seemed suspicious (I run Intel Core2Duo CPU), so I decided to compile. I downloaded the .tar.bz2 source package, unpacked it and run:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;./configure --prefix=/opt/firebird&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well, I first ran --prefix=/opt, but that turned out to be a bad idea :(&lt;br /&gt;&lt;br /&gt;Anyway, configure went fine, and then I ran &lt;span style="font-style: italic;"&gt;make -j2&lt;/span&gt; because I have two cores. However, this is not supported as some steps of build process are dependend on each other while that dependency is not listed in the Makefile. Alex Peshkov says this should be fixed for Firebird 3. So, make sure you only run&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;make&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;if you don't want to see any errors. Once build is complete, run:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;make dist&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to create .tar.gz (and .rpm) packages. Just like official ones. Further installation using this packages goes as usual (unpack + ./install.sh).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Compiling FlameRobin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This was the easiest step as everything works the same as on 32bit Slackware. Compile wxWidgets first and then FlameRobin - all as usual.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Compiling PHP extension for Firebird (InterBase)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Using the PHP 5.2.8 source and steps on this link:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.firebirdfaq.org/faq191/"&gt;http://www.firebirdfaq.org/faq191/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;does not get you far because of some bug in PHP 5.2.8. Fix is rather trivial. Before you run &lt;span style="font-style: italic;"&gt;make&lt;/span&gt;, edit the files:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-family:arial;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;/usr/include/php/Zend/zend.h&lt;/span&gt;&lt;br&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;/usr/include/php/main/php.h&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And comment this line:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:verdana;font-size:100%;"  &gt;//#include &amp;lt;unix.h&amp;gt;&lt;/unix.h&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Of course, PHP 5.2.8 &lt;span style="font-weight: bold;"&gt;still has a bug&lt;/span&gt; with decimal numbers, so make sure you align those zeroes in &lt;span style="font-style: italic;"&gt;ibase_query.c&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;php_ibase_udf.c &lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;files.&lt;br /&gt;&lt;br /&gt;After that, run all the steps (phpize, configure, make) and copy &lt;span style="font-style: italic;"&gt;interbase.so&lt;/span&gt; to&lt;br /&gt;&lt;br /&gt;/usr/lib64/php/extensions&lt;br /&gt;&lt;br /&gt;Restart Apache and enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-322196950617851100?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/322196950617851100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=322196950617851100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/322196950617851100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/322196950617851100'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/08/slamd64-and-firebird.html' title='Slamd64 and Firebird'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-2347733666886080978</id><published>2009-08-06T01:28:00.003+02:00</published><updated>2009-08-06T01:49:01.141+02:00</updated><title type='text'>CodeIgniter pagination</title><content type='html'>CI has a nice pagination class, which works nice, but has many shortcomings. It has not been designed with much flexibility in mind, so you might need to roll pagination on your own in the end. What are the problems?&lt;br /&gt;&lt;br /&gt;Let's start with a minor one: when you have 4 pages, you get:&lt;br /&gt;&lt;br /&gt;first(1) prev(1) 2 3 last(4)&lt;br /&gt;&lt;br /&gt;Same link repeats twice. Similar when you navigate to 4th page in the same example.&lt;br /&gt;&lt;br /&gt;Then, there's a problem that you cannot turn some of the "components" off. For example, I don't need PREV and NEXT, just first/last and a few pages in the middle (number of those is also NOT configurable, BTW). If you don't set array members in initialize function, it uses defaul values. Default values for start and end tags are not what the docs say, and some defaults are next to useless like   &lt;br /&gt;&lt;br /&gt;It would be much better if unset stuff defaults to DO NOT DISPLAY. &lt;br /&gt;&lt;br /&gt;The interface for pagination class was desined by some narrow minded developer who only knows one way to do pagination. For example, I do not like pure text links, but would like to use nice rectangles. I managed to get something useful with SPANs and custom CSS rules, however, I had to do some workarounds. For example, all the links use simple and clean A tag without any interface to it. So, in order to have links of different color than rest of the links on the page, one has to add some CSS class to the outer element (create a span that floats to left, for example), and then define CSS rule:&lt;br /&gt;&lt;br /&gt;            'num_tag_open' =&gt; '&lt;span class="pagg"&gt;',&lt;br /&gt;            'num_tag_close' =&gt; '&lt;/span&gt;',&lt;br /&gt;&lt;br /&gt;CSS:&lt;br /&gt;&lt;br /&gt;.pagg a { color: #fcc }&lt;br /&gt;&lt;br /&gt;Need to define all properties to make things look right on the screen is a real PITA.&lt;br /&gt;&lt;br /&gt;Another problem is that it only supports determinate sets. I'd like to be able to have pagination without knowing the end record count. The reason for this is that many DBMS don't perform well with SELECT COUNT(*) FROM table1 WHERE some_complex_query.&lt;br /&gt;&lt;br /&gt;So, I just fetch initial 100-200 records and display them, showing the users that there is "more" with a link to "next" or "next 5 pages". Of course, this would mean that there is no "last" link, which brings us back to the issue that this class only solves a narrow set of problems.&lt;br /&gt;&lt;br /&gt;After completing a first real-world project with it, I get the impression that base stuff in CI is ok, but it hasn't been tested enough in the real world situations. Many features seem to be designed more as a proof of concept than flexible framework designed for real world usage. Poor desing is also shown in Unit Testing which seems to be there just to fill the checkbox in the feature list, and also in ActiveRecord implementation which goes into sillyness of where_not, or_where and whatnot. As if writing select('column1')-&gt;from('table1')-&gt;where_in('id'=&gt;array(10,20)) is much clearer or flexible than get_where('select column1 from table1 where id in (?)', array(10,20)). IMHO, ActiveRecord should stay on the CRUD level.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-2347733666886080978?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/2347733666886080978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=2347733666886080978' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/2347733666886080978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/2347733666886080978'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/08/codeigniter-pagination.html' title='CodeIgniter pagination'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-8179364787911608077</id><published>2009-07-11T21:11:00.003+02:00</published><updated>2009-07-11T21:26:19.978+02:00</updated><title type='text'>CodeIgniter woes</title><content type='html'>I started using CodeIgniter some time ago, and here are the problems I'm having:&lt;br /&gt;&lt;br /&gt;- nuking of $_GET does sound reasonable, but it makes problems when you want to integrate with some other service like RPX for example. I "fixed" this by writing a small php script outside of framework to take the GET request and turn it into URL acceptable by CI&lt;br /&gt;&lt;br /&gt;- The settings for Apache rewrite rule you'll find first is soo wrong. I mean, it is correct, but it creates a hell of a lot of problems when you want to do something outside of the box. Basically, you have to "allow" anything outside of CI (even images, javascript and css) to be accessible. The alternative snippet I found is much better (it basically says: if it's a real file, fetch it, if not, route through CI):&lt;br /&gt;&lt;br /&gt;RewriteEngine on&lt;br /&gt;RewriteCond %{REQUEST_URI} ^system.*&lt;br /&gt;RewriteRule ^(.*)$ /index.php?/$1 [L]&lt;br /&gt;RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;RewriteRule ^(.*)$ index.php?/$1 [L]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;...more coming as I build my first serious CI-powered application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-8179364787911608077?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/8179364787911608077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=8179364787911608077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/8179364787911608077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/8179364787911608077'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/07/codeigniter-woes.html' title='CodeIgniter woes'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-3605198637776839751</id><published>2009-07-03T12:23:00.001+02:00</published><updated>2009-07-03T12:25:43.719+02:00</updated><title type='text'>Staying up to date with slackware-current</title><content type='html'>Here's a nice script I use (I did not write it myself):&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;span style="font-family: courier new;"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# Check slackware-current&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# Where to download from&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# should script it so that the different sources can be listed and&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# selected from the command line&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SOURCE="rsync://slackware.mirrors.tds.net/slackware/slackware64-current"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# Change as necessary&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;OPTIONS="-avzP --delete --delete-after"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;EXCLUDE="--exclude=pasture --exclude=kdei \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;--exclude=zipslack"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;DEST="/home/milanb/arhiva/install/distre/slackware/current64/download/"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;case "$1" in&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;"-c" )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;echo "Checking..."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/usr/bin/rsync $OPTIONS $EXCLUDE --dry-run $SOURCE $DEST&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;"-d" )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;echo "Downloading..."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/usr/bin/rsync $OPTIONS $EXCLUDE $SOURCE $DEST&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;* )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;echo "Usage: `basename $0` {-c|-d}"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;echo -e "\t-c : Check for updates"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;echo -e "\t-d : Download updates"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;esac&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;######################################################&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-3605198637776839751?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/3605198637776839751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=3605198637776839751' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3605198637776839751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3605198637776839751'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/07/staying-up-to-date-with-slackware.html' title='Staying up to date with slackware-current'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-408570419652933373</id><published>2009-06-25T11:24:00.005+02:00</published><updated>2009-07-03T12:23:16.454+02:00</updated><title type='text'>Setting up wireless on Slackware</title><content type='html'>Setting up wireless on a public unrestricted hotspot has always been mystery to me. I didn't really need it often, and when I did I did not have Internet access to google a way to do it. Well, today I was with a friend so I used his laptop to find out how to set it up.&lt;br /&gt;&lt;br /&gt;It's really simple once you do it. What's important:&lt;br /&gt;&lt;br /&gt;1. start up wireless card&lt;br /&gt;2. scan for networks&lt;br /&gt;3. pick a network and connect to it&lt;br /&gt;&lt;br /&gt;Starting up a wireless card might require that you load a kernel module manually. Some modules have option to turn on the LED indicator:&lt;br /&gt;&lt;br /&gt;# /sbin/modprobe iwl3945&lt;br /&gt;&lt;br /&gt;Once you start it up, open the Wireless section in KDE Control Center, and click "Activate" button.&lt;br /&gt;&lt;br /&gt;Now, run /sbin/ifconfig to see all the interfaces. You should see something like wlan0. Then, use this interface name to scan the area for networks:&lt;br /&gt;&lt;br /&gt;iwlist wlan0 scan&lt;br /&gt;&lt;br /&gt;As a result, you'll get each wireless network and it's ESSID. Let's assume ESSID is MyHotSpot and connect to it:&lt;br /&gt;&lt;br /&gt;iwconfig wlan0 essid MyHotSpot&lt;br /&gt;&lt;br /&gt;In case you need to supply username and password, look into wpa_supplicant and it's config file (I haven't tried this). And start wpa_supplicant:&lt;br /&gt;&lt;br /&gt;wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf &amp;amp;&lt;br /&gt;&lt;br /&gt;Once you're done, use dhcpcd to get an IP address, default route, and DNS server information:&lt;br /&gt;&lt;br /&gt;dhcpcd wlan0&lt;br /&gt;&lt;br /&gt;...and that's it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update: &lt;/span&gt;there is a very nice and simple to use tool that automates all this and wraps it into a GUI. It's called wicd, and you can find it in /extra in the newest Slackware, or fetch it from the project page and compile it yourself (no special dependencies needed):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wicd.sourceforge.net/"&gt;http://wicd.sourceforge.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-408570419652933373?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/408570419652933373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=408570419652933373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/408570419652933373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/408570419652933373'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/06/setting-up-wireless-on-slackware.html' title='Setting up wireless on Slackware'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-3565807469443201826</id><published>2009-06-18T18:05:00.002+02:00</published><updated>2009-06-18T18:10:50.550+02:00</updated><title type='text'>X11 forwarding on Slackware</title><content type='html'>Many times I wanted X11 forwarding to be as simple as&lt;span style="font-style: italic;"&gt; ssh -x host; run program.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Until today, that never worked for me. But today I was in the mood to try to make it work somehow.&lt;br /&gt;&lt;br /&gt;It turns out, it can be made to work that way, and it's super easy. The thing is that X11 forwarding via SSH is disabled by default (which is very reasonable setting, BTW). To enable it, just open /etc/ssh/sshd_config on the remote host (where you want to run the applications) and make sure it contains the following lines (uncommented):&lt;br /&gt;&lt;br /&gt;&lt;pre class="bbcodeblock" dir="ltr" style="border: 1px inset ; margin: 0px -99999px 0px 0px; padding: 3px; overflow: auto; width: 98%; height: 82px; text-align: left;"&gt;AllowTcpForwarding yes&lt;br /&gt;X11Forwarding yes&lt;br /&gt;X11DisplayOffset 10&lt;br /&gt;X11UseLocalhost yes&lt;/pre&gt;&lt;br /&gt;Once you save the file, restart sshd to pick up the new config:&lt;br /&gt;&lt;br /&gt;&lt;pre class="bbcodeblock" dir="ltr" style="border: 1px inset ; margin: 0px -99999px 0px 0px; padding: 3px; overflow: auto; width: 98%; height: 34px; text-align: left;"&gt;/etc/rc.d/rc.sshd restart&lt;/pre&gt;&lt;br /&gt;And you're done. On your local host, just run ssh with -X or -Y parameter. The difference is this:&lt;br /&gt;&lt;br /&gt;-X      Enables X11 forwarding.&lt;br /&gt;-Y Enables trusted X11 forwarding. Trusted X11 forwardings are not subjected to the X11 SECURITY extension controls.&lt;br /&gt;&lt;br /&gt;Gosh, think about all the times I've done things in much more frustrating way (via VNC for example).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-3565807469443201826?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/3565807469443201826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=3565807469443201826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3565807469443201826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3565807469443201826'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/06/x11-forwarding-on-slackware.html' title='X11 forwarding on Slackware'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-3369830291689639734</id><published>2009-06-12T13:43:00.004+02:00</published><updated>2009-06-12T14:09:46.806+02:00</updated><title type='text'>Firefox 3 printing on Linux</title><content type='html'>Printing from Firefox has been greatly improved in version 3, but there are still some minor quicks. The most annoying one is that the print dialog does not remember settings.&lt;br /&gt;&lt;br /&gt;And some of the settings have annoying defaults. Firefox developers should really know that people are not just using web browser to browse the Internet and occasionally print some web pages. Developers all over the world are developing web applications for both Internet and intranet and printing is very important.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ztwz8teIbCk/SjJE1Mctq-I/AAAAAAAAATE/9ExMC34FGkM/s1600-h/firefoxprint.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 311px;" src="http://2.bp.blogspot.com/_ztwz8teIbCk/SjJE1Mctq-I/AAAAAAAAATE/9ExMC34FGkM/s400/firefoxprint.png" alt="" id="BLOGGER_PHOTO_ID_5346411388307614690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The main problem I have, is that Header and Footer settings are not remembered. So, for &lt;span style="font-weight: bold;"&gt;each&lt;/span&gt; page I want to print, I have to go to that tab, set &lt;span style="font-weight: bold;"&gt;all six&lt;/span&gt; fields to "--blank--" and then print. &lt;span style="font-weight: bold;"&gt;Each time &lt;/span&gt;I want to print &lt;span style="font-weight: bold;"&gt;anything&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I mean, how hard could it be to save those settings somewhere in ~/.mozilla/firefox and add a nice "Reset" button for people how change the settings so much they get lost.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-3369830291689639734?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/3369830291689639734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=3369830291689639734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3369830291689639734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3369830291689639734'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/06/firefox-3-printing-on-linux.html' title='Firefox 3 printing on Linux'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ztwz8teIbCk/SjJE1Mctq-I/AAAAAAAAATE/9ExMC34FGkM/s72-c/firefoxprint.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-2391547836455781406</id><published>2009-04-08T19:23:00.002+02:00</published><updated>2009-04-08T19:26:14.659+02:00</updated><title type='text'>Local search engines to try</title><content type='html'>Sphinder: PHP + MySQL backend for storage&lt;br /&gt;http://www.sphider.eu/&lt;br /&gt;&lt;br /&gt;Xapian: Perl + any database&lt;br /&gt;http://xapian.org/&lt;br /&gt;&lt;br /&gt;Apache Solr: Java/Tomcat for web interface, web layer on Lucene&lt;br /&gt;http://lucene.apache.org/solr/&lt;br /&gt;http://www.ibm.com/developerworks/library/os-php-apachesolr/index.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-2391547836455781406?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/2391547836455781406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=2391547836455781406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/2391547836455781406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/2391547836455781406'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/04/local-search-engines-to-try.html' title='Local search engines to try'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-3790835735430327765</id><published>2009-02-21T22:46:00.002+01:00</published><updated>2009-02-21T23:00:48.729+01:00</updated><title type='text'>Setting up Git offline work via USB memory stick</title><content type='html'>I have a home laptop and an office desktop computer. When I leave office, everything is shut down, so there is no way to access the git repository online. Since I didn't want to drag my notebook to work everyday, I got the idea to have a git repository on my USB memory stick.&lt;br /&gt;&lt;br /&gt;One of the requirements was that it is a bare repository so it does not take too much space. I had a lot of trouble figuring out this one, and finally I got the right way when I understood &lt;span style="font-weight:bold;"&gt;how git is meant to be used&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I created a big file on my FAT filesystem, and formatted in in ext2 with something like:&lt;br /&gt;&lt;br /&gt;dd if=/dev/null of=/mnt/stick/repos.ext2 bs=1024 count=500000&lt;br /&gt;mkfs.ext2 /mnt/stick/repos.ext2&lt;br /&gt;&lt;br /&gt;Then I mounted it and created a bare copy of my repos:&lt;br /&gt;&lt;br /&gt;mount -o loop /mnt/stick/repos /mnt/repos&lt;br /&gt;cd /mnt/repos&lt;br /&gt;git clone /home/milanb/repos repos&lt;br /&gt;&lt;br /&gt;When I go home, I repeat the mount on my laptop and pull the changes into local development repository:&lt;br /&gt;&lt;br /&gt;mount -o loop /mnt/stick/repos /mnt/repos&lt;br /&gt;cd ~/devel/repos&lt;br /&gt;git pull /mnt/repos/repos master&lt;br /&gt;&lt;br /&gt;After I commit the changes, just push it back to stick:&lt;br /&gt;&lt;br /&gt;git push /mnt/repos/repos&lt;br /&gt;&lt;br /&gt;Now, the tricky part, when I go back to the office, I was (stupid) to try to push the changes from the stick to local repository. There are ways to make this work, but quite awkward and error prone. Git is not meant to be used that way. The rules are simple, if you do everything right:&lt;br /&gt;&lt;br /&gt;- you should never need to pull/fetch into bare repos&lt;br /&gt;- you should never need to push into non-bare repos&lt;br /&gt;&lt;br /&gt;So, what I really needed to do is just to reverse the logic and pull changes from stick into my local repository:&lt;br /&gt;&lt;br /&gt;git pull /mnt/repos/repos master&lt;br /&gt;&lt;br /&gt;It merges (unless there's confict) and everything is fine. To prevent from typing all those long paths, you can define aliases (remotes) via git-remote command:&lt;br /&gt;&lt;br /&gt;git remote add /mnt/repos/repos stick&lt;br /&gt;&lt;br /&gt;And later just do these to pull and push:&lt;br /&gt;&lt;br /&gt;git pull stick master&lt;br /&gt;git push stick&lt;br /&gt;&lt;br /&gt;All that time I used SVN and CVS just got that centralized way of thinking into me. Finally I'm free ;) &lt;br /&gt;&lt;br /&gt;All I can say is: Git simply rocks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-3790835735430327765?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/3790835735430327765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=3790835735430327765' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3790835735430327765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3790835735430327765'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/02/setting-up-git-offline-work-via-usb.html' title='Setting up Git offline work via USB memory stick'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-123360739894100223</id><published>2009-02-12T22:54:00.002+01:00</published><updated>2009-02-12T23:12:47.031+01:00</updated><title type='text'>Git statistics</title><content type='html'>Today I was looking for some tool to analyze my Git repository and show some nice statistics. Pie charts and bars would also be nice, but simple tables with stats also do the job. I'm used to seeing many good tools for the same task against CVS and SVN repositories, but Git is still young so my hopes weren't high.&lt;br /&gt;&lt;br /&gt;Google search yields this one:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/gitstat"&gt;http://sourceforge.net/projects/gitstat&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I used GitStat version 0.5. Now, I am an experienced developer and computer user, but the list of dependencies simply sucks. I mean, such simple tool to need all this is ridiculous:&lt;br /&gt;&lt;br /&gt;* PHP 4.3.3 or later&lt;br /&gt;* GD 1.8.x or GD 2.15 or higher&lt;br /&gt;* Mysql 3.x or later&lt;br /&gt;* Perl, Perl-DBD-MySQL, Perl-DBI&lt;br /&gt;* Perl MIME:Lite Module (Lite.pm)  copy to .../path_to_gitstat/gstat_pl/lib&lt;br /&gt;* GeSHi( Generic Syntax Highlighter )&lt;br /&gt;* JpGraph 1.21 or JpGraph 2.2(for PHP5)&lt;br /&gt;&lt;br /&gt;Both Perl and PHP? Copy stuff around manually? (why isn't it in the package?)&lt;br /&gt;&lt;br /&gt;Ok, I can understand MySQL for caching, but you still need to fetch changes from Git repos, so what's the point? I bet it doesn't do deltas and even if it does it probably does not handle rebase. Or maybe someone would prove me wrong. Wouldn't something like SQLite be more appropriate for a tool like this? &lt;br /&gt;&lt;br /&gt;Anyway, this seemed too much hassle and I really didn't want the stats THAT bad, so I almost gave up... but then I noticed another tool, with a subtle difference in the name. It almost slipped because of that, so I hope authors of either of these two are going to invent some cool name for their project and create a distinction. Anyway, the other tool is named &lt;span style="font-weight: bold;"&gt;GitStats&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gitstats.sourceforge.net/"&gt;http://gitstats.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's a simple and dead-easy to use Python script. What can I say: It just simply works. The only dependency (beside obious Git and Python) is GNU Plot, which is installed by default on most Linux systems anyway.&lt;br /&gt;&lt;br /&gt;It created the stats for my 1.5 years old, 1.5 million line of code repository in about 3 minutes. That was quite fine for me. No pie charts though, but maybe there will be some in future versions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-123360739894100223?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/123360739894100223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=123360739894100223' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/123360739894100223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/123360739894100223'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/02/git-statistics.html' title='Git statistics'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-1655653046669961622</id><published>2009-01-30T14:07:00.001+01:00</published><updated>2009-01-30T14:08:12.297+01:00</updated><title type='text'>Lookup tables in MS Excel and OpenOffice</title><content type='html'>vlookup function solves the problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-1655653046669961622?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/1655653046669961622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=1655653046669961622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1655653046669961622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1655653046669961622'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2009/01/lookup-tables-in-ms-excel-and.html' title='Lookup tables in MS Excel and OpenOffice'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-1952057958678997350</id><published>2008-10-26T01:12:00.002+02:00</published><updated>2008-10-26T01:19:35.318+02:00</updated><title type='text'>PHP destructor vs shutdown function</title><content type='html'>I found an interesting problem. In some of my PHP classes I needed to ensure that destructor is called, even if user aborts the execution. Well, I learned that user cannot actually abort it since clicking the Stop button in your browser does not stop PHP, it keeps going until either the script finishes (destructor gets called) or PHP timeout is reached (destructor is not called).&lt;br /&gt;&lt;br /&gt;I got worried about this second case. After some time investigating, reading comments in PHP online manual (that's why it's better to use online than offline manual for PHP) I got to the following solution:&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#eee"&gt;&lt;br /&gt;    public function __construct($canvasWidth, $canvasHeight, $tickness)&lt;br /&gt;    {&lt;br /&gt;        ...&lt;br /&gt;        register_shutdown_function(array(&amp;$this, "shutdown"));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public function shutdown()&lt;br /&gt;    {&lt;br /&gt;        ...do the stuff you would do in destructor&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The only problem with this could be if your object gets destroyed before script is complete. So, make sure you either implement some safeguard code, or ensure object's lifetime is 'till the end of script.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-1952057958678997350?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/1952057958678997350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=1952057958678997350' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1952057958678997350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1952057958678997350'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/10/php-destructor-vs-shutdown-function.html' title='PHP destructor vs shutdown function'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-1532267434890600669</id><published>2008-10-24T03:38:00.002+02:00</published><updated>2008-10-24T03:44:22.455+02:00</updated><title type='text'>How to lock KDE session when power button is pressed?</title><content type='html'>I have a kid that likes to play around my laptop while I work on it and sometimes presses the power button. Default setup on Slackware 12.1 is that laptop starts the shutdown sequence right away. No need to mention how frustrating can that be if you're in middle of something.&lt;br /&gt;&lt;br /&gt;I decided to search for a way to prevent this from happening and have my screen lock instead. I searched a little bit, and here's a nice way to do it.&lt;br /&gt;&lt;br /&gt;To lock out KDE user session from the command line, you can use this command:&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#eeeeee"&gt;&lt;br /&gt;/usr/bin/dcop --all-users --all-sessions kdesktop KScreensaverIface lock&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, we need to make sure this gets called when power button is pressed. Make sure that 'button' module of your kernel is loaded (you can check with 'lsmod' and load it with 'modprobe' if needed), and then go and edit this file:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;/etc/acpi/acpi_handler.sh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here's what I have in it now:&lt;br /&gt;&lt;pre style="background-color:#eeeeee"&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;# Default acpi script that takes an entry for all actions&lt;br /&gt;&lt;br /&gt;IFS=${IFS}/&lt;br /&gt;set $@&lt;br /&gt;&lt;br /&gt;case "$1" in&lt;br /&gt;  button)&lt;br /&gt;    case "$2" in&lt;br /&gt;      power) /usr/bin/dcop --all-users --all-sessions kdesktop KScreensaverIface lock&lt;br /&gt;         ;;&lt;br /&gt;      *) logger "ACPI action $2 is not defined"&lt;br /&gt;         ;;&lt;br /&gt;    esac&lt;br /&gt;    ;;&lt;br /&gt;  *)&lt;br /&gt;    logger "ACPI group $1 / action $2 is not defined"&lt;br /&gt;    ;;&lt;br /&gt;esac&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And enjoy :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-1532267434890600669?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/1532267434890600669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=1532267434890600669' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1532267434890600669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1532267434890600669'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/10/how-to-lock-kde-session-when-power.html' title='How to lock KDE session when power button is pressed?'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-7977783482638314300</id><published>2008-10-09T23:13:00.002+02:00</published><updated>2008-10-09T23:34:50.210+02:00</updated><title type='text'>Regexxer on Slackware 12.1</title><content type='html'>It seemed easy. You just need: &lt;span style="font-weight:bold;"&gt;libsigc++&lt;/span&gt; 2, &lt;span style="font-weight:bold;"&gt;gtkmm&lt;/span&gt; 2, &lt;span style="font-weight:bold;"&gt;libglademm&lt;/span&gt; 2.4.0, &lt;span style="font-weight:bold;"&gt;gconfmm&lt;/span&gt; 2.6.1 and &lt;span style="font-weight:bold;"&gt;PCRE&lt;/span&gt;. Some of those I already had, so I only needed libglademm and gconfmm. &lt;br /&gt;&lt;br /&gt;The first one installed without problems: single tarball, &lt;br /&gt;&lt;span style="font-style:italic;"&gt;$ configure --prefix=/usr&lt;/span&gt; &lt;br /&gt;&lt;span style="font-style:italic;"&gt;$ make&lt;/span&gt; &lt;br /&gt;&lt;span style="font-style:italic;"&gt;# make install&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Fine!&lt;br /&gt;&lt;br /&gt;The other one (&lt;span style="font-weight:bold;"&gt;gconfmm&lt;/span&gt;)... well, it turns out you need &lt;span style="font-weight:bold;"&gt;gconf&lt;/span&gt; for that, I did not have it, so hop to the Gnome website. &lt;br /&gt;&lt;br /&gt;Done? No, not yet, &lt;span style="font-weight:bold;"&gt;gconf&lt;/span&gt; requires &lt;span style="font-weight:bold;"&gt;ORBit2&lt;/span&gt;, so let go for that one as well. &lt;br /&gt;&lt;br /&gt;Now, after running &lt;span style="font-style:italic;"&gt;configure&lt;/span&gt;, I started &lt;span style="font-style:italic;"&gt;make&lt;/span&gt;. Since I have dual-core CPU I used &lt;span style="font-style:italic;"&gt;make -j2&lt;/span&gt; but it seems I found some &lt;span style="font-weight:bold;"&gt;bug in make&lt;/span&gt; (!?) since it got stuck for 10+ minutes at one single point of compiling, with both CPU cores at 100%. So, I killed it with Ctrl+C and run just &lt;span style="font-style:italic;"&gt;make&lt;/span&gt;. That went fine and finished in about 2 minutes.&lt;br /&gt;&lt;br /&gt;By some magic, I managed to pick the compatible versions, here they are:&lt;br /&gt;&lt;br /&gt;regexxer-0.9&lt;br /&gt;libglademm-2.6.5&lt;br /&gt;ORBit2-2.13.3&lt;br /&gt;GConf-2.21.90&lt;br /&gt;gconfmm-2.24.0&lt;br /&gt;&lt;br /&gt;I created Slackware .tgz packages for all this, download is here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.guacosoft.com/workrave"&gt;http://www.guacosoft.com/workrave&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-7977783482638314300?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/7977783482638314300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=7977783482638314300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/7977783482638314300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/7977783482638314300'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/10/regexxer-on-slackware-121.html' title='Regexxer on Slackware 12.1'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-8871928721741008306</id><published>2008-09-30T10:04:00.001+02:00</published><updated>2008-09-30T10:05:47.815+02:00</updated><title type='text'>FBCon08 Sparky Auction</title><content type='html'>Here's the video of the part of Mad Auction, showing how well Sparky went...&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/47wHEXphY2U"&gt; &lt;/param&gt; &lt;embed src="http://www.youtube.com/v/47wHEXphY2U" type="application/x-shockwave-flash" width="425" height="350"&gt; &lt;/embed&gt; &lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-8871928721741008306?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/8871928721741008306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=8871928721741008306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/8871928721741008306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/8871928721741008306'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/09/fbcon08-sparky-auction.html' title='FBCon08 Sparky Auction'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-2058269043917888340</id><published>2008-09-29T22:00:00.003+02:00</published><updated>2008-09-30T13:17:56.855+02:00</updated><title type='text'>Firebird Conference 2008</title><content type='html'>The conference was held in Bergamo, Italy. Here are some pictures from the city and the event:&lt;br /&gt;&lt;br /&gt;&lt;table style="width:194px;"&gt;&lt;tr&gt;&lt;td align="center" style="height:194px;background:url(http://picasaweb.google.com/f/img/transparent_album_background.gif) no-repeat left"&gt;&lt;a href="http://picasaweb.google.com/milan.babuskov/FBCon08Bergamo?authkey=MXJcXUUn_uI&amp;pli=1#"&gt;&lt;img src="http://lh4.ggpht.com/milan.babuskov/SOEsKNVD2XE/AAAAAAAAAP8/efW2d_HmtGc/s160-c/FBCon08Bergamo.jpg" width="160" height="160" style="margin:1px 0 0 4px;"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align:center;font-family:arial,sans-serif;font-size:11px"&gt;&lt;a href="http://picasaweb.google.com/milan.babuskov/FBCon08Bergamo?authkey=MXJcXUUn_uI&amp;pli=1#" style="color:#4D4D4D;font-weight:bold;text-decoration:none;"&gt;FBCon08 Bergamo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-2058269043917888340?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/2058269043917888340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=2058269043917888340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/2058269043917888340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/2058269043917888340'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/09/firebird-conference-2008.html' title='Firebird Conference 2008'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/milan.babuskov/SOEsKNVD2XE/AAAAAAAAAP8/efW2d_HmtGc/s72-c/FBCon08Bergamo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-7157931816346691307</id><published>2008-09-21T23:50:00.001+02:00</published><updated>2008-09-21T23:52:23.757+02:00</updated><title type='text'>Memory usage of kernel modules</title><content type='html'>Today I got a reply on that question on the newsgroup I read, and it's really simple:&lt;br /&gt;&lt;br /&gt;# slabtop&lt;br /&gt;# cat /etc/slabinfo&lt;br /&gt;&lt;br /&gt;I thought just to note it down here, so I don't forget.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-7157931816346691307?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/7157931816346691307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=7157931816346691307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/7157931816346691307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/7157931816346691307'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/09/memory-usage-of-kernel-modules.html' title='Memory usage of kernel modules'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-1096165322889540145</id><published>2008-09-18T16:00:00.002+02:00</published><updated>2008-09-18T16:03:21.137+02:00</updated><title type='text'>WinGit broken when merging</title><content type='html'>Problem is that git-var does not work when you type 'git var', but only when you type 'git-var'. So, the merge script bails out with message.&lt;br /&gt;&lt;br /&gt;Fix: edit c:\Program Files\Git\bin\git-merge and change all 'git var' to 'git-var' and you're done.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;WinGit version 0.2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-1096165322889540145?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/1096165322889540145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=1096165322889540145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1096165322889540145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1096165322889540145'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/09/wingit-broken-when-merging.html' title='WinGit broken when merging'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-577705815611976147</id><published>2008-09-18T01:02:00.002+02:00</published><updated>2008-09-18T01:12:39.236+02:00</updated><title type='text'>Stack Overflow</title><content type='html'>This is the first Web 2.0 application I would dare to call amazing. In case you've been on the moon in the past few days, I'm talking about &lt;a href="http://www.stackoverflow.com/"&gt;www.stackoverflow.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Idea is probably nothing new, but the way it is done is brilliant. What is it all about? Well, suppose you are a programmer like myself, and you run into some minor problem you cannot manage to solve using the &lt;span style="font-style: italic;"&gt;4 proven techniques of solving programmer's problems:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- look into manual&lt;br /&gt;- experiment&lt;br /&gt;- google&lt;br /&gt;- try to restart&lt;br /&gt;&lt;br /&gt;I just made this up, but I like it :)&lt;br /&gt;&lt;br /&gt;Anyway, if you don't know how to solve it, the last resource is to ask a friend or colleague who might know. But, with StackOverflow, you get access to thousands programmers in the world, and some of them surely know an answer to your problem. And, since website is live with questions and answers all the time, you'll get the answer really soon. A typical use case for me:&lt;br /&gt;&lt;br /&gt;- have a problem&lt;br /&gt;- go to SO and post a question&lt;br /&gt;- while I wait for the answers, I browse the existing questions and reply, vote, etc.&lt;br /&gt;- I check back every once in a while to find the answer and test it right away in my code&lt;br /&gt;- b.e.a.u.t.i.f.u.l.&lt;br /&gt;&lt;br /&gt;This works simply because, while waiting for an answer, I managed to send replies to 5-10 other people. And once you get a critical mass, it's a ball that keeps rolling. Simply because you know &lt;span style="font-weight: bold;"&gt;you will get answers there&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;And, of course, there's the whole rating, ranking and reputation (RRR?) system that gives you a warm feeling that while contributing to the general cause, you are building your image.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-577705815611976147?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/577705815611976147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=577705815611976147' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/577705815611976147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/577705815611976147'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/09/stack-overflow.html' title='Stack Overflow'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-2368607091264830722</id><published>2008-09-17T04:13:00.002+02:00</published><updated>2008-09-17T04:16:13.824+02:00</updated><title type='text'>Git broken in Slackware 12.1</title><content type='html'>Actually, it works fine if you only do Git stuff. However, I tried to pull my Subversion repository using git-svn clone. And this is what I got:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Can't locate Error.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/5.8.8/i486-linux-thread-multi /usr/lib/perl5/5.8.8 /usr/lib/perl5/site_perl/5.8.8/i486-linux-thread-multi /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i486-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl .) at /usr/lib/perl5/vendor_perl/5.8.8/Git.pm line 93.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;BEGIN failed--compilation aborted at /usr/lib/perl5/vendor_perl/5.8.8/Git.pm line 93.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Compilation failed in require at /usr/bin/git-svn line 45.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;BEGIN failed--compilation aborted at /usr/bin/git-svn line 45.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nice. :(&lt;br /&gt;&lt;br /&gt;Trying to find Error.pm and install it turned out to be a nightmare - and I decided to wake up before spending more than 2+ hours trying to make this work. I'll just take the current state of SVN repository and import that into Git as a starting point... losing a year's worth of history.&lt;br /&gt;&lt;br /&gt;Nevermind, life goes on. I hope Pat will fix this in next Slackware release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-2368607091264830722?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/2368607091264830722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=2368607091264830722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/2368607091264830722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/2368607091264830722'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/09/git-broken-in-slackware-121.html' title='Git broken in Slackware 12.1'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-2296937032453301077</id><published>2008-09-17T00:24:00.008+02:00</published><updated>2008-09-17T00:48:19.857+02:00</updated><title type='text'>VirtualBox review</title><content type='html'>I'm not using virtualization that much (every once in a while to test some software on different platforms), but I was a big fan of VMWare. Although some of it's components are a PITA to set up on Linux, it still works much better than QEMU (yes, with all the kernel drivers and stuff) and it doesn't require me to recompile my kernel like Xen.&lt;br /&gt;&lt;br /&gt;However, there's a new kid on the block: VirtualBox. At first it didn't promise much, but that was only until I installed it...&lt;br /&gt;&lt;br /&gt;Now, this is what I call &lt;span style="font-weight: bold;"&gt;USER FRIENDLY&lt;/span&gt; application. While I'm sure VMWare is great on Windows, on Linux its setup simply sux (in case you wish to only use freeware stuff). To get more to the point, VMPlayer and server tools are free. So, in order to use it like that, you can for example use QEMU's tool to create a blank .vmdk file and then run VMPlayer to install OS in it. Also, you need to answer a lot of useless questions during installation, and you need to extract host-tools (or whatever is the exact name, I forgot) from the server .iso file. But, that's not the main problem. First main problem is creating and editing .vmx file (by reading the instructions from the Internet?). Second main problem is creating the shared folders (i.e. a directory shared between guest and host OS). And the third main problem is switching between real CD/DVD ROM device and some .iso file (by editing .vmx file? Come on).&lt;br /&gt;&lt;br /&gt;VirtualBox solves &lt;span style="font-weight: bold;"&gt;all&lt;/span&gt; these problems perfectly. Install is dead-simple. Creating a new image is only a few clicks in GUI (yes, even I'm a 'console' guy, I like slick GUI that makes stupid things - stupidly easy to do). Adding host extensions is &lt;span style="font-weight: bold;"&gt;a single click in the menu!&lt;/span&gt; Adding CD/DVD device or an ISO image is also dead-simple. And this brings me to shared folders. It is not hard to add one, but letting the guest OS know about it is not &lt;span style="font-style: italic;"&gt;that&lt;/span&gt; easy. I had to look into manual for that one, and guess what: &lt;span style="font-weight: bold;"&gt;VirtualBox has one of the best application manuals I ever read.&lt;/span&gt; It's clear, concise and right to the point. It does not try to teach you how to turn on the computer like most of the 'generic' manuals out there, nor it tells you what's on the screen (we're not blind!). It gives the information a regular user would need, questions that might actually get asked.&lt;br /&gt;&lt;br /&gt;Now, as I wrote, I'm not a hard-core VM user, so it might lack some advanced features I don't use. But, for a simple &lt;span style="font-style: italic;"&gt;"test how my application works on this or that operating system"&lt;/span&gt;&lt;span&gt; type of job&lt;/span&gt;, VirtualBox is perfect. IMHO, it's the best VM product for the Linux Desktop.&lt;br /&gt;&lt;br /&gt;Thank you Sun, for making this gem open source.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-2296937032453301077?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/2296937032453301077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=2296937032453301077' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/2296937032453301077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/2296937032453301077'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/09/virtualbox.html' title='VirtualBox review'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-6986704418998665753</id><published>2008-09-16T23:55:00.002+02:00</published><updated>2008-09-17T00:15:31.083+02:00</updated><title type='text'>wxGrid with virtual storage and multirow or multicolumn cells</title><content type='html'>I'm working on a project that uses &lt;span style="font-weight: bold;"&gt;wxWidgets&lt;/span&gt; as a GUI library. In it, I have a grid (&lt;span style="font-weight: bold;"&gt;wxGrid&lt;/span&gt; class) that has some of the cells that span multiple columns. Now, it's very simple to make it work when you have a regular &lt;span style="font-weight: bold;"&gt;wxGrid&lt;/span&gt;. But, when you use virtual storage, you need to go through some steps to make sure multi-column span is done right.&lt;br /&gt;&lt;br /&gt;There is no documentation on how to do this, so I first googled, and failing to find the explanation like the one I'm about to write now, I experimented. Finally, when some things just didn't work right, I had to dig into the wxGrid code to find out what is the correct way to do it.&lt;br /&gt;&lt;br /&gt;If you ever used virtual grid, you know that you need to have a class that derives from &lt;span style="font-weight: bold;"&gt;wxGridTableBase&lt;/span&gt;. I have it, and in my class I override the function GetAttr to get various effects at runtime (saving both on memory and speed). In this function you can set the cell attributes (color, font style, etc.) by reading the info from your own virtual storage (this can be very useful if you want, say, negative numbers to be red). Anyway, in this class you use an object of class &lt;span style="font-weight: bold;"&gt;wxGridCellAttr&lt;/span&gt;, set its attributes and return pointer to it. Make sure you use &lt;span style="font-style: italic; color: rgb(51, 0, 153);"&gt;cellAttriM-&gt;IncRef();&lt;/span&gt; before exiting, since the caller will call &lt;span style="font-style: italic; color: rgb(51, 0, 153);"&gt;DecRef()&lt;/span&gt; after using the info to render the cell on screen.&lt;br /&gt;&lt;br /&gt;Now, on to the cells that span multiple columns or rows. To create a cell like that, you need to set the attribute for that cell, but also for all cells it 'covers'. All this is done via &lt;span style="font-style: italic; color: rgb(51, 0, 153);"&gt;SetSize()&lt;/span&gt; function on &lt;span style="font-weight: bold;"&gt;wxGridCellAttr&lt;/span&gt; object.&lt;br /&gt;&lt;br /&gt;Let's take for example a cell that spans one column and two rows: a cell at coordinates (3,5). This means that cell at coordinate (3,6) would be covered by this. So, for the cell at (3,5) you need to use:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 0, 153);"&gt;cellAttr-&gt;SetSize(2, 1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and for the cell at (3,6), you need to use:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 0, 153);"&gt;cellAttr-&gt;SetSize(-1, 0);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This -1 and 0 is crucial for selection and cursor movement to work correctly. If your cell spans even more cells, you need to SetSize for all of them. For example, if the cell in above example would span 3 rows, the row at (3,7) would need to use:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 0, 153);"&gt;cellAttr-&gt;SetSize(-2, 0);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;etc.&lt;br /&gt;&lt;br /&gt;Hopefully, something like this will be added to wx manual one day. Until that happens, read my blog ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-6986704418998665753?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/6986704418998665753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=6986704418998665753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/6986704418998665753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/6986704418998665753'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/09/wxgrid-with-virtual-storage-and.html' title='wxGrid with virtual storage and multirow or multicolumn cells'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-8306757342663195885</id><published>2008-07-22T22:21:00.002+02:00</published><updated>2008-07-22T22:29:08.727+02:00</updated><title type='text'>Workrave on Slackware 12.1</title><content type='html'>New version of Slackware, and need to compile Workrave from sources again (package I made for 12.0 does not work due to a newer Gtk version). After a lot of experimenting, here are the versions that work together:&lt;br /&gt;&lt;br /&gt;# cairomm 1.2.2&lt;br /&gt;# gdome2 0.8.1&lt;br /&gt;# glibmm 2.14.2&lt;br /&gt;# gnet 2.0.8&lt;br /&gt;# gtkmm 2.12.7&lt;br /&gt;# libsigc++ 1.2.7&lt;br /&gt;# libsigc++ 2.0.18&lt;br /&gt;&lt;br /&gt;The end result is working Workrave 1.8.5. This time I compiled everything with KDE detection enabled, so session management and locking works fine. &lt;br /&gt;&lt;br /&gt;If you don't have the nerve or time to compile it yourself, you can download all the packages from here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.guacosoft.com/workrave/"&gt;http://www.guacosoft.com/workrave/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you didn't already do it for some other reason, you need to install libsigc++ 2.0.18 package from linuxpackages.net:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.linuxpackages.net/download.php?id=11527"&gt;http://www.linuxpackages.net/download.php?id=11527&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Until the next version of Slackware... enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-8306757342663195885?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/8306757342663195885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=8306757342663195885' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/8306757342663195885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/8306757342663195885'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/07/workrave-on-slackware-121.html' title='Workrave on Slackware 12.1'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-5133962787079964484</id><published>2008-05-23T23:06:00.002+02:00</published><updated>2008-05-23T23:18:55.083+02:00</updated><title type='text'>VLC on Slackware 12.1</title><content type='html'>Some time ago I had a lot of problems viewing some H.264 or x264 files. Apparently, my favorite video player, mplayer does not support the complete H264 specification, so it has problems with some of the files out there (reads in the length wrong so you cannot move to, say, middle of the file; audio and video goes out of sync, etc.)&lt;br /&gt;&lt;br /&gt;So I turned to other solutions. Xine fall flat on face as well, and although ffmpeg plays it fine it doesn't have fast forward/rewind and fullscreen option that is actually usable.&lt;br /&gt;&lt;br /&gt;The thing that worked out is VLC, which I first had to confirm on Windows, since it was much easier to set it up there. Making it work properly on Slackware was not easy. After having problems with prebuilt packages, I decided to roll my own.&lt;br /&gt;&lt;br /&gt;I do a lot of wxWidgets development myself, so I used an already built wx version 2.8.7. VLC compiled, but crashed at startup (I got segmentation fault with vlc, wxvlc or svlc). I looked at the website, and it says wx 2.6.3. That one is buggy unless you patch it (patch is at wx website), so I first tried with 'safe' 2.6.2 which has proven to be rock solid in the past. However, 2.6.2 doesn't compile with Slack 12.1's default GCC 4.2.3, so I went for wx 2.6.4, which turned out to be a right choice. Just make sure you build wx in release (not debug) mode, as there are some problems with wxLog functions and VLC.&lt;br /&gt;&lt;br /&gt;Here are the relevant versions that are compatible:&lt;br /&gt;&lt;br /&gt;Slackware 12.1 (with various media codec for 11.0 and 12.0 installed from linuxpackages.net)&lt;br /&gt;GCC 4.2.3&lt;br /&gt;VLC 0.8.6f (--prefix=/usr)&lt;br /&gt;wxWidgets 2.6.4 (--enable-unicode --disable-debug --disable-shared --prefix=/usr)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-5133962787079964484?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/5133962787079964484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=5133962787079964484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5133962787079964484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5133962787079964484'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/05/vlc-on-slackware-121.html' title='VLC on Slackware 12.1'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-1100031463500475569</id><published>2008-04-05T21:47:00.002+02:00</published><updated>2008-04-05T22:03:55.869+02:00</updated><title type='text'>Audacity and MP3 support</title><content type='html'>Making Audacity work on Slackware 12.0 is an adventure. I'm using wxWidgets for some development myself, so building Audacity from sources shouldn't be a problem. I used Audacity 1.3.4. Now, onto the issues:&lt;br /&gt;&lt;br /&gt;- Audacity 1.3.4 has a known bug that makes it's compiling fail. If you see this:&lt;br /&gt;&lt;br /&gt;&gt; import/ImportMP3.cpp: In function 'void&lt;br /&gt;&gt; GetMP3ImportPlugin(ImportPluginList*,&lt;br /&gt;&gt; UnusableImportPluginList*)':&lt;br /&gt;&gt; import/ImportMP3.cpp:52: error: 'DESC' was not&lt;br /&gt;&gt; declared in this scope&lt;br /&gt;&gt; import/ImportMP3.cpp:52: error: 'wxSIZEOF' was not&lt;br /&gt;&gt; declared in this scope&lt;br /&gt;&gt; make[1]: *** [import/ImportMP3.o] Error 1&lt;br /&gt;&gt; make[1]: Leaving directory&lt;br /&gt;&gt; `/home/milanb/install/audacity-src-1.3.4-beta/src'&lt;br /&gt;&gt; make: *** [audacity] Error 2&lt;br /&gt;&lt;br /&gt;Use the following patch:&lt;br /&gt;&lt;br /&gt;http://audacity.sourceforge.net/files/audacity-1.3.4-nolibfailure.patch&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, after I built everything, I started it only to realize that is has no MP3 support. It turns out MAD library is to be used for this, but although I have it installed the configure script doesn't detect it. It looks for libmad using pkg-config, but the vanilla libmad doesn't register itself with pkg-config. Cool, eh? &lt;br /&gt;&lt;br /&gt;Apparently, Debian package for libmad adds this entry, but the patch hasn't made it into upstream (yet?). In the end, I blame Audacity developers for not using some other way to check for libmad - at least they should until pkg-config stuff is part of the official libmad release. But, maybe it's simply because they are using Ubuntu or Debian and they are completely unaware of the issue.&lt;br /&gt;&lt;br /&gt;But, lets just get this working on the Slackware. Here's a nice patch for libmad 0.15.1 (currently the latest release) that adds the pkg-config stuff to libmad: &lt;br /&gt;&lt;br /&gt;http://www.mars.org/mailman/public/mad-dev/2004-August/001066.html&lt;br /&gt;&lt;br /&gt;So, just download the libmad source, patch it, build and install (before building I ran autoconf and automake, &lt;span style="font-style:italic;"&gt;just in case&lt;/span&gt;) and Audacity's configure script will pick it up.&lt;br /&gt;&lt;br /&gt;Enjoy the Audacity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-1100031463500475569?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/1100031463500475569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=1100031463500475569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1100031463500475569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1100031463500475569'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/04/audacity-and-mp3-support.html' title='Audacity and MP3 support'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-4855159536829243365</id><published>2008-03-11T23:30:00.005+01:00</published><updated>2008-03-11T23:41:18.954+01:00</updated><title type='text'>More on filesystems</title><content type='html'>I had a problems with ReiserFS losing data when power failure occurs. Finally, I got to learn the details why it might happen:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: arial; font-style: italic;"&gt;XFS only does metadata only journalling.  ext3, ext4, and reiser3 can do full data journaling. They will also do metadata journaling with ordered writes, and, of course, just plain metadata journaling.&lt;br /&gt;&lt;br /&gt;metadata only: If you lose power, the filesystem structure is guaranteed to be valid and does not require an fsck.  Actual data blocks may contain garbage.&lt;br /&gt;&lt;br /&gt;Metadata with ordered writes: If you lose power, the filesystem structure is guaranteed to be valid and does not require an fsck.  The data blocks may or may not contain the very *latest* data.  They But they will not be garbage.&lt;br /&gt;&lt;br /&gt;Ext3 defaults to ordered.  Not sure about reiser3.&lt;br /&gt;&lt;br /&gt;So XFS (and JFS) can leave garbage in the datablocks after an upplanned shutdown.  But it gets worse.  Due to a design decision, on remount, XFS actually nulls out any blocks that were supposed to be written that didn't actually get written.  i.e. if you pull the plug during a write, you are pretty much guaranteed to suffer data loss.  If random chance does not leave garbage in a block, the filesystem will thoughtfully zap your data intentionally.   This is done for security reasons.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;From &lt;a href="http://lwn.net/Articles/272311/"&gt;http://lwn.net/Articles/272311/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Obviously, ReiserFS 3 does not default to ordered writes, and that's why I got garbage (parts of different files mixed up). JFS and XFS seem even more dangerous, so I guess I'll stick with Ext3 from now on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-4855159536829243365?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/4855159536829243365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=4855159536829243365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/4855159536829243365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/4855159536829243365'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/03/more-on-filesystems.html' title='More on filesystems'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-8140730023688901917</id><published>2008-02-17T00:26:00.002+01:00</published><updated>2008-02-17T00:29:22.954+01:00</updated><title type='text'>GCC isn't that slow after all</title><content type='html'>I wrote about GCC C++ compiler (g++) before and was really unhappy how slow it is compared to commercial compilers (MS Visual C++ and Borland's C++).&lt;br /&gt;&lt;br /&gt;Today I tried building FlameRobin with MSVC Express. It works really nice and it builds FR from scratch in about 2.5 minutes on this machine where I tried it (Intel Celeron M 1.4GHz with 256MB RAM). This in on Windows XP Pro with all anti-virus and similar software turned off.&lt;br /&gt;&lt;br /&gt;Then I tried on Linux (it's a dual boot machine) and GCC took 272 seconds, i.e. 4.5 minutes. Both compilers are using PCH. I got really frustrated about this in the past, so much that I considered to install Windows on my machine and do FR development there.&lt;br /&gt;&lt;br /&gt;But, I suddenly got the idea that GCC might be losing too much time optimizing. So, I tried to lover the optimization from level 2 to level 1. I got slight improvement: 225 seconds. Still too slow. Then I turned it off, and I got the amazing 130 seconds, i.e. 2:10. This is quite acceptable to development and I guess I'll only use -O2 when we build the release versions from now on.&lt;br /&gt;&lt;br /&gt;The option can be changed by setting CXXFLAGS environment variable before you run 'configure' script. Something like this (if your shell is bash):&lt;br /&gt;&lt;br /&gt;$ export CXXFLAGS=&lt;br /&gt;$ ../configure ...&lt;br /&gt;$ make&lt;br /&gt;&lt;br /&gt;It looks like GCC C++ compiler isn't that bad after all. I won't be switching to Windows any time soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-8140730023688901917?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/8140730023688901917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=8140730023688901917' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/8140730023688901917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/8140730023688901917'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/02/gcc-isnt-that-slow-after-all.html' title='GCC isn&apos;t that slow after all'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-5394413277653664874</id><published>2008-02-11T21:53:00.000+01:00</published><updated>2008-02-11T22:02:31.899+01:00</updated><title type='text'>Drag and drop Gtk bugs</title><content type='html'>While working in FlameRobin I often run into DnD bug that locks up the screen completely. Something takes over the mouse input (it's called grab) and the only way is to kill FR. It happen often when DnD is enabled, but also sometimes when it is not.&lt;br /&gt;&lt;br /&gt;Looks like we aren't the only ones affected by it. Here are some examples of Evolution team, having the same problem:&lt;br /&gt;&lt;br /&gt;http://thomas.apestaart.org/log/?p=502&lt;br /&gt;&lt;p&gt;&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=365258" rel="nofollow"&gt;http://bugzilla.gnome.org/show_bug.cgi?id=365258&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=368233" rel="nofollow"&gt;http://bugzilla.gnome.org/show_bug.cgi?id=368233&lt;/a&gt;&lt;/p&gt;Here's one idea of a fix:&lt;br /&gt;&lt;br /&gt;&lt;pre id="comment_text_3"&gt;i've found and fixed the bug I reported. The error was here, on gtkhtml.c:&lt;br /&gt;&lt;br /&gt;static gint&lt;br /&gt;idle_handler (gpointer data)&lt;br /&gt;{&lt;br /&gt;       GtkHTML *html;&lt;br /&gt;       HTMLEngine *engine;&lt;br /&gt;&lt;br /&gt;+  GDK_THREADS_ENTER ();&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;+  GDK_THREADS_LEAVE (); &lt;br /&gt;&lt;br /&gt;       return FALSE;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;idle_handler() was missing surrounding GDK_THREADS_ENTER / _LEAVE calls. Due to&lt;br /&gt;this, idle_handler returned and left the global mutex locked, however it should&lt;br /&gt;have been unlocked because idle_handler was called from the idle loop. As the&lt;br /&gt;mutex was locked, when GTK+ tried to acquire the lock again the thread got&lt;br /&gt;locked (as seen on the previous stack trace).&lt;/pre&gt;&lt;br /&gt;I just have no idea, where in wxWidgets source do we need to insert those guards.&lt;br /&gt;&lt;br /&gt;Also, here's another report:&lt;br /&gt;&lt;br /&gt;http://bugzilla.gnome.org/show_bug.cgi?id=351672&lt;br /&gt;&lt;br /&gt;Here's interesting comment from that page:&lt;br /&gt;&lt;br /&gt;&lt;pre id="comment_text_14"&gt;I think Gavin has right. Based on the documentation for signals "drag-drop" and&lt;br /&gt;"drag-data-received", gtk_drag_finish is supposed to be called in one of this&lt;br /&gt;signal handlers to let the source know that the drop is done. Evolution do this&lt;br /&gt;too late, from my point of view, so it breaks this rule and when dragging next&lt;br /&gt;message the call for gtk_drag_finish breaks UI.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It seems vanilla Evolution has fixed it now, although some distro-patched versions still exhibit the problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-5394413277653664874?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/5394413277653664874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=5394413277653664874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5394413277653664874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5394413277653664874'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2008/02/drag-and-drop-gtk-bugs.html' title='Drag and drop Gtk bugs'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-900886213757035559</id><published>2007-12-02T17:31:00.000+01:00</published><updated>2007-12-02T17:32:30.841+01:00</updated><title type='text'>Mister X</title><content type='html'>Looking for some cool domain to register, I tried misterx.com and got this:&lt;br /&gt;&lt;br /&gt;Registrant:&lt;br /&gt;   Mister X&lt;br /&gt;   1201 Edgewood St.&lt;br /&gt;   Johnson City, Tennessee 37604&lt;br /&gt;   United States&lt;br /&gt;&lt;br /&gt;   Registered through: GoDaddy.com, Inc. (http://www.godaddy.com)&lt;br /&gt;   Domain Name: MISTERX.COM&lt;br /&gt;      Created on: 03-Dec-98&lt;br /&gt;      Expires on: 02-Dec-12&lt;br /&gt;      Last Updated on: 27-Nov-07&lt;br /&gt;&lt;br /&gt;   Administrative Contact:&lt;br /&gt;      X, Mister  vaughnt@iplenus.com&lt;br /&gt;      1201 Edgewood St.&lt;br /&gt;      Johnson City, Tennessee 37604&lt;br /&gt;      United States&lt;br /&gt;      423-232-0178      Fax -- 276-475-3811&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-900886213757035559?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/900886213757035559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=900886213757035559' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/900886213757035559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/900886213757035559'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/12/mister-x.html' title='Mister X'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-5833716495023087277</id><published>2007-11-22T14:55:00.000+01:00</published><updated>2007-11-22T22:39:04.334+01:00</updated><title type='text'>Makefile tips</title><content type='html'>Prepend '-' to ignore returned value&lt;br /&gt;&lt;br /&gt;This can be nice for some tools whose returned value you are not interested. For example, I use make to automate some of my work, and I use this to print diff of two files, who are expected to differ.&lt;br /&gt;&lt;br /&gt;Prepend '@' to prevent printing the command&lt;br /&gt;&lt;br /&gt;Mostly used with 'echo', so that the same thing isn't printed twice.&lt;br /&gt;&lt;br /&gt;To re-run configure (I use this for FlameRobin) with same options:&lt;br /&gt;&lt;br /&gt;alias regen='`head config.log | grep opt | sed "s1.*\.1\.\.1"`'&lt;br /&gt;&lt;br /&gt;Please note the &lt;span style="font-style: italic;"&gt;grep opt&lt;/span&gt; part. It needs some text from original configure line. I use opt, since wxWidgets is installed under /opt for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-5833716495023087277?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/5833716495023087277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=5833716495023087277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5833716495023087277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5833716495023087277'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/11/makefile-tips.html' title='Makefile tips'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-5704024657849775796</id><published>2007-10-25T20:21:00.000+02:00</published><updated>2007-10-25T20:25:07.536+02:00</updated><title type='text'>Another great article by Joel</title><content type='html'>If you are involved in software developement and you don't know who Joel Spolsky is, you're missing a lot. Here's another &lt;a href="http://www.inc.com/magazine/20071101/how-hard-could-it-be-five-easy-ways-to-fail.html?partner=fogcreek"&gt;great article&lt;/a&gt; of his. This section is a thing one needs to remember:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Software development takes immense intellectual effort. Even the best programmers can rarely sustain that level of effort for more than a few hours a day. Beyond that, they need to rest their brains a bit, which is why they always seem to be surfing the Internet or playing games when you barge in on them.&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-5704024657849775796?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/5704024657849775796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=5704024657849775796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5704024657849775796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5704024657849775796'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/10/another-great-article-by-joel.html' title='Another great article by Joel'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-8847145557047003814</id><published>2007-09-28T00:38:00.000+02:00</published><updated>2007-09-28T00:46:53.519+02:00</updated><title type='text'>Workrave on Slackware 12.0</title><content type='html'>Finally, I built it. Here are the libraries I used:&lt;br /&gt;&lt;br /&gt;libsigc++-1.2.7&lt;br /&gt;glibmm-2.12.10&lt;br /&gt;cairomm-1.2.2&lt;br /&gt;gtkmm-2.10.10&lt;br /&gt;gdome2-0.8.1&lt;br /&gt;gnet-2.0.7&lt;br /&gt;&lt;br /&gt;The result: workrave-1.8.5&lt;br /&gt;&lt;br /&gt;Compiling gtkmm can take ages (see my previous blog entry for machine specs.), so I disabled building of examples, demos and docs:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;./configure --prefix=/usr --disable-examples --disable-demos --disable-docs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To reduce dependencies on Workrave, I configured it like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;./configure --prefix=/usr --disable-gnome --disable-gnomemm --disable-kde --disable-dbus --disable-gconf --disable-registry --disable-debug&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well, I hope disabling this Gnome and KDE deps. will make it run smoothly on IceWM as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-8847145557047003814?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/8847145557047003814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=8847145557047003814' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/8847145557047003814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/8847145557047003814'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/09/workrave-on-slackware-120.html' title='Workrave on Slackware 12.0'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-735932377149551826</id><published>2007-09-27T21:35:00.000+02:00</published><updated>2007-10-18T18:59:15.751+02:00</updated><title type='text'>GlibMM - is anyone home?</title><content type='html'>Today I begin my trip into Slackware 12.0 on my workstation. It's an older machine:&lt;br /&gt;&lt;br /&gt;Pentium III 550MHz&lt;br /&gt;ATI RADEON GPU&lt;br /&gt;265MB RAM&lt;br /&gt;40GB HDD&lt;br /&gt;&lt;br /&gt;In short: Slackware 12.0 with KDE 3.5.7 runs quite smooth on this machine - having 256MB of RAM is crucial.&lt;br /&gt;&lt;br /&gt;Installation went fine, without any hickups. I choose full install and it took about 3.7GB of the disk drive. The first problem was after reboot. I choose to start gpm at boot time, and it was messing up the terminal, so ncurses applications would malfuncion. The main problem is that all Slackware setup tools are ncurses based, and also is the Midnight Commander. Since I have a brand new monitor (22" Benq with 1680x1050 resolution), setting up the X server was a problem (if you don't know, the great xorgsetup wizard uses ncurses too). Of course, I didn't know it was gpm that caused the trouble, so I tried all other stuff before figuring that out. Perhaps the main problem is that I have a serial mouse plugged into COM1.&lt;br /&gt;&lt;br /&gt;After killing the gpm and restarting, I was able to run xorgsetup and... it detected everything out-of-the-box! Excellent! The only thing I had to change is to set mouse device to /dev/ttyS0 and run startx once more. My Radeon was detected automatically and resolution set to 1680x1050 at 60Hz. Perfect! It even let me specify different keyboard layouts, so I can use them outside of KDE.&lt;br /&gt;&lt;br /&gt;Now, onto the software. KDE runs fine, and new Fluxbox is also nice. GQView is included. Yeah!&lt;br /&gt;&lt;br /&gt;First thing needed - Workrave. Now, here starts the show. There is no .tgz package, so I decided to build from the source. Workrave needs libsigc++ and glibmm. There is libsigc++ package on linuxpackages.net, but only for libsigc++ 2.0 (unfortunately I learned that after installing), so I downloaded the source from Gnome FTP and compiled. All fine. Then I took glibmm, downloaded the latest version (2.14.0). I ran configure --prefix=/usr and then 'make'. One would expect that Gnome guys are up to it, but it looks like both Linus and Patrick are right regarding their Gnome vs KDE opinion. Anyway, here's what I got:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;make[5]: Entering directory `/home/milanb/Desktop/glibmm-2.14.0/glib/glibmm'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; g++ -DHAVE_CONFIG_H -DG_LOG_DOMAIN=\"glibmm\" -I../../glib -I../../glib -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -g -O2 -Wall -Wno-long-long -MT regex.lo -MD -MP -MF .deps/regex.Tpo -c regex.cc -fPIC -DPIC -o .libs/regex.o&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;In file included from regex.cc:4:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;../../glib/glibmm/regex.h:29:25: error: glib/gregex.h: No such file or directory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;../../glib/glibmm/regex.h:594: error: 'GRegexEvalCallback' has not been declared&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;...and few more pages of errors&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It looks like the package isn't able to find its own files. Don't they test thing at least once before releasing?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-735932377149551826?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/735932377149551826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=735932377149551826' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/735932377149551826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/735932377149551826'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/09/glibmm-is-anyone-home.html' title='GlibMM - is anyone home?'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-43992359034876314</id><published>2007-09-24T08:15:00.000+02:00</published><updated>2007-09-24T08:18:52.628+02:00</updated><title type='text'>I'll do it better the second time...</title><content type='html'>...this just popped out of my fortunes and I like it so much, I have to show it here:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;An architect's first work is apt to be spare and clean.  He &lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;knows he doesn't know what he's doing, so he does it carefully and with &lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;great restraint.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;        As he designs the first work, frill after frill and &lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;embellishment after embellishment occur to him.  These get stored away &lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;to be used "next time".  Sooner or later the first system is finished, &lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;and the architect, with firm confidence and a demonstrated mastery of &lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;that class of systems, is ready to build a second system.&lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;&lt;br /&gt;&lt;br /&gt;This second is the most dangerous system a man ever designs. &lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;When he does his third and later ones, his prior experiences will &lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;confirm each other as to the general characteristics of such systems, &lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;and their differences will identify those parts of his experience that &lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;are particular and not generalizable.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;        The general tendency is to over-design the second system, using &lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;all the ideas and frills that were cautiously sidetracked on the first &lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;one.  The result, as Ovid says, is a "big pile".&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;                -- Frederick Brooks, "The Mythical Man Month"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-43992359034876314?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/43992359034876314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=43992359034876314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/43992359034876314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/43992359034876314'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/09/ill-do-it-better-second-time.html' title='I&apos;ll do it better the second time...'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-5191711599208011058</id><published>2007-09-23T21:12:00.000+02:00</published><updated>2007-09-23T21:25:30.925+02:00</updated><title type='text'>Slackware 12 has arrived</title><content type='html'>and it really fulfills the promises. It's just great, at least, what I discovered so far.&lt;br /&gt;&lt;br /&gt;The main reason for me to try it out was simulatneous SATA and SMP support. It's worked out-of-the box, I just had to pick a right kernel. Seeing the four penguin images coupled with fast-boot time is really delightful.&lt;br /&gt;&lt;br /&gt;But, that's not all. The other usual stuff seems to work ok, and new KDE seems a little bit faster (not! because of 4-core CPU - I also installed it on my old Pentium 3 laptop with 128MB RAM). Other things to enjoy in is easy mounting of removable drives - no more dmesg+mount messing. Although, I somehow managed to get that working properly on 10.2 with 2.6.13 kernel by manually configuring the udev rules - but don't ask me to repeat it on another machine :)&lt;br /&gt;&lt;br /&gt;I still have to try new GCC. That would remove all the problems I had with having GCC 3.3.6 and G++ 3.4.4 installed at the same time, and it also removes the bug with precomplied headers when using wxWidgets i Unicode mode. Well, I did use GCC 4.x before but compiling it myself from sources and running in sandbox environment, but that's just not it.&lt;br /&gt;&lt;br /&gt;I'm currently messing up with Bluetooth dongle. Bluetooth support comes with Slackware 12.0, but tools are.... well, there are no GUI tools, you have to go to the command line. I just learned about l2ping, hcitool, rfcomm, etc. and it looks like some things are going to be tricky to do as a regular user as some /dev entries get root:root owner and 660 permissions... But, more on that later after I get it to work. Actually, it does work (ping, querying services, etc.) but I want to make a dial-up connection using KPPP. I'm almost there (modem interface responds, and seems to dial, but pppd dies), so I'll probably write more when I finish it.&lt;br /&gt;&lt;br /&gt;I expected much more instability given the fact that so many things are new and untested, so I was considering to wait for 12.1 or 12.2 before installing it as my main system, but now I'm having second thoughts about that. As I'm changing my main work machine and installing something from scratch on it, it will most probably be Slackware 12.0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-5191711599208011058?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/5191711599208011058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=5191711599208011058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5191711599208011058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5191711599208011058'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/09/slackware-12-has-arrived.html' title='Slackware 12 has arrived'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-3272388972158506040</id><published>2007-09-17T08:50:00.000+02:00</published><updated>2007-09-17T08:56:25.274+02:00</updated><title type='text'>3D Spam</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ztwz8teIbCk/Ru4koAf54oI/AAAAAAAAABY/S4hx2jxSDHQ/s1600-h/3dspam.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ztwz8teIbCk/Ru4koAf54oI/AAAAAAAAABY/S4hx2jxSDHQ/s400/3dspam.gif" alt="" id="BLOGGER_PHOTO_ID_5111062896859275906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Those of you who bother to look at the spam you get sometimes, have already noticed how spammers are getting more clever. As text-based filters remove all the possible combinations of V1agr4 or C1ali5, they started to place the text in images. Apparently some anti-spam filters use OCR to detect such things, but now the spammers want to be a step ahead. Frist they introduced some noise into images, but that didn't seem to work, and today I just got my first 3D spam.&lt;br /&gt;&lt;br /&gt;Damn spammers, I wish they all get their Internet access denied ... for life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-3272388972158506040?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/3272388972158506040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=3272388972158506040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3272388972158506040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3272388972158506040'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/09/3d-spam.html' title='3D Spam'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ztwz8teIbCk/Ru4koAf54oI/AAAAAAAAABY/S4hx2jxSDHQ/s72-c/3dspam.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-415651092784042508</id><published>2007-09-13T15:38:00.000+02:00</published><updated>2007-09-13T15:43:28.301+02:00</updated><title type='text'>VMWare goes open source</title><content type='html'>Well, I just learned about this, and I'm excited :)&lt;br /&gt;&lt;br /&gt;http://open-vm-tools.sourceforge.net/&lt;br /&gt;&lt;br /&gt;The Open Virtual Machine Tools (open-vm-tools) are the open source implementation of VMware Tools. They are a set of guest operating system virtualization components that enhance performance and user experience of virtual machines. As virtualization technology rapidly becomes mainstream, each virtualization solution provider implements their own set of tools and utilities to supplement the guest virtual machine. However, most of the implementations are proprietary and are tied to a specific virtualization platform. &lt;br /&gt;&lt;br /&gt;With the source code readily available, users of VMware products today (and other virtualization platforms too, in the future) will get these tools bundled and delivered through their distribution specific package manager. This should provide a seamless installation/upgrade experience and ease the burden on sysadmins. In fact, if you are looking to package the source for your favorite Linux distribution, we have included some helpful documentation.&lt;br /&gt;&lt;br /&gt;So, you can just say:&lt;br /&gt;&lt;br /&gt;apt-get install vmware&lt;br /&gt;yum install vmware&lt;br /&gt;urpmi vmware&lt;br /&gt;&lt;br /&gt;and it just flies. The great thing is that technically superior VMWare technology goes open source and all those threats from Microsoft or Xen about putting them out of business soon became completely void now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-415651092784042508?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/415651092784042508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=415651092784042508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/415651092784042508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/415651092784042508'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/09/vmware-goes-open-source.html' title='VMWare goes open source'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-5059464209176548848</id><published>2007-08-08T20:11:00.000+02:00</published><updated>2007-08-08T20:25:42.776+02:00</updated><title type='text'>QEmu vs VMWare benchmark</title><content type='html'>Some time ago I did a benchmark comparison of VMWare and QEmu (using kqemu acceleration). I get asked about it so often, that I decided to post it on the blog. My tests involve memory and CPU intensive operations like compiling, so it might not be what you're using your virtual machine for, but I only use VMs to test my applications on various platforms.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Host System:&lt;/b&gt;&lt;br /&gt;Slackware 10.2, vanilla 2.6.13 kernel that comes with it&lt;br /&gt;RAM: 512MB&lt;br /&gt;CPU: AMD Turion64 MT30&lt;br /&gt;It is a 64bit CPU, but I only run 32bit OS.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Software:&lt;/b&gt;&lt;br /&gt;QEmu 0.8.2&lt;br /&gt;- using slack10.2 package from linuxpackages.net: qemu-0.8.2-i486-1gds.tgz&lt;br /&gt;KQEmu 1.3.0 pre9&lt;br /&gt;- compiled from source from kqemu-1.3.0pre9.tar.gz&lt;br /&gt;VMWare Player 1.0.3 build-34682&lt;br /&gt;- installed from VMWare-player-1.0.3-34682.tar.gz&lt;br /&gt;&lt;br /&gt;Since Slackware doesn't have SysVinit, before installing vmplayer I created directory &lt;span style="color:#000099;"&gt;/opt/vmware&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and subdirectories &lt;span style="color:#000099;"&gt;rc0.d, rc1.d, rc2.d, rc3.d, rc4.d, rc5.d, rc6.d.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When wmplayer installer asked, I gave it /opt/vmware directory.&lt;br /&gt;&lt;br /&gt;I aslo installed vmware-tools. I extracted the .iso file from vmware-server package,&lt;br /&gt;and installed it inside guest system.&lt;br /&gt;&lt;br /&gt;Guest OS is Windows 2000 Pro.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Test1: QEmu&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;- Loaded kqemu module:&lt;br /&gt;&lt;span style="color:#000099;"&gt;# modprobe kqemu&lt;br /&gt;# lsmod | grep kq&lt;br /&gt;kqemu                 105604  0&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;- Created 4G image for guest system&lt;br /&gt;&lt;span style="color:#000099;"&gt;$ qemu-img create -f qcow c.img 4G&lt;br /&gt;Formating 'c.img', fmt=qcow, size=4194304 kB&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I'm not sure this was really needed, but it complained, so:&lt;br /&gt;&lt;span style="color:#000099;"&gt;# echo 1024 &gt; /proc/sys/dev/rtc/max-user-freq&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Win2k is installed like this:&lt;br /&gt;&lt;span style="color:#000099;"&gt;$ qemu -cdrom ../install/windows/win2000server/win2k.iso -hda c.img -m 256 -boot d -localtime&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Test2: VMPlayer&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;With VMPlayer I created image with qemu-img and created a small .vmx file:&lt;br /&gt;&lt;span style="color:#000099;"&gt;# /opt/vmware/vmware start&lt;br /&gt;$ qemu-img create -f vmdk win2k.vmdk 4G&lt;br /&gt;$ vmplayer win2k.vmx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I had to disable sound and network while installing, otherwise it would get stuck at some point.&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Running the installed system:&lt;br /&gt;&lt;span style="color:#000099;"&gt;$ qemu -hda c.img -m 256 -localtime -kernel-kqemu&lt;br /&gt;$ vmplayer win2.vmx&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;---- Benchmark ----------------&lt;br /&gt;&lt;br /&gt;I did ./configure of wxWidgets 2.8.0rc1&lt;br /&gt;&lt;br /&gt;On each test I freshly unpacked the archive and ran:&lt;br /&gt;&lt;span style="color:#000099;"&gt;$ time -p ./configure&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I also rebooted the machine to make sure VMWare and QEmu don't interfere with each other.&lt;br /&gt;&lt;br /&gt;Host system:&lt;br /&gt;51.44&lt;br /&gt;&lt;br /&gt;QEmu (kqemu module loaded):&lt;br /&gt;1962.29&lt;br /&gt;&lt;br /&gt;QEmu with -kernel-kqemu:&lt;br /&gt;1471.51&lt;br /&gt;&lt;br /&gt;VMPlayer:&lt;br /&gt;587.20&lt;br /&gt;&lt;br /&gt;As you can see, GCC in virtual machine performs 10x slower than on real computer. I really like VM technology and it has good uses for testing and QA, but I really don't understand people using it in production. Hardware is cheaper than ever and with VM you also have a single point of failure - if some hardware component fails, instead of losing one server, you lose all of them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-5059464209176548848?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/5059464209176548848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=5059464209176548848' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5059464209176548848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/5059464209176548848'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/08/qemu-vs-vmware-benchmark.html' title='QEmu vs VMWare benchmark'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-4079223103698540070</id><published>2007-07-13T22:48:00.000+02:00</published><updated>2007-07-13T23:25:58.472+02:00</updated><title type='text'>Time for Slackware 12.0</title><content type='html'>Yesterday I had to install Linux on a Intel Core 2 Duo machine with SATA disks. So, I figured I need both SMP and SATA support. My trustworthy Slackware 10.2 seemed out of the question, or shall I rather say: out of date. So I went for 11.0 as I didn't have 12.0 DVD at hand and this was supposed to be a quick installation. Well, it turned into a 9-hour marathon, ending in me giving up on SMP at the end (until I try with Slackware 12.0).&lt;br /&gt;&lt;br /&gt;Slackware 11.0 comes with 15 or so kernels. All but two of those are 2.4 kernels. Non of those 2.4 kernels supports the SATA controller in that machine. So, I had huge26 and test26 to test. The huge one should work on any machine? Couldn't boot this one (Asus/Intel965, JMicron SATA controller). Pluging SATA disk into Intel ICH8 rather than JMicron fixed that and I was able to boot with test26.s. Unfortunately, after booting, there was no way for it to see the DVD ROM that was connected to PATA IDE. Going back to Bios and trying both compatibility and enhanced modes didn't help at all - most of experiments with BIOS settings ended up in not being able to boot with any kernel. BTW, each time we changed a single setting in BIOS we rebooted and tried all of: sata.i, bare.i, test26.s, huge26.s and the only one that would sometimes work in test26.s. I'm inclined to say that &lt;b&gt;sata.i kernel in Slackware 11.0 is next to useless.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In the end, we managed to find an USB DVD reader and decided to copy the DVD image to hard disk (as we had to return the USB DVD reader, we couldn't affort to play and try to install from it). Now, we learned some more interesting things. For example, I ran fdisk and created 3 partitions. Formatted one of them as xfs (default option in Slack11) and ran:&lt;br /&gt;&lt;br /&gt;dd if=/dev/sdb of=slack11dvd.iso&lt;br /&gt;&lt;br /&gt;All was going nice until slack11dvd.iso reached 2GB file size. Now, it was my first time using XFS and even though I know I read people having huge files on it, I just figured that something might be wrong and reformatted the partition to ext3 and start over. No luck, at 2GB mark we got the same error. Ok, at this point I concluded that &lt;b&gt;dd on Slackware 11.0 installation disk does not support files larger than 2GB. &lt;/b&gt;So I mounted the DVD and used 'cp -a' to copy it over.&lt;br /&gt;&lt;br /&gt;Next, I started 'setup' and go to the point to select media. Tried with 'directory on local disk' option (can't recall the exact wording) and it gave me various errors before I gave up on it and selected the 'pre-mounted CD or DVD' or whatever it is called exactly. In the end I had just deleted the /var/log/mount (or something like that) directory where the installer expected to find the directory structure and symlinked that to that DVD copy I made with 'cp -a' earlier. &lt;b&gt;It's so cool that Slackware's installer is a shell script&lt;/b&gt; and you can use 'vi' to peek inside and find easy ways to trick it into doing what you want it to do. Another &lt;b&gt;cool thing is that Slackware gives you usable consoles while installing &lt;/b&gt;(available via alt+Fn combinations). Finally the Slackware installed.&lt;br /&gt;&lt;br /&gt;Rebooting is a whole new story. As I was scared to choose kernel from CD during install (didn't know if it was going to try searching the CD device again), I told it to just go with vmlinuz. It couldn't boot, so I booted from DVD, went in, replaced default kernel with test26.s, run lilo and rebooted again. Now we now had a running Slackware 11.0 with SATA support. Great? Not yet.&lt;br /&gt;&lt;br /&gt;Of course, test26.s kernel doesn't have SMP support some one of our CPUs was simply just lying there dead doing nothing at all. Looking at various precompiled kernel options, I found 2.6.17.13-smp. Tried it - of course - no SATA support. At this point, some 4 hours have already passed, and I was looking at a choice: add SATA support to SMP kernel, or add SMP support to SATA kernel. The former seamed feasible, the latter impossible. Ok, I just figured that I need to add some modules for SATA stuff into kernel core and be done with it. But that would require to compile the entire kernel and I wasn't really in a mood for that. Then I figured that we have to use initrd anyway, so why not just load sata drivers in it. Seemed like a best idea of the day. BTW, by now I learned the mkinitrd line by heart:&lt;br /&gt;&lt;br /&gt;mkinitrd -c -k 2.6.13.17-smp -m jbd:ext3 -r /dev/sda1&lt;br /&gt;&lt;br /&gt;This is the default line. To add more modules, simply add their names (filenames of .ko files) to the list in -m option. So I added sata_mv as I mistakenly thought that SATA controller was involved.&lt;br /&gt;&lt;br /&gt;Ran mkinitrd, lilo, rebooted... kernel panic.&lt;br /&gt;&lt;br /&gt;Booted from DVD again...this time reading all the output of boot process (and later analyzing dmesg). It's nice that test26.s successfully loads almost all SATA stuff (not modules - it's built in) without errors - so it's really hard to determine which of those is really used. lsmod cannot help at this time. If you knows how to get 'lsmod' for stuff that is compiled into the kernel PLEASE LET ME KNOW.&lt;br /&gt;&lt;br /&gt;So, I started adding stuff to the -m line of mkinitrd. Some of the modules I recognized instantly, for others I used 'grep' in /lib/modules to find out. I the end I had about 12 modules, output of loading process was quite similar to the one of test26.s but still it wasn't able to see the SATA disk, and still wasn't able to boot. The only module making problems was ipr (some IBM's SATA controller I believe), but I wasn't able to determine why it cannot load. Looking at modules.dep it didn't seem that it has some dependent modules that I need to preload before it.&lt;br /&gt;&lt;br /&gt;I also had problem with my network card not being supported by test26.s, which is (if someone wonders) kernel 2.6.18. But that's a minor issue as the card is supported in 2.6.20, and one RTL8139 is doing the job in the meantime.&lt;br /&gt;&lt;br /&gt;The current state is that we're running with SATA disk and one CPU and PCI Ethernet card. I'm looking forward to Slackware 12.0 and 2.6.21 kernel which should solve this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-4079223103698540070?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/4079223103698540070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=4079223103698540070' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/4079223103698540070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/4079223103698540070'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/07/time-for-slackware-120.html' title='Time for Slackware 12.0'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-6172845752885684983</id><published>2007-07-02T18:36:00.000+02:00</published><updated>2007-07-02T18:39:02.753+02:00</updated><title type='text'>Flash graphics and links</title><content type='html'>One of the things I hate recently is flash banners on websites. Sometimes I see something useful and want to visit the link. But, right-click doesn't open the browser's (Firefox/Mozilla) context menu but rather Flash context menu. As if I even wanted to rewind a flash movie (most of them have playback control of their own anyway) or change quality or whatever.&lt;br /&gt;&lt;br /&gt;I just want to open the darn link in a new tab. If anyone knows how to disable flash menu and have my Firefox menu back, please let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-6172845752885684983?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/6172845752885684983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=6172845752885684983' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/6172845752885684983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/6172845752885684983'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/07/flash-graphics-and-links.html' title='Flash graphics and links'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-112452617102235689</id><published>2007-06-06T23:37:00.000+02:00</published><updated>2007-06-06T23:48:48.352+02:00</updated><title type='text'>Slow compiling? Check your memory</title><content type='html'>Today I got completely frustrated with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;GCC&lt;/span&gt;. I was doing some coding on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;FlameRobin&lt;/span&gt;, changing just a single file. Save, run make - it takes 1.5 minutes or something for thing to get compiled and linked so I can test it. I have a 1.6GHz CPU with 512 MB of RAM. Now, how could it be that slow. But, one thing caught my eye: while linking the hard disk would work like crazy. I looked and there was no swap usage, but RAM was used 99%. No swapping, but obviously it had to release stuff from the cache and load it back in.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Time for testing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I deleted the executable and ran 'make' again. It took 55 seconds. Too much. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Ok&lt;/span&gt;, I closed down the browser, music player, even text editor. New run: 43 seconds. Not good enough.&lt;br /&gt;&lt;br /&gt;At this point I decided to kill the beast. I shut down &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;KDE&lt;/span&gt;, went back to console and installed &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;IceWM&lt;/span&gt;. Got back to X, installed &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SciTE&lt;/span&gt; to use it instead of Kate (perhaps I should learn Emacs one of these days). Launched &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;Mozilla&lt;/span&gt; to blog about this and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;xmms&lt;/span&gt; instead of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;JuK&lt;/span&gt;. Run the experiment again:&lt;br /&gt;&lt;br /&gt;milanb@asus:~/devel/svn/flamerobin/rel-gtk2-wx280$ time -p make&lt;br /&gt;g++ -o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;flamerobin&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;flamerobin&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;addconstrainthandler&lt;/span&gt;.o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;flamerobin&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Config&lt;/span&gt;.o&lt;br /&gt;...etc.&lt;br /&gt;real 10.90&lt;br /&gt;user 8.45&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;sys&lt;/span&gt; 2.07&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;ahahaahhaaaa&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Well, quite enough reason for me to go back to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;IceWM&lt;/span&gt;, at least while developing in C++. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;Ok&lt;/span&gt;, now the real problem is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;Workrave&lt;/span&gt; which (from reasons yet unknown) loads &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;kdeinit&lt;/span&gt; and two more &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;KDE&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;deamons&lt;/span&gt; with it.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_22"&gt;Perhaps&lt;/span&gt; I should just get 2GB of RAM and forget about the whole problem? Only thing bothering me is that this machine is a notebook, so it isn't so easy to upgrade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-112452617102235689?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/112452617102235689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=112452617102235689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/112452617102235689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/112452617102235689'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/06/slow-compiling-check-your-memory.html' title='Slow compiling? Check your memory'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-3898792762656654453</id><published>2007-05-11T16:29:00.000+02:00</published><updated>2007-05-11T16:42:04.364+02:00</updated><title type='text'>Security</title><content type='html'>One thing really starts to go on my nerves. All the e-banking applications used for companies (personal e-banking is &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;OK&lt;/span&gt;) seem to require that you run them under Windows. It amazes me how you should run your most sensitive stuff on most insecure possible system. Even if we handle the e-banking application issue (some of those are web apps., so you only need a browser), we still have a hardware issue as most of the smart-card readers used for authentication, only have drivers for Windows.&lt;br /&gt;&lt;br /&gt;I don't know if IT people who make applications have any valid excuse. Their arguments range from &lt;i&gt;everybody else does it  &lt;/i&gt;to  &lt;i&gt;most of our users require Windows version. &lt;/i&gt;Or perhaps there just aren't &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;enough&lt;/span&gt; skilled programmers in the industry who are able to create Linux or Mac versions?&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;Now, what's the whole problem? Well, in order to get the financial data, you need to access Internet from such machine. In turn, that means you're &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;vulnerable&lt;/span&gt; to any new exploit - which are &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;abundant&lt;/span&gt; to say the least. In order to transfer the data to the rest of the network, to people that need it, you connect such machine, and potentially expose the entire network to problems. Looks like that &lt;i&gt;Windows machine doing e-banking&lt;/i&gt; needs DMZ configuration of it's own.&lt;br /&gt;&lt;br /&gt;Just another example of &lt;i&gt;follow the crowd &lt;/i&gt;syndrome having bad effects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-3898792762656654453?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/3898792762656654453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=3898792762656654453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3898792762656654453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3898792762656654453'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/05/security.html' title='Security'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-1014332315583026591</id><published>2007-04-04T20:58:00.000+02:00</published><updated>2007-04-04T21:13:40.180+02:00</updated><title type='text'>Gimp animation plugin</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ztwz8teIbCk/RhP2BYikc8I/AAAAAAAAABQ/LFu9dAAlixs/s1600-h/gimpanim.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ztwz8teIbCk/RhP2BYikc8I/AAAAAAAAABQ/LFu9dAAlixs/s400/gimpanim.jpg" alt="" id="BLOGGER_PHOTO_ID_5049650110840206274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I needed to create some sprite animations, so I decided to use something existing instead of writing my own. Good animator isn't only able to animate pictures, but should also have image editing abilty, so that you can change and test in most productive way. I found that Gimp has such plugin, so I decided to give it a try. It does work, but I ran into several problems:&lt;br /&gt;&lt;br /&gt;1. Image size. When set to animate, the &lt;i&gt;Videoframe Playback&lt;/i&gt; window only allows images to be bigger than 64x64 pixels. Why is this limitation escapes me. My sprites are 25x25 and look very ugly especially since enlargement to 64x64 blurs the pixels.&lt;br /&gt;&lt;br /&gt;2. Nagging audio dialog. Yes, every time I run the animation I get the stupid:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;No audiosupport available&lt;br /&gt;the audioserver executable file 'wavplay' was not found.&lt;br /&gt;If you have installed 'wavplay 1.4'&lt;br /&gt;you should add the installation dir to your PATH&lt;br /&gt;or set environment variable WAVPLAYPATH to the name of the executable&lt;br /&gt;before you start GIMP&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;...message, and have to click OK. No I don't have it installed, I don't want to install it and I don't need audio. I just want to animate a bunch of 25x25 sprites for my game. Even better, the &lt;i&gt;Enable&lt;/i&gt; checkbox on audio tab isn't checked. Looks like the authors want us to use the cool audio feature so much, that they made the whole animation thing quite annoying if you decided that you don't need it.&lt;br /&gt;&lt;br /&gt;3. Gimp has some cool animation stuff in &lt;i&gt;Script-fu&lt;/i&gt; -&gt; &lt;i&gt;Animators&lt;/i&gt;. The only problem is that it creates the animation frames as image layers. Apparently, the only way to make animation from it is to manually copy/paste each of those layers to animation. Not much fun when it has 20+ frames.&lt;br /&gt;&lt;br /&gt;Anyway, I'm looking for a replacement, if you know any, please let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-1014332315583026591?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/1014332315583026591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=1014332315583026591' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1014332315583026591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1014332315583026591'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/04/gimp-animation-plugin.html' title='Gimp animation plugin'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ztwz8teIbCk/RhP2BYikc8I/AAAAAAAAABQ/LFu9dAAlixs/s72-c/gimpanim.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-285617166135260996</id><published>2007-03-22T11:39:00.000+01:00</published><updated>2007-08-08T20:27:41.625+02:00</updated><title type='text'>Home inventory software</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ztwz8teIbCk/RgJeh9r_HII/AAAAAAAAABE/-Zr9h3KQz68/s1600-h/shot4big.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ztwz8teIbCk/RgJeh9r_HII/AAAAAAAAABE/-Zr9h3KQz68/s400/shot4big.png" alt="" id="BLOGGER_PHOTO_ID_5044698470196124802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I decided to try to go into shareware business on Linux. Many people are complaining that Linux is hostile ground for shareware authors and it is possible so. I guess that Linux users are used to have things for free, well at least I have. But it also gets us to the point where some kind of "boring" software isn't available on Linux. By "boring" I mean in the sense that such software is "boring" for developers to make, and they would probably never do it for fun, but rather expecting some money in return.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-285617166135260996?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/285617166135260996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=285617166135260996' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/285617166135260996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/285617166135260996'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/03/home-inventory-software.html' title='Home inventory software'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ztwz8teIbCk/RgJeh9r_HII/AAAAAAAAABE/-Zr9h3KQz68/s72-c/shot4big.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-1308703260600861614</id><published>2007-03-14T12:55:00.000+01:00</published><updated>2007-03-14T13:23:13.355+01:00</updated><title type='text'>Notebook design</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ztwz8teIbCk/RffkEAYk-uI/AAAAAAAAAA8/2KDxu24QFGM/s1600-h/compaq.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ztwz8teIbCk/RffkEAYk-uI/AAAAAAAAAA8/2KDxu24QFGM/s400/compaq.jpg" alt="" id="BLOGGER_PHOTO_ID_5041749065338256098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;There were times when only a few companies were making laptop computers. They gave much thought to it and gained big experience. You can still see some of those old rusty machines running. Today, there are many manufacturers, but they have a long way to go and some basic things to learn.&lt;br /&gt;&lt;br /&gt;Take this photo for example. It's my 5-year old Compaq &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Evo&lt;/span&gt; N160, and that's why the arrows on &lt;i&gt;arrow keys&lt;/i&gt; are not there anymore. It was my first notebook so, coming from a regular PC, I was a little nervous about small keyboard, lack of numeric keys, etc. I thought to myself: look, they even &lt;b&gt;wasted two free places&lt;/b&gt; above the cursor keys (left and right one). It wasn't until recently that I realized how genius this design is: I bought a new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Asus&lt;/span&gt; A6000 series laptop. Very cool machine, and those two spots were used to &lt;i&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Fn&lt;/span&gt;&lt;/i&gt; and &lt;i&gt;Windows menu&lt;/i&gt; keys. First time I wanted to work at night - the problem has shown up: It's darn hard to find cursor keys in the dark.&lt;br /&gt;&lt;br /&gt;Being a programmer myself, cursor keys are probably the most important ones, as you move around in source code all the time. Having to look where they are is a real pain. With old Compaq, my right hand would just go down until it finds &lt;b&gt;those two empty spots. &lt;/b&gt;Working without it is a real pain. So, finally, few months later I couldn't bare it anymore and I decided to yank out the &lt;i&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Fn&lt;/span&gt;&lt;/i&gt; key - I have another one in the bottom-left corner of the keyboard anyway. Anyway, this example shows experience in some field is also important in hardware industry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-1308703260600861614?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/1308703260600861614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=1308703260600861614' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1308703260600861614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1308703260600861614'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/03/notebook-design.html' title='Notebook design'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ztwz8teIbCk/RffkEAYk-uI/AAAAAAAAAA8/2KDxu24QFGM/s72-c/compaq.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-3895111789456900794</id><published>2007-02-21T17:06:00.000+01:00</published><updated>2007-02-21T17:11:01.105+01:00</updated><title type='text'>UDEV woes - part 1</title><content type='html'>Today I decided to play with udev and make sure that my multi-card reader automatically detects the device and make it available under /dev/memory_stick. Knowing a little about it, I decided to RTFM. So, I typed "man udev" and it goes:&lt;br /&gt;&lt;br /&gt;"udev expects its main configuration file at /etc/udev/udev.conf. The following variables can be overridden in this file:&lt;br /&gt;...&lt;br /&gt;udev_log&lt;br /&gt;              The logging priority which can be set to err ,info or the corresponding numerical syslog(3) value.  The default value is err."&lt;br /&gt;&lt;br /&gt;Ok, cool, so I went to /etc/udev, opened the udev.conf file, and it says:&lt;br /&gt;&lt;br /&gt;# udev_log - set to "yes" if you want logging, else "no"&lt;br /&gt;udev_log="no"&lt;br /&gt;&lt;br /&gt;WTF?&lt;br /&gt;&lt;br /&gt;...stay tuned... to be continued.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-3895111789456900794?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/3895111789456900794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=3895111789456900794' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3895111789456900794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3895111789456900794'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/02/udev-woes-part-1.html' title='UDEV woes - part 1'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-1645438812091267153</id><published>2007-02-19T11:47:00.000+01:00</published><updated>2007-02-19T11:58:58.655+01:00</updated><title type='text'>Benefit of distributed version control</title><content type='html'>Lately I seen reports about various distributed version control. Although it seemed useful (you can work on train argument), I didn't see any real benefit or reason to use it myself. Until today.&lt;br /&gt;&lt;br /&gt;On my laptop I have multiple operating systems installed as virtual machines. I do the developement on main (host) system, and then try to deploy on various guest systems to see how stuff works. And sometimes something just doesn't work. So I have to change it in host system, copy to guest, recompile and try it. When you have to develop large piece of software for multiple platoform this becomes tiresome.&lt;br /&gt;&lt;br /&gt;And then I figured it out. I setup the guest system to fetch code directly from main repository, did the changes on guest system, and when it worked fine I commited changes to main repository. There are two problems with this:&lt;br /&gt;&lt;br /&gt;a) you must commit while working, i.e. you commit unstable code. This basically means you need to branch for each small feature you're working on - which sucks.&lt;br /&gt;&lt;br /&gt;b) if the repository is unreachable (i.e. you DO work on train, or don't have Internet access for some other reason) you cannot basically do it, so you have dicrepancy between version in guest and host system.&lt;br /&gt;&lt;br /&gt;So, I set up the local Subversion repository and worked there, which turn out to be great. However, the problem is migrating those changes to main repository when done. This is exactly the problem that distributed version control systems solve.&lt;br /&gt;&lt;br /&gt;Now, I have to decide which one to use. If you can recommend some good, reliable, distributed version control system, please leave the comment and pros are cons of using it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-1645438812091267153?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/1645438812091267153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=1645438812091267153' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1645438812091267153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1645438812091267153'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/02/benefit-of-distributed-version-control.html' title='Benefit of distributed version control'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-3893515147864822377</id><published>2007-02-14T14:12:00.000+01:00</published><updated>2007-02-14T14:17:49.335+01:00</updated><title type='text'>More Games</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ztwz8teIbCk/RdMK1Nm-GNI/AAAAAAAAAAw/excHuQ1myA8/s1600-h/shotxo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ztwz8teIbCk/RdMK1Nm-GNI/AAAAAAAAAAw/excHuQ1myA8/s400/shotxo.jpg" alt="" id="BLOGGER_PHOTO_ID_5031377118005434578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I dug out some old stuff I did while trying to learn Java. It's a bunch of simple games written as Java applets. As this code is laying dead since 2000, it decided to release it as open source project. I hacked up a website, so check it out:&lt;br /&gt;&lt;br /&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;a href="http://javagames.sourceforge.net/"&gt;http://javagames.sourceforge.net&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are four games: tic-tac-toe on 10x10 board, two puzzle games similar to Master Mind and Memory and good old Tetris. All those are playable online, so if you're looking for something fun to kill a few minutes, this might be for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-3893515147864822377?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/3893515147864822377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=3893515147864822377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3893515147864822377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3893515147864822377'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/02/more-games.html' title='More Games'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ztwz8teIbCk/RdMK1Nm-GNI/AAAAAAAAAAw/excHuQ1myA8/s72-c/shotxo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-3101491319949423634</id><published>2007-02-12T09:47:00.000+01:00</published><updated>2007-02-06T11:18:13.771+01:00</updated><title type='text'>Kompare your sources</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ztwz8teIbCk/RdAr4tm-GMI/AAAAAAAAAAk/75AUy4ulKfs/s1600-h/kompare.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ztwz8teIbCk/RdAr4tm-GMI/AAAAAAAAAAk/75AUy4ulKfs/s400/kompare.png" alt="" id="BLOGGER_PHOTO_ID_5030569037088561346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Kompare&lt;/span&gt; is a very useful piece of software and I could hardly live without it. It really good when you need to visually compare two source trees or simply two files. You can also use it to apply differences to one of the files. There are three things that I don't like about it:&lt;br /&gt;&lt;br /&gt;1. It only allows to apply changes in one direction. The excuse might be that it makes sure you don't change the file you don't want. Other tools I've seen (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;WinMerge&lt;/span&gt;) simply have a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;checkbox&lt;/span&gt; saying "read-only" on both sides, so you can easily decide which one of "source" and which is "destination"&lt;br /&gt;&lt;br /&gt;2. The other thing is that many times I have changes in both files at same places. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Kompare&lt;/span&gt; selects a large chunk of code as a single section. What I'd like is to be able to select some lines from that chunk and only add those to the destination.&lt;br /&gt;&lt;br /&gt;3. As I wrote, I make changes to both files at same place. Sometimes I just need to add a line from "source" without overwriting the "destination" file. However, that doesn't seem to be possible with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Kompare&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;There are great &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;development&lt;/span&gt; tools on Linux, but they really need some polish to be excellent tools.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-3101491319949423634?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/3101491319949423634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=3101491319949423634' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3101491319949423634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/3101491319949423634'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/02/kompare-your-sources.html' title='Kompare your sources'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ztwz8teIbCk/RdAr4tm-GMI/AAAAAAAAAAk/75AUy4ulKfs/s72-c/kompare.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-1718507421816515308</id><published>2007-02-06T11:11:00.000+01:00</published><updated>2007-02-06T11:18:13.897+01:00</updated><title type='text'>Java coming back to Windows?</title><content type='html'>Sun open sourced Java recently. At first I didn't really care much about it, but now I started thinking. From what I know, few years ago, Microsoft lost a law suit regarding Java technology and they removed it from their operating system. This meant that you didn't get Java with Windows default installation. I also believe that it's one of the reasons Microsoft created .Net stuff.&lt;br /&gt;&lt;br /&gt;It would be interesting to see Microsoft's reaction to this. Will new versions of Windows include Java by default. Too bad that Vista is already out and who knows when we'll have a new version of operating system from Microsoft. Maybe in another five years. It makes me wonder did Sun really have bad timing with this or they did it on purpose? Who knows, maybe Microsoft don't care much about Java anymore. I see them pushing .Net really strong.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-1718507421816515308?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/1718507421816515308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=1718507421816515308' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1718507421816515308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1718507421816515308'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/02/java-coming-back-to-windows.html' title='Java coming back to Windows?'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-148540275667906444</id><published>2007-01-30T14:11:00.000+01:00</published><updated>2007-01-30T10:44:16.820+01:00</updated><title type='text'>Take a break</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ztwz8teIbCk/RbIVbNjYLuI/AAAAAAAAAAY/RYzbnOLbM5c/s1600-h/micropause.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ztwz8teIbCk/RbIVbNjYLuI/AAAAAAAAAAY/RYzbnOLbM5c/s400/micropause.png" alt="" id="BLOGGER_PHOTO_ID_5022100091710222050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Workrave is one piece of software I use all the time. It's a program that assists in the recovery and prevention of Repetitive Strain Injury (RSI). The program frequently alerts you to take micro-pauses, rest breaks and restricts you to your daily limit. Great stuff and it saves my eyesight from getting any worse (beside other things).&lt;br /&gt;&lt;br /&gt;The only problem is the one I have with Linux version. When it pops up micro-break, I can click the &lt;b&gt;rest break &lt;/b&gt;button. However, at my job, I allowed rest break to be cut off, as I could have a client on the phone, and it's not a good idea to keep them waiting. So, basically I can kill off the micro break, which is bad. I'd like program to force me to have that microbreak. So, it's O.K. for micro break to have a rest break button, when when I enter rest break from there I should only be able to go back to micro break, and in no condition be able to break from it completely.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-148540275667906444?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/148540275667906444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=148540275667906444' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/148540275667906444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/148540275667906444'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/01/take-break.html' title='Take a break'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ztwz8teIbCk/RbIVbNjYLuI/AAAAAAAAAAY/RYzbnOLbM5c/s72-c/micropause.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-7581270488502521126</id><published>2007-01-20T12:24:00.000+01:00</published><updated>2007-01-20T12:39:32.046+01:00</updated><title type='text'>Scum of the Universe</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ztwz8teIbCk/RbH8kNjYLtI/AAAAAAAAAAM/R3ODZeexTxM/s1600-h/scum1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ztwz8teIbCk/RbH8kNjYLtI/AAAAAAAAAAM/R3ODZeexTxM/s320/scum1.jpg" alt="" id="BLOGGER_PHOTO_ID_5022072758538350290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After few months of hard work, my latest project is finally done. It's a &lt;a href="http://www.guacosoft.com/"&gt;space shooter game&lt;/a&gt;, but has some strategic elements that make it unique. Gameplay consists of general story and trading system like the famous Elite, however, in-space part is not Elite's dogfight but rather an arcade shoot'em-up like Space Invaders or Galaga. Check it out:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.guacosoft.com/"&gt;www.GuacoSoft.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-7581270488502521126?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/7581270488502521126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=7581270488502521126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/7581270488502521126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/7581270488502521126'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/01/scum-of-universe.html' title='Scum of the Universe'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ztwz8teIbCk/RbH8kNjYLtI/AAAAAAAAAAM/R3ODZeexTxM/s72-c/scum1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-1461598932718927516</id><published>2007-01-19T14:59:00.000+01:00</published><updated>2007-01-19T15:24:19.744+01:00</updated><title type='text'>Apologies</title><content type='html'>My apologies to everyone who posted comments, and to all of you who were awaiting new stuff on the Blog. Reason for the first thing is that I didn't migrate blog to new Google blogger and I didn't get any notifications about comments you made on the website. I'm sorry about that, although it is not my fault.&lt;br /&gt;&lt;br /&gt;I migrated to new blogger now, so hopefully everything will be ok.&lt;br /&gt;&lt;br /&gt;As for the new stuff, I was way to busy in past two months, and slow blogger interface also put me off a lot. I'll soon post some new articles and hopefully new blogger works faster.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-1461598932718927516?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/1461598932718927516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=1461598932718927516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1461598932718927516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/1461598932718927516'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2007/01/appologies.html' title='Apologies'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-116289156873568898</id><published>2006-11-07T10:24:00.000+01:00</published><updated>2007-01-17T20:59:37.610+01:00</updated><title type='text'>Microsoft and Novell partnership</title><content type='html'>Bright future for Linux?&lt;br /&gt;&lt;br /&gt;Depends on what you value the most.&lt;br /&gt;&lt;br /&gt;From what I read, MS and Novell plan to develop their own additions to OpenOffice, Samba and Mono. OO and Mono are LGPL, so MS and Novell can safely build their own proprietary technology and dynamically link with OO and Mono source code given by the community. I guess they can easily put the entire OO into a bunch of .so files and load them dynamically from their own office suite. They can also integrate those with their own proprietary format in new versions of MS Office. That way MS Office and their Linux version of office suite would be 100% compatible. However, if some non-SuSE distribution would want to use such office suite they would have to pay royalties.&lt;br /&gt;&lt;br /&gt;As you can see, MS idea is not to kill Linux, as they have obviously seen it is impossible. So, they decided to integrate those few important software that are main revenue source for MS, and make Linux users pay one way or another.&lt;br /&gt;&lt;br /&gt;Soon, MS won't be telling: don't use Linux. They embrace Linux users, as it means more money for their office suite - which is the main source of revenue (unlike cheap OS).&lt;br /&gt;&lt;br /&gt;As for Samba, which is GPL, MS could easily change the protocol in it's Windows systems (perhaps it is already done in Vista???) and patent the new protocol, effectivelly pushing Samba team out. Then, they'll provide their own version of Samba, possibly writing it from scratch (as MS has a lot of programmers, it isn't a problem) which would use their proprietary and patented protocol. Once again, Linux users would have 100% compatibility, but at a price.&lt;br /&gt;&lt;br /&gt;Looks like MS is playing really smart this time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-116289156873568898?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/116289156873568898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=116289156873568898' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/116289156873568898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/116289156873568898'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/11/microsoft-and-novell-partnership.html' title='Microsoft and Novell partnership'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-115990018098349871</id><published>2006-10-03T20:22:00.000+02:00</published><updated>2006-11-08T08:34:34.250+01:00</updated><title type='text'>k3b 100%</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/k3b100.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5515/1161/400/k3b100.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I find k3b to be the best CD/DVD burning software I've ever seen (both on Linux and Windows). It is nice, slick, fast, stable and works just as it should. There is only one minor glitch bothering me. The darn 100% marker in bottom-left corner of file browser. It sits there and always covers one of the files or directories. Many times I need to select that file or enter that directory. You can't remove it by clicking or anyhow.&lt;br /&gt;&lt;br /&gt;I wish someone makes it go away. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-115990018098349871?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/115990018098349871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=115990018098349871' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115990018098349871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115990018098349871'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/10/k3b-100.html' title='k3b 100%'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-115989973173856725</id><published>2006-10-03T20:15:00.000+02:00</published><updated>2006-10-03T20:22:11.760+02:00</updated><title type='text'>Dune and Iron Maiden</title><content type='html'>I just finished reading the last, 6th book of Frank Herbert's Dune series. Excellent stuff, they say Frank Herbert is to Sci-Fi what is Tolkien for Fantasy. Anyway, during the course of reading the books, I complied a &lt;a href="http://abrick.sourceforge.net/dune.points.html"&gt;list of memorable quotes&lt;/a&gt;. They are not grouped, but rather in the same order they appear in the books (with little shuffle to put similar things together).&lt;br /&gt;&lt;br /&gt;After playing the Dune game and watching the Dune movie, reading the Dune books concludes it. BTW, while reading I listened to Iron Maiden music. It goes together very good (if you like heavy-metal, of course).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-115989973173856725?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/115989973173856725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=115989973173856725' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115989973173856725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115989973173856725'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/10/dune-and-iron-maiden.html' title='Dune and Iron Maiden'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-115740773693398089</id><published>2006-09-05T00:02:00.000+02:00</published><updated>2006-09-05T00:08:56.946+02:00</updated><title type='text'>Joining AJAX and web services</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/cowsbug.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5515/1161/400/cowsbug.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The more I learn about AJAX (I'll soon have it fully implemented in some of my applications) the more I develop a view of it. AJAX looks to me as interactive web service. A web service to which you can send the request and it provides. But it doesn't require reloading of web page. Powerful indeed.&lt;br /&gt;&lt;br /&gt;Looks like I'm not the only one thinking that way. I just found a very interesting website:&lt;br /&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://cows-ajax.sourceforge.net/"&gt;http://cows-ajax.sourceforge.net/&lt;span class="" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see in the screenshot, they still have bugs to fix before convincing everyone that this is &lt;b&gt;the real thing&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-115740773693398089?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/115740773693398089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=115740773693398089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115740773693398089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115740773693398089'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/09/joining-ajax-and-web-services.html' title='Joining AJAX and web services'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-115636409709164246</id><published>2006-08-23T21:51:00.000+02:00</published><updated>2006-08-23T22:16:37.046+02:00</updated><title type='text'>Google vs Yahoo! vs ...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/sengines.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5515/1161/320/sengines.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;br /&gt;I decided to run an interesting experiment.&lt;br /&gt;&lt;br /&gt;Google search:&lt;br /&gt;1. google - 2,610,000,000 hits&lt;br /&gt;2. microsoft - 1,760,000,000 hits&lt;br /&gt;3. yahoo - 1,410,000,000 hits&lt;br /&gt;4. linux -  1,300,000,000 hits&lt;br /&gt;&lt;br /&gt;Yahoo search:&lt;br /&gt;1. yahoo - 897,000,000 hits&lt;br /&gt;2. microsoft - 521,000,000 hits&lt;br /&gt;3. google - 469,000,000 hits&lt;br /&gt;4. linux - 362,000,000 hits&lt;br /&gt;&lt;br /&gt;Well, an expected and consistent (bias). However, the following really surprised me:&lt;br /&gt;&lt;br /&gt;MSN search:&lt;br /&gt;1. yahoo - 104,416,381 hits&lt;br /&gt;2. linux - 96,223,532 hits&lt;br /&gt;3. microsoft - 83,731,317 hits&lt;br /&gt;4. google - 67,452,682 hits&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-115636409709164246?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/115636409709164246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=115636409709164246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115636409709164246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115636409709164246'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/08/google-vs-yahoo-vs.html' title='Google vs Yahoo! vs ...'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-115541143312597792</id><published>2006-08-12T21:26:00.000+02:00</published><updated>2006-08-12T21:37:13.136+02:00</updated><title type='text'>The Battle for Wesnoth</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/wesnoth.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5515/1161/320/wesnoth.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the past few years, the only computer game genre I still play occasionally are the turn-based strategies. One of my favorites is The Battle of Wesnoth, which is now at version 1.1.8. It is open source game and has made of lot of progress. Graphics are much better now than before and it is really well polished. I highly recommend it to anyone who like turn-based strategies.&lt;br /&gt;&lt;br /&gt;I just finished the main Heir to the Throne campaign. Here's my recall list before the final battle (level 1 units excluded):&lt;br /&gt;&lt;br /&gt;3 x Paladin&lt;br /&gt;2 x Mage of Light&lt;br /&gt;1 x Elvish Champion&lt;br /&gt;1 x Elvish Avenger&lt;br /&gt;1 x Elvish Ranger&lt;br /&gt;1 x Elvish Shyde&lt;br /&gt;1 x Dwarvish Lord&lt;br /&gt;1 x Dwarvish Dragonguard&lt;br /&gt;1 x Dwarvish Thunderguard&lt;br /&gt;1 x Merman Warrior&lt;br /&gt;&lt;br /&gt;Well, make sure you try it if you haven't already. Be prepared to neglect your family, or even worse: play together with them (as allies or foes).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-115541143312597792?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/115541143312597792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=115541143312597792' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115541143312597792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115541143312597792'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/08/battle-for-wesnoth.html' title='The Battle for Wesnoth'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-115404716771195224</id><published>2006-07-28T02:18:00.000+02:00</published><updated>2006-08-16T20:29:27.183+02:00</updated><title type='text'>KDE vs Gnome</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/remotes.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5515/1161/320/remotes.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Nope, this isn't going to be one of those flamebaits trying to convice you which one is better.&lt;br /&gt;&lt;br /&gt;Each night I turn my DVD recorder off using its remote control (I use it to switch channels instead of TV's one). I usually do it in the dark, and I usually open the disc tray first before cursing the fact that the power off button is on the other side. Other from what? Well, from TV's remote which I used just a few seconds before - to turn TV off.&lt;br /&gt;&lt;br /&gt;There's obviously no standard between makers of TV sets and DVD recorders, but this thing often reminds me of a similar issue in software: the button placing in KDE and Gnome. For those of you how don't know, KDE and Gnome have different standards on button placing in dialogs. Beside other minor things, OK and Cancel buttons are at opposite places. Of course, both camps are right, and there is no standard here, just what you might get used to.&lt;br /&gt;&lt;br /&gt;Many people get annoyed by Gnome's positioning because it is different from MS Windows. I'm not one of those people, but I do get annoyed when two applications I'm using simultaneously have different setting.&lt;br /&gt;&lt;br /&gt;It all goes down to underlying toolkits: Qt and Gtk. Now, in my not so humble opinion, instead of trying to duplicate each Gtk app in KDE, and each Qt app in Gnome (often in much worse quality) developers should play smarter and get apps to adapt to the environment. It would be cool if Gtk and Qt could simply ask the window manager: "what is thy button placing preference?". If it doesn't respond (i.e. doesn't have it), it would use the default placing used so far. Otherwise, the appopriate placing would be used and if I'm using KDE, then Gtk apps. wouldn't stick out. Conversely, if I'm using Gnome, Qt apps would blend in.&lt;br /&gt;&lt;br /&gt;I understand that this might not be easy. There is a whole new interface to implement, and some apps. might need to standardize their dialogs first (which makes all this a good idea after all)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-115404716771195224?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/115404716771195224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=115404716771195224' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115404716771195224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115404716771195224'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/07/kde-vs-gnome.html' title='KDE vs Gnome'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-115394731176167358</id><published>2006-07-26T22:42:00.000+02:00</published><updated>2006-08-17T01:59:32.866+02:00</updated><title type='text'>Watch your root partition</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/kwrite-nice.0.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5515/1161/320/kwrite-nice.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Q: What's the worst thing that could happen to you on Linux?&lt;br /&gt;A: I don't know, but not having any more disk space on root partition is disasterous.&lt;br /&gt;&lt;br /&gt;It happened to me once again. This time, it looks like I only lost my /etc/hosts file. I was just about to edit it, and tried first with vi. First I mistyped the filename:&lt;br /&gt;&lt;br /&gt;milanb@asus:~/devel/svn/ibpp-current$ su&lt;br /&gt;root@asus:/home/milanb/devel/svn/ibpp-current# vi /etc/host&lt;br /&gt;blkwrite failed&lt;br /&gt;&lt;br /&gt;Still, not thinking about this strange error message, I tried again:&lt;br /&gt;&lt;br /&gt;root@asus:/home/milanb/devel/svn/ibpp-current# vi /etc/hosts&lt;br /&gt;skipping 1 old session file&lt;br /&gt;blkopen's read failed&lt;br /&gt;&lt;br /&gt;Ok, I tought to myself, something's the matter with vi. Lets use the second option, mcedit (part of Midnight Commander). What a horrible mistake that was:&lt;br /&gt;&lt;br /&gt;root@asus:/etc# mcedit hosts&lt;br /&gt;&lt;br /&gt;It opened the file properly. I made the changes and pressed F2 to save. It reported some error that it cannot save it. Ok, nevermind, I exited the editor and to my big surprise: file is truncated!&lt;br /&gt;&lt;br /&gt;root@asus:/etc# ls -l hosts&lt;br /&gt;-rw-r--r--  1 root root 0 2006-07-26 22:34 hosts&lt;br /&gt;root@asus:/etc# cat hosts&lt;br /&gt;root@asus:/etc#&lt;br /&gt;&lt;br /&gt;Aaaargh. Now I have to try to remember what was there (I don't backup each and every file on each and every machine I have).&lt;br /&gt;&lt;br /&gt;P.S. The screenshot: before posting to blogger I usually write the text in editor, especially when system seems unstable (I was still unaware that the root partition is full). KWrite was nice to let me know what is happening. I guess sometimes I'm too lazy to think, and the good thing is that there are programs like KWrite that think for us :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-115394731176167358?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/115394731176167358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=115394731176167358' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115394731176167358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115394731176167358'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/07/watch-your-root-partition.html' title='Watch your root partition'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-115269328201182761</id><published>2006-07-12T10:15:00.000+02:00</published><updated>2006-11-14T17:37:30.190+01:00</updated><title type='text'>Firefox download manager</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/ffdownload.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5515/1161/320/ffdownload.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I use Firefox as my main web browser, and when it comes to download, I use it's own download manager. I'm aware that there are a lot of download-manager extensions available, but I hate to have to go through the process of evaluating each one. I did try a few, but they were no good, so I gave up. Besides, one has to keep track of those extensions when installing new versions or switching computers. (If you're going to recommend me some, please keep in mind that I use Linux/KDE).&lt;br /&gt;&lt;br /&gt;As for the integrated Firefox download manager, I only require one thing: ability to resume downloads when server terminates the connection, or my Internet connection gets broken, and after restarting the computer.&lt;br /&gt;&lt;br /&gt;Other things are ok, I don't feel the need for multithreaded (a.k.a. accelerated) download. And that bug with simultaneous downloads (see screenshot above) can be misleading many times, so you're never sure until you open the Downloads window.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-115269328201182761?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/115269328201182761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=115269328201182761' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115269328201182761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115269328201182761'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/07/firefox-download-manager.html' title='Firefox download manager'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-115062717067473791</id><published>2006-06-18T12:06:00.000+02:00</published><updated>2006-07-31T15:21:58.326+02:00</updated><title type='text'>Symbian - never again</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/nokia-front.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5515/1161/320/nokia-front.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Do we really need to have our cell phones turned into computers?&lt;br /&gt;&lt;br /&gt;Not so long ago, cell phones were are regular "utility" devices. Just like TV, radio, refrigerator or microwave owen. You plug it in, and it works. There are few options that you can understand without even reading the manual. Everything works as expected. Not only that, it is robust, and rarely malfunctions - when it does, you probably need to buy the new one, as old one is..... well, too old.&lt;br /&gt;&lt;br /&gt;Back in those days, you had what you need: dialing a number, receive a call, send and receive SMS messages, and have addressbook for people you know (or you believe so). I admit some features in newer phones are really useful: GPRS, different audio themes for different people, etc. But, it's getting to be much more than "few new features".&lt;br /&gt;&lt;br /&gt;On the other side, there are computers. They have a lot of features and a lot of ways to brake things. We have viruses, adware, spyware... you name it. Even without those (I'm using Linux, so I should know), there are bugs in regular programs. Any thing that gives you power and control must grow in complexity. Managing complexity is hard. That's one of the reasons the software has so many bugs. The other is that programmers are often pushed to release new versions without enough testing. Most software companies force users to be beta testers. The companies that did testing on they own and release software when it is really ready found their products lose market share to competition that doesn't do that (IBM's OS/2 comes to mind as a great example).&lt;br /&gt;&lt;br /&gt;What pulled me into writing this is that I own a Nokia 3660 phone. A very good one. It has all the basic features you can find in Nokia phones, plus GPRS, bluetooth and IR connectivity. On top of all that, is has Symbian operating system. A new promising technology that will turn our cell phones into computers. Why? Because market demands it. In fact, I think that they couldn't grow by selling cell phones as they are. Something was needed to create a hype, so people would buy new cell phone even if their old ones are fully functional.&lt;br /&gt;&lt;br /&gt;Symbian seemed like a great thing at first, and I even liked and used some applications a lot. One of those is Agile Messenger, for example (a very good multi-protocol IM client). Well, only at first. After a year, I don't think I was using any Symbian application anymore. I was using it solely as a cell phone. If I needed to browse the Internet, or read e-mail, my notebook was always around, and I just used the GPRS+bluetooth combination to get to the Web.&lt;br /&gt;&lt;br /&gt;And recently, the problems started. I always hated that I have to wait 70 seconds for my cell phone to turn on, but I understood the reasons - it had an OS. Lately, it would pop some errors while booting (Application closed - Etel. server). However, everything was functioning properly. Until one day, it wouldn't boot at all. It would get to the main menu - show it for a second and then restarted. I really don't understand why? I had bluetooth turned off all the time. Except sometime while GPRSing to the Internet, but that was months before first signs of trouble begin.&lt;br /&gt;&lt;br /&gt;People are the service shop made a full reset, as there was no other way to get it to work again. They said it might have been infected with the virus. I don't need to tell you that I lost the entire address book and some other data as well (not that much important). After all this, I'll probably sell this "smart" phone, and buy a "dumb" one. Perhaps I don't like machines being "smart" and doing stuff on their own. Perhaps, that's what "smart" stands for? The "smart" machine would go it's own way and explore the unknown, without even telling you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-115062717067473791?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115062717067473791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115062717067473791'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/06/symbian-never-again.html' title='Symbian - never again'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-115062484698299171</id><published>2006-06-18T11:35:00.000+02:00</published><updated>2007-01-05T19:27:13.106+01:00</updated><title type='text'>ReiserFS bugs</title><content type='html'>I past few weeks my colleagues at work and I have been testing resistance of our applications on the power failure. Most times we convince clients to have UPS with every computer which runs database server, but it cannot be done everywhere.&lt;br /&gt;&lt;br /&gt;We are using default 3.6 ReiserFS supplied by Slackware 10.2. We powered off the machines by force - pulling out the plug. Some of the apps. did printing on printers, so even if filesystem would loose data, we would have printed log on the printer. The show begins: in about 20 power offs, we had lost parts of some files 3 times. Ok, perhaps that was expected, since filesystem data is kept in cache, and not committed each time write happens. Since we anticipated this, we weren't much upset. The apps. are built in such way to be able to ignore this and keep working.&lt;br /&gt;&lt;br /&gt;However, there are bugs in ReiserFS that do some really bad things. On one of the systems, a log file we were examinating (after power off) was missing a part at the end. Instead of not having anything, it had some garbage characters and parts of some other file! I guess we were "lucky" to have a textual file "inserted" so we noticed it. The file was a SiS graphic card include file (.h) which is (I think) part of kernel source, found in completely different part of the hard disk (same filesystem though).  It wasn't a whole file, just the part of it, approximately the same size as the missing part of log.&lt;br /&gt;&lt;br /&gt;On the other system, we had a problem of some files in user's home directory getting mysteriously corrupt. For example, file /home/omega/.ICEauthority got corrupted in such way that we can't read, write, rename or delete it. We keep getting "permission denied" even when we set 777 permissions to both file and parent directory.&lt;br /&gt;&lt;br /&gt;It is pretty absurd that they claim ReiserFS 3.6 stable, when such things can occur. I have seen systems that run Reiser for years, without troubles (notebook I'm writing this on for example), but to be honest, those had one or none forced power offs so far. One more interesting thing is that in all those problems, when we run reiserfsck (with various options), it wouldn't detect the errors. It would just say that everything is ok.&lt;br /&gt;&lt;br /&gt;I urge developers and system administrators not to use ReiserFS for important data (like databases for example). If there is any chance of power failures and you don't have UPS, use some other filesystem. Which one? I don't know. I made a list containing ext3, jfs and xfs. We'll try those in the following weeks and see which one shows to be robust enough. Stay tuned...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-115062484698299171?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/115062484698299171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=115062484698299171' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115062484698299171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/115062484698299171'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/06/reiserfs-bugs.html' title='ReiserFS bugs'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-114692287622543921</id><published>2006-05-06T15:32:00.000+02:00</published><updated>2006-08-16T06:14:50.586+02:00</updated><title type='text'>Which apps. are you running?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/pstree.0.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5515/1161/400/pstree.0.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Many times I get into argument why is Slackware distribution on my choice. I like it because it's simple, robust and not bloated. But, I'm quite specific as I don't try every app-of-the-day and only run what I really need. I can install and setup Slackware from scratch in few hours and start using it at full speed. How come? Well, take a look at the apps I'm running and you'll see that I'm not that much of demanding user.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-114692287622543921?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/114692287622543921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=114692287622543921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114692287622543921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114692287622543921'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/05/which-apps-are-you-running.html' title='Which apps. are you running?'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-114676874040803733</id><published>2006-05-04T20:25:00.000+02:00</published><updated>2006-08-11T07:38:44.483+02:00</updated><title type='text'>BSCommander - yet another OFM</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/bsc.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5515/1161/400/bsc.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You might wonder what is OFM. Well, it's Orthodox File Manager:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.softpanorama.org/OFM/index.shtml"&gt;http://www.softpanorama.org/OFM/index.shtml&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Orthodox_file_manager"&gt;http://en.wikipedia.org/wiki/Orthodox_file_manager&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Well, I just tested BSCommander 2.20 today. Install was almost too easy, as Slackware package is available from slacky.it. It has many useful options I couldn't find in other similar programs and idea with tabs is excellent and done properly. It uses Qt library and works really fast (which can't be said for Krusader and Konqueror and many others). Keyboard shortcuts are setup very good (although not configurable). &lt;br /&gt;&lt;br /&gt;Famous Backspace key works, which is great. The file list flashes a little when navigating directories, but I can live with that. File copying and similar ops work quite good and overall visual look is pleasing. It really has potential to become the best tool in this category, but some stuff needs to be fixed first, and some features need to be added:&lt;br /&gt;&lt;br /&gt;One thing I can't find is how to make the opposite panel display the same directory as the current one (can be done with Meta+o in mc). Many times I just need to move/copy some file few directories up or down the hierarchy, so this one is crucial for me.&lt;br /&gt;&lt;br /&gt;Another useful option that is lacking is ability to open terminal in current directory (or at least execute command there). Most other programs of this kind have that feature. It would also be useful with FTP to be able to send some command to the server (for example, when I connect to ftp on Windows server, I need to type "cd d:" to access second partition).&lt;br /&gt;&lt;br /&gt;One of the things that could be fixed is that it doesn't remember the position (selected directory) during FTP session. It works properly on local disk though.&lt;br /&gt;&lt;br /&gt;Also, it is not possible to copy directories via FTP, which doesn't really make FTP support useful. &lt;br /&gt;&lt;br /&gt;To conclude, very cute program with lot of potential. However, I'm still looking for decent GUI ftp client for linux...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-114676874040803733?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/114676874040803733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=114676874040803733' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114676874040803733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114676874040803733'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/05/bscommander-yet-another-ofm.html' title='BSCommander - yet another OFM'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-114467712609807047</id><published>2006-04-17T08:47:00.000+02:00</published><updated>2006-12-08T14:21:37.506+01:00</updated><title type='text'>My first MQFA on Linux</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/firefoxcrash.2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5515/1161/400/firefoxcrash.0.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Q: What happens when Firefox crashes?&lt;br /&gt;&lt;br /&gt;A: You lose all the pages you had opened.&lt;br /&gt;&lt;br /&gt;Well, I've seen a lot of those Mozilla Quality Feedback Agent back on Windows 98. Since I switched completely to Linux in february this year, I haven't had a single one. I even forgot it exists.&lt;br /&gt;&lt;br /&gt;Now, look at that uglyness. It looks like it is not using Gtk, but rather like some TCL/Tk or even Xlib application. I hated the dialog on Windows - but this one is funny. It also ask about website I was visiting. Well, hard to remember as it was a Google search result, and the exact search term was ... hm, can't remember, but History will refresh my mind. Good thing history is saved before program exit.&lt;br /&gt;&lt;br /&gt;Well, FF has to have it's own BSOD, otherwise it wouldn't be considered serious software.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-114467712609807047?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/114467712609807047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=114467712609807047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114467712609807047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114467712609807047'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/04/my-first-mqfa-on-linux.html' title='My first MQFA on Linux'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-114470021204145519</id><published>2006-04-10T22:04:00.000+02:00</published><updated>2006-04-10T22:20:10.786+02:00</updated><title type='text'>AJAX based chess game... sucks</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/morfikchess.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5515/1161/400/morfikchess.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To quote the Morfik team:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;If you take your browsers to this chess game, you might start to understand what I mean. This game has a great interface and is played against you by your own computer. Your moves do not get sent off to a server which comes up with a response and sends a move order back to your browser. The analisys of the play and the decision of the move is entierly done in Javascript, in your own machine, by the browser.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is a really &lt;span style="font-weight:bold;"&gt;bad choice&lt;/span&gt; for web app. and their example only proves it. &lt;br /&gt;&lt;br /&gt;After "check mate"-ing it in only 17 moves, the game started to consume 100% CPU. Luckily Mozilla figured out that it is better to shut it down (see screenshot). &lt;br /&gt;&lt;br /&gt;My machine is AMD Turion(tm) 64 Mobile Technology MT-30 running at 1.6GHz. It has 512MB RAM, but only 1/2 of it is really used.&lt;br /&gt;&lt;br /&gt;Let's face it. AJAX is cool, but uses are limited. Being web-apps developer myself, I conclude that there are cases for AJAX, and there are cases when it shouldn't be used. The smart developer isn't one who knows how to implement it, but one who knows &lt;span style="font-weight:bold;"&gt;where&lt;/span&gt; and &lt;span style="font-weight:bold;"&gt;when&lt;/span&gt; to implement it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-114470021204145519?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/114470021204145519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=114470021204145519' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114470021204145519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114470021204145519'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/04/ajax-based-chess-game-sucks.html' title='AJAX based chess game... sucks'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-114313454223489116</id><published>2006-04-09T13:16:00.000+02:00</published><updated>2006-12-06T01:00:42.693+01:00</updated><title type='text'>Subversion GUI for Linux</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/esvn.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5515/1161/400/esvn.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some time ago, all the projects I'm involved in, switched from CVS to Subversion. After I've seen how good it is, I switched all my projects as well (even the commercial stuff I'm working on). As I use Linux as my main OS, I started the quest to find a suitable graphical SVN client for Linux. I tried these:&lt;br /&gt;&lt;br /&gt;1. KdeSVN&lt;br /&gt;2. eSVN&lt;br /&gt;3. RapidSVN&lt;br /&gt;&lt;br /&gt;They all have a single problem in common. When you add a lot of files in your working copy, you should be able to painlessly add them to repository. TortoiseSVN (Subversion client from MS Windows) does it the proper way:&lt;br /&gt;&lt;br /&gt;a) run "svn status", and take all the files returned by it&lt;br /&gt;b) show that list with checkboxes so user can pick which of those unversioned files (s)he wants to add&lt;br /&gt;c) add them&lt;br /&gt;&lt;br /&gt;Nice, simple and user-friendly. Unfortunately, none of those Linux programs have it. They all require that you pin-point each file. Sometimes I even add a file somewhere deep in directory structure, and forget about. I only catch the problem when I (or someone else) figure it is missing when working on another computer. &lt;br /&gt;&lt;br /&gt;I tried to circumvent the problem by running the "status" command, but eSVN for example lists &lt;span style="font-weight:bold;"&gt;all&lt;/span&gt; files, since it envokes "svn status" with verbose flag. Who ever uses that feature I wonder?&lt;br /&gt;&lt;br /&gt;Anyway, from all those, I prefer eSVN for its user interface. It is clean - so it's easy to spot the changes, and it doesn't flicker like RapidSVN. KDEsvn seems quite good, but it has a lot of background "syncing" with the repository (I think I've seen the option to turn it off, but didn't bother). Why do tool makers add some extra-cool-whatever-used-by-nobody features instead of adding the esential ones? It really escapes me.&lt;br /&gt;&lt;br /&gt;Given all this, I'm still using command-line svn from terminal most of the time. Sometimes I run svn status in terminal, and then hunt for files in GUI.&lt;br /&gt;&lt;br /&gt;To all those "Linux desktop" proponents: If you want to see quality Linux desktop - make some pressure on developers of these tools (I'm trying by posting this on my blog).&lt;br /&gt;&lt;br /&gt;All they need to implement is 4 basic svn commands:&lt;br /&gt;&lt;br /&gt;svn update&lt;br /&gt;svn commit&lt;br /&gt;svn add&lt;br /&gt;svn status&lt;br /&gt;&lt;br /&gt;And they need to do it properly. We can do checkout manually, we can do merging and other once-a-year stuff manually. But this day-to-day features must work. All the tools I tried only implemented update and commit as they should, "add" and "status" need to be connected.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-114313454223489116?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/114313454223489116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=114313454223489116' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114313454223489116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114313454223489116'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/04/subversion-gui-for-linux.html' title='Subversion GUI for Linux'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-114401042197925663</id><published>2006-04-02T22:35:00.000+02:00</published><updated>2007-01-15T10:18:30.050+01:00</updated><title type='text'>Opera browser is SLOW</title><content type='html'>Opera... fastest browser on Earth?&lt;br /&gt;&lt;br /&gt;Yeah, right. I just found some website that crashes Mozilla and Firefox few days ago. As I didn't want to use Internet Explorer, I decided to give Opera a shot. So, I downloaded the latest version 8.53.&lt;br /&gt;&lt;br /&gt;It works fine, but it's far from being fastest. Most of the time it's as good as any other, however on some pages with pictures shown in sizes smaller than original - it just sucks. Here are few pages that make Opera crawl:&lt;br /&gt;&lt;br /&gt;http://www.pgadmin.org/screenshots/&lt;br /&gt;http://www.kappix.com/screenshots.htm&lt;br /&gt;&lt;br /&gt;Well, I guess I'm yet to find The Perfect Browser...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-114401042197925663?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/114401042197925663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=114401042197925663' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114401042197925663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114401042197925663'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/04/opera-browser-is-slow.html' title='Opera browser is SLOW'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-114354048535638881</id><published>2006-03-28T11:58:00.000+02:00</published><updated>2006-12-11T06:13:11.530+01:00</updated><title type='text'>xCHM - .chm viewer for Linux</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/xchm14.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5515/1161/320/xchm14.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One of the things I missed on Linux was a quality .chm file viewer. I installed xCHM about year (or more) ago. I was good, but missed important features like copy/paste and Index. Well, I just tried version 1.4, and I'm delighted.&lt;br /&gt;&lt;br /&gt;Today I learned that there is also GnoCHM, but it requires Gnome which I don't have installed on my Slackware, and it seems like overkill to install entire Gnome for this. Plus, many people have problems with available Gnome packages for Slackware, so I decided to forget about - especially after I tried new xCHM. It really rocks.&lt;br /&gt;&lt;br /&gt;Some people might argue that it requires wxWidgets, but that's not even a slight problem for me, as I develop wxWidgets based applications myself, so I already have it installed (in 5-6 different versions and configurations).&lt;br /&gt;&lt;br /&gt;If you tried xCHM before and didn't like it - give it another shot. There is no better way to read PHP manual (at least: known to me). CHM is superior to plain HTML documentation because it provides you with Index and Search features - and grep just isn't that user friendly for this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-114354048535638881?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/114354048535638881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=114354048535638881' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114354048535638881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114354048535638881'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/03/xchm-chm-viewer-for-linux.html' title='xCHM - .chm viewer for Linux'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-114318515535954942</id><published>2006-03-26T08:18:00.000+02:00</published><updated>2006-03-26T10:09:31.213+02:00</updated><title type='text'>FreeCiv 2.1</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/freeciv.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5515/1161/400/freeciv.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After seeing the screenshots with new graphics, I fetched the latest FreeCiv sources and tried it out. It's great! Now, I see that 2.1 is getting close to release date, and I can hardly wait for it. FreeCiv is one of those rare games which have very high replayablity. I think I played it a 100 times already, if not much more.&lt;br /&gt;&lt;br /&gt;New graphic, and some useful improvements like visual tech tree and stuff will probably get FreeCiv the status it deserves. When I tried to get some of my friends to play it before, they would comment that graphics is awful (although IMHO it wasn't that bad), and they wouldn't even try. I played the current development version with one of them, and she's thrilled about that way everything looks and works now. I guess, all FreeCiv lacked before was some eye-candy.&lt;br /&gt;&lt;br /&gt;Well, cheers for the best turn-based strategy game ever. (At least among open-sourced ones).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-114318515535954942?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/114318515535954942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=114318515535954942' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114318515535954942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114318515535954942'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/03/freeciv-21.html' title='FreeCiv 2.1'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-114329492112992058</id><published>2006-03-25T14:51:00.000+01:00</published><updated>2006-03-25T14:55:21.140+01:00</updated><title type='text'>KLaptop logs off no matter what</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/kdebattery.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5515/1161/400/kdebattery.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just another annoying thing. I have setup up the KDE to do nothing when my laptop's battery is about to run out, yet it logs me off no matter what. While I do appreciate it saving my filesystem (or whatever), most of the programs I use don't get restored when I log back in (since they are not KDE apps.)&lt;br /&gt;&lt;br /&gt;KDE 3.4.2, KLaptop 1.4&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-114329492112992058?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/114329492112992058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=114329492112992058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114329492112992058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114329492112992058'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/03/klaptop-logs-off-no-matter-what.html' title='KLaptop logs off no matter what'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-114311024149407132</id><published>2006-03-24T11:26:00.000+01:00</published><updated>2006-03-23T13:59:15.213+01:00</updated><title type='text'>Run commands on multiple servers</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://njam.sourceforge.net/multiexec.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 300px;" src="http://njam.sourceforge.net/multi.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;...simultaneously.&lt;br /&gt;&lt;br /&gt;I just discovered this very cool feature of Konsole. You can log into multiple servers (via ssh) and run the same command in each Konsole tab at once. It's great when you have many computers with same configuration. Just log in, and select one of Konsole's tabs to be the one to "broadcast" input to all others. It works for all tabs in a single Konsole window.&lt;br /&gt;&lt;br /&gt;It also useful when you have several users on the same computer, and you wish to make sure all of them have the same rights, and that they can perform some operations without stepping on each others toes.&lt;br /&gt;&lt;br /&gt;One of the problems is monitoring the effects of commands. Well, you can detach the tabs (Detach Session menu item) after you set up the broadcasting. If you have large enough screen, you can set up 8 or 9 windows nicely, and watch what's happening. Really useful stuff.&lt;br /&gt;&lt;br /&gt;One warning though: don't forget to turn it off once you're done. It's easy to forget yourself and start some clean-up job (&lt;span style="font-style:italic;"&gt;rm -rf /&lt;/span&gt;) which is only meant to one of machines.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-114311024149407132?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/114311024149407132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=114311024149407132' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114311024149407132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114311024149407132'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/03/run-commands-on-multiple-servers.html' title='Run commands on multiple servers'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-114293520943261838</id><published>2006-03-23T01:23:00.000+01:00</published><updated>2006-03-23T09:01:17.220+01:00</updated><title type='text'>Terminals and full screen</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/bashterm.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5515/1161/400/bashterm.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is one of the most annoying things I run into while using Linux (which is 90% of the time I spend in front of computer).&lt;br /&gt;&lt;br /&gt;When you open a terminal (Konsole, for example) it gives you the default 80x24 size and takes approx. 1/4 of your screen. Type in some long command, longer than a single line. Run it. Ok, now press the UP arrow key to get it back. Everything's fine, the prompt scrolls up by a line, and you see the command, just like you typed it.&lt;br /&gt;&lt;br /&gt;Now, maximize the window. Try doing the same. Sometimes, lines just get messed up. You don't see on the screen, what you've seen before - altough it is there. You can edit, run, whetever. What's worse, it doesn't seem to happen for some obvious reason - I tried to find the exact steps to reproduce it, and failed. Still, it occurs on a daily basis, esp. after I've been logged in on remote computer via ssh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-114293520943261838?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/114293520943261838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=114293520943261838' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114293520943261838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114293520943261838'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/03/terminals-and-full-screen.html' title='Terminals and full screen'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-114302462279579980</id><published>2006-03-22T11:33:00.000+01:00</published><updated>2006-03-22T14:36:54.996+01:00</updated><title type='text'>SSH troubles</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/ssh-scp.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5515/1161/400/ssh-scp.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm using ssh and scp on a daily basis, and here are some stuff I dislike:&lt;br /&gt;&lt;br /&gt;I use ssh most of the time to connect to one side of some tunnel. Tunnels start at my localhost at different ports. So I use something like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;ssh -p 22002 localhost&lt;br /&gt;ssh -p 22003 localhost&lt;br /&gt;etc.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;However, I get: &lt;span style="font-weight:bold;"&gt;WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!&lt;/span&gt; ...etc.&lt;br /&gt;&lt;br /&gt;IMHO, ssh should use hostname+port instead of just hostname to identify hosts.&lt;br /&gt;&lt;br /&gt;Next thing, scp and ssh don't use the same flag to specify port. Ssh uses -p, while scp uses -P. What's even worse, if I sometimes forget myself, and give -p to scp, it silently ignores it and tries to contact the host at default port 22.&lt;br /&gt;&lt;br /&gt;On our network, we also have a dialup server. The client that connects to it, always gets the same IP address (192.168.2.99). We use it when customer dials in, just:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;ssh 192.168.2.99&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and we're in... or not. Again, ssh's protective mechanisms step in and alert - not just alert, but also forbid the connection. In fact, that's the main thing I don't like about it. Ok, give me a warning, give me an option like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Are you sure you wish to continue?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Instead of dreaded:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Add correct host key in /home/milanb/.ssh/known_hosts to get rid of this message.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Taking about being "user friendly"...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-114302462279579980?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/114302462279579980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=114302462279579980' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114302462279579980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114302462279579980'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/03/ssh-troubles.html' title='SSH troubles'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-114294927460476091</id><published>2006-03-21T14:48:00.000+01:00</published><updated>2006-03-22T14:42:35.270+01:00</updated><title type='text'>Copy/Paste in KDE</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5515/1161/1600/menu.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5515/1161/320/menu.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;This is becoming really annoying. I'm using KDE 3.4 (which comes with Slackware 10.2 - the latest at the time of writing). AFAIK, Pat doesn't alter KDE sources, so this is definitely a problem in KDE.&lt;br /&gt;&lt;br /&gt;I happens almost every time: copy... and nothing gets into clipboard. Even between KDE apps. It just happened between Kate and Konsole. It's even worse when you want to do Cut+Paste. Better don't close the app. until you pasted the text.&lt;br /&gt;&lt;br /&gt;Yes, I don't run Klipper. Why should I? And guess what: doing copy the second time works. So should I just do Copy twice each time?&lt;br /&gt;&lt;br /&gt;No, I'm not going to submit a bug report to KDE team. If they don't see this and aren't annoyed, why should I be, I'll just switch back to IceWM or give Gnome another shot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-114294927460476091?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/114294927460476091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=114294927460476091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114294927460476091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114294927460476091'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/03/copypaste-in-kde.html' title='Copy/Paste in KDE'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24453085.post-114293312395512913</id><published>2006-03-21T10:22:00.000+01:00</published><updated>2006-03-21T10:25:23.963+01:00</updated><title type='text'>Hello World</title><content type='html'>This is the place where you can read my thoughts and opinions on various stuff, but mostly software related stuff. I'll rant about what I dislike about some software products. I'm user and programmer of Open Source software, so I'll find the time to criticize it, and also brag about bugs and things that annoy me. &lt;br /&gt;&lt;br /&gt;I hope you'll enjoy the ride.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24453085-114293312395512913?l=swoes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swoes.blogspot.com/feeds/114293312395512913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24453085&amp;postID=114293312395512913' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114293312395512913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24453085/posts/default/114293312395512913'/><link rel='alternate' type='text/html' href='http://swoes.blogspot.com/2006/03/hello-world.html' title='Hello World'/><author><name>Milan Babuskov</name><uri>http://www.blogger.com/profile/04196225787178888049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.flamerobin.org/images/babuskov.jpg'/></author><thr:total>0</thr:total></entry></feed>
