Wednesday, August 19, 2009

OS X panics

A recent kernel panic on my Macbook looks quite familiar - I think it's been happening now and then since I got the machine in late 2007. This time, and probably most of the other times, it was showing video on Youtube, which suggests there might be a bug in the video driver (or err... the video card :/), but there's not much information to base a confident guess on.

The crash report looks like:
Tue Aug 18 17:58:36 2009
panic(cpu 1 caller 0x00194B15): "pmap_flush_tlbs() timeout: "
"cpu(s) failing to respond to interrupts, pmap=0x46c7ae0 cpus_to_respond=0x1"
@/SourceCache/xnu/xnu-1228.12.14/osfmk/i386/pmap.c:4582
Backtrace (CPU 1), Frame : Return Address (4 potential args on stack)
0x343f3be8 : 0x12b4c6 (0x45ec20 0x343f3c1c 0x13355c 0x0)
0x343f3c38 : 0x194b15 (0x465018 0x46c7ae0 0x1 0x195234)
0x343f3ca8 : 0x197eb4 (0x46c7ae0 0x26b46000 0x0 0x0)
0x343f3d88 : 0x16087d (0x46c7ae0 0x26b46000 0x0 0x71f9)
0x343f3de8 : 0x163170 (0x1c67c40 0x46c7ae0 0x26b46000 0x0)
0x343f3f58 : 0x1ab39c (0x4f7983c 0x26b46000 0x0 0x3)
0x343f3fc8 : 0x1a15fd (0x68b8900 0x0 0x1a40b5 0x68b8900)
No mapping exists for frame pointer
Backtrace terminated-invalid frame pointer 0xbfff7e88

BSD process name corresponding to current thread: firefox-bin

Mac OS version:
9J61

Kernel version:
Darwin Kernel Version 9.7.0: Tue Mar 31 22:52:17 PDT 2009;
root:xnu-1228.12.14~1/RELEASE_I386
System model name: MacBook2,1 (Mac-F4208CAA)

System uptime in nanoseconds: 810215756731744


A quick Google turned up mostly useless assertions on forums like "it's probably a faulty logic board or memory stick - reboot into single user mode and run memtest". In my experience, when memory goes bad, it's much more impressive than an occasional (something like once every month or two) panic. Searching a bit more carefully, I turned up some kernel source code released by Apple (cool!):

xnu-1228/osfmk/i386/pmap.c -> pmap_flush_tlbs(...)

if (cpus_to_signal) {
deadline = mach_absolute_time() + LockTimeOut;
/*
* Wait for those other cpus to acknowledge
*/
for (cpu = 0, cpu_bit = 1; cpu < real_ncpus; cpu++, cpu_bit <<= 1) {
while ((cpus_to_signal & cpu_bit) != 0) {
if (!cpu_datap(cpu)->cpu_running ||
cpu_datap(cpu)->cpu_tlb_invalid == FALSE ||
!CPU_CR3_IS_ACTIVE(cpu)) {
cpus_to_signal &= ~cpu_bit;
break;
}
if (mach_absolute_time() > deadline) {
force_immediate_debugger_NMI = TRUE;
panic("pmap_flush_tlbs() timeout: "
"cpu %d failing to respond to interrupts, pmap=%p cpus_to_signal=%lx",
cpu, pmap, cpus_to_signal);
}
cpu_pause();
}
if (cpus_to_signal == 0)
break;
}
}


I won't make any pretense at understanding most of this, but it looks like, for that panic to occur, the condition (!cpu_datap(cpu)->cpu_running || cpu_datap(cpu)->cpu_tlb_invalid == FALSE || !CPU_CR3_IS_ACTIVE(cpu)) is never met, so we keep waiting and checking until our deadline passes.
The timeout appears to be 12500000 mach time units, which apparently are equivalent to nanoseconds on my laptop - so 0.0125s, or 1/80th of a second.

