<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Geek on the Loose</title>
	<atom:link href="http://www.geekontheloose.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.geekontheloose.com</link>
	<description>Just another girl-geek weblog</description>
	<lastBuildDate>Thu, 25 Mar 2010 04:17:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Another Ada Lovelace Day Post &#8211; CS Role Model</title>
		<link>http://www.geekontheloose.com/computer-science/another-ada-lovelace-day-post-cs-role-model/</link>
		<comments>http://www.geekontheloose.com/computer-science/another-ada-lovelace-day-post-cs-role-model/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 04:17:34 +0000</pubDate>
		<dc:creator>joulie</dc:creator>
				<category><![CDATA[Computer Science]]></category>

		<guid isPermaLink="false">http://www.geekontheloose.com/?p=239</guid>
		<description><![CDATA[I posted earlier for Ada Lovelace Day about LinuxChix.org as a great resource for women in technology, and now I'm getting into the groove and want to add another post, this time about my first female role model in computer science.
Dr. Neelima Shrikhande is a professor of computer science at Central Michigan University. At the [...]]]></description>
			<content:encoded><![CDATA[<p>I posted earlier for <a title="Ada Lovelace Day" href="http://findingada.com/">Ada Lovelace Day</a> about <a title="LinuxChix - a community for women who like Linux and Free Software" href="http://www.linuxchix.org/">LinuxChix.org</a> as a great resource for women in technology, and now I'm getting into the groove and want to add another post, this time about my first female role model in computer science.</p>
<p><a title="Dr. Neelima Shrikhande - Computer Science Professor" rel="nofollow" href="http://www.cps.cmich.edu/faculty/shrikhande.shtml">Dr. Neelima Shrikhande</a> is a professor of <a title="Computer Science Department at Central Michigan University" rel="nofollow" href="http://www.cps.cmich.edu/">computer science at Central Michigan University</a>. At the time I was working on my MS, she was the only female professor in the department. I never had an indication that she views herself as a role model for the few women studying computer science there, but she is definitely a role model.</p>
<p>She's a super intelligent and focused woman for whom I have a lot of respect. According to the <a title="Dr. Neelima Shrikhande - Computer Science Professor" href="http://www.news.cmich.edu/experts/2007/09/neelima-shrikhande/">cmich.edu website</a>, she "is an authority on computer vision and artificial intelligence. She studies how to make computers capable of seeing things and understanding pictures."</p>
<p>I had her for only one class, my compiler class, but she really opened up the world of computer science for me with that class. It was a hard and life-consuming class, but I loved it more than any other class and even used what I learned for my thesis. I now have a life-long fascination with compilers and virtual machines because of that class and I still have my <a title="Dragon Book computer science compiler textbook" rel="nofollow" href="http://en.wikipedia.org/wiki/Dragon_Book_%28computer_science%29">dragon book</a>. At the time, I never thought about this, but I imagine that class was at least as hard to teach as it was to take, but she held up to the challenge seamlessly.</p>
<p><a rel="nofollow" href="http://www.cps.cmich.edu/"><img class="alignleft size-full wp-image-242" style="margin-left: 10px; margin-right: 10px;" title="Central Michigan University" src="http://www.geekontheloose.com/wp-content/uploads/2010/03/cmich-edu.gif" alt="Central Michigan University" width="120" height="75" /></a>Thanks, Dr. Shrikhande, for being such a sharp, successful role model in computer science.</p>
<p>Shameless plug: the <a title="Computer Science Department at Central Michigan University" rel="nofollow" href="http://www.cps.cmich.edu/">CMU CS department</a> is a great place for an education!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekontheloose.com/computer-science/another-ada-lovelace-day-post-cs-role-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Celebrating Ada Lovelace Day and Women in Technology</title>
		<link>http://www.geekontheloose.com/geekery/celebrating-ada-lovelace-day-and-women-in-technology/</link>
		<comments>http://www.geekontheloose.com/geekery/celebrating-ada-lovelace-day-and-women-in-technology/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 02:22:32 +0000</pubDate>
		<dc:creator>joulie</dc:creator>
				<category><![CDATA[Geekery]]></category>

		<guid isPermaLink="false">http://www.geekontheloose.com/?p=232</guid>
		<description><![CDATA[March 24th has been designated as Ada Lovelace Day and is an opportunity to celebrate the achievements of women in science and technology. FindingAda.com is encouraging women to blog about this today.
I've not paid much attention to her aside from being aware of her and knowing she's the namesake of the Ada programming language, but [...]]]></description>
			<content:encoded><![CDATA[<p>March 24th has been designated as Ada Lovelace Day and is an opportunity to celebrate the achievements of women in science and technology. <a title="Ada Lovelace Day" href="http://findingada.com/">FindingAda.com</a> is encouraging women to blog about this today.</p>
<p><a href="http://www.geekontheloose.com/wp-content/uploads/2010/03/Ada_lovelace.jpg"><img class="alignleft size-thumbnail wp-image-233" style="margin-left: 10px; margin-right: 10px;" title="Ada Lovelace" src="http://www.geekontheloose.com/wp-content/uploads/2010/03/Ada_lovelace-150x150.jpg" alt="Ada Lovelace" width="150" height="150" /></a>I've not paid much attention to her aside from being aware of her and knowing she's the namesake of the Ada programming language, but I've benefited tremendously from her contributions and the contributions of other women in technology for most of my life.</p>
<p>I read up on <a title="Ada Lovelace - Pioneering Woman in Technology" rel="nofollow" href="http://en.wikipedia.org/wiki/Ada_Lovelace">Ada at Wikipedia</a> and learned this bit of trivia today, "she was the only legitimate child of the poet Lord Byron and Anne Isabella Milbanke."</p>
<p>I won't spend a lot of time dwelling on her interesting life, because Wikipedia does that far better than I could, but I'll take this opportunity to make mention of some current-day pioneering women in technology, the women who are advocating and teaching other women about Linux, computers, and other free software via <a title="LinuxChix - a community for women who like Linux and Free Software" href="http://www.linuxchix.org/">LinuxChix</a>.</p>
<blockquote><p>LinuxChix is a community for women who like Linux and for anyone who wants to support women in computing. We are an international group of Free Software users and developers, founded in 1999 with the aim of "supporting women in Linux." Founder Deb Richardson described it as an alternative to the "locker room atmosphere" found in some online technical forums and gave LinuxChix two core rules: "be polite" and "be helpful." LinuxChix is now many things to many people, but it remains primarily a group for supporting women in computing, specifically in Open Source/Free Software/Software Libre computing.</p></blockquote>
<p>If you're a woman in need of help or able to offer some help to others, check out LinuxChix!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekontheloose.com/geekery/celebrating-ada-lovelace-day-and-women-in-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Loosely Coupled Cloud</title>
		<link>http://www.geekontheloose.com/network/cloud/a-loosely-coupled-cloud/</link>
		<comments>http://www.geekontheloose.com/network/cloud/a-loosely-coupled-cloud/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 05:09:04 +0000</pubDate>
		<dc:creator>joulie</dc:creator>
				<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://www.geekontheloose.com/?p=215</guid>
		<description><![CDATA["Build loosely coupled systems." That was one nugget of recurring advice given last night by Jorge Noa, CTO of HyperStratus when he spoke at a meet-up titled "Amazon EC2 Cloud Computing and Application Design" held at HackerDojo (see slides here - pdf and I also found the same slide show already online here as an [...]]]></description>
			<content:encoded><![CDATA[<p>"Build loosely coupled systems." That was one nugget of recurring advice given last night by Jorge Noa, CTO of <a title="Cloud Computing Services" rel="nofollow" href="http://hyperstratus.com/">HyperStratus</a> when he spoke at a meet-up titled <a title="Amazon EC2 Cloud Computing and Application Design" rel="nofollow" href="http://www.meetup.com/cloudcomputing/calendar/12584958/">"Amazon EC2 Cloud Computing and Application Design"</a> held at HackerDojo (<a title="Amazon EC2 Cloud Computing and Application Design" rel="nofollow" href="http://files.meetup.com/677520/Amazon%20EC2%20%26%20Application%20Design.pdf">see slides here - pdf</a> and I also found the same slide show already online <a title="Amazon EC2 Cloud Computing and Application Design" rel="nofollow" href="http://www.slideshare.net/oreillymedia/oreilly-webcast-architecting-applications-for-the-cloud">here as an O'Reilly Media Slideshare</a>).</p>
<p>After a review and comparison of various IaaS, PaaS and SaaS services, the talk then focused on details of Amazon's overall cloud offering. Finally he finished out the presentation with a discussion of software developer best practices - the primary reason I attended. More time spent on software development would have been a big plus in my view, but I can understand that he felt the need to get everyone in the room up to speed on Amazon's platform. It was a big crowd.</p>
<h3>Cloud Computing Development Best Practices</h3>
<p>The ten best practices Jorge espoused were:</p>
<ol>
<li>Build cloud apps, not apps in the cloud</li>
<li>Virtualize the application stack</li>
<li>Design for failure and nothing fails</li>
<li>Design for scalability</li>
<li>Loose coupling lets you maximize plug and play</li>
<li>Design for dynamism</li>
<li>Build Security into every component</li>
<li>Leverage native cloud storage options</li>
<li>Leverage best cloud Management Tools</li>
<li>Don't fear cloud constraints</li>
</ol>
<p>Of those ten, the two points that gave me the most pause for contemplation were to "build loosely coupled systems" and to "build security into every component."</p>
<h3>Build Loosely Coupled Systems</h3>
<p>"Build loosely coupled systems" brought a flash from the past, triggering a memory of a distributed operating systems class I had in the 1990s. The concept of loosely coupled systems was new for me back then and made a big impression, so I dug out my old textbook (yes, I kept them all!) to refresh my memory. The textbook was <em>"Modern Operating Systems"</em> by Andrew S. Tanenbaum.</p>
<p><span id="more-215"></span>Skimming through the material, even though it's dated, it's still relevant to today's cloud environment. While the Tanenbaum book was focused specifically on operating systems, Jorge's cloud development recommendations of "use independent components", "design everything as a black box" and "load-balanced clusters of black boxes" have much in common with a distributed OS design.</p>
<p>Tanenbaum offers much more detail in his section on design issues of distributed systems that seems relevant in this context, with the first being transparency.</p>
<ul>
<li>Location transparency - we want to design software so that the actual location of other resources is irrelevant. They could be in the same local Amazon zone, or they may be halfway around the world - it should not matter</li>
<li>Migration transparency - not only must we not care where the resources are, we also must allow resources to move about seamlessly</li>
<li>Replication transparency - we must be able to make additional copies of resources without side-effects</li>
<li>Concurrency transparency - we should be able to share resources concurrently</li>
<li>Parallelism transparency - Tanenbaum points to this as the most difficult to achieve, the ability to process in parallel seamlessly without the need to explicitly cause that to happen</li>
</ul>
<p>We may be designing black boxes, but they need to be black boxes that can operate transparently with one another.</p>
<p>The other important design characteristics that Tanenbaum discusses are flexibility, reliability in terms of availability and fault tolerance, performance, and scalability. I think these points are a bit more obvious and won't add any further explanation.</p>
<h3>Cloud Computing Security</h3>
<p>The other main point I've been contemplating since the talk is in the area of security. Being the development security evangelist at my company, it was natural that I'd focus in on the brief security portion of the talk. I'm sure that an entire meet-up could easily be filled just on the topic of security, so the single slide on the topic rubbed me the wrong way.</p>
<p>Jorge's bullet points were as follows:</p>
<ul>
<li>Use de-perimiterized security model</li>
<li>Create distinct network Security Groups for each Amazon EC2 instance cluster</li>
<li>Use group-based network rules for controlling access between components</li>
<li>Restrict external access to specific IP ranges</li>
<li>Encrypt data “at-rest” in Amazon S3</li>
<li>Encrypt data “in-transit” (SSL)</li>
<li>Consider encrypted EBS file systems for sensitive data</li>
</ul>
<p>While these seem like a good starting point, I want to delve into a little more detail on some of the points.</p>
<p>De-perimiterization, as I understand it, means moving the burden of security onto individual machines and applications. While this pushes the security to where the threat is, it seems to me that it also raises the maintenance overhead of security and I would think that could lead to a higher risk of not keeping all of the instances in-sync and current in terms of their security footprint. I suppose the next two bullet items are meant to address that issue to some extent by using security groups, but then doesn't the group somewhat defeat the idea of de-perimiterization? In a smaller network, relying on groups seems reasonable, but I wonder how well it scales unless a hierarchy of groups is introduced, but then it's no longer de-perimiterized. This isn't my area of expertise and I'm just speculating. I tried to find some writings on this topic by people more knowledgeable than me, but haven't found anything relevant yet. I'll update this post if I do.</p>
<p>The three encryption-related bullet points, "encrypt data 'at-rest' in Amazon S3","encrypt data 'in-transit' (SSL)" and "consider encrypted EBS file systems for sensitive data," all bothered me. I don't necessarily feel safe just because something is encrypted, especially if the storage device it's encrypted on isn't under my control. As <a title="Security and encrypted hard drives" rel="nofollow" href="http://www.schneier.com/blog/archives/2009/10/evil_maid_attac.html">Bruce Schneier wrote very eloquently</a>, "As soon as you give up physical control of your computer, all bets are off." Always a good read, he further writes,</p>
<blockquote><p>In the meantime, people who encrypt their hard drives, or partitions on their hard drives, have to realize that the encryption gives them less protection than they probably believe. It protects against someone confiscating or stealing their computer and then trying to get at the data. It does not protect against an attacker who has access to your computer over a period of time during which you use it, too.</p></blockquote>
<p>Since Amazon's entire AWS infrastructure is basically a black box to us all, I'm skeptical that we should rely in any way on encryption for very sensitive data.</p>
<p><strong>Closing</strong></p>
<p>Overall, I really enjoyed the talk and wish the development points could have been discussed in much further detail.  It definitely gave me much to think about and highlighted topics for further reading. Hopefully, more meet-ups will be scheduled to delve into development issues for the cloud.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekontheloose.com/network/cloud/a-loosely-coupled-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saying Goodbye to Transparencies and Roundies</title>
		<link>http://www.geekontheloose.com/design/saying-goodbye-to-transparencies-and-roundies/</link>
		<comments>http://www.geekontheloose.com/design/saying-goodbye-to-transparencies-and-roundies/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 15:54:42 +0000</pubDate>
		<dc:creator>joulie</dc:creator>
				<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://www.geekontheloose.com/?p=166</guid>
		<description><![CDATA[and goodbye to pitiful SEO, too...
After several years of experimenting with css rounded corners and transparency and the various perplexing cross-browser issues, I've redesigned this website and even moved it over to a new platform. Gone are the strange hoops I needed to jump through to add new stories to this site.
Here's one last glimpse [...]]]></description>
			<content:encoded><![CDATA[<p>and goodbye to pitiful SEO, too...</p>
<p>After several years of experimenting with css rounded corners and transparency and the various perplexing cross-browser issues, I've redesigned this website and even moved it over to a new platform. Gone are the strange hoops I needed to jump through to add new stories to this site.</p>
<p>Here's one last glimpse of the original Geek on the Loose:</p>
<p style="text-align: center;"><a title="Geek on the Loose screenshot" href="http://www.geekontheloose.com/wp-content/uploads/2010/02/gotl-screenshot_20100215.png"><img class="aligncenter" title="Geek on the Loose screenshot" src="/wp-content/uploads/2010/02/gotl-screenshot_20100215-150x150.png" alt="Geek on the Loose screenshot" width="150" height="150" /></a></p>
<p style="text-align: left;">I've also put a lot of effort into trying to follow good SEO principles on the new site. It may not have been obvious, but the old site was created before I had studied up on SEO and probably violated every major principle. It was a real SEO train-wreck. It will be very interesting to find out if I've learned anything or not.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekontheloose.com/design/saying-goodbye-to-transparencies-and-roundies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parallelism and Abstraction in Java</title>
		<link>http://www.geekontheloose.com/programming/java/parallelism-and-abstraction-in-java/</link>
		<comments>http://www.geekontheloose.com/programming/java/parallelism-and-abstraction-in-java/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 07:05:48 +0000</pubDate>
		<dc:creator>joulie</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.geekontheloose.com/?p=158</guid>
		<description><![CDATA[Here's an interesting parallel programming interview with Intel's Paul Guermonprez covering threads, JSR166y, and Hadoop. I particularly enjoyed the Hadoop discussion at the end.
The discussion focused on efforts to separate Java programming from the nitty gritty details of threads. This separation allows a greater number of developers to successfully program for parallel environment by removing [...]]]></description>
			<content:encoded><![CDATA[<p>Here's an interesting <a title="Parallel programming with Intel" rel="nofollow" href="http://software.intel.com/en-us/blogs/2010/01/28/parallel-programming-talk-61-parallel-java-with-intels-paul-guermonprez/">parallel programming interview with Intel's Paul Guermonprez</a> covering threads, JSR166y, and <a title="Apache Hadoop" rel="nofollow" href="http://hadoop.apache.org/">Hadoop</a>. I particularly enjoyed the Hadoop discussion at the end.</p>
<p>The discussion focused on efforts to separate Java programming from the nitty gritty details of threads. This separation allows a greater number of developers to successfully program for parallel environment by removing focus on the technical details, and thus reducing the knowledge required to write the code. There's also some coverage of the benefits of the higher level of abstraction of functional programming and how the functional programming style is being incorporated into the Java concurrency model. The text has this:</p>
<blockquote><p>The future will be functional programming or won't be at all.</p></blockquote>
<p>Intellectually, I applaud these efforts. Emotionally, I feel some loss.</p>
<p>My first introduction to threads was in a systems programming class, using the C language and Pthreads library. Pthreads blew my mind, or maybe it was lack of quality in the lectures. Either way, determined not to be defeated by Pthreads, I went out and bought a stack of books on Pthreads and threads in general and set out to wrap my mind around threads. It worked, but along the way, I learned that I loved the challenge and so I embraced concurrency and parallelism with much enthusiasm. This knowledge that I've accumulated will always be of great value, but as I move toward programming threads at further and further abstractions, I'll lose that close connection to the internals, and I'm a little saddened by that.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekontheloose.com/programming/java/parallelism-and-abstraction-in-java/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Martin Odersky and Josh Suereth at Scala BASE Tonight</title>
		<link>http://www.geekontheloose.com/programming/scala/martin-odersky-and-josh-suereth-at-scala-base-tonight/</link>
		<comments>http://www.geekontheloose.com/programming/scala/martin-odersky-and-josh-suereth-at-scala-base-tonight/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 15:46:59 +0000</pubDate>
		<dc:creator>joulie</dc:creator>
				<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.geekontheloose.com/?p=162</guid>
		<description><![CDATA[I'm looking forward to a Scala BASE meeting tonight that is headlined by Martin Odersky and Josh Suereth.
From the announcement email:
Professor Martin Odersky is the director of the LAMP group at EPFL, the creator of the Scala programming language, and author of Programming in Scala.
Josh Suereth hosted the first Scala Lift Off East in Reston, [...]]]></description>
			<content:encoded><![CDATA[<p>I'm looking forward to a Scala BASE meeting tonight that is headlined by Martin Odersky and Josh Suereth.</p>
<p>From the announcement email:</p>
<blockquote><p>Professor Martin Odersky is the director of the LAMP group at EPFL, the creator of the Scala programming language, and author of Programming in Scala.</p>
<p>Josh Suereth hosted the first Scala Lift Off East in Reston, VA and has been involved with lots of Scala projects including <a rel="nofollow" href="http://scala-tools.org/" target="_blank">scala-tools.org</a>, scala-arm, scala-io, scala-jigsaw, and scala-lolz.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.geekontheloose.com/programming/scala/martin-odersky-and-josh-suereth-at-scala-base-tonight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Found: Nice OWASP Top 10 Cheat Sheet</title>
		<link>http://www.geekontheloose.com/security/found-nice-owasp-top-10-cheat-sheet/</link>
		<comments>http://www.geekontheloose.com/security/found-nice-owasp-top-10-cheat-sheet/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 17:36:39 +0000</pubDate>
		<dc:creator>joulie</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.geekontheloose.com/?p=150</guid>
		<description><![CDATA[
I discovered this very useful, developer-centric cheat sheet for the OWASP Top 10 for 2010 (go directly to the pdf). It's nice and concise and gets straight to the simplest code fixes that will work. Memorize it and your code will be better than it was before. Better, stronger, faster...

Here's the current OWASP 2010 Top [...]]]></description>
			<content:encoded><![CDATA[<p>
I discovered this very useful, developer-centric <a title="Cheat sheet for the OWASP Top 10 for 2010" href="http://www.greebo.net/2010/02/09/owasp-top-10-2010-cheat-sheet/" rel="nofollow">cheat sheet for the OWASP Top 10 for 2010</a> (<a title="Cheat sheet for the OWASP Top 10 for 2010 as PDF" href="http://www.greebo.net/owasp/OWASP%202010%20Top%2010%20Cheat%20Sheet.pdf" rel="nofollow">go directly to the pdf</a>). It's nice and concise and gets straight to the simplest code fixes that will work. Memorize it and your code will be better than it was before. Better, stronger, faster...
</p>
<p>Here's the current OWASP 2010 Top 10 list (this is release candidate 1, so it could change):</p>
<ol>
<li>Injection</li>
<li>Cross Site Scripting (XSS)</li>
<li>Broken Authentication and Session Management</li>
<li>Insecure Direct Object References</li>
<li>Cross Site Request Forgery (CSRF)</li>
<li>Security Misconfiguration</li>
<li>Failure to Restrict URL Access</li>
<li>Unvalidated Redirects and Forwards</li>
<li>Insecure Cryptographic Storage</li>
<li>Insufficient Transport Layer Protection</li>
</ol>
<p>If you are a developer and you don't know what some of these security risks are <a title="Cheat sheet for OWASP Top 10 2010 pdf" href="http://www.greebo.net/owasp/OWASP%202010%20Top%2010%20Cheat%20Sheet.pdf" rel="nofollow"><img class="alignleft size-full wp-image-153" style="border: 0pt none; margin-left: 10px; margin-right: 10px;" title="OWASP top 10 cheat sheet" src="http://www.geekontheloose.com/wp-content/uploads/2010/02/cheat_sheet_owasp_top_10_2010-thumb1.png" alt="OWASP top 10 cheat sheet" width="200" height="155" /></a>and how to avoid them in your code, then you should be reading this: <a title="OWASP Top 10 2010 (RC1) - pdf" href="http://www.owasp.org/images/0/0f/OWASP_T10_-_2010_rc1.pdf" rel="nofollow">OWASP Top 10 2010 RC1 (pdf)</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekontheloose.com/security/found-nice-owasp-top-10-cheat-sheet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Looking Forward to HTML5</title>
		<link>http://www.geekontheloose.com/design/looking-forward-to-html5/</link>
		<comments>http://www.geekontheloose.com/design/looking-forward-to-html5/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 01:40:26 +0000</pubDate>
		<dc:creator>joulie</dc:creator>
				<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://www.geekontheloose.com/?p=125</guid>
		<description><![CDATA[I've seen a lot in the geek news lately about HTML5. I've tried to get a book, but none are available for a few more months, and O'Reilly doesn't even have a "rough cuts" book yet.


Today, via DZone, I discovered this super nifty HTML5 sketch pad demo.


I'm really looking forward to the widespread use of [...]]]></description>
			<content:encoded><![CDATA[<p>I've seen a lot in the geek news lately about HTML5. I've tried to get a book, but none are available for a few more months, and <a title="O'Reilly search for HTML5" href="http://search.oreilly.com/?q=html5" rel="nofollow">O'Reilly</a> doesn't even have a "rough cuts" book yet.
</p>
<p>
Today, <a title="HTML5 sketchpad" href="http://www.dzone.com/links/amazing_html5_paint_app.html" rel="nofollow">via DZone</a>, I discovered this super nifty <a title="HTML5 sketchpad demo" href="http://mugtug.com/sketchpad/" rel="nofollow">HTML5 sketch pad</a> demo.
</p>
<p>
I'm really looking forward to the widespread use of HTML5, especially since Adobe can't be bothered to make their <a title="Adobe Flex Builder doesn't work in Linux" href="http://www.geekontheloose.com/programming/adobe-flex-and-linux/">Flex Builder work in Linux</a>.
</p>
<p style="text-align: center;"><a href="http://www.geekontheloose.com/wp-content/uploads/2010/02/html5_demo.jpg" title="HTML5 demo"><img class="size-medium wp-image-126 aligncenter" style="border: 0pt none;" title="HTML5 demo" src="http://www.geekontheloose.com/wp-content/uploads/2010/02/html5_demo-300x164.jpg" alt="HTML5 demo" width="300" height="164" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekontheloose.com/design/looking-forward-to-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Tale About Problems of Scale</title>
		<link>http://www.geekontheloose.com/computer-science/a-tale-about-problems-of-scale/</link>
		<comments>http://www.geekontheloose.com/computer-science/a-tale-about-problems-of-scale/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 01:29:41 +0000</pubDate>
		<dc:creator>joulie</dc:creator>
				<category><![CDATA[Computer Science]]></category>

		<guid isPermaLink="false">http://www.geekontheloose.com/?p=117</guid>
		<description><![CDATA[
I earned some new bragging rights this week and had fun doing it. I love computer science!


A tale about iteration, unexpectedly large data sets, and time... 


About a month ago, a large file of data unexpectedly needed to be processed, using some pre-existing code written several years ago. This code happened to be written in [...]]]></description>
			<content:encoded><![CDATA[<p>
I earned some new bragging rights this week and had fun doing it. I love computer science!
</p>
<p>
<em><strong>A tale about iteration, unexpectedly large data sets, and time...</strong> </em>
</p>
<p>
About a month ago, a large file of data unexpectedly needed to be processed, using some pre-existing code written several years ago. This code happened to be written in Java, but this story could apply to most any commonly used programming language. It was a batch process, so speed wasn't of the utmost essence, but at the same time it shouldn't run on and on and one because other files also needed to be processed. The data set was 500K records, whereas the larger data sets normally are in the 20-30K range, so this was more than 10x the norm.
</p>
<p>
Everything seemed to be going fine. The file was read into a database and some processing had been done on it and the time had come to write out a result file. Along with results, the original programmer had wanted some statistics, so there was a quick iteration through all of the records to gather the statistics and then the results would be written into the file. It seemed straightforward and I didn't expect anything to go wrong. When things go wrong on files, my experience has been that they usually go wrong earlier on.</p>
<p><span id="more-117"></span></p>
<p><a href="http://www.geekontheloose.com/wp-content/uploads/2010/02/nicubunu_Hourglass.png" title="hourglass"><img class="alignleft size-full wp-image-119" title="nicubunu_Hourglass" src="http://www.geekontheloose.com/wp-content/uploads/2010/02/nicubunu_Hourglass.png" alt="" width="128" height="128" /></a><em><strong>Time... </strong></em></p>
<p>
I waited for the file, and then waited some more. One hour passed, and then another. Where was the file?
</p>
<p>
Normally, this process will update a status table in the database to indicate what it is currently doing, but it hadn't updated that record since the file writing phase had supposedly begun. Starting to worry that it was hung or deadlocked, I set off to investigate. The CPUs on the server showed that something was going on and it certainly wasn't idle, but they were only 35-45% busy. The memory was not paging. I checked the database and couldn't find any sign of deadlock.
</p>
<p>
Being a true lover of code, I did the next obvious step from my point of view – I read the code. I found the relevant bit of code and started tracing through that file writer step-by-step. What I discovered was that the statistics gathering phase wasn't written in a particularly optimal way. The developer had probably never imagined that such a large file would ever be processed.
</p>
<p>
<em><strong>Loop de doop... </strong></em>
</p>
<p>
What had been coded was a single loop through the records that were stored for the original file. Each record would be read, then another lookup of related data was made, and then a third lookup to map a simple translation was made. All three queries were very simple and used primary keys or indexes, so individually, they all ran very fast. Each lookup resulted in some statistics being updated, and the mapping applied nice text labels to the numbers so that humans could make sense of them. The code was O(n), so not O(1), but not so bad for the usual case.
</p>
<p>
<a href="http://www.geekontheloose.com/wp-content/uploads/2010/02/Anonymous_Praying_Mantis.png" title="praying mantis"><img class="size-full wp-image-120 alignright" style="border: 0pt none; margin: 10px;" title="Anonymous_Praying_Mantis" src="http://www.geekontheloose.com/wp-content/uploads/2010/02/Anonymous_Praying_Mantis.png" alt="" width="104" height="129" /></a>It took almost 4 hours for the statistics to be gathered for all 500K records, for a total of 1.5 million queries, which worked out to about 0.48ms for each set of three queries. For 25K, that would be about 12 minutes. Unless someone was watching carefully to see the progress, in normal batch processing, 12 minutes would not usually be enough to send up red flags and catch anyone's attention.
</p>
<p>
Of course, this discovery was just the beginning. Naturally it had to be fixed. That's where the events of this week come in to play. I had some time set aside to look at improving the code this week, so I immediately set about finding a way to let the database do the work. After a few hours of composing and testing queries, I had it! A single query that could gather all of the statistics on the 500K records including the text labels, and do it in 1 minute 41 seconds. That felt good, really good!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekontheloose.com/computer-science/a-tale-about-problems-of-scale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Christmas That Santa Got His Geek On</title>
		<link>http://www.geekontheloose.com/geekery/the-christmas-that-santa-got-his-geek-on/</link>
		<comments>http://www.geekontheloose.com/geekery/the-christmas-that-santa-got-his-geek-on/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 01:23:42 +0000</pubDate>
		<dc:creator>joulie</dc:creator>
				<category><![CDATA[Geekery]]></category>

		<guid isPermaLink="false">http://www.geekontheloose.com/?p=110</guid>
		<description><![CDATA[This year I received a lot of geek books for Christmas (2009), and I'm so delighted and intrigued by them that I thought I'd share them here and maybe somebody else will discover a wonderful book to read.


These are the six books I received:

The Code Book, The Science of Secrecy from Ancient Egypt to Quantum [...]]]></description>
			<content:encoded><![CDATA[<p>This year I received a lot of geek books for Christmas (2009), and I'm so delighted and intrigued by them that I thought I'd share them here and maybe somebody else will discover a wonderful book to read.
</p>
<p>
These are the six books I received:</p>
<ol>
<li><em>The Code Book, The Science of Secrecy from Ancient Egypt to Quantum Cryptography</em>, by Simon Singh</li>
<li><em>Train Man, the novel</em>, by Hitori Nakano</li>
<li><em>Zero, The Biography of a Dangerous Idea</em>, by Charles Seife</li>
<li><em>The Geek Atlas, 128 Places Where Science &amp; Technology Come Alive</em>, by John Graham-Cunningham</li>
<li><em>The Annotated Turing, A Guided Tour through Alan Turing's Historic Paper on Computability and the Turing Machine</em>, by Charles Petzold</li>
<li><em>e: the Story of a Number</em>, by Eli Manor</li>
</ol>
<p><a href="http://www.geekontheloose.com/wp-content/uploads/2010/02/geek_books-xmas2009.jpg" title="Geek books"><img class="alignleft size-full wp-image-111" style="border: 0pt none; margin: 10px;" title="Geek books" src="http://www.geekontheloose.com/wp-content/uploads/2010/02/geek_books-xmas2009.jpg" alt="Geek books" width="350" height="340" /></a>I haven't had time to read any of the books yet, but have thumbed through all of them enough to give a brief overview and my first impression of the quality of the book. It should be noted that these books were all on my Amazon.com wish list (thanks to Amazon for suggesting them for me) and I've read the reviews and any excerpts that were available.
</p>
<p>
The book that I've given the most attention to so far is <em>The Code Book</em>, and that's because I have three puzzles to solve. After my brother-in-law saw that I'd received a cryptography book, he asked if I like that sort of stuff and then promptly produced printouts for three puzzles he needs to solve to be able to locate geocaches. (I've solved two so far and one is partially solved)
</p>
<p>
<em><span id="more-110"></span>The Code Book</em> is a pleasure to flip through because it's packed with illustrations, examples, photos and more. I find it impossible not to stop on pages with interesting graphics to read a little and what I've discovered so far are troves of ciphers and codes interspersed with interesting stories about the circumstances and people involved in those discoveries. Case in point, the curious turn of circumstances that lead Whitfield Diffie to spontaneously hop in his car and drive 5,000 km "to meet the only person who seemed to share his obsession," Martin Hellman, thus setting the stage for the Diffe-Hellman-Merkle key exchange.
</p>
<p>
The pages I've read in this book have been engaging and educational, and the math is minimal so as not to off put the less mathematically-inclined reader. I happily give a hearty thumbs up to <em>The Code Book</em>.
</p>
<p>
<em>Train Man</em> is a very unusual novel. This is the only book on the list that Amazon didn't suggest for me. Instead, this suggestion came from a fellow Twitter user named <a title="@rodet on twitter" href="http://twitter.com/rodet" rel="nofollow">@rodet</a> . What makes <em>Train Man</em> different from standard novels is that it takes place as an online conversation between Japanese Internet chatroom participants. It follows the story of a geeky young man and a young woman he meets, charting the progress of their relationship. The <a title="some Asian emoticons" href="http://en.wikipedia.org/wiki/List_of_emoticons#Eastern_emoticons" rel="nofollow">Asian emoticons</a> and ascii art used throughout the chats are nifty and will require some deciphering. This book would definitely not be for everyone because of the unusual format, but I'm pretty sure I'll enjoy it.
</p>
<p>
On the back cover of <em>Zero</em> is written, "The Babylonians invented it, the Greeks banned it, the Hindus worshipped it, and the Church used it to fend off heretics." I never realized that the number zero had such a history. This book looks at the uses and misuses of the number zero throughout history and the current controversy surrounding it. The book has quite a few illustrations and some math, but not too much. I think it will be an interesting read. The last appendix is titled "Make Your Own Wormhole Time Machine."
</p>
<p>
<em>The Geek Atlas</em> is a fun book highlighting "128 destinations around the world where breakthroughs in science, mathematics, or technology occurred - or are happening now." The book gives a few pages of information about each site with a web link or other source for more information and when to visit. There are a lot of places included that I'm not likely to visit, such as the Chernobyl Exclusion Zone in Ukraine, but many others that would definitely be worth some time and effort to see. It looks like a fun book.
</p>
<p>
I wasn't expecting <em>The Annotated Turing</em> to be a big page-turner, but am pleasantly surprised at the extensive annotations contained within this book and am thinking my preset notions about annotated works need to be re-evaluated. In quickly flipping through the book, the casual observer might think it's filled with more of the elaborate Asian emoticons as in <em>Train Man</em>, but no, that's math, and a lot of it, and it looks a bit daunting, but it will be great for keeping my brain spry and young.
</p>
<p>
I'm expecting to particularly enjoy the final book, <em>e: the Story of a Number</em>, in part because I recently finished reading a terrific book, <em>Prime Obsession: Bernhard Riemann and the Greatest Unsolved Problem in Mathematics</em>, by John Derbyshire. In thumbing through the book, I discovered a fun section on <em>e</em> and its relationship to music that confirmed my expectations that I should enjoy this book thoroughly. As would be expected, this book contains quite a lot of math and is not for the faint-hearted.
</p>
<p>
That's it for new books to read. They should keep me busy for quite a while.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekontheloose.com/geekery/the-christmas-that-santa-got-his-geek-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
