Browse Source

Removing superfluous p tags

pull/1/head
Adam Backstrom 7 years ago
parent
commit
78b82ebfec
100 changed files with 476 additions and 476 deletions
  1. +1
    -1
      content/1114-blizzard-to-post-real-names-on-forums.md
  2. +2
    -2
      content/121-mmm-vacation.md
  3. +2
    -2
      content/127-sticker-yer-blog.md
  4. +3
    -3
      content/128-mapping-the-blogsphere.md
  5. +3
    -3
      content/129-lonely-lonely-blog.md
  6. +3
    -3
      content/130-why-esr-is-an-anarchist.md
  7. +4
    -4
      content/131-recommended-reading.md
  8. +9
    -9
      content/1314-shell-scripts-as-applications-in-mac-os-x.md
  9. +4
    -4
      content/132-making-plain-text-useful.md
  10. +24
    -24
      content/1329-ubuntu-8-04-on-linode-cloning-and-upgrading-to-10-04.md
  11. +2
    -2
      content/133-pings-at-last.md
  12. +2
    -2
      content/134-more-blog-ignoring.md
  13. +3
    -3
      content/135-mmm-web-development.md
  14. +1
    -1
      content/136-be-green.md
  15. +1
    -1
      content/137-activism-or-lack-thereof.md
  16. +1
    -1
      content/138-bwerp-server-move.md
  17. +25
    -25
      content/1380-makefile-for-css-and-js-minifycompress.md
  18. +4
    -4
      content/139-ok-real-quick.md
  19. +4
    -4
      content/140-spring-has-sprung.md
  20. +8
    -8
      content/1402-running-gitweb-in-fastcgi-mode.md
  21. +4
    -4
      content/141-family-tech-support.md
  22. +10
    -10
      content/1412-thinking-about-testability.md
  23. +4
    -4
      content/1418-testable-factories.md
  24. +5
    -5
      content/142-of-indoor-swimming-pools.md
  25. +5
    -5
      content/143-microsoft-is-pain.md
  26. +2
    -2
      content/145-static-blogrolling.md
  27. +25
    -25
      content/1458-locking-down-rsync-using-ssh.md
  28. +5
    -5
      content/146-i-like-em-thin.md
  29. +4
    -4
      content/147-spamassassin-procmail-and-fetchmail-oh-my.md
  30. +2
    -2
      content/1470-new-hampshire-hb240-approval-voting.md
  31. +3
    -3
      content/1477-on-frameworks.md
  32. +20
    -20
      content/1486-migrating-to-php-5-3-call_user_func_array.md
  33. +8
    -8
      content/150-flexibletype.md
  34. +5
    -5
      content/151-will-intern-for-food.md
  35. +1
    -1
      content/1515-world-of-warcraft-tcg-card-numbering.md
  36. +4
    -4
      content/152-dbms-updates.md
  37. +1
    -1
      content/1526-python-and-php-giving-a-rats-ass.md
  38. +6
    -6
      content/153-goodbye-boss.md
  39. +5
    -5
      content/154-blogs-and-spam-the-next-revolution.md
  40. +2
    -2
      content/1549-merlin-mann-marketplace-of-ideas.md
  41. +1
    -1
      content/155-summer-plans.md
  42. +7
    -7
      content/1552-webos-3-0-2-changes.md
  43. +4
    -4
      content/156-movie-night-matrix-reloaded.md
  44. +3
    -3
      content/157-todo.md
  45. +6
    -6
      content/158-those-game-things.md
  46. +2
    -2
      content/1583-billboard.md
  47. +4
    -4
      content/159-no-news-is-good-news.md
  48. +4
    -4
      content/1595-wordpress-mu-domain-mapping-patches.md
  49. +3
    -3
      content/160-chevron-seven-locked.md
  50. +4
    -4
      content/161-internet-explorer-fumbles-hes-down.md
  51. +11
    -11
      content/162-lock-your-doors.md
  52. +2
    -2
      content/1629-responsive-design-quick-tips.md
  53. +2
    -2
      content/163-root.md
  54. +5
    -5
      content/164-dock-annoyances.md
  55. +1
    -1
      content/1643-hmac-sig-client-php.md
  56. +6
    -6
      content/1645-rest-apis-and-security-in-php.md
  57. +4
    -4
      content/165-a-lone-echo-post.md
  58. +1
    -1
      content/1657-zoom-it-api-rest-considerations.md
  59. +1
    -1
      content/1662-automatic-ellipsis-with-css.md
  60. +5
    -5
      content/167-the-lure-of-data.md
  61. +5
    -5
      content/1679-better-local-dev-hostnames-with-dnsmasq.md
  62. +2
    -2
      content/168-on-bragging.md
  63. +2
    -2
      content/169-whatd-i-miss.md
  64. +3
    -3
      content/1690-installing-cpan-modules-without-root.md
  65. +2
    -2
      content/1702-wordpress-network-plugin-management.md
  66. +2
    -2
      content/1708-google-plus-for-google-apps.md
  67. +4
    -4
      content/1712-use-openssl-to-issue-raw-http-requests.md
  68. +4
    -4
      content/172-the-word-is-excess.md
  69. +7
    -7
      content/173-bash-tips-testing-arguments.md
  70. +1
    -1
      content/1732-nest-harvesting.md
  71. +6
    -6
      content/175-pocket-sized-internet.md
  72. +3
    -3
      content/1756-php-5-4-changes.md
  73. +8
    -8
      content/176-metadata-rhymes-with-metadata.md
  74. +8
    -8
      content/177-still-playing-roles.md
  75. +2
    -2
      content/1778-uc-davis-pepper-spray-incident.md
  76. +7
    -7
      content/178-ninja-power-vgextend.md
  77. +5
    -5
      content/179-fall-updates.md
  78. +4
    -4
      content/1799-jsrender-passing-variables-to-nested-templates.md
  79. +2
    -2
      content/180-miscellaneous-hackery.md
  80. +2
    -2
      content/1826-iterm-2-skinny-fonts-solution.md
  81. +1
    -1
      content/184-zaurus.md
  82. +2
    -2
      content/185-acgt-if-you-please.md
  83. +4
    -4
      content/186-spam.md
  84. +2
    -2
      content/187-holiday.md
  85. +6
    -6
      content/188-reignition.md
  86. +3
    -3
      content/189-updates.md
  87. +2
    -2
      content/190-jobs.md
  88. +2
    -2
      content/1912-being-nice.md
  89. +17
    -17
      content/1916-state-of-php-2012.md
  90. +3
    -3
      content/192-painting.md
  91. +20
    -20
      content/193-noise.md
  92. +6
    -6
      content/194-games.md
  93. +2
    -2
      content/195-ani.md
  94. +3
    -3
      content/1955-git-subtree-merges-orphaned-branches-and-github.md
  95. +2
    -2
      content/196-loom.md
  96. +7
    -7
      content/197-faker.md
  97. +7
    -7
      content/198-floating.md
  98. +2
    -2
      content/199-style.md
  99. +2
    -2
      content/1993-experiment-digital-permanence-and-ownership.md
  100. +1
    -1
      content/2003-google-on-the-iphone.md

+ 1
- 1
content/1114-blizzard-to-post-real-names-on-forums.md View File

@@ -24,7 +24,7 @@ The highlights:
- This change will affect the new forums going live around the
Cataclysm release, so existing posts will not be affected.

</p>
I have an opinion, but maybe not the opinion one might expect if you've
ever had a conversation with me about privacy and freedom.



+ 2
- 2
content/121-mmm-vacation.md View File

@@ -10,11 +10,11 @@ Sitting here in my old house, wearing flannel-lined khakis and my
extremely orange [topato hoodie][], with my [new keyboard][] in arm's
reach. Life is good.

</p>

Happy Holidays to everybody!

</p>

