pyesetz: (arctic-fox)
InstantFox is an add-on for Firefox that makes its address bar act like Opera's.  Now I can enter the fake URL
      w Boris Johnson
to look him up at Wikipedia, or
      m Wilmot ON
to see Google's map, or
      wk 時刻
to see Wiktionary's definition for this Chinese word.

Doesn't that just brighten your day? 🔆
pyesetz: (woof)
Today, Rabbi Brian sent me a newsletter whose subject line was "Dealing with 💩 it.".  Obviously the subject is supposed to be a reference to excrement, but the U+1F4A9 PILE OF POO emoji was displayed as a box with hex digits inside, even though I had just upgraded my laptop to the latest Linux Mint.

So I installed the EmojiOne font, which includes colour drawings for the emoji.  It uses the new “SVGinOT” font-type which is supported only by firefox and thunderbird, which just happen to be the programs I use. In other programs (such as gnome-terminal), the emoji are monochrome.  In weird programs such as emacs, the emoji still appear as boxed hex digits.

There is also an EmojiOne picker app, which is for Ubuntu but says it mostly works with Cinnamon except for the long menus.  I haven't installed it.  Instead, I downloaded the Unicode 9 NamesList.txt file and then altered it so each line begins with an example of the character being named.  (This replaces my previous copy of the Unicode 3.2 names list that I downloaded back in 2002.)

Upgrade log

Jul. 1st, 2016 04:18 pm
pyesetz: (woof)

(Hi, [ profile] porsupah!  Thanks for stopping by again!  You are the only person who has commented on my journal this year.  In previous years, [ profile] xolo was often the only commenter, but he seems to have left LJ now.)

I decided in April that my Dell D620 laptop needed an OS upgrade.  The major issues were:
  • My 3-year-old fonts did not contain the latest emoji characters, which *everyone* has started to use all over the Internet.
  • Opera 12.16 was so old, it didn’t support the latest HTTPS standard.  Many websites refused to be visited by this old browser (“for your protection”).  Newer versions of Opera refused to install on my old OS.
  • Firefox 41.0.2 did not play well with the new Reditrᴀ, which was a forced upgrade (they didn’t tell me until after it was installed).  Most images displayed as blanks and memory usage was astronomical.

Now it’s time to say So long! to Linux Mint Debian Edition with Cinnamon 201303 (“Jessie”) and say Hello! to Linux Mint 17.3 with Cinnamon (“Rosa”).  I’ve been down this road before, so my hard drive is already partitioned into “/home” for files that should survive an OS upgrade, “/” for the OS, plus “/windows” for my dual-boot Windows 7.

April 28th: Finally get around to it: repartition /home to be 13 GB smaller, download Linux Mint 17, write it to a USB stick, boot it up, then let it install itself onto the new partition.  Then reboot back to the familiar old system.

June 5th: Boot up the new “Rosa” system for the first time, after first saving copies of all the dot-files in my home directory (since Rosa will upgrade them and then Jessie won’t understand them anymore).  Install some of my favourite Linux packages (emacs, wget, etc) and remove a few I don’t need (hplip, cups, bluez, etc).  Then back to the old “Jessie” system, which still has those three problems forcing me to upgrade.

June 23rd: Time to get serious.  The laptop’s FN keys for controlling volume and backlight do not work when logged in to Rosa/Cinnamon as ‘root’ (which I always do but it’s been deprecated for years).  I futz around with it for a bit, but eventually decide to “act normal” and log in as an unprivileged user (this means that I can’t use my main Emacs session to edit system files).  Firefox 47.0 works better with Reditr, although memory leakage is still excessive.  Thunderbird cannot see my mail archives and Opera has lost my RSS feeds, but I decide that Rosa is good enough to use for now.

June 26th: Opera 38.0 is not very good.  It has a wacky multi-level menu system that can no longer be turned off, making bookmarks much less accessible than they used to be.  Also it seems that all support for RSS feeds has been removed.  Looks like Opera will need to be demoted to my “backup browser”, even though Firefox does not have good support for search accelerators (with Opera I could type in the address “w Boris_Johnson” and instantly get a Wikipedia bio on this famous person, or type “e ProScan” to get eBay listings for matching products).
      I can’t figure out how to pull the list of RSS feeds from Opera’s data files, so I boot up Jessie (after switching my home directory to the saved dot-files) and start Opera to export the feeds as an OPML file.  Back in Rosa (switching dot-files again), I start manually adding feeds from the OPML file to Thunderbird, then discover a poorly-documented feature Edit → Account Settings → Feeds → Manage Subscriptions → Import, which just happens to accept an OPML list of feeds to add.  Those manually-added feeds are now duplicates, so I delete them.
      Firefox has a tool called “Subscribe” (it’s hidden by default).  It strongly promotes the use of Live Bookmarks for RSS feeds, but once you tell it to use /usr/bin/thunderbird instead then it Just Works™.  Clicking on a link in Thunderbird opens the web page in Firefox, so these programs seem adequately integrated for my needs.

June 27th: Merge the old email archives into Thunderbird 38.8.0.  This is a royal pain because disk space is now very tight on /home and so I can move only a few emails at a time.  I delete the saved dot-files, which frees up a lot of space, but means I can no longer go back to Jessie.  While I’m at it, I clean up the email archives for my seven years at Company 𝔾.  It feels good to put that thing to bed, although it would be better if I had managed to find a replacement job by now.

