<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Ellipsis: Category Web Development</title>
    <link>http://typo.pburkholder.com/articles/category/web-development</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>...</description>
    <item>
      <title>Apache and &amp;quot;shared memory&amp;quot; issues on Linux</title>
      <description>&lt;p&gt;This morning I was having trouble getting Apache (2.0.X) to restart.  I was getting these error messages:&lt;/p&gt;


&lt;code&gt;&lt;pre&gt;
[Thu Apr 10 08:32:49 2008] [crit] (17)File exists: unable to create scoreboard "/var/private/logs/apache_runtime_status" (name-based shared memory failure)
&lt;/pre&gt;&lt;/code&gt;

	&lt;p&gt;and I kept deleting the offending file, and making sure that permissions all along the path were correct.  No dice.&lt;/p&gt;


	&lt;p&gt;So I restarted Apache again running &lt;code&gt;strace&lt;/code&gt;:&lt;/p&gt;


&lt;code&gt;&lt;pre&gt;
strace /usr/sbin/httpd2-prefork -X -Dprivate '-CPidFile /var/run/apache2.private.pid' -f /etc/apache2/httpd.conf
&lt;/pre&gt;&lt;/code&gt;

	&lt;p&gt;and saw output like this:&lt;/p&gt;


&lt;code&gt;&lt;pre&gt;
unlink("/var/private/logs/apache_runtime_status") = -1 ENOENT (No such file or directory)
open("/var/private/logs/apache_runtime_status", O_WRONLY|O_CREAT|O_EXCL, 0666) = 9
stat("/var/private/logs/apache_runtime_status", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
shmget(16908303, 40824, IPC_CREAT|IPC_EXCL|0600) = -1 EEXIST (File exists)
write(2, "[Thu Apr 10 08:18:46 2008] [crit"..., 168) = 168
&lt;/pre&gt;&lt;/code&gt;

	&lt;h2&gt;Red Herring&lt;/h2&gt;


	&lt;p&gt;Turns out that worrying about the filesystem was a distraction.  The real issue is that the previous Apache had left behind shared memory segments that it couldn&amp;#8217;t access anymore.  Now I won&amp;#8217;t pretend that I understand the ins and outs of shared memory on Linux, but a bit of Googling led me, fortunately to &lt;a href="http://www.siphos.be/node/29"&gt;Sven Vermeulen&amp;#8217;s blog&lt;/a&gt;, where he shared a similar experience on Solaris.  I would&amp;#8217;ve left nice comments on his blog, but as he doesn&amp;#8217;t take comments, I&amp;#8217;ll give a shout out to him here.&lt;/p&gt;


	&lt;p&gt;Anyhow, the &lt;strong&gt;ipcs&lt;/strong&gt; and &lt;strong&gt;ipcrm&lt;/strong&gt; commands come to the rescue:&lt;/p&gt;


&lt;code&gt;&lt;pre&gt;
# ipcs -a

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x0102000f 99942402   root      600        40824      0

------ Semaphore Arrays --------
key        semid      owner      perms      nsems

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages
0x00001f58 0          root       600        0            0
&lt;/pre&gt;&lt;/code&gt;

	&lt;p&gt;Ah-ha&amp;#8212;there&amp;#8217;s &lt;strong&gt;shmid&lt;/strong&gt; at 99942402.  Let&amp;#8217;s rm that:&lt;/p&gt;


&lt;code&gt;&lt;pre&gt;
# ipcrm -m 99942402
# ipcs -a

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status

------ Semaphore Arrays --------
key        semid      owner      perms      nsems

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages
0x00001f58 0          root       600        0            0
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;And apache started right up.  Yea.&lt;/p&gt;


	&lt;p&gt;P.S. One find out more about a shared memory segment with something like: &lt;code&gt;ipcs -m -i 99942402&lt;/code&gt;, which will report:&lt;/p&gt;


&lt;code&gt;&lt;pre&gt;
Shared memory Segment shmid=99942402
uid=0   gid=0   cuid=0  cgid=0
mode=0600       access_perms=0600
bytes=40824     lpid=6987       cpid=6987       nattch=0
att_time=Thu Apr 10 08:20:48 2008  
det_time=Thu Apr 10 08:21:55 2008  
change_time=Thu Apr 10 08:20:48 2008  

&lt;/pre&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 10 Apr 2008 06:07:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:bdb73e1d-bb02-4e94-a6b5-5e2a6de646d6</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2008/04/10/apache-and-shared-memory-issues-on-linux</link>
      <category>System Administration</category>
      <category>Web Development</category>
      <category>apache</category>
    </item>
    <item>
      <title>On my own again</title>
      <description>&lt;p&gt;As of today, I&amp;#8217;ve restructure my work arrangment to 66% working from home for &lt;a href="http://www.ucar.edu"&gt;&lt;span class="caps"&gt;UCAR&lt;/span&gt;/NCAR&lt;/a&gt; , 33% working for &lt;a href="http://www.echoditto.com"&gt;EchoDitto&lt;/a&gt;.  One thing I&amp;#8217;ve found in the past is that my productivity can lag when I&amp;#8217;m not in a traditional work environment, and working from home has led to weight gain and listlessness.&lt;/p&gt;


	&lt;p&gt;If I were insane, I&amp;#8217;d do things the same way I had in the past, but I hope I&amp;#8217;m not. So here&amp;#8217;s how day one has gone:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Got a good swim and bike in before work&lt;/li&gt;
		&lt;li&gt;Set up a well lit office with lots of natural light and reasonable ergnomics (actualy, my chai sucks, my mouse is too low, and my second monitor is too old).&lt;/li&gt;
		&lt;li&gt;Set up a sound system&lt;/li&gt;
		&lt;li&gt;Warned my boys (at home with a nanny these days) of the dire consequences of intruding into my space&lt;/li&gt;
		&lt;li&gt;Kept tabs of my work in real-time with the &lt;a href="http://getharvest.com"&gt;Harvest time-tracking app&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Wrote a short work week description to my bosses&lt;/li&gt;
		&lt;li&gt;Kept my breaks short and focussed (morning coffee, lunch, afternoon snack)

	&lt;p&gt;Still, I spent too much time following web trails, and not enough writing, writing, writing.  So, since goals publicly stated are more likely to be realized than those that are not, I&amp;#8217;ll use my blog for both some technical updates and productivity ones also.  Now I&amp;#8217;d write more but my nanny has to leave.&lt;/p&gt;&lt;/li&gt;
	&lt;/ul&gt;</description>
      <pubDate>Mon, 06 Aug 2007 13:38:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:fcfe2a76-f089-483e-8855-e9f294cb9903</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2007/08/06/on-my-own-again</link>
      <category>Web Development</category>
    </item>
    <item>
      <title>Textile2Twiki: Notes on Textile to Twiki Conversion</title>
      <description>&lt;p&gt;Today I wrote a longish paper in Textile before I recalled that I was going to have to post this to a Twiki.  Dang.  I can&amp;#8217;t stand &lt;a href="http://twiki.org"&gt;Twiki&lt;/a&gt; syntax.  Anyhow, I was able to use the following &amp;#8220;Find &amp;#38; Replace&amp;#8221; commands in Textmate to convert Textile to Twiki syntax.&lt;/p&gt;


	&lt;h2&gt;Links:&lt;/h2&gt;


	&lt;table&gt;
		&lt;tr&gt;
			&lt;td&gt;Find (regular expression):&lt;/td&gt;
			&lt;td&gt; &lt;code&gt;"([^"]*)":([^\s]*)&lt;/code&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Replace:&lt;/td&gt;
			&lt;td&gt; &lt;code&gt;[[$2 $1]]&lt;/code&gt;&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;




	&lt;h2&gt;Headings&lt;/h2&gt;


	&lt;table&gt;
		&lt;tr&gt;
			&lt;td&gt;Find (regular expression):&lt;/td&gt;
			&lt;td&gt; &lt;code&gt;^h1.&lt;/code&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Replace:&lt;/td&gt;
			&lt;td&gt; &lt;code&gt;---+&lt;/code&gt;&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;




	&lt;table&gt;
		&lt;tr&gt;
			&lt;td&gt;Find (regular expression):&lt;/td&gt;
			&lt;td&gt; &lt;code&gt;^h2.&lt;/code&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Replace:&lt;/td&gt;
			&lt;td&gt; &lt;code&gt;---++&lt;/code&gt;&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;




	&lt;h2&gt;Lists&lt;/h2&gt;


	&lt;table&gt;
		&lt;tr&gt;
			&lt;td&gt;Find (regular expression):&lt;/td&gt;
			&lt;td&gt; &lt;code&gt;^\*\*&lt;/code&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Replace:&lt;/td&gt;
			&lt;td&gt; &lt;code&gt;      *&lt;/code&gt;  (six spaces, then *)&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;




	&lt;table&gt;
		&lt;tr&gt;
			&lt;td&gt;Find (regular expression):&lt;/td&gt;
			&lt;td&gt; &lt;code&gt;^\*&lt;/code&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Replace:&lt;/td&gt;
			&lt;td&gt; &lt;code&gt;   *&lt;/code&gt;  (three spaces, then *)&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;




	&lt;p&gt;These replacements took care of 95% of the conversion, changing the blockquotes was easier done by hand than by trying to cook up a regexp for the two cases, as was putting in the &lt;code&gt;&amp;lt;nop&amp;gt;&lt;/code&gt;  by hand so OpenPGP wasn&amp;#8217;t interpreted as a page link.  Hurrah for &lt;a href="http://www.macromates.com"&gt;Textmate&lt;/a&gt;!&lt;/p&gt;</description>
      <pubDate>Fri, 05 Jan 2007 12:57:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:d36ea3af-63d4-4355-b266-0d243a30db90</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2007/01/05/textile2twiki-notes-on-textile-to-twiki-conversion</link>
      <category>Web Development</category>
      <category>twiki</category>
      <category>textile</category>
      <category>textmate</category>
    </item>
    <item>
      <title>Debugging Internet Explorer SSL issues with VmWare, IEAutomation and Wireshark</title>
      <description>&lt;p&gt;This week I happened upon a client who was eager  to solve a persistent problem with Microsoft&amp;#8217;s Internet Explorer bombing when trying to &lt;span class="caps"&gt;POST&lt;/span&gt; content over &lt;span class="caps"&gt;HTTPS&lt;/span&gt; to a custom web application.  The client sent me the thread from the trouble tracking system, and it was clear that they were already aware of the &lt;a href="http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#msie"&gt;magic Apache mod_ssl incantation&lt;/a&gt; to address some of &lt;span class="caps"&gt;MSIE&lt;/span&gt;&amp;#8217;s non-compliant behavior.  Since they were already barking up that tree, I decided that they needed a better test bed to help confirm whether the problem was truly being addressed by whatever remedies they were hauling out.  To put it another way, we couldn&amp;#8217;t really apply any scientific method unless we could have a control case and an experimental case.&lt;/p&gt;


	&lt;p&gt;Since the problem was &lt;span class="caps"&gt;MSIE&lt;/span&gt; specific, I first needed a way to drive &lt;span class="caps"&gt;MSIE&lt;/span&gt; through some test cases and evaluate the results.&lt;/p&gt;


	&lt;h1&gt;Getting a flawed version of &lt;span class="caps"&gt;MSIE&lt;/span&gt;&lt;/h1&gt;


	&lt;p&gt;First, I had to get a sufficiently old version of &lt;span class="caps"&gt;MSIE&lt;/span&gt;, since late versions of &lt;span class="caps"&gt;IE6&lt;/span&gt; and &lt;span class="caps"&gt;IE7&lt;/span&gt; are all okay.  To do this all safely and reproducibly, I&amp;#8217;m running Windows under an instance of VmWare Server on a Linux host.  To get things set up, I took care of the following:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Install Windows 2000 Professional from CD (apply no security patches)&lt;/li&gt;
		&lt;li&gt;Install Windows 2000 &lt;span class="caps"&gt;SP2&lt;/span&gt; &lt;a href="http://www.microsoft.com/windows2000/downloads/servicepacks/sp2/sp2en.mspx"&gt;http://www.microsoft.com/windows2000/downloads/servicepacks/sp2/sp2en.mspx&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Install Microsoft Internet Explorer &lt;span class="caps"&gt;SP1&lt;/span&gt; &lt;a href="http://www.microsoft.com/windows/ie/ie6/downloads/critical/ie6sp1/default.mspx"&gt;http://www.microsoft.com/windows/ie/ie6/downloads/critical/ie6sp1/default.mspx&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;(if you have WinXP CD, start there, since &lt;span class="caps"&gt;IE 6&lt;/span&gt; first came out with Win XP)&lt;/p&gt;


	&lt;p&gt;That will give you &lt;span class="caps"&gt;MSIE 6&lt;/span&gt;.00.2800.1106, which failed miserably when I ran it through it&amp;#8217;s paces to &lt;span class="caps"&gt;POST&lt;/span&gt; content over &lt;span class="caps"&gt;HTTPS&lt;/span&gt;.&lt;/p&gt;


	&lt;h1&gt;Automating &lt;span class="caps"&gt;MSIE&lt;/span&gt; with Perl Win32::IEAutomation&lt;/h1&gt;


	&lt;p&gt;Next, I needed to automate testing with &lt;span class="caps"&gt;MSIE&lt;/span&gt;, and to the rescue comes Prashant Shewale&amp;#8217;s Perl module &lt;a href="http://search.cpan.org/~prashant/Win32-IEAutomation-0.5/"&gt;Win32::IEAutomation&lt;/a&gt;.   To run the module, I did the following on my Win2k System&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Download and install ActiveState&amp;#8217;s Active Perl 5.8.X:  &lt;a href="http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl"&gt;http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl&lt;/a&gt;  (Providing contact details are optional)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Download and install Microsoft&amp;#8217;s nmake.exe.  See their &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q132084"&gt;Microsoft Knowledge Base, article 132084&lt;/a&gt;, and follow link to nmake15.exe.  Then run the downloaded file,  and move nmake.exe and nmake.err to c:\perl\bin.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Run &amp;#8216;cpan -i Win32::IEAutomation&amp;#8217; from the command line&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;At this point, I also installed CygWin and some decent editors to so some sane development and testing on the system, but that&amp;#8217;s beyond the scope of this article.&lt;/p&gt;


	&lt;p&gt;Last, I wrote a variant on the following script to drive IE:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;

    use Win32::IEAutomation;

    # Set up variables
    $server_base="https://www.example.com";
    $wait=$ARGV[0];
    $now=localtime(time);
    $upload="C:\Documents and Settings\Peter Burkholder\My Documents\TextDoc.txt";
    $user="username\@email.com";
    $pass="password";
    $title="PeterB Test for $wait sec at $now";

    # Create new instance of Internet Explorer
    my $ie = Win32::IEAutomation-&amp;gt;new( visible =&amp;gt; 1, maximize =&amp;gt; 1);

    # Goto Login page and Login
    $ie-&amp;gt;gotoURL('https://example.com');

    $ie-&amp;gt;getTextBox('name:', "username")-&amp;gt;SetValue($user);

    $ie-&amp;gt;getTextBox('name:', "password")-&amp;gt;SetValue($pass);

    $ie-&amp;gt;getButton('caption:', "Login")-&amp;gt;Click;

    # Navigate to the add content page
    $ie-&amp;gt;gotoURL('https://example.com/home/content.php');

    $ie-&amp;gt;getButton('caption:', "Create new")-&amp;gt;Click;

    ## Fill in Content Page
    $ie-&amp;gt;getTextBox('name:', "name")-&amp;gt;SetValue($title);
    $ie-&amp;gt;getSelectList('name:', "company_id")-&amp;gt;SelectItem("ACA");

    # IE fails on 6.00.2800.1106 whether or not a file is uploaded
    # Replace the
    # $ie-&amp;gt;getTextBox('name:', "filename")-&amp;gt;SetValue($upload);
    $ie-&amp;gt;getTextArea('name:', "note")-&amp;gt;SetValue("Sample comment on the upload");

    # Now we sleep to see at least 30 seconds to get the Post error, then click the "Save" button
    sleep($wait);
    $ie-&amp;gt;getButton('caption:', "Save")-&amp;gt;Click;

    # Summarize the output and quit IE so we always start from a known state
    $output=substr($ie-&amp;gt;PageText(),0,40);
    print $output;

    $ie-&amp;gt;closeIE();
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;The code starts up IE and walks it through the first few panes of the application until the point where the error has been known to occur.  It&amp;#8217;s evoked as, say:
    perl ieautomate.pl 5