[topato hoodie]: http://www.wigu.com/
[new keyboard]: http://www.music-n-sound.com/keyboard/casio/ctk573.htm

+ 2
- 2
content/127-sticker-yer-blog.md View File

@@ -13,7 +13,7 @@ plenty on the site of various quality and chromatic variation. Through
the wonders of PHP, you get a random one each time you visit my page.
Only five at the moment, but I'll add more if the mood strikes me.

</p>

If you want to create your own, they have a [sticker factory][] to help.
I used it for all of mine, but had to use [wget][] to download the
@@ -22,7 +22,7 @@ images. Try <span class="code">wget
"http://image.url/goes/here" -O filename.gif</span>, if you have
trouble.

</p>

[blogstickers]: http://www.blogstickers.com/
[sticker factory]: http://www.jngm.net/arjlog/sticker.html


+ 3
- 3
content/128-mapping-the-blogsphere.md View File

@@ -8,7 +8,7 @@ WordPress-Post-Type: post

Here I go again, blogging about blogging.

</p>

Anyway, I was browsing the [recently updated blogs][], as I am wont to
do when I am bored, and I came across [Peter Lindberg's blog][]. His
@@ -18,12 +18,12 @@ matter), fill out the form on GeoURL to ping your site, and you'll be
added to a global map of website. Pretty cool. Here are the [blogs near
my blog][].

</p>

They've only got 124 listings right now, so I encourage anybody reading
this to blog it as well.

</p>

[recently updated blogs]: http://blo.gs/
[Peter Lindberg's blog]: http://www.tesugen.com/


+ 3
- 3
content/129-lonely-lonely-blog.md View File

@@ -10,7 +10,7 @@ WordPress-Post-Type: post
I've been ignoring my blog for the past few days, so I thought I'd sit
down and feed MovableType.

</p>

For all you [MacRITters][], I've set up a new virtual host on my old
iBook. The [MacRIT Forum][] is now housed on the same server as this
@@ -19,12 +19,12 @@ server, and no CGI ability on that server either. Along with the forum,
I'll also be installing a fresh copy of MT for the meeting minutes. It's
not quite ready yet, though.

</p>

That's all the news that's fit to print.. Hope you enjoyed the weekend,
'cause there it goes.

</p>

[MacRITters]: http://www.rit.edu/~macrit/
[MacRIT Forum]: http://macrit.bwerp.net/forum/

+ 3
- 3
content/130-why-esr-is-an-anarchist.md View File

@@ -9,19 +9,19 @@ WordPress-Post-Type: post
I just read Eric S. Raymond's <span class="worktitle">[Why I Am An
Anarchist][]</span>. Here's a quote:

</p>

... A majority of the people themselves are too easily seduced into
abandoning their own institutional protections against tyranny by the
false promises and poisonous dreams of statist propaganda.

</p>

I'd like to have a little more faith in democracy than Raymond puts
forward. Then again, maybe I'm just not cynical enough. I always have
this general feeling that the Bush administration is doing what it
wants, not what the people want. And *that* sure doesn't feel right.

</p>

[Why I Am An Anarchist]: http://www.catb.org/~esr/writings/anarchist.html

+ 4
- 4
content/131-recommended-reading.md View File

@@ -9,7 +9,7 @@ WordPress-Post-Type: post
Guess it's a "freedom" kind of day. Here are a couple more things for
yous guys to read:

</p>

[*Now Corporations Claim The "Right To Lie"*][] documents the increasing
trend in *corporations* to claim the same *human rights* afforded to
@@ -19,7 +19,7 @@ the Supreme Court (I believe) deemed that they are "persons". As the
author puts it, "they can't vote -- what are they doing in politics?"
Makes sense to me.

</p>

[*Supremes back Disney and pigopolists vs science and culture*][] is an
article from one of my favorite news sources of today, [The Register][].
@@ -27,11 +27,11 @@ They're not afraid to get personal, which is something I admire. This
particular article is about the recent [Eldred vs. Ashcroft][] case,
regarding copyright laws.

</p>

Enjoy.

</p>

[*Now Corporations Claim The "Right To Lie"*]: http://www.commondreams.org/views03/0101-07.htm
[*Supremes back Disney and pigopolists vs science and culture*]: http://theregister.co.uk/content/6/28897.html


+ 9
- 9
content/1314-shell-scripts-as-applications-in-mac-os-x.md View File

@@ -16,7 +16,7 @@ padding.
The Background
--------------

</p>
For several years now, I have used a series of AppleScripts to automate
enabling and disabling of the Mac OS X screen saver password. The
scripts were pulled from [a thread][] on the MacWorld forums and have
@@ -24,10 +24,10 @@ worked well, save for one detail: there is quite a lot of overhead in
launching a compiled AppleScript just to execute two commands in the
shell:

<p>
do shell script "defaults -currentHost write com.apple.screensaver askForPassword -int 0"do shell script "/Users/adam/bin/notif"

</p>
Under heavy load (ie. with all my normal apps, plus VMware Fusion
running one or more virtual machines) I often wait 30 seconds or more to
enable or disable the password.
@@ -36,22 +36,22 @@ enable or disable the password.
create application shortcuts on your Desktop. Digging into one of these
applications, you see the following hierarchy:

<p>
adam@fsck[0]:/Applications:0$ find "Team Fortress 2.app"Team Fortress 2.appTeam Fortress 2.app/ContentsTeam Fortress 2.app/Contents/Info.plistTeam Fortress 2.app/Contents/MacOSTeam Fortress 2.app/Contents/MacOS/run.shTeam Fortress 2.app/Contents/ResourcesTeam Fortress 2.app/Contents/Resources/shortcut.icns

</p>
Here's `Info.plist`:

<p>
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>CFBundleExecutable</key> <string>run.sh</string> <key>CFBundleIconFile</key> <string>shortcut.icns</string> <key>CFBundleInfoDictionaryVersion</key> <string>1.0</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>1.0</string></dict></plist>

</p>
And the good stuff, `run.sh`:

<p>
#!/bin/bash# autogenerated file - do not editopen steam://run/440

</p>
This was a pretty big "wow" moment for me. No AppleScript, no [.command
files][] (which launch Terminal.app), just pure, instant command line
gratification. appify was born to quickly convert shell scripts into


+ 4
- 4
content/132-making-plain-text-useful.md View File

@@ -13,14 +13,14 @@ and isn't easily malleable. HTML looks nice, but it's hard to write on
the fly without a decent WYSIWYG editor. XML might work. Microsoft Word
will not.

</p>

Last night, I finally took the time to look for a decent script that
converts plain text into HTML. I found a couple of tools that offer
various levels of thoroughness and complexity. Which is good, because
now I don't have to try and write something from scratch.

</p>

The first is called [Gruatxt][]. It does all the things you would
expect, like \*emphasized\* text, bulleted lists, horizontal rules, and
@@ -29,7 +29,7 @@ wouldn't let me nest a list inside another list, which I need for any
sort of note taking. Here is a [sample file][], and the [same file
converted][] with Gruatxt.

</p>

I stopped my search after finding [txt2html][]. The structure of a plain
text file for txt2html is a bit less rigid, which I find an annoyance,
@@ -37,7 +37,7 @@ but it does my nested lists beautifully. Again, here's a [sample
file][1] and [formatted document][]. This is the tool I'll be tweaking
to work *just right* for me. Mmm.. open source.

</p>

[Gruatxt]: http://www.triptico.com/software/grutatxt.html
[sample file]: http://www.triptico.org/download/README_grutatxt


+ 24
- 24
content/1329-ubuntu-8-04-on-linode-cloning-and-upgrading-to-10-04.md View File

@@ -15,7 +15,7 @@ before the real upgrade, just to be on the safe side.
Before the Storm: Finnix
------------------------