June 28th: Java no longer works in the browser.  This has been deprecated for months, but I have IcedTea installed and it clearly does start, but then a blank screen appears instead of the Java app.  Same behaviour in both Firefox and Opera.  This is a problem.  I use to put trailing-stop protection on my stock trades, but it’s written in Java and is now obsolete.  I can still use which is mostly plain HTML, but that is for “investors” rather than “traders” and doesn’t offer trailing-stop orders.  I could use StreetSmart Edge®, which is a .net app, but then I would have to reboot into Windows any time I want to do something with the stock market.
      But wait!  One of the advanced new features of Linux Mint 17 is supposed to be improved support for VirtualBox.  Maybe I could run StreetSmart Edge inside a paravirtualized Windows system inside a GUI window under Linux, just like all the cool kids do nowadays!  It’s never worked for me before, but I try installing VirtualBox.  It needs a Windows installation disk, so I download the Windows 8.1 evaluation as an .iso file, then write it to a USB stick.  VirtualBox cannot reuse my /windows partition and needs several GB to create a simulated hard drive for windows, so I delete the .iso file to make room.  Then it turns out that VirtualBox cannot use the USB stick and wants to simulate the installation disk using the .iso file, so I download it again.  But Windows 8.1 refuses to boot inside VirtualBox, because my CPU is an old Centrino Duo which doesn’t have the VT-x instructions that Windows 8.1 requires when running in paravirtualized mode.
      So I download the Windows 7 Starter .iso from this slightly-shady site, figuring that I’ll reuse the product key from my dual-boot Windows.  But my officially-licenced product key is not accepted because it’s for Windows 7 Home Premium rather than Windows 7 Starter.  So I get a key from this rather-shady site, which is accepted.  But Windows 7 won’t install itself because it insists that the simulated hard drive needs at least 6 GB of space.  (I remember when operating systems would fit on a single floppy disk!  I used to use a computer whose entire hard-drive capacity was only 0.005 GB!  So get off my lawn!)  I decide to free up some space by deleting old Company 𝔾 stuff.  The most useless stuff is non-final versions of slideshows for conference sessions, which surely I will never look at again (nor will anyone else).  I try using an Emacs keyboard macro to select the non-final versions from a list of all conference-data files, but the list is long and the macro runs slowly.  So I write a Lisp function to prune the list, which runs in an instant.  It occurs to me that this is the first “computer program” I have written in many months.

June 29th: Windows 7 installs successfully inside the simulated computer, but it cannot access the Internet.  Google finds many people with similar problems, but most of their “solutions” don’t work.  It turns out that the default networking settings for VirtualBox are not compatible with Windows 7, even though there’s a drop-down menu with “Windows 7 (32-bit)” selected so VirtualBox will know what kind of OS it’s supposed to be supporting.  The correct answer is to tell VirtualBox to use the ”Bridged Adapter” methodology and simulate the ”Intel PRO/1000 MT Desktop (82540EM)” type of networking device, which is so old that even Windows 7 knows how to deal with it.
      StreetSmart Edge installs successfully and runs well.  The “Live Chart” function correctly updates once per second to show the latest prices on Wall St.  But the rest of my system lags a lot while VirtualBox is running.  I improve this some by telling VirtualBox to simulate a computer with only 0.75 GB of RAM.  (I spent most of my career writing software for computers with only 0.00003 GB of RAM, although those programs couldn’t do any fancy graphics.)  I only have enough hard-drive space to store one “snapshot”, so I set it to resume to the moment when StreetSmart Edge asks for my username and password.  I’m getting warnings that there’s *only* 1 GB of space available, so I invoke the wizard command “tune2fs -m 2” (kids, don’t try this at home), which reduces the /home partition’s safety margin from 5% to 2% and frees up another 2 GB of space.

June 30th: Begin writing up this document, which requires examining the log-files from the old Jessie partition.  Some of the ”facts” documented above might be inaccurate because I didn’t keep careful records as I went along; sorry.

July 1st: Time to get rid of the old Jessie partition to free up 12 GB.  To move partitions around on a hard drive you must boot from someplace else, but my usual USB stick was overwritten with Windows 8.1, so I download Linux Mint 17.3 again (meanwhile, Linux Mint has released version 18.0).  Write it to the stick and boot it up.  Remember that I haven’t set up Rosa to act as its own web-server yet, so save a copy of Jessie’s /etc to Rosa in case I need it.  Then use gparted to delete Jessie, make /windows be 1 GB bigger, and put the rest of the released space into /home.  This requires moving 21 GB from one spot on the hard drive to another, which takes half an hour.  Despite all the warnings that this could make my hard drive unbootable, Rosa boots up just fine.  Windows also boots correctly, after first spending a lot of time on chkdsk which finds no problems.
      So now all that’s left is to remove Jessie from the boot menu, since that menu item no longer points anywhere.  I use the wizard command “grub-mkconfig” for that.  All done!  Happy Canada Day!

pyesetz: (woof)
My membership card arrived today!  I am now a "card-carrying Liberal".  And I still have my membership card for the Free Software Foundation, so I remain a "card-carrying Communist".

At this month's meeting of the riding association, they voted me onto the board of directors!  Since we're now in the off-season for Canadian elections, becoming a director is simply a matter of showing up repeatedly for meetings.  Problem: now I'm supposed to help them raise money for the 2019 election!  I have no experience whatsoever in fund-raising, but I guess I have to do it to get some cred with this Old-Boy Network that I'm still hoping will someday get me a cushy job as a part-time software engineer, hopefully before all my remaining cash runs out.

Next problem: modern fund-raising requires a smartphone, which I don't have (and don't particularly want to get because the fonts are so damn small).  Everyone is supposed to be running an app called MiniVAN to record the results of the voter-contacts.  Maybe I can borrow Wifey's tablet and run it on that?  Or maybe use WebVAN on my laptop?  I'll find out at the upcoming fund-raising training workshop at the riding-president's house.