where the last argument is the number of seconds to wait before the ultimate submit.  When run with a short wait, like 5 seconds, the content is successfully posted.  With a wait of 30 or 40 seconds, the submit fails.&lt;/p&gt;


	&lt;p&gt;Running this is really cool, like some poltergeist has taken over the machine.  I can&amp;#8217;t wait to use Win32::IEAutomation to check airline ticket prices, etc.&lt;/p&gt;


	&lt;h1&gt;Diagnosing the &lt;span class="caps"&gt;SSL&lt;/span&gt; problems&lt;/h1&gt;


	&lt;p&gt;This breaks down into two steps,  a) getting VmWare host-only  networking set up to route through the host so we can then b) run sslsniff on the traffic and look inside the packets.&lt;/p&gt;


	&lt;h2&gt;A) Getting VmWare routing set up&lt;/h2&gt;


	&lt;p&gt;Thanks to the folks at &lt;a href="http://www.cyberciti.biz/tips/setup-vmware-host-as-router-for-solaris-linux-freebsd-and-windows-xp-guest-os.html"&gt;Cyberciti.biz&lt;/a&gt; for getting me on the right track. Their post on the matter is largely correct except that:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;You need to run: &lt;code&gt;echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;/code&gt; and add that config to /etc/sysctl.conf&lt;/li&gt;
	&lt;/ul&gt;


