<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Planet SysAdmin</title>
	<link>http://planetsysadmin.com/</link>
	<language>en</language>
	<description>Planet SysAdmin - http://planetsysadmin.com/</description>

<item>
	<title>O'Reilly Sysadmin: Protect Your Database From Your Webapp</title>
	<guid>tag:www.oreillynet.com,2008:/sysadmin/blog//7.24058</guid>
	<link>http://www.oreillynet.com/sysadmin/blog/2008/07/protect_your_database_from_you.html</link>
	<description>&lt;p&gt;I&amp;#8217;ve been seeing this SQL Server code running wild for the past few days:&lt;/p&gt;
&lt;pre&gt;
DECLARE @T varchar(255), @C varchar(255);
DECLARE Table_Cursor CURSOR FOR
SELECT a.name, b.name
FROM sysobjects a, syscolumns b
WHERE a.id = b.id AND a.xtype = 'u' AND
(b.xtype = 99 OR
b.xtype = 35 OR
b.xtype = 231 OR
b.xtype = 167);
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;
WHILE (@@FETCH_STATUS = 0) BEGIN
EXEC(
'update [' + @T + '] set [' + @C + '] =
rtrim(convert(varchar,[' + @C + ']))+
''Explot JavaScript goes here'''
);
FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
&lt;/pre&gt;
&lt;p&gt;Actually, the insertion of this code into web servers happens from a DECLARE statement that encodes the entire payload in hexadecimal characters, which is then helpfully translated into exploit code by your own database server.  In a way, your SQL Server database hacks itself.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s been around since January, but the payloads have been different.  Either multiple people are using the exploit, or the exploits are modified on a per-hire basis and delivered through the same bot network.  One hacker with a client hack pays some other hacker with a server hack, and they go to town.  The process attacks hundreds of insecure websites, which in turn attacks thousands of client hosts.&lt;/p&gt;
&lt;p&gt;The interesting thing is that this code doesn&amp;#8217;t really have a  catchy name like all of the other exploits.  Server exploits never get much attention in the media compared to viruses that attack millions of workstations at once, like Nimda, Melissa, or others.&lt;/p&gt;
&lt;p&gt;DBA1: &amp;#8220;Hey, did you hear that one website got compromised by &amp;#8216;Column Smasher&amp;#8217;?&amp;#8221;&lt;/p&gt;
&lt;p&gt;DBA2: &amp;#8220;No, I thought it was called &amp;#8216;Lemon Pledge&amp;#8217;.&amp;#8221;&lt;/p&gt;
&lt;p&gt;DBA1: &amp;#8220;Why would a database exploit be called &amp;#8216;Lemon Pledge&amp;#8217;?&amp;#8221;&lt;/p&gt;
&lt;p&gt;DBA2: &amp;#8220;Because it cleans everything from your tables.&amp;#8221;&lt;/p&gt;
&lt;p&gt;There have been a few reports of these attacks hitting &lt;a href=&quot;http://www.rtraction.com/blog/devit/sql-injection-hack-using-cast.html?f_src=darkreading_section_318_320&quot;&gt;Cold Fusion servers&lt;/a&gt;.  Thanks to Google and the .cfm file extension, it isn&amp;#8217;t too hard to find a  Cold Fusion server out there.  And if someone is using Cold Fusion, they&amp;#8217;re probably just coding in CFML, which isn&amp;#8217;t a very robust language.&lt;/p&gt;
&lt;p&gt;Remember FormMail?  Formmail was that horrible CGI script that everyone abused to send out spam.  Well, it seems like people haven&amp;#8217;t taken the hint.  All that information passed from a web client to the server through a GET or POST method should be considered dangerous.   Web page constraints, JavaScript/AJAX validators, and hidden form fields can&amp;#8217;t protect your database.  Depending on how your web forms and server applications are written, you&amp;#8217;re allowing outside input from unknown sources to be inserted into the middle of your humble SQL statement.  The most important firewall to protect your database is your server side application.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s a few things you can do to protect your database from SQL injection attacks.  Suggestions 1 through 3 range from low level sanitation to high level extreme SQL programming.  Suggestion 4 is geared more towards administrative efforts for a Database Administrator to protect their system from a web developers badly programmed application.&lt;/p&gt;
&lt;p&gt;1. Sanitize the input.  Run regular expresison filters that will ideally work on a pattern of allowed characters,  Accept only alphabetical characters and numerals, but strip everything else out.&lt;/p&gt;
&lt;p&gt;2. Use SQL bind variables to contain web application input, after it&amp;#8217;s been filtered.&lt;/p&gt;
&lt;p&gt;3. Using stored procedures can give you the benefit of limiting what statements your web application can execute on the database server.  Keep in mind that stored procedures are still pretty complex, and unless they&amp;#8217;re coded properly, they may not add additional security from the application.&lt;/p&gt;
&lt;p&gt;4. Block select privileges to the sysobjects and other system tables.  And just because you&amp;#8217;re not running SQL Server, don&amp;#8217;t assume you&amp;#8217;re in the clear.  Check with your DB vendor to see specific instructions on how your server handles the Information Schema portion of the &lt;a href=&quot;http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt&quot;&gt;SQL-92 standard&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 24 Jul 2008 13:49:18 +0000</pubDate>
</item>
<item>
	<title>TechRepublic Network Administrator: Get to know the Cisco IOS Feature Navigator</title>
	<guid>http://blogs.techrepublic.com.com/networking/?p=601</guid>
	<link>http://feeds.feedburner.com/~r/techrepublic/networking/~3/344582701/</link>
	<description>&lt;p&gt;&lt;em&gt;David Davis tells you how the Cisco IOS Feature Navigator can help you find the information you need, including what features your current IOS image has, what the differences are between two IOS images, and whether your router can support the latest IOS.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;-&lt;/p&gt;
&lt;h2&gt;What is the Cisco Feature Navigator?&lt;/h2&gt;
&lt;p&gt;This recently improved &lt;a target=&quot;_blank&quot; href=&quot;http://tools.cisco.com/ITDIT/CFN/jsp/index.jsp&quot;&gt;Cisco IOS Feature Navigator&lt;/a&gt; is set up to easily research and display available features in a certain version of the IOS, in a certain hardware platform, or working backward from features to IOS.&lt;/p&gt;
&lt;p&gt;As the name implies, the Feature Navigator allows you to navigate through some simple screens to retrieve information on your Cisco IOS, IOS XE, and CatOS software releases. This is a free tool and a great resource that can save a network admin a lot of time and frustration.&lt;/p&gt;
&lt;p&gt;With the Feature Navigator, you can easily research your Cisco IOS software for compatibility with other images, research software releases, and search for a particular feature. It even gives you an option to display the details on any feature that you pick.&lt;/p&gt;
&lt;h2&gt;How can the Cisco IOS Feature Navigator help me?&lt;/h2&gt;
&lt;p&gt;We are going to look at five different scenarios to show you how the Feature Navigator can assist you in gaining additional information about your IOS.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scenario 1: Display features for a particular IOS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s see how easy it is to display features that are available for a particular image.&lt;/p&gt;
&lt;p&gt;Click on Search by Software to get started. You should see a screen like &lt;strong&gt;Figure A&lt;/strong&gt;:&lt;/p&gt;
&lt;h4&gt;Figure A&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://i.i.com.com/cnwk.1d/i/tr/blog_img/Cisco072508_A.png&quot;&gt;&lt;img border=&quot;0&quot; align=&quot;middle&quot; width=&quot;495&quot; src=&quot;http://i.i.com.com/cnwk.1d/i/tr/blog_img/Cisco072508_A.png&quot; hspace=&quot;5&quot; alt=&quot;Feature Navigator&quot; height=&quot;437&quot; title=&quot;Feature Navigator&quot; /&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can now pick and choose which options you want. For our example, we&amp;#8217;ll pick the following:&lt;/p&gt;
&lt;ul class=&quot;unIndentedList&quot;&gt;
&lt;li&gt;Software: IOS&lt;/li&gt;
&lt;li&gt;Platform: 4500&lt;/li&gt;
&lt;li&gt;Image Name: c7200-js56i-mz.12.0-1&lt;/li&gt;
&lt;li&gt;Product Number: SF105CW4-11.3.9&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Click the Continue button when completed.&lt;/p&gt;
&lt;p&gt;You&amp;#8217;ll see a screen like &lt;strong&gt;Figure B&lt;/strong&gt;.&lt;/p&gt;
&lt;h4&gt;Figure B&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;&lt;img border=&quot;0&quot; width=&quot;495&quot; src=&quot;http://i.i.com.com/cnwk.1d/i/tr/blog_img/Cisco072508_B.png&quot; hspace=&quot;5&quot; alt=&quot;Search by Software&quot; height=&quot;437&quot; title=&quot;Search by Software&quot; /&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The screen displays all the features that are available for this IOS image. The display also shows you the Release and Product information for that image: No more looking through the release notes and trying to figure out what features are included in your IOS.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scenario 2: Compare IOS and CatOS image features&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Another helpful use is comparing IOS images to see what features are supported. That&amp;#8217;s handy if you want to update an image on your router. Click on the compare images link. You should see Figure C.&lt;/p&gt;
&lt;h4&gt;Figure C&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://i.i.com.com/cnwk.1d/i/tr/blog_img/Cisco072508_C.png&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;495&quot; src=&quot;http://i.i.com.com/cnwk.1d/i/tr/blog_img/Cisco072508_C.png&quot; alt=&quot;Comparing images&quot; height=&quot;438&quot; title=&quot;Comparing images&quot; /&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;(By the way, you might notice that Help is listed right on the screen, so you can readily see what options are required and which is optional.) I have filled in the options for this example comparing Cisco CatOS image to IOS XE image. &lt;strong&gt;Figure D&lt;/strong&gt; and &lt;strong&gt;Figure E&lt;/strong&gt; show the results of that query.&lt;/p&gt;
&lt;h4&gt;Figure D&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://i.i.com.com/cnwk.1d/i/tr/blog_img/Cisco072508_D.png&quot;&gt;&lt;img border=&quot;0&quot; align=&quot;middle&quot; width=&quot;495&quot; src=&quot;http://i.i.com.com/cnwk.1d/i/tr/blog_img/Cisco072508_D.png&quot; hspace=&quot;5&quot; alt=&quot;Sample comparison of images&quot; height=&quot;437&quot; title=&quot;Sample comparison of images&quot; /&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;Figure E&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://i.i.com.com/cnwk.1d/i/tr/blog_img/Cisco072508_E.png&quot;&gt;&lt;img border=&quot;0&quot; align=&quot;middle&quot; width=&quot;495&quot; src=&quot;http://i.i.com.com/cnwk.1d/i/tr/blog_img/Cisco072508_E.png&quot; hspace=&quot;5&quot; alt=&quot;Image comparison&quot; height=&quot;437&quot; title=&quot;Image comparison&quot; /&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As you can see, there are a lot of features that are unique to the Cisco IOS XE image. By clicking on each feature link, you can learn the details of that feature.&lt;/p&gt;
&lt;p&gt;Now, let&amp;#8217;s look at researching by Feature. You can click on the Search By Feature link from the first screen of the Navigator or click on the Search By Feature tab on subsequent screens. This search looks a little different than the others (&lt;strong&gt;Figure F&lt;/strong&gt;).&lt;/p&gt;
&lt;h4&gt;Figure F&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://i.i.com.com/cnwk.1d/i/tr/blog_img/Cisco072508_F.png&quot;&gt;&lt;img border=&quot;0&quot; align=&quot;middle&quot; width=&quot;495&quot; src=&quot;http://i.i.com.com/cnwk.1d/i/tr/blog_img/Cisco072508_F.png&quot; hspace=&quot;5&quot; alt=&quot;Feature details&quot; height=&quot;437&quot; title=&quot;Feature details&quot; /&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are a lot of ways to research from this screen. You can search through all features and only add or remove what you are interested in obtaining in a single IOS. Once you select those features, you are told what hardware platform is required, what RAM, what Flash, and what IOS version. You are also given the option to sort these or filter these by, say, the mature and stable releases only.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The&lt;strong&gt; &lt;/strong&gt;Cisco IOS Feature Navigator is an invaluable tool to use for researching anything and everything about Cisco IOS releases, images, and platforms. It can be used to answer questions like, what features does my IOS support, what is the difference between these two IOS versions, and what would be required for me to run the new IOS? You&amp;#8217;ll save yourself a lot of time by creating a browser Favorite to the Cisco Feature Navigator.&lt;/p&gt;
&lt;p&gt;To use this tool and learn more about it, visit the &lt;a target=&quot;_blank&quot; href=&quot;http://tools.cisco.com/ITDIT/CFN/jsp/index.jsp&quot; title=&quot;http://tools.cisco.com/ITDIT/CFN/jsp/index.jsp&quot;&gt;Cisco IOS Feature Navigator Web Site&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;David Davis has worked in the IT industry for 15+ years and holds several certifications, including CCIE, CCNA, CCNP, MCSE, CISSP, VCP. He has authored hundreds of articles and numerous IT training videos. Today, David is the Director of Infrastructure at &lt;a href=&quot;http://www.trainsignal.com/&quot;&gt;Train Signal.com&lt;/a&gt;. Train Signal, Inc. is the global leader in video training for IT Professionals and end users.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Want to learn more about router and switch management? &lt;a href=&quot;http://nl.com.com/MiniFormHandler?brand=techrepublic&amp;list_id=e115&quot;&gt;Automatically sign up&lt;/a&gt; for our free Cisco Routers and Switches newsletter, delivered each Friday!&lt;/em&gt;&lt;/p&gt;
&lt;br /&gt;
  &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://www.pheedo.com/img.phdo?i=8e7c3de1f0f1a251cafc6abdabebc4bb&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;
&lt;img src=&quot;http://www.pheedo.com/feeds/tracker.php?i=8e7c3de1f0f1a251cafc6abdabebc4bb&quot; border=&quot;0&quot; height=&quot;1&quot; width=&quot;1&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/techrepublic/networking/~4/344582701&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 24 Jul 2008 13:00:35 +0000</pubDate>
</item>
<item>
	<title>number 9: second place in the arms race</title>
	<guid>http://number9.hellooperator.net/?p=159</guid>
	<link>http://number9.hellooperator.net/articles/2008/07/24/second-place-in-the-arms-race</link>
	<description>Came across this on my travels last night. 
Like your style, girl. Posted without further comment (it might give the game away).</description>
	<pubDate>Thu, 24 Jul 2008 12:03:31 +0000</pubDate>
</item>
<item>
	<title>A Year in the Life of a BSD Guru: Survey on Women in Technology</title>
	<guid>http://rss.ittoolbox.com/rss/26186@http://blogs.ittoolbox.com/unix/bsd</guid>
	<link>http://networking.ittoolbox.com/r/rss.asp?url=http://blogs.ittoolbox.com/unix/bsd/archives/survey-on-women-in-technology-26186</link>
	<description>Temple University has a &lt;a href=&quot;https://www.surveymonkey.com/s.aspx?sm=3DesFXpH8LGu3pH_2bgQMhmfew_3d_3d&quot;&gt; survey&lt;/a&gt; to assist in their research on women who have careers in technology-related fields, specifically with the goal of trying to create more responsible policies toward women workers, and improving the educational opportunities of those girls who aspire to careers in technology-related fields.</description>
	<pubDate>Thu, 24 Jul 2008 10:08:54 +0000</pubDate>
</item>
<item>
	<title>A Year in the Life of a BSD Guru: Survey on Security Certification</title>
	<guid>http://rss.ittoolbox.com/rss/26185@http://blogs.ittoolbox.com/unix/bsd</guid>
	<link>http://networking.ittoolbox.com/r/rss.asp?url=http://blogs.ittoolbox.com/unix/bsd/archives/survey-on-security-certification-26185</link>
	<description>The Open Web Application Security Project (&lt;a href=&quot;http://www.owasp.org/index.php/Main_Page&quot;&gt;OWASP&lt;/a&gt;) is in the very starting stages of creating a certification exam for security professionals. If you're a security professional, take a moment to complete their &lt;a href=&quot;http://rss.ittoolbox.com/rss/'http://www.surveymonkey.com/s.aspx?sm=mPXlkuSXdePFRiS79VL8Sg_3d_3d'&quot;&gt; survey&lt;/a&gt; to better understand the needs that OWASP certification can satisfy.</description>
	<pubDate>Thu, 24 Jul 2008 09:33:35 +0000</pubDate>
</item>
<item>
	<title>Russell Coker: SE Linux Policy Loading</title>
	<guid>http://etbe.coker.com.au/?p=651</guid>
	<link>http://etbe.coker.com.au/2008/07/24/se-linux-policy-loading/</link>
	<description>&lt;p&gt;One of the most significant tasks performed by a SE Linux system is loading the &amp;#8220;&lt;b&gt;policy&lt;/b&gt;&amp;#8220;.  The policy is the set of rules which determine what actions are permitted by each &lt;b&gt;domain&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;When I first started using SE Linux (in 2001) the kernel knew where to find the policy file and would just read the data from disk as soon as it had mounted the root filesystem.  Doing such things is generally considered to be a bad idea, but it was an acceptable mechanism for an early release.&lt;/p&gt;
&lt;p&gt;One issue is that the policy needs to be loaded very early in the system boot process, before anything significant happens.  In the early days the design of SE Linux had no support for a process to change it&amp;#8217;s security context other than by executing another process (similar to the way a non-root process in the Unix access control system can not change it&amp;#8217;s UID, GID, or groups).  Although later on support for this was added, it was only available as the request of the application (an external process could not change the context of an application without using ptrace - a concept that is too horrible to contemplate) and I am not aware of anyone actually using it.  So it&amp;#8217;s almost a requirement that there be no more than one active process in the system at the time that policy is loaded, therefore it must be init or something before init that loads the policy.&lt;/p&gt;
&lt;p&gt;When it was decided that a user-space program had to instruct the kernel to load the policy we had to determine which program should do it and when it should be done, with the constraint that it had to be done early.  The most obvious solution to this problem was to load the policy in the initramfs (or initrd as it was known at the time).  One problem with this is that the initramfs is limited in size by kernel compilation options and may need to be recompiled to fit a bigger policy.  As an experiment to work around this limitation I had a small policy (which covered the domains for init and the scripts needed for the early stages for system boot) loaded in the initramfs and then later in the boot process (some time after the root filesystem was mounted read/write) the full policy was loaded.&lt;/p&gt;
&lt;p&gt;A more serious problem with including policy in the initramfs was that it required rebuilding the initramfs every time the policy changed in a significant way, of course scripts could not determine when a change was significant (neither could most users) so that required needless rebuilds (which wastes time).  Even with a small policy for early booting loaded it was still sometimes necessary to change it and update the initramfs.  I believe that as a general rule an initramfs should only be rebuilt when a new kernel is installed or when a radical change is made to the boot process (EG moving from single disk to software RAID, changing between AMD and Intel CPU architecture, changing SCSI controller, or anything else that would make the old initramfs not boot the machine).  The initramfs that was used to boot my machine is known to actually work, the same can not be said for any new initramfs that I might generate.&lt;/p&gt;
&lt;p&gt;But the deciding factor for me was support of machines that did not use an initramfs or initrd (such as the &lt;a href=&quot;http://en.wikipedia.org/wiki/Cobalt_Networks&quot;&gt;Cobalt machines [1]&lt;/a&gt; I own).&lt;/p&gt;
&lt;p&gt;To solve these problems I first experimented with a wrapper for init.  The idea was to divert the real init to another file name (or use the &lt;b&gt;init=&lt;/b&gt; kernel command-line option) and then have the wrapper load the policy before running the real init.  I never intended that to be a real solution, just to demonstrate a point.  Once I had proven that it was possible to load the policy from user-space before running the real init program it was a small step to patch init to do this.&lt;/p&gt;
&lt;p&gt;One slightly tricky aspect of this was in getting the correct security context for init.  The policy has always been written to allow a domain transition from &lt;b&gt;kernel_t&lt;/b&gt; to &lt;b&gt;init_t&lt;/b&gt; when a file of type &lt;b&gt;init_exec_t&lt;/b&gt; is executed.  The domain &lt;b&gt;kernel_t&lt;/b&gt; is applied to all active processes (including kernel threads) at the time the policy is loaded.  So init only has to re-exec itself to get the correct context.  Fortunately init is designed to do this in the case of an upgrade so this was easy to manage.&lt;/p&gt;
&lt;p&gt;Since that time every implementation of SE Linux apart from some embedded systems has used init to load the policy.&lt;/p&gt;
&lt;p&gt;The latest trend in Linux distributions seems to be using &lt;a href=&quot;http://upstart.ubuntu.com/&quot;&gt;upstart [2]&lt;/a&gt; as a replacement for the old SysV Init.  The Fedora developers decided to make &lt;b&gt;nash&lt;/b&gt; (a program that comes from the &lt;b&gt;mkinitrd&lt;/b&gt; source tree in Fedora and is a utility program for a Red Hat based initramfs) load the SE Linux policy as it would apparently be painful to patch every init to load the policy.&lt;/p&gt;
&lt;p&gt;As far as I am aware there are only three different init programs in common use in Linux, the old SysV Init (which used to be used by everyone), Busybox (for rescuing broken systems and for embedded systems), and now Upstart (used by Ubuntu and Red Hat since Fedora 9).  Embedded systems need to work differently to other systems in many ways (having the one Busybox program supply the equivalent to most coreutils in one binary is actually a small difference compared to the other things), and modifying the policy load process for embedded systems is trivial compared to all the other SE Linux work needed to get an embedded system working well.  There are at least two commonly used initramfs systems (the Debian and Red Hat ones) and probably others.  As one init system (SysV Init) already has SE Linux support it seems that only one needs to be patched to have complete coverage.  I&amp;#8217;ve just written a patch for Upstart (based on the version in Debian/Experimental) and sent it to an Ubuntu developer who&amp;#8217;s interested in such things.  I also volunteer to patch any other init system that is included in Debian (I am aware of minit and will patch it as soon as it&amp;#8217;s description does not include &amp;#8220;&lt;b&gt;this package is experimental and not easy to install and use&lt;/b&gt;&amp;#8220;).&lt;/p&gt;
&lt;p&gt;It seems to me that repeating the work which was done for SysV Init and upstart for any other init system will be little effort, at worst no greater than patching an initramfs systems (and I&amp;#8217;ll do it).  As the number of initramfs systems that would need to be patched would exceed the number of init systems it seems that less work is involved in patching the init systems.&lt;/p&gt;
&lt;p&gt;The amount of RAM required by the initramfs is in some situations a limitation on the use of a system, when I recently did &lt;a href=&quot;http://etbe.coker.com.au/2008/05/22/xen-and-swap/&quot;&gt;some tests on swap performance by reducing the amount of RAM available to a Xen DomU [3]&lt;/a&gt; it was the initramfs that limited how small I could go.  So adding extra code to the initramfs is not desired.  While this will be a small amount of code in some situations (when I patched /sbin/init from Upstart it took an extra 64 bytes of disk space on AMD64), dragging in the libraries can take a moderate amount of space (the fact that an LVM or encrypted root filesystem causes SE Linux libraries to be included in the initramfs is something that I consider to be a bug and plan to fix).&lt;/p&gt;
&lt;p&gt;Finally not all boot loaders support an initrd or initramfs.  I believe that any decision which prevents using such sweet hardware as Cobalt Qube and Raq machines from being used with SE Linux is a mistake.  I have both Qube and Raq machines running fine with Debian SE Linux and plan to continue making sure that Debian will support SE Linux on such hardware (and anything with similar features and limitations).&lt;/p&gt;
&lt;p&gt;&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;[1] &lt;a href=&quot;http://en.wikipedia.org/wiki/Cobalt_Networks&quot;&gt;http://en.wikipedia.org/wiki/Cobalt_Networks&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;[2] &lt;a href=&quot;http://upstart.ubuntu.com/&quot;&gt;http://upstart.ubuntu.com/&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;[3] &lt;a href=&quot;http://etbe.coker.com.au/2008/05/22/xen-and-swap/&quot;&gt;http://etbe.coker.com.au/2008/05/22/xen-and-swap/&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;/p&gt;
&lt;p class=&quot;akst_link&quot;&gt;&lt;a href=&quot;http://etbe.coker.com.au/?p=651&amp;akst_action=share-this&quot; title=&quot;E-mail this, post to del.icio.us, etc.&quot; id=&quot;akst_link_651&quot; class=&quot;akst_share_link&quot; rel=&quot;nofollow&quot;&gt;Share This&lt;/a&gt;
&lt;/p&gt;</description>
	<pubDate>Thu, 24 Jul 2008 07:21:10 +0000</pubDate>
</item>
<item>
	<title>Last in, First out: Are we Outrunning the Bear?</title>
	<guid>tag:blogger.com,1999:blog-4806502804647119766.post-7104098767034660706</guid>
	<link>http://lastinfirstout.blogspot.com/2008/07/are-we-outrunning-bear.html</link>
	<description>Or wasting our time trying?&lt;br /&gt;
&lt;br /&gt;
Amrit's &lt;a href=&quot;http://techbuddha.wordpress.com/2008/07/24/the-art-of-security-and-why-security-vendors-are-the-root-of-all-internet-evil/&quot;&gt;latest post&lt;/a&gt; has me thinking about what's been one of our brew pub round table topics lately.&lt;br /&gt;
&lt;br /&gt;
There is an old joke about the hikers who cross paths with a grizzly bear. The first hiker immediately takes off his hiking boots and puts on his running shoes.&lt;br /&gt;
&lt;br /&gt;
The second hiker: “why are you doing that - you can’t out run the bear”.&lt;br /&gt;
&lt;br /&gt;
First hiker: “I don’t need to out run the bear, I only need to outrun you”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In a sense, if hacking today is focused on profit rather than challenge or ego, as perhaps it once was, then the miscreants will likely follow the least cost or least resistance path to their goal (marketable data, marketable botnets). If that is true, our goal needs to be to outrun the other hikers, not the bear.&lt;br /&gt;
&lt;br /&gt;
Fortunately there appears to be a limitless supply of slow hikers (clueless developers, sysadmins, security people and their leadership, or more likely - competent developers, sysadmins and security people led astray by clueless leadership).&lt;br /&gt;
&lt;br /&gt;
We need to focus on out running them, not the bear.</description>
	<pubDate>Thu, 24 Jul 2008 06:45:13 +0000</pubDate>
	<author>noreply@blogger.com (Michael Janke)</author>
</item>
<item>
	<title>Adnans Sysadmin/Dev Blog: Links for 2008-07-23 [del.icio.us]</title>
	<guid>http://del.icio.us/awasim#2008-07-23</guid>
	<link>http://feeds.feedburner.com/~r/AdnansSysadmin/devBlog/~3/344251109/awasim</link>
	<description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://winpdb.org/cgi-bin/moin.cgi/WinpdbTutorial&quot;&gt;WinpdbTutorial - Winpdb Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.readwriteweb.com/archives/top_10_concepts_that_every_software_engineer_should_know.php&quot;&gt;Top 10 Concepts That Every Software Engineer Should Know - ReadWriteWeb&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/AdnansSysadmin/devBlog/~4/344251109&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 24 Jul 2008 05:00:00 +0000</pubDate>
</item>
<item>
	<title>Chris Siebenmann: One thing that I dislike about typical debuggers</title>
	<guid>http://utcc.utoronto.ca/~cks/space/blog/programming/DebuggerHandHolding</guid>
	<link>http://utcc.utoronto.ca/~cks/space/blog/programming/DebuggerHandHolding</link>
	<description>&lt;div class=&quot;wikitext&quot;&gt;&lt;h2&gt;One thing that I dislike about typical debuggers&lt;/h2&gt;

&lt;p&gt;One of the things that I hate about typical debuggers is that they want
me to hold their hand all the time. Okay, this is not entirely fair;
they default to having me hold their hand, and generally don't do a
really good job of supporting hands-off operation.&lt;/p&gt;

&lt;p&gt;This is not really their fault, because debuggers have a different
view of how they're going to be used than I do. A classical debugger
(like &lt;code&gt;gdb&lt;/code&gt;) expects to be used by people who are carefully narrowing
in on the bug, taking cautious step after cautious step, and for
this of course you want to interact with the debugger all the
time (because ultimately you are looking for an anomaly, which
requires a human's eye).&lt;/p&gt;

&lt;p&gt;I don't use debuggers that way. Instead, I use them to &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/programming/WhyPrintBasedDebugging&quot;&gt;extract a bunch
of information&lt;/a&gt; from the program which I will
then stare at for a while, so I want to set things up (simply, please)
and then fire off a run without further intervention. The last thing I
want to do is to slow down the process by having to interact with the
debugger all the time.&lt;/p&gt;

&lt;p&gt;Modern debuggers sort of support this; you can write command sets for
breakpoints and so on that automatically dump information and then
continue. But my impression is that both the command language and the
interface is awkward, and in practice when I've tried to use &lt;code&gt;gdb&lt;/code&gt; for
this sort of thing I've wound up getting lost in the complexity of
managing all of the breakpoints and so on by hand. I would actually
rather have a script-driven debugger where I had to edit a file and then
reload it to change what I was monitoring, because that's easier to keep
track of and to modify.&lt;/p&gt;

&lt;p&gt;(Having to keep changing a file and reloading it would of course be
intolerable for the step by step 'narrowing in' style of debugging,
which is why I don't expect debuggers to support it any time soon.)&lt;/p&gt;
&lt;/div&gt;</description>
	<pubDate>Thu, 24 Jul 2008 04:51:48 +0000</pubDate>
</item>
<item>
	<title>TechRepublic Servers and Storage: Windows Home Server Power Pack 1 sees the light of day</title>
	<guid>http://blogs.techrepublic.com.com/datacenter/?p=413</guid>
	<link>http://feeds.feedburner.com/~r/techrepublic/datacenter/~3/344206392/</link>
	<description>&lt;p&gt;Windows Home Server was released in 2007 to much fanfare, but had a few significant limitations and quickly fell victim to a serious data corruption bug.  This week, Microsoft released Power Pack 1, the first update to Windows Home Server.  Scott Lowe explains some of the update&amp;#8217;s features.&lt;/p&gt;
&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;-&lt;/p&gt;
&lt;p&gt;I love my HP MediaSmart home server, even though I&amp;#8217;ve had a few problems.  I bought it in late 2007 for a project I needed to complete and have found it to be a very useful tool&amp;#8211;after I upgraded the RAM to 2GB from the 512MB that was shipped with the server.  Windows Home Server isn&amp;#8217;t without its flaws, though.  Most seriously was the product&amp;#8217;s &lt;a href=&quot;http://blogs.zdnet.com/Bott/?p=348&quot;&gt;data corruption bug &lt;/a&gt;that, well, corrupted data.  Unfortunately, I fell victim to this bug before it was publicly disclosed as a problem.  I learned the hard way that OneNote 2007 and Windows Home Server didn&amp;#8217;t make a good combination.  I&amp;#8217;m convinced that this data corruption bug has really hurt Microsoft&amp;#8217;s efforts to infiltrate the home market with Windows Home Server.&lt;/p&gt;
&lt;p&gt;This week, Microsoft finally released to manufacturing the first major update for Windows Home Server.  Dubbed Power Pack 1, this update introduces a number of enhancements to the server product, not the least of which is a fix for the aforementioned data corruption bug.  Additionally, Power Pack 1 includes the following major updates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;64-bit Windows Vista support.  &lt;/strong&gt;I run Windows Vista x64 at home, so this is a very welcome addition to the software!  I have other computers in the home running 32-bit operating systems, so all of Windows Home Server&amp;#8217;s features worked quite well with them, but on my 64-bit system, I was not able to use things like the integrated backup feature.  Of course, I was able to browse directly to the home server just as is possible with any Windows server, but it&amp;#8217;s nice to see that 64-bit support is now real.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Remote access has been improved.  &lt;/strong&gt;One compelling feature of Windows Home Server is remote access.  Home Server makes it easy to remotely connect to and download your files and folders as needed.  Microsoft has made a number of improvements to remote access, including providing more granular remote access security permissions and making it possible to download files in batch by compressing them into either an exe or zip archive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backup of the home server itself.&lt;/strong&gt;  One benefit to running a server in the home with integrated client backup is that you are then protected against catastrophic client failure.  In fact, Windows Home Server&amp;#8217;s client rebuild capability is really, really good.  I&amp;#8217;ve tested a bare metal restore using virtual machines and the process really works.  But, what happens if the home server itself fails?  Windows Home Server RTM did not include backup capability, although third parties did rush to fill the void.  I subscribe to &lt;a href=&quot;http://www.keepvault.com/download.htm&quot;&gt;KeepVault&amp;#8217;s Windows Home Server backup service&lt;/a&gt;, which backs up my home server to KeepVault&amp;#8217;s servers.  With PP1, Microsoft has made it possible to back up the contents of a home server to an external hard drive which can then be taken off-site for safe storage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data corruption bug fix.&lt;/strong&gt;  Did I mention this one already?  This fix is &lt;em&gt;that &lt;/em&gt;important and, I believe, will allow Microsoft to continue their push into the home.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are the highlights of Power Pack 1.  These may not seem like major improvements, but they are!  I haven&amp;#8217;t listed every single little update&amp;#8211;and there are dozens&amp;#8211;but these major items make Windows Home Server a much more robust solution.  A complete list of changes introduced in Power Pack 1 can be downloaded from &lt;a href=&quot;http://download.microsoft.com/download/1/5/e/15e939d7-dfe1-45d2-8a95-2d27f9d95236/WHS_ReleaseDocs_PP1.doc&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;
      &lt;a href=&quot;http://www.pheedo.com/feeds/ht.php?t=c&amp;i=1a92d13339f937b4469f881d5b1eaf03&quot;&gt;&lt;img src=&quot;http://www.pheedo.com/feeds/ht.php?t=v&amp;i=1a92d13339f937b4469f881d5b1eaf03&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
  &lt;img src=&quot;http://www.pheedo.com/feeds/tracker.php?i=1a92d13339f937b4469f881d5b1eaf03&quot; border=&quot;0&quot; height=&quot;1&quot; width=&quot;1&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/techrepublic/datacenter/~4/344206392&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 24 Jul 2008 03:40:55 +0000</pubDate>
</item>
<item>
	<title>iDogg: Encrypting single files</title>
	<guid>http://arsedout.net/idogg/?p=73</guid>
	<link>http://arsedout.net/idogg/?p=73</link>
	<description>&lt;p&gt;I forgot a username/password for a website that I needed access to.  I had to wait until I got home to dig up a hard copy that had my account# on it.  That&amp;#8217;s a pain in the butt.  Opensuse 11 comes preloaded with gpg.  Below is a link to a quick tutorial on how to use it to encrypt single files.  I&amp;#8217;m thinking I&amp;#8217;m going to put my obscure usernames/passwords in a file, encrypt it with gpg, and be able to access it whenever I have a machine with gpg on it.&lt;/p&gt;
&lt;p&gt;On the other hand though, putting anything private in electronic form is a risk.  Anyone ever do this?  What are your opinions?  Drop me a message.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.cyberciti.biz/tips/linux-how-to-encrypt-and-decrypt-files-with-a-password.html&quot; target=&quot;_blank&quot;&gt;http://www.cyberciti.biz/tips/linux-how-to-encrypt-and-decrypt-files-with-a-password.html&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 24 Jul 2008 00:41:04 +0000</pubDate>
</item>
<item>
	<title>The Daily ACK: OSCON: Wednesday Morning Keynote</title>
	<guid>tag:blogger.com,1999:blog-7734900.post-2221269456318964488</guid>
	<link>http://feeds.feedburner.com/~r/TheDailyAck/~3/343674767/oscon-wednesday-morning-keynote.html</link>
	<description>My jet lag &lt;a href=&quot;http://twitter.com/aallan/statuses/865674153&quot;&gt;caught up with me last night&lt;/a&gt; and I ended not making it to the Tuesday Night Extravaganza, although &lt;a href=&quot;http://sirhc.us/journal/2008/07/22/oscon-2008-tuesday-night-extravaganza/&quot;&gt;other people did&lt;/a&gt; and cruelly didn't blog &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/speaker/4710&quot;&gt;Damian&lt;/a&gt;'s talk for the rest of us that didn't. So I don't get to find anything more about &quot;&lt;em&gt;&lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/detail/4549&quot;&gt;Temporally Quaquaversal Virtual Nanomachine Programming In Multiple Topologically Connected Quantum-Relativistic Parallel Timespaces&lt;/a&gt;&lt;/em&gt;&quot;, which is a pity...&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src=&quot;http://www.babilim.co.uk/blog/jpg/oscon08_wed_keynote_02.jpg&quot; /&gt;&lt;/center&gt;&lt;br /&gt;The keynote kicked off with Allison Randall and Edd Dumbill, talking about the history of Open Source and OSCON. This is the first OSCON &lt;a href=&quot;http://twitter.com/gnat/statuses/866247825&quot;&gt;without Nat at the helm&lt;/a&gt;, and while I've seen him around, it's pretty weird not to have the keynote kick off with &quot;&lt;em&gt;...and here's your conference chair, Nat Torkington&lt;/em&gt;&quot;.&lt;br /&gt;&lt;br /&gt;&lt;font color=&quot;red&quot;&gt;&lt;strong&gt;Update:&lt;/strong&gt; Looks like I'll see you all next year. While I was in the keynote I got a phone call and I'm now heading back into the UK somewhat earlier than planned.&lt;/font&gt;
&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/~a/TheDailyAck?a=nyH5Oj&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~a/TheDailyAck?i=nyH5Oj&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=NiejkJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=NiejkJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=LWepAJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=LWepAJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=FYjSLJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=FYjSLJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=cIuVgJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=cIuVgJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=O3sTsJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=O3sTsJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TheDailyAck/~4/343674767&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 24 Jul 2008 00:35:55 +0000</pubDate>
	<author>noreply@blogger.com (Al.)</author>
</item>
<item>
	<title>The Daily ACK: OSCON 2008</title>
	<guid>tag:blogger.com,1999:blog-7734900.post-7580935902589895975</guid>
	<link>http://feeds.feedburner.com/~r/TheDailyAck/~3/341610081/oscon-2008.html</link>
	<description>Day one of &lt;a href=&quot;http://en.oreilly.com/oscon2008/&quot;&gt;OSCON 2008&lt;/a&gt;  here in Portland, Oregon. In my current jet lagged state it was actually fairly easy to haul myself out of bed early enough to make it down to the convention centre and grab morning coffee before everything kicks off for the day. For my body at least its just coming up to four o'clock in the afternoon...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;a href=&quot;http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;msid=117219566395833875306.000001138834b15fde2f0&amp;ll=45.550818,-122.638992&amp;spn=0.076446,0.091625&amp;t=h&amp;source=embed&quot;&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;This year I've decided to take &lt;a href=&quot;http://www.dailyack.com/2007/07/oscon-taming-legacy-perl.html&quot;&gt;my own advice&lt;/a&gt; and keep clear of the Perl  track, at least for the tutorials. So this morning I'm going to &quot;&lt;em&gt;&lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-python-in-3-hours.html&quot;&gt;Python in Three Hours&lt;/a&gt;&lt;/em&gt;&quot;, then this afternoon I'm going to, erm, &quot;&lt;em&gt;&lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-perl-security.html&quot;&gt;Perl Security&lt;/a&gt;&lt;/em&gt;&quot;. Which is about as far as I could pull myself away from the Perl track for today. Tomorrow I'm off to &quot;&lt;em&gt;&lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-open-source-startup-in-three.html&quot;&gt;An Open Source Startup in Three Hours&lt;/a&gt;&lt;/em&gt;&quot; and &quot;&lt;em&gt;&lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-practical-erlang-programming.html&quot;&gt;Practical Erlang Programming&lt;/a&gt;&lt;/em&gt;&quot;.&lt;br /&gt;&lt;br /&gt;As always, I'll be &lt;a href=&quot;http://www.dailyack.com/search/label/OSCON08&quot;&gt;blogging&lt;/a&gt; things, taking &lt;a href=&quot;http://www.flickr.com/photos/aallan/sets/72157606279545322/&quot;&gt;pictures&lt;/a&gt; and this year probably &lt;a href=&quot;http://twitter.com/aallan&quot;&gt;twittering&lt;/a&gt; the odd comment or two. That's if the &lt;a href=&quot;http://failwhale.com/&quot;&gt;fail whale&lt;/a&gt; isn't sighted...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Steve Holden talking about &lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-python-in-3-hours.html&quot;&gt;Python in Three Hours&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Paul Fenwick talking about &lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-perl-security.html&quot;&gt;Perl Security&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Gavin Doughtie and Andrew Hyde talking about &lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-open-source-startup-in-three.html&quot;&gt;An Open Source Startup in Three Hours&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Bailed out of &lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-open-source-startup-in-three.html&quot;&gt;An Open Source Startup in Three Hours&lt;/a&gt; after coffee and into Damian Conway's talk on &lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-perl-worst-practices.html&quot;&gt;Perl Worst Practices&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Francesco Cesarini talking about &lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-practical-erlang-programming.html&quot;&gt;Practical Erlang Programming&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; With the tutorials over, the conference is kicking off properly with the &lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-wednesday-morning-keynote.html&quot;&gt;Wednesday Morning Keynote&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;font color=&quot;red&quot;&gt;&lt;strong&gt;Update:&lt;/strong&gt; Looks like I'll see you all next year. While I was in the keynote I got a phone call and I'm now heading back into the UK somewhat earlier than planned.&lt;/font&gt;
&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/~a/TheDailyAck?a=B52LHZ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~a/TheDailyAck?i=B52LHZ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=P1zneJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=P1zneJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=BxnBAJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=BxnBAJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=SnreIJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=SnreIJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=sYGzNJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=sYGzNJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=6RcATJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=6RcATJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TheDailyAck/~4/341610081&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 24 Jul 2008 00:32:25 +0000</pubDate>
	<author>noreply@blogger.com (Al.)</author>
</item>
<item>
	<title>the life of a sysadmin.: aaaaaaaaaaaand there it is</title>
	<guid>http://saintaardvarkthecarpeted.com/blog/2008-07/aaaaaaaaaaaand_there_it_is.html</guid>
	<link>http://saintaardvarkthecarpeted.com/blog/2008-07/aaaaaaaaaaaand_there_it_is.html</link>
	<description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
&lt;a href=&quot;http://metasploit.com/dev/trac/changeset/5579&quot;&gt;http://metasploit.com/dev/trac/changeset/5579&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
&lt;a href=&quot;http://blog.wired.com/27bstroke6/2008/07/dns-exploit-in.html&quot;&gt;http://blog.wired.com/27bstroke6/2008/07/dns-exploit-in.html&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.caughq.org/exploits/CAU-EX-2008-0002.txt&quot;&gt;http://www.caughq.org/exploits/CAU-EX-2008-0002.txt&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>Wed, 23 Jul 2008 23:00:19 +0000</pubDate>
</item>
<item>
	<title>the life of a sysadmin.: Two random tips</title>
	<guid>http://saintaardvarkthecarpeted.com/blog/2008-07/two_random_tips.html</guid>
	<link>http://saintaardvarkthecarpeted.com/blog/2008-07/two_random_tips.html</link>
	<description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
When trying to change an Exchange password using Outlook Web Access
at $UNIVERSITY, a user got &quot;Error number: -2147024891&quot;.
&lt;tt&gt;winerror.h&lt;/tt&gt; describes this as a
&lt;a href=&quot;http://forums.msexchange.org/Owa_Error_-2147024891_while_changing_password/m_170043200/tm.htm&quot;&gt;General
access denied error&lt;/a&gt;.  In the end, it turned out that when the account
was created, the &quot;user cannot change password&quot; option was checked.
Hope that'll help someone else's google-fu&amp;#8230;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
I had managed to miss
&lt;a href=&quot;https://www.dns-oarc.net/oarc/services/porttest&quot;&gt;this quick
command-line check&lt;/a&gt; for
&lt;a href=&quot;http://www.doxpara.com/&quot;&gt;Dan Fucking Kaminsky's DNS bug&lt;/a&gt;, aka
&lt;a href=&quot;https://www.kb.cert.org/CERT_WEB%5Cservices%5Cvul-notes.nsf/id/800113&quot;&gt;CERT
VU#800113&lt;/a&gt;.  Just run:
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;listingblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;&lt;tt&gt;dig +short porttest.dns-oarc.net TXT&lt;/tt&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;and watch the skies.&lt;/p&gt;</description>
	<pubDate>Wed, 23 Jul 2008 17:45:15 +0000</pubDate>
</item>
<item>
	<title>Standalone Sysadmin: Excellent Linux Command: dmidecode</title>
	<guid>tag:blogger.com,1999:blog-2529072065643010602.post-8700604975581098691</guid>
	<link>http://standalone-sysadmin.blogspot.com/2008/07/excellent-linux-command-dmidecode.html</link>
	<description>I can't believe I didn't know about this command. I mean, it's so simple, but it reveals SO much information. &lt;br /&gt;&lt;br /&gt;As root, run &quot;dmidecode&quot; and pipe it to the pager of your choice, like this: &lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;pre&gt;&lt;br /&gt;root@newcastle:/home/bandman# dmidecode | more&lt;br /&gt;# dmidecode 2.9&lt;br /&gt;SMBIOS 2.3 present.&lt;br /&gt;72 structures occupying 2461 bytes.&lt;br /&gt;Table at 0x000F0450.&lt;br /&gt;--snip--&lt;br /&gt;&lt;/pre&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;If you scroll down just a little ways, you start getting better information: &lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;pre&gt;&lt;br /&gt;BIOS Information                &lt;br /&gt;        Vendor: Dell Inc.                &lt;br /&gt;        Version: A09            &lt;br /&gt;        Release Date: 06/22/2005&lt;br /&gt;        Address: 0xF0000        &lt;br /&gt;        Runtime Size: 64 kB     &lt;br /&gt;        ROM Size: 512 kB        &lt;br /&gt;        Characteristics:    &lt;br /&gt;&lt;/pre&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There's more: &lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;pre&gt;&lt;br /&gt;Base Board Information&lt;br /&gt;        Manufacturer: Dell Inc.          &lt;br /&gt;        Product Name: 0M3918&lt;br /&gt;        Version:    &lt;br /&gt;        Serial Number: ..CN7082154I04CU.&lt;br /&gt;&lt;br /&gt;Handle 0x0300, DMI type 3, 13 bytes&lt;br /&gt;Chassis Information&lt;br /&gt;        Manufacturer: Dell Inc.                &lt;br /&gt;        Type: Mini Tower&lt;br /&gt;        Lock: Not Present&lt;br /&gt;        Version: Not Specified&lt;br /&gt;        Serial Number: CPJLT71&lt;br /&gt;        Asset Tag:           &lt;br /&gt;        Boot-up State: Safe&lt;br /&gt;        Power Supply State: Safe&lt;br /&gt;        Thermal State: Safe&lt;br /&gt;        Security Status: None&lt;br /&gt;&lt;/pre&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You have to look at it yourself to believe all the information it provides. Never again will I wonder what the model number on one of my servers is: &lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;pre&gt;&lt;br /&gt;[root@a-fs2 ~]# dmidecode --type 1&lt;br /&gt;# dmidecode 2.7&lt;br /&gt;SMBIOS 2.4 present.&lt;br /&gt;&lt;br /&gt;Handle 0x0100, DMI type 1, 27 bytes.&lt;br /&gt;System Information&lt;br /&gt;        Manufacturer: Dell Inc.&lt;br /&gt;        Product Name: PowerEdge 1955&lt;br /&gt;        Version: Not Specified&lt;br /&gt;        Serial Number: JJN2LF1&lt;br /&gt;        UUID: 44454C4C-4A00-104E-8032-CAC04F4C4631&lt;br /&gt;        Wake-up Type: Power Switch&lt;br /&gt;        SKU Number: Not Specified&lt;br /&gt;        Family: Not Specified&lt;br /&gt;&lt;/pre&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Read the manpage on it. I'm going to get right on a script to go pick up the information from remote servers and present it in a meaningful way. That should be an excellent way to provide information for the wiki&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[EDIT]&lt;br /&gt;&lt;br /&gt;As Brandon mentioned in the comments, &quot;hwinfo&quot; is another neat command that doesn't get installed by default (at least on my Ubuntu/RedHat systems), but definitely seems worth the time to get.</description>
	<pubDate>Wed, 23 Jul 2008 16:41:30 +0000</pubDate>
	<author>noreply@blogger.com (Matt)</author>
</item>
<item>
	<title>The Lone Sysadmin: links for 2008-07-23</title>
	<guid>http://lonesysadmin.net/2008/07/23/links-for-2008-07-23/</guid>
	<link>http://feeds.feedburner.com/~r/lonesysadmin/mkpe/~3/343708823/</link>
	<description>&lt;ul class=&quot;delicious&quot;&gt;
&lt;li&gt;
&lt;div class=&quot;delicious-link&quot;&gt;&lt;a href=&quot;http://www.yellow-bricks.com/2008/07/23/howto-check-if-a-lun-is-being-locked-by-the-host/&quot;&gt;Howto: Check if a LUN is being locked by the host? » Yellow Bricks&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;delicious-extended&quot;&gt;This is very useful if you are running a number of ESX servers, clustered.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;akst_link&quot;&gt;&lt;a href=&quot;http://lonesysadmin.net/?p=1371&amp;akst_action=share-this&quot; title=&quot;Email, post to del.icio.us, etc.&quot; id=&quot;akst_link_1371&quot; class=&quot;akst_share_link&quot; rel=&quot;noindex nofollow&quot;&gt;ShareThis&lt;/a&gt;
&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/lonesysadmin/mkpe?a=tzM8pj&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/lonesysadmin/mkpe?i=tzM8pj&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/lonesysadmin/mkpe/~4/343708823&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 23 Jul 2008 16:33:11 +0000</pubDate>
</item>
<item>
	<title>The Daily ACK: Perl on Google App Engine</title>
	<guid>tag:blogger.com,1999:blog-7734900.post-6426628889877826998</guid>
	<link>http://feeds.feedburner.com/~r/TheDailyAck/~3/343573562/perl-on-google-app-engine.html</link>
	<description>I woke up this morning to some of the best news I've heard in a while, it looks like there is some progress with &lt;a href=&quot;http://radar.oreilly.com/2008/07/perl-on-app-engine.html&quot;&gt;putting Perl onto Google App Engine&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;More &lt;a href=&quot;http://brad.livejournal.com/2388824.html&quot;&gt;from Brad Fitzpatrick&lt;/a&gt;. If you'd like to discuss this or help out, join the &lt;a href=&quot;http://groups.google.com/group/perl-appengine/&quot;&gt;perl-appengine mailing list&lt;/a&gt;, and submit code to the &lt;a href=&quot;http://code.google.com/p/perl-appengine/&quot;&gt;appengine-perl&lt;/a&gt; project on Google Code. For more information see the &lt;a href=&quot;http://code.google.com/p/perl-appengine/wiki/AnnouncementFAQ&quot;&gt;Perl-on-AppEngine FAQ&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Maybe I won't have to learn Python after all...
&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/~a/TheDailyAck?a=oCSS0W&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~a/TheDailyAck?i=oCSS0W&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=4OOcpJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=4OOcpJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=zUV35J&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=zUV35J&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=bNHZsJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=bNHZsJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=lzyI5J&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=lzyI5J&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=aHQPhJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=aHQPhJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TheDailyAck/~4/343573562&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 23 Jul 2008 14:48:34 +0000</pubDate>
	<author>noreply@blogger.com (Al.)</author>
</item>
<item>
	<title>The Lone Sysadmin: First Decent Shot With My D80</title>
	<guid>http://lonesysadmin.net/?p=1362</guid>
	<link>http://feeds.feedburner.com/~r/lonesysadmin/mkpe/~3/343557386/</link>
	<description>&lt;p&gt;I just bought a Nikon D80. I&amp;#8217;ve wanted a digital SLR for ages, and with the help of my good friend &lt;a href=&quot;http://jjminer.blogspot.com/&quot;&gt;Jon&lt;/a&gt; I finally sucked it up and bought one. Now I just have to figure out how to use it. Which means that, for a while, I&amp;#8217;m going to take a photo of everything I see.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-1364&quot; title=&quot;Fire Pit, Backyard&quot; src=&quot;http://lonesysadmin.net/wp-content/uploads/2008/07/dsc_0075.jpg&quot; alt=&quot;&quot; width=&quot;500&quot; height=&quot;747&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Lesson here: autofocus doesn&amp;#8217;t work very well on fires.&lt;/p&gt;
&lt;p class=&quot;akst_link&quot;&gt;&lt;a href=&quot;http://lonesysadmin.net/?p=1362&amp;akst_action=share-this&quot; title=&quot;Email, post to del.icio.us, etc.&quot; id=&quot;akst_link_1362&quot; class=&quot;akst_share_link&quot; rel=&quot;noindex nofollow&quot;&gt;ShareThis&lt;/a&gt;
&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/lonesysadmin/mkpe?a=HVIVqj&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/lonesysadmin/mkpe?i=HVIVqj&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/lonesysadmin/mkpe/~4/343557386&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 23 Jul 2008 13:36:41 +0000</pubDate>
</item>
<item>
	<title>TechRepublic Network Administrator: SolutionBase: Does the Cisco Self-Defending Network really work?</title>
	<guid>http://blogs.techrepublic.com.com/networking/?p=602</guid>
	<link>http://feeds.feedburner.com/~r/techrepublic/networking/~3/343544412/</link>
	<description>&lt;p&gt;&lt;em&gt;David Davis explains why the Cisco Self-Defending Network might be the right choice for your company. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re a cynical consumer, the &lt;a target=&quot;_blank&quot; href=&quot;http://www.cisco.com/en/US/netsol/ns340/ns394/ns171/networking_solutions_packages_list.html&quot;&gt;Cisco Self-Defending Network&lt;/a&gt; (CSDN) solution probably begs the sarcastic question: &amp;#8220;Yeah, right; the network that can just defend itself?&amp;#8221; However, as Cisco typically makes quality products and solutions, I can&amp;#8217;t believe that the self-defending network concept is all bad; actually, it may even be the best solution on the market today.&lt;/p&gt;
&lt;h2&gt;Why look at security solutions in the first place?&lt;/h2&gt;
&lt;p&gt;Since every business today depends on the Internet and LAN networks for some business-critical function, the need for security is more important than ever. A company that does not have strong security can end up on the news as being hacked, their stock can plummet, and they can be out of business in no time. Once released, viruses and worms can hit businesses and consumers around the world in a matter of seconds or minutes.&lt;/p&gt;
&lt;p&gt;However, you and your company don&amp;#8217;t have unlimited funds; you can&amp;#8217;t just put in every solution you discover. You have to weigh the level of investment in security with the level of risk that is perceived by your business. It&amp;#8217;s tough to decide how much to invest and what solutions to choose, but you must ensure that your network is reasonably secure.&lt;/p&gt;
&lt;h2&gt;What is the Self-Defending Network?&lt;/h2&gt;
&lt;p&gt;The CSDN is a large complex roadmap made up of many Cisco components. You aren&amp;#8217;t required to have all the components. CSDN does its job using all these different components. Examples of these components are Cisco NAC (admission control), Cisco Security Agent (endpoint protection), Cisco MARS (event correlation), Network Intrusion Detection System (NIDS), authentication servers, Anti-X systems like ASA and Ironport, network and host-based firewalls, and antivirus.&lt;/p&gt;
&lt;p&gt;The theory of CSDN is that the network has the ability and the intelligence to protect itself from threats. However, this can only happen if the components of the network are working together to ensure this level of security, intelligence, and adaptability.&lt;/p&gt;
&lt;h2&gt;How do the components of the CSDN work together?&lt;/h2&gt;
&lt;p&gt;In &lt;strong&gt;Figure A&lt;/strong&gt;, you can see how the components of the CSDN are all over the network. Every link, piece of hardware, and operating system is somehow secured by the CSDN. By covering all the bases, CSDN attempts to thwart security issues wherever they crop up in the network. In addition, the attempt of the CSDN is to provide end-to-end visibility of the network&amp;#8217;s security events and status.&lt;a name=&quot;Figure A&quot; title=&quot;Figure A&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Figure A&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;http://i.i.com.com/cnwk.1d/i/tr/contentPics/Cisco-Self-Defending-Network--1.jpg&quot;&gt;&lt;img border=&quot;0&quot; align=&quot;middle&quot; src=&quot;http://i.i.com.com/cnwk.1d/i/tr/contentPics/Cisco-Self-Defending-Network--1_500.jpg&quot; hspace=&quot;5&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h6&gt;Graphic courtesy of &lt;a href=&quot;http://www.cisco.com/en/US/netsol/ns340/ns394/ns171/networking_solutions_white_paper0900aecd80247914.shtml&quot;&gt;Cisco&lt;/a&gt;.&lt;/h6&gt;
&lt;p&gt;Network devices must work together and be integrated in order for the CSDN to do its job. Therefore, you probably aren&amp;#8217;t going to have third-party network components on your network participate in the CSDN.&lt;/p&gt;
&lt;h2&gt;Besides hardware components, what else is involved in CDSN?&lt;/h2&gt;
&lt;p&gt;While you can buy all the network hardware components you like, software and services are also a huge part of CSDN. Just as with anything else, without the people (services), the hardware isn&amp;#8217;t going to implement itself. Once the CSDN is implemented and the servicemen are gone, the network will still need to be monitored and maintained.&lt;/p&gt;
&lt;p&gt;Cisco offers a lot of services revolving around the Self-Defending Network. &lt;strong&gt;Figure B&lt;/strong&gt; illustrates these offerings:&lt;a name=&quot;Figure B&quot; title=&quot;Figure B&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Figure B&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;http://i.i.com.com/cnwk.1d/i/tr/contentPics/Cisco-Self-Defending-Network---2.jpg&quot;&gt;&lt;img border=&quot;0&quot; align=&quot;middle&quot; src=&quot;http://i.i.com.com/cnwk.1d/i/tr/contentPics/Cisco-Self-Defending-Network---2_500.jpg&quot; hspace=&quot;5&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h6&gt;Graphic courtesy of &lt;a target=&quot;_blank&quot; href=&quot;http://www.cisco.com/application/pdf/en/us/guest/netsol/ns413/c643/cdccont_0900aecd800efd71.pdf&quot;&gt;Cisco&lt;/a&gt;.&lt;/h6&gt;
&lt;p&gt;As you can see, Cisco offers services beginning with planning the network and moving through designing, implementing, and operating the network. Later, Cisco can come back and optimize the implemented security systems.&lt;/p&gt;
&lt;p&gt;While this all sounds great, I would caution anyone evaluating a security solution to determine how much time and effort will be required to implement and maintain that solution. Undoubtedly, the long-term maintenance of any security system is far greater than the original price tag.&lt;/p&gt;
&lt;h2&gt;How are credentials fundamental for network security?&lt;/h2&gt;
&lt;p&gt;When it comes to the implementation of the CSDN, user and device credentials are very important. The user and device credentials are used to identify that device and to authenticate the user.&lt;/p&gt;
&lt;p&gt;In &lt;strong&gt;Figure C&lt;/strong&gt;, you can see how the device identification is checked, then the operating system and application posture, and the user identity, based on username, password, and security certificate keys.&lt;a name=&quot;Figure C&quot; title=&quot;Figure C&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Figure C&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;http://i.i.com.com/cnwk.1d/i/tr/contentPics/Cisco-Self-Defending-Network---3.jpg&quot;&gt;&lt;img border=&quot;0&quot; align=&quot;middle&quot; src=&quot;http://i.i.com.com/cnwk.1d/i/tr/contentPics/Cisco-Self-Defending-Network---3.jpg&quot; hspace=&quot;5&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h6&gt;Graphic courtesy of &lt;a target=&quot;_blank&quot; href=&quot;http://www.cisco.com/en/US/netsol/ns340/ns394/ns171/networking_solutions_white_paper0900aecd80247914.shtml&quot;&gt;Cisco&lt;/a&gt;.&lt;/h6&gt;
&lt;p&gt;As you can see, user and device credentials are critical to the success of CSDN.&lt;/p&gt;
&lt;h2&gt;Where are the security standards in CSDN?&lt;/h2&gt;
&lt;p&gt;There are a number of standards at work in the CSDN roadmap. One of the most crucial technologies related to the CSDN is Network Admission Control (NAC). NAC is used to review device security posture before admisson to the network. In many cases, this is done with 802.1X; however, that is only part of what NAC does and how it works.&lt;/p&gt;
&lt;p&gt;The battle between Cisco&amp;#8217;s NAC and Microsoft&amp;#8217;s new Network Access Protection (NAP) is about to heat up. Fortunately for consumers, both companies have agreed that there will be some compatibilities and interoperability between these two technologies. In the end, there are many standards at work in creating this self-defending network.&lt;/p&gt;
&lt;h2&gt;What is the future of CSDN?&lt;/h2&gt;
&lt;p&gt;A complex framework, CDSN has a goal for all of their devices to communicate together, preventing any danger to the network. The theory is that the devices will collaborate, with one device telling another that it is in danger. In my mind, the thought of many different hardware and software network security devices all working together sounds almost too good to be true.&lt;/p&gt;
&lt;p&gt;However, devices still don&amp;#8217;t easily integrate with other Cisco security devices, as they aren&amp;#8217;t easy to implement and are typically expensive. Even though the CSDN framework has been around for over six years, there&amp;#8217;s still a lot of work left to be done before networks can truly be self-defending.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;David Davis has worked in the IT industry for 15+ years and holds several certifications, including CCIE, CCNA, CCNP, MCSE, CISSP, VCP. He has authored hundreds of articles and numerous IT training videos. Today, David is the Director of Infrastructure at Train Signal.com. Train Signal, Inc. is the global leader in video training for IT Professionals and end users.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This SolutionBase article was originally published in December 2007.&lt;/em&gt;&lt;/p&gt;
&lt;br /&gt;
      &lt;a href=&quot;http://www.pheedo.com/feeds/ht.php?t=c&amp;i=f2b7b4f9f65d38ceb0fa94069b312b70&quot;&gt;&lt;img src=&quot;http://www.pheedo.com/feeds/ht.php?t=v&amp;i=f2b7b4f9f65d38ceb0fa94069b312b70&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
  &lt;img src=&quot;http://www.pheedo.com/feeds/tracker.php?i=f2b7b4f9f65d38ceb0fa94069b312b70&quot; border=&quot;0&quot; height=&quot;1&quot; width=&quot;1&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/techrepublic/networking/~4/343544412&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 23 Jul 2008 13:00:29 +0000</pubDate>
</item>
<item>
	<title>Standalone Sysadmin: More on Admin Responsiblity</title>
	<guid>tag:blogger.com,1999:blog-2529072065643010602.post-1050393389651998645</guid>
	<link>http://standalone-sysadmin.blogspot.com/2008/07/more-on-admin-responsiblity.html</link>
	<description>Since the drama is over, I suppose I can finally touch on San Francisco's &lt;a href=&quot;http://it.slashdot.org/article.pl?sid=08/07/23/1515203&quot;&gt;recent network issues&lt;/a&gt;, namely a network admin holding the network devices &quot;hostage&quot;. Sort of. &lt;br /&gt;&lt;br /&gt;If you aren't familiar with the story, here's a brief rundown. &lt;br /&gt;&lt;br /&gt;Network admin Terry Childs built the San Francisco FiberWAN, the backbone that municipal data travels on. To say he was an insanely-protective admin is an insult to the insanely-protective admin community. According to one report, he was so secretive that he refused to write configs to flash. Now THAT, my friends, is being too paranoid. In the end, the city tried to fire him, and he refused to hand over the authentication information, and he booby-trapped the network so that he could disable it and erase the config from outside if necessary. The mayor of San Francisco eventually talked him from his proverbial ledge and coaxed the passwords out of him, as apparently the mayor was the only man Childs trusted. &lt;br /&gt;&lt;br /&gt;The end result was that San Francisco went a week and a half without having access to their WAN equipment. Now, I imagine the remaining admins are scouring every line of configuration trying to make sure that Terry didn't leave any other backdoors or vulnerabilities. I don't envy their job at all. &lt;br /&gt;&lt;br /&gt;You've probably realized how this relates to people like us, who admin small networks by ourselves. The major mistake San Francisco made was placing one (apparently unstable) person in charge of the infrastructure with no oversight. That sounds almost like my job. &lt;br /&gt;&lt;br /&gt;We're in this position by design. By being the only admin of a small infrastructure, we have a high &lt;a href=&quot;http://en.wikipedia.org/wiki/Bus_factor&quot;&gt;bus factor&lt;/a&gt;. Unnecessary secrecy has no business on our networks. We touched on this &lt;a href=&quot;http://standalone-sysadmin.blogspot.com/2008/06/ethics-in-administration.html&quot;&gt;last month&lt;/a&gt;, after MSNBC reported on IT worker ethics. Nothing has changed since then. Being prepared as an organization means guarding against employees who get hit by buses or turn evil.</description>
	<pubDate>Wed, 23 Jul 2008 12:52:17 +0000</pubDate>
	<author>noreply@blogger.com (Matt)</author>
</item>
<item>
	<title>TechRepublic IT Security: The security control nobody used…</title>
	<guid>http://blogs.techrepublic.com.com/security/?p=521</guid>
	<link>http://feeds.feedburner.com/~r/techrepublic/security/~3/343455265/</link>
	<description>&lt;p&gt;&lt;em&gt;Not every security control is successful, particularly those not transparent to business users.  This is the story of a failed attempt to encrypt email and the lessons learned. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;font id=&quot;udds97&quot;&gt;&lt;/font&gt;&lt;font id=&quot;udds98&quot; size=&quot;2&quot;&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;-&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Story &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once upon a time, a large enterprise decided it was time to encrypt sensitive information sent via email.  They were regulated by both &lt;a href=&quot;http://en.wikipedia.org/wiki/HIPAA&quot; target=&quot;_blank&quot;&gt;HIPAA&lt;/a&gt; and &lt;a href=&quot;http://sarbanes101guide.com/sarbanes-oxley-faq.htm&quot; target=&quot;_blank&quot;&gt;SOX&lt;/a&gt;, so getting executive management on board was no problem.  The security team practiced due diligence, reviewing multiple offerings, speaking with Gartner analysts, and discussing technical challenges with engineering.  (Security and engineering are hereafter referred to as the &amp;#8220;technical team.&amp;#8221;)  The proposal was completed, submitted, and approved.&lt;/p&gt;
&lt;p&gt;The solution implemented included the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Automatic outbound message encryption.  Messages were encrypted when the content filtering engine, referencing HIPAA and &lt;a href=&quot;http://en.wikipedia.org/wiki/Personally_identifiable_information&quot; target=&quot;_blank&quot;&gt;PII&lt;/a&gt; lexicons, calculated a score greater than the threshold set.&lt;/li&gt;
&lt;li&gt;Encrypted messages could be delivered to recipients as password-protected attachments.  The solution also supported sending affected messages to an online mailbox in the enterprise data center, forwarding a notification to the recipient, and requiring the recipient to log in to the online mailbox to retrieve the message.  Remote access was via SSL.  However, senior management thought this was too much trouble for vendors, customers, etc.   They directed the technical team to go the attachment route.&lt;/li&gt;
&lt;li&gt;Manual encryption was possible by marking the message &amp;#8220;confidential.&amp;#8221;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There were other features as well, but they&amp;#8217;re not important to our story.&lt;/p&gt;
&lt;p&gt;The pilot began, involving IS personnel only.  Everyone thought it was a great product, except too many messages were being encrypted.  This was inconvenient for the recipients.  So, the technical team adjusted the lexicon scores and the overall message score threshold, trying to balance security with convenience.  By the time they were done, the scale had shifted to allowing quite a few messages that should have been encrypted to pass in plain text.&lt;/p&gt;
&lt;p&gt;The pilot finished with IS satisfied this was the right solution.  Training videos had been distributed to all email users, with accompanying quick-reference cards.  All was ready.  So on a bright, sunny morning, they flipped the switch.  Everyone now had encrypted email, and the fun began.&lt;/p&gt;
&lt;p&gt;The first wave of complaints came from executive management.  It was too inconvenient working with their intended recipients, getting them to understand how to receive their email.  Further, certain senior managers didn&amp;#8217;t believe their email should be subject to auto-encryption.  The technical team responded, turning off auto-encryption, leaving executives to decide whether or not to encrypt each message.&lt;/p&gt;
&lt;p&gt;This was followed by an upswell of frustration across the enterprise, as users rebelled against the oppressive tyranny of auto-encryption.  So, without management support for auto-protection, the technical team turned it off, relying on users to encrypt when they thought it necessary to protect sensitive information.&lt;/p&gt;
&lt;p&gt;Several quiet months passed.  Then one day the Legal department called.  It seemed they hadn&amp;#8217;t been using the encrypted mail system, and they were concerned about possible &lt;a href=&quot;http://en.wikipedia.org/wiki/Protected_Health_Information&quot; target=&quot;_blank&quot;&gt;ePHI&lt;/a&gt; compromise.  Further investigation by the technical team revealed the encrypted email attachment, the protected message, was being stripped by most receiving email systems.  It couldn&amp;#8217;t be scanned for malware.  Go figure.&lt;/p&gt;
&lt;p&gt;Checking with other departments, the technical team discovered that, with the exception of a few people in IS, no one was actually using the system.  New employees didn&amp;#8217;t know it existed, management didn&amp;#8217;t enforce compliance, and many outside entities wouldn&amp;#8217;t accept encrypted attachments.  The end.&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
The Moral&lt;/strong&gt;&lt;br /&gt;
This story has a lesson&amp;#8230; well maybe more than one.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Piloting a security control not transparent to business users, that significantly affects the way they do work, should actually be tested by business users.  Restricting testing of such a solution to IS personnel is a big mistake.&lt;/li&gt;
&lt;li&gt;Management must fully understand the business impact and be willing to enforce use of the control.  This means the technical team should help management understand how the solution works, from the users&amp;#8217; perspective, before purchase and implementation.  Expecting executive enforcement of a solution that results in a series of unwanted surprises is unreasonable.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There were probably other mistakes made, but these two were enough to render the message encryption solution a failure, a control nobody used.&lt;/p&gt;
&lt;br /&gt;
  &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://www.pheedo.com/img.phdo?i=37d2d1ab18bba2837cfa2667d498505f&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;
&lt;img src=&quot;http://www.pheedo.com/feeds/tracker.php?i=37d2d1ab18bba2837cfa2667d498505f&quot; border=&quot;0&quot; height=&quot;1&quot; width=&quot;1&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/techrepublic/security/~4/343455265&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 23 Jul 2008 11:00:16 +0000</pubDate>
</item>
<item>
	<title>The Blog of Ben Rockwood: DTrace IP Provider... Oh no you didn't....</title>
	<guid>tag:cuddletechblogs,2008:theblogofbenrockwood.953</guid>
	<link>http://cuddletech.com/blog/pivot/entry.php?id=953</link>
	<description>&lt;p&gt;
In my previous post about the IP Provider I got the following comment: &lt;i&gt;&quot;There is nothing unpleasant about the wonderfulness that is tcpdump! You’ll need to put a lot of work in to match tcpdump’s usefulness with Dtrace…&quot;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
That just sounds like a challenge.  Bring it on!  Can &lt;i&gt;snoop&lt;/i&gt; or &lt;i&gt;tcpdump&lt;/i&gt; do this?
&lt;/p&gt;
&lt;pre&gt;
root@ultra ~$ ./ip_whosent.d 
Packet sent to 192.168.100.4: 88 byte packet on behalf of ssh (PID: 1075)
Packet sent to 192.168.100.4: 88 byte packet on behalf of ssh (PID: 1075)
Packet sent to 208.67.222.222: 56 byte packet on behalf of nscd (PID: 152)
Packet sent to 208.67.222.222: 71 byte packet on behalf of nscd (PID: 152)
Packet sent to 208.67.222.222: 56 byte packet on behalf of nscd (PID: 152)
Packet sent to 72.14.207.99: 52 byte packet on behalf of firefox-bin (PID: 1944)
Packet sent to 8.12.32.9: 52 byte packet on behalf of thunderbird-bin (PID: 1133)
Packet sent to 8.12.32.9: 54 byte packet on behalf of thunderbird-bin (PID: 1133)
Packet sent to 8.12.32.9: 87 byte packet on behalf of thunderbird-bin (PID: 1133)
Packet sent to 8.12.32.9: 58 byte packet on behalf of thunderbird-bin (PID: 1133)
Packet sent to 8.12.32.9: 64 byte packet on behalf of thunderbird-bin (PID: 1133)
Packet sent to 8.12.32.9: 65 byte packet on behalf of thunderbird-bin (PID: 1133)
Packet sent to 208.67.219.230: 644 byte packet on behalf of firefox-bin (PID: 1944)
Packet sent to 208.67.219.230: 637 byte packet on behalf of firefox-bin (PID: 1944)
Packet sent to 72.14.207.99: 660 byte packet on behalf of firefox-bin (PID: 1944)
Packet sent to 208.67.219.230: 52 byte packet on behalf of firefox-bin (PID: 1944)
Packet sent to 208.67.219.230: 664 byte packet on behalf of firefox-bin (PID: 1944)
Packet sent to 8.12.32.9: 48 byte packet on behalf of thunderbird-bin (PID: 1133)
Packet sent to 72.14.207.99: 40 byte packet on behalf of firefox-bin (PID: 1944)
^C
&lt;/pre&gt;
&lt;p&gt;
Here is the script:
&lt;/p&gt;
&lt;pre&gt;
#!/usr/sbin/dtrace -qs 



ip:ip:*:send
/execname != &quot;sched&quot;/
{ 
        printf(&quot;Packet sent to %s: %d byte packet on behalf of %s (PID: %d)n&quot;, 
                        args[2]-&gt;ip_daddr, args[4]-&gt;ipv4_length, execname, pid ); 
}
&lt;/pre&gt;
&lt;p&gt;
Oh but wait....... how about a full call stack on each sent packet?  Just add a new line to the above script: stack();
&lt;/p&gt;
&lt;pre&gt;
root@ultra ~$ ./ip_sentstack.d 
Packet sent to 72.14.207.99: 84 byte packet on behalf of ping (PID: 2020)

              ip`ip_wput_ire+0x21f5
              ip`ire_send+0x1c9
              ip`ire_add_then_send+0x2b9
              ip`ip_newroute+0xa0a
              ip`ip_output_options+0x18c7
              ip`icmp_wput+0x44a
              unix`putnext+0x22b
              genunix`strput+0x1ad
              genunix`kstrputmsg+0x261
              sockfs`sosend_dgram+0x26e
              sockfs`sotpi_sendmsg+0x4a8
              sockfs`sendit+0x160
              sockfs`sendto+0x8e
              sockfs`sendto32+0x2d
              unix`sys_syscall32+0x101
&lt;/pre&gt;
&lt;p&gt;
Or check out one of the examples &lt;a href=&quot;http://wikis.sun.com/display/DTrace/ip+Provider&quot;&gt;on the IP Provider wiki page&lt;/a&gt; (this is almost certainly by Brendan Gregg):
&lt;/p&gt;
&lt;pre&gt;
# ./ipio.d
 CPU  DELTA(us)          SOURCE               DEST      INT  BYTES
   1     598913    10.1.100.123 -&gt;   192.168.10.75  ip.tun0     68
   1         73   192.168.1.108 -&gt;     192.168.5.1     nge0    140
   1      18325   192.168.1.108 -     192.168.5.1     nge0    140
   1         69    10.1.100.123 -   192.168.10.75  ip.tun0     68
   0     102921    10.1.100.123 -&gt;   192.168.10.75  ip.tun0     20
   0         79   192.168.1.108 -&gt;     192.168.5.1     nge0     92
&lt;/pre&gt;
&lt;p&gt;
Here is the script:
&lt;/p&gt;
&lt;pre&gt;
#!/usr/sbin/dtrace -s

#pragma D option quiet
#pragma D option switchrate=10hz

dtrace:::BEGIN
{
        printf(&quot; %3s %10s %15s    %15s %8s %6sn&quot;, &quot;CPU&quot;, &quot;DELTA(us)&quot;,
            &quot;SOURCE&quot;, &quot;DEST&quot;, &quot;INT&quot;, &quot;BYTES&quot;);
        last = timestamp;
}

ip:::send
{
        this-&gt;elapsed = (timestamp - last) / 1000;
        printf(&quot; %3d %10d %15s -&gt; %15s %8s %6dn&quot;, cpu, this-&gt;elapsed,
            args[2]-&gt;ip_saddr, args[2]-&gt;ip_daddr, args[3]-&gt;ill_name,
            args[2]-&gt;ip_plength);
        last = timestamp;
}

ip:::receive
{
        this-&gt;elapsed = (timestamp - last) / 1000;
        printf(&quot; %3d %10d %15s - %15s %8s %6dn&quot;, cpu, this-&gt;elapsed,
            args[2]-&gt;ip_daddr, args[2]-&gt;ip_saddr, args[3]-&gt;ill_name,
            args[2]-&gt;ip_plength);
        last = timestamp;
}
&lt;/pre&gt;
&lt;p&gt;
Can DTrace decrypt IPsec ESP payloads?  No.  Ok, so tcpdump isn't dead yet, but the capabilities offered by DTrace are far deeper.  I've got a ton of ideas more that I could put here, but don't have time atm.  DTrace for the win!&lt;/p&gt;</description>
	<pubDate>Wed, 23 Jul 2008 09:01:00 +0000</pubDate>
</item>
<item>
	<title>Adnans Sysadmin/Dev Blog: Links for 2008-07-22 [del.icio.us]</title>
	<guid>http://del.icio.us/awasim#2008-07-22</guid>
	<link>http://feeds.feedburner.com/~r/AdnansSysadmin/devBlog/~3/343213450/awasim</link>
	<description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/linux/library/l-10sysadtips/index.html?ca=drs-&quot;&gt;Lazy Linux: 10 essential tricks for admins&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/AdnansSysadmin/devBlog/~4/343213450&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 23 Jul 2008 05:00:00 +0000</pubDate>
</item>
<item>
	<title>Chris Siebenmann: Retracting blog entries in the face of syndication feeds</title>
	<guid>http://utcc.utoronto.ca/~cks/space/blog/tech/RetractionAndSyndication</guid>
	<link>http://utcc.utoronto.ca/~cks/space/blog/tech/RetractionAndSyndication</link>
	<description>&lt;div class=&quot;wikitext&quot;&gt;&lt;h2&gt;Retracting blog entries in the face of syndication feeds&lt;/h2&gt;

&lt;p&gt;Suppose that you have accidentally published a blog entry that you
&lt;a href=&quot;http://www.matasano.com/log/1105/regarding-the-post-on-chargen-earlier-today/&quot;&gt;really didn't want to&lt;/a&gt;
and now want to retract, unpublish, disappear, or the synonym of
your choice the entry. You could just delete the entry, but this
has a problem: your syndication feeds (RSS, Atom, et al).&lt;/p&gt;

&lt;p&gt;Specifically, removing an entry from your blog and thus your feed
doesn't remove it for people who've already fetched a version of your
feed that included the entry. Feed readers keep their own copy of
entries that they've seen (up to whatever expiry limit the user has
set) and no common feed reader will remove an entry just because it's
disappeared from a feed, because entries disappear from feeds all the
time (since a feed only contains the N most recent entries).&lt;/p&gt;

&lt;p&gt;(Feed readers could be coded to notice that an entry is missing at the
front or between two others, instead of at the end, but that would take
extra effort. And as far as I know there is no marker in any of the
syndication formats for 'remove this entry now'.)&lt;/p&gt;

&lt;p&gt;If you are quite fast and very lucky, you can catch the mistake and
remove the entry before anyone has pulled a version of your blog's
syndication feeds that has the entry in it. But you are probably not
that fast, especially if you are a popular blog and thus people are
pulling your syndication feed all the time.&lt;/p&gt;

&lt;p&gt;However, you can take advantage of another feed reader feature: if you
change the contents of an entry, pretty much every feed reader will
update their copy of the entry with the new contents. So &lt;strong&gt;instead of
removing the retracted entry, replace its contents with 'this entry has
been retracted' or the like&lt;/strong&gt;. If there's other parts of the entry that
need similar retraction (the title, for example), do the same thing with
them.&lt;/p&gt;

&lt;p&gt;(In theory you could update the entry to have an empty contents and
title, but I think that 'this entry has been retracted' looks better to
your readers and runs less risk of feed readers deciding that something
clearly has gone wrong with your feed and thus they aren't going to
update their copy.)&lt;/p&gt;

&lt;p&gt;Ideally there would be a way of publishing an entry just in your feed,
so your main blog pages don't have a 'this entry has been retracted'
entry. I suspect most blog software doesn't support this, so what you
can do is first update the retracted entry with the retraction notice,
then wait a day or so for everyone's feed readers to pull this updated
version, and then remove the entry entirely.&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt; (&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/tech/RetractionAndSyndication?showcomments#comments&quot;&gt;2 comments&lt;/a&gt;.) &lt;/div&gt;</description>
	<pubDate>Wed, 23 Jul 2008 04:58:23 +0000</pubDate>
</item>
<item>
	<title>Tech at Play: RFID technology at work</title>
	<guid>http://www.techatplay.com/?p=171</guid>
	<link>http://feeds.feedburner.com/~r/TechAtPlay/~3/343168554/</link>
	<description>&lt;p&gt;If you&amp;#8217;re pardon the title, but I figured that &amp;#8220;RFID technology at play&amp;#8221; just sounds weird here &amp;#8212; never mind that I named the site &lt;strong&gt;Tech at Play&lt;/strong&gt; in the first place. Anyway, what I wanted to say is that I went over to the &lt;a href=&quot;http://www.sentosa.com.sg/index.html&quot; target=&quot;_blank&quot;&gt;resort island of Sentosa&lt;/a&gt; over the weekend.&lt;/p&gt;
&lt;p&gt;The company running the resort island issued an entrance card that serves as an electronic tag for its automated gantries. The technology is obviously RFID, though the interesting thing here is that their RFID card is made from cardboard instead of plastic. To verify my theory, I successfully ripped the card into two-halves &amp;#8212; at the end of the day of course.&lt;/p&gt;
&lt;p&gt;Note the outline of the RFID antenna in the second photo.  Apologies if you&amp;#8217;re wondering about the view outside my window, which, since I live on the 24th level, is really nice.&lt;/p&gt;
&lt;p&gt;My &lt;a href=&quot;http://www.techatplay.com/?p=143&quot; target=&quot;_blank&quot;&gt;RFID reader&lt;/a&gt; is nicely mothballed into a nice storage box, so I didn&amp;#8217;t feel inclined to rig it up this time.  This is assuming compatible standards in the first place, which seems too much to ask for. Despite all the noise over RFID lately however, I very much doubt that any form of encryption or challenge-response mechanism is even used here.&lt;/p&gt;
&lt;p&gt;Then again, it does not make much sense to forge a SG$3 (~US$2.20) ticket either, does it?&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-170&quot; title=&quot;RFID&quot; src=&quot;http://www.techatplay.com/wp-content/uploads/2008/07/rfid_1.jpg&quot; alt=&quot;&quot; width=&quot;470&quot; height=&quot;454&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-169&quot; title=&quot;RFID (Close-up)&quot; src=&quot;http://www.techatplay.com/wp-content/uploads/2008/07/rfid_2.jpg&quot; alt=&quot;&quot; width=&quot;470&quot; height=&quot;365&quot; /&gt;&lt;/p&gt;
&lt;img src=&quot;http://feeds.feedburner.com/~r/TechAtPlay/~4/343168554&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 23 Jul 2008 03:52:37 +0000</pubDate>
</item>
<item>
	<title>The Daily ACK: OSCON: Practical Erlang Programming</title>
	<guid>tag:blogger.com,1999:blog-7734900.post-2944256317851886680</guid>
	<link>http://feeds.feedburner.com/~r/TheDailyAck/~3/342894400/oscon-practical-erlang-programming.html</link>
	<description>This afternoon I'm sitting in &quot;&lt;em&gt;&lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/detail/3373&quot;&gt;Practical Erlang Programming&lt;/a&gt;&lt;/em&gt;&quot; given by &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/speaker/10595&quot;&gt;Francesco Cesarini&lt;/a&gt;. &lt;a href=&quot;http://en.wikipedia.org/wiki/Erlang_%28programming_language%29&quot;&gt;Erlang&lt;/a&gt; has been around for almost twenty years, and is a niche language. However we're increasingly starting to hear more about it due to the growth in the number of multi-core machines. So I figured I so go and find out &lt;a href=&quot;http://www.pragprog.com/articles/erlang&quot;&gt;what all the fuss was about&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src=&quot;http://www.babilim.co.uk/blog/jpg/oscon08_practical_erlang.jpg&quot; /&gt;&lt;/center&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; I think Francesco has really overestimated the capacity of the wireless network, he's just told ninety people to download the &lt;a href=&quot;http://www.erlang.org/download/otp_src_R12B-3.tar.gz&quot;&gt;source bundle&lt;/a&gt; and install Erlang.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Okay, we're kicking off with &lt;a href=&quot;http://www.erlang.org/doc/reference_manual/data_types.html&quot;&gt;data types&lt;/a&gt;; integers, floats, atoms are the simple types. Then we have tuples and lists. Interestingly variables in Erlang are single assignment, an values of variables can not be changed once it has been bound. Puzzled, variables are not very variable at that point?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;1&amp;gt; A = 123.&lt;br /&gt;123&lt;br /&gt;2&amp;gt; A.&lt;br /&gt;123&lt;br /&gt;3&amp;gt; A = 124.&lt;br /&gt;** exception error no match of right hand&lt;br /&gt;4&gt; f().&lt;br /&gt;ok&lt;br /&gt;5&gt; A = 124.&lt;br /&gt;124&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Pattern matching is used for assigning vales to variables, controlling the executing flow of programs and extracting values.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Moving onto to function calls, this looks, well. Odd.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;area( {square, Side} )      -&gt;&lt;br /&gt;  Side * Side ;&lt;br /&gt;area( {circle, Radius } )   -&gt;&lt;br /&gt;  3.14 * Radius * Radius;&lt;br /&gt;area( {triangle, A, B, C} ) -&gt;&lt;br /&gt;  S = ( A + B + C )/2,&lt;br /&gt;  math:sqrt(S*(S-A)*(S-B)*(S-C));&lt;br /&gt;area( Other ) -&gt;&lt;br /&gt;  {error, invalid_object}.&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Function have clauses separated by '&lt;code&gt;;&lt;/code&gt;'. Erlang programs consist of a collection of modules that contain functions that call each other. Function and modules names must be atoms.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;factorial(0) -&gt; &lt;br /&gt;  1;&lt;br /&gt;factorial(N) -&gt;&lt;br /&gt;  N * factorial(N-1).&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Variables are local to functions and allocated and deallocated automatically.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Modules are stored in files with the &lt;code&gt;.erl&lt;/code&gt; suffix, module and file names must be the same. Modules are names with the &lt;code&gt;-module(Name).&lt;/code&gt; directive.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;-module(demo).&lt;br /&gt;-export([double/1]).&lt;br /&gt;&lt;br /&gt;% Exporting the function double with arity 1&lt;br /&gt;&lt;br /&gt;double(X) -&gt;&lt;br /&gt;  times(X, 2).&lt;br /&gt;&lt;br /&gt;times( X, N ) -&gt;&lt;br /&gt;  X * N.&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;compiling this from the command line&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;1&gt; cd(&quot;/Users/aa/&quot;).&lt;br /&gt;2&gt; c(demo).&lt;br /&gt;{ok,demo}&lt;br /&gt;3&gt; demo:double(10).&lt;br /&gt;20&lt;br /&gt;4&gt; demo:times(1,2)&lt;br /&gt;**exception error: undefined function demo:times&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; We've now looked at the basics, we're moving on to sequential Erlang; Conditionals, guards and recursion.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;case lists:members(foo, List) of&lt;br /&gt;  true -&gt; ok;&lt;br /&gt;  false -&gt; {error, unknown}&lt;br /&gt;end&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;In a conditional one branch must always succeed, you can put the '&lt;code&gt;_&lt;/code&gt;' or an unbound variable in the last clause to ensure this happens.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;if&lt;br /&gt;  X  1 -&gt; smaller;&lt;br /&gt;  X &gt; 1 -&gt; greater ;&lt;br /&gt;  X == 1 -&gt; equal&lt;br /&gt;end&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Again, one branch must always succeed, by using &lt;code&gt;true&lt;/code&gt; as the last guard you ensure that the last clause will always succeed should previous ones evaluate to false, see it as an 'else' clause. So we can have,&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;factorial(N) when N &gt; 0 -&gt;&lt;br /&gt;   N * factorial( N - 1 );&lt;br /&gt;factorial(0) -&gt; &lt;br /&gt;   1.&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;instead of having this,&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;factorial(0) -&gt; &lt;br /&gt;  1;&lt;br /&gt;factorial(N) -&gt;&lt;br /&gt;  N * factorial(N-1).&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Of these two the top one is the faster one, but you really shouldn't really worry about that when using Erlang, apparently...&lt;br /&gt;&lt;br /&gt;All variables in guards have to be bound. If all guards have to succeed, use '&lt;code&gt;,&lt;/code&gt;' to seperate them, if one has to succeed, use '&lt;code&gt;;&lt;/code&gt;' to separate them. Guards have to be free of side effects.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; On to recursion,&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;average(X) -&gt; sum(X) / len (X).&lt;br /&gt;&lt;br /&gt;sum([H|T) -&gt; H + sum(T);&lt;br /&gt;sum([]) -&gt; 0.&lt;br /&gt;&lt;br /&gt;len([_|T]) -&gt; 1 + len(T);&lt;br /&gt;len([]) -&gt; 0.&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Note the pattern of recursion is the same in both cases. Taking a list and evaluating an element is a very common pattern...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Now onto Build In Functions (BIFs)...&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;date()&lt;br /&gt;time()&lt;br /&gt;length(List)&lt;br /&gt;size(Tuple)&lt;br /&gt;atom_to_list(Atom)&lt;br /&gt;list_to_tuple(List)&lt;br /&gt;integer_to_list(234)&lt;br /&gt;tuple_to_list(Tuple)&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;BIFs are by convention regarded as being in the erlang module. There are BIFs for process and port handling, object access and examination, meta programming, type conversion, etc.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; We're running through all the possible &lt;a href=&quot;http://erlang.org/doc/reference_manual/errors.html&quot;&gt;run time errors&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; We're breaking (late!) for coffee...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; ...and we're back, and walking through some examples, and onwards to concurrent Erlang.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;Pid2 = spawn(Mod, Func, Args)&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Before the spawn code is executed by Pid1, afterwards a new process Pid2 is created. The identified Pid2 is only known to Pid1.  A process terminates abnormally when run-time error occurs, and normally when there is no more code to execute. Processes do not share data, and the only way to do so is using message passing. Sending a message will never fail, messages sent to non existing processes are thrown away. Received messages are stored in a process mailbox, and will receive them inside a receive clause,&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;recieve&lt;br /&gt;  {resetn, Board } -&gt; reset(Board);&lt;br /&gt;  {shut_down, Board{ -&gt; {error, unknown_msg}&lt;br /&gt;end&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Unlike a &lt;code&gt;case&lt;/code&gt; block, receive suspends the process until a message which matches a case is received. Message passing is asynchronous, one of the things you look for in stress testing Erlang systems is running out of memory because of full mailboxes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; We're getting into a static versus dynamic typing argument, the bizarreness is that even the Francesco seems to think that static typing is a good thing. Why is that? I'm really surprised, after all I'd argue that there are a bunch of &lt;a href=&quot;http://www.dailyack.com/2008/02/reasons-to-use-loosely-types-languages.html&quot;&gt;reasons to use loosely typed languages&lt;/a&gt; in preference to statically typed ones.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; It's also interesting that some people in the audience here aren't getting the &quot;&lt;em&gt;let it crash&lt;/em&gt;&quot; mantra coming from Francesco. In a highly concurrent language where everything is a process, letting a process crash is just how you handle errors. A process crash is essentially the same as throwing an exception.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; I'm starting to loose the thread of the talk now. Pity, Francesco has just got to the interesting bit. It's been a long day...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; ...and we're done. Chris was &lt;a href=&quot;http://sirhc.us/journal/2008/07/22/oscon-2008-practical-erlang-programming/&quot;&gt;also blogging&lt;/a&gt; the tutorial so head over to his post for more coverage.
&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/~a/TheDailyAck?a=UtHLKG&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~a/TheDailyAck?i=UtHLKG&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=wD4jYJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=wD4jYJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=yiUxYJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=yiUxYJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=zutzIJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=zutzIJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=wTlUTJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=wTlUTJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=L1PctJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=L1PctJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TheDailyAck/~4/342894400&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 23 Jul 2008 02:31:31 +0000</pubDate>
	<author>noreply@blogger.com (Al.)</author>
</item>
<item>
	<title>The Daily ACK: OSCON: Perl Worst Practices</title>
	<guid>tag:blogger.com,1999:blog-7734900.post-2109968589655746243</guid>
	<link>http://feeds.feedburner.com/~r/TheDailyAck/~3/342747907/oscon-perl-worst-practices.html</link>
	<description>So after coffee I've bailed from &quot;&lt;em&gt;&lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-open-source-startup-in-three.html&quot;&gt;An Open Source Startup in Three Hours&lt;/a&gt;&lt;/em&gt;&quot; into &quot;&lt;em&gt;&lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/detail/2443&quot;&gt;Perl Worst Practices&lt;/a&gt;&lt;/em&gt;&quot; with &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/speaker/4710&quot;&gt;Damian Conway&lt;/a&gt;, squeezing myself into one of the few empty seats.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src=&quot;http://www.babilim.co.uk/blog/jpg/oscon_perl_worst_practices.jpg&quot; /&gt;&lt;/center&gt;&lt;br /&gt;Damian is going through his &lt;a href=&quot;http://www.perlfoundation.org/perl5/index.cgi?selfgol&quot;&gt;SelfGOL&lt;/a&gt; code, and oh boy has he done some evil things with Perl...&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;You have to minimise wear and tear on all parts of the keyboard&lt;/blockquote&gt;&lt;br /&gt;Just &lt;a href=&quot;http://sirhc.us/journal/2008/07/22/oscon-2008-day-2/&quot;&gt;like Chris&lt;/a&gt; I'm looking forward to the prospect of putting these worst practices into my own code when I return to my work next week.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Far too few people are using their source code as their user interface&lt;/blockquote&gt;&lt;br /&gt;&lt;a href=&quot;http://canspice.org/&quot;&gt;Brad&lt;/a&gt; has been sitting in this one since the beginning, so if you're really interested in what Damian has been saying then just jump over to &lt;a href=&quot;http://canspice.org/2008/07/22/oscon-2008-perl-worst-practices-by-damian-conway/&quot;&gt;his blog post&lt;/a&gt; for the principles of worst practice...
&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/~a/TheDailyAck?a=6uMRco&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~a/TheDailyAck?i=6uMRco&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=CFwS7J&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=CFwS7J&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=1ICC9J&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=1ICC9J&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=wYUDKJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=wYUDKJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=h2LrcJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=h2LrcJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=eedCEJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=eedCEJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TheDailyAck/~4/342747907&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 23 Jul 2008 02:31:20 +0000</pubDate>
	<author>noreply@blogger.com (Al.)</author>
</item>
<item>
	<title>The Daily ACK: OSCON: An Open Source Startup in Three Hours</title>
	<guid>tag:blogger.com,1999:blog-7734900.post-1508138501948708583</guid>
	<link>http://feeds.feedburner.com/~r/TheDailyAck/~3/342648643/oscon-open-source-startup-in-three.html</link>
	<description>The second day of &lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-2008.html&quot;&gt;OSCON&lt;/a&gt;, and this morning I'm sitting in &quot;&lt;em&gt;&lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/detail/2734&quot;&gt;An Open Source Startup in Three Hours&lt;/a&gt;&lt;/em&gt;&quot; given by &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/speaker/6580&quot;&gt;Gavin Doughtie&lt;/a&gt; and &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/speaker/6586&quot;&gt;Andrew Hyde&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src=&quot;http://www.babilim.co.uk/blog/jpg/oscon_startup_in_3_hours.jpg&quot; /&gt;&lt;/center&gt;&lt;br /&gt;It's an odd choice for an &lt;a href=&quot;http://www.astro.ex.ac.uk/people/aa/&quot;&gt;academic like me&lt;/a&gt;, but considering the &lt;a href=&quot;http://pacrowther.staff.shef.ac.uk/stfc.html&quot;&gt;current funding crisis&lt;/a&gt; perhaps not as inexplicable as all that...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; The trick to running a successful company is to work half a day, work the first twelve hours or the second twelve hours it doesn't matter. It's not about getting rich quick, or about pyramids. Andrew is talking about his &lt;a href=&quot;http://startupweekend.com/&quot;&gt;startup weekends&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Our company was built in 3 hours, the rest was marketing bullshit - Bill Gates&lt;/blockquote&gt;&lt;blockquote&gt;Amazing product are never built in a long time. Just short, simple acid trips - Steve Jobs&lt;/blockquote&gt;&lt;br /&gt;He's talking about deliverables and paper prototyping. Obviously they're not going to code it up, launch a project and get acquired by lunch time, but hopefully they're going to give us the tools to think about how to do that.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Paper prototyping allows you to see things quickly, and avoid those six month mistakes and to fail really fast. Startups succeed with the right team and a solid idea. But it comes down to timing and luck and good design. But good designers are hard to find.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; A startup has to solve problems, but it has to solve more than just your problem. You need to float your idea to as many people as possible, and as smart as people as you can find. Unlike a lot of people Andrew is arguing that if people tell you your going to fail, either your pitching your idea wrong, or you're working on the wrong thing.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; What not to do; think your idea is worth anything, build anything that is &quot;neat&quot; or &quot;cute&quot;, define development or design early on, or pick a domain. If you pick up a domain before you talk to people you probably haven't developed your idea well enough. You have to define your goals, build stuff, launch it quickly and see what people think.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Define what your idea is and isn't, define the problem and outline your solution to it. Andrew is really hitting on paper prototyping you idea, design and interface. I'm pretty surprised, while I've never heard it called that before this is something I always do for a project, he's also hitting on what he's calling '&lt;a href=&quot;http://www.moleskineus.com/&quot;&gt;moleskinning&lt;/a&gt;' which seems to be the equivalent of the good old laboratory note book. You write down ideas, steps you've taken, that sort of thing. Maybe a rigorous science background is a good thing for a startup?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Design is important, and a lot of people get it wrong. Go to someplace like &lt;a href=&quot;http://www.cssbeauty.com/&quot;&gt;CSS Beauty&lt;/a&gt; and find out what's hot and what's not.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Over to Gavin and implementation. Things you need before launch; source control, a sever, some programming and you need to deploy something. You might want to think about a 'light engineering' process. The lightest engineering Gavin can think of is '1-click installs' and content based startups.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; He's now talking about &lt;a href=&quot;http://www.amazon.com/ec2&quot;&gt;Amazon EC2&lt;/a&gt;. If anyone is sitting in a startup tutorial and doesn't know about &lt;a href=&quot;http://www.amazon.com/ec2&quot;&gt;EC2&lt;/a&gt; (and &lt;a href=&quot;http://www.amazon.com/s3&quot;&gt;S3&lt;/a&gt;) then they're in trouble. He's walking us through building an EC2 image though, which is quite interesting. I've played with S3, but not EC2 in any depth. He's pointing out that you when you're doing development you don't have to keep the instances running, Amazon will charge you for those running instances, just shut them down. However when you do shut them down, or they crash, any data in the instance is gone, so you have to push it off to long term storage like S3.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Lighter weight than EC2 is &lt;a href=&quot;http://code.google.com/appengine/&quot;&gt;Google App Engine&lt;/a&gt;, which (as we all know?) is a sandbox Python runtime... and now we're getting a demo. App Engine is actually something I've started to play with as I managed to pick up an invite...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; He's pointed us towards &lt;a href=&quot;http://www.opendesigns.org/&quot;&gt;opendesigns.org&lt;/a&gt; for (free) design templates, and encouraging us to put real design into your startup as soon as possible because it'll help you think about it more seriously.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Gavin's talking about &lt;a href=&quot;http://www.djangoproject.com/&quot;&gt;Django&lt;/a&gt;,&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The Django guys will say 'Don't say it's like rails,' but it is like rails.&lt;/blockquote&gt;Which reminds me, I must take a serious look at &lt;a href=&quot;http://www.catalystframework.org/&quot;&gt;Catalyst&lt;/a&gt; at some point...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; After fiddling around with CSS templates and &lt;a href=&quot;http://dojotoolkit.org/&quot;&gt;Dojo&lt;/a&gt;, which looks pretty cool by the way, Gavin is back deploying his prototype App Engine project and showing how the group development stuff works...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Back to talking about startups. What you don't need is; scalability, performance or industrial strength anything, unless of course that's what your startup is about. Technological pitfalls; Java, no local expertise and being overambitious. No really, he's telling us not to use Java. There is lots of complexity in Java land, and he really would recommend looking at the &lt;a href=&quot;http://en.wikipedia.org/wiki/LAMP_(software_bundle)&quot;&gt;LAMP&lt;/a&gt; stacks.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Even though it's really obvious stuff a simple application may have some technical depth to it. So don't be overambitious...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Remember your team is your technology. Don't be afraid to have a single point of failure if that gives you leverage. Spend a bit of time looking for leverage in your technology.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Marketing is a big thing. If you build it, they won't necessarily come...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Andrew is back and talking about feature creep, which is the number two killer of startups, right after running out of money. You need a kerbside pitch, and an elevator pitch. A kerbside pitch is real fast, essentially &quot;&lt;em&gt;I work at etc company, which is like foo except for bar&lt;/em&gt;&quot;. Every one on the team should be able to do the elevator pitch, the longer (slightly more involved) pitch.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Back to tools, pointing us at &lt;a href=&quot;http://www.jumpbox.com/&quot;&gt;JumpBox&lt;/a&gt; which isn't something I'd run across before...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Over to talking about legal stuff. You need to get everyone that you've ever talked to about the project, that has ever given any input to it, to sign bits of paper and state their intent.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;If you can't make it good, at least make it look good - Bill Gates&lt;/blockquote&gt;&lt;blockquote&gt;Intellectual property has the shelf life of a banana - Bill Gates&lt;/blockquote&gt;&lt;br /&gt;...and software patents are evil if you don't have them!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; We're breaking for coffee, I think I'm going to jump out of this tutorial and try and slip into the second half of &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/speaker/4710&quot;&gt;Damian&lt;/a&gt;'s &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/detail/2443&quot;&gt;Perl Worst Practices&lt;/a&gt; after coffee. This stuff is interesting, but they're really talking about startups as websites, which while okay wasn't really what I was here for...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Jumped over into &lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-perl-worst-practices.html&quot;&gt;Damian's talk&lt;/a&gt;.
&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/~a/TheDailyAck?a=lAIrhq&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~a/TheDailyAck?i=lAIrhq&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=OwHdaJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=OwHdaJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=APnxSJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=APnxSJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=27ZIiJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=27ZIiJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=poPNtJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=poPNtJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=GzvENJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=GzvENJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TheDailyAck/~4/342648643&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 23 Jul 2008 02:31:11 +0000</pubDate>
	<author>noreply@blogger.com (Al.)</author>
</item>
<item>
	<title>The Daily ACK: OSCON: Perl Security</title>
	<guid>tag:blogger.com,1999:blog-7734900.post-965284890402500497</guid>
	<link>http://feeds.feedburner.com/~r/TheDailyAck/~3/341867884/oscon-perl-security.html</link>
	<description>This afternoon I'm breaking my &lt;a href=&quot;http://www.dailyack.com/2008/07/oscon-2008.html&quot;&gt;no Perl rule&lt;/a&gt; and I'm sitting in &quot;&lt;em&gt;&lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/detail/3049&quot;&gt;Perl Security&lt;/a&gt;&lt;/em&gt;&quot; given by &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/speaker/6631&quot;&gt;Paul Fenwick&lt;/a&gt;. I'm sitting next to &lt;a href=&quot;http://www.canspice.org/&quot;&gt;Brad&lt;/a&gt; and &lt;a href=&quot;http://sirhc.us&quot;&gt;Chris&lt;/a&gt;, and &lt;a href=&quot;http://feeds.feedburner.com/optimist.geekisp.com/samwise&quot;&gt;Sam&lt;/a&gt; is supposedly in here somewhere...&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src=&quot;http://www.babilim.co.uk/blog/jpg/oscon_perl_security.jpg&quot; /&gt;&lt;/center&gt;&lt;br /&gt;From the looks of things, Paul is trying to &lt;a href=&quot;http://sixminutes.dlugan.com/2007/10/24/presentation-20-hardt-executes-the-lessig-method/&quot;&gt;pull a Dick Hardt&lt;/a&gt; with his talk. If you've ever seen Dick's &lt;a href=&quot;http://identity20.com/media/OSCON2005/&quot;&gt;Identity 2.0 talk&lt;/a&gt; you'll know that this tutorial is going to be virtually un-bloggable...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; First pointer is to his own &lt;code&gt;&lt;a href=&quot;http://search.cpan.org/~pjf/autodie-1.99/&quot;&gt;autodie&lt;/a&gt;&lt;/code&gt; module, which was released onto &lt;a href=&quot;http://search.cpan.org/&quot;&gt;CPAN&lt;/a&gt; (very) late last night. It's a lexical equivalent of &lt;code&gt;Fatal&lt;/code&gt; for Perl 5.10, it also upgrades the &lt;code&gt;Fatal&lt;/code&gt; module to contain better diagnostics and reporting.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Paul is talking about exposing vulnerabilities in CGI code, and trying to emphasize that you must validate your input data, from users, from files and very much from the network. You need to use &lt;a href=&quot;http://gunther.web66.com/FAQS/taintmode.html&quot;&gt;taint mode&lt;/a&gt;. He's also recommending that you don't use &quot;baby taint&quot; mode and call Perl with &lt;code&gt;-t&lt;/code&gt;...&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;You may not use data derived from outside your program to affect something else outside your program - at least, not by accident. - &lt;a href=&quot;http://perldoc.perl.org/perlsec.html&quot;&gt;perlsec&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Interesting he's just shown a three line example that will allow you to get root access by running any Perl script that respects the &lt;a href=&quot;http://www.perl.com/doc/manual/html/pod/perlrun.html#ENVIRONMENT&quot;&gt;&lt;code&gt;PERL5LIB&lt;/code&gt;&lt;/a&gt;  environment variable.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; But there are problems with taint mode&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;my ($url, $file) = @ARGV;&lt;br /&gt;$url =~ m/ &lt;em&gt;pattern match&lt;/em&gt; /;&lt;br /&gt;my $safe_url - $1;&lt;br /&gt;$file =~ / &lt;em&gt;pattern match&lt;/em&gt; /;&lt;br /&gt;my $safe_file = $1;&lt;/pre&gt;&lt;/blockquote&gt;If the regular expression match for &lt;code&gt;$safe_file&lt;/code&gt; fails then &lt;code&gt;$safe_file&lt;/code&gt; is set to &lt;code&gt;$safe_url&lt;/code&gt; and that could easily be set to something like &lt;code&gt;http://foo&amp;amp;/bin/sh&lt;/code&gt;, which would be bad. You always need to check for success, either use an &lt;code&gt;if( )&lt;/code&gt; block or by explicitly check the return value from the regular expression.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; One of the things that Perl is good for is making tasks easy. One of those things is opening a file. There are lots of ways to open files in Perl, which means there are lots of way to break things. If you are opening a file you should always specify a mode, and never use the two argument version of &lt;code&gt;open&lt;/code&gt; which does much deep magic. Use the three argument version instead.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;open($fh, &quot;&quot;, $filename );&lt;/pre&gt;&lt;/blockquote&gt;However this doesn't get you out of validating your input, you still need to do that...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Symbolic links (are awesome but) can be used to do evil things. Don't use temporary files with predictable names, you could even use anonymous files &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;use autodie qw(open);&lt;br /&gt;open($fh, &quot;+&gt;&quot;, undef );&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;or you could just use the Tim's &lt;code&gt;&lt;a href=&quot;http://search.cpan.org/~tjenness/File-Temp-0.20/&quot;&gt;File::Temp&lt;/a&gt;&lt;/code&gt; module instead...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Now talking about &lt;code&gt;system&lt;/code&gt; and back ticks, Paul really hates &lt;code&gt;system&lt;/code&gt;. You really need to use the two argument version of &lt;code&gt;system&lt;/code&gt; rather than the one argument version, except of course&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;@args = ();&lt;br /&gt;system( $cmd, @args );&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;if &lt;code&gt;@args&lt;/code&gt; is empty, then it calls the one argument version of &lt;code&gt;system&lt;/code&gt;, which in turn calls the shell rather than executes the passed command directly. Which means that you can this happens,&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;system ( &quot;finger $username; rm -rf *&quot;, ( ) );&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;which is rather bad.&lt;br /&gt;&lt;br /&gt;Back ticks are worse; &quot;this&quot; is a string, 'this' is a string and `this` is executing arbitrary code on your system. Depending on your font, it's rather hard to tell the difference. &lt;br /&gt;&lt;br /&gt;The alternative is &lt;a href=&quot;http://search.cpan.org/~pjf/IPC-System-Simple/&quot;&gt;&lt;code&gt;IPC::System::Simple&lt;/code&gt;&lt;/a&gt;, which works all the way back to Pelr 5.6 and (magically) doesn't have any dependencies. Which from the sounds of it goes a long way to fixing a lot of the problems with &lt;code&gt;system&lt;/code&gt;. It also provides &lt;code&gt;capture&lt;/code&gt; which replaces back ticks.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; We're breaking for afternoon coffee...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; ...and we're back and talking about &lt;code&gt;setuid&lt;/code&gt; and &lt;code&gt;setgid&lt;/code&gt; programs. Apparently Perl is &lt;a href=&quot;http://www.nntp.perl.org/group/perl.perl5.porters/2004/05/msg91890.html&quot;&gt;ignorant of the saved uid&lt;/a&gt;, which means that it's really hard to drop privileges and make it stick. Also a dark secret, Perl's &lt;code&gt;$&amp;lt;&lt;/code&gt; and &lt;code&gt;$&amp;gt;&lt;/code&gt; variables are cached. Ouch!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; On to database security and injection attacks. He's advising us not to do our own quoting and use instead use place holders. As I've &lt;a href=&quot;http://www.dailyack.com/2007/07/oscon-taming-legacy-perl.html&quot;&gt;mentioned before&lt;/a&gt;, I rarely have to do heavy weight database work, and I'd view my knowledge of DBI as only fairly sparse, and even I know about place holders. Why does everyone think they're worth talking about at length. Bemusing!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; On to tricks and tips... and the poisoned null byte. Strings in Perl (are awesome but) can contain any character you want, including control codes and null bytes. In Perl a null byte is just another character, but in C it represents the end of a string. So if you can get a null byte down to the C layer, bad things can happen, and it's easy to pass a null byte can be easily passed in URLs.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; ...and we're done (with the main material) about an hour ahead of time. The &lt;a href=&quot;http://perltraining.com.au/notes.html&quot;&gt;course notes&lt;/a&gt;, although not the slides, for the tutorial are available online. On to the 'bonus' material, random numbers and cryptography...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; ...we're done. Now go read &lt;a href=&quot;http://www.canspice.org/2008/07/21/oscon-2008-perl-security-by-paul-fenwick/&quot;&gt;Brad's&lt;/a&gt; and &lt;a href=&quot;http://sirhc.us/journal/2008/07/21/oscon-2008-perl-security/&quot;&gt;Chris'&lt;/a&gt; posts on the Perl Security tutorial as well.
&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/~a/TheDailyAck?a=WGYSG2&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~a/TheDailyAck?i=WGYSG2&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=RBh9GJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=RBh9GJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=G6D3SJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=G6D3SJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=1ENgYJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=1ENgYJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=CHVyOJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=CHVyOJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TheDailyAck?a=v3ALfJ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TheDailyAck?i=v3ALfJ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TheDailyAck/~4/341867884&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 23 Jul 2008 02:30:58 +0000</pubDate>
	<author>noreply@blogger.com (Al.)</author>
</item>
<item>
	<title>The Daily ACK: OSCON: Python in 3 Hours</title>
	<guid>tag:blogger.com,1999:blog-7734900.post-4069963576149388878</guid>
	<link>http://feeds.feedburner.com/~r/TheDailyAck/~3/341642831/oscon-python-in-3-hours.html</link>
	<description>While I've written stuff in Java, Python and half a dozen other languages, I'm a Perl guy. My first solution to a programming problem is to use Perl. This hasn't always been the case of course, I used to be a Fortran guy after all, and my solution to most things would be to crank out some Fortran. I'm more or less language agnostic, and try and pick the right tool for every job, it's that so many jobs can be done easily in Perl.&lt;br /&gt;&lt;br /&gt;However I've learned Python several times now, used it for whatever project I've needed it for, and then mostly forgotten most of what I knew about it afterwards. But with the &lt;a href=&quot;http://www.dailyack.com/2008/04/google-app-engine.html&quot;&gt;release of  Google's App Engine&lt;/a&gt; however, I think it's time to dust my Python off and pick it up again for a third time. Which is why I'm sitting in &quot;&lt;em&gt;&lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/detail/2488&quot;&gt;Python in 3 Hours&lt;/a&gt;&lt;/em&gt;&quot; given by &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/speaker/4913&quot;&gt;Steve Holden&lt;/a&gt;. Steve has put his &lt;a href=&quot;http://holdenweb.com/files/PythonIntro0821.ppt&quot;&gt;slides online&lt;/a&gt;, but it looks like his hosting provider isn't holding up that well...&lt;br /&gt;&lt;br /&gt;&lt;center&gt; &lt;a href=&quot;http://holdenweb.com/files/PythonIntro0821.ppt&quot;&gt;&lt;img src=&quot;http://www.babilim.co.uk/blog/jpg/oscon08_python_in_3_hours.jpg&quot; /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; The main principle in Python is &quot;Keep it simple stupid&quot;, as opposed to Perl's &quot;There is more than one way to do things&quot;. That basically sums up the difference between the two languages. It looks like Twitter is over capacity again, the &lt;a href=&quot;http://failwhale.com/&quot;&gt;fail whale&lt;/a&gt; is very much in evidence.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; One of the things that people coming from the C world find difficult is that while Python is a strongly typed language the type is associated with the value, not with the variable. Well that and the mandatory indenting.&lt;br /&gt;&lt;br /&gt;Steve is really emphasising the presence of the interactive interpreter, which is something that Python talk about a lot. As a Perl person, it's not something we really have, and I've not felt that lack. Trying to get my head around why Python people feel it's important.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Steve is talking about the &lt;a href=&quot;http://www.python.org/dev/implementations/&quot;&gt;different implementations&lt;/a&gt;