Another problem: who am I raising this money for?  Some of it is for the national party, which needs it to support the riding associations, buy TV ads, and fly the Prime Minister around on a private jet.  But much of it is supposed to go to the 2019 election fund.  Who will the candidate be?  If nothing changes between now and then, the riding association intends to nominate the same guy as last time (who didn't win).  He seems like a nice and hard-working fellow.

But something is *supposed* to change.  Justin Trudeau promised that 2015 would be the last time that Canada used a first-past-the-post winner-take-all election like the Americans.  Switching over to a proportional-representation system will require either making Parliament 30% bigger or making the electoral districts 30% bigger, which seems to be the preferred option.  Suppose the new district boundaries are drawn so that our candidate is in one riding and the money we raised for him is in a different one.  What happens then?  My guess is that no one really knows yet.


Dec. 13th, 2013 08:44 pm
pyesetz: (woof)
I didn't do much today.  The wind-chill was nasty all day, but most of the things I was supposed to have done were on the telephone.  One item: I was supposed to call one of the local "Chamber of Commerce" type places to ask if they know of any other Job Fairs like the one they held a month ago.  (They had 55 vendors, I handed out 5 résumés, went home thinking there were actually two companies I'd like to work at, but later found out that one doesn't need a software guy right now and the other has run into funding issues and can't hire anyone.)

I was also thinking of asking them where I could find a part-time semi-retired salesman for a "Linux system administration outsourcing" company, because it seems that I could actually form such a venture but none of us wants to be the guy who goes out and hawks the product to potential customers.  One of the nice things about sysadmin is that you really can create virtual full-time people by packaging up a bunch of part-timers (as long as work-documentation standards are strictly adhered to).  Two half-time contractors get paid less than one full-timer, so there's "margin" and "value-add" and all that lovely business stuff.  But I didn't call.

Today, PZ Myers wrote about the first time he asked out his future wife, which reminded me of my difficulties in picking up the phone to ask those two companies from the Job Fair why they hadn't called me back.  (You never know — I once got a job several months after a different job I had interviewed for had funding difficulties, because the interviewer remembered me.  And *that* job led to Company ℱ where I worked for 17 years.)  Professor Myers writes, "She was the brave one when she said yes."  Yeah, if any salesman were to agree to take on this gig, he would have to be a brave one.  Right now I have only one customer (that I would like to replace, or at least augment) and the method I used to acquire that one probably wouldn't work again.  I have no idea how to sell such a service, or how to determine what price the customers would pay for it, or how to find people who should buy it.  If you know that you're not good with sysadmin, then you don't think about sysadmin approaches to solving your problems, so you don't "feel the lack" of a sysadmin on your staff and don't realize that you could benefit from hiring an outsourcing firm.

I had a much easier time asking out my future wife than Dr. Myers did.  I just posted a "mating call" to a University BBS.  She was the only female respondent, so — years later — I married her.  Now if only I had some income to put food on the table for our children...
pyesetz: (woof)
It was about Emacs!  And stock-trading!  And the people I was speaking to didn't like any of it!  And I sort of knew that would happen before I even started!  I guess I'm just a glutton for punishment, because I keep trying to tell people things I know they don't want to hear.

Anyway, here is a transcript for my talk, which you should definitely click on if your preferred reading material contains text such as "Um, oh, okay, so there we go.  All right, so, perhaps if".  Clearly, I am not one of the world's best public speakers.

The timestamps in the transcript do not correspond to the original talk, but to this version (which you probably shouldn't bother clicking on).  I used audacity to reduce the tempo by 40%, which — due to the magic of mathematics — had the effect of increasing the size of the recording by 70%.

In other news, my Panasonic CF-Y5 laptop's LCD died again, so I got a Dell D620 to replace it.  So I had to give this talk using a computer that I had just bought, with an operating system (Mint 15!) that I barely knew how to use.  Considering that, things actually went reasonably well.

I had hoped that the guy from OpenText would be there again, but no such luck.  So, after my talk, I gave my résumé to the Company ℙ guy, but I guess there's no reason to expect any employment interest from him any time soon.
pyesetz: (stock)

It slices!  It dices!  It juliennes prices!  And don’t you want to know how it works?  No, of course not.  (See obsessive details.)

I had a drawdown a few weeks back, for which the standard response is “stop trading and start analyzing”.  So I wrote an analyzer program, because — unlike stock-trading — that’s something I actually know how to do.  My program looks at weekly historical data for a stock and uses rules to calculate what the buy and sell prices would have been; from those it computes, for each week, how long the stock would have been held if bought then and what the profit would have been.  That was the easy part.

Then I added calculations for various technical indicators such as MACD.  Doing this required that I learn how those indicators really work.  MACD is especially difficult because it is the difference between two exponential moving averages, and EMAs are very sensitive to round-off error.  I don’t know how people managed to calculate these things back in the olden days of pencil and paper: if you make an arithmetic mistake in your EMA, it will continue to screw up your results for more than a year afterward.

To avoid having to write a graphing module for my program, I tried to make my indicators produce the same values as the indicators at so I can use their free charts to display my results.  This was mostly successul except that I think their values for Parabolic SAR are bogus and I refuse to match them; whenever a stock has a wide-ranging week following by several narrow-range weeks, from then until the next stop-out the pSAR values shown on their charts are just way too low in my opinion.  But I got everything else to match, down to at least one decimal place and usually two.

Now the creative part: I assigned limit values for each indicator.  If the indicator was on the wrong side of its limit, that meant the stock should not be bought.  For each week, if none of the indicators said “do not buy”, then my program would pretend to buy the stock and see how it would have done.  Then I used a technique much like simulated annealing to adjust the limit values for maximum gain.  Result: only 1% of weeks were selected for purchase and those weeks yielded a 6% gain on average.  Then I doubled the number of stocks being analyzed (from 50 to 100).  Result: average purchase yielded a loss!  So I tweaked the limit values some more and got the average gain up to 4% per purchase.

additional boring verbiage )