* You would probably want to edit &lt;code&gt;/etc/vmware/vmnet1/dhcp/dhcpd.conf&lt;/code&gt; to include:
&lt;pre&gt;&lt;code&gt;
    option routers 192.128.2.1;
    option nameserver (_real ip of nameserver_)

&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;&lt;strong&gt;It turns out this step is totally unnecessary.&lt;/strong&gt;  I&amp;#8217;d intended to use the routing from the host&amp;#8217;s eth0 interface to the guest&amp;#8217;s vmnet1 subnet to run Mike Benham&amp;#8217;s &lt;a href="http://www.thoughtcrime.org/ie.html"&gt;sslsniff&lt;/a&gt;.  While SSLSniff works great in such a setup, if sufficently munges up the &lt;span class="caps"&gt;SSL&lt;/span&gt; traffic that it doesn&amp;#8217;t aid in addressing the &lt;span class="caps"&gt;MSIE&lt;/span&gt; problem, in fact, it pretty well makes it go away.&lt;/p&gt;


	&lt;h2&gt;B) Analyzing traffic with Ethereal/Wireshark&lt;/h2&gt;


	&lt;p&gt;Ack,  I&amp;#8217;m getting tired so sorry this last part is so lame.  What it comes down to is that three test cases were sufficient to reveal the crux of the problem.&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;Firefox &lt;span class="caps"&gt;SSL POST&lt;/span&gt;&amp;#8212;when using Firefox and taking about 30 seconds to fill out the form that gets POSTed, one can see &amp;#8216;Encrypted Alerts&amp;#8217; coming down from the server about every ten seconds.  The alerts are probably change_cipher_spec or more likely a close_notify.  When the &lt;span class="caps"&gt;POST&lt;/span&gt; is sent, Firefox starts with an &lt;span class="caps"&gt;SSL&lt;/span&gt; ClientHello and sets up a whole new &lt;span class="caps"&gt;SSL&lt;/span&gt; session&lt;/li&gt;
	&lt;/ol&gt;


	&lt;ol&gt;
	&lt;li&gt;Automated &lt;span class="caps"&gt;MSIE&lt;/span&gt; post with no delays&amp;#8212;when POSTing the form from the robot with no waits, everything works just great.&lt;/li&gt;
	&lt;/ol&gt;


	&lt;ol&gt;
	&lt;li&gt;Automated &lt;span class="caps"&gt;MSIE&lt;/span&gt; post with a 30s delay&amp;#8212;while the robot is waiting to &lt;span class="caps"&gt;POST&lt;/span&gt; the form, the same Encrypted Alerts come down from the server, and the client responds with ACKs.  But when the form is POSTed the client is trying to re-use the same &lt;span class="caps"&gt;SSL&lt;/span&gt; connection.  The server simply replys with &lt;span class="caps"&gt;ACKS&lt;/span&gt;, and &lt;span class="caps"&gt;MSIE&lt;/span&gt; barfs&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;In case number 3 it&amp;#8217;s pretty clear that the Magic Apache mod_SSL Incantation is not working, as close_notify messages are still getting sent from  the server.&lt;/p&gt;


	&lt;p&gt;Over and out.&lt;/p&gt;</description>
      <pubDate>Fri, 08 Dec 2006 21:38:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:3a70d901-9636-424e-b6e7-91986364bf9e</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2006/12/08/debugging-internet-explorer-ssl-issues</link>
      <category>Web Development</category>
      <category>Security</category>
      <category>msie</category>
      <category>internet</category>
      <category>explorer</category>
      <category>ssl</category>
      <category>ethereal</category>
      <category>vmware</category>
      <category>host</category>
      <category>only</category>
      <category>routing</category>
      <trackback:ping>http://typo.pburkholder.com/articles/trackback/3905</trackback:ping>
    </item>
    <item>
      <title>Wikis, Blogs, and CMS's: Beyond the Classroom</title>
      <description>&lt;p&gt;Today I interviewed for a position with &lt;a href="http://www.oit.umd.edu"&gt;University of Maryland Office of Information Technology&lt;/a&gt; and the &lt;a href="http://www.chem.umd.edu"&gt;University&amp;#8217;s College of Chemical and Life Sciences&lt;/a&gt;.  As part of the interview process I was able to do a short presentation, and I chose to provide an overview of the web content management systems (wikis, blogs, cms&amp;#8217;s and backpack) that I&amp;#8217;ve worked with, and the role I think they can play in a univeristy environment beyond the strictly instructional.&lt;/p&gt;


	&lt;p&gt;Some of the resources I referenced in the talk are:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.wikipedia.org"&gt;Wikipedia&lt;/a&gt; (of course)&lt;/li&gt;
		&lt;li&gt;the wikis hosted at &lt;a href="http://swiki.dlese.org"&gt;swiki.dlese.org&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.realclimate.org"&gt;RealClimate.org&lt;/a&gt;, an excellent blog on climate science&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://itc.smm.org/buzz"&gt;Buzz&lt;/a&gt;, the science blog and the Science Museum of Minnesota&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://bzst.blogspot.com"&gt;&lt;span class="caps"&gt;BZST&lt;/span&gt;&lt;/a&gt;, a blog by UMd Professor Galit Shmueli&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://plone.org"&gt;Plone&lt;/a&gt;, the Zope-based &lt;span class="caps"&gt;CMS&lt;/span&gt;&lt;/li&gt;
		&lt;li&gt;the Plone sites hosted at &lt;a href="http://www.dlese.org/cms/"&gt;www.dlese.org&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;the Joomla sites at the College of Chemistry and Life Sciences, the &lt;a href="http://www.chem.umd.edu/gso"&gt;Graduate Students&amp;#8217; Organization&lt;/a&gt; and the &lt;a href="http://www.chem.umd.edu/groups/doyle"&gt;Doyle Research Group&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.37signals.com"&gt;37Signals&lt;/a&gt;, the web app development group responsible for &lt;a href="http://www.rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt; and &lt;a href="http://gettingreal.37signals.com"&gt;Getting Real&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://backpackit.com"&gt;Backpack&lt;/a&gt; the place to put all your stuff, also from &amp;#8220;37Signals&amp;#8221;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Lastly, one can download &lt;a href="/files/UMd_Presentation.pdf"&gt;the &lt;span class="caps"&gt;PDF&lt;/span&gt; version of my presentation&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 26 Oct 2006 13:51:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:e0924269-cfe1-40a3-a49f-f4e04baf2734</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2006/10/26/wiki-blog-and-cmss-beyond-the-classroom</link>
      <category>System Administration</category>
      <category>Web Development</category>
      <category>Ruby and Rails</category>
      <enclosure type="application/pdf" length="2494837" url="http://typo.pburkholder.com/files/UMd_Presentation.pdf"/>
      <trackback:ping>http://typo.pburkholder.com/articles/trackback/22</trackback:ping>
    </item>
    <item>
      <title>SSH SSL Shibboleth RSSscraper and other goodies from my old site</title>
      <description>&lt;p&gt;I&amp;#8217;ve migrated a lot of my old sysadmin stuff from my old host.  This includes the following stuff&lt;/p&gt;