</p>
I had no experience with [Finnix][] before this upgrade, but it was
exactly what I needed throughout the process. It's [built into the
Linode dashboard][] so you can use it as a recovery console if things go
@@ -25,43 +25,43 @@ to my VM.
The Backup
----------

</p>
`rsync` is my weapon of choice, since it allows for transport over SSH
and incremental backups. I used [this article][] to get started with
some suggested `rsync` flags. I ran this several times throughout the
process:

<p>
rsync -avzPH --numeric-ids --delete --delete-excluded --exclude-from=backup.lst root@server.example.com:/ /mnt/sda1/

</p>
Here's my `backup.lst` exclusion file:

<p>
+ /dev/console+ /dev/initctl+ /dev/null+ /dev/zero- /dev/*- /proc/*- /sys/*- /tmp/*- *lost+found

</p>
After `rsync`, `chroot` to the cloned filesystem:

<p>
mount -R /proc /mnt/sda1/procmount -R /dev /mnt/sda1/devchroot /mnt/sda1 /bin/bashvi /etc/fstab # update mountpoints. change xvda to sda1, xvdb to sda2

</p>
Install a bootloader. The Linode VPS is in Xen and doesn't normally boot
its own kernel. (I know next to nothing about Xen, but this is what I've
gleaned.)

<p>
apt-get install grubmkdir -p /boot/grubcp -r /usr/lib/grub/i386-pc/{stage1,stage2,e2fs_stage1_5} /boot/grubapt-get install linuxecho defoptions=vga=791 >>/boot/grub/menu.lstupdate-grub

</p>
Reboot. Make sure you kill your cron jobs while the VM is on, as many
are probably inappropriate for a backup server.

<p>
sudo service cron stop

</p>
I recommend taking a snapshot of your backup, here. It may actually be
faster to just `rsync` again, but it's nice to have a complete backup at
the ready.
@@ -69,15 +69,15 @@ the ready.
I used a couple commands to update IP addresses on my backup so I could
more accurately test services post-upgrade:

<p>
sudo ~/bin/ack --follow -al '207\.192\.74\.235' /etc | sudo xargs sed -i.bak 's/207\.192\.74\.235/172.16.226.130/g'sudo ~/bin/ack --follow -al '69\.164\.216\.5' /etc | sudo xargs sed -i.bak 's/69\.164\.216\.5/172.16.226.131/g'

</p>

The Upgrade
-----------

</p>
The following notes were taking during my test upgrade, and referenced
during the real upgrade. I referenced the Ubuntu Community Documentation
project's "[Upgrading to Ubuntu 10.04 LTS][]" page. There is also a
@@ -86,16 +86,16 @@ Linode article on [upgrading to Ubuntu 10.04][].
On the first pass, `python-setuptools` killed my install. This was fixed
by manually reinstalling before upgrade:

<p>
sudo dpkg -r python-setuptools && apt-get install python-setuptools

</p>
Ensure the update manager is installed, and issue the upgrade command:

<p>
sudo apt-get install update-manager-coresudo do-release-upgrade

</p>
I encountered conflicts in the following packages, where I had modified
local files. Also included is my resolution, which may or may not be
helpful to anyone else.
@@ -121,7 +121,7 @@ helpful to anyone else.
installed, looked like the `GOTO="persistent_net_generator_end"` at
the start was intentional

</p>
Got a warning about vulnerable SSL keys generated by older versions of
Ubuntu; solution is to regenerate your keys. The dialog recommended
using `openssl-vulnkey` and `openvpn-vulnkey` to test.
@@ -133,21 +133,21 @@ kernel in the Linode dashboard.

### python-setuptools error

</p>
More about that error with `python-setuptools`: [this thread][] was
helpful. From `/var/log/apt/term.log`:

<p>
Log started: 2010-10-06 08:35:15Setting up python-setuptools (0.6c9-0ubuntu1) ...pycentral: pycentral pkginstall: not overwriting local filespycentral pkginstall: not overwriting local filesdpkg: error processing python-setuptools (--configure): subprocess post-installation script returned error exit status 1Errors were encountered while processing: python-setuptoolsLog ended: 2010-10-06 08:35:15

</p>
Per the article, ran "apt-get remove python-setuptools" and "apt-get
install python-setuptools"

Post-upgrade Recompiling
------------------------

</p>
Something required apt-get install `libltdl-dev`. Useful info for this
post, no?



+ 2
- 2
content/133-pings-at-last.md View File

@@ -15,10 +15,10 @@ install. A quick copy of the full extlib folder fixed my problem right
up. So, in the end, my pinging problem was an incompatible version of
one of the libraries.

</p>

Hopefully this will help anybody else whose pings aren't working. I
looked all over the web and never found a good answer for my problem.

</p>


+ 2
- 2
content/134-more-blog-ignoring.md View File

@@ -13,12 +13,12 @@ plan on doing useful things in the future, like dissecting
[graffiti][] page and posting the completed source. Ooh, maybe I'll make
it XML and use XSLT and a server-side parser. Mmm..

</p>

I should blog more often, if I'm going to come up with nice ideas like
that.

</p>

[cinnamon.nl]: http://www.cinnamon.nl
[graffiti]: http://www.bwerp.net/graffiti/

+ 3
- 3
content/135-mmm-web-development.md View File

@@ -14,17 +14,17 @@ use XWeb to apply stylesheets to the bare content and populate my local
Apache directory, and then rsync on the main web server to update the
public content.

</p>

Not terribly interesting to most of you, but it has a high geek factor.

</p>

So, now I've had a little experience running concurrent development and
production web servers, and using a content-management system to
organize documents and simplify site-wide updates. I'll probably make a
page describing the process, and I'm wont to do.

</p>

[my domain]: http://www.bwerp.net/

+ 1
- 1
content/136-be-green.md View File

@@ -11,7 +11,7 @@ of [Bwerp][], my main site (indeed, it uses the same stylesheet). Any
comments? Do you like it? Is it hard to read? Does it look like crap in
Browser X? Feedback would be greatly appreciated.

</p>

[new template]: green
[Bwerp]: http://www.bwerp.net/

+ 1
- 1
content/137-activism-or-lack-thereof.md View File

@@ -18,6 +18,6 @@ What to do?

I want so badly to just stop it all, but it seems so big.

</p>

[Ani DiFranco]: http://www.righteousbabe.com/

+ 1
- 1
content/138-bwerp-server-move.md View File

@@ -10,6 +10,6 @@ Some of you may be experiencing problems with Bwerp.net at the moment.
[My provider][] is shuffling around some of their servers, and you may
get a 503 Forbidden until your cache updates. Don't panic.

</p>

[My provider]: http://www.simpli.biz

+ 25
- 25
content/1380-makefile-for-css-and-js-minifycompress.md View File

@@ -26,20 +26,20 @@ haven't evaluated them or their competitors recently.
The Meat
--------

</p>
[gist file=Makefile]659427[/gist]

Customizing for Your Project
----------------------------

</p>
To make this file useful for your own project, you'll need to point it
at your CSS and JS files.

<p>
JS_TARGETS =CSS_TARGETS =CLEANUP =

</p>
The first two variables define what scripts will be minified and
compressed when you type "make js" or "make css," respectively. Both of
these commands will run when you type "make all" or simply "make."
@@ -48,34 +48,34 @@ when you type "make clean."

Some sample customizations are mentioned in the file.

<p>
CSS_TARGETS = $(shell cat manifest.txt)

</p>
If you would rather organize your list of CSS or JavaScript targets into
their own files, you can automatically expand that manifest file using
the cat command.

<p>
CLEANUP = $(CSS_TARGETS) $(JS_TARGETS)

</p>
Some more advanced setups may combine several CSS files before
minification, or use a custom target to concatenate JavaScript using the
closure compiler. If you find that all your targets can be cleaned, you
can simply reference them automatically as above.

<p>
concatenated.min.js: file1.js file2.js java -jar ~/bin/compiler.jar $(addprefix --js=,$^) >$@

</p>
The closure compiler requires a prefix for all input JavaScript files.
Use the make function "`addprefix`" to format the argument list.

<p>
custom-concat.css: file1.css file2.css file3.css cat $^ >$@

</p>
Automatic variables greatly simplify most of the functionality within
this makefile. To create a concatenated CSS file, simplify specify the
target to the left of the colon, and its dependencies (the files to
@@ -84,47 +84,47 @@ concatenate) to the right; the `cat` command never needs modification.
Of course, you can always define custom rules, ie. this one to fetch the
newest development version of jQuery:

<p>
jquery: curl -o jquery.js http://code.jquery.com/jquery-git.js

</p>

Other Magic
-----------

</p>
Some other goodness happens below the "you shouldn't need to edit past
here" line. After we configure a few settings, we define how to create
files based on suffixes: .min.css gets passed through YUI Compressor,
.min.js through Closure, and .gz through gzip. We configure what files
we care about, and make handles the rest.

<p>
.DEFAULT_GOAL := all

</p>
Set a default rule, rather than using the first rule in the file as the
default.

<p>
.PHONY: css js

</p>
Prevent files named "css" or "js" from interfering with the css and js
rules.

<p>
%.gz: % gzip -9 <$< >$@

</p>
One of three pattern rules. This enables you to compress any file (not
just CSS or JS) by running "make filename.gz." I precompress my files
because I'm using [gzip\_static in nginx][].

<p>
CSS_GZIP = $(CSS_TARGETS:.css=.css.gz)

</p>
One of several variables that modifies filenames found in
`$(CSS_TARGETS)`, changing the suffix from `.css` to `.css.gz`. Note
that the colon/equals syntax is shorthand for [patsubst][]. Given
@@ -136,14 +136,14 @@ general-purpose `%.gz` rule above.
See Also
--------

</p>

- [Advanced Makefile Tricks][] -- macros (\$@ et al) and wildcard
rules
- [GNU make manual][] -- [functions][], [automatic variables][],
[pattern rules][]

</p>

[Makefiles]: http://www.gnu.org/software/make/
[YUI Compressor]: http://developer.yahoo.com/yui/compressor/


+ 4
- 4
content/139-ok-real-quick.md View File

@@ -8,7 +8,7 @@ WordPress-Post-Type: post

From [an article][] on [Kuro5hin.org][]:

</p>

Music sales in Germany have been in decline for the last five years,
dropping 11% last year, and German copyright holders seem to think
@@ -17,17 +17,17 @@ president of Bundesverband Phono (Germany's RIAA), asked: "If it were
possible tomorrow to copy bread rolls, does anyone doubt that that would
mean a major economic problem for the baking industry?"

</p>

Well, we wouldn't want a major economic problem for the baking industry,
even if it meant that *nobody ever died of hunger again*. This is a
*terrible* analogy. Do people have no sense?

</p>

I'm going to bed. I've seen enough for one day.

</p>

[an article]: http://www.kuro5hin.org/story/2003/3/3/12522/38395
[Kuro5hin.org]: http://www.kuro5hin.org/

+ 4
- 4
content/140-spring-has-sprung.md View File

@@ -10,14 +10,14 @@ Everything but the weather, that is. Spring break has come to a close,
and today is the first day of the last quarter of my junior year. I'm
simply *bursting* with excitement.

</p>

I've been playing around with the green stylesheet, and it's here for
good this time. I made sure to back it up, so I don't accidentally erase
an hour's worth of tweaking again. More changes to come, like adding the
top navigation bar and such.

</p>

I'll also be making some of my other content public, in an effort to
make Bwerp.net a more useful resource. I've got some Perl scripts to
@@ -26,9 +26,9 @@ For the fans of my now-ancient (what, last winter?) PHP-Schedule, I've
got another iteration in the works. It's XML based, so it *has* to be
good, right?

</p>

"Catch you on the flip side."

</p>


+ 8
- 8
content/1402-running-gitweb-in-fastcgi-mode.md View File

@@ -12,10 +12,10 @@ hell of a time getting [gitweb][] to run in FastCGI mode. The key was
combining gitweb's `--fastcgi` flag with the `FCGI_SOCKET_PATH`
environment variable, in addition to a quick library install:

<p>
apt-get install libcgi-fast-perl libfcgi-procmanager-perl

</p>
Not complicated, but as a Perl novice it took some digging before I got
the right combo of settings. Also, I didn't realize that a
FastCGI-enabled script will run in CGI mode rather than listen for
@@ -28,26 +28,26 @@ Here's my final setup:
/etc/init/gitweb-fcgi.conf
--------------------------

</p>
Here's an [Upstart][] script to start a gitweb wrapper under Ubuntu
10.04. I'm using [gitolite][] and I want the script to run as my git
user, hence the call to `su`.

<p>
start on startupstop on shutdownexec su git -c /path/to/custom/gitweb.fcgirespawn

</p>

gitweb.fcgi
-----------

</p>
And here's that custom gitweb wrapper:

<p>
#!/bin/shexport FCGI_SOCKET_PATH=127.0.0.1:9002/usr/local/share/gitweb/gitweb.cgi --fastcgi

</p>

And you might as well install the [GitHub copycat theme][] while you're
at it.


+ 4
- 4
content/141-family-tech-support.md View File

@@ -8,7 +8,7 @@ WordPress-Post-Type: post

From "[Family Tech Support][]," a recent story on [Slashdot][]:

</p>

For a month, my mother became really productive (mom's productivity is
measured in forwarded joke emails), and then, abruptly, stopped being
@@ -17,7 +17,7 @@ next time I heard from her was on my answering machine - "You can cancel
my internet access, I've packed up the computer and put it in the
closet. Bye."

</p>

This makes me appreciate my mother's computer skills so much more. One
of my pet peeves is when a person has a problem, but is unwilling to
@@ -27,12 +27,12 @@ takes to let me know there's a problem. I have [VNC][] set up to speed
the troubleshooting process; failing that, we can work through most
anything over the phone.

</p>

What she lacks in computer knowledge, she makes up in patience and
persistence. I think that's a good lesson for us all.

</p>

[Family Tech Support]: http://slashdot.org/article.pl?sid=03/03/15/0051258
[Slashdot]: http://slashdot.org/


+ 10
- 10
content/1412-thinking-about-testability.md View File

@@ -16,39 +16,39 @@ structure my code.
In the past I may have written a user class which was very tightly
coupled with a database:

<p>
class User { public function __construct( $id ) { global $db;  $sql = "SELECT * FROM users WHERE id = ?"; $user = $db->get( $sql, $id ); $this->id = $user->id; $this->name = $user->name; }}

</p>
It's easy to identify why this is hard to test: you need a database with
predictable data beneath to have any confidence that the code is working
as it should. A testable alterative would use **Dependency Injection**:

<p>
class User { public function __construct( $userstore ) { $this->userstore = $userstore; } public function load( $id ) { $userdata = $this->userstore->load( $id ); $this->id = $userdata->id; $this->name = $userdata->name; }}

</p>
Rather than instantiating a user with `new User(12)`, I would instead
say:

<p>
$userstore = new UserStore_Database( DB_USER, DB_PASS ); // create db interface$user = new User( $userstore ); // create user object, connecting to db$user->load( 12 ); // load user #12

</p>
This is way more verbose, but factories can automatic the common use
cases:

<p>
class User { // __construct(), load(), plus: public static function load_by_id( $id ) { static $userstore = null; // cache the database interface if( $userstore === null ) { $userstore = new UserStore_Database( DB_USER, DB_PASS ); } $user = new User( $userstore ); $user->load( $id ); return $user; }}

</p>
Our object is testable, but day-to-day code in production can still use
a one-liner:

<p>
$user = User::load_by_id( 12 );

</p>
When I write my unit tests, I can create a custom `UserStore` class that
returns data from an array. The `User::load_by_id()` method is not
testable, but honestly I don't care. I want to test the core


+ 4
- 4
content/1418-testable-factories.md View File

@@ -21,17 +21,17 @@ cached a reference to the database object using a static.)

But what if the factory itself were its own class?

<p>
class UserFactory { public static function userstore( $new_store = null ) { static $userstore; if( $new_store !== null ) { $userstore = $new_store; } // default userstore if one wasn't provided if( $userstore === null ) { $userstore = new UserStore_Database( DB_USER, DB_PASS ); } return $userstore; } public static function load_by_id( $id ) { $user = new User( self::userstore() ); $user->load( $id ); return $user; }}$dbstore = new UserStore_Database( DB_USER, DB_PASS );UserFactory::userstore( $dbstore );$user = UserFactory::load_by_id( 12 );

</p>
Or maybe it's better to have the factory as an object rather than a
collection of static methods:

<p>
class UserFactory { public $userstore; public function __construct( $userstore ) { $this->userstore = $userstore; } public function load_by_id( $id ) { $user = new User( $this->userstore ); $user->load( $id ); return $user; }}$dbstore = new UserStore_Database( DB_USER, DB_PASS );$uf = new UserFactory( $dbstore );$user = $uf->load_by_id( 12 );

</p>
I'm not sure if one implementation is better than the other. The former
seems testable, and it can be used in any scope without instantiation or
prior setup, allowing for one-liners.


+ 5
- 5
content/142-of-indoor-swimming-pools.md View File

@@ -9,7 +9,7 @@ WordPress-Post-Type: post
Most people go through life not knowing what a soaking wet carpet sounds
and feels like. This morning, my life was *enriched*.

</p>

I saw the dark footprints on the carpet as soon as I woke up. I assumed
there had been a spill of some sort, and thought about calling Housing
@@ -17,7 +17,7 @@ to get it cleaned up. (The smell of moldy carpet does not rank high on
the list of things we need in this apartment.) I went to take my shower,
and I realized things were much worse than I had imagined.

</p>

I practically *swam* to the bathroom, navigating around the wet floor
rugs, and found that the toilet bowl was completely full, and every inch
@@ -26,15 +26,15 @@ It had already began seeping into the carpet, and made it all the way
into the living room. I'm not sure, but I think it was trying to escape
out the front door before I woke up.

</p>

Albert came to our rescue, as he often does. The carpet is still
waterlogged, but at least the flooding has ceased. Albert's veritable
Plunger of Justice saw to that.

</p>

I think I've had enough morning for one day.

</p>


+ 5
- 5
content/143-microsoft-is-pain.md View File

@@ -13,24 +13,24 @@ database weirdo. Sue me.) PHP's database access is straightforward and
sensible: send SQL statements to the database, and PHP will turn the
results into arrays or objects, whichever you prefer.

</p>

Microsoft, on the other hand, take the approach of Steamy Pile of Crap.

</p>

Cursors? Why on earth do you need to walk forwards and backwards through
a dataset? Server-side keysets? Yes, let's bog down the database server
*even more*.

</p>

Seriously, I've never had to write so much code to accomplish so little.
So many damn ODBC wrapper functions. Sigh.

</p>

(I'm done ranting now. I promise.)

</p>


+ 2
- 2
content/145-static-blogrolling.md View File

@@ -14,10 +14,10 @@ who seems to be my most frequent visitor, second only to myself.

Here's the script:

<p>
#!/bin/shWEBDIR=/var/www/blogs.bwerp.net/htdocsURL="http://rpc.blogrolling.com/display_raw.php"ROLLID="r=11a89b51a86123178572ef64d4d87f02"/usr/bin/curl "${URL}?${ROLLID}" -s -o ${WEBDIR}/blogroll.html.newif [ $? -eq 0 ]; then mv ${WEBDIR}/blogroll.html.new ${WEBDIR}/blogroll.htmlelse echo "blogroll.sh failed: $?" 1>&2fi

</p>
Cron runs this every fifteen minutes, so my blogroll is pretty
up-to-date. Note that I don't replace blogroll.html right away. If
`curl` can't run for whatever reason (or if the network is slow), it's


+ 25
- 25
content/1458-locking-down-rsync-using-ssh.md View File

@@ -14,7 +14,7 @@ OpenSSH while allowing scheduled syncing. First, my requirements:
- Ability to work without interaction
- Secure (i.e. locked down to specific tools/files)

</p>
OpenSSH public/private keypairs and rsync over SSH was a logical
starting point, but I was missing a piece to limit the rsync to specific
files: the [`authorized_keys` `command="command"`][] option.
@@ -22,7 +22,7 @@ files: the [`authorized_keys` `command="command"`][] option.
The Setup
---------

</p>
Hostnames have been changed to protect the innocent. For this
description:

@@ -31,90 +31,90 @@ description:
- ***penny*** is the client, pulling files from *coriander* using
rsync

</p>
I regularly SSH to the host I wanted to backup, so this setup needed to
work around a potential key conflict. Easy enough using `~/.ssh/config`
on *penny*:

<p>
Host coriander HostName coriander.example.com User adam IdentityFile ~/.ssh/id_dsaHost mysql-binlog HostName coriander.example.com User adam IdentityFile ~/.ssh/mysql-binlog-key

</p>
I run an ssh-agent, so I have to run things through `env -i` to prevent
the `rsync` from using my normal key.

In this case, I manually copied my key into adam@*coriander*'s
`~/.ssh/authorized_keys` file:

<p>
ssh-rsa AAAAB3NzaC1yc2EAAAA…BIwAAAQEA2GNx7diU== mysql-binlog-key

</p>
Next I prepended some options to this key:

<p>
command="~/mysql-backup/rsync-control" ssh-rsa AAAAB3NzaC1yc2EAAAA…BIwAAAQEA2GNx7diU== mysql-binlog-key

</p>

My wish is your command="command"
---------------------------------

</p>
At this point, let's digress to look at the SSH command option. Try this
style authorized\_keys on your server to echo the environment and exit
when the user logs in over SSH:

<p>
command="env" ssh-rsa AAAAB3NzaC1yc2EAAAA…BIwAAAQEA2GNx7diU== mysql-binlog-key

</p>
SSH to the host and see the output:

<p>
ambackstrom@fsck:~:0$ env -i ssh mysql-binlogSHELL=/bin/bashSSH_CLIENT=10.0.0.2 56490 22USER=adamPATH=/bin:/usr/binPWD=/home/adamSHLVL=1HOME=/home/adamSSH_CONNECTION=10.0.0.2 56490 10.0.0.1 22_=/usr/bin/env

</p>
Then once more, specifying a command to run on the server:

<p>
ambackstrom@fsck:~:0$ env -i ssh mysql-binlog 'ls -lAF'SHELL=/bin/bashSSH_CLIENT=10.0.0.2 56546 22USER=adamPATH=/bin:/usr/binPWD=/home/adamSHLVL=1HOME=/home/adamSSH_CONNECTION=10.0.0.2 56546 10.0.0.1 22SSH_ORIGINAL_COMMAND=ls -lAF_=/usr/bin/env

</p>
Our script becomes the middleman between the client and the requested
command, and that command is placed in the `$SSH_ORIGINAL_COMMAND`
environment variable. We can analyze this command and allow, deny, or
modify it before execution. Given this rsync command:

<p>
env -i rsync -avzP mysql-binlogs:/tmp/ /tmp/test/

</p>
We get this remote command:

<p>
SSH_ORIGINAL_COMMAND=rsync --server --sender -vlogDtprz . /tmp/

</p>

Security via Misdirection
-------------------------

</p>
Let's place a new middleman script in our authorized\_keys file on
coriander:

<p>
command="~/rsync-control" ssh-rsa AAAAB3NzaC1yc2EAAAA…BIwAAAQEA2GNx7diU== mysql-binlog-key

</p>
Within `~/rsync-control` we'll analyze the incoming command and take
some action:

<p>
#!/bin/shif [ "$SSH_ORIGINAL_COMMAND" = "rsync --server --sender -vlogDtprz . logs/" ] ; then    rsync --server --sender -vlogDtprz . /var/lib/mysql/binlog/ exit $?fiexit 1

</p>
What we've actually done here is obfuscated the real binary log
directory from the originating command on *penny*: the client requests
the `logs/` directory, but we launch an rsync server for


+ 5
- 5
content/146-i-like-em-thin.md View File

@@ -10,7 +10,7 @@ WordPress-Post-Type: post
Just placed the orders for my new thin client setup. Here's the
"skinny," as it were:

</p>

- [VIA EPIA-M10000][]
- 1GHz C3 Processor
@@ -36,13 +36,13 @@ Just placed the orders for my new thin client setup. Here's the
- 60 key layout
- Approx. 12" x 4"

</p>

Notice that there's no mention of an optical or hard drive. I'm going to
attempt a netboot setup, which would give me a super-small, super-quiet
diskless workstation. One can only hope

</p>

I decided go the route of a boot ROM behind a dual-NIC machine. I mulled
over a [flash disk module][], but I'm more likely to encounter boot ROMs
@@ -50,12 +50,12 @@ in the future, so I thought it best to try one now. (Though I think in
practice they're pretty much the same. I may use one later to regain the
single PCI slot.)

</p>

I'll probably blog any interesting updates, as well as revising my
[Linux Netboot][] project page.

</p>

[VIA EPIA-M10000]: http://www.lillicomputers.net/product.asp?pf_id=EPIA%2DM10000
[Better pictures]: http://www.newegg.com/app/Showimage.asp?image=13-180-038-03.JPG/13-180-038-02.JPG/13-180-038-01.JPG/13-180-038-04.JPG


+ 4
- 4
content/147-spamassassin-procmail-and-fetchmail-oh-my.md View File

@@ -12,11 +12,11 @@ department, with one spam every couple days. Having a [dummy account][]
with [aliases][] helps, plus I get to see exactly where people are
getting my address from.

</p>

Here's the lowdown on my current setup:

</p>

1. Mail is delivered to my bwerp.net address.
2. Every 10 minutes, [`fetchmail`][] pulls e-mail from bwerp.net and
@@ -26,12 +26,12 @@ Here's the lowdown on my current setup:
4. `procmail` in turn filters all mail through SpamAssassin
5. Any messages marked as spam are moved to my \~/Maildir/junk folder.

</p>

Pretty slick, if I do say so myself. Next step: consolidate my e-mail
accounts through `fetchmail` and `procmail`.

</p>

[Mark Pilgrim's lead]: http://diveintomark.org/archives/2003/04/08/spamassassin_makes_spam_fun.html
[SpamAssassin]: http://spamassassin.org/


+ 2
- 2
content/1470-new-hampshire-hb240-approval-voting.md View File

@@ -14,7 +14,7 @@ divisive two-party system. How many people would vote differently if a
vote for the green party or other minority could no longer be considered
a wasted vote?

<p>
> To: Charles Brosseau \<[charlesbrosseau@gmail.com][]\>, James Aguiar
> \<[jim.aguiar@leg.state.nh.us][]\>
>
@@ -43,7 +43,7 @@ a wasted vote?
> <p>
> adam@sixohthree.com

</p>

[Will NH adopt approval voting?]: http://freekeene.com/2011/01/28/will-nh-adopt-approval-voting/
[charlesbrosseau@gmail.com]: mailto:charlesbrosseau@gmail.com


+ 3
- 3
content/1477-on-frameworks.md View File

@@ -9,7 +9,7 @@ WordPress-Post-Type: post

Martin Fowler, *Patterns of Enterprise Application Architecture*:

<p>
> I'm assuming that most of my readers will fall into two groups: those
> with modest needs who are looking to build their own software and
> readers with more demanding needs who will be using a tool. … There is
@@ -19,7 +19,7 @@ Martin Fowler, *Patterns of Enterprise Application Architecture*:
> exercise at building frameworks, which wasn't what the project was
> really about.

</p>
I have been acutely aware of this, lately. The specific sorts of
patterns I'm looking for (e.g. [active record)][] could be done for me,
were I to use a framework. There's a lot to weigh:
@@ -33,7 +33,7 @@ were I to use a framework. There's a lot to weigh:
- Finding a tool that actually fits our needs ([Zend][], [Lithium][],
[Doctrine][], [CodeIgniter][], [Kohana][],  [etc][].)

</p>
My impression is that Zend would most easily fit into our existing
development. We could cherry-pick components, increasing our dependence
as we grow in comfort and retire old home-grown tools. Maybe the same is


+ 20
- 20
content/1486-migrating-to-php-5-3-call_user_func_array.md View File

@@ -16,85 +16,85 @@ issues, as the WordPress plugin API is heavily dependent on
Passing non-arrays
------------------

</p>

Let's first look what happens when we pass a non-array as the second
argument to `call_user_func_array()`:

<p>
function foo() { var_dump( func_get_args() ); return 7;}var_dump( call_user_func_array( 'foo', 3 ) );

</p>

Here's the output in PHP 5.2.17:

<p>
array(1) { [0]=> int(3)}int(7)

</p>

And here's PHP 5.3.5:

<p>
PHP Warning: call_user_func_array() expects parameter 2 to be array, integer given in /tmp/call_user_func_array.php on line 9NULL

</p>

In my definition a "warning" wouldn't refuse to run a specific command
(the callback) and then continue with program execution, but c'est la
vie. One fix is to typecast as `array`, which turns a scalar into a
single-element array:

<p>
call_user_func_array( 'foo', (array)3 ); // array( 0 => 3 )

</p>

However, typecasting would turn an object into an array. An object with
three properties would become an array with three elements, so the
callback would get three arguments (the properties) rather than one
argument (the object). The best solution is to check `is_array()`:

<p>
call_user_func_array( 'foo', is_array($args) ? $args : array($args) ); // $args, or array( 0 => $args )

</p>

Passing by reference
--------------------

</p>

Let's try a callback that expects to get parameters by reference:

<p>
function foo( &$input ) { var_dump( $input ); return 'goodbye'; }$args = array( 'hello' );var_dump( call_user_func_array( 'foo', $args ) );

</p>

The old PHP 5.2.17 behavior:

<p>
string(5) "hello"string(7) "goodbye"

</p>

And now, in PHP 5.3.5:

<p>
PHP Warning: Parameter 1 to foo() expected to be a reference, value given in /tmp/call_user_func_array.php on line 9NULL

</p>

Same deal as before: things basically fall of the tracks, with the
callback never executing and the function returning null. One fix is to
pass `$args` by reference, and remove the `&` from the function
definition:

<p>
function foo( $input ) { var_dump( $input ); return 'goodbye'; }$args = array( 'hello' );var_dump( call_user_func_array( 'foo', &$args ) );

</p>

Or if you don't really require pass by reference (you're not modifying
the input) just remove the `&` from the function definition and be done


+ 8
- 8
content/150-flexibletype.md View File

@@ -10,30 +10,30 @@ WordPress-Post-Type: post
Did you know that MovableType can create .htaccess files with rules for
mod\_rewrite? Very handy, when modifying [archive URLs][].

</p>

Consider:

</p>

<p>


RewriteEngine on<MTEntries lastn="99999">RewriteRule ^archives/<$MTEntryID pad="1"$>.php ¬ /archives/<$MTEntryDate format="%Y/%m/%d"$>/ ¬ <$MTEntryTitle dirify="1"$>.php [R=301]</MTEntries>

</p>

(Breaks added for readability.) Which produces this output:

</p>

<p>


RewriteEngine onRewriteRule ^archives/000138.php ¬ /archives/2003/04/23/flexibletype.php [R=301]RewriteRule ^archives/000137.php ¬ /archives/2003/04/22/tracking_comments.php [R=301]RewriteRule ^archives/000135.php ¬ /archives/2003/04/22/thin_client_update.php [R=301]...

</p>

Here's text files for the [.htaccess][] and [template][]. Go forth and
create [persistent URIs][].

</p>

[archive URLs]: /archives/2003/04/22/tracking-comments
[.htaccess]: http://blogs.bwerp.net/~adam/2003/04/23/flexibletype/htaccess.txt


+ 5
- 5
content/151-will-intern-for-food.md View File

@@ -12,7 +12,7 @@ an effort to actually *graduate* some time in the next few years.
Basically, this means my amount of work increases, while the time I have
to complete said work stays exactly the same.

</p>

I've had little experience job hunting, so I have to go by what the
co-op office tells me most of the time. Make callbacks often; apply to
@@ -20,14 +20,14 @@ as many jobs as possible; apply to jobs even if you're not qualified,
let the employer sort you out, etc. Disillusionment is rearing its ugly
head.

</p>

I made a callback today, my first since I resolved to start working hard
at this. The woman I spoke with was surprised that I called, and
remarked, "Usually the students don't contact us directly." Um? We're
told to be absolutely rabid about callbacks.

</p>

As if that weren't discouraging enough, I tried to apply for a job in
systems administration last night. I've applied to less-than-ideal jobs
@@ -39,12 +39,12 @@ and useful. I don't want to spend six months of my life fighting with
Microsoft IIS. I already *know* it sucks. That's one thing I don't need
to learn.

</p>

<span class="footnote">1</span> "Co-op" is a fancy word for what most
people would call "internship:" paid work in the field while registered
with the university, for credit towards graducation. RIT requires me to
co-op for nine months.

</p>


+ 1
- 1
content/1515-world-of-warcraft-tcg-card-numbering.md View File

@@ -22,7 +22,7 @@ order, using [Icecrown][] as an example:
are faction-neutral) (203-218)
7. Locations; alphabetical by title (219-220)

</p>
Subject to future revisions!

[Icecrown]: http://www.wowtcgdb.com/imagebrowser-medium.aspx?start=1&end=220&set=ICE

+ 4
- 4
content/152-dbms-updates.md View File

@@ -8,7 +8,7 @@ WordPress-Post-Type: post

Today's gonna be a good day.

</p>

I've already [ranted][] on the physical pain I experience working with
Visual Basic.NET/Access. Today, my prayers are being answered. PHP and
@@ -24,16 +24,16 @@ extending them just enough to be incompatible, botching them in one way
or another, and selling them for a few hundred dollars. What is so
attractive about this company?

</p>

At least I'm getting a reprieve, however short. I just have to contain
myself during the lecture. "No, you can do that with print\_r()!" "Use
the \<?= ?\> syntax!" "Fetch that row as an object!"

</p>

See what I mean?

</p>

[ranted]: http://blogs.bwerp.net/archives/2003/03/25/microsoft_is_pain

+ 1
- 1
content/1526-python-and-php-giving-a-rats-ass.md View File

@@ -20,7 +20,7 @@ to entry:
directory)
- There are a plethora of tutorials

</p>
This attracts a pretty scary demographic: the non-programmer. Just look
at the [PHP questions][] on [Stack Overflow][]. On any given day it's a
[complete mess][], a land where HTML is intermingled with PHP and


+ 6
- 6
content/153-goodbye-boss.md View File

@@ -11,12 +11,12 @@ A natural formation of rocks, formed thousands of years ago, his profile
has watched over the White Mountains and been our state symbol for
generations.

</p>

Last Thursday, New Hampshire lost not only a monument, but a dear
friend.

</p>

It is hard for me to explain my personal sense of loss. The Old Man
stood for many things I love about the Granite State. He was strength.
@@ -24,24 +24,24 @@ He was of nature. He was larger than life, and seemingly immobile. And
true to his nature, our best efforts to hold him up could not persuade
him to stay. "Live Free or Die," indeed.

</p>

I am a product of New Hampshire. I value nature and rural sensibilities.
I am simple, and I am practical. I am sure some people want to rebuild
him, but I say this is how he wanted it to be. He was with us longer
than his time, and we should let him rest in peace.

</p>

So "Goodbye," Old Man. You live on on our signposts, on our coins, and
in my heart.

</p>

Those wishing for more information can read [this article][] in the [The
Union Leader][].

</p>

[this article]: http://www.theunionleader.com/articles_show.html?article=20823
[The Union Leader]: http://www.theunionleader.com/

+ 5
- 5
content/154-blogs-and-spam-the-next-revolution.md View File

@@ -14,7 +14,7 @@ recently discovered a [comment][] on my own blog along the same lines,
so I feel the time is right to blog it. (It's the bottom comment; check
the URL his name links to.)

</p>

From what I have seen, the majority of blogs trust other blogs
implicitly. Comments are either on, or off; there is no middle ground.
@@ -24,7 +24,7 @@ hundreds of bored sufers from, say, diveintomark.org, to Joe Hacker's
Site for Kewl Linkz. But let's take this a step further: spam-oriented
comments and trackbacks.

</p>

Instead, let's say Mark posts about a current problem with his hosting
provider, and mentions the importance of backups. (Sound familiar?)
@@ -38,7 +38,7 @@ trough to a site that's selling Joe's Super Backup+. Mark has a day job
he doesn't notice the spam trackback for a few hours, or worse, never
notices it at all. Sound far-fetched? I don't think so, either.

</p>

The simplest solution is to approve all comments and trackbacks before
they are posted, but that's unappealing even to a casual blogger like
@@ -46,11 +46,11 @@ myself. Perhaps we will see webs of trust emerge around comments and
trackbacks, much like those that exist for PGP keyrings. It will be
interesting to see which direction this goes.

</p>

In the mean time, if anyone knows a way to discover geographical
locations for IP addresses, I'm all ears. Right, "ip address?"

</p>

[comment]: http://blogs.bwerp.net/archives/2002/12/12/tim_oreilly_on_piracy.php#c-151

+ 2
- 2
content/1549-merlin-mann-marketplace-of-ideas.md View File

@@ -7,14 +7,14 @@ Tags: Quotes, podcast, productivity
WordPress-Post-ID: 1549
WordPress-Post-Type: post

<p>
> If you don't care a lot about the thing you're trying to fix, there is
> no solution for that. When I say "first, care," I mean, that is as
> they say in programming, "step zero." There is no step one, there is
> no step two, there is no step anything if you don't care, because
> otherwise you're just gonna wander around lamely…

</p>
[Merlin Mann][], [Marketplace of Ideas, 26 July 2011][].

[Merlin Mann]: http://www.merlinmann.com/


+ 1
- 1
content/155-summer-plans.md View File

@@ -8,5 +8,5 @@ WordPress-Post-Type: post

I'm staying at RIT for the summer. Will update soon. Transmission en--

</p>


+ 7
- 7
content/1552-webos-3-0-2-changes.md View File

@@ -16,24 +16,24 @@ Calendar
scrolling midnight-to-midnight view.
- Much more responsive.

</p>
Clock

- The Clock now supports alarms.

</p>
Photos & Video

- Thumbnails are now larger, showing 3 photos and growing to 4 photos
when the pane is maximized, rather than always showing four
thumbnails and increasing whitespace when maximizing.

</p>
Maps

- Maps is now driven by Google Maps. Haha, kidding, it's still Bing.

</p>
Some miscellaneous things I'm hoping are now fixed:

- Messaging app would occasionally refuse to go online. Required
@@ -43,12 +43,12 @@ Some miscellaneous things I'm hoping are now fixed:
- Photos & Video was unable to play large video files. Initial test is
not promising.

</p>
Only time will tell on some of those.

Oh, old and new user-agent string:

<p>
> Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US)
> AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.72 Safari/534.6
> TouchPad/1.0
@@ -58,7 +58,7 @@ Oh, old and new user-agent string:
> AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.40.1 Safari/534.6
> TouchPad/1.0

</p>
Anyway, three cheers to HP for pushing an update one month after the
tablet's release! Let's keep the momentum going.



+ 4
- 4
content/156-movie-night-matrix-reloaded.md View File

@@ -10,7 +10,7 @@ WordPress-Post-Type: post
Just got back from watching *Matrix: Reloaded* with Karl. Excellent
flick, I recommend you go see it. More comments in the extended entry...

</p>

<!--more-->

@@ -23,7 +23,7 @@ with the father of the Matrix, Neo says the machines are in almost the
same situation: kill all the humans, and there is no source of power.
Quite a bind for each party, no?

</p>

Some of my personal favorite parts of the movie: the ghost scenes, and
Zion. I thought that whole supernatural bit was presented pretty well,
@@ -35,11 +35,11 @@ his guns, and seeing more of the ships up close. Check out the
[Animatrix][] short "Second Renaissance" if you want to see more of
that.

</p>

So, it was well worth my \$7.75. Hopefully I'll get to see it again
before *Revolutions* comes out.

</p>

[Animatrix]: http://www.intothematrix.com/

+ 3
- 3
content/157-todo.md View File

@@ -8,7 +8,7 @@ WordPress-Post-Type: post

Things I will do when school ends (in no particular order):

</p>

- Move [useful content][] over to the main Bwerp server.
- Find a better way to manage online content. (Not talking blogs
@@ -26,11 +26,11 @@ Things I will do when school ends (in no particular order):
</p>
<p>

</p>

Those are my more immediate concerns. Sweet freedom, how I have missed
thee.

</p>

[useful content]: http://aziz.bwerp.net/~adam/examples/span_images/

+ 6
- 6
content/158-those-game-things.md View File

@@ -11,7 +11,7 @@ After reminiscing about old SNES RPGs in my [last post][], I poked
around on eBay to price out an old console and some games. Then I sort
of went insane for a couple hours.

</p>

I would like to collect Game Boys. There, I said it. Now, why would I
want to do a silly thing like that? For starters, the Game Boy is a
@@ -21,7 +21,7 @@ Boys there are? It's like trying to buy every [Nine Inch Nails][] album.
Just when you buy the Swedish import with the acid remix of Broken,
Trent puts another version of the same song out in Japan. Witness:

</p>

- **Original Game Boy**. You know it and love it.
- **Game Boy Pocket**. Thinner and lighter than the original.
@@ -32,7 +32,7 @@ Trent puts another version of the same song out in Japan. Witness:
several colors.
- **Game Boy Advance SP**. Even more changes to the Game Boy's design.

</p>

At quick count, that's fifteen different styles and colors of Game Boys.
There are special Pokémon editions in *at least* two colors, and I
@@ -42,21 +42,21 @@ the main ones. There's also: Game Boy Light (old style, with backlight);
Super Game Boy (play Game Boy games on your SNES); and other goodies
like the Game Boy Camera.

</p>

I only had a Game Boy of my own for a short time, but it was a lot of
fun. There are some great old games, like the Kirby and Mega Man titles,
as well as the always-classic Tetris. Hell, they even have Link to the
Past for Game Boy Advance.

</p>

Most of this is fairly new to me. I've been under the proverbial rock
since my subscription to Nintendo Power ran out. As much as I'd enjoy a
little deal-searching and collecting, though, I'll try to be good. After
all, there are [more important][] places for me to spend money.

</p>

[last post]: http://blogs.bwerp.net/archives/2003/05/23/todo
[Nine Inch Nails]: http://www.nin.com/


+ 2
- 2
content/1583-billboard.md View File

@@ -16,13 +16,13 @@ Got feedback? Email [adam@sixohthree.com][].
Release History
---------------

</p>

- **1.0.0** -- Improved vertical centering. 26 February 2012 (Pending
Review)
- **0.0.1** -- Initial App Catalog release. 13 September 2011

</p>

[Find it in the HP App Catalog]: https://developer.palm.com/appredirect/?packageid=com.sixohthree.billboard
[img]: http://mu.sixohthree.com/sixohthree/files/2011/09/billboard_11-300x225.png


+ 4
- 4
content/159-no-news-is-good-news.md View File

@@ -11,14 +11,14 @@ Not much to report. I am settled back into the apartment here at RIT,
enjoying the peace and quiet, but missing friends of various size and
stature.

</p>

I'll be creating Mac OS X metapackages for work, about which
documentation is fairly scant. I'll be sure to post some appropriate
links and documentation as soon as that's in full swing. That should
give me something to post about.

</p>

Got my first two Game Boys, too. The first was a blue Game Boy Pocket,
and the second is a black Game Boy. I haven't powered on the black one
@@ -27,9 +27,9 @@ Check back in a week and a half and then we'll talk. My first game is
Link's Awakening. Rough estimate, I'm probably half way through on six
or seven hours of playtime. It's been a while since I played an RPG, OK?

</p>

That's all for now. Just feeding the blog so it doesn't get angry.

</p>


+ 4
- 4
content/1595-wordpress-mu-domain-mapping-patches.md View File

@@ -17,7 +17,7 @@ the domain mapping plugin.
Domain Mapped siteurl()
-----------------------

</p>
`domain_mapping_siteurl()` is built to work only for the currently
active blog. Here's a modification which allows a `$blog_id` parameter:

@@ -26,15 +26,15 @@ active blog. Here's a modification which allows a `$blog_id` parameter:
Here's the filter I'm using to apply this function to all `siteurl()`
and `home()` calls:

<p>
function do_canonical_siteurl( $value, $blog_id ) { // gotta do the remove/add dance to avoid recursion remove_filter( 'blog_option_siteurl', __FUNCTION__, 10, 2 ); $url = domain_mapping_siteurl( 'siteurl', $blog_id ); add_filter( 'blog_option_siteurl', __FUNCTION__, 10, 2 ); return $url;}add_filter('blog_option_siteurl', 'do_canonical_siteurl', 10, 2);add_filter('blog_option_home', 'do_canonical_siteurl', 10, 2);

</p>

Fixup MUPLUGINDIR Paths
-----------------------

</p>
Plugin filters helpfully update the `PLUGINDIR` fragment in URLs, but
does not know about `MUPLUGINDIR`. This patch makes the filter a bit
more robust.


+ 3
- 3
content/160-chevron-seven-locked.md View File

@@ -9,18 +9,18 @@ WordPress-Post-Type: post
Friday. 8:00. SCI FI. [Stargate SG-1][]. Don't miss it. I know where
*I'll* be.

</p>

The three-hour block will start off with Stargate: The Lowdown, followed
by the two-hour season premiere. I've been big into SG1 lately. Used to
watch it back on HBO. How long ago was *that*?

</p>

So, anyway, it's almost here. If you're into science fiction, I
recommend checking it out. This concludes our public service
announcement.

</p>

[Stargate SG-1]: http://www.scifi.com/stargate/

+ 4
- 4
content/161-internet-explorer-fumbles-hes-down.md View File

@@ -11,7 +11,7 @@ According to Roz Ho, general manager of Microsoft's Mac Business Unit
[via [Bob][], via [PC Pro][], via MacUser], development of Internet
Explorer 5 for the Mac has ceased. "OK," I say. "So what?"

</p>

IE5 for the Mac was released some time in early 2000, I believe March or
April. Generally speaking, the browser has not changed since its initial