I slapped a GPL on my program, but I don’t plan to publish it yet until there are some realized gains to show.  It is written in Emacs Lisp, which is the best language I know for writing programs where you don’t know where you’re going until you get there.  It is a little slow: 0.03 seconds for a weekly scan of three years for a stock.  But the speed is fine if I am just testing individual stocks that has already selected for me.
pyesetz: (Default)
The next “Company 𝔾” conference is coming up very soon!  Three customer complaints came in over the last two days, saying that the website wouldn't let them have their sets of slides for sessions-not-attending, even though it had already given them the slides for the sessions they did plan to attend.

The problem is here:if ($x == "all") {
    …some code…
So, does some code get executed or not?
‣ Yes if $x is the string "all";
‣ No if $x is the empty string "";
‣ No if $x is Boolean FALSE (which prints as an empty string);
‣ No if $x is the number 1 or the string "1";
Yes if $x is Boolean TRUE (which prints as "1").

I can sort of see why the PHP folks might have thought that it should work that way, but that's not what I meant!  Fix:if ($x === "all") {
    …some code…
The third equals sign means exactly equal rather than close enough.

Of the 536 customers for this conference, only 52 have tried so far to get their non-attending slides.  Because of this bug, the software told all of them that their downloads were “unauthorized”.  Bad software, bad!  Fourteen customers got around the problem by using the download-in-parts function, which is just supposed to be for large books downloaded via slow, unreliable modems.  As for the other people?  It seems they meekly accepted the computer's claim that they were not entitled to their books (which were supposed to be included in their conference purchase price).  “Mr. Bear” sent them emails apologizing for the computer's impertinence and asking them to please try again to get their books for the conference.
pyesetz: (fire-hunter)
The yum update command is supposed to fix problems, not cause them.  It installs only carefully-vetted changes that merely improve security and do not change the function of any program.

Yesterday I ran yum update on company 𝔾's servers.  It found 14 updates, including one called "httpd.i386 0:2.2.3-31.el5.centos.4".

Today I got an email:
From: anonymous@Company 𝔾.com
Subject: Output from your job 97
To: apache@Company 𝔾.com

This account is currently not available.
Well, isn't that special?  I like to use the adverb "currently" a lot, but that message doesn't appear in any of my code.  A Google search says it comes from /sbin/nologin.  Apparently the update for httpd had silently "fixed" the "problem" that my system allows Apache to run batch jobs, because surely only an Evil Hacker would ever want to allow such a thing so it should just be fixed without even mentioning it.  So I edited /etc/passwd to reënable (hi, Logan!) the batch jobs, but obviously this problem will come back with the next update and next time I might not be so lucky that the email shows up soon after the update so I can connect them in my head.

There's remarkably little on the web about this.  Allowing Apache to run batch jobs is so mind-bogglingly insecure that no pundit tries to defend the practice.  For example, this page tells people to "temporarily" enable Apache logins, but is preceded by the text "NOTE !!! only change the following for testing purposes so that you can su to apache from root and test xmms !!!!" because of course there could never be any legitimate reason to do such a thing non-temporarily.  Earlier on that page, another commenter recommends using sudo, but with the proviso "Major security risk - do it only if you really need to run some commands as different users (nologin users) and if you are really lazy :)".  Apparently his preferred solution is a cronjob that runs constantly, looking for work to do.  Since when is polling to be preferred over an interrupt-driven approach?

I guess I'll write a setuid program to run the batch job as some random user.  It doesn't matter who; the batch job is already using a setuid program to read a logfile that's restricted to root, and the results are written to a MySQL table.  It'll be just another useless layer of indirection to placate some paranoid person someplace, with minimal actual increase in security.  If nobody else in the whole world allows Apache to run batch jobs, then nobody will aim a virus at that attack-vector and I'm completely safe!!!  And why is it so much more horrible to let Apache run batch jobs than to let it run programs like "batch" in the first place?
pyesetz: (Default)
"Even if a network administrator does not wish to ban, say, role-playing games outright, there is value in saying that such uses of the network should not interfere with real work like reading XKCD."

--- link (talking about the Linksys WRT54GL wireless access point with custom Linux firmware).


Jan. 3rd, 2010 04:34 pm
pyesetz: (mr_peabody)
Over at SP I wrote a post called God, as perceived by scientists.  It's not very good, but seems reasonably well-received.

Several people wrote comments beginning with "As a scientist..." but only one was frankly negative.  That fellow apparently subscribes to the Popperian school where only the successes count as "doing science".  Popper's philosophy of science is fine as far as it goes (and his political philosophy is also good), but it describes only a small fraction of an actual scientist's daily activity.

A New Age-y person thanked me for writing "good nonsense", while a conservative fundamentalist Christian opined that "the diary was good and maybe the poll choices were nonsense".  It seems that the "scented melon-breasted woman" item in particular was over the top.  I'm giving my "most insightful comment" award to Ms. Shakti, who says
All of us are dealing with our own perceptions, gathered through our uniquely tuned sensory apparatus, processed through individual brains with their own idiosynchrocies, and filtered through our individual life experience and understanding.  It doesn't matter what I think god is, or what my experience of god is, it will only make sense to me and most likely be nonsense to everyone else. Some people perceive God, some perceive no god, the difference is not in absolute reality, the difference is all in our perception.

Overall, 42 comments and 13 poll respondents isn't bad for a stupid little post!  But zero people voted for "God is the reason why so many experiments fail", which was arguably the thesis of my post.  So I guess my thesis is bad and should be discarded.

Maybe next I should do a post on "Is God Hyperdimensional?"  Short answer: we don't know and we can't know, but it's fun to speculate.

* * * * *

After Christmas, Kid #1 told me that there was a Dr. Who marathon coming up on January 2nd and none of the video-recording equipment in our household was up to the task of recording it while we go out for our monthly "lunaversary" celebration.  So I bought a USB TV tuner to convert Kid #1's laptop into a TiVo.  As expected, the included Windows software is crap—just the excuse needed to switch Kid #1's computer over to Linux!  But MythTV is horribly difficult to install (I eventually got it to show a single station with no sound).  I tried a few other PVR packages but they were even worse, e.g. Freevo couldn't seem to figure out what the channel frequencies were.  After spending two days fighting with the thing (instead of working my paying job), I began to wonder what my SP post had to do with this TV tuner thingy.  What was God trying to tell me that I didn't want to hear?

Meanwhile, Wifey is complaining that I'm playing favourites among our children.  Kid #1 gets this new $100 toy while I refuse to kick in $50 for a Wii for Kid #2 (because he didn't want it until after Hanukkah gift-giving season was over).  Wifey is really annoying when she's right.