&lt;h2&gt;Presentations&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.pburkholder.com/sysadmin/WAGshibboleth.ppt"&gt;&lt;span class="caps"&gt;UCAR&lt;/span&gt; Web Advisory Group Shibboleth Presentation&lt;/a&gt;, October 2005
  &lt;li&gt;&lt;a href="http://www.pburkholder.com/sysadmin/CMSForum.ppt"&gt;&lt;span class="caps"&gt;UCAR&lt;/span&gt; Content Management System Forum&lt;/a&gt;, October 2004
  &lt;li&gt;&lt;a href="http://www.pburkholder.com/sysadmin/ISSA-talk/issa.htm"&gt;Web Application Security&lt;/a&gt;.  A
  presentation for the Denver chapter of &lt;span class="caps"&gt;ISSA&lt;/span&gt;, 10 April 2002.
  &lt;li&gt;&lt;a href="http://www.pburkholder.com/sysadmin/UW_SSL_talk/index.php"&gt;&lt;span class="caps"&gt;SSH&lt;/span&gt; &amp;#38; &lt;span class="caps"&gt;SSL&lt;/span&gt; for SysAdmins&lt;/a&gt;.  A presentation 
  for University of Washington NetSys/LanAdmin, 24 January 2002.
  &lt;li&gt;&lt;a href="http://www.pburkholder.com/sysadmin/SSH-talk/SSH-talk.htm"&gt;&lt;span class="caps"&gt;SSH&lt;/span&gt; &amp;#38; &lt;span class="caps"&gt;SSL&lt;/span&gt;&lt;/a&gt;.  A presentation for
  the &lt;a href="http://www.co-sage.org"&gt;Colorado chapter of &lt;span class="caps"&gt;SAGE&lt;/span&gt;
  (Co-SAGE)&amp;#8221;&lt;/a&gt;, 14 Nov 2001.