So if we revisit that condition, we can assume that we get to a stage where, for at least 1/80th of a second, the inverse of the test is always true (or happens to be, every time it's checked - could be a race condition I suppose?): (cpu_running && cpu_tlb_invalid && CPU_CR3_IS_ACTIVE(cpu))...

I'm too lazy to look up what CPU_CR3_IS_ACTIVE(cpu) (a macro that expands to ("(cpu_datap(cpu)->cpu_active_cr3 & 1) == 0)") signifies, but the whole CR3 mess is some kind of i386 control register for dealing with virtual memory paging. Beyond these most basic observations, I'm pretty clueless about the problem, so would love to hear from anyone if you have any ideas.

Monday, May 18, 2009

Torrenting on the Mac

After a few years of using Azureus (or Vuze now) without major problems other than kind of large CPU and especially RAM usage, a friend suggested I give µTorrent a try since they now have Mac builds. I did, and after the first two builds which suffered from a CPU hogging bug, was surprised to find version 0.9.1.2 running smoothly for a couple of days, using about 2-5% CPU and 22MB of RAM with DHT, Peer Exchange and outgoing encryption enabled (before switching these on, it was taking about 0.6% CPU!).

That's pretty impressive IMO - previous BT clients I'd tried (Tomato, Transmission and the built in one in the Opera web browser) either seemed a bit cut-down and/or just didn't seem to download at the same speeds Azureus had achieved. So far µTorrent has worked very quickly, and has the further benefit for me of reliably working with pasted torrent URLs - Azureus almost always times out when downloading .torrent files via HTTP (no idea why; maybe a Java thing, but it happened on both my Mac and Linux boxes).

The only cons so far are that it's not open source, and that there's no Linux build... but I don't use my Linux box these days anyway. Give it a try if you're exploring BT clients on the Mac!

Friday, April 24, 2009

media filler: 'offensive' Baby Shaker

(see CNN article)
The 'Baby Shaker' app is about as stupid as the 'controversy' over such a meaningless little thing.

Typical media nonsense... 'outcry' from politically correct whingers, so what? There are always people who will get offended at something.
It's equivalent to a teenager's poorly-scrawled graffiti - offensive to anyone who WANTS to get offended, but otherwise completely trivial.

There are people being tortured and murdered, drink drivers doing hit'n'runs out there, and THIS is what makes the news? That's just silly.

Also silly is that Apple (and others in similar 'outcry' situations, like Youtube) respond so quickly and arbitrarily to take down applications like this. Not specifically in this case, because it is clearly a stupid and tasteless program, but in general when hosting providers like Youtube, Apple and some web hosts receive complaints about the 'offensive nature' of some content and they immediately (and perhaps without discussion with the author) take down the content - again, there are always going to be people out there who like to get offended at anything.
What it boils down to is that sometimes free expression suffers due to politically correct or simply malevolent, loud complainers.
Indeed, in probably all hosting provider contracts, they specifically assert the right to delete any content deemed offensive. How can this work, though, if offensiveness is in the eye of the beholder, which it most certainly is?

Friday, March 06, 2009

Lexmark X4550 wireless woes with OS X, part DEUX

The Mac drivers for the Lexmark X4550 (listed as '3500-4500 series') are a little twitchy in that, after not using the printer/scanner for a while via its wireless interface (e.g. after the wireless router has restarted), it will no longer connect to the Mac to scan nor will the Mac connect to it to print. The typical case when trying to scan and upload to a computer on the network is that the printer will display "Downloading application list" on the LCD panel after you select the desired computer to scan to, and then after about a minute, "Cannot retrieve application list".

Anyway, the scabby workaround for me is a little script which simply kills and restarts a pair of Lexmark driver services:

$ cat ~/bin/restart-lexmark-x4550.sh

killall LexmarkNetworkServices
killall "3500-4500 Series Button Monitor"
open "/Library/Application Support/Lexmark/LexmarkNetworkServices.app/"
open "/Library/Application Support/Lexmark/3500-4500 Series Scanner.bundle/Contents/SharedSupport/3500-4500 Series Button Monitor.app/"


This seems to do the trick. Of course, it would be better if Lexmark would fix their drivers, but after the last phone calls I had with their tech support I don't think this is a big priority for them (it was an outsourced-to-India tech support line, where the guy did almost everything he could to pronounce that it was a problem with my router or my computer or something, rather than actually passing on information about a probable bug to the dev team... although he did seem to have a decent technical grasp of the troubleshooting steps he performed which makes him infinitely better than the Acer helpline which appears to go to a call centre in Scotland with lots of ignorant people in it. Whoops, my comment in parentheses is longer than the preceding paragraph, boo!).

Monday, February 16, 2009

Human logic is creativity

From The Society of Mind, Marvin Minsky's excellent book (Picador edition, p. 189):
I do not mean to say that there is anything wrong with logic; I only object to the assumption that ordinary reasoning is largely based on it. What, then, are the functions of logic? It rarely helps us get a new idea, but it often helps us to detect the weaknesses in old ideas. Sometimes it also helps us clarify our thoughts by refining messy networks into simpler chains. Thus, once we find a way to solve a certain problem, logical analysis can help us find the most essential steps. Then it becomes easier to explain what we've discovered to other people - and, also, we often benefit from explaining our ideas to ourselves. This is because, more often than not, instead of explaining what we actually did, we come up with a new formulation. Paradoxically, the moments in which we think we're being logical and methodical can be just the times at which we're most creative and original.

I think the last two sentences are enlightening and in strong contrast to the popular assumptions that "logical" thinking is an antithesis of creative thinking.

Monday, February 02, 2009

Chinese text input on OS X: ITABC vs FIT

After growing somewhat accustomed to (the disappointment of) the ITABC Pinyin Chinese input method that comes with OS X, I configured my Vista work box to add the MS Pinyin input method which I soon discovered was far superior to Apple's ITABC. Partly this is due to some crasher bugs in ITABC (which I've reported and never heard back about, so maybe it only happens on my Mac?) - for example, typing any string with "shish" in it will cause part of it to crash, so that SCIM must be manually killed to force the input method system to restart before Chinese can be typed again.
More importantly however, it's just so much easier to type in the input method for Windows. I can type a full sentence and, often enough, the whole thing will be interpreted as I intended, or the small number of corrections can be elegantly entered without deleting interceding correct characters. In the Apple ITABC method, it has a strange heuristic of trying to forcibly group pairs of characters at a time, even when two single characters are much more likely. This results in an erroneous offset which often propagates all the way through the sentence so that in practice one ends up correcting the input method every character or two (by hitting space and selecting the correct match) and/or accepting then going back and correcting input manually. Not only this, but some words like 儿 completely throw off the parser - if you type 'dianer' the result is '嗲呢日' (dia3 ne ri4) rather than the obvious '点儿'.