So I decided that what God was trying to tell me was that homemade PVR technology is not yet ready for prime time and I shouldn't be working on it.  The tuner has been set aside, to be returned to my local brick-and-mortar BestBuy store (on the other side of Kitchener, only 25km away).  We had take-out Chinese food on January 2nd so Kid #1 could watch the Dr. Who marathon without having to record it.  Meanwhile, Kid #2 and his Wii are still up in the air.

Of course, I could be wrong about this.  The only person to write a "customer review" at the BestBuy website says he likes the thing because he can use it to connect a Wii to his computer.  What a remarkable coincidence!  I may regret returning it.  But you know, sometimes you've just gotta pick a path and walk it.  As a professional software engineer, I can keep pushing the rock up the hill with the best of them.  But some hills end up being much much higher than originally predicted and a good engineer will recognize when a project has become a "runaway freight train to Nowhere".  Yadda yadda, insert your own lame excuses here.
pyesetz: (sozont)
I don't really have a website.  I used to have Furtopia, but I messed up and my account was frozen.  I used to be a paid member here at LiveJournal, but I had to cut costs.  For a while it seemed I didn't "really" need a website since I could just embed images directly in journal posts, but LiveJournal recently (and silently) stopped allowing that.  As usual, they didn't reply to my support request, so I'm left guessing as to why they did it.  My guess: it allows people to not buy LiveJournal memberships because they don't really need the ScrapBook® feature!  If that is really the reason, the new owners have flushed [ profile] brad's original raison d'être for this site and I should avoid paying them on principle.  That's too bad because I really liked the (poorly-documented) RSS feed of friends-only posts.  It was my favourite paid feature.

A few months ago I created a Google Sites website.  It seemed like it might fill the bill, although the documentation for how to write JavaScript for it seemed rather complicated, so I put off learning more about it.

Last night was the beginning of Rosh Hashanah.  Since "Mr. Bear" and I are both Jewish, I generally make a show of not doing any paid work on major Jewish holidays.  What to do instead?  I worked on my Google site.  Problem: it is difficult to figure out how images stored in Google's File Cabinet (example) are to be hot-linked from other websites (example — can you see the laptop photo?).  In general, it seems that Google Sites is too concerned with preventing you from doing things that will make Google look bad and not concerned enough with ease of (re)use.  Also, their Terms of Service allow them to delete your site at any time for any reason or no reason.  Hey, if I didn't care about long-term storage or customized programming, I would use Imgur!

So I restarted another old project: find an ISP.  I wanted
  • Server physically located in Waterloo, Ont. (since we have plenty of connectivity here);
  • Runs Linux so I don't have to learn another operating system;
  • Offers ssh shell access so I don't have to learn another "website control panel";
  • Virtual Private Server technology so I can get root access even with "el cheapo" shared hosting;
  • PHP and MySQL for custom programming (which is what initially attracted me to Furtopia);
  • About $7/month, which is what WestHost used to charge for this feature-set (but they're in Utah, the cheap plan is now $9 and doesn't include ssh anymore).
Last night I found lots of ISPs that had *some* of these features, but none had *all* of them.  And reading through HostSearch was depressing; so many of these hosts have gone out of business after posting their ads.  Consider AroundKW:  They're based in Waterloo, but apparently their server is in Florida.  No Linux, no ssh, and minimum $12/month.  Other people offer Linux for as little as $2/month, but almost nobody dares to offer ssh (which would be suicidal for a Windows-based ISP to offer, due to lack of security).

But lo and behold!  HostMDS offers Linux, ssh, PHP+MySQL, hosting in Waterdown Ontario (at least it's in-province, but they claim it's in Toronto?), and only $6/month!!!  Their Terms of Service are reasonably clear ("A website is considered using 'Excessive amounts of resources' when it monopolizes the resources available using 10% or more of system resources for longer than 60 seconds.") although it seems wrong to me to mention "Canada" and "DMCA" in the same paragraph.  Sorry, Stephen Harper, nobody but you wants a DMCA here in Canada!

So I tried signing up for their basic starter "Unlimited" plan.  Things were going fine until I got to the page where it said "To protect against fraud, we will now call the phone number you gave.  Enter this PIN when prompted.  Click HERE to begin the call."  But it was 1 AM and I had sleeping children!  Today I managed to get the signup process restarted to the point where their computer did call me and I entered the PIN and also the voiceprint of my name, but the transaction still didn't go through because it had already been "cancelled".  I tried a complete do-over, but then it wouldn't give me the hostname I wanted because "this name is already in use at HostMDS; cancel your other website first" but the name isn't in use and it shows in my account as "cancelled; status FRAUD".

I sent email to their sales department, but it's the weekend and they probably won't reply until Monday.  And then Rosh Hashanah will be over.

So I had to think of yet another thing to do that wasn't paid work and wasn't 8 boring hours of chanting Hebrew in a synogogue.  I started cleaning out my email inbox.  I actually managed to get rid of 10% of the oldest entries (down to 371 now) before thinking of something else to do instead: write this post!