&lt;/ul&gt;

&lt;h2&gt;Notes&lt;/h2&gt;

&lt;p&gt;Some notes on work I do, which may or may not be useful to others
&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.pburkholder.com/sysadmin/CA.php"&gt;How to run your own CA for launching &lt;span class="caps"&gt;SSL&lt;/span&gt;
  attacks&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://www.pburkholder.com/sysadmin/portsentry.html"&gt;PortSentry&lt;/a&gt;
  &lt;li&gt;&lt;a "href=http://www.pburkholder.com/sysadmin/vpn.html"&gt;VPNs using Free S/WAN&lt;/a&gt;
&lt;/ul&gt;

&lt;h2&gt;Articles&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.pburkholder.com/sysadmin/SSL-mitm/SSL-mitm.php"&gt;&lt;span class="caps"&gt;SSL&lt;/span&gt; Man-in-the-Middle Attacks&lt;/a&gt; 1
  Feb 2002.  An evaluation of several &lt;span class="caps"&gt;SSL&lt;/span&gt; attacks, includes a modification
  to Dug Song&amp;#8217;s &lt;code&gt;webmitm&lt;/code&gt; exploit.
&lt;/ul&gt;

&lt;h2&gt;&lt;span class="caps"&gt;RSS&lt;/span&gt; Scraper Job Feeds&lt;/h2&gt;