After using the Microsoft Pinyin IME briefly in college and coming home to be stuck with this again, I decided enough was enough, and started searching for alternative input methods. My brief search took me to OpenVanilla, something else that didn't work well, and finally "Fun Input Toy", a beguilingly-named input method which I downloaded from here.
After installing it mostly blind because my Chinese is absolutely not good enough to run programs or read technical documents (or, eh, any documents except for kids' books really) and wincing at the Chinese-only menus, I soon got it working (because the "Next" button in the installer wasn't translated, but you know the position it's in anyway :D). I was initially impressed, but decided to keep my enthusiasm somewhat checked before jumping to conclusions. Not for long though, because it soon became apparent that writing Chinese sentences with FIT is much easier and quicker than ITABC, and it's not as buggy.
By way of comparison, here's the result of typing the string "zheshougemeiyounashougenamehaoting" in both input methods without corrections:
ITABC: 折寿个没有拿手个那么 (4/12 -> not gonna even try translating that mess)
FIT: 这首歌没有那首歌那么好听。(12/12 -> "This song is not as nice as that song.")

Note that in ITABC, once I'd typed the pinyin string, I had to hit space once to start parsing, which yields 折寿, then space again for 个, again for 没有, again for 拿手 and so on. Note that it terminates after 那么 because it only accepts input of up to 10 characters, which means breaking mid-sentence (in practice, after only a few words because the parser gets so confused).
Also note that I typed sentences like this a few times under both systems to allow any learning mechanisms to observe my use of less common words like 歌 (ge1: song).

Also note how ITABC and FIT look once I've typed the entire string in and not hit space yet:

ITABC:


Fun Input Toy:


The FIT input window clearly shows much more information (such as the fact that it parses as much of the sentence as possible, with appropriate options for corrections, compared to ITABC only parsing a couple of characters at a time; usually two).

In summary, ITABC is pretty awful, FIT is very nice. And it's free, so use it!

Thursday, January 15, 2009

Karma headlines

(two successive headlines on Digg)

Sex Offender Wins Lottery For Sex Abuse Victims
Made popular 2 days ago
www.huffingtonpost.com

Sex Offender Who Won Alaska Lottery Beaten With Iron Pipe
Made popular 3 hr 14 min ago
www.mcclatchydc.com

Sunday, December 28, 2008

women and maths and chess...

Two New Scientist articles caught my attention recently:

The first is a bit of mathematical obviousness which points out that: "There are few women at the top of science because there are so few women in science. It's simple statistics."
It uses the German chess federation's statistics to support the theory: there, men outnumber women by 16 to 1 (so if all other (significant) things are equal, there should only be a (1 - 15/16 ** 3 = roughly 18%) chance of a woman being in the top three, if I understand rightly).
Which begs the question, why are there so few women in chess/science/etc? Well, this is the subject of the second article...
Which is about a study where they split the (all female) subjects into two groups. One group was told that women perform poorly at maths due to genetics, and the other group was told that women perform poorly at maths due to social factors. Then they gave both groups the same maths tests and found that the 'genes make women bad at maths' group answered half as many questions correctly as did the 'society makes women bad at maths'.
This supports the idea that women being (statistically) worse at maths is probably wholly due to the negative, self-reinforcing erroneous stereotype that women are genetically predisposed to suck at it. Boo society!

I must admit to allowing myself to openly stereotype people more often than I'd like (i.e. than never), but seeing the power of negative stereotypes to destroy the performance of the maths test subjects it's time to at least keep such preconceptions to myself as much as possible.

Wednesday, December 24, 2008

mini cd/dvd -> Macbook -> oops!

As I inserted the mini CD for the Tevion "Potent Pad" (which I was sure only contained Windows drivers anyway), I thought "uh, how will a slot loading drive pick up a mini CD?". After a few seconds of silence once I had inserted the disc (and poked it in further with an envelope, to bollox things up further), it became apparent that I should have stopped and thought about it, rather than simply thought about it and carried on regardless...

A quick web search yielded predictable advice such as "power off the machine and use a paperclip to extract the disc" or "disassemble the machine and DVD drive to remove the disk". Since I wasn't keen on scratching the optical mechanism to ruin or dismantling the computer, I kept scrolling until I found the following blatantly obvious and blatantly sensible suggestion from 'ashleyman':
"Or just tip it so the drive faces the floor and give it a few taps!!"

This served me well and I safely removed the CD within 5-10 seconds of gently shaking and tapping the laptop with the slot facing down. Sometimes the solution is so obvious that you can completely pass it by!

Wednesday, December 03, 2008

OS X isn't all that great...

It seems like every week or so, OS X prompts me with some system updates that necessitate a reboot (usually Safari and iTunes - why the hell do I need to reboot my computer just because Safari was updated? This is the kind of behaviour people criticised Windows for in the past). I usually leave the dialogue box in the background for a couple of days until I'm ready to reboot, then go ahead.
Every once in a while (month), when I allow it to restart to "finish" updating, nothing happens. I start manually closing programs after getting warnings that each individual program failed to close (although manually closing them causes no problems at all). This time, the Software Updater seemed to hang as well, even though I had already told it to restart my Mac.

In the end, the machine seemed to shut down but the fan was still spinning. After hitting the power button a few times and waiting a minute or two, I held it to force a power-off and reboot. Then, instead of seeing the "Installing updates" dialogue you usually get when rebooting after installing updates, I just got my usual login screen, and sure enough, logging in as normal (after a ridiculous 4 minute delay before the Finder menu would respond to mouse clicks, WTF?) and opening the System Updater started the whole process from scratch.
LAME. Absolutely lame.

Sunday, November 16, 2008

Funny English expression of the day

"Rarer than rocking horse shite."

How to replace a bicycle tube/tyre ten times faster than I do

I hate dealing with punctures. I usually spend about 40 minutes dithering at the task, struggling to get the tube out of the wheel, locating the puncture, patching it carefully, leaving it for 5 minutes, coming back to find that I didn't apply it properly, cleaning it with sandpaper and then jamming the inner tube back in under the outer tyre.

So I was a bit embarrassed to see these videos of a guy removing and inserting the tube (and outer tyre in the process, which seems to just speed things up) in about 80 seconds. I'm still a bit skeptical about dealing with the outer tyre, which seems much tighter and stiffer on my hybrid wheel, but I'll have to try it next time!

Tube comes out


Tube goes in


These videos come from the very useful homepage of Jim Langley. (Note: Opera users such as myself may want to identify as Firefox or IE due to some outdated JS-crippling)

Thursday, November 13, 2008

Meteor MMS on the Palm Treo 680

Meteor uses a system which pushes the WAP/MMS/etc configuration to your mobile phone, but strangely don't provide the details online for anybody with an unsupported phone. In fact, when I phoned their customer service I had to push the agent to speak to his supervisor and get the settings, since he had no idea what I was talking about (indicated by his question "Did you say I.T. address or I.P. address?").

It's not possible to specify those settings completely in the Messaging program on the Treo 680; instead, you need to modify (or copy and use) the settings in (main) Prefs->Network. This configuration worked for us:
Service: Meteor MMS Copy
Connection: GPRS
User Name: my
Password: mms
APN: mms.mymeteor.ie

Then in the Messaging program, go to the Preferences menu, select the Network tab, change "Network Configuration" to manual and enter the "Edit..." dialogue, where you can enter the following settings:
Message centre number: +353857000000
Email centre number: [blank]

MMS HTTP Proxy: 10.85.85.85:8799
MMS URL: http://mms.mymeteor.ie
Network Profile: Meteor MMS Copy

This works for downloading MMS messages.

Tuesday, November 11, 2008

the arithmetic calculator exercise in GFA Basic

For a couple of reasons, I tried that arithmetic calculator exercise in GFA Basic (v3.6 for the Atari ST; why not?), and although I selected a somewhat different approach, I think it's really like a non-recursive version of the recursive Lisp version I posted before; with state in variables which persist for the whole loop. This is where side-effects can get mysterious, compared to the neater encapsulation of state in each recursive call's parameters.

randomly entertaining Chinese sentence

I check pretty much every new word I come across in my study materials on dict.cn, which also lists example sentences containing the term.

Here's a nice one I found when looking up the character 肥 (fei2), which according to my book means "(of clothes, shoes) loose*, (of animals) fat":
我被两个肥胖的女人紧紧地挤在中间,以致于要站起来下公共汽车都很难。
I was so tightly wedged between two fat women that it was difficult for me to get up and leave the bus.

:D :D

* although I couldn't substantiate the first meaning from the online dictionary..?

Saturday, November 08, 2008

Common Lisp: arithmetic calculator exercise

Following a post on the Atari ST forum I tried a little exercise to write an arithmetic expression parser for expressions like "24 - 3*9 + 9/3". I was surprised to find it a little difficult, taking about an hour even with the concessions I made (accepting input as a list rather than a string, and not checking for well-formedness of expressions). My code is on paste.lisp.org and I'd love to see any improvements or tips. Embarrassingly, I took two semesters of the final year compiler construction course in DCU and did quite well at it; parsing of programs was a central topic on the course! I guess it's easy to take for granted your skills at 'abstract' coding and notice they need a bit of exercising.

Saturday, October 25, 2008

ntl's expanded internet pipe

Soon after moving here last year, we decided to get our TV, broadband and phone service through ntl rather than get TV from them and broadband/phone through Eircom or some reseller, since Ireland has apparently the most expensive line rental in the world (?? thanks, Tony O'Reilly for exploiting the competition-free market and Comreg/competition authority for allowing it).

They recently retooled their broadband packages, so that the old 6mbit price now gets you 10mbit and for €10 more per month you can get 20mbit (I wouldn't bother with that unless I was sharing with a few people, though).
I had to call up to get it though, since they weren't nice enough to automatically shift me over to the new package - this is really something ISPs should do when they improve their packages.

It's working pretty good too - close to the quoted 10mb:

Thursday, October 23, 2008

Lexmark X4550 wireless woes with OS X

I picked up a fairly cheap Lexmark X4550 wireless printer/scanner/copier about 6 months ago and soon noticed that it stopped working every time I restarted the router.
After a long conversation with a fairly patient technical support guy at Lexmark proved mostly fruitless, I dug a little further and ran a packet sniffer (Wireshark) over an attempted print job.

This prompted me to double-check the printer settings, which showed a device URI of lexnet3://192.168.1.3:1. Which is certainly wrong, as the printer is at 192.168.1.4. I'm not sure why it doesn't just use DNS properly, but anyway.

Trying to correct this, I stumbled across this post explaining how to modify the device URI via the CUPS web interface available on OS X. And it works! Good old Unix!

article: "Early Childhood Education: The Key to Success in Life"

Anyone who has or expects to have children should read this article about preschool learning as soon as possible.

After emphasising some of the importance and benefits of preschool education, it lists some basic and simple ways in which you can help educate your bairns. As usual with such material, there are 'obvious' things that never occurred to me - like placing a young baby face-down from even one month of age, because he will naturally want to raise his head which will help build up his back muscles which will improve general strength and co-ordination. The paper-crumpling trick is clever too.

Well worth a read!

Friday, October 10, 2008

classy typing tutor

This is the funniest-looking educational game I've ever seen. Check out the screenshot :D The description for the game calls it "an educational children’s casual game". It certainly would have appealed to my childhood self.

. o O ( "Cop smearer"?? )