UPDATE Sunday 20 Sept.: Heard back from HostMDS sales.  The "fraudulent" signup evaporates after 24 hours.  So I signed up again and asked for a new phone call—which failed because Wifey was on the phone to her mother!  Oh well, guess I'll try again tomrrow.
pyesetz: (Default)
Globe & Mail:
Microsoft Corp. said Thursday its quarterly revenue fell from the previous year for the first time in its 23-year history as a public company… In January, Microsoft said it needed to resort to its first mass layoffs, cutting 5,000 jobs… Microsoft makes most of its profit selling the Windows operating system and business software such as Office. Those divisions were hurt when PC shipments fell for the second straight quarter as consumers and businesses sharply cut back on technology spending… Shares of Microsoft added 14 cents on the Nasdaq Stock Market to close at $18.92 on Thursday. In extended trading after the earnings report, the shares gained 5 per cent.

From the comments on the G&M article:
    Well, with so many companies and institutions locked into Microsoft licenses, they'll have a steady stream of revenue no matter how bizarre their bloatware is. These outfits will just have to buy new MS releases and install them no matter what, per the terms of their licenses. …
    Microsoft has had an easy go of it over the last fifteen years. They have been successful in foisting their insecure bloatware onto the market by crushing adversaries through questionable monopolistic practices. If they had a history of product excellence and innovation I would have some sympathy for them. …
    New Ubuntu release today.  Coincidence?  I THINK NOT!  Really though after playing with this week's new Ubuntu release it has never been more clear that MS is living on borrowed time.  In every metric it is simply a better OS and innovates and improves with every release.

See also The Future of Computing will be "Good Enough".
pyesetz: (Default)

Well, there's the Furry Fandom.  I have received some LJ comments I should answer.  The KW furmeets continue, but I think I'll wait for warmer weather before attending another of those—they meet *outside* at a plaza and then stand around in the cold deciding which restaurant to go into.


My laptop is working reasonably well, but the suspend/resume performance is disappointing: Linux takes 14 seconds to resume, while Windows gets it done in two seconds.  Unfortunately, the Linux-on-TOUGHBOOK community is much smaller than the Linux-on-ThinkPad community I used to be in, so it's much harder to find and copy the fixes that others have discovered.  Linus recently blogged about how soul-crushingly hard it is to figure out the root cause of a suspend/resume failure and how much better life is after you do it.  (And don't miss his post about Christmas toys!)

My laptop has 512 MB of RAM, which is considerably more than any other computer I've ever owned, but still it seems not to be enough.  When I run Emacs, Opera, Kmail, and OpenOffice all at the same time, there's a whole lotta page-swapping goin' on—so I avoid running OpenOffice.  Apparently all those cute 3-D desktop effects that I've enabled eat up a lot of RAM.  Some sources say that the CF-Y5 laptop is picky about specific chips on memory-expansion cards and only certain cards will work (the ones *they* sell, of course), while other sources say that any old 172-pin PC2-4200 microDIMM DDR2-533 card will work.  These days a 1 GB card costs about $80.  I'm so old, I remember paying $1000 for a 5 MB hard drive!

More problems: occasional failures to repaint one of the GNOME panels after resume, and occasional failures in the gnome-system-monitor app which just stops updating until I change something its “Properties” panel.  My guess is that some inter-process signal is getting lost due to timing issues.  I just want to repaint the screen, but I searched all over Google and couldn't find a simple repaint-the-screen app for X11.  The old twm window manager had a "repaint" menu function, but apparently that isn't supposed to be needed anymore.  So today I received an email from the “emacs-devel” list where somebody complained that Emacs was leaking memory and as proof they provided their output from the xrestop command.  I don't have that command installed, but I *do* have one called xrefresh which begins with the same letters.  Duh!  So now I've set up a menu command for repainting the screen (the problems haven't come up since, so I don't know yet whether this command will fix anything).

And why are there no screenshots for gnome-system-monitor, anywhere on the web, that show its "closed" form where it pretends to be perfmeter?  (See perfmeter screenshot halfway down the page.)  It's like some sort of conspiracy or something...


Speaking of conspiracies, did you know that the Bush Administration ended last Friday?  That was the last workday for most Bushies, who turned in their badges and went home for the last time.  The government is running on skeleton staff during this MLK Jr. weekend until Tuesday's inauguration.

So Obama flew from Washington to Philadelphia so he could then take the train back.  One pundit, at a loss to explain why the Commander-in-Chief-elect did this, suggested that “His magic carpet was presumably out of order.”  Obama’s official explanation had something to do with following in the footsteps of Abe Lincoln, who killed 600,000 of his own countrymen in an avoidable war, suspended Habeus Corpus, depropertized the slaves of Southern landowners without eminent-domain compensation, and wrote some really nice speeches.

Look, I'm all in favour of having Hope for Obama to bring some Change that the whole world can Believe In, but the guy is obviously a power-mad lunatic just like anyone else crazy enough to run for the presidency.  His nuclear-weapon policy makes perfect sense for a guy who is eagerly looking forward to being in possession of the nuclear football, that magic talisman of Presidential Power, the One Ring of invincibility, the only reason (that I can think of) why nobody ever dared to arrest Bush despite his national-TV admissions of criminal acts.  And WTF is going on with Obama's TARP policy?  So he doesn't want transparency in government after all?

pyesetz: (arctic-fox)

Have I mentioned that I do not like Perl?  Yes, I think I have.  Well, I'll say it again.  Non-programmers should skip this post, which is just a long drawn-out whine about how Perl makes computers unnecessarily difficult to operate.

