When I started writing Discount, I made all of the extensions selectable by #define. Well, this turned out to be a bad idea, so over the years I started tweaking the code so that I could turn features on and off at runtime. This project isn’t actually finished yet, but I’ve run into a teeny problem, in that I use a single 16 bit integer to hold flags, and I’ve now got 16 of them.
So what have I got?
flag
what
0x0001
don’t do link processing, block <a> tags
0x0002
don’t do image processing, block <img>
0x0004
don’t run smartypants()
0x0008
don’t allow raw html through AT ALL
0x0010
disable SUPERSCRIPT, RELAXED_EMPHASIS
0x0020
process text inside an html tag; no <em>, no <bold>, no html or [] expansion
0x0040
don’t allow pseudo-protocols
0x0080
generate code for xml ![CDATA[...]]
0x0100
don’t process header blocks
0x0200
Expand tabs to 4 spaces, not the compiled-in default
0x0400
disallow tables
0x0800
forbid strikethrough
0x1000
do table-of-contents processing
0x2000
compatability with MarkdownTest_1.0
0x4000
make http://foo.com into a link even without <>s
0x8000
paranoid check for link protocol
(now, you might say that “oh, no, but integers are 32 bits” but I’m afraid that I’ve got a pdp-11 emulator here to tell you you’re wrong. And I’ve still got 6 or seven features that need to be turned on by default and then switchable by flag off. I could always just go for the trivial solution and have flag 0x0010 (MKD_STRICT) turn every extension off, but that doesn’t give me the sort of fine granularity I want to be able to have.)
So I’m going to have to break the interface after I release 1.6.8 and make all of the int flags arguments and fields into long flags. For 99% of the users out there, this probably won’t make any difference (does the iPod use 32 bit ints? I suspect so, but I can’t verify it because my (jailbroken) iPod touch doesn’t have a working set of C compiler libraries and thus I can’t get discount to compile on it) but the few, the proud, the retrogrouches who still use their pdp-11s to run their web servers would be very displeased to have discount silently break out from under them.
So (1.6.8++) is going to be 2, for some values of two. And maybe while I’m in the throes of breaking the interface I’ll strip out some of the meant-for-external-only flags and force people to use the new(er) function calls that should be the only things that use those flags.
Discount has been pulled up to version 1.6.7 with the correction of one small bug in the way backticks are handled. I had miscoded the case where a code span had more closing backticks than opening backticks; the old code would end up eating the contents of the code span instead of leaving the excess ticks alone.
1.6.7 “fixes” this. It’s not an accurate fix; the markdown dinguswill not codify a block of text if there are more than two backticks there closing backticks than opening backticks (and version 1.6.8, which is going to include a much-requested ~~strikethrough~~ hack, will attempt to hew more closely to the reference version here.)
I can pretty much guaranteeassume that this New Code! won’t cause any fatal damage to your system. So you should start using it now, so I can get the bug reports before I set the 1.6.8 label.
Last friday I spotted this engine sitting in Brooklyn Yard, and thought hopefully that the Oregon Pacific had dragged EPT187 out of the siding where it’s sitting and painted it up as part of putting it back into service (there aren’t very many NW5s floating around, and it’s a shame to see it rotting away on a siding,) but today, when I looped through the Milwaukie industrial park to see if it had been moved down there, I discovered that it was not actually the NW5, but what appears to be a GM-Canada GMD1 roadswitcher.
Now that’s something new. That’s certainly bigger power than the new replacement working Eng! (OPR 1202) and I can’t imagine there’s the sort of freight on the rump EPT to justify it, so I guess it’s going to be tested here, then it will head south to live on the Molalla & Western.
Russell’s genetic heritage is becoming more obvious as he grows older; these days he tends to carry a book or three everywhere and will sit down and read at the slightest provocation.
Silas, on the other hand, is still living life at 95mph.
I suspect that there are other model railways being used as sushi trains in the world, but I’d be surprised if any of them were smaller than O gauge; the plates are already a very wide load, and the restaurant has had to duct tape the couplers together to keep the train from spontaneously uncoupling as it loops around the railroad all day and night.
I’d taken the Nikon L6 out for the afternoon so I could see how it would work as a CBC, and wanted to see how it would work in the macro setting. Fortunately this purple flower showed up just in the nick of time so I could take a picture or two. The flash fired the first time and washed it out, so I used my finger to diffuse the flash on the second image, and it turned out much better.
If I was to use this $30 wonder for macro photography in the future, I’d cut apart some small plastic box and work it so I could clip it over the top of the camera and over the built-in flash.
We were wandering around downtown Portland this afternoon, and we walked by the First & Everett interurban station just as a pair of Gresham<–>Hillsboro interurban trains pulled in. Conveniently, one was being lead by a Bombardier car and the other was trailing a Bombardier car. And, more conveniently, both of them were in the Spirit Mountain Casino purple advertising map.
I was carrying around a Nikon L6 CBC, so I didn’t have much choice about what caught the focus and how much exposure it ended up with, but it did a pretty good job of it nevertheless.
It’s friday, so what better route home than via Kelley Point Park? It’s only about 35 miles longer than my usual route home, but I got to take advantage of a tailwind all the way down Marine Drive (including a couple of miles @ 25+mph along the wind tunnel by the airport) and a tailwind assisted (and fast) climb up the i205 ramp to gateway transit center.
Warning: Table ‘./somebody_civicspace/access’ was created with a different version of MySQL and cannot be read query: SELECT 1 FROM access WHERE type = ‘host’ AND LOWER(‘207.109.69.9’) LIKE LOWER(mask) AND status = 0 LIMIT 0, 1 in /home/somebody/public_html/includes/database.mysql.inc on line 128
Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by (output started at /home/somebody/public_html/includes/database.mysql.inc:128) in /home/somebody/public_html/includes/bootstrap.inc on line 1037
Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at /home/somebody/public_html/includes/database.mysql.inc:128) in /home/somebody/public_html/includes/bootstrap.inc on line 1037
Warning: Table ‘./somebody_civicspace/cache’ was created with a different version of MySQL and cannot be read query: SELECT data, created, headers, expire, serialized FROM cache WHERE cid = ‘variables’ in /home/somebody/public_html/includes/database.mysql.inc on line 128
Warning: Table ‘./somebody_civicspace/cache’ was created with a different version of MySQL and cannot be read query: UPDATE cache SET data = ‘a:1695:{s:25:\“update_watchdog_115_fixed\”;b:1;s:13:\“theme_default\”;s:8:\“foo\”;s:13:\“filter_html_1\”;s:1:\“1\”;s:20:\“node_promote_contact\”;s:1:\“0\”;s:23:\“phptemplate_extra_logic\”;a:1:{s:31:\“themes/democratica/template.php\”;s:31:\“themes/democratica/template.php\”;}s:26:\“theme_democratica_settings\”;a:9:{s:12:\“default_logo\”;s:1:\“0\”;s:9:\“logo_path\”;s:0:\“\”;s:11:\“toggle_name\”;s:1:\“1\”;s:13:\“toggle_slogan\”;s:1:\“0\”;s:14:\“toggle_mission\”;s:1:\“1\”;s:20:\“toggle_primary_links\”;s:1:\“1\”;s:22:\“toggle_secondary_links\”;s:1:\“1\”;s:24:\“toggle_node_user_picture\”;s:1:\“0\”;s: in /home/somebody/public_html/includes/database.mysql.inc on line 128
Warning: Table ‘./somebody_civicspace/cache_page’ was created with a different version of MySQL and cannot be read query: SELECT data, created, headers, expire, serialized FROM cache_page WHERE cid = ‘http://www.example.com/’ in /home/somebody/public_html/includes/database.mysql.inc on line 128
Warning: Table ‘./somebody_civicspace/system’ was created with a different version of MySQL and cannot be read query: SELECT name, filename, throttle FROM system WHERE type = ‘module’ AND status = 1 AND bootstrap = 1 ORDER BY weight ASC, filename ASC in /home/somebody/public_html/includes/database.mysql.inc on line 128
Warning: Cannot modify header information – headers already sent by (output started at /home/somebody/public_html/includes/database.mysql.inc:128) in /home/somebody/public_html/includes/bootstrap.inc on line 636
Warning: Cannot modify header information – headers already sent by (output started at /home/somebody/public_html/includes/database.mysql.inc:128) in /home/somebody/public_html/includes/bootstrap.inc on line 637
Warning: Cannot modify header information – headers already sent by (output started at /home/somebody/public_html/includes/database.mysql.inc:128) in /home/somebody/public_html/includes/bootstrap.inc on line 638
Warning: Cannot modify header information – headers already sent by (output started at /home/somebody/public_html/includes/database.mysql.inc:128) in /home/somebody/public_html/includes/bootstrap.inc on line 639
Fatal error: Call to undefined function user_access() in /home/somebody/public_html/includes/menu.inc on line 449
Right, so that’s why I never seriously considered it.
At least if I mess up the CSS on tsfr all I end up with is hideously ugly content, instead of hideously ugly error pages (or, worse yet, hideously ugly “ERROR 500” pages with no diagnostics except for the syslog() calls I wedged into the scripts.)
I bought a Pentax Bellows II a month and a half ago, and it came with a genuine Pentax m42 to K-mount adapter and a magnifier-K. The m42 to K-mount adapter went into the *istDS immediately (I only have two K-mount lenses left — my temporarily out-of-service f1.2 50mm SMC prime and my almost never used except during bee season Quantaray (Cosina?) 70-300mm tele-macro lens — but I have six or seven screw mount lenses plus the Bellows II) but the magnifier-K never got used because it won’t fit over the viewfinder on my *istDS.
Today I was thinking that I should probably just resell it, because it didn’t fit on my camera (and I’m not likely to go out and buy a Spotmatic — I already have two Voightländer film cameras that I barely ever use due to the cost of developing film, as well as a Pentax auto 110 that I barely ever use for the same reason) but before doing that I wanted to see if I could jury-rig it onto the *istDS.
Nope, I couldn’t. But while I was in the throes of doing it, I took a few pictures of this occasional table, and thought that it might be interesting to play “adjust the white balance” to see if the camera had the processing smarts to compensate for low light.
I was on my way home from work on my usual direct route (from downtown I take Hawthorne, Clinton, and Division St out to the i205 bike path, then take that down to the Springwater Trail or Flavel St, then work my way back to Westmoreland via a constantly changing permutation of streets and (ex-)railroad ROW) when I fell in behind a gentleman riding his new(ish) Trek carbon fiber bike. He was running a teeny bit slower than I was, and I figured that in my good time I’d pass him, but I was still behind him when his back tire seemed to explode in a huge puff of talcum powder.
He didn’t wreck, but he skidded to a stop pretty quickly, and when I stopped to see if he needed any help we were initially confused about what happened. We though it must be a shard of glass, so he walked back to the (easily identifiable, thanks to the splotch of talcum powder) point of impact, while I looked casually at his now-flattened rear tire.
It didn’t take much of a look to see what had actually happened. Apparently he’d run over a broken spoon handle, and from the looks of things the front wheel flipped the handle up on end just in time for the rear wheel to run directly into it, thus punching it through the tread, the tube, then the tube again, and finally the sidewall, after which point it followed the rapidly deflating wheel up and around until it jammed itself into the rear brake.
I offered to pull out my repair kit and try to boot the (brand new; he said that he’d bought the tires yesterday!) now-dead rear tire so he could ride back to his LBS and replace it, but he, understandably, decided he’d just rather shoulder his lightweight bike and walk on back to the shop.
And here I thought that the nails that my 650B tires picked up during my short experiment with that wheelsize were something impressive. But now I see that they’re nothing on the catastrophe scale, because they at least had points instead of a crude chisel end.
Buckley helps me test out the image quality of a cheap point-and-shoot Nikon.
The verdict? The image quality is okay — a bit harsh under flash, but okay — but the camera is woefully slow at storing the image away so the next picture can be taken.
Track from the long-vanished Richmond (WR) streetcar line, temporarily exposed now that 70-odd years of pavement have been stripped off the top of Clinton Street.
They’ll probably be paved over by tomorrow afternoon, so it’s lucky that I went home via i205 tonight.
Now, in the fantasy world where I could afford to spend $750 on a frame (actually about $670 for a frame, from which I’d rip off and discard, with extreme prejudice, the unicrown fork that Surly supplies with the Big Dummy frameset, and about $80 for a cyclocross-style lugged fork) the teeniest possible Big Dummy frame would make a good replacement for the woefully too small Trek. The one benefit of the Xtracycle coming out of the mountain/utility biking world is that they assume that everyone riding an xtracycle will have some sort of upright bars that swoop waythedevilback from the headset and that the rider will be perched bolt upright on their approximately bench-shaped seat, with a loooooong virtual top tube to get room between them and their handlebars. This means that someone like me, who has a long torso and short stubby legs, but who strongly prefers drop bars (though the mustache bars on the Murray Baja Experience! are nice and comfortable, even in the current too-short-for-me-seatpost configuration,) could theoretically set up a teeny baby Big Dummy, and (modulo losing a couple of mm to the head tube angle) get much the same fit as I have right now on the MLCM.
There would be some trail differences; losing 1.5° of head tube angle pushes the trail up by 9mm (64mm vs. 53mm, assuming a 44mm fork rake, 700c wheels, and 26mm tires in both cases) which might push the bicycle over the edge into being hilariously twitchy. Or maybe not, given that the recommended tire width for Xtracycles is something in the ballpark of 2 inches, and you don’t hear very much about industry standard 26x2"ed Xtracycles twitching all over the road and being abandoned by their drivers.
I’ll have to think about this for a while. The xtracycle is okay for riding short distances (up to 30 miles, I think) so the porteur rack (brazing flux is ordered and on the way; a trip to the hardware store will get me a brazing torch, and then a bit of work filing the rails square will get me ready to braze up the rack deck) for the MLCM may be what I need for my 50-60 mile donut pickup runs. But I would like to be able to shoe-leather cargo out into the countryside for camping trips, and there’s no way I’m going to realistically carry a reasonable subset of our camping supplies out to Estacada or a campground in the Columbia gorge via any sort of porteur rack on the MLCM.
I went out for donuts this morning, and, as I always do, I took the Trek. Sadly, the old Trek doesn’t feel like it used to; on the way up to Sandy, it felt very sluggish and heavy, and by the time I’d picked up the donuts and came rocketing down the hill, my arms, hands, and back were telling me that this was not the sort of bicycle riding they wanted to do.
The MLCM has, I’m afraid, spoiled me; after I got back from Sandy, I took the MLCM out for a short (12 mile) errand in town and it was much more comfortable to ride, even after 50 miles of pretzelling my back up the mountain and back.
Well, there’s always the gaspipe frame, I suppose. It’s ~58cm, so if it rides at all unlike a cement boat it might make a good replacement.