Monday, August 28, 2006
Libraries, books, Wow
I don't quite care for the title, but yeah, those *are* Lovely pictures of books and libraries and stacks. I would love to visit each of those at least once. For a year each :-).
Sunday, August 27, 2006
per-site color preferences in mozilla would be nice
I was surfing over to phpPatterns and I couldn't read it. It was in some sort of white over green font that was hard for me to read. At least it wasn't white (or light yellow) on black. But it's still not pleasant to read.
On the other hand, I *really* want to be visiting there regularly. I didn't want to have a separate firefox profile just to view that one site (or those sites which are hard to read due to their color schemes). I might still do that, but I'd rather avoid it if possible. So I thought I'd just go into Preferences|Content|Colors and force all pages to display in black on white.
That works OK. It messes with the tabbed style on, for instance, blogger, so that the line between the editor form and the Edit Html and Compose tabs is not there. I'm sure it messes with lots of other stylish pages too. I think I'm liking this though. I'll stick with it. If I start missing the styles on other pages I may go back, and then I guess I'll read phpPatterns on My RSS reader instead. I don't think that works right though, since I'd need to follow links, and those links wouldn't be in bloglines but would be straight to phpPatterns, and the problem re-emerges.
I would be nice if site color preferences in firefox were configurable per-page. So that when someone's pages goes unreadable, I can force the colors, but just for that page.
On the other hand, I *really* want to be visiting there regularly. I didn't want to have a separate firefox profile just to view that one site (or those sites which are hard to read due to their color schemes). I might still do that, but I'd rather avoid it if possible. So I thought I'd just go into Preferences|Content|Colors and force all pages to display in black on white.
That works OK. It messes with the tabbed style on, for instance, blogger, so that the line between the editor form and the Edit Html and Compose tabs is not there. I'm sure it messes with lots of other stylish pages too. I think I'm liking this though. I'll stick with it. If I start missing the styles on other pages I may go back, and then I guess I'll read phpPatterns on My RSS reader instead. I don't think that works right though, since I'd need to follow links, and those links wouldn't be in bloglines but would be straight to phpPatterns, and the problem re-emerges.
I would be nice if site color preferences in firefox were configurable per-page. So that when someone's pages goes unreadable, I can force the colors, but just for that page.
Thursday, August 24, 2006
Re-engineering: Assertions versus Unit Tests
I'm working on re-engineering a whole lot of badly designed code at work. The code has been mostly working for 4 to 5 years (some of it seems to have been working since 2000 even, if I can go by the author:date comment at the top). Part of the problem is that many things have changed in the business since (any particular/the) code was written. Another part is that the database design was optimized for uploading (easy to identify all the new records for the day to be uploaded), but it is incredibly anti-optimized for querying. There are around 24 basic transactional tables (it could be whittled down to around 12-15, probably, that's another issue, related things should be together in one table) and every day, an additional 24 are created with the date (in mmddyyyy format, not even yyyymmdd) tacked on.
So creating a multi-day report involves running the same query over multiple tables and processing the data on the client side, or it involves a union over many tables.
The first part of the re-engineering involves creating suitable abstractions over this mess (and no, it's not fixing the table structures to be more sane, that comes later, there's too much other code that depends on the insanity). The abstractions will allow us to provide a more reasonable view of the DATA (hiding the database details) to higher (reporting) levels. This is at some cost in CPU processing though. We use PHP, and it's just not very efficient when shoveling a lot of data around while transforming it.
I'm working on basic classes that will interact with the database (everything else interacts with these classes, no higher level code will touch the database directly). I'm finding a problem though. The code aggressively checks parameters and (for anything complex), invariants inside the methods. Checking is done through assertions. At the same time though, I developed a UnitTest class (a simpler replacement for PHPUnit and similar). And when I develop unit tests, I find myself wanting to write tests that make sure the assertions are working. But the assertions can't be tested if assert.bail=1, and the assertions would get much longer if I wanted them to return failure codes to the unit testing framework (because assertions should be simple, just make the program fail immediately).
I would also like to know *which* assertion failed (my parameter checking is pretty paranoid, so there are many checks upon method entry, even if there's only one paranoid, it might even be that there are checks for object validity even if there are no parameters).
ifdef-ing (well, if(defined(....)-ing), the assertions when unit testing doesn't seem to be the right thing to do either. But I haven't really thought that through yet. Maybe I'll try that and see what falls out.
I wonder how others have resolved assert versus unit test (actually, assert versus the goal of complete test coverage, or close to it). Hmmm, I'll google that over the weekend, maybe.
So creating a multi-day report involves running the same query over multiple tables and processing the data on the client side, or it involves a union over many tables.
The first part of the re-engineering involves creating suitable abstractions over this mess (and no, it's not fixing the table structures to be more sane, that comes later, there's too much other code that depends on the insanity). The abstractions will allow us to provide a more reasonable view of the DATA (hiding the database details) to higher (reporting) levels. This is at some cost in CPU processing though. We use PHP, and it's just not very efficient when shoveling a lot of data around while transforming it.
I'm working on basic classes that will interact with the database (everything else interacts with these classes, no higher level code will touch the database directly). I'm finding a problem though. The code aggressively checks parameters and (for anything complex), invariants inside the methods. Checking is done through assertions. At the same time though, I developed a UnitTest class (a simpler replacement for PHPUnit and similar). And when I develop unit tests, I find myself wanting to write tests that make sure the assertions are working. But the assertions can't be tested if assert.bail=1, and the assertions would get much longer if I wanted them to return failure codes to the unit testing framework (because assertions should be simple, just make the program fail immediately).
I would also like to know *which* assertion failed (my parameter checking is pretty paranoid, so there are many checks upon method entry, even if there's only one paranoid, it might even be that there are checks for object validity even if there are no parameters).
ifdef-ing (well, if(defined(....)-ing), the assertions when unit testing doesn't seem to be the right thing to do either. But I haven't really thought that through yet. Maybe I'll try that and see what falls out.
I wonder how others have resolved assert versus unit test (actually, assert versus the goal of complete test coverage, or close to it). Hmmm, I'll google that over the weekend, maybe.
Saturday, August 19, 2006
Jerry Pournelle's Byte column -- moved
It's too bad that Jerry Pournelle's contract with byte was not renewed. I've always enjoyed his columns (well, back when I could read them in dead-tree byte, and for a while, on free online byte). It's good to see that he's keeping the format though, and maintaining the site for himself at Chaos Manor Reviews.
I'd like to be able to subscribe, but that's not possible (the subscription is not inconsequential in the third world, even at my pretty good IT salary). I don't have a credit card, and even if I did, I'm not sure the transaction would be honored. Philippine credit card transactions are tricky.
I do hope that he keeps enough subscribers to make maintaining the whole chaos manor system worth his while. There are always good discussions there. I don't go there as often as I used to (due to Digg and Reddit, but it's always educational to swing by every few weeks to see what's being discussed.
I'd like to be able to subscribe, but that's not possible (the subscription is not inconsequential in the third world, even at my pretty good IT salary). I don't have a credit card, and even if I did, I'm not sure the transaction would be honored. Philippine credit card transactions are tricky.
I do hope that he keeps enough subscribers to make maintaining the whole chaos manor system worth his while. There are always good discussions there. I don't go there as often as I used to (due to Digg and Reddit, but it's always educational to swing by every few weeks to see what's being discussed.
Sunday, August 13, 2006
ubuntu wifi
I'm at Bo's coffee club in the Robinson's Galleria mall. I would put links there but frankly, I can't find the official websites with some very half-hearted googling. I'm running ubuntu on a toshiba laptop with an Atheros AR5212 802.11abg wifi card and ubuntu detected the wifi card flawlessly.
I also installed ubuntu on a winbook laptop with an Intel wifi chipset (it was a 1.5Ghz centrino system) and that was directly detected too. I'm not sure how ubuntu did that (with the intel system), since the intel firmware is required for that. I wasn't paying very much attention, just installing stuff and downloading packages from the network. Maybe it auto-downloaded the firmware upon detection. Or maybe it came with EasyUbuntu.
That probably cements my transition to ubuntu from mandriva. The main factor in the transition is the rate of development. Ubuntu has working svk packages (I never could get svk working correctly with Mandriva, although the packages are there) long before Mandriva does. And I never could get wifi working with Mandriva (although, to be fair, that was me being lazy, if I were younger and had more time and patience, I'd have figured it out long ago).
I never have been a linux fanboy. I'm a pragmatist. Whatever works better, that's what I use. Windows doesn't work for me since it's impossible to keep secure and, frankly, I can't afford the MS-Office license (windows itself I could afford, barely). Now, I *do* get a valid and legal MS-Office license with the laptops I purchase from the U.S., but then they have that pesky "legal only in the U.S.A." clause, so even if they're legal there, I can't use them in the rest of the world. At one point RedHat was the distribution to use (and before that, slackware). But now RedHat is moving in the direction of enterprise systems and I don't want to be in Fedora (where I would need to be if I wanted svk, etc).
I moved to Mandrake/Mandriva because of the superior package management, but now the speed of development isn't quite right for me. Ubuntu feels right. Although I wouldn't be surprised if I were to move on to something a bit faster later on.
Ah, but this post was not supposed to be about reminiscence. Instead, I was going to celebrate finally getting wifi working. I'm sitting in Bo's coffee club and for the price of a Cafe Latte I'm able to connect to Robinson's free wifi. The DNS is very slow (one reason why I don't have links above, the other being mentioned above), but surfing to this or that site, once it's been resolved, is pretty good. The DHCP server provides two IPs (the first of which does not reply to ping). That's a bit incompetent. But removing it from the list doesn't speed up DNS queries much (or at all, as far as I can tell). Once DNS resolves though, things are pretty good.
Connection to my office VPN is pretty fast (faster than at home), so I guess they use either meridian or PLDT (my home connection via Destiny Cable Internet takes a roundtrip overseas, so the VPN connection is reasonable, but not this fast).
OK. nmap -v says that the first DNS server *is* up, just not replying to ping.
I'm very happy to get wifi up and running, finally. Previously I didn't care very much. I still don't, really, since fast internet is available at work and at home. But it's a great convenience to be able to connect to wifi networks.
Next thing to learn, I guess, is how to connect to closed networks. It's been 4 years since I last had anything to do with that and it was a pain then (even with windows). I'm sure it's much easier now. Haven't done it at all though, yet. So there's going to be some learning involved.
I also installed ubuntu on a winbook laptop with an Intel wifi chipset (it was a 1.5Ghz centrino system) and that was directly detected too. I'm not sure how ubuntu did that (with the intel system), since the intel firmware is required for that. I wasn't paying very much attention, just installing stuff and downloading packages from the network. Maybe it auto-downloaded the firmware upon detection. Or maybe it came with EasyUbuntu.
That probably cements my transition to ubuntu from mandriva. The main factor in the transition is the rate of development. Ubuntu has working svk packages (I never could get svk working correctly with Mandriva, although the packages are there) long before Mandriva does. And I never could get wifi working with Mandriva (although, to be fair, that was me being lazy, if I were younger and had more time and patience, I'd have figured it out long ago).
I never have been a linux fanboy. I'm a pragmatist. Whatever works better, that's what I use. Windows doesn't work for me since it's impossible to keep secure and, frankly, I can't afford the MS-Office license (windows itself I could afford, barely). Now, I *do* get a valid and legal MS-Office license with the laptops I purchase from the U.S., but then they have that pesky "legal only in the U.S.A." clause, so even if they're legal there, I can't use them in the rest of the world. At one point RedHat was the distribution to use (and before that, slackware). But now RedHat is moving in the direction of enterprise systems and I don't want to be in Fedora (where I would need to be if I wanted svk, etc).
I moved to Mandrake/Mandriva because of the superior package management, but now the speed of development isn't quite right for me. Ubuntu feels right. Although I wouldn't be surprised if I were to move on to something a bit faster later on.
Ah, but this post was not supposed to be about reminiscence. Instead, I was going to celebrate finally getting wifi working. I'm sitting in Bo's coffee club and for the price of a Cafe Latte I'm able to connect to Robinson's free wifi. The DNS is very slow (one reason why I don't have links above, the other being mentioned above), but surfing to this or that site, once it's been resolved, is pretty good. The DHCP server provides two IPs (the first of which does not reply to ping). That's a bit incompetent. But removing it from the list doesn't speed up DNS queries much (or at all, as far as I can tell). Once DNS resolves though, things are pretty good.
Connection to my office VPN is pretty fast (faster than at home), so I guess they use either meridian or PLDT (my home connection via Destiny Cable Internet takes a roundtrip overseas, so the VPN connection is reasonable, but not this fast).
OK. nmap -v says that the first DNS server *is* up, just not replying to ping.
I'm very happy to get wifi up and running, finally. Previously I didn't care very much. I still don't, really, since fast internet is available at work and at home. But it's a great convenience to be able to connect to wifi networks.
Next thing to learn, I guess, is how to connect to closed networks. It's been 4 years since I last had anything to do with that and it was a pain then (even with windows). I'm sure it's much easier now. Haven't done it at all though, yet. So there's going to be some learning involved.
Friday, July 21, 2006
switching svn URLs with rsync
I've got an svn working copy of close to 300MB. I'm across the internet from the source and I didn't want to check the whole thing out again. I had originally checked it out with svn+ssh:// but I wanted to switch to svn://. I needed to switch because svn+ssh takes longer than just svn://. The ssh part needs to reconnect with every svn * command, and I didn't want to pay the 2-3 seconds of that ssh negotiation. There might be a way to use a persistent ssh session, but that would look dumb, providing no beneft.
I thought maybe svn switch might do the trick, but after some trial and error, and actually reading The free svn online book show that switch doesn't work the way I thought. While trying stuff out I also looked at --relocate. There's an example of svn switch --relocate here, but that doesn't do what I need either. I'm not moving anything to a branch or elsewhere in the repository, I actually want to change the protocol used to communicate with the repository.
Finally, I fell back on rsync. I use rsync a LOT. It solves a lot of problems that I run across at work (and in the occasional consulting job). For this task, I first did an svn co svn:// checkout *at* the same computer as the repository. This was just so I'd have a working copy with svn://, normally, I use file:/// there.
Once I'd got a checked out copy using svn://, I rsynced that with my remote copy (which used to be svn+ssh://). There was probably something slightly wrong with what I did. It correctly synced the subdirectory .svn directories to use the new protocol, but the root didn't get changed. So I rsynced that .svn directory separately.
Total bandwidth cost of the rsync was around 4MB received and 2MB sent. Since the whole checked out working copy is 327MB, that's quite a savings. It actually took less time to do the rsync than my previous attempt, which was to tar and compress the remotely checked out svn:// working copy. I was then going to scp or rsync the archive over. When the archive blew up to 60MB though (and still going), I gave up on that. I certainly didn't want to copy over 60MB if there was some other way.
I thought maybe svn switch might do the trick, but after some trial and error, and actually reading The free svn online book show that switch doesn't work the way I thought. While trying stuff out I also looked at --relocate. There's an example of svn switch --relocate here, but that doesn't do what I need either. I'm not moving anything to a branch or elsewhere in the repository, I actually want to change the protocol used to communicate with the repository.
Finally, I fell back on rsync. I use rsync a LOT. It solves a lot of problems that I run across at work (and in the occasional consulting job). For this task, I first did an svn co svn:// checkout *at* the same computer as the repository. This was just so I'd have a working copy with svn://, normally, I use file:/// there.
Once I'd got a checked out copy using svn://, I rsynced that with my remote copy (which used to be svn+ssh://). There was probably something slightly wrong with what I did. It correctly synced the subdirectory .svn directories to use the new protocol, but the root didn't get changed. So I rsynced that .svn directory separately.
Total bandwidth cost of the rsync was around 4MB received and 2MB sent. Since the whole checked out working copy is 327MB, that's quite a savings. It actually took less time to do the rsync than my previous attempt, which was to tar and compress the remotely checked out svn:// working copy. I was then going to scp or rsync the archive over. When the archive blew up to 60MB though (and still going), I gave up on that. I certainly didn't want to copy over 60MB if there was some other way.
Wednesday, July 12, 2006
Switching to ubuntu -- but with icewm
My desktop computer (inherited from my brother-in-law) always had problems with Mandriva 2006 installed on it. These were mainly graphics problems, e.g., on drakconf, rpmdrake, gaim (some KDE programs too, so it wasn't necessarily just GTK), icons in windows would display to the left of where they were supposed to show. This wasn't a big deal at all, but it was irritating. And there was the svk problem (which I solved as below, by installing from CPAN, but it was another thing to worry about).
I thought I'd try some other distribution. I'd installed Ubuntu and Kubuntu at work. There were problems (mainly because we didn't understand what we were doing). Ubuntu and Kubuntu apparently come in one CD only. I'm not sure if they come in DVD or multiple CDs. In any case, at work both installed great looking desktop environments but then we spent some time figuring out how to get postgresql-8, php-5, devel tools, servers etc on there. Now, after looking at the Ubuntu website, it looks like there are different install CDs for desktop and home use.
At work, I didn't really spend enough time to figure out how to do all of that, so we just ignored Ubuntu and we now use debian (with some old versions of software, see above, installed from source or from debian-unstable) for the server and Mandriva or Novell Linux for the desktop.
On my home desktop, though (I've got Mandriva 2006 on DVD, but the computer doesn't have a DVD reader), I first installed debian (via network install, just for kicks). That worked out pretty well, but I decided not to stay with debian-stable because the versions of software on there were just too old for me. I tried debian-unstable, but I gave up on that since I got confused by some things. some things were also, well, unstable but those were just me not knowing what I was doing and getting confused).
I had upgraded to debian-unstable by just changing the apt sources and then upgrading everything automatically. That worked well enough (better than the similar technique would have in Mandriva), but I didn't like something about the whole thing, so I upgraded once more (same technique) to ubuntu. That worked pretty well and, while I had packages from three different versions of debian, I didn't really have any problems. The icons problem went away and the whole thing was much more responsive than it had been under Mandriva.
For the future, I'll be leaning toward ubuntu for my desktop computers. I haven't made up my mind yet about servers.
I don't like Gnome or KDE (preferring, instead, icewm), so the first thing I do after I've gotten a good install (well, I've only done this twice so far, but I'll be doing it a lot more, I bet) is to change the apt sources and install icewm, rxvt, etc, and remove as much of gnome and KDE as possible. I keep individual gnome or KDE applications though (quickly coming to mind are evolution, kuickshow and k3b).
I doubt if I'll go to debian. The distro moves too slowly (postgres-7.4 instead of postgres-8, for instance), and I'll never get anyone to agree to install debian-unstable, just because of that name :-). Ubuntu, though, seems to have just the right amount of development/upgrading velocity. I liked the Mandrake velocity, I don't think I'd be comfortable with gentoo, I *know* I don't want to be using Fedora.
Long ago I switched to mandrake because of urpmi (and later, rpmdrake), and also because of the rate of development. I didn't really need everything that the Mandrake *drake software gave me, but urpmi's automatic dependency handling was great, and the rate of development felt just right.
All of that is still there, so I don't *really* need to switch distributions. The kicker though is that I use svk for working with version-controlled source code when I'm not connected to the internet. And I haven't yet gotten svk to work from the Mandriva packages that are available. Not sure why that is, it's probably just pilot error, but, on the other hand, debian and ubuntu make it dead easy to install svk.
On Mandriva, I usually install svk from CPAN, which is a major pain (that's another rant right there). CPAN has some major problems finding the right protocols and servers to use for installing things, last time I did that I had to figure out what it was trying to do and do them manually, putting the downloaded files where it expected to find them, again, probably pilot error or just not enough deep knowledge of how to configure CPAN installations, but if ubuntu makes something dead easy, I'm switching as long as nothing else I absolutely need is missing.
I thought I'd try some other distribution. I'd installed Ubuntu and Kubuntu at work. There were problems (mainly because we didn't understand what we were doing). Ubuntu and Kubuntu apparently come in one CD only. I'm not sure if they come in DVD or multiple CDs. In any case, at work both installed great looking desktop environments but then we spent some time figuring out how to get postgresql-8, php-5, devel tools, servers etc on there. Now, after looking at the Ubuntu website, it looks like there are different install CDs for desktop and home use.
At work, I didn't really spend enough time to figure out how to do all of that, so we just ignored Ubuntu and we now use debian (with some old versions of software, see above, installed from source or from debian-unstable) for the server and Mandriva or Novell Linux for the desktop.
On my home desktop, though (I've got Mandriva 2006 on DVD, but the computer doesn't have a DVD reader), I first installed debian (via network install, just for kicks). That worked out pretty well, but I decided not to stay with debian-stable because the versions of software on there were just too old for me. I tried debian-unstable, but I gave up on that since I got confused by some things. some things were also, well, unstable but those were just me not knowing what I was doing and getting confused).
I had upgraded to debian-unstable by just changing the apt sources and then upgrading everything automatically. That worked well enough (better than the similar technique would have in Mandriva), but I didn't like something about the whole thing, so I upgraded once more (same technique) to ubuntu. That worked pretty well and, while I had packages from three different versions of debian, I didn't really have any problems. The icons problem went away and the whole thing was much more responsive than it had been under Mandriva.
For the future, I'll be leaning toward ubuntu for my desktop computers. I haven't made up my mind yet about servers.
I don't like Gnome or KDE (preferring, instead, icewm), so the first thing I do after I've gotten a good install (well, I've only done this twice so far, but I'll be doing it a lot more, I bet) is to change the apt sources and install icewm, rxvt, etc, and remove as much of gnome and KDE as possible. I keep individual gnome or KDE applications though (quickly coming to mind are evolution, kuickshow and k3b).
I doubt if I'll go to debian. The distro moves too slowly (postgres-7.4 instead of postgres-8, for instance), and I'll never get anyone to agree to install debian-unstable, just because of that name :-). Ubuntu, though, seems to have just the right amount of development/upgrading velocity. I liked the Mandrake velocity, I don't think I'd be comfortable with gentoo, I *know* I don't want to be using Fedora.
Long ago I switched to mandrake because of urpmi (and later, rpmdrake), and also because of the rate of development. I didn't really need everything that the Mandrake *drake software gave me, but urpmi's automatic dependency handling was great, and the rate of development felt just right.
All of that is still there, so I don't *really* need to switch distributions. The kicker though is that I use svk for working with version-controlled source code when I'm not connected to the internet. And I haven't yet gotten svk to work from the Mandriva packages that are available. Not sure why that is, it's probably just pilot error, but, on the other hand, debian and ubuntu make it dead easy to install svk.
On Mandriva, I usually install svk from CPAN, which is a major pain (that's another rant right there). CPAN has some major problems finding the right protocols and servers to use for installing things, last time I did that I had to figure out what it was trying to do and do them manually, putting the downloaded files where it expected to find them, again, probably pilot error or just not enough deep knowledge of how to configure CPAN installations, but if ubuntu makes something dead easy, I'm switching as long as nothing else I absolutely need is missing.
Saturday, June 24, 2006
byte.com -- accessible
So I still think that Byte.com still has a dumb login/logout interface but at least now it's letting me in. Previously, I would type in my login/pass (the one they had emailed me) and that wouldn't work. That was after the point when the ddj page would say that I needed to login but wouldn't give me the form to log into.
Today (about a week after I first encountered the problem), the site finally showed me a login screen so I could login with the login/pass that had been emailed to me. I think it might have shown me a page before and I couldn't use it because the password was wrong. Anyway, there was a link to have it email me another password, so I clicked on that sometime last week, logged in today, and that works now.
I would still be annoyed, except I've almost forgotten the problem now. I'll be annoyed next time there's some non-deterministic behavior on that site that makes me unable to login again, or do something similarly obvious, but perhaps implemented in a non-obvious way over there.
Maybe things got fixed earlier than a week ago, but I've been to Banaue with my wife, mom, sister and her entire family. That was a great trip. I wish I could afford to do that (timewise, since it's really not that expensive a trip) more than once a year or so.
Today (about a week after I first encountered the problem), the site finally showed me a login screen so I could login with the login/pass that had been emailed to me. I think it might have shown me a page before and I couldn't use it because the password was wrong. Anyway, there was a link to have it email me another password, so I clicked on that sometime last week, logged in today, and that works now.
I would still be annoyed, except I've almost forgotten the problem now. I'll be annoyed next time there's some non-deterministic behavior on that site that makes me unable to login again, or do something similarly obvious, but perhaps implemented in a non-obvious way over there.
Maybe things got fixed earlier than a week ago, but I've been to Banaue with my wife, mom, sister and her entire family. That was a great trip. I wish I could afford to do that (timewise, since it's really not that expensive a trip) more than once a year or so.
Sunday, June 18, 2006
byte.com's incredibly bad interface
So I pointed out that byte.com is now free. That's great. A few days after that post though, I'm seeing the downside. That web site has an incredibly bad interface, at least with respect to logins and logouts.
1. There is no logout button or link. or even any indication, as far as I can tell
that one *is* logged in or logged out.
2. There is no login form either. There's a form to subscribe to the free
newsletter, but no login form.
So I guess the only way to login is to click on a protected article (any article, really, and hope that it's protected, since i'm able to view some articles but not others and I sure can't tell why there's a distinction except maybe age of the article) and if it brings me to a page that says it's protected and I should login, then to login.
That's what happened when I first tried it out for free a few days ago. It didn't even ask for registration details, just wanted an email address and then it let me in. Then it emailed me with my login and (random) password.
That's all great so far. Except now, since it won't let me logout, I keep getting a page that says I should register. Except I've *already* registered. I think maybe the authentication credentials are wrong (after all, it just let me in that first time without me having to first check my email, maybe it didn't insert my randomly generated password in my session yet). But now I can't find out where to logout so I can login properly.
I *could* throw away all my cookies and saved passwords, but I'm not about to do that for one free site that has bugs in its authentication system.
Of course, though, I might be unfair here. Maybe the 1 year old article I'm trying to read is just protected and I need to pay for it (similar to how the NYTimes has things setup, and why I never go to the NYTimes site anymore, nor even link to it), but the page it brings me to sure doesn't seem to say that. It won't even let me login, instead asking me to register again! But then remembering who I am and pre-filling the form with information I already posted before (but strangely enough, with the wrong country, I remember registering as being from the Philippines but it thinks I'm in Anguilla, which might be a firefox bug since I often register as being from Anguilla to other sites, e.g., the Washington Post).
So, OK, maybe I'm just confused. But if that's the case, they still need to fix their site. If they can get me confused, I've got to wonder what their paying customers think of the ease of use of that site.
1. There is no logout button or link. or even any indication, as far as I can tell
that one *is* logged in or logged out.
2. There is no login form either. There's a form to subscribe to the free
newsletter, but no login form.
So I guess the only way to login is to click on a protected article (any article, really, and hope that it's protected, since i'm able to view some articles but not others and I sure can't tell why there's a distinction except maybe age of the article) and if it brings me to a page that says it's protected and I should login, then to login.
That's what happened when I first tried it out for free a few days ago. It didn't even ask for registration details, just wanted an email address and then it let me in. Then it emailed me with my login and (random) password.
That's all great so far. Except now, since it won't let me logout, I keep getting a page that says I should register. Except I've *already* registered. I think maybe the authentication credentials are wrong (after all, it just let me in that first time without me having to first check my email, maybe it didn't insert my randomly generated password in my session yet). But now I can't find out where to logout so I can login properly.
I *could* throw away all my cookies and saved passwords, but I'm not about to do that for one free site that has bugs in its authentication system.
Of course, though, I might be unfair here. Maybe the 1 year old article I'm trying to read is just protected and I need to pay for it (similar to how the NYTimes has things setup, and why I never go to the NYTimes site anymore, nor even link to it), but the page it brings me to sure doesn't seem to say that. It won't even let me login, instead asking me to register again! But then remembering who I am and pre-filling the form with information I already posted before (but strangely enough, with the wrong country, I remember registering as being from the Philippines but it thinks I'm in Anguilla, which might be a firefox bug since I often register as being from Anguilla to other sites, e.g., the Washington Post).
So, OK, maybe I'm just confused. But if that's the case, they still need to fix their site. If they can get me confused, I've got to wonder what their paying customers think of the ease of use of that site.
Thursday, June 15, 2006
evolution outbound filters and mangling the Sender
Related to my previous post, I'd always thought that it would be great if the Gnome Evolution email client were capable of mangling the Sender in the email based on user-specified conditions. If that were possible, then I'd be able to setup an outgoing filter so that if at least one of the recipients were those mailing lists then it would change the Sender to my mailing list address.
There would still be corner cases where that wouldn't work (but where an elaboration of it might work, e.g., instead of mangling the sender directly, it might create a new email with the sender being corrected, but leaving the original email intact).
I could probably do something like that with the "Pipe to Program" action, with some sed magic thrown in. But, no. It *is* a useful inconvenience and I'm too lazy to figure it out. Hehe, long ago when I was wishing for that feature, I already knew I'd be able to do it with Pipe to Program and sed. I was too lazy then too :-).
There would still be corner cases where that wouldn't work (but where an elaboration of it might work, e.g., instead of mangling the sender directly, it might create a new email with the sender being corrected, but leaving the original email intact).
I could probably do something like that with the "Pipe to Program" action, with some sed magic thrown in. But, no. It *is* a useful inconvenience and I'm too lazy to figure it out. Hehe, long ago when I was wishing for that feature, I already knew I'd be able to do it with Pipe to Program and sed. I was too lazy then too :-).
A useful inconvenience
I have several email addresses and one of them I use for subscribing to mailing lists. I never use gmail for reading mailing lists (instead i download it via fetchmail and use evolution to check the local POP3 server). This is mainly because I just don't have the time to monitor mailing lists anymore.
Evolution uses my default email address for sending mail out (unless I change the From address explicitly). That isn't the same as my mailing lists address. That's inconvenient, since often I'll send out a reply to a list post and it'll bounce back because I forgot to change the From address.
I find though, that the inconvenience is useful. It's an additional brake on emails that I might not actually want to send out yet (they need editing, the tone is too strong, the tone is too weak, the point is missing, whatever). It's too bad though. Sometimes I'll write a long, informative, interesting (maybe) post, and then I'll delete it when it bounces back because it doesn't pass muster. But that's the nature of useless posts. They're a waste of time, created in the heat of the moment, starting as a rant and ending as a flame, or the other way around, moving from to whimper, or just wandering around, pointless and dumb. If they're a waste anyway, better not to pollute lists (and the impressionable) with them, or feeding the trolls.
Evolution uses my default email address for sending mail out (unless I change the From address explicitly). That isn't the same as my mailing lists address. That's inconvenient, since often I'll send out a reply to a list post and it'll bounce back because I forgot to change the From address.
I find though, that the inconvenience is useful. It's an additional brake on emails that I might not actually want to send out yet (they need editing, the tone is too strong, the tone is too weak, the point is missing, whatever). It's too bad though. Sometimes I'll write a long, informative, interesting (maybe) post, and then I'll delete it when it bounces back because it doesn't pass muster. But that's the nature of useless posts. They're a waste of time, created in the heat of the moment, starting as a rant and ending as a flame, or the other way around, moving from to whimper, or just wandering around, pointless and dumb. If they're a waste anyway, better not to pollute lists (and the impressionable) with them, or feeding the trolls.
byte.com is free!
I read Jerry Pournelle's Chaos Manor proto-blog regularly. Not as much as I used to, I've been busy, but regularly. This week he says that Byte.com is now free. It used to be free and for many years I read it online. Before that, I was in the U.S. and i actually had a subscription (along with subscriptions to Scientific American, Dr Dobbs and various C/C++ magazines.
Byte became payware for though, so I stopped reading Jerry's column there, instead switching to the main blog. Now that it's free again, I'm going to have to read several years of articles :-). Jerry is always fun, so I'll read all of that. The articles though, I'll read only if they're relevant and not too dated.
It's too bad that Moshe Bar's column ended, I enjoyed those, although they were quite a bit over my head (probably still are, since I'm not as hard core as I'd like to be).
Byte became payware for though, so I stopped reading Jerry's column there, instead switching to the main blog. Now that it's free again, I'm going to have to read several years of articles :-). Jerry is always fun, so I'll read all of that. The articles though, I'll read only if they're relevant and not too dated.
It's too bad that Moshe Bar's column ended, I enjoyed those, although they were quite a bit over my head (probably still are, since I'm not as hard core as I'd like to be).
Thursday, June 08, 2006
devshed rss
I use Bloglines as my RSS reader (too lazy to find standalone RSS readers for Linux). I had DevShed in there, but I find that it doesn't seem to be a good RSS citizen, or maybe I'm just doing something wrong.
With other feeds, as soon as I even click on the folder in bloglines, the articles are marked read and when I go to bloglines again, I don't see those articles as unread anymore. Devshed articles aren't like that. The same articles keep coming up as new even though I've read them already. Not sure what that's about. I've already removed it from my list of feeds and I don't care to add them again to debug the problem. My guess is, though, that they allow comments to update the feed. Most other sites (e.g., digg) don't.
It's really no big deal, but even the little effort required to look there and notice that I've read the articles already is too much for me, I'd rather not see anything there anymore than have to go through tomorrow seeing the same articles about how to optimize mysql or how to implement a socket server in php.
With other feeds, as soon as I even click on the folder in bloglines, the articles are marked read and when I go to bloglines again, I don't see those articles as unread anymore. Devshed articles aren't like that. The same articles keep coming up as new even though I've read them already. Not sure what that's about. I've already removed it from my list of feeds and I don't care to add them again to debug the problem. My guess is, though, that they allow comments to update the feed. Most other sites (e.g., digg) don't.
It's really no big deal, but even the little effort required to look there and notice that I've read the articles already is too much for me, I'd rather not see anything there anymore than have to go through tomorrow seeing the same articles about how to optimize mysql or how to implement a socket server in php.
Creative Zen mp3 player and gnomad2
We got a Creative Zen Xtra MP3 Player as a gift from my brother. It was to be just my birthday gift, but it's so perfect for just now (sol is pregnant, for a bit she was on bed rest, very bored), and Sol's birthday is near enough to mine (which is still months away) that we thought it was the perfect gift for both of us for the rest of the year :-).
Unfortunately, the Zen doesn't look like just a USB external storage device, it uses some other protocol. I didn't want to be dual-booting into Windows (at some point I'm going to remove Windows from this laptop completely, I kept it around for the Zen) everytime I need to move files onto the MP3 player or to modify playlists and such.
Fortunately, GNomad2 implements the MTP protocol and allows file copying and manipulation of playlists and such. It didn't work for me the first few times I tried it, but after a week of looking at it off-and-on, I finally got it working (devfs was the charm). It might be possible to run it without devfs, but the RPM I installed it with didn't seem to have the nomad.usermap file on it, so I just boot into a devfs capable kernel when I need to copy files. And since I don't want to dualboot, well, I just always boot into a devfs capable kernel these days :-).
Things to remember, and the point of this post: DEVFS.
Also: less laziness and maybe building from source and actually reading the documentation might make DEVFS unnecessary. Unfortunately, the laziness is systemic.
Unfortunately, the Zen doesn't look like just a USB external storage device, it uses some other protocol. I didn't want to be dual-booting into Windows (at some point I'm going to remove Windows from this laptop completely, I kept it around for the Zen) everytime I need to move files onto the MP3 player or to modify playlists and such.
Fortunately, GNomad2 implements the MTP protocol and allows file copying and manipulation of playlists and such. It didn't work for me the first few times I tried it, but after a week of looking at it off-and-on, I finally got it working (devfs was the charm). It might be possible to run it without devfs, but the RPM I installed it with didn't seem to have the nomad.usermap file on it, so I just boot into a devfs capable kernel when I need to copy files. And since I don't want to dualboot, well, I just always boot into a devfs capable kernel these days :-).
Things to remember, and the point of this post: DEVFS.
Also: less laziness and maybe building from source and actually reading the documentation might make DEVFS unnecessary. Unfortunately, the laziness is systemic.
Thursday, June 01, 2006
Frameworks and new development
At work the IT team is re-implementing/improving the software system for managing the business. The head office software and database schemas are going to be replaced entirely, and the remote site software is going to be partly re-implemented, but we're keeping the remote database schema as is for now. Fixing *that* monster is probably for next year.
It's exciting to be rebuilding the system since the current system is so much of a mess.
After a week and a half of checking out various php MVC frameworks we've settled on Symfony. We looked at a lot of frameworks (including
one that was developed by the contractor we're working with). Many were cut because it didn't look like they could serve our needs, they had one or two vital features missing. Even symfony was almost cut, except we figured out a way to get around its assumption that primary keys are serial (so, never editable, in its generated CRUD scaffolding). CakePHP was cut because it doesn't seem to support compound primary keys. I really like Prado but it seems to have a sufficiently high learning curve that I'd have trouble training new developers to work with it. I'll use it on some personal project at some point, but we won't use it at work.
Some other frameworks (Seagull, QCodo, etc) we tested for a bit, but when we encountered bugs or couldn't make them work with our system (postgresql, pretty complex database structure) we gave up on them.
The framework will be a help, but I'm more excited about the great work we'll be doing with architecting the business logic and database layers so that we will be able to more easily fix/modify the database without needing to modify higher layers. Or if the change propagates that high, that we'll be able to easily determine which database service providing classes/methods need to be changed and which reports need to be modified because of that.
Doxygen (or PHPDocumentor) will be a big help with all this too, and subversion/svk, of course.
We're also architecting how much of the business logic should sit inside the database. I'm aware that some people (a lot in the Oracle camp, and in MS SQL Server too) like to put all their business logic in the database (some to the point of not allowing access to tables directly, instead allowing access only to functions which are the ones that access the tables). I'm not on that side of the issue.
The old database went too far the other way, having pretty much no primary keys, no check constraints, no referential integrity constraints or (in many cases) even not null constraints.
I'm leaning toward something in the middle, where the database has enough business logic (constraints, primary keys, referential integrity and some triggers for complex constraints) to protect itself from some program bugs and invalid inputs), rejecting transactions which fail those constraints. The user level programs will check their inputs and reject invalid inputs, etc, but the database will reject anything that gets through the user level programs.
This will involve some cost due to doing some of the work in both places (the programs and the database constraints need to be in sync about what is or is not invalid, I'm not too concerned about the execution cost since good database design and insightful use of indexes will mitigate those), but I think it's worthwhile. Otherwise, the database is at the mercy of buggy programs.
It's exciting to be rebuilding the system since the current system is so much of a mess.
After a week and a half of checking out various php MVC frameworks we've settled on Symfony. We looked at a lot of frameworks (including
one that was developed by the contractor we're working with). Many were cut because it didn't look like they could serve our needs, they had one or two vital features missing. Even symfony was almost cut, except we figured out a way to get around its assumption that primary keys are serial (so, never editable, in its generated CRUD scaffolding). CakePHP was cut because it doesn't seem to support compound primary keys. I really like Prado but it seems to have a sufficiently high learning curve that I'd have trouble training new developers to work with it. I'll use it on some personal project at some point, but we won't use it at work.
Some other frameworks (Seagull, QCodo, etc) we tested for a bit, but when we encountered bugs or couldn't make them work with our system (postgresql, pretty complex database structure) we gave up on them.
The framework will be a help, but I'm more excited about the great work we'll be doing with architecting the business logic and database layers so that we will be able to more easily fix/modify the database without needing to modify higher layers. Or if the change propagates that high, that we'll be able to easily determine which database service providing classes/methods need to be changed and which reports need to be modified because of that.
Doxygen (or PHPDocumentor) will be a big help with all this too, and subversion/svk, of course.
We're also architecting how much of the business logic should sit inside the database. I'm aware that some people (a lot in the Oracle camp, and in MS SQL Server too) like to put all their business logic in the database (some to the point of not allowing access to tables directly, instead allowing access only to functions which are the ones that access the tables). I'm not on that side of the issue.
The old database went too far the other way, having pretty much no primary keys, no check constraints, no referential integrity constraints or (in many cases) even not null constraints.
I'm leaning toward something in the middle, where the database has enough business logic (constraints, primary keys, referential integrity and some triggers for complex constraints) to protect itself from some program bugs and invalid inputs), rejecting transactions which fail those constraints. The user level programs will check their inputs and reject invalid inputs, etc, but the database will reject anything that gets through the user level programs.
This will involve some cost due to doing some of the work in both places (the programs and the database constraints need to be in sync about what is or is not invalid, I'm not too concerned about the execution cost since good database design and insightful use of indexes will mitigate those), but I think it's worthwhile. Otherwise, the database is at the mercy of buggy programs.
Friday, May 26, 2006
Slow computers
My brother-in-law, my wife's younger brother, is blind. He's a good programmer though, great brains in there. He uses MS-Windows with JAWS (screen reader software). What he can do with windows is amazing, considering that it's so graphical.
He used to use a 400Mhz PIII with 192MB of RAM. I've inherited that PC since I found a used PC that is much faster (an AMD 1.7Ghz box) and gave that for him to use.
I run linux on the slow box, with icewm for the window manager (I use icewm everywhere, even on the fastest computers because I can't stand the slowness of Gnome and KDE). It runs everything reasonably well except Firefox. It's great to use Firefox on fast boxes, but it's dog slow on a slow box. I've got to look at Opera for that box.
I don't remember running openoffice on that box. Maybe I've done it, I don't use very complex files though, so I wouldn't have been stressing openoffice anyway, even if I ran it. I'm sure it's slow, but it's probably usable. I tend to use gnumeric for spreadsheets and I just don't use a wordprocessor that much though. So on a slow, memory-constrained computer, careful choice of office software can make the computer usable.
The PIII box used to run windows 2000. It was reasonably usable, but I'm not sure how well it compared with linux. It was probably about the same speed, or maybe a little slower (because of the antivirus reading everything before handing data off to applications reading the disk). On the other hand, it was *far* less capable than my current setup (apache, php, C, C++, Java, ruby, scheme, guile, postgres all running on it, plus all the client tools I use).
I've got to find an alternative to firefox though. Or wait until someone comes up with a comprehensive howto on how to minimize the memory and CPU that firefox uses.
He used to use a 400Mhz PIII with 192MB of RAM. I've inherited that PC since I found a used PC that is much faster (an AMD 1.7Ghz box) and gave that for him to use.
I run linux on the slow box, with icewm for the window manager (I use icewm everywhere, even on the fastest computers because I can't stand the slowness of Gnome and KDE). It runs everything reasonably well except Firefox. It's great to use Firefox on fast boxes, but it's dog slow on a slow box. I've got to look at Opera for that box.
I don't remember running openoffice on that box. Maybe I've done it, I don't use very complex files though, so I wouldn't have been stressing openoffice anyway, even if I ran it. I'm sure it's slow, but it's probably usable. I tend to use gnumeric for spreadsheets and I just don't use a wordprocessor that much though. So on a slow, memory-constrained computer, careful choice of office software can make the computer usable.
The PIII box used to run windows 2000. It was reasonably usable, but I'm not sure how well it compared with linux. It was probably about the same speed, or maybe a little slower (because of the antivirus reading everything before handing data off to applications reading the disk). On the other hand, it was *far* less capable than my current setup (apache, php, C, C++, Java, ruby, scheme, guile, postgres all running on it, plus all the client tools I use).
I've got to find an alternative to firefox though. Or wait until someone comes up with a comprehensive howto on how to minimize the memory and CPU that firefox uses.
Friday, May 05, 2006
philvbdev
I subscribed to the philvbdev yahoogroup to see if I could hire VB developers off there. The company I work for is hiring. After I posted though, I started getting all these emails from Indian freshers. There must be a network (or a bot) where newbie South Indian software developers get email addresses and the email addresses spread like wildfire. It's bad enough that if anyone sends me anything with "fresher" in the subject, I'm not going to see that email at all, it'll be automatically deleted [not even spending any time in the purgatory that is my spam mbox or trash].
It's a waste of time for them to be emailing me because we need the developers for local employment and we're not going to be paying anyone to come over from a foreign country to work here (with the attendant problems with visas and such).
I joined the group because I thought it was a forum for philippine VB developers. It looks like it's been abandoned by filipinos though. Very few posts are about VB problems or solutions. Mostly what I see (what I saw, I've since unsubscribed) are spam posts about certifications, certification questions and training, etc.
It's a waste of time for them to be emailing me because we need the developers for local employment and we're not going to be paying anyone to come over from a foreign country to work here (with the attendant problems with visas and such).
I joined the group because I thought it was a forum for philippine VB developers. It looks like it's been abandoned by filipinos though. Very few posts are about VB problems or solutions. Mostly what I see (what I saw, I've since unsubscribed) are spam posts about certifications, certification questions and training, etc.
Wednesday, March 29, 2006
laptop computer speed
My cousin-in-law asked me last week what I'd choose between a computer (laptop, actually), with a 1.xGhz CPU and 512MB of RAM and a 2.xGhz CPU with 256MB of RAM. I said I'd choose the first.
I've been monitoring CPU use on the laptop I currently use (icewm makes that really easy, with CPU and network monitors on the taskbar), and I just don't see a lot of CPU peaking. There are occasional peaks when a scheduled rsync job runs (copying data over a vpn from the office to my laptop, cheap remote backup), and when i run xboard+gnuchess. When I test one or another program I'm developing I may see some peaking, and sometimes when I run vmware (not a lot of that though).
Mainly, though, my CPU usage stays pretty low.
I recently finally built a kernel that works well with my mobile AMD CPU and now I'm able to set the CPU maximum speed to a large range of speeds (.66Ghz to 1.7Ghz, plus 6 other speeds in between). I've also got the cpufreq/scaling_governor set to ondemand. The computer pretty much ALWAYS stays at the slowest speed all the time except when running xboard+gnuchess or very occasionally, when something CPU intensive runs. When an application needs more CPU, the CPU speed ramps up immediately, and when it's no longer needed, the CPU slows down to .66Ghz.
From the fact that the scaling_max_freq pretty much stays at the slowest speed except for very short periods, my opinion on which laptop to buy is reinforced. The icewm monitor also displays related information (e.g., how much IO is occurring) and I find that the laptop slows down more due to waiting for IO (well, laptop drives are slow) than due to needing more CPU. So more RAM will help with the IO requirements (the OS can cache more of the disk), speeding up the general experience, more than higher CPU speed.
Actually, his original question had to do with a celeron (or some other internal-cache-challenged CPU) versus a full CPU at the same or a higher frequency. I think that RAM is still more important, generally, than CPU speed.
Of course, if the main use of the computer is going to be for photoshop or corel draw effects or CAD and 3D rendering, then I'd go with all the CPU power I could get PLUS all the RAM I could get. but for general use, even for a software developer like me, any 1.3Ghz box with more memory is probably going to be the better deal than a higher frequency box with half the memory.
I've been monitoring CPU use on the laptop I currently use (icewm makes that really easy, with CPU and network monitors on the taskbar), and I just don't see a lot of CPU peaking. There are occasional peaks when a scheduled rsync job runs (copying data over a vpn from the office to my laptop, cheap remote backup), and when i run xboard+gnuchess. When I test one or another program I'm developing I may see some peaking, and sometimes when I run vmware (not a lot of that though).
Mainly, though, my CPU usage stays pretty low.
I recently finally built a kernel that works well with my mobile AMD CPU and now I'm able to set the CPU maximum speed to a large range of speeds (.66Ghz to 1.7Ghz, plus 6 other speeds in between). I've also got the cpufreq/scaling_governor set to ondemand. The computer pretty much ALWAYS stays at the slowest speed all the time except when running xboard+gnuchess or very occasionally, when something CPU intensive runs. When an application needs more CPU, the CPU speed ramps up immediately, and when it's no longer needed, the CPU slows down to .66Ghz.
From the fact that the scaling_max_freq pretty much stays at the slowest speed except for very short periods, my opinion on which laptop to buy is reinforced. The icewm monitor also displays related information (e.g., how much IO is occurring) and I find that the laptop slows down more due to waiting for IO (well, laptop drives are slow) than due to needing more CPU. So more RAM will help with the IO requirements (the OS can cache more of the disk), speeding up the general experience, more than higher CPU speed.
Actually, his original question had to do with a celeron (or some other internal-cache-challenged CPU) versus a full CPU at the same or a higher frequency. I think that RAM is still more important, generally, than CPU speed.
Of course, if the main use of the computer is going to be for photoshop or corel draw effects or CAD and 3D rendering, then I'd go with all the CPU power I could get PLUS all the RAM I could get. but for general use, even for a software developer like me, any 1.3Ghz box with more memory is probably going to be the better deal than a higher frequency box with half the memory.
Wednesday, March 08, 2006
mozilla extensions
I've been wary/skeptical for a long time about mozilla/firefox extensions. Firefox is a memory hog as it is, and there are some hard to isolate weird CPU hogging things in there too. So, while I love the browser, I go out of my way to NOT make it any more memory/cpu hungry. And in general, for complex things that have weird behaviors, I prefer to keep things as simple as possible so that problem isolation is easier, or at least that the chances of tickling a bug are lower.
Late though, and strangely enough, because I saw a link to an article that discussed how to make firefox eat less memory and use less CPU, I followed another link and decided to install a few very conservatively chosen extensions. I'll add links at some point, for now, just discussion.
NoScript is great. I have it block all javascript by default. And then, for sites that need scripts, I turn javascript on either temporarily (current session) or permanently. Very nice since most of the time I don't want javascript and it just slows things down anyway.
AdBlock works pretty well. Some ads get through and it's not convenient to point them out to AdBlock, but all in all, it's great. I wish I could *unblock* google ads. They're not intrusive, no moving graphics and crap like that, and they're generally relevant, although I rarely click. I'll figure out how to do that at some point.
Tab Mix Plus is great. There are lots of features there, most of which I don't know how to use. The main thing for me is that it has tab memory like Opera has. That is, it's possible to configure it so that when the browser starts, it will auto-load the tabs that were there when the browser was last closed. It also saves tab status while browsing, so that firefox and crashes (rare, but not completely eradicated) don't completely wipe me out. If I've downloaded 15 tabs to view, then tab memory will bring them all back up when I restart firefox. It seems to work better than Opera's memory, but I haven't used Opera in 2 years. I'm sure Opera has made their tab memory much more robust by now, although it was already a great and wonderful feature when I used it back then.
PDF download is convenient since I've never been able to stand acrobat reader displaying itself in the browser and then taking up so long to start. Not that I have acrobat reader on this computer anymore, or any computer I use, but the extra control over PDF downloads is nice. This is a relatively low profit item for me though, I may drop it.
Late though, and strangely enough, because I saw a link to an article that discussed how to make firefox eat less memory and use less CPU, I followed another link and decided to install a few very conservatively chosen extensions. I'll add links at some point, for now, just discussion.
NoScript is great. I have it block all javascript by default. And then, for sites that need scripts, I turn javascript on either temporarily (current session) or permanently. Very nice since most of the time I don't want javascript and it just slows things down anyway.
AdBlock works pretty well. Some ads get through and it's not convenient to point them out to AdBlock, but all in all, it's great. I wish I could *unblock* google ads. They're not intrusive, no moving graphics and crap like that, and they're generally relevant, although I rarely click. I'll figure out how to do that at some point.
Tab Mix Plus is great. There are lots of features there, most of which I don't know how to use. The main thing for me is that it has tab memory like Opera has. That is, it's possible to configure it so that when the browser starts, it will auto-load the tabs that were there when the browser was last closed. It also saves tab status while browsing, so that firefox and crashes (rare, but not completely eradicated) don't completely wipe me out. If I've downloaded 15 tabs to view, then tab memory will bring them all back up when I restart firefox. It seems to work better than Opera's memory, but I haven't used Opera in 2 years. I'm sure Opera has made their tab memory much more robust by now, although it was already a great and wonderful feature when I used it back then.
PDF download is convenient since I've never been able to stand acrobat reader displaying itself in the browser and then taking up so long to start. Not that I have acrobat reader on this computer anymore, or any computer I use, but the extra control over PDF downloads is nice. This is a relatively low profit item for me though, I may drop it.
Sunday, March 05, 2006
Work hard, crash
I've been working very hard for about six months now, since I took over management of the development team at work. Previously I'd been a consultant, project based. That was fun. Lots of work, but no management responsibilities.
The company insisted on hiring me on though and after some resistance, I accepted. Things are still fun, particularly when i get to code, but there's too damn much coordination and meeting. All very necessary, but it sure reduces time available for programming.
After six months of this though, reality catches up. I got a very bad sore throat some other stress related infections and just general weakness (due to the combined infections, probably). This happens to me, once in a while. After a sustained period of late nights, not enough sleep, stress, my body crashes for a short period. If I don't get enough of a break, my mind snaps too and I quit ;-). Not going to happen with this job, but it's sure happened before.
Five days of rest have made for an improvement. Not enough though, still going to be weak tomorrow. Damn. I'll rest again on Wednesday.
The company insisted on hiring me on though and after some resistance, I accepted. Things are still fun, particularly when i get to code, but there's too damn much coordination and meeting. All very necessary, but it sure reduces time available for programming.
After six months of this though, reality catches up. I got a very bad sore throat some other stress related infections and just general weakness (due to the combined infections, probably). This happens to me, once in a while. After a sustained period of late nights, not enough sleep, stress, my body crashes for a short period. If I don't get enough of a break, my mind snaps too and I quit ;-). Not going to happen with this job, but it's sure happened before.
Five days of rest have made for an improvement. Not enough though, still going to be weak tomorrow. Damn. I'll rest again on Wednesday.
Subscribe to:
Posts (Atom)