<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8044774562230802933</id><updated>2024-08-27T07:22:04.257-07:00</updated><category term="civic responsibility"/><category term="data systems"/><category term="neighborhood exploration"/><category term="parental involvement"/><category term="parenting"/><category term="physical activity"/><title type='text'>Grumblings, Technical and Otherwise</title><subtitle type='html'>&lt;p&gt;I&#39;m Stephen Alexander.&lt;/p&gt;&#xa;&lt;p&gt;I am a systems analyst at an internationally known cancer center where I support the databases, servers, interfaces etc for the radiology and pharmacy divisions. I have additional background in RF telecommunications and SIP protocol messaging, along with related applications. I got my start in IT doing hardware repair down to the boards and components, then did integration engineering, software QA, help desk, and a bit of everything else in the field.&lt;/p&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-8801758345625577397</id><published>2016-06-26T18:56:00.004-07:00</published><updated>2016-06-26T18:58:43.442-07:00</updated><title type='text'>an open letter to my assignment group</title><content type='html'>All,&lt;br /&gt;
&lt;br /&gt;
I&#39;m having a very frustrating time this week editing this work. I feel that the content is not quite there in terms of satisfying the assignment requirements, and I&#39;m having a lot of difficulty making sense of a lot of the input you&#39;ve given me. I&#39;ve asked for clarifications in many of the comments but the responses, as a rule, haven&#39;t been clear. I&#39;m trying to rewrite what I can, fill in the gaps where I can, and preserve y&#39;all&#39;s intent of meaning where I can discern it, but it&#39;s very difficult to discern in a lot of cases. This makes it next to impossible to provide clarity to those who will be reading, and grading, our paper.&lt;br /&gt;
&lt;br /&gt;
This is mainly meant as fair warning that I doubt our grade will be all that great on this assignment.&lt;br /&gt;
&lt;br /&gt;
I am struggling to pull this paper together even to the level that I was able to do for the last paper (which, frankly, was well below normally-acceptable standards, in my opinion). In order to rewrite this to the level of acceptability that we were able to achieve even in that assignment, I would have to spend another full day on this reading the sources given to square them with the citations and to make sense of everything and pull it all together into a cohesive document that satisfies the assignment criteria.&lt;br /&gt;
&lt;br /&gt;
I&#39;m disinclined to say anything further that could be taken personally, but I do mean to convey that I have not yet seen the quality of writing so far from this group that is normally acceptable at an undergraduate level, let alone in grad school. The main reason I volunteered to edit the papers for the group is that I am a good writer and editor, and a better critic. Perhaps most to the point, however, it truly pains me to turn in mediocre-to-lousy writing.&lt;br /&gt;
&lt;br /&gt;
I realize I have probably burned three bridges at once with this; however, I feel strongly that this is important enough to take that risk: in all sincerity, PLEASE, each of you needs to step up your writing game. I am asking not only for my sake and the sake of my grade, but also for the sake of your own academic and professional careers, and to honor the value of the degree we&#39;re all working to achieve.</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/8801758345625577397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2016/06/an-open-letter-to-my-assignment-group.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/8801758345625577397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/8801758345625577397'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2016/06/an-open-letter-to-my-assignment-group.html' title='an open letter to my assignment group'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-7649459610177980819</id><published>2016-05-13T19:07:00.000-07:00</published><updated>2016-05-13T19:13:51.060-07:00</updated><title type='text'>Asterisk and SELinux – and allowing additional Asterisk CLI users</title><content type='html'>Most advice on Asterisk that you&#39;ll find out in the ether states that to get Asterisk working right, you&#39;ll need to disable SELinux. Sometimes you&#39;ll even see vendor engineers repeating this over official channels.&lt;br /&gt;
&lt;br /&gt;
IMO this is &lt;i&gt;&lt;b&gt;stupid and wrong&lt;/b&gt;&lt;/i&gt;. Disabling security is a terrible approach to fixing problems generally, – but particularly so when the real issue is more than likely a config problem.&lt;br /&gt;
&lt;br /&gt;
Enough ranting though – I came to post about the resolution to just such a config problem.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Systemd config&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
After building a basic install of Asterisk 13.8 Certified on CentOS 7.2, I wasn&#39;t satisfied to run the included sysvinit script for startup when the entire balance of the system was initializing through systemd. I found that &lt;code&gt;/var/run/asterisk&lt;/code&gt; wouldn&#39;t cooperate with my initial attempts at writing a systemd script – after every reboot, it came back owned by root; ownership changes wouldn&#39;t stick. I learned from Jari Turkia&lt;sup&gt;[&lt;a href=&quot;http://technogrumble.blogspot.com/2016/05/asterisk-and-selinux-and-allowing.html#1&quot; name=&quot;top1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt; this is due to &lt;code&gt;/var/run&lt;/code&gt; being a tmpfs – nothing there persists across reboot.&lt;br /&gt;
&lt;br /&gt;
Jari used &lt;code&gt;/usr/bin/mkdir&lt;/code&gt;, suppressing errors, and &lt;code&gt;/usr/bin/chown&lt;/code&gt;, but it&#39;s possible to do the same thing elegantly in a single line using &lt;code&gt;/bin/install&lt;/code&gt; – a handy trick I picked up from Paul.&lt;sup&gt;[&lt;a href=&quot;http://technogrumble.blogspot.com/2016/05/asterisk-and-selinux-and-allowing.html#2&quot;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;br /&gt;
&lt;br /&gt;
With that and other help &lt;sup&gt;[&lt;a href=&quot;http://technogrumble.blogspot.com/2016/05/asterisk-and-selinux-and-allowing.html#3&quot;&gt;3&lt;/a&gt;],[&lt;a href=&quot;http://technogrumble.blogspot.com/2016/05/asterisk-and-selinux-and-allowing.html#4&quot;&gt;4&lt;/a&gt;],[&lt;a href=&quot;http://technogrumble.blogspot.com/2016/05/asterisk-and-selinux-and-allowing.html#5&quot;&gt;5&lt;/a&gt;]&lt;/sup&gt;, I was able to dial in a very nicely working systemd script to control my Asterisk installation. The config is after the jump.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Asterisk config&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
After sorting the directory ownership and permissions, I also learned that I could allow additional users (e.g., my own login account) to use the Asterisk CLI without having to use sudo – there are a couple of config items that have to be changed to let this happen:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;In &lt;code&gt;/etc/asterisk/asterisk.conf&lt;/code&gt;, uncomment &lt;code&gt;[files]&lt;/code&gt; stanza and its entry &lt;code&gt;astctlpermissions&lt;/code&gt;&lt;sup&gt;[&lt;a href=&quot;http://technogrumble.blogspot.com/2016/05/asterisk-and-selinux-and-allowing.html#6&quot;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;This changes the permissions on the &lt;code&gt;/var/run/asterisk/asterisk.ctl&lt;/code&gt; socket node&amp;nbsp;–&amp;nbsp;necessary because a CLI user needs write access to the socket&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;In &lt;code&gt;/etc/asterisk/cli_permissions.conf&lt;/code&gt;, add an entry for the user or group you want to give permissions, along with the appropriate permissions.&lt;sup&gt;[&lt;a href=&quot;http://technogrumble.blogspot.com/2016/05/asterisk-and-selinux-and-allowing.html#7&quot;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Since I&#39;m my only user, I set group &lt;code&gt;wheel&lt;/code&gt; to have all rights, but you may need something more strict.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ol&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;The working config:&lt;/b&gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;code&gt;
[Unit]&lt;br /&gt;
Description=Asterisk PBX and telephony daemon&lt;br /&gt;
Documentation=man:asterisk(8)&lt;br /&gt;
Wants=network.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PermissionsStartOnly=true&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStartPre=/bin/install -m 755 -o asterisk -g asterisk -d /var/run/asterisk/&lt;br /&gt;
User=asterisk&lt;br /&gt;
Group=asterisk&lt;br /&gt;
Environment=HOME=/var/lib/asterisk&lt;br /&gt;
WorkingDirectory=/var/lib/asterisk&lt;br /&gt;
ExecStart=/usr/sbin/asterisk -vvv&lt;br /&gt;
ExecStop=/usr/sbin/asterisk -rx &#39;core stop now&#39;&lt;br /&gt;
ExecReload=/usr/sbin/asterisk -rx &#39;core reload&#39;&lt;br /&gt;
&lt;br /&gt;
# safe_asterisk emulation&lt;br /&gt;
Restart=always&lt;br /&gt;
RestartSec=10&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.hqcodeshop.fi/archives/93-Handling-varrun-with-systemd.html&quot; name=&quot;1&quot; target=&quot;_blank&quot;&gt;Handling /var/run with systemd&lt;/a&gt; – Jari Turkia, Hacker&#39;s ramblings blog&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://askubuntu.com/questions/303120/how-folders-created-in-var-run-on-each-reboot/306479#306479&quot; name=&quot;2&quot; target=&quot;_blank&quot;&gt;How folders created in /var/run on each reboot&lt;/a&gt; – Paul on askubuntu.com&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://coreos.com/docs/launching-containers/launching/getting-started-with-systemd/&quot; name=&quot;3&quot; target=&quot;_blank&quot;&gt;Getting Started with systemd&lt;/a&gt; – CoreOS documentation&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://linux.die.net/man/1/install&quot; name=&quot;4&quot; target=&quot;_blank&quot;&gt;install(1) - Linux man page&lt;/a&gt; – die.net Linux man pages&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://unix.stackexchange.com/questions/207469/systemd-permission-issue-with-mkdir-execstartpre/207493#207493&quot; name=&quot;5&quot; target=&quot;_blank&quot;&gt;systemd: permission issue with mkdir &amp;amp; ExecStartPre&lt;/a&gt; – &lt;a href=&quot;http://unix.stackexchange.com/users/118045/matt&quot; target=&quot;_blank&quot;&gt;Matt&lt;/a&gt; on Unix StackExchange&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.deepreflect.net/2009/11/10/asterisk-permissions-and-ownership-for-the-socket-console/&quot; name=&quot;6&quot; target=&quot;_blank&quot;&gt;Asterisk – permissions and ownership for the socket console&lt;/a&gt; – Leonardo Rizzi, deepreflect.net networks&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://doxygen.asterisk.org/trunk/cli_permissions.conf.html&quot; name=&quot;7&quot; target=&quot;_blank&quot;&gt;Asterisk documentation – cli_permissions.conf&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/7649459610177980819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2016/05/asterisk-and-selinux-and-allowing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/7649459610177980819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/7649459610177980819'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2016/05/asterisk-and-selinux-and-allowing.html' title='Asterisk and SELinux – and allowing additional Asterisk CLI users'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-8960979055665979040</id><published>2013-01-16T10:38:00.004-08:00</published><updated>2013-01-16T10:38:59.525-08:00</updated><title type='text'>Router Breaks SIP? Work Around It.</title><content type='html'>Recently I had the misfortune of dealing with a Cisco&amp;nbsp;WRVS4400N router in a medium-sized business environment. It worked fine for almost everything, but as it turns out, an external SIP client (Aastra phone in this case) was not among the working. No matter what I tried, I couldn&#39;t get traffic to come to the Asterisk PBX behind the router on UDP 5060 from the internet, neither from that phone, nor other devices on its network, nor from other phones and other networks. Apparently the router simply couldn&#39;t properly handle packets coming to UDP 5060.&lt;br /&gt;&lt;br /&gt;As it turned out, this router is known for giving trouble with SIP; the older version of the firmware had SIP ALG built in, but it couldn&#39;t even be disabled! Apparently the new version has the option to toggle SIP ALG off, but it still doesn&#39;t work for whatever reason.&lt;br /&gt;
&lt;br /&gt;
This post isn&#39;t about that particular router model, though. Sadly, this is far from the only equipment out there that plays havoc with what one should expect to be a run-of-the-mill remote phone implementation.&amp;nbsp;Fortunately, there&#39;s a relatively easy workaround you can use, and I think it&#39;s fairly elegant, if a bit hackish.&lt;br /&gt;
&lt;br /&gt;
First, I should cover what I tried and failed at, because it would be easy for anyone without an in-depth understanding of the SIP protocol to make the same mistake.&lt;br /&gt;
&lt;br /&gt;
SIP is notorious for NAT traversal problems, and there are a variety of solutions out there that can be had, from SIP proxies to STUN servers to SIP ALG. I&#39;m not covering those here, but I&#39;m touching on them because the problems are due to a peculiarity of the SIP protocol -- the contents, not the metadata, of SIP messages describe how a connection should be set up. So if something about the connection, be it port or IP address, changes when traversing NAT, then the message itself has to contain information about those changes. The tools I mentioned above take one approach or another to modify how the messages traverse NAT, or they simply rewrite the message contents to align with the differences in the network. I wanted to avoid implementing any new software solutions in this particular situation, though.&lt;br /&gt;
&lt;br /&gt;
I initially tried to set the phone up to use a different UDP port, then forward that port at the router to 5060 on the Asterisk box. This SORT OF worked... the phone was able to register and calls would even go through ... but only for 20 seconds until the connection timed out. This happened because the Asterisk machine was still sending out packets telling the phone to use port 5060 (instead of my substitute port), and when the phone responded on port 5060, the packets couldn&#39;t make it to the PBX; it was the same problem I started with. Using 5060 just wasn&#39;t an option, and I realized I would need to use some other port altogether.&lt;br /&gt;
&lt;br /&gt;Ultimately, I set the Asterisk instance to use a randomly-selected, high-numbered UDP port using the bindport directive in sip.conf&amp;nbsp;(In FreePBX, you&#39;ll find this setting in the &quot;Asterisk SIP Settings&quot; section under the Tools tab):&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;bindport=47320&lt;/span&gt;&lt;/blockquote&gt;
(Of course, Asterisk has to be reloaded or restarted after a change like this).&amp;nbsp;Then, on the router, I forwarded incoming traffic on that UDP port directly to the Asterisk server on the same port.&lt;br /&gt;
&lt;br /&gt;Of course, the already-installed phones on the local network (not traversing the brain-dead router) were still configured to use 5060, and that couldn&#39;t work anymore, because Asterisk was no longer listening on 5060. I considered changing the configuration on all those phones, but I realized it was going to be a huge pain to do for 20 or more devices. Since that&#39;s the default setting for SIP phones, it&#39;s also much easier not to have to change it on any new phones either!&lt;br /&gt;
&lt;br /&gt;
So I didn&#39;t. Instead, I set up an IPtables rule on the Asterisk machine to forward incoming traffic on UDP 5060 to the new port, like this:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;iptables -A PREROUTING -t nat -i eth0 -p udp --dport 5060 -j REDIRECT --to-port 47320&lt;/span&gt;&lt;/blockquote&gt;
You&#39;ll need to adjust the interface definition (-i eth0) and port number (--to-port 47320) according to your configuration.&lt;br /&gt;
&lt;br /&gt;
This command can be added to an existing IPtables configuration to run automatically on boot (/etc/init.d/iptables, e.g.), or it can be set up as a standalone one-liner by adding it to the /etc/rc.local, /etc/inittab, or some other init script.&lt;br /&gt;
&lt;br /&gt;
So if you have a router giving you fits over SIP traversal, the &quot;correct&quot; solution is probably to replace the router with something that doesn&#39;t break standard protocols. But the &quot;right&quot; solution for you might be to take the simple steps I&#39;ve outlined here.&lt;br /&gt;&lt;br /&gt;Let me know if you have any questions!&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/8960979055665979040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2013/01/router-breaks-sip-work-around-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/8960979055665979040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/8960979055665979040'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2013/01/router-breaks-sip-work-around-it.html' title='Router Breaks SIP? Work Around It.'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-5614518192226259660</id><published>2011-05-25T06:24:00.000-07:00</published><updated>2011-05-25T06:26:15.273-07:00</updated><title type='text'>Cock Sparrer - Trouble on the Terraces - lyrics</title><content type='html'>I couldn&#39;t find &#39;em anywhere with Google, so I transcribed the lyrics from Cock Sparrer&#39;s &quot;Trouble on the Terraces&quot;&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace;&quot;&gt;—&lt;/span&gt;&amp;nbsp;it&#39;s been a favorite of mine for many years.&lt;br /&gt;
&lt;br /&gt;
For those not in the know, it&#39;s basically about football violence/soccer hooliganism/fun times - I think there is a documentary by the same name, about the same thing, but I haven&#39;t seen it and I don&#39;t know if it&#39;s related otherwise.&lt;br /&gt;
&lt;br /&gt;
Here&#39;s a youtube posting that has the audio if you&#39;re interested:&amp;nbsp;&lt;a href=&quot;http://www.youtube.com/watch?v=o0YchVPQdkE&quot;&gt;http://www.youtube.com/watch?v=o0YchVPQdkE&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Anyway, without further ado, the lyrics:&lt;br /&gt;
&lt;br /&gt;
&lt;hr style=&quot;size: 0px;&quot; /&gt;&lt;br /&gt;
&lt;tt&gt; You say you want the authorities to take action&lt;br /&gt;
But I don&#39;t believe you&#39;re genuinely concerned&lt;br /&gt;
You say you want the terraces to be closed down&lt;br /&gt;
But your son is one of us, so when will you learn?&lt;br /&gt;
&lt;br /&gt;
Adrenaline&#39;s running high, and most got nothing to fear&lt;br /&gt;
It&#39;s all part of the game; it adds to the atmosphere&lt;br /&gt;
We got trouble on the terraces, on the terraces, on the terraces&lt;br /&gt;
&lt;br /&gt;
Next time you see me running on the pitch&lt;br /&gt;
Don&#39;t forget I&#39;m just the same as you&lt;br /&gt;
It&#39;s a split second gut reaction that is happening to me&lt;br /&gt;
It ain&#39;t &#39;cause I&#39;ve got nothing else to do&lt;br /&gt;
&lt;br /&gt;
Adrenaline&#39;s running high, and most got nothing to fear&lt;br /&gt;
It&#39;s all part of the game; it adds to the atmosphere&lt;br /&gt;
We got trouble on the terraces, on the terraces, on the terraces&lt;br /&gt;
&lt;br /&gt;
We got trouble, riots, aggro, now&lt;br /&gt;
(repeat)&lt;br /&gt;
&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr style=&quot;size: 0px;&quot; /&gt;</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/5614518192226259660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2011/05/cock-sparrer-trouble-on-terraces-lyrics.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/5614518192226259660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/5614518192226259660'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2011/05/cock-sparrer-trouble-on-terraces-lyrics.html' title='Cock Sparrer - Trouble on the Terraces - lyrics'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-4370676113866121290</id><published>2011-03-29T21:19:00.000-07:00</published><updated>2011-03-29T21:19:07.023-07:00</updated><title type='text'>Perl script to concatenate PDF files</title><content type='html'>I hammered this together a few minutes ago because I find I often need something like this. It&#39;s a perl script that concatenates PDF files from the command line. It could be adapted pretty easily for web form input or a gui app if you wanted to badly enough.&lt;br /&gt;
&lt;br /&gt;
The only prerequisites I know of are Perl and Ghostscript which should be found on virtually any modern unix-type system and possibly some Windows ones too.&lt;br /&gt;
&lt;br /&gt;
I don&#39;t intend to offer support per se but let me know if you have any questions.&lt;br /&gt;
&lt;br /&gt;
Cheers,&lt;br /&gt;
&lt;br /&gt;
Stephen&lt;br /&gt;
&lt;br /&gt;
Releasing under GPLv3&amp;nbsp;&lt;a href=&quot;http://www.gnu.org/licenses/gpl.html&quot;&gt;http://www.gnu.org/licenses/gpl.html&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;#!/usr/bin/perl -w
# ^^ change path if necessary

# a script to concatenate PDF files. just give it PDF files as arguments, in the
# order you want them concatenated.
# cobbled together from the &#39;gs&#39; command line example found at
# http://doeidoei.wordpress.com/2009/04/12/easy-way-to-concatenate-pdf-files-in-ubuntu-linux/

# NOTE: I have not tested this with any other papersize than letter!
# it does handle portrait/landscape without fuss however.

use strict;

my $cmdstr=&#39;gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf&#39;;
my $cmdargs=&#39;&#39;;

my @infiles = @ARGV;

if (scalar(@infiles)&amp;gt; 0){
  foreach my $file (@infiles) {
    $cmdargs .= &quot; $file&quot;;
  }

  exec $cmdstr . $cmdargs;
} else {
  print &quot;Syntax: $0 [input PDF file 1] ... [input PDF file n]\n&quot;;
}
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/4370676113866121290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2011/03/perl-script-to-concatenate-pdf-files.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/4370676113866121290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/4370676113866121290'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2011/03/perl-script-to-concatenate-pdf-files.html' title='Perl script to concatenate PDF files'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-2593903570556331049</id><published>2010-08-28T18:24:00.000-07:00</published><updated>2010-08-28T18:24:49.677-07:00</updated><title type='text'></title><content type='html'>I wrote a program today to organize photos. I have a great number of photos from over the years; they were mostly organized at some time in the past, but got copied wholesale to new hard drives when it was time to migrate, or got stowed in a tarball somewhere, etc... anyway this program i wrote (in perl) will, given a source directory and a target directory, iterate through the source directory finding files matching a given file type (in this version, jpg and cr2, but that can change), extract the creation date from the file&#39;s EXIF data, create a directory tree (as needed) under the target path as year/month/day and either move or copy the file into that directory. I&#39;m going to post the code now, but it&#39;s not totally mature and it&#39;s not yet commented at all. have a gander if you like. I intend to improve this in the future but no promises are made. also i guarantee it not to bug-free.&lt;br /&gt;
&lt;br /&gt;
I&#39;m releasing this under the GPL, v3 which can be found at http://www.gnu.org/licenses/gpl.html&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;#!/usr/bin/perl -w
#movephoto.pl -- call this version 0.01

use strict;
use File::List;
use File::Copy;
use File::Path;
use Image::ExifTool;
use File::Basename;

my $basedir = &quot;put path to source here&quot;;
my $target = &quot;put path to target here&quot;;
my $i = 0;

my $search = new File::List(&quot;$basedir&quot;);
my $fileArrRef = $search-&amp;gt;find(&quot;JPG\$|jpg\$|cr2\$|CR2\$&quot;);

sub pathbuild {
    my $newpath = $_[0];
    if (! -d $newpath) {
        if ( -e $newpath ) {
            File::Path::remove_tree($newpath);
        }
        File::Path::make_path($newpath);
    }
    return $!;
}

my $dtOrig;my $date;my $time;my $yr;my $mo;my $day;
foreach my $fullname (@$fileArrRef) {
    my $info = Image::ExifTool::ImageInfo($fullname);
    if ($$info{DateTimeOriginal}) {
        $dtOrig = $$info{DateTimeOriginal};
        ($date,$time) = split( / /, $dtOrig);
        ($yr,$mo,$day) = split(/:/, $date);
    } else {
        $dtOrig = &#39;&#39;;
    } 
    my ($name,$path,$ext) = File::Basename::fileparse($fullname,qr/jpg|cr2/i);
    my $dest = &quot;$target/undated&quot;;
    if ($dtOrig) {
        $dest = &quot;$target/$yr/$mo/$day&quot;
    }

    pathbuild($dest);
    my $destfile = &quot;$dest/$name$ext&quot;;
    $i = 0;
    while (-e $destfile){
        $destfile = &quot;$dest/$name$i.$ext&quot;;
        $i++;
    }
    if (link ($fullname,$destfile)){
        unlink ($fullname);
    } else {
        copy ($fullname,$destfile);
    }
}
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/2593903570556331049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2010/08/i-wrote-program-today-to-organize.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/2593903570556331049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/2593903570556331049'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2010/08/i-wrote-program-today-to-organize.html' title=''/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-8559911599241270307</id><published>2010-05-24T10:14:00.000-07:00</published><updated>2010-05-24T10:15:43.270-07:00</updated><title type='text'>Trivial? Not sure, but it&#39;s trivia in any case.</title><content type='html'>Announcing a Trivia Challenge, with a Prize:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There&#39;s something very interesting about the subject &lt;a href=&quot;http://www.flickr.com/photos/sjalex/4630564213/&quot;&gt;of the photo in this link&lt;/a&gt;.&amp;nbsp;See if you figure out what it is, and why it&#39;s like that.&lt;br /&gt;
&lt;br /&gt;
The &lt;b&gt;first ten people&lt;/b&gt; to flickr-mail or email me with&lt;br /&gt;
&lt;b&gt;[1]&lt;/b&gt; the interesting fact about the subject of the photo&lt;br /&gt;
&lt;b&gt;[2]&lt;/b&gt; the specifics of why that fact is the case&lt;br /&gt;
Will receive an 8x10 print (or similar size, exact dimension depends on photo dimension) of any of my work on flickr of your choosing (excluding low-res work and photos of people).&lt;br /&gt;
&lt;br /&gt;
This is open to everyone, and no information sources are off-limits (but do your own research please).&lt;br /&gt;
&lt;br /&gt;
Cheers,&lt;br /&gt;
&lt;br /&gt;
Stephen&lt;br /&gt;
&lt;br /&gt;
PS - tell your friends to check it out, because the photo&#39;s been viewed over 200 times but I&#39;ve only gotten one right answer!!</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/8559911599241270307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2010/05/trivial-not-sure-but-its-trivia-in-any.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/8559911599241270307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/8559911599241270307'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2010/05/trivial-not-sure-but-its-trivia-in-any.html' title='Trivial? Not sure, but it&#39;s trivia in any case.'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-7796319363448145608</id><published>2010-02-12T09:30:00.000-08:00</published><updated>2010-02-12T09:30:20.589-08:00</updated><title type='text'>&quot;Margaret was always a precocious child.&quot;</title><content type='html'>A short exchange between me and Maggie yesterday while driving home...&lt;br /&gt;
&lt;br /&gt;
Maggie: *coughs* &quot;I farted!&quot;&lt;br /&gt;
Me: &quot;Honey, that was a cough.&quot;&lt;br /&gt;
Maggie: &quot;I did both at once.&quot;&lt;br /&gt;
Me: &quot;Wow, you&#39;re multi-talented!&quot;&lt;br /&gt;
Maggie: &quot;Ta-da!!&quot;</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/7796319363448145608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2010/02/margaret-was-always-precocious-child.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/7796319363448145608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/7796319363448145608'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2010/02/margaret-was-always-precocious-child.html' title='&quot;Margaret was always a precocious child.&quot;'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-8046739588916243093</id><published>2010-02-12T09:25:00.000-08:00</published><updated>2010-02-12T09:25:57.525-08:00</updated><title type='text'>change of pace</title><content type='html'>Since I&#39;m back in school now and the weather has been terrible, I really haven&#39;t been able to update this blog with anything relevant. Consequently, I think I will proceed to update with things that are irrelevant.</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/8046739588916243093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2010/02/change-of-pace.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/8046739588916243093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/8046739588916243093'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2010/02/change-of-pace.html' title='change of pace'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-1457022472239071701</id><published>2010-01-26T07:35:00.000-08:00</published><updated>2010-01-26T07:35:48.535-08:00</updated><title type='text'>We have completed repair of the reported street light. Thank you again for reporting street light outages.</title><content type='html'>&lt;span style=&quot;font-family: inherit;&quot;&gt;I&#39;m starting to love getting those emails. The ones I don&#39;t like as much say &quot;CenterPoint Energy has investigated your outage request. The work necessary to repair the street light has been assigned to a crew and should be complete in approximately 2-3 weeks. Thank you for reporting street light outages.&quot; However, even these seem generally to have been finished well under the time mentioned; I&#39;ll have to go back and check out these specific ones.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;I need to update the map to include these new fixes; I will when I get a few spare moments...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;Unfortunately it&#39;s crunch time at work for Nicole and I have just started a new semester. The new challenge will be keeping up this effort when all my time seems to be allocated in advance.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/1457022472239071701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2010/01/we-have-completed-repair-of-reported.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/1457022472239071701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/1457022472239071701'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2010/01/we-have-completed-repair-of-reported.html' title='We have completed repair of the reported street light. Thank you again for reporting street light outages.'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-5514991314753843073</id><published>2010-01-17T20:04:00.000-08:00</published><updated>2010-01-17T20:04:27.639-08:00</updated><title type='text'>Lots of walking</title><content type='html'>Maggie was hell on wheels today. None of the usual tricks to keep her behavior in line were working at all, so we spent a lot of time walking outside -- it&#39;s usually the only thing that&#39;ll work when all else fails to keep her attention. In today&#39;s case, we went for two extended walks, mainly to keep her from wrecking the house and the sanity of all its residents (Molly had a major meltdown today as well, but that&#39;s a story for another posting).&lt;br /&gt;
&lt;br /&gt;
Since we were out walking on a beautiful sunny day anyway, we passed some of the time by looking for street lights on during the day. We covered probably 2.5 miles all told, which for a 5-year-old unused to much physical activity is rather a lot. I think it helped that we did it in two parts; she never would have been able to do it all at once: she was complaining about wanting to see mama, how her feet were bothering her, how she was sweaty, how her leg itched -- all before we were two thirds done with the first loop.&lt;br /&gt;
&lt;br /&gt;
The second loop was actually quite a bit longer than the first, but I employed the additional strategy of bringing along Nicole (mom), Molly (little sister), and a pair of binoculars. OK, to be fair, Molly&#39;s presence is pretty irrelevant to Maggie (or perhaps I should say she functions as an obstacle for Maggie most of the time). Nicole, though, provided a foil -- when she&#39;s out with us, Maggie has less reason to complain about wanting to go home. Her feet might still hurt, but any complaints about discomfort are much more likely to be genuine than when mom&#39;s waiting at home. Predictably, therefore, Maggie happily walked most of a mile before complaining at all. As to the binoculars, their benefit was twofold. First, the novelty value of being able to look at stuff through them can&#39;t be understated, and the longer one is out of the house, the more one can use the binoculars. Second, they allowed me to look down streets for lit streetlights without having actually to go down the streets unnecessarily. There&#39;s nothing like a fruitless expedition to lose the interest of a five-year-old, and those binoculars allowed me to determine in advance whether we needed to go down streets or not to get numbers from poles, and I&#39;m satisfied they prevented their fair share of frustration on Maggie&#39;s part.&lt;br /&gt;
&lt;br /&gt;
We&#39;ve gotten to the point that we&#39;ve covered a significant portion of the neighborhood looking for lights that are dim and out at night, and with today&#39;s effort, on during the day. I spent some time after today&#39;s walk marking on a Google map the territory we&#39;d covered. I&#39;m sharing the link; &lt;br /&gt;
&lt;a href=&quot;http://maps.google.com/maps/ms?ie=UTF8&amp;amp;hl=en&amp;amp;msa=0&amp;amp;msid=112034696879408468918.00047d62e338c1dd45bb0&amp;amp;z=15&quot;&gt;have a look&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/5514991314753843073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2010/01/lots-of-walking.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/5514991314753843073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/5514991314753843073'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2010/01/lots-of-walking.html' title='Lots of walking'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-1805983787136382269</id><published>2010-01-09T19:47:00.001-08:00</published><updated>2010-01-09T19:47:54.616-08:00</updated><title type='text'>not dead</title><content type='html'>This is just an update to say that we&#39;re not dead, it&#39;s just been too busy and too darned cold to do much on the lights front. Hopefully I&#39;ll have something more interesting to say before too long.</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/1805983787136382269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2010/01/not-dead.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/1805983787136382269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/1805983787136382269'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2010/01/not-dead.html' title='not dead'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-4338733916121889720</id><published>2009-12-29T20:19:00.000-08:00</published><updated>2009-12-29T20:19:37.589-08:00</updated><title type='text'>By today, all five lights had been fixed.</title><content type='html'>Yesterday, Maggie and I went out to &quot;scout&quot; another street on which we&#39;ll be checking the lights. Since we went before dinner and before sunset, we couldn&#39;t really check for unlit lamps at the time, but I noticed that there were one or two lights that were on in daylight. I recalled seeing on the CentrePoint web site that this is a condition we can report to them. I am making a mental note of this for the future; once we knock out the night-dark lamps, we can go back and log the day-lit lamps. I might save that for the summer when the sun is up past Maggie&#39;s bedtime.&lt;br /&gt;
&lt;br /&gt;
As to the street lights we&#39;d already reported to CentrePoint, it&#39;d been a few days, but tonight we finally got a chance to go back out and have another look at them. All five lights we reported dim/out have been fixed! Maggie was very gratified to see the results of our action. That pleased me because by today her enthusiasm for our little project had already started to flag a little bit; not much keeps her attention for long, so I wasn&#39;t sure she was going to be able to keep her head in the game.&lt;br /&gt;
&lt;br /&gt;
I starting to get a feel for her attention span in the shorter term, though - it looks like we can go about 6 blocks before she loses interest and wants to go home. I&#39;ll have to start planning around that; Once we get the lights near our house repaired, we&#39;ll have to drive out and park to get streets further away (hopefully her endurance will improve, though, and driving will come later than soon).&lt;br /&gt;
&lt;br /&gt;
Now that we have covered a couple of streets, I figure one of my next steps will need to be the creation of a map of our neighborhood marked up with lamppost locations so we can cross them off as we go. I&#39;m not sure how to proceed on that: I really like &quot;real&quot; maps, and there&#39;s no shortage of maps out there that we could download and print out, but I also think it might be worthwhile to work with Maggie and build the map ourselves on a big piece of paper (probably using google maps, the county appraisal district maps, or even CentrePoint&#39;s maps for reference). I don&#39;t think Maggie has a sense of how maps work yet, but I think she would be eager to learn.&lt;br /&gt;
&lt;br /&gt;
There are a couple of other valuable reasons to build the map. It could help to pull the project together for her (that is, let her get her head around it) and give her a tangible connection to the lights in our neighborhood. it should give me a (desperately needed) tool to organize the project. Hopefully it&#39;ll give Maggie some exposure to the kinds of tools and methods one can use to do this kind of work: she&#39;s always been disinclined to even start any project that seems &quot;too big&quot; (she gets this from me, I suppose; for me, it&#39;s a function of ADD, which has a hereditary component...). With the map,&amp;nbsp;I hope to help Maggie learn to approach big projects by breaking them down into smaller units. The best way to eat an elephant is one bite at a time, right? In this case, the street light project is the elephant, and I hope that making our own map will be the knife and fork.&lt;br /&gt;
&lt;br /&gt;
In any case, It looks like we are on track to get the job done. I&#39;m excited!</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/4338733916121889720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2009/12/by-today-all-five-lights-had-been-fixed.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/4338733916121889720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/4338733916121889720'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2009/12/by-today-all-five-lights-had-been-fixed.html' title='By today, all five lights had been fixed.'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-464556181286201046</id><published>2009-12-24T22:50:00.000-08:00</published><updated>2009-12-24T22:53:11.355-08:00</updated><title type='text'>email from CenterPoint came in</title><content type='html'>I got the following email from CenterPoint:&lt;br /&gt;&lt;br /&gt;Street Light Outage Repair Status:&lt;br /&gt;CenterPoint Energy has investigated your outage request. The work necessary to repair the street light has been assigned to a crew and should be complete in approximately 2-3 weeks. Thank you for reporting street light outages.&lt;br /&gt;Status Date: 12/18/2009&lt;br /&gt;Requestor Details:&lt;br /&gt;Name: Stephen Alexander&lt;br /&gt;Street Light Details:&lt;br /&gt;Light Number: 358994&lt;br /&gt;Location Description: (south) pilgrims bend dr&lt;br /&gt;Address: &lt;br /&gt;, TX 77546&lt;br /&gt;Tracking Number: 8090000248806&lt;br /&gt;Received Date: 12/21/2009&lt;br /&gt;Received Time: 20:39&lt;br /&gt;&lt;br /&gt;----&lt;br /&gt;&lt;br /&gt;This is just one of the five I reported. I will try to take Maggie out after dark tomorrow to see if they have acted on any of the others, and hopefully to check out the lighting situation on some of the other streets in our neighborhood.</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/464556181286201046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2009/12/email-from-centerpoint-came-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/464556181286201046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/464556181286201046'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2009/12/email-from-centerpoint-came-in.html' title='email from CenterPoint came in'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8044774562230802933.post-7397155696896123474</id><published>2009-12-21T21:20:00.000-08:00</published><updated>2009-12-21T22:18:18.539-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="civic responsibility"/><category scheme="http://www.blogger.com/atom/ns#" term="data systems"/><category scheme="http://www.blogger.com/atom/ns#" term="neighborhood exploration"/><category scheme="http://www.blogger.com/atom/ns#" term="parental involvement"/><category scheme="http://www.blogger.com/atom/ns#" term="parenting"/><category scheme="http://www.blogger.com/atom/ns#" term="physical activity"/><title type='text'>Connecting physical activity, neighborhood exploration, data systems, civic responsibility and parental involvement in the mind of a child</title><content type='html'>My daughter Maggie just turned five years old. She&#39;s intellectually curious, smart, a quick study, and very easily bored. It&#39;s a deadly combination: as soon as she grasps the very basics of an answer to a question she might have, she presumes mastery and moves on. Frankly, she gets that style from me: I&#39;ve only learned in late years, and always the hard way, that practice is necessary for mastery. Maggie has no real concept of systems and how things work on a bigger scale than what she can see in front of her, but I think that she might take to it with a vengeance, given guidance.&lt;br /&gt;&lt;br /&gt;A couple of months ago, Maggie&#39;s preschool class covered the concept of citizenship, and they had discussions and activities to help the kids understand the idea. She brought her understanding home and was enthusiastic about it for a time.&lt;br /&gt;&lt;br /&gt;I&#39;d been very busy for the last several months, but this fall, I tried to spend more one-on-one time with Maggie than I had been spending. Being back in school cramped my style, so I didn&#39;t get to nearly as much as I&#39;d wanted.&lt;br /&gt;&lt;br /&gt;For a while now, Nicole and I have been wanting to get Maggie out from in front of the TV more; during the past summer Nicole took her out on bike rides around the neighborhood, which she enjoyed, and I began to think about ways I could hang out with Maggie while being physically active.&lt;br /&gt;&lt;br /&gt;For a long time, I&#39;ve been thinking about street lights. On our street, there are 5 street lights, and two of them are dim. They have been for years. For years, I have been thinking about doing something about it. I&#39;ve known what to do, too, ever since my neighbors reported a dead light by their house to Centerpoint (local energy delivery company)... but other things always seemed to take priority over this little task.&lt;br /&gt;&lt;br /&gt;About a month ago, everything suddenly snapped together in my head. I realized that I could take Maggie for walks around our neighborhood and identify the lights needing repair.&lt;br /&gt;&lt;br /&gt;Tonight, I took Maggie out for our first dead-light-identification walk. We covered our street and one street over. On just the two streets (about a half-mile or so), we identified five lamps in need of repair and reported them to Centerpoint on its web site. The repair turnaround is quoted as being as quick as three days.&lt;br /&gt;&lt;br /&gt;So far, Maggie seems interested in the process. With any luck, she&#39;ll maintain that interest long enough to accomplish a number of things. I&#39;m personally glad for the one-on-one time with her, but more than that I am hoping she will gain several strengths: physical strength and endurance, as we will need to range farther from our home to find more dead lamps; appreciation for everything that&#39;s in our neighborhood; a basic understanding of the systems needed to keep track of and service assets (we observed already tonight that the poles are numbered sequentially along the streets and I showed her their corresponding locations on Centerpoint&#39;s GIS asset map - but as we were near the computer we were also near the television, and she tuned out... baby steps); an appreciation for the fact that individuals can take direct action to improve community conditions; and finally, hopefully, that being out on a walk with dad can be much better than sitting in front of the tube.</content><link rel='replies' type='application/atom+xml' href='http://technogrumble.blogspot.com/feeds/7397155696896123474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technogrumble.blogspot.com/2009/12/connecting-physical-activity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/7397155696896123474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8044774562230802933/posts/default/7397155696896123474'/><link rel='alternate' type='text/html' href='http://technogrumble.blogspot.com/2009/12/connecting-physical-activity.html' title='Connecting physical activity, neighborhood exploration, data systems, civic responsibility and parental involvement in the mind of a child'/><author><name>Stephen Alexander</name><uri>http://www.blogger.com/profile/14607415249171243854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>