&lt;p&gt;Since I&amp;#8217;m looking for work with specific institutions of interest
in the Washington, DC, area, I thought I could track jobs more easily
if I could subscribe to the relevant &lt;span class="caps"&gt;RSS&lt;/span&gt; feeds.  Alas, although any
institution now has its &amp;#8220;Job Opportunities&amp;#8221; web page, they seldom
have &lt;span class="caps"&gt;RSS&lt;/span&gt; feeds of those pages.  So I decided to work out my Ruby and
Regular Expression skills and build my own feeds.  These are built from
&lt;a href="http://rssscraper.rubyforge.org"&gt;RubyForge RSSscraper&lt;/a&gt;,
written by &lt;a href="http://taarnskov.com/lau/&gt;Lau Taarnskov&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now, I haven&amp;#8217;t yet played around with similar services
from &lt;a href="http://www.monster.com"&gt;Monster&lt;/a&gt; or &amp;lt;a
href=&amp;#8221;http://www.dice.com&amp;#8221;&amp;gt;Dice&lt;/a&gt; or their ilk, so I can&amp;#8217;t compare
this to what they offer. But I find it useful so far, although scraping &lt;span class="caps"&gt;HTML&lt;/span&gt; from the &lt;span class="caps"&gt;NSF&lt;/span&gt;
has been really challenging.  I&amp;#8217;d recommend that one sign up with their
email job notification service.&lt;/p&gt;