Today's job: install Bugzilla.  Bugzilla has a neato feature where you can send it email and it will make a pretty bug report out of whatever you say.  How do I know that?  Wikipedia said so back in October (and I have a citation in an email to prove it), but there's no mention of it there now and no mention in the Bugzilla configuration manual.  It's in the API manual.

So there’s this program that's supposed to read the email, which means I have to tell the email system that all email received on behalf of some nobody-would-ever-guess-it address should be processed by this program rather than being held for someone to read.  My laptop uses postfix, so all I have to do is add this line to file “/etc/aliases” and then recompile the aliases database:
     nobody_will_ever_guess: |/usr/share/bugzilla3/lib/
Where the | character means “run this program when mail is received for”.

Okay, now send a test message to the special address.  Fail: Permission denied.  Set the ‘execute’ permission bit on the program file.  Fail: Permission denied.  Allow userid ‘nobody’ to access the program’s parent directory.  Fail: Can’t find module  Add a use lib statement to the program—didn't anybody test this thing?  Fail: Can't find module Email::Reply.

Well, I guess that’s a reasonable error.  Bugzilla’s script had warned me that module Email::Reply was missing but optional.  It even told me the exact command needed to install it:
     /usr/bin/perl -MCPAN -e 'install "Email::Reply"'
Piece of cake!  So I intone the command as instructed.  Fail: Can’t access server  It's down for Christmas.  But is up and has the same data—and Perl helpfully tells me the comand to use to give it an alternate server: 'o conf urllist push ftp://myurl/'.  But it doesn’t tell me *where* to enter this command!  I try /usr/bin/perl -MCPAN and enter the command o conf urllist push Bareword found where operator expected.  Maybe quotes around the URL?  Fail: Syntax error.  Okay, I don’t speak Perl (apparently the correct answer is q[], which is both ugly *and* materially different from what was said in the hint) so I add a line to /etc/hosts to make outgoing requests to "" actually get sent to "" (try *that*, Windows® mavens!).  This produces a cascade of error messages (because is not equivalent to, but to, so all the URL paths are wrong) but somehow it manages to download the file anyway!

Okay, now send the test message again.  Fail: Permission denied, file /etc/bugzilla3/localconfig  This is going to be a problem.  The program is getting run as userid ‘nobody’ but all of Bugzilla’s files are restricted for access by userid ‘www-data’.  I try fiddling around with the permissions a few times, but Fail fail fail: denied denied denied.  I set the sticky-userID bit on the program.  Fail: cannot exec sperl.  Install Ubuntu package “perl-setuid”.  Fail: Insecure dependency on chdir at line 31 of  Didn’t anybody test this thing?  How can it possibly work without setuid, and how can it possibly work *with* setuid if they didn’t write it with the extra care required for such programs?  The reason why it is calling chdir() is because it wants to include some subprograms from the same directory where is stored.  In other words, it is assuming that the current directory is part of the library include path, which is absolutely not true for setuid programs.

So clearly this program is not supposed to be setuid.  Postfix has a way to set the userid for subprograms that it runs, but I can’t figure out how to do that for programs specified using | in /etc/aliases.  Maybe I should just install this thing on Company 𝔾’s server, which uses qmail instead of postfix.  So I install Bugzilla there and configure it the same as on my laptop, including the feature “automatically compress BMP attachments to bugs as PNG”.  Fail: Can’t find Perl module ImageMagick.

Okay, again this missing module is identified by, which tells me to use one of those -MCPAN commands to install it.  By now, is back up, so I don't have that problem again.  It offers me a selection of mirror-servers and I select “” because it's first on the list.  Oops!  Apparently PSU doesn’t really have the CPAN files anymore—I get a cascade of errors and instructions to use "o conf urllist" again.  Well, I know *that* won't work, so I scroll back through my Emacs shell buffer to find where it said “commit: wrote /usr/lib/perl5/5.8.8/CPAN/” and then I edit that file to name one of the other mirror-servers.  It successfully downloads the module but then Fail: cannot compile.  Install Fedora package “ImageMagick-devel”.  Fail: cannot find directory /usr/include/ImageMagick.  Fuck CPAN and just install Fedora package “perl-ImageMagick”.  Success!

So next I should try getting that program running under qmail on the company’s server, but it’s too late at night now.  Fail: programmer time exhausted.

pyesetz: (Default)
[ profile] jrittenhouse mentioned a website which turns text into a graph of your favourite words.  Unfortunately it doesn't accept LiveJournal as input, so I took all my LJ posts, removed <tags> and &entities;, then uploaded the resulting ½ megabyte of text to Wordle. Result:
(click to embiggen)

Obviously this is a terrible furry blog.  PEOPLE is said here much more often than dog!  And I had no idea that I talked about time so much.

Wordle's graphics engine is actually quite nice, but I wish it did a better job of combining declensional forms of the same word: "person/people" are not two entries, nor "call/called" nor "company/Company".

Work post

Feb. 27th, 2008 01:49 pm
pyesetz: (Default)

Lorem ipsum dolor sit amet.  This is some pointless text to go with the animated elephant, which was drawn by Vincent Pontier, who is apparently friends with Oliver Plathey who wrote the FPDF module for PHP.

When I started working at Company 𝔾 in June '06, I didn't know anything about MySQL, so "Mr. Bear" suggested that I use XML instead.  Being a n00b, I stupidly chose the DOMXML module, which is specific to PHP4 and has prevented us from migrating to PHP5.  Now PHP4 is at "end of life" and we really need to get rid of it.  Also the nightly validation report has started failing because even 48 MB of RAM is no longer enough to load in all the databases and check them for validity (because DOMXML has serious memory-leak issues).