&lt;p&gt;&lt;span class="caps"&gt;RSS&lt;/span&gt; Job Feeds
&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.pburkholder.com/RSSscraper/scrape.cgi?scraper=AAASJobs"&gt;&lt;span class="caps"&gt;AAAS&lt;/span&gt; Jobs&lt;a&gt;
  &lt;li&gt;&lt;a href="http://www.pburkholder.com/RSSscraper/scrape.cgi?scraper=NSFJobs"&gt;&lt;span class="caps"&gt;NSF&lt;/span&gt; Jobs&lt;a&gt;
  &lt;li&gt;&lt;a href="http://www.pburkholder.com/RSSscraper/scrape.cgi?scraper=UMCPJobs"&gt;Univ. of Maryland,
  College Park, Jobs&lt;a&gt;
&lt;/ul&gt;
&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 21:51:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:79941e41-479f-4a1b-b265-ed463ebb065e</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2006/09/13/ssh-ssl-shibboleth-rssscraper-and-other-goodies-from-my-old-site</link>
      <category>System Administration</category>
      <category>Web Development</category>
      <category>rss</category>
      <category>ssh</category>
      <category>ssl</category>
      <category>shibboleth</category>
      <category>sysadmin</category>
      <trackback:ping>http://typo.pburkholder.com/articles/trackback/18</trackback:ping>
    </item>
    <item>
      <title>Ported over postings from Plone</title>
      <description>&lt;p&gt;A few months back I was working heavily in Plone&amp;#8212;so much so that I did a lengthy presentation to fellow sysadmins and web developers at &lt;a href="http://www.ucar.edu"&gt;&lt;span class="caps"&gt;UCAR&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;At this point I&amp;#8217;ve grown weary of Plone.  &lt;span class="caps"&gt;A CMS&lt;/span&gt; is not generally needed in most environments; a Wiki serves just fine.  Further, the &lt;span class="caps"&gt;ZODB&lt;/span&gt; and the Zope stack made me long for just having everything on the filesystem and Subversion.  One get that to work for Zope, but it takes some jumping through hoops.&lt;/p&gt;


	&lt;p&gt;Further, I didn&amp;#8217;t care much for the Zope/Plone blog offerings: simpleBlog and Quills are what I tried.&lt;/p&gt;


	&lt;p&gt;So, all the article posts from April and May, 2006, are Plone ports&amp;#8212;the formatting looks okay (I pasted in as straight html), but I may have missed things.&lt;/p&gt;


	&lt;p&gt;On the hosting end, I&amp;#8217;ve still not switched.  Thanks to &lt;a href="http://antoniocangiano.com/articles/2006/07/01/rails-hosting-review-7-months-later"&gt;Antoni Cangiano&lt;/a&gt; I think I&amp;#8217;ll be trying &lt;a href="http://www.site5.com/hosting/rails.php"&gt;Site 5&lt;/a&gt; next.&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 11:30:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:446c8a20-4cec-41d4-a378-f0d9c3d3a47c</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2006/09/13/ported-over-postings-from-plone</link>
      <category>Web Development</category>
      <category>plone</category>
      <category>hosting</category>
      <trackback:ping>http://typo.pburkholder.com/articles/trackback/16</trackback:ping>
    </item>
    <item>
      <title>M4 M4ania</title>
      <description>A year or two ago I thought M4 a relic of the 1970s, but in the last few months I&amp;#8217;ve found a couple of problems that it solves quite nicely.  I&amp;#8217;ll devote a few articles in the near future to:
	&lt;ul&gt;
	&lt;li&gt;M4 and procmail testing&lt;/li&gt;
		&lt;li&gt;M4 and httpd.conf maintenance&lt;/li&gt;
		&lt;li&gt;M4 and a complex build system for multiple environments&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;I think m4 has a lot to offer system administrators and web developers who need to maintain configuration files in a manner that are beyond the scope of simple sed, awk or cfenging scripts.&lt;/p&gt;


	&lt;p&gt;More to come on this topic&lt;/p&gt;</description>
      <pubDate>Mon, 24 Jul 2006 22:09:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:c3b2ca77-4d6c-4ebd-b8b4-3c32129f53dd</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2006/07/24/m4-m4ania</link>
      <category>System Administration</category>
      <category>Web Development</category>
      <trackback:ping>http://typo.pburkholder.com/articles/trackback/2</trackback:ping>
    </item>
    <item>
      <title>Typo is up and running</title>
      <description>&lt;p&gt;My life is exciting enough that I could spend Friday evening working on my resurrected site.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;d intended to document the experience well enough that I could update the various wikis on Typo+Dreamhost, but it got so late that my brain was too fried to do anything but randomly edit previous commands in the hope that something would work.  I love to tinker around at night, but my brain stalls out a lot earlier than it used to.&lt;/p&gt;


	&lt;p&gt;The main sticking points I ran into were:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt; The &lt;span class="caps"&gt;SVN&lt;/span&gt; checkout of the Rails1.1 typ version took about two bowls of cereal to complete&lt;/li&gt;
		&lt;li&gt; The rake migration calls do nothing&amp;#8212;I never timed them but after about 5 minutes I start hitting Ctlr-C.  I didn&amp;#8217;t dig into the strace of rake too deeply, but just set up the databases from within the mysql client with &amp;#8216;source db/schema.mysql.sql&amp;#8217;&lt;/li&gt;
		&lt;li&gt; I was getting mysql server not found errors&amp;#8212;because I had a &lt;span class="caps"&gt;TAB&lt;/span&gt; character after my hostname in my database.yml file.  Why are computers so damn literal?&lt;/li&gt;
		&lt;li&gt; I was getting 500 server errors, so I applied the RailsFCGIHandler tweak from &lt;a href="http://work.alexyoung.org/archives/102/dreamhost-and-rails-500-errors"&gt;Alex Young&amp;#8217;s Blog&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Of these, only the rake problems merit documenting on a Wiki&amp;#8212;and I&amp;#8217;ve done so at &lt;a href="http://www.typosphere.org/trac/wiki/DreamHost"&gt;Typo Trac Wiki&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 24 Jul 2006 11:07:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:49711541-fa5f-4936-b35c-3b76201c35bb</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2006/07/24/typo-is-up-and-running</link>
      <category>Web Development</category>
      <category>Ruby and Rails</category>
      <trackback:ping>http://typo.pburkholder.com/articles/trackback/1</trackback:ping>
    </item>
    <item>
      <title>Firefox Web Developer Extension and Plone CSS elements</title>
      <description>&lt;p&gt;This was pointed out to me not long ago.  With the recent versions of the Firefox Web Developer Extension you can get on-the-fly breakouts of &lt;span class="caps"&gt;CSS&lt;/span&gt;.  Just hit
Ctrl-Shift-F to see which &lt;span class="caps"&gt;CSS&lt;/span&gt; to tweak.&lt;/p&gt;


	&lt;p&gt;For the Plone site I&amp;#8217;ve been developting for the &lt;a href="http://www.ucar.edu/wag"&gt;&lt;span class="caps"&gt;WAG&lt;/span&gt; site&lt;/a&gt;, hovering over the &lt;span class="caps"&gt;UCAR&lt;/span&gt; tab shows that I could tweak the tab display by using the &lt;span class="caps"&gt;CSS&lt;/span&gt; element #portaltab-ucar&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/firefoxscreensnapz001.png" alt="" /&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 19 Apr 2006 00:00:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:46df6065-ec1d-4005-9f68-fa0c58b246ab</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2006/04/19/firefox-web-developer-extension-and-plone-css-elements</link>
      <category>Web Development</category>
      <enclosure type="image/png" length="71295" url="http://typo.pburkholder.com/files/firefoxscreensnapz001.png"/>
      <trackback:ping>http://typo.pburkholder.com/articles/trackback/11</trackback:ping>
    </item>
  </channel>
</rss>