This month I've been busting my tail, sniffing the grindstone, trying to get my billable hours up high enough to staunch the financial bleeding.  My RSS feed of LiveJournal posts now has 266 289 unread messages.  Last weekend I had gotten it down to below 100 but the posts just keep coming!  Oddly enough, there is no post from [ profile] xolo about his Christmas celebrations.  And no reply for my email to [ profile] loganberrybunny re the use of state/province to refer to the "home countries" of the UK; has offence been taken?

For the last three days I've been removing XML and replacing it with PHP arrays.  Instead of
<name>Joe Schmoe</name>
<city>Pike's Peak</city>
it's now
$DB_Entries['deadbeef'] = array (
'name' => 'Joe Schmoe',
'country' => 'USA',
'region' => 'Colorado',
'city' => 'Pike\'s Peak',

Looks about the same, loads 10‒20 times faster!  Really, this is a serious demerit for XML.  The whole point of XML was that, since everyone would use it, it was worthwhile to optimize the Hell out of the parser for it, so then XML should be parsed faster than any other format.  But PHP's program-code parser is much faster than their XML parser.  In part I think this is because of the attributes.  XML tags have optional attributes, even though I don't use them, so the isomorphism between XML and PHP-arrays potentially could fail, although it doesn't in my case.

Making this change required touching just about every actively-used file at the website!  All the databases needed conversion.  Any program that reads databases needed to start reading them the new way.  Any program that generates databases needed to start writing them the new way.  I've probably introduced dozens of bugs.  We'll see if I get any bug reports.  Most pages at the website are now served in only ⅓ the time they used to take; will anyone notice?

And so, with this little side-problem taken care of, I can get back to the main project for this winter.  Unlike most Company 𝔾 projects, this one actually has a deadline because there's a conference in May that it has to be ready for.  I need to convert various files to PDF and then combine the PDFs on the fly, hence the need for FPDF, whose homepage has an elePHPant and a link to Vincent Pontier, hence this post.  Bye!
pyesetz: (Default)
At least, I *think* they're bon mots:

But why curse Emacs for having absolutely every command imaginable?
pyesetz: (Default)
Welcome, [ profile] solstice_sings!  I believe this is first time I have ever had an LJ friend living in the same county where I am!

So I sent Solstice an "e-mail" (because that's, like, just how *old* I am) and he suggested that we should chat on IM.  Have you ever seen that adult-literacy ad on TV about the fellow who's told "Sure we'll hire you; just give us a call" and he goes into a phone booth (yes, the commercial is very old) and freaks out in a cold sweat because he doesn't know how to use a rotary telephone so he can't get the job?

I wrote a chat client for VAX/VMS, 25 years ago.  It was only for local users at my Uni and wasn't very popular, but then very few programs were, back in those pre-WWW days.  I've, um, never actually *used* one of these new-fangled GUI clients.  Back in 2005, one coworker wanted to IM me—I got him to do a remote log-in to my Linux workstation and use the write command!

So.  An IM client.  I can do this!  Start up synaptic and search for "chat".  Nothing.  Google for "debian chat client".  Google suggests jwchat.  Go back to synaptic and install it.  Configuration is rather hairy; how exactly do I contact people on AIM or MSN with this thing?  Uninstall.

LiveJournal recommends Kopete, Pidgin, or Psi for Linux chat.  Kopete is a KDE thingy, while I'm mostly using GNOME (except for kmail, which occasionally warns me that I'm at risk of getting pickpocketed because I'm *not* using kwallet, but I digress...)

Go to Pidgin's website.  No Debian package available.  Download the source tarball.  (I think I still have a button that says "Use the source, Luke!" that I wore a few times in high school).  Unpack and configure.  Fail: "XML::Parser perl module is required for intltool".  Uh oh.  When programs want Perl modules, I hardly ever get them working.  I just don't understand why [ profile] brad likes Perl so much.  Its dependency system seems rather rickety.  When I install a PHP program, it JUST WORKS™, like Free Software should.  Ah, whatever.  Delete Pidgin source.

Install Psi via Synaptic.  Looks very nice!  Connects to LJtalk with no problems!  So how about AIM and MSN?  The docs suggest that I have to find a gateway server, but the wiki page that's supposed to list public servers is empty.  Some blogger says he's using, so I use that.  The docs suggest that it is possible to connect to the MSN server without having a Passport account with them, but the description for how to do it is obscure.

Wait!  I've got LJtalk!  [ profile] rabitguy is available for chat and he's a Linuxhead!  Hey Rocky, watch me pull a Rabit out of this hat!  *r-r-r-rip* Nothin' up my sleeve!  Presto!  I've got instant messaging!  Rabit says Psi is a Jabber-only client and difficult/impossible to use with those acronymic walled-garden chat systems.  He's using Kopete.  Thanks, Rabit!  I'll get by with a little help from my friends...

Uninstall Psi (cause I'm just anal about such things).  Install Kopete via Synaptic.  Works!  Connects to LJtalk.  Has a button to press to get a free AOL chat username, which works.  Connect to AIM.  Add Solstice to my friends list.  It all WORKS!  And Solstice is... offline.  Well, it's Saturday night.  Hours go by and it's just me and [ profile] rabitguy and that stupid Frank-the-robot-goat that LJ includes on my friends list, even though the only thing it does is post to your journal anything you say to it; I deleted it and then when restarting Kopete, LJ *insisted* that Frank the cute cuddly mascot goat is my friend, whether I want him or not.  I suppose there's no reason to hope that SUP will be any less dictatorial about these things than 6A has been.

Oh, and also there was [ profile] giza, who was online-but-unavailable because he was at a 'wuffmeet'.  So what's a spottycat doing at a... no, I shouldn't ask.
pyesetz: (arctic-fox)

"Clubbing baby Linux penguins... No PR in the world can fix this."


pyesetz: (Default)

April 2017

23 45678


RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 26th, 2017 08:27 am
Powered by Dreamwidth Studios