<?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>System Administration, Software Engineering, Web Application Development &#62; The Bitsource</title>
	<atom:link href="http://www.thebitsource.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thebitsource.com</link>
	<description>System Administration, Software Engineering, Web Application Development</description>
	<lastBuildDate>Tue, 09 Mar 2010 16:19:54 +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>The Ultra Fast Web with Varnish Web Accelerator</title>
		<link>http://www.thebitsource.com/open-source/varnish-web-accelerator/</link>
		<comments>http://www.thebitsource.com/open-source/varnish-web-accelerator/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 16:19:54 +0000</pubDate>
		<dc:creator>Matthew Sacks</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[Varnish]]></category>
		<category><![CDATA[Web Performance]]></category>

		<guid isPermaLink="false">http://www.thebitsource.com/?p=1833</guid>
		<description><![CDATA[

By Per Buer, CEO of Varnish Software

Varnish is an open source web accelerator created by Varnish Software, in Norway. Varnish accelerates your site by sitting in front of your web server, typically Apache, caching the content. It will keep the most recent requested pages in memory and serves them from memory, producing high performance responses [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p><strong>By Per Buer, CEO of Varnish Software</strong><br />
<a href="http://www.thebitsource.com/wp-content/uploads/2010/03/perbu-small.png"><img class="alignnone size-full wp-image-1837" title="perbu-small" src="http://www.thebitsource.com/wp-content/uploads/2010/03/perbu-small.png" alt="" width="198" height="194" /></a></p>
<p>Varnish is an open source web accelerator created by Varnish Software, in Norway. Varnish accelerates your site by sitting in front of your web server, typically Apache, caching the content. It will keep the most recent requested pages in memory and serves them from memory, producing high performance responses on a Web site, both in term of capacity and response time. When content is served from memory this happens a lot faster then anything</p>
<p>It utilizes a number of novel techniques to achieve its performance.  One of the most characteristic is how configuration is handled. Varnish is configured in a <a id="uj.o" title="domain specific language" href="http://en.wikipedia.org/wiki/Domain_specific_language">domain specific language</a> called Varnish Configuration Language (VCL). The VCL configuration is translated to C, compiled, loaded and executed. This gives you two immediate advantages, speed and flexibility. The speed part is easy to understand. The flexibility comes from the fact that you can write policies describing how specific pages or requests should be handled. This is best described by an example;</p>
<pre>
<div class="codesnip-container" >
<div class="codesnip" style="font-family: monospace;"><span class="kw1">if</span> <span class="br0">&#40;</span>req.<span class="me1">url</span> ~ <span class="st0">&quot;^/fun/&quot;</span> &amp;amp;&amp;amp; 

&nbsp; &nbsp;<span class="br0">&#40;</span>req.<span class="me1">http</span>.<span class="me1">referer</span> &amp;amp;&amp;amp; req.<span class="me1">http</span>.<span class="me1">referer</span> !~ <span class="st0">&quot;^http://www.example.com/&quot;</span><span class="br0">&#41;</span>

&nbsp; &nbsp; <span class="br0">&#41;</span> 

&nbsp; &nbsp; <span class="br0">&#123;</span> error <span class="nu0">403</span> <span class="st0">&quot;No hotlinking please&quot;</span>;</div>
</div>
</pre>
<p>The code should be easy to understand. If the URL is begins with /fun and you have a <a id="ov39" title="referer" href="http://en.wikipedia.org/wiki/HTTP_referrer">referer</a><span style="font-size: small;"> header this referer must bu www.example.com or we won&#8217;t deliver you the content.</span></p>
<p>Another, and for more complex, example of the power of VCL can be seen here (<a href="http://kristian.blog.linpro.no/tag/security-vcl/">http://kristian.blog.linpro.no/tag/security-vcl/</a>) where a set of developers took the mod_security rule set and transformed it into VCL. You are then able to execute the mod_security at blistering speeds with only a few limitations.</p>
<p>VCL can be extended by embedding C into the configuration. This is not for the faint hearted, but can give you the necessary power to work around the language limitations. Users have been using this for enabling varnish to log to syslog, to server content based on your IP&#8217;s origin (Geo-ip) and to manipulate HTTP headers in ways VCL doesn&#8217;t allow. A plugin architecture, which takes out some of the rough edges is being designed but no release date is known at this point.</p>
<p>Varnish does also employ a completely new scheme for logging. In stead of logging directly to log files Varnish logs everything to a segment in shared memory. This means that Varnish doesn&#8217;t get slowed down waiting for disks. Logging to disk can then be done by a separate program &#8211; having full access to what happens through the shared memory segment.</p>
<p><span style="color: #000000;"><span style="font-size: small;">When comparing Varnish with from other Web caches you&#8217;ll see that it is incredibly fast. Under synthetic load the Varnish team has managed to push a three year old single quad core server into delivering a staggering 143000 requests per second. I must stress that this is a synthetic benchmark and it does not take into account the slow clients, misbehaving browsers and network problems of the real world. In your sizing rule should be one server per gigabit of traffic, more or less. That&#8217;s more traffic than most of us ever see, turning tuning and scaling mostly to a non-issue.</span></span></p>
<div id="attachment_1834" class="wp-caption alignnone" style="width: 428px"><a href="http://www.thebitsource.com/wp-content/uploads/2010/03/Dinside_last_108000.png"><img class="size-full wp-image-1834" title="Dinside_last_108000" src="http://www.thebitsource.com/wp-content/uploads/2010/03/Dinside_last_108000.png" alt="" width="418" height="193" /></a><p class="wp-caption-text">Dinside.no page download speed Pre and Post Varnish</p></div>
<p>In addition to giving you enough capacity to survive the most intense Slashdotting, Varnish&#8217;s speed will also give other advantages. Compared with an un-cached site, the pages will appear much faster &#8211; especially if you have many objects on each page. The graph measured the time it took to download one of Norway&#8217;s online IT newspapers from a installation of 14 servers running <a href="http://www.squid-cache.org/">Squid</a> to two servers running Varnish. As you can see the latency dropped quite dramatically and this was noticed by its readers which started commenting on it in the forums.</p>
<p>An alternative to Varnish is buying services from a <a id="wtk4" title="content distribution networks" href="http://en.wikipedia.org/wiki/Content_distribution_networks">content distribution network</a> (CDN). Depending on whether you need the distributed aspect of the CDN the comparison might or might not be valid. A CDN will probably have servers closer to you reader than your data center &#8211; but their servers might not be as fast as Varnish is. Your mileage may vary.</p>
<p>Varnish is administered by a command line interface. You use telnet to enter the a special console where you have access to commands for loading and reload configuration, inspecting statistics. There is a &#8220;varnishadm&#8221; tool which gives you the ability to execute commands on the command line without the use of telnet. I, personally, like this much better because I have access to the key bindings and line editing capabilities in bash.</p>
<p>Companies such as creativecommons.org, Twitter and LinkedIn use Varnish in production, and there is commercial support and an enterprise offering from Varnish Software for enterprise customers who don&#8217;t want to rely completely on the community.</p>
<p>For further reading I recommend this introduction to Varnish. It will give you a good idea of how you should proceed. Introduction to Varnish <a href="http://varnish-cache.org/wiki/Introduction" target="_blank">http://varnish-cache.org/wiki/Introduction</a></p>
<p>Preparing Varnish and Wordpress for Slashdotting <a href="http://varnish-cache.org/wiki/VarnishAndWordpress" target="_blank">http://varnish-cache.org/wiki/VarnishAndWordpress</a></p>
<p><strong> About the Author<br />
</strong><br />
Per Buer is the CEO of Varnish Software, a spin-off of Redpill Linpro, the company which has been developing Varnish for the last three years. Per was working as programmer, then a sysadmin, before being caught in management positions.</p>

<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://www.thebitsource.com/open-source/varnish-web-accelerator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Install Debian Linux on an Embedded System (PPC440EPx)</title>
		<link>http://www.thebitsource.com/software-engineering/how-to-install-debian-linux-on-an-embedded-system/</link>
		<comments>http://www.thebitsource.com/software-engineering/how-to-install-debian-linux-on-an-embedded-system/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 13:00:17 +0000</pubDate>
		<dc:creator>Melissa Soriano</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.thebitsource.com/?p=1812</guid>
		<description><![CDATA[

By Melissa Soriano, Engineer, NASA Jet Propulsion Laboratory
In this article, I will describe how to bring up Debian Linux on an Embedded System.  The hardware chosen for the embedded system is a PowerPC 440EPxX.  I have chosen Debian for the operating system of choice to load on the embedded hardware because of my prior experience [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>By Melissa Soriano, Engineer, NASA Jet Propulsion Laboratory</p>
<p>In this article, I will describe how to bring up Debian Linux on an Embedded System.  The hardware chosen for the embedded system is a PowerPC 440EPxX.  I have chosen Debian for the operating system of choice to load on the embedded hardware because of my prior experience with it and because it is a free distribution that continues to be actively maintained and supported.  Linux is a powerful operating system and is valuable on an embedded hardware platform for real-time applications.  An example is real-time digital signal processing.  Alternatives to Debian include Montavista and Wind River, which are both commercial Linux distributions.</p>
<p><strong> 1. Description of the hardware</strong></p>
<p>The hardware is a custom digital signal processing printed circuit board which includes a PPC440EPx embedded processor and five <a href="http://www.xilinx.com/" target="_blank">Xilinx</a> Virtex 5 Field Programmable Gate Arrays (FPGAs).  The PPC440EPx was designed with an RS-232 interface, a JTAG debug and flash programming interface, 2 Gigabit Ethernet interfaces, and one status LED. Initially, the system is completely bare of software and contains no operating system.  The goal is to bring up Debian Linux on this embedded hardware platform, and the same process applies to most embedded platforms.</p>
<p><strong> 2. Compiling the custom bootloader (uboot) and Linux kernel</strong></p>
<p>The bootloader is a small program that is used to load the operating system.  Popular bootloaders include the IBM PowerPC Initialization and Boot Software (PIBS) and the U-Boot Universal Bootloader from <a href="http://www.denx.de/en/News/WebHome" target="_blank">DENX</a>.  In this example, U-boot was used.  The board was designed with a JTAG interface to the PPC440EPx.  An Abatron BDI debugger can be used to load U-boot and associated environmental variables onto the Flash using the JTAG interface.  In this system, the Flash is a Mirrorbit.  The U-boot source is available from <a href="http://www.denx.de/wiki/U-Boot" target="_blank">DENX</a>.  In the include/configs directory is sequoia.h, which includes detailed configuration information about the system clock, Flash, base addresses, serial ports, ethernet ports, and usb ports.  This file is specific to the Sequoia reference board and will require modification based on the actual system.  Recompilation of u-boot was necessary.  A standard Debian Linux filesystem was used along with a custom version of the Linux DENX kernel (linux-2.6.25-svn1995-dirtyxx).  The latest version of DENX Linux can be obtained from git.denx.de.  Please note that DENX support for sequoia was started during development of the 2.6.19 kernel.  Most of the relevant configuration is handled by arch/ppc/configs/sequoia_defconfig.  This file was modified for the current system and the Linux kernel was recompiled using DENX&#8217;s Embedded Linux Development Kit (ELDK).</p>
<pre>
<div class="codesnip-container" >
<div class="codesnip" style="font-family: monospace;"><span class="kw3">export</span> <span class="re2">ARCH=</span>ppc
<span class="kw3">export</span> <span class="re2">CROSS_COMPILE=</span>ppc_4xxFP-
<span class="re2">PATH=</span><span class="re1">$PATH</span>:/opt/eldk/usr/bin:/opt/eldk/bin
<span class="kw2">make</span> sequoia_defconfig
<span class="kw2">make</span> menuconfig
<span class="kw2">make</span> uImage</div>
</div>
</pre>
<p><strong>3. Programming  Flash memory with the bootloader (uboot)</strong></p>
<p>The Abatron must be configured for the intended processor (in this case, PPC440EPx) using a configuration file.  This file includes information about the translation lookaside buffer (TLB), the caches, the peripheral bus configuration registers, the type of Flash, the target CPU type, and the Abatron&#8217;s host.  In this example, the bdi configuration file for the AMCC 440EPx &#8220;Sequoia&#8221; reference board (evkit440epx.cfg) was used as a starting point and modified based on differences between the &#8220;Sequoia&#8221; reference and the actual system.  The most common modifications will likely be to the host section.  If this section is correct, you should be able to power up the Abatron, telnet to it from your host, and get a prompt back.  Connect the Abatron JTAG to the system&#8217;s JTAG and at the Abatron prompt, erase the flash and program U-Boot and its associated environmental variables.</p>
<pre>
<div class="codesnip-container" >440EPX&gt;reset
440EPX&gt;erase440EPX&gt;prog 0xfff60000 env.bin
Programming env.bin , please wait ....
Programming flash passed
440EPX&gt;prog 0xfffa0000 u-boot.bin
Programming u-boot.bin , please wait ....
Programming flash passed
440EPX&gt;md 0xfffa0000
fffa0000 : 27051956 552d426f 6f742032 3030392e  '..VU-Boot 2009.
fffa0010 : 30382028 53657020 31372032 30303920  08 (Sep 17 2009
fffa0020 : 2d203137 3a30373a 31332900 00000000  - 17:07:13).....
fffa0030 : 00000000 00000000 00000000 00000000  ................
fffa0040 : 00000000 00000000 00000000 00000000  ................
fffa0050 : 00000000 00000000 00000000 00000000  ................
fffa0060 : 00000000 00000000 00000000 00000000  ................
fffa0070 : 00000000 00000000 00000000 00000000  ................
fffa0080 : 00000000 00000000 00000000 00000000  ................
fffa0090 : 00000000 00000000 00000000 00000000  ................
fffa00a0 : 00000000 00000000 00000000 00000000  ................
fffa00b0 : 00000000 00000000 00000000 00000000  ................
fffa00c0 : 00000000 00000000 00000000 00000000  ................
fffa00d0 : 00000000 00000000 00000000 00000000  ................
fffa00e0 : 00000000 00000000 00000000 00000000  ................
fffa00f0 : 00000000 00000000 00000000 00000000  ................440EPX&gt;reset
440EPX&gt;go</div>
</pre>
<p>If you are connected to the system&#8217;s serial console, you will now see U-Boot come up.  Interrupt the autoboot to gain access to the U-Boot command line.</p>
<pre>
<div class="codesnip-container" >U-Boot 2009.08 (Nov 16 2009 - 15:54:12)

CPU:   AMCC PowerPC 440EPx Rev. A at 533.333 MHz (PLB=133, OPB=66, EBC=66 MHz)
       No Security/Kasumi support
       Bootstrap Option C - Boot ROM Location EBC (16 bits)
       Internal PCI arbiter enabled, PCI async ext clock used
       32 kB I-Cache 32 kB D-Cache
Board: Sequoia - AMCC PPC440EPx Evaluation Board, Rev. FF, PCI=66 MHz
I2C:   ready
256 MB

FLASH: 64 MB
NAND:  No NAND device found!!!
0 MiB
USB:   Host(int phy) Device(ext phy)
DTT:   1 FAILED INIT
Net:   ppc_4xx_eth0

Type run flash_nfs to mount root filesystem over NFS

Hit any key to stop autoboot:  0
=&gt;</div>
</pre>
<p><strong>4. Booting into Linux</strong></p>
<p>U-Boot can now be used to boot into Linux.  U-Boot has many configuration variables which must be set correctly.  In particular, the ethaddr, ipaddr, and serverip U-Boot environmental variables must be set in order to tftp the Linux kernel image. It is a good idea to make a memory map of the system’s flash.  In this example, the Linux kernel image will be booted using the network using tftp protocol to a load address of 400000.  Any arbitrary addresses in the FLASH may be used as long as the load address does not overlap with the location of U-Boot and its associated environmental variables.The file system is accessed using Network File System (NFS) and is mounted on the host.</p>
<pre>
<div class="codesnip-container" >=&gt; setenv ethaddr 00:10:EC:01:05:E6
=&gt; setenv ipaddr 192.168.100.51
=&gt; setenv serverip 192.168.100.206
=&gt; setenv hostname myproject
=&gt; saveenv

=&gt; setenv bootargs ip=${ipaddr}:${serverip}:${gateway}:${netmask}:${hostname}:${netdev}:off panic=1 console=ttyS0,115200
=&gt; setenv bootcmd 'tftp 400000 uImage.mine; bootm 400000'</div>
</pre>
<p>The saveenv command  saves the environmental variables to persistent storage.  You can now reboot the system.  This time do not interrupt the autoboot and watch Linux come up.</p>
<pre>
<div class="codesnip-container" >U-Boot 2009.08 (Nov 17 2009 - 09:05:32)

CPU:   AMCC PowerPC 440EPx Rev. A at 533.333 MHz (PLB=133, OPB=66, EBC=66 MHz)
       No Security/Kasumi support
       Bootstrap Option C - Boot ROM Location EBC (16 bits)
       Internal PCI arbiter enabled, PCI async ext clock used
       32 kB I-Cache 32 kB D-Cache
Board: Sequoia - AMCC PPC440EPx Evaluation Board, Rev. FF, PCI=66 MHz
I2C:   ready
256 MB
FLASH: 64 MB
NAND:  No NAND device found!!!
0 MiB
USB:   Host(int phy) Device(ext phy)
DTT:   1 FAILED INIT
Net:   ppc_4xx_eth0

Type run flash_nfs to mount root file system over NFS

Hit any key to stop autoboot:  0
miiphy_reset
PHY ADDR 0x0 1040
MII devices: 'ppc_4xx_eth0'
Current device: 'ppc_4xx_eth0'
PHY OUI = 0x01C1, Model = 0x02, Rev = 0x01
0
in 4xx_enet.c
Waiting for PHY auto negotiation to complete.... done
ENET Speed is 1000 Mbps - FULL duplex connection (EMAC0)
Using ppc_4xx_eth0 device
TFTP from server 192.168.100.206; our IP address is 192.168.100.51
Filename 'uImage.mine'.
Load address: 0x400000
Loading: #################################################################
         ######################################
done
Bytes transferred = 1502956 (16eeec hex)
## Booting kernel from Legacy Image at 00400000 ...
   Image Name:   Linux-2.6.25-svn1995-dirty2
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    1502892 Bytes =  1.4 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
Linux version 2.6.25-svn1995-dirty2 (soriano@host) (gcc version 4.2.2) #18 Thu Nov 19 09:50:36 PST 2009
AMCC PowerPC 440EPx Sequoia Platform</div>
</pre>
<p>Linux configures the Ethernet physical device interface.  You can now login to myproject and use Debian Linux on the embedded system.</p>
<pre>
<div class="codesnip-container" >
<div class="codesnip" style="font-family: monospace;">soriano@host:~$ telnet <span class="nu0">192.168</span><span class="nu0">.100</span><span class="nu0">.51</span>
Trying <span class="nu0">192.168</span><span class="nu0">.100</span><span class="nu0">.51</span>...
Connected to myproject.lab.
Escape character is <span class="st0">'^]'</span>.
Debian GNU/Linux <span class="nu0">5.0</span>
myproject <span class="kw2">login</span>: ops
Last <span class="kw2">login</span>: Thu Nov <span class="nu0">19</span> <span class="nu0">17</span>:<span class="nu0">52</span>:<span class="nu0">22</span> UTC <span class="nu0">2009</span> on ttyS0
Linux myproject <span class="nu0">2.6</span><span class="nu0">.25</span>-svn1995-dirty2 <span class="re3">#<span class="nu0">18</span> Thu Nov <span class="nu0">19</span> <span class="nu0">09</span>:<span class="nu0">50</span>:<span class="nu0">36</span> PST <span class="nu0">2009</span> ppc</span>

The programs included with the Debian GNU/Linux system are <span class="kw2">free</span> software;
the exact distribution terms <span class="kw1">for</span> each program are described <span class="kw1">in</span> the
individual files <span class="kw1">in</span> /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
ops@myproject:~$</div>
</div>
</pre>
<p>This is a basic overview of how a developer can load Debian Linux onto an embedded system.  Debian Linux is a free open-source operating system that can be used in conjunction with embedded systems for real-time applications.</p>
<p><strong>More Resources</strong></p>
<p>u-boot: <a href="http://www.denx.de/wiki/U-Boot" target="_blank">http://www.denx.de/wiki/U-Boot</a><br />
Abatron:<a href="http://www.abatron.ch/" target="_blank"> http://www.abatron.ch/</a><br />
Debian Linux <a href="http://www.debian.org/" target="_blank">http://www.debian.org/</a></p>
<p><strong>About the Author</strong></p>
<div id=":11h"><span style="color: #888888;">Melissa Soriano works as a staff engineer in the Tracking Systems and Applications Section at the Jet Propulsion Laboratory, operated by Caltech for NASA.  She has been designing and developing custom software for real-time applications since 2003.  Projects have included embedded Linux device drivers for receivers used by NASA&#8217;s Deep Space Network, An Automated Near Real-Time Quality Assessment System for the Ocean Surface Topography Mission, and real-time software for the Global Differential GPS System.  Melissa holds a BS degree in Electrical and Computer Engineering from the California Institute of Technology and an MS degree in Earth Science from George Mason University.  You can contact Melissa at soriano@almuni.caltech.edu.  She welcomes your comments and questions. </span></div>

<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://www.thebitsource.com/software-engineering/how-to-install-debian-linux-on-an-embedded-system/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rich Sharples of Red Hat on Java Enterprise Edition 6 (Java EE 6)</title>
		<link>http://www.thebitsource.com/software-engineering/java/rich-sharples-redhat-java-enterprise-edition-6-java-ee-6/</link>
		<comments>http://www.thebitsource.com/software-engineering/java/rich-sharples-redhat-java-enterprise-edition-6-java-ee-6/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 16:00:04 +0000</pubDate>
		<dc:creator>Matthew Sacks</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Red Hat]]></category>

		<guid isPermaLink="false">http://www.thebitsource.com/?p=1680</guid>
		<description><![CDATA[

Rich Sharples, Director of Product Management for Applications Platforms and Developer Tools at Red Hat, spoke with TheBitsource.com about the recent updates in Java Enterprise Edition Six, and a look into upcoming technologies in the Java platform.
Java EE 6 includes some new features such as managed beans, contexts and dependency injection, bean validation, JavaServerFaces 2.0, [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Rich Sharples, Director of Product Management for Applications Platforms and Developer Tools at Red Hat, spoke with TheBitsource.com about the recent updates in Java Enterprise Edition Six, and a look into upcoming technologies in the Java platform.</p>
<p>Java EE 6 includes some new features such as managed beans, contexts and dependency injection, bean validation, JavaServerFaces 2.0, and the Web Profile.</p>
<p>Rich has been involved with developing, designing and evangelizing Java and Java-based enterprise software sine 1998. He spent 8 years in the Software Group at Sun Microsystems before joining Red Hat.</p>
<p><strong>Q:</strong> How much of Java EE has changed between Java EE 5 and 6</p>
<p><strong>Rich Sharples:</strong> Java EE 6 is a major revision in every respect. Some quick analysis of the EE 5 and EE 6 specifications :<br />
•    Java EE 6 introduces 8 new specifications / APIs – Java EE 5 introduced the same number<br />
•    Of the 23 other APIs (from Java EE 5) – 11 have changed (either bumped up a major or minor version) and one has moved to Java SE. Java EE 5- changed 10 out of 16 existing specs. / APIs<br />
•    The page count has increased by about 6%, Java EE 5 actually reduced the page count by 40% (compared to J2EE 1.4). If you include the new Java EE 6 Web Profile – the page count increase is about 30%.</p>
<p>What the quick analysis doesn&#8217;t tell you is the significance of some of the changes. The major goal of Java EE 5 was to  increase developer productivity and adoption of EE. This was addressed via focusing on POJO programming, annotations and convention-over-configuration. The way in which EE 6 attempts to address some of the complexity of the EE platform is far more ambitious.</p>
<p>First there is the introduction of the Java EE 6 Web Profile. This is a subset of Java EE 6 and focuses on the core technologies and APIs required for building modern Web Applications. The specification only references 15 specs/APIs so it significantly reduces the potential learning curve for new developers moving to the Java EE platform. The idea of profiles has been discussed for many years and Java EE has lost some mind share to lighter-weight offerings built on Tomcat.  Developers now have a reliable standard profile and will be able to choose offerings from a number of vendors and open source projects.</p>
<p>The second major area that has changed is the introduction of two APIs that for the first time bring a consistent programming model to Java EE – JSR-299 (Contexts and Dependency Injection) and JSR-303 (Bean Validation).</p>
<p>CDI (Contexts and Dependency Injection) essentially standardizes the best design patterns distilled in popular, contemporary frameworks such as Seam, Spring and Guice and some of the earlier but far more limited advances in Resource Injection in Java EE 5. As well as standardizing a powerful, type safe CDI allows developers to manage the scope, state, life-cycle and context for objects in a much more declarative fashion – in line with modern programming paradigms and good practices.</p>
<p>Bean Validation simplifies how data is validated across presentation, business and data access tiers of an Enterprise Java application – removing the burden of maintaining duplicated boiler-plate code and potential inconsistencies.</p>
<p>In short these two specifications make it much simpler for developers to produce well structured and maintainable code using Java EE technologies like EJBs and JavaServer Faces.<br />
<strong>Q:</strong> What is Weld and what does it enable developers to do? Why was it chosen to be integrated into JEE 6?</p>
<p><strong>Rich Sharples: </strong><a href="http://www.seamframework.org/Weld" target="_blank">Weld</a> is the Reference Implementation of JSR-299 (Contexts and Dependency Injection). Red Hat is the specification lead for 299 so was responsible for producing the Reference Implementation (Weld) and the TCK. Weld is container neutral and can be run in JBoss AS, GlassFish, Tomcat and ?Jetty?.</p>
<p>Weld is also the core of <a href="http://www.seamframework.org" target="_blank">Seam 3.0</a> which is a powerful open source framework for building sophisticated Rich Internet Applications using the Java EE platform.</p>
<p><strong>Q:</strong> Has anything been removed in JEE 6?</p>
<p><strong>Rich Sharples:</strong> The only specification that was removed from Java EE 6 spec. was the Java Beans Activation Framework (JAF). JAF is now part of Java SE – so it&#8217;s basically moved down a layer – it hasn&#8217;t really been removed.</p>
<p>Java EE has always provided strict compatibility with previous versions and this release was no exception. But it&#8217;s worth noting that for the first time a major feature has been marked as deprecated (meaning it will be removed in a future version). In this case EJB CMP 1.1 Entity Beans have been marked deprecated – CMP was never a popular technology and it&#8217;s unlikely that it would be considered for any new development.</p>
<p><strong>Q:</strong> How does JEE 6 make Web application development easier or more effective?</p>
<p><strong>Rich Sharples:</strong> CDI and Bean Validation provide a much cleaner and consistent programming model across tiers of a Web Application. CDI builds some core capabilities for Dependency Injection and Context  Management into the platform and does it in a consistent and standard way.</p>
<p>The new 2.0 version of Java Server Faces (very popular for building Web UIs) has undergone some significant changes. Major changes include Facelets as first class view declaration language (overcoming the limitations of JSP); much simpler creation of custom component, native support for Ajax and improved state and event management.</p>
<p>Finally the new Java EE 6 Web Profile – provides a much easier on-ramp for developers coming from other platforms and technology.</p>
<p><strong>Q:</strong> Are there any changes to the JVM in JEE6 that result in better performance or manageability?</p>
<p><strong>Rich Sharples:</strong> There are many JVMs from different vendors and each have their own performance tricks and enhancements, Red Hat contributes to and fully supports the <a href="http://www.openjdk.java.net" target="_blank">OpenJDK</a> and has an interest in making Linux the best and most efficient place to run Java.</p>
<p><strong>Q:</strong> How will JDK7 fit into the JEE6 Roadmap, or will it be released in JEE 7?</p>
<p><strong>Rich Sharples:</strong> There is a staggering of SE and EE release. Java EE typically requires a specified level of Java SE – in the case of Java EE 5 – SE 5 was required though many Java EE 5 products will also use Java SE 6. In the case of Java EE 6, Java SE is required but many products will, over time, support both Java SE 6 and Java SE 7. So it&#8217;s likely that Java SE 7 will be supported by Java EE 6 products but Java EE 6 will not require Java SE 7.</p>
<p><strong>Q:</strong> Will there be support for the <a href="http://openjdk.java.net/projects/mlvm/" target="_blank">Da Vinci Machine Project</a> in Java EE 7?</p>
<p><strong>Rich Sharples:</strong> The Java SE 7 JSR still does not exist – all we can do is speculate what will be in Java SE 7. Irrespective of what will be in Java SE 7 – there have already been significant advances in binding non-Java languages to the Java Virtual Machine. Jruby, Scala, Groovy / Grails, Django, JavaScript, Jython are some of the more established examples. There has also been some experimentation in integrating non-Java languages into Java EE environments – Red Hat&#8217;s own <a href="http://www.torquebox.org" target="_blank">TorqueBox</a> is a good example. Torquebox provides a first class Ruby on Rails experience for developers with the power and flexibility of running on a proven enterprise platform – JBoss App Server 5.0.</p>
<p><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG /> </o:OfficeDocumentSettings> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:Zoom>0</w:Zoom> <w:TrackMoves>false</w:TrackMoves> <w:TrackFormatting /> <w:PunctuationKerning /> <w:DrawingGridHorizontalSpacing>18 pt</w:DrawingGridHorizontalSpacing> <w:DrawingGridVerticalSpacing>18 pt</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables /> <w:DontGrowAutofit /> <w:DontAutofitConstrainedTables /> <w:DontVertAlignInTxbx /> </w:Compatibility> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="276"> </w:LatentStyles> </xml><![endif]--> <!--  /* Font Definitions */ @font-face 	{font-family:Arial; 	panose-1:2 11 6 4 2 2 2 2 2 4; 	mso-font-charset:0; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:3 0 0 0 1 0;} @font-face 	{font-family:Cambria; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:3 0 0 0 1 0;}  /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:none; 	mso-hyphenate:none; 	font-size:12.0pt; 	font-family:Cambria; 	mso-fareast-font-family:Cambria; 	mso-bidi-font-family:Cambria; 	mso-fareast-language:AR-SA;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --> <!--[if gte mso 10]> <mce:style><!   /* Style Definitions */ table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-ascii-font-family:Cambria; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Cambria; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} --><br />
<strong>More Resources</strong></p>
<p>Rich Sharples Blog <a href="http://blog.softwhere.org " target="_blank">http://blog.softwhere.org</a> <!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG /> </o:OfficeDocumentSettings> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:Zoom>0</w:Zoom> <w:TrackMoves>false</w:TrackMoves> <w:TrackFormatting /> <w:PunctuationKerning /> <w:DrawingGridHorizontalSpacing>18 pt</w:DrawingGridHorizontalSpacing> <w:DrawingGridVerticalSpacing>18 pt</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables /> <w:DontGrowAutofit /> <w:DontAutofitConstrainedTables /> <w:DontVertAlignInTxbx /> </w:Compatibility> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="276"> </w:LatentStyles> </xml><![endif]--> <!--  /* Font Definitions */ @font-face 	{font-family:Arial; 	panose-1:2 11 6 4 2 2 2 2 2 4; 	mso-font-charset:0; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:3 0 0 0 1 0;} @font-face 	{font-family:Cambria; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:3 0 0 0 1 0;}  /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:none; 	mso-hyphenate:none; 	font-size:12.0pt; 	font-family:Cambria; 	mso-fareast-font-family:Cambria; 	mso-bidi-font-family:Cambria; 	mso-fareast-language:AR-SA;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --> <!--[if gte mso 10]> <mce:style><!   /* Style Definitions */ table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-ascii-font-family:Cambria; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Cambria; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} --> <!--[endif]--><br />
JBoss World <a href="http://www.redhat.com/promo/summit/2010/" target="_blank">http://www.redhat.com/promo/summit/2010/</a><br />
Java EE Home <a href="http://java.sun.com/javaee/" target="_blank">http://java.sun.com/javaee/</a></p>

<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://www.thebitsource.com/software-engineering/java/rich-sharples-redhat-java-enterprise-edition-6-java-ee-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCALE 8x: Pete Kronowitt: Killing Moblin</title>
		<link>http://www.thebitsource.com/open-source/scale-8x-pete-kronowitt-killing-moblin-2/</link>
		<comments>http://www.thebitsource.com/open-source/scale-8x-pete-kronowitt-killing-moblin-2/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 06:59:11 +0000</pubDate>
		<dc:creator>Ryan Compton</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[Moblin]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[SCALE]]></category>

		<guid isPermaLink="false">http://www.thebitsource.com/?p=1669</guid>
		<description><![CDATA[

By Ryan Compton
&#8220;We basically just killed Moblin&#8221; -Pete Kronowitt
Last week in Barcelona it was announced that Nokia and Intel will merge the better parts of Maemo and Moblin into a new product aimed at creating a unified framework for mobile device development, MeeGo. Today at SCALE 8x I spoke with Intel&#8217;s Pete Kronowitt about the [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>By Ryan Compton</p>
<p><strong>&#8220;We basically just killed Moblin&#8221; -Pete Kronowitt</strong></p>
<p>Last week in Barcelona it was announced that Nokia and Intel will merge the better parts of Maemo and Moblin into a new product aimed at creating a unified framework for mobile device development, MeeGo. Today at SCALE 8x I spoke with Intel&#8217;s Pete Kronowitt about the project and what it means for the open source community.</p>
<p><strong>What is MeeGo?</strong></p>
<p>MeeGo is a new platform designed to run on mobile devices under the auspices of the Linux Foundation. The MeeGo OS is specialized to run efficiently on your netbook, smartphone, or carputer and will deliver a full Internet experience (ie Java, Flash, Silverlight, Adobe Air) on each of those machines. A stylish user interface provides quick access to commonly used applications with an emphasis on social networking tools. MeeGo is aggressively stack optimized for execution with a small footprint and speed. You can go from the &#8220;ON&#8221; button to the internet in 20 seconds on a low end netbook with a solid state drive.</p>
<p><strong>What does MeeGo bring to open source?</strong></p>
<p>Meego allows a developer to build an application in the well understood Qt development environment and run it with the core OS designed for Moblin. This provides a straightforward way to get your application running on any equipment supported by MeeGo allowing for more expansion of open source software into the exploding mobile device market. There were 17 publicly committed Linux vendors for Moblin and most have provided positive feedback about the MeeGo announcement.</p>
<p><strong>What about the history of Meego?</strong></p>
<p>Near the end of 2007 Moblin was released with the aim of bringing open source to mobile devices. Not too long afterward ASUS came out with a triumphantly successful line of netbooks so we got on board with that to. We were able to get OpenHand UK to bring us Clutter while collaboration with Nokia brought a couple hundred more developers in and we were able to release MeeGo in Q1 2010.</p>
<p><strong>How can the open source community start developing?</strong></p>
<p>The vast majority of the core OS has been built with a considerable amount of work by engineers at Intel and Nokia. Right now we&#8217;d like to see people writing apps for release through Intel&#8217;s AppUp or Nokia&#8217;s Ovi.  The major push is for development to happen in Qt but there will be continued support for Clutter and GTK.</p>
<p><strong>What browser will MeeGo use?</strong></p>
<p>Look for the developer preview in March.</p>
<p><strong>How do you get all those UI graphics and still have a reasonable battery life?</strong></p>
<p>A major challenge is making sure support exists for the broad developer community. Since the community utilizes both multimedia frameworks, MeeGo suppports both gstreamer and Helix. More important to extend battery life is ensuring the entire software platform is optimized.  Tools play an important role to analyze misbehaving applications. Intel created a widely used tool called  PowerTOP which provides tuning suggestions to lower power consumption. Definitely check out PowerTop.</p>
<p><strong>Can you bring up a terminal?</strong></p>
<p>Yes. (Note that bringing up a terminal in front of the SCALE audience results in much applause with oohs and ahhs)</p>
<p><strong>Anything else you&#8217;d like to say?</strong></p>
<p>Not too long ago you would watch Star Trek and Captain Kirk would say &#8220;Computer&#8221; and then ask the computer to do just about anything. We&#8217;re basically there now.</p>
<p>If you&#8217;d like to speak with Pete he can found playing guitar at the Talking Stick in Venice, California on February 23rd.</p>
<p>More Resources:</p>
<p>Meego Home Page at the Linux Foundation <a href="http://www.linuxfoundation.org/lp/page/meego" target="_blank">http://www.linuxfoundation.org/lp/page/meego<br />
</a></p>
<p>Ryan Compton’s Homepage <a href="http://www.math.ucla.edu/%7Ercompton/" target="_blank">http://www.math.ucla.edu/~rcompton/</a></p>

<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://www.thebitsource.com/open-source/scale-8x-pete-kronowitt-killing-moblin-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyCon 2010: Event Report</title>
		<link>http://www.thebitsource.com/tech-conferences/pycon-2010-event-report/</link>
		<comments>http://www.thebitsource.com/tech-conferences/pycon-2010-event-report/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 20:55:27 +0000</pubDate>
		<dc:creator>Matthew Sacks</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Technology Conferences]]></category>
		<category><![CDATA[pycon]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.thebitsource.com/?p=1664</guid>
		<description><![CDATA[

PyCon 2010:  Event-Wrap Up
PyCon 2010 was  the largest PyCon to date, at over 1000 attendees, and had the the largest percentage of women in attendance in years past, at about 10%. This year&#8217;s PyCon presented many different interesting topics and concepts in Python development such as the core system, (which focuses more on compiler/interpreter design), [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p><strong>PyCon 2010:  Event-Wrap Up</strong></p>
<p><a href="http://us.pycon.org/2010/about/" target="_blank">PyCon 2010</a> was  the largest PyCon to date, at over 1000 attendees, and had the the largest percentage of women in attendance in years past, at about 10%. This year&#8217;s PyCon presented many different interesting topics and concepts in Python development such as the core system, (which focuses more on compiler/interpreter design), testing, and Web application development. There was something for everyone at PyCon, for beginners, advanced users, and even for those with no previous experience of Python.</p>
<p><strong>The Community</strong></p>
<p>The Python community at PyCon represents a largely interactive community. There was a large academic presence at Pycon, in addition to high presence from Google as well, being that Python is one of their top three used programming languages. Eldarion, a development shop of Python Web applications, who houses the Pinax project was also a contributing company to the event. The event had a significantly friendly tone to it. Most people were chatting casually about various projects and current events in Python, and there was a much less corporate feel to the event than other technology conferences.</p>
<p><strong>Interactivity</strong></p>
<p>The most interesting thing to me was the amount of interactivity at Pycon. If you wanted to contribute to an open source project, the development sprints (which are still underway) were a fantastic way to get involved. Regardless of your experience level, provided you know how to write programs in Python, you could get involved. Even if you didn&#8217;t and were a complete Python newbie, in most cases someone was still more than willing to sit down and show you the ropes on a given project. I was able to implement my first Django Web application while at PyCon, which to me was of a benefit in itself, and I look forward to checking out TurboGears as well for designing Web applications.</p>
<p><strong>Keynotes and Lighting Talks</strong></p>
<p>Mark Shuttleworth, Founder of Ubuntu was a highlighted <a href="http://www.thebitsource.com/people/mark-shuttleworth-at-pycon-cadence-quality-and-design/" target="_blank">keynote speaker </a>at the conference, who gave a talk on software quality, cadence, and design. In his keynote, he spoke mainly about the importance of writing testable code, and something he called &#8220;STFU protocol&#8221;, which essentially means as a developer, have  users test your software, and design software with the user in mind. This keeps a focus on accelerating the pace of development in open source software, and benefits the entire ecosystem. He stated that, &#8220;when you make a [software] release, you energize the [open source] community&#8221;.</p>
<p>Other great talks although they weren&#8217;t able to go into much details were the lightweight talks. Particularly, I found the <a href="http://haystacksearch.org/" target="_blank">Haystack project</a>, presented by Daniel Lindsley to be of particular interest, primarily due to the prevalence of search in Web applications as well as it&#8217;s plug-able nature into Apache Solr and other search engines.</p>
<p><strong>Talks</strong></p>
<p>The talks at PyCon were exceptional. Many talks were geared toward the core Python core system, and CPython implementations, including talks on Understanding the Python Global Interpreter Lock (GIL), <a href="http://codespeak.net/pypy/dist/pypy/doc/" target="_blank">PyPy</a>, Unladen Swallow, and other CPython implementations. Other talks took a less core Python perspective and focused Python Web application development, primarily with <a href="http://www.djangoproject.com/" target="_blank">Django</a> and <a href="http://turbogears.org/" target="_blank">TuboGears</a>. SourceForge.net delivered an interesting <a href="http://www.thebitsource.com/software-engineering/python/sourceforgenet-chooses-python-turbogears-and-mongodb-to-redesign-their-web-site/" target="_blank">presentation</a> on how they are rebuilding their Web site using Python, TurboGears and <a href="http://www.mongodb.org/display/DOCS/Home" target="_blank">MongoDB</a>. Their main concept for using these technologies was that they feel them to be the best available software technologies currently available.</p>
<p>There was also some bleeding edge topics on data stores, including Tobias Iverson&#8217;s talk on Neo4j, which is a graph-based databases rather than a relational database. This was a new cutting edge topic and primarily focuses on the aspect of efficiently scaling to very large numbers in terms of storing and accessing data (billions?).</p>
<p>Collin Winter gave an excellent talk on <a href="http://code.google.com/p/unladen-swallow/" target="_blank">Unladen Swallow</a>, and how they are making Python faster by utilizing <a href="http://llvm.org/" target="_blank">LLVM</a> and other clever methods.  One of the most notable announcements in this talk is that many of the optimizations developed in Unladen Swallow will be integrated into Python 3.</p>
<p>For the practical person writing simple (or complex) command line tools, Catherine Devlin gave a talk on how to create easy command-line application using cmd and cmd2. cmd is a standard Python library for creating command line applications. cmd2 is a drop-in replacement for cmd that also includes a searchable command history, interacting with the shell, and redirecting to files, for starters. The Python command-line SQL client, <a href="https://twiki.cern.ch/twiki/bin/view/PDBService/SqlPython " target="_blank">sqlpython</a>, utilizes cmd2 as it&#8217;s interactive shell.</p>
<p>Most of the users of Python are not core developers, and although there were many core developers at the conference, this conference could easily apply to anyone who just loves programming and learning more. There were many topics just on how to code &#8220;cool things&#8221; in Python, so it is a conference for anyone who enjoys writing programs and solving problems, regardless of experience level.</p>
<p>With high-profile companies such as Youtube, SourceForge.net, and Lolapps using Python to power their applications, as well as being able to do powerful and fun things quickly. PyCon offers a lost of support to developers wanting to attend. It also is gathering momentum as a development utility for testing. Python testing suites were a prevalent topic at the conference, with a  from Sauce Labs, a company specializing in Web testing and Selenium support. Frank Wierzbicki, also of Sauce Labs gave a keynote talk on the state of <a href="http://www.jython.org/" target="_blank">Jython</a>, the Python implementation in Java.</p>
<p>PyCon videos have been made to all on <a href="http://pycon.blip.tv/" target="_blank">blip.tv</a> and most presentations now have their slides posted on the <a href="http://us.pycon.org/2010/conference/schedule/" target="_blank">PyCon Web site</a>.</p>
<p><strong>Fun and Interesting Resources</strong></p>
<p>Many users found enjoyment on the PyCon IRC channel on freenode: #pycon<br />
The PyCon Live Stream <a href="http://pycon.djangodose.com/" target="_blank">http://pycon.djangodose.com/</a><br />
PyCon OHWar <a href="http://pycon.ohwar.com/" target="_blank">http://pycon.ohwar.com/</a><br />
PyCon Videos on Blip.TV (Getting released gradually for 2010) <a href="http://pycon.blip.tv/" target="_blank">http://pycon.blip.tv/</a><br />
PyCon on Micro-community (with videos) <a href="http://python.mirocommunity.org/" target="_blank">http://python.mirocommunity.org/</a><br />
Grig Gheorghiu&#8217;s PyCon Take Aways (A different perspective) <a href="http://agiletesting.blogspot.com/2010/02/my-top-10-pycon-takeaways.html." target="_blank">http://agiletesting.blogspot.com/2010/02/my-top-10-pycon-takeaways.html.</a></p>

<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://www.thebitsource.com/tech-conferences/pycon-2010-event-report/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyCon 2010: Sanjiv Singh on TurboGears Geographic Information Systems</title>
		<link>http://www.thebitsource.com/tech-conferences/pycon-2010-sanjiv-singh-turbogears-geographic-information-systems/</link>
		<comments>http://www.thebitsource.com/tech-conferences/pycon-2010-sanjiv-singh-turbogears-geographic-information-systems/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 23:22:07 +0000</pubDate>
		<dc:creator>Matthew Sacks</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Technology Conferences]]></category>
		<category><![CDATA[pycon]]></category>

		<guid isPermaLink="false">http://www.thebitsource.com/?p=1660</guid>
		<description><![CDATA[

Sanjiv Singh is a Python developer from New Delhi, India who contributes to the TurboGears and Toscawidgets projects. Singh recently gave a talk on &#8220;TurboGears2 Geopspatial Framework at PyCon 2010, which is a framework for developing Geographic Information System Applications, such as the Blind Audio Tactile System.
Q: What is the relationship between a GIS application [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Sanjiv Singh is a Python developer from New Delhi, India who contributes to the TurboGears and Toscawidgets projects. Singh recently gave a talk on &#8220;TurboGears2 Geopspatial Framework at PyCon 2010, which is a framework for developing Geographic Information System Applications, such as the Blind Audio Tactile System.</p>
<p><strong>Q: </strong>What is the relationship between a GIS application and a Geospatial framework?</p>
<p><strong>Sanjiv Singh: </strong>A GIS application is any software application that deals with information pertaining to &#8220;location&#8221; or &#8220;geometry&#8221; of objects and is capable of:<br />
(a) processing such information, such as finding out objects located within 100m raduis of another<br />
(b) displaying such information, such as showing objects on a map</p>
<p>A Geospatial Framework, on the other hand, is a collection of programs that work in an integrated manner towards easily developing GIS applications. The word Geospatial is a more formal term for what we commonly refer to as GIS.</p>
<p><strong>Q: </strong>Did you develop the Turbogears Geospatial Framework?</p>
<p><strong>Sanjiv Singh:</strong> Yes and No. The framework consists of many different python gis applications / libraries such as featureserver, mapfish, tilecache, Shapely, GeoJSON, etc. These are developed and maintained by other developers. However, I integrated these applications with the TurboGears2 Web Framework so that TurboGears developers may now develop GIS applications easily. I also contributed significantly to GeoAlchemy which is an extension of SQLAlchemy, the python database toolkit for GIS applications. GeoAlchemy now forms the ORM layer of the TG2 Geospatial Framework.</p>
<p><strong>Q: </strong>Why didn&#8217;t you choose Django, which has the GeoDjango framework readily available?<br />
<strong><br />
Sanjiv Singh:</strong> GeoDjango is a matured GIS framework, however, it is meant for Django applications. Having developed several applications using TurboGears, I did not want to re-implement existing applications or to learn another framework. So I used several Python gis libraries with my TurboGears applications to make them do Geospatial work. So, in order to make it easier for other TurboGears developers to use GIS I integrated these libraries through a new TG2 extension called tgext.geo. This extension along with GeoAlchemy now works as a Geospatial Framework.</p>
<p><strong>More Resources</strong></p>
<p>Sanjiv Sighn&#8217;s Open Source Projects <a href="http://www.ohloh.net/accounts/sanjiv" target="_blank">http://www.ohloh.net/accounts/sanjiv</a><br />
Sanjiv Singh&#8217;s PyCon Presentation (Including Slides) <a href="http://us.pycon.org/2010/conference/schedule/event/16/" target="_blank">http://us.pycon.org/2010/conference/schedule/event/16/</a><br />
Sanjiv Singh&#8217;s Blog<a href="http://sanjiv-singh.blogspot.com/" target="_blank"> http://sanjiv-singh.blogspot.com/<br />
</a><br />
TurboGears <a href="http://turbogears.org/" target="_blank">http://turbogears.org/</a><br />
Toscawidgets <a href="http://toscawidgets.org/" target="_blank">http://toscawidgets.org/</a></p>

<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://www.thebitsource.com/tech-conferences/pycon-2010-sanjiv-singh-turbogears-geographic-information-systems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LARubyConf 2010: A Ruby In The Sun</title>
		<link>http://www.thebitsource.com/tech-conferences/larubyconf-2010-a-ruby-in-the-sun/</link>
		<comments>http://www.thebitsource.com/tech-conferences/larubyconf-2010-a-ruby-in-the-sun/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 19:30:14 +0000</pubDate>
		<dc:creator>deadprogram</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Technology Conferences]]></category>
		<category><![CDATA[LARubyConf]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.thebitsource.com/?p=1630</guid>
		<description><![CDATA[

By Ron Evans (@deadprogram) of deadprogrammersociety.com
It was a beautiful sunny day here in Los Angeles, and I had spring already in my step, because I was headed to LARubyConf 2010. It was almost time for the main event, and there was lots of good stuff in store. The proceedings began with some brief introductions from [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>By Ron Evans (@deadprogram) of deadprogrammersociety.com</p>
<p>It was a beautiful sunny day here in Los Angeles, and I had spring already in my step, because I was headed to <a href="http://larubyconf.com">LARubyConf 2010</a>. It was almost time for the main event, and there was lots of good stuff in store. The proceedings began with some brief introductions from the hardest working man in technology conference video, Coby Randquist (<a href="http://twitter.com/kobier">@kobier</a>), then on with the show.</p>
<p><strong>Oh S***: How to bring a big Rails website down (and how not to)</strong><br />
<em>Tim Morgan (<a href="http://twitter.com/riscfuture">@riscfuture</a>)</em></p>
<p>Tim&#8217;s presentation was named &#8220;Oh S***: How to bring a big Rails website down (and how not to)&#8221;. It was an excellent collection of real-world experiences from Tim&#8217;s work at <a href="http://Scribd.com">Scribd</a> with database problems, and their eventual solutions.</p>
<p>Scribd handles a lot of documents. Really, they do. In fact, they have over 50,000 new docs uploaded every day. With a site this big, it is easy to break it, and that does happen. Most problems stem from the way Ruby on Rails handles the database interactions, which can become troublesome in a number of cases. Having caused unintentional havoc, Tim was schooled by his &#8216;masterful DBA&#8217; on some key rules of thumb for keeping out of trouble.</p>
<p><em>Database Rules of Thumb</em></p>
<ol>
<li>If you add something database related to your models, make sure you look at the actual SQL that is generated when using it.</li>
<li>When you look at the generated SQL and do not understand it, use EXPLAIN</li>
<li>If what EXPLAIN reports is not clear, ask someone</li>
</ol>
<p>There were several excellent examples presented for working with Ruby on Rails and MySQL. This included both correcting issues as well as performance optimization techniques. If you are using PostgreSQL or some other data store, then many of these specific techniques may not directly apply, but it was still an excellent exercise going thru them in detail.</p>
<p><strong>Alternative Data Structures in Ruby</strong><br />
<em>Tyler McMullen (<a href="http://twitter.com/tbmcmullen">@tbmcmullen</a>)</em></p>
<p>Next up was Tyler McMullen, also from Scribd, to talk about some different ways to represent your data besides just putting it into a database-like structure. By choosing a more appropriate data representation and algorithms, you can use well known techniques to solve some problems that are very performance intensive far better than just using databases.</p>
<p>The four structures discussed were Bloom Filters, BK Trees, Splay Trees, and Trie. As one friend commented to me afterwards, it was like a high-compression braindump at lightning-talk speed. For audience members who were not versed in the power of algorithms, or even those who were, Tyler hit some great points by not only showing how each worked, but also illustrating a real world example for each of when it could be used.</p>
<p>Use a bloom filter for problems like quickly handle requests for non-existing on a file server. A BK-tree is useful when you need to find best match, like spelling correction. Splay trees are great for improving performance for caches and garbage collectors. And a Trie is useful for problem like auto-completion. In fact, Tyler showed a cool example of auto-completion implemented in Rack in 20 lines of Ruby code.</p>
<p>Want to see code? Check out <a href="http://github.com/tyler">http://github.com/tyler</a> for some ruby extensions with these structures and algorithms.</p>
<p><strong>Teaching Ruby To Kids</strong><br />
<em>Sarah Mei (<a href="http://twitter.com/sarahmei">@sarahmei</a>)</em></p>
<p>Now we got to hear from Sarah Mei, a developer at <a href="http://pivotallabs.com/">Pivotal Labs</a> and an expert on teaching programming to kids. As Sarah put it very amusingly, &#8220;most programming instruction = fail&#8221;. And this, despite the fact that programming is becoming part of basic literacy.</p>
<p>She challenged the audience to get involved with teaching kids to program. After all, Ruby is the programming language for extroverts, and teaching is not &#8220;Rocket Science&#8221;. We all already have the tools and techniques we need to get started. She then proceeded to give a bunch of specific pointers, largely based around the same principles as Agile development.</p>
<p>Some great tools to teach programming to kids are <a href="http://github.com/shoes/shoes">Shoes</a>, <a href="http://hacketyhack.heroku.com/">Hackety Hack</a>, and the upcoming Small Ruby which is Sarah&#8217;s own implementation of Logo in Ruby. Other tools of interest are <a href="http://www.alice.org/">Alice</a>, and <a href="http://research.microsoft.com/en-us/projects/kodu/">Kodu</a>.</p>
<p>You need to find a balance between theory and practice. A child&#8217;s aptitude for math may = computer science, but aptitude at language = programming. The youngest age to teach programming is probably middle school. Pairing the kids together works well, seems to be better than pairing a teacher/student. What is the best way to get more girls programming? Starting at an earlier age.</p>
<p>Sarah gave a very entertaining and important talk. Each of us has a part to play in the education of the next generation of programmers, so let&#8217;s get to work!</p>
<p><strong>Everything You Ever Wanted To Ask About Threads And Fibers But Were Afraid To Ask </strong><br />
Joe Damato (<a href="http://twitter.com/joedamato">@joedamato</a>) &amp; Aman Gupta (<a href="http://twitter.com/tmm1">@tmm1</a>)</p>
<p>For those who were confused by the double take, Joe and Aman decided to pair present in each other&#8217;s scheduled talks. This was a pretty cool way to handle the massive amount of information that they have on Ruby performance and internals.</p>
<p>So, what is a thread? It is just a set of execution state, with instruction and stack pointers to allow for suspending and resuming the thread as needed. There are three kinds of threads: green threads, native threads, and hybrid threads.</p>
<p>Ruby 1.8 users green threads, but apparently does it wrong. On the other hand, Ruby 1.9 uses native threads. Erlang uses hybrid threads.</p>
<p>They also talked about 3 very powerful tools for performance profiling: strace (dtrace on OSX), google pref-tools, and ltrace. Using these tools, they have identified some major performance improvements in Ruby 1.8, and have these available at <a href="http://github.com/ice799">http://github.com/ice799</a> and <a href="http://github.com/tmm1/ruby187">http://github.com/tmm1/ruby187</a></p>
<p>One reason these patches are not part of Ruby&#8217;s MRI is that they are only for Ruby 1.8 and are also x86 specific.</p>
<p>Joe and Aman delivered when it came down to a very detailed discussion of how Ruby handles threads, as well. But their afternoon talk would be even more hardcore.</p>
<p><strong>New Relic With The Best Sponsored Message Ever &#8211; Really!</strong><br />
Paul McCready (<a href="http://twitter.com/kingofslugs">@kingofslugs</a>) from <a href="http://www.newrelic.com/">New Relic</a> gave the coolest and most fun sponsored demo I have ever seen. He showed some awesome pictures of human-powered flight (Go, Gossamer Albatross!) and in an incredibly entertaining way tied it into his brief pitch as to the benefits of New Relic&#8217;s application profiling service. Furthermore, he really knew what he was talking about. Good job, Paul! Someone give that man a raise.</p>
<p>After a long lunch filled with fun conversations between all the amazing Rubyists assembled, it was time for the second half.</p>
<p><strong>Civic Hacking</strong><br />
<em>LuigiMontanez (<a href="http://twitter.com/LuigiMontanez">@LuigiMontanez</a>)</em></p>
<p>Luigi Montanez works at the <a href="http://www.sunlightfoundation.com/">Sunlight Foundation</a>, a non-profit organization dedicated to government transparency via open source software and APIs. They have done some really excellent things, and have started getting more developers in the community involved. Of course, they need you to get involved, which was the immediate gauntlet throw by Luigi in his talk.</p>
<p>So what is civic hacking? It is when the government releases data, and citizens then develop peaceful application using that public data.</p>
<p>He discussed the Obama iPhone app, which was a key tool in organizing people during the run-up to the last presidential election. Interestingly, the app was not created by Obama&#8217;s campaign. Instead, it was built entirely by volunteers, and was only show to the Obama staff after it has been created and was about to be released. This is a excellent example of civic hacking in action.</p>
<p>The concept is simply this: Open Source + Open Data = Better Government. Right now, Federal, State, and local government has not done a very good job of publishing data online, let alone providing APIs with which to access this data.</p>
<p><a href="http://sunlightlabs.com/contests/appsforamerica/">Apps For America</a> was a contest sponsored by the Sunlight Foundation, and was very effective as getting many developers to create cool and use applications that mashup or present government data in a useful way. <a href="http://filibusted.us/">Fillibusted</a>, and <a href="http://www.thisweknow.org/">This We Know</a> are just a few of the great things created by open source civic hackers as part of Apps For America, and they are planning Apps For America 2 right now.</p>
<p>Luigi also discussed the <a href="http://www.securityprivacyandthelaw.com/tags/aaron-swartz/">Aaron Swartz incident</a>. Aaron Swartz, of Reddit fame, brought the attention of the Man on himself, when he helped out to make publicly availble information about U.S. federal court cases actually public, from a system called PACER. He was vindicated, but it points out even more strongly the need for making public data accessible to the public. Now there is a Firefox plugin called RECAP that grabs data from PACER and uploads to archive for free access, helps bypass the paywall, and makes new data available.</p>
<p>There are many ways to get started civic hacking. The main thing is to get involved. Because today in the internet age, we do not need large bureaucracy to support our engagement with government. Power to the people, right on!</p>
<p><strong>Garbage Collection and the Ruby Heap</strong><br />
Aman Gupta (<a href="http://twitter.com/tmm1">@tmm1</a>) &amp; Joe Damato (<a href="http://twitter.com/joedamato">@joedamato</a>)</p>
<p>The second part of Aman &amp; Joe&#8217;s detailed retrospective of the internals of Ruby, covered two things you would know nothing about if you had never programmed in any other language than Ruby. Lucky for all Ruby programmers, all aspects of memory management are hidden from view.</p>
<p>After a detailed description of stacks vs. heaps, and descriptions of how Ruby handles the many internal references, they discussed Ruby memory leaks. Since you do not handle memory directly in Ruby, they are not classic memory leaks. Instead, they are reference leaks. If an object has any objects that contains a reference to it, it can never be freed. Examples are assignment of an object to instance variable, or adding an object to a hash or array.</p>
<p>One very interesting technique they mentioned was loading profile data into <a href="http://www.mongodb.org/display/DOCS/Home">MongoDB</a> so you can do queries on it using memprof, a new profiling tool that Aman &amp; Joe have created. Memprof actually outputs JSON, which is MongoDB&#8217;s data storage format, which is what makes this so very easy to do.</p>
<p>Joe and Aman are amazingly knowledgeable about the hardcore internals of Ruby performance, and have posted their slides online, so if you want to get down and dirty with Ruby&#8217;s memory management implementation, I highly recommend checking it out. They are also getting ready to offer their memprof as a web-based service (<a href="http://memprof.com">http://memprof.com</a>) to make the process of analyzing the massive quantities of data easier.</p>
<p><strong>A New Look at Software Development: What will the next 10 years bring?</strong><br />
Dave Astels (<a href="http://twitter.com/dastels">@dastels</a>)</p>
<p>Dave Astels is a true software genius, having been instrumental in creation of the canonical Ruby testing framework <a href="http://rspec.info/">RSpec</a>. Now working with Ruby thinktank and hosting gurus <a href="http://engineyard.com">Engine Yard</a>, he has been thinking about a few interesting ideas regarding the next generation of software development. Or, as he put it quite humorously &#8220;the alternate title for this talk is &#8216;Programming: You&#8217;re Doing It Completely Wrong&#8217;&#8221;</p>
<p>What Dave was talking about, was that the difficulty in creating software is only getting worse. Software is more complex, bigger, more distributed, parallel, and even more life critical. We cannot continue building software over the next 10 years in the same way that we have for the last 50 years.</p>
<p>That&#8217;s right, 50 years. The theoretical basis for all the languages that we use today were mostly determined in the 1950&#8217;s. Actually, Smalltalk (&#8216;71) is one of the conceptual new kids on the block. Think you are modern with your functional languages like Erlang? Sorry, based on ML (&#8216;73).</p>
<p>As far as programming tools, Dave cannot understand why we are still using file system based tools like Emacs and Vim. Not that he likes any current IDE&#8217;s better. But clearly there are other ways to work with code, other than editing text files on disk.</p>
<p>We need languages and tools that have parallelism &amp; distributed processing baked in and that actively prevent bugs. The programming idioms that have become second nature to us as everyday tools don&#8217;t work.</p>
<p>Dave wants to see intelligent tools, that are more cooperative with the user, and do more for the developer. Perhaps even written using Rubinius. AHe says we need a new way of programming, that incorporates parallel strategies, problem decomposition, data structure design, and algorithmic organization.</p>
<p>It was a very thought provoking talk, and I am hoping that some of the concepts take root and grow.</p>
<p><strong>Mobile Ruby</strong><br />
Sarah Allen (<a href="http://twitter.com/ultrasaurus">@ultrasaurus</a>)</p>
<p>Sarah Allen is CTO of software consultancy <a href="http://blazingcloud.net/">Blazing Cloud</a>, where she has been doing mobile development, and is the creator of the &#8220;Ruby Conf 1.0&#8243; app on the iTunes app store. That app was written using the <a href="http://rhomobile.com/products/rhodes/">Rhodes</a> mobile framework, which was the main topic of Sarah&#8217;s talk.</p>
<p>&#8220;Writing mobile apps are like getting tattoos. some people like the pain, but most people just want the effect&#8221;, Sarah told the amused audience. &#8220;And Brand Transcends Platform,&#8221; she explained as she was juggling 3 handsets for the live portion of her demo. As the only presenter to show actual running code, I salute her!</p>
<p>Content is what really matters when developing a mobile app. Not so much the specifics of UI experience. It is key to remember that &#8220;Mobile != Pocket Desktop.&#8221; Also the promise of &#8220;Write Once, Run Anywhere&#8221; does not really exist for mobile development, but at least we can achieve &#8220;Run Anywhere.&#8221;</p>
<p>The rest of her presentation consisted of looking through the source code for the Ruby Conf 1.0 app. Since Rhodes is loosely based on Ruby on Rails, and the code you write is Ruby, most Rails developers will be able to recognize a lot of similarities. There are important differences, however. One interesting thing about Rhodes, is that there is actually a very small Ruby VM running on the mobile device when you compile your app togther. Apparently the most recent version also supports the popular Net:HTTP lib, so it is possible to create some pretty interesting applications that talk to remote services without using the RhoSync server to do so.</p>
<p>There have been a number of apps approved on the iTunes app store that were developed using Rhodes, including the Wikipedia mobile app. Rhodes is definitely worth taking a look, if you a Rubyist who wants to get into mobile development without learning Objective-C.</p>
<p><strong>The Big Rewrite &#8211; Doing It Right</strong><br />
Rich Kilmer (<a href="http://twitter.com/rich_kilmer">@rich_kilmer</a>)</p>
<p>The conference keynote was given by <a href="http://www.rubycentral.org/">RubyCentral</a> founder and longtime Rubyist (10 years!) Rich Kilmer. Rich runs a consultancy called <a href="http://infoether.com/">InfoEther</a>, and a few months back his colleague Chad Fowler (<a href="http://twitter.com/chadfowler">@chadfowler</a>), also a RubyCentral founder and member of InfoEther, wrote a blog post against the so-called &#8220;Big Rewrite&#8221;. Rich&#8217;s entire presentation was effectively a rebuttal against Chad&#8217;s post. Did I mention that Bob Martin (<a href="http://twitter.com/unclebobmartin">@unclebobmartin</a>) was a speaker at RailsConf 2007, and the topic of his talk was speaking vehemently against the &#8220;Big Rewrite&#8221;? Oh, we Rubyists are a wild and crazy bunch!</p>
<p>Rich&#8217;s presentation was quite excellent. His really knows not only Ruby, but has a fantastic grasp of how to build scalable, loosely coupled systems, based on a lot of real-world experience. So his plan for success is based on an actual big rewrite being done for a client by his consultancy, which is actually underway at the time of his presentation. And this is no mere incremental change, this is a total bottom to top rewrite.</p>
<p>Actually doing the &#8220;Big Rewrite&#8221; consists of understanding the drivers for the rewrite, preparing for the rewrite, executing the rewrite, then flipping.</p>
<p>The drivers, or reasons for doing the rewrite, are that it must be business driven, it must NOT be technology driven, you don&#8217;t call it a rewrite, and you must complete it in a major business cycle.</p>
<p>When preparing for the rewrite, you must drop a major release just before the rewrite, you must understand your problem domain, and you must break down the current system into logical sets of functionality.</p>
<p>Executing the rewrite requires implementing pieces as REST services, using central authentication, and implementing shared behaviors and using them. Furthermore,<br />
you must automate system administration tasks (Puppet or Chef), use a standard worker framework (minion or resque), and dedicate resources to repeatable data migrations. Lastly, keep service code consistent &amp; models clean, and make sure to use the right tool for the right job.</p>
<p>When ready to actually do the flip, you need to perform incremental migrations of historic data, prepare business users for possible disruption, and do practice runs of the flip scenario several times. Finally, enable &#8220;read only&#8221; of the old system during final client flip, do the flip, and provide a way to fall back if flip fails.</p>
<p>A few final points: use polyglot programming to handle needs with best language for certain tasks. if you need 20 lines of Lua or Perl, no big deal. Do it. You may need to add functionality to the existing system if the flip fails, or if you need to add functions during the big rewrite itself. And if two things should be named the same, but have different behavior, you probably actually have two different systems. You can do a big rewrite, but you need to stay within business cycle.</p>
<p><strong>Wrap Up</strong><br />
It was a rewarding day of serious Ruby awesome here in Los Angeles. When it comes to enthusiasm, and vibrancy of the Los Angeles Ruby community, we are really coming into our own. That is certainly one reason that we had so many cool out of town presenters and attendees. Thank you to all of the presenters, attendees, and organizers who helped make LARubyConf a great conference. See you next year!</p>
<blockquote><p>This guest blog post was written by Ron Evans (<a href="http://twitter.com/deadprogram">@deadprogram</a>) from <a href="http://hybridgroup.com">The Hybrid Group</a>, a team of Los Angeles Ruby on Rails software developers. Ron is a contributor to several open source projects, occasional author and speaker, and iconoclast. Check out his blog <a href="http://deadprogrammersociety.com">Dead Programmer Society</a> for many more posts about Ruby.</p></blockquote>

<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://www.thebitsource.com/tech-conferences/larubyconf-2010-a-ruby-in-the-sun/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SCALE 8x: Xen in Antarctica, An Interview with Stephen Spector</title>
		<link>http://www.thebitsource.com/open-source/xen-in-antarctica/</link>
		<comments>http://www.thebitsource.com/open-source/xen-in-antarctica/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 19:17:54 +0000</pubDate>
		<dc:creator>Ryan Compton</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SCALE]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Xen]]></category>

		<guid isPermaLink="false">http://www.thebitsource.com/?p=1623</guid>
		<description><![CDATA[

By Ryan Compton
I had the chance to speak with Stephen Spector of Xen.org about his work on this exciting virtualization project. We spoke about the basics of Xen, Xen development, and Xen in Antarctica, which is one of the goals for the Xen Around the World project.
What does Xen do?
Xen is a collaboration between industry [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>By Ryan Compton</p>
<p>I had the chance to speak with Stephen Spector of <a href="http://xen.org/">Xen.org</a> about his work on this exciting virtualization project. We spoke about the basics of Xen, Xen development, and Xen in Antarctica, which is one of the goals for the Xen Around the World project.</p>
<p><strong>What does Xen do?</strong></p>
<p>Xen is a collaboration between industry giants, universities, and hobbyists to provide an open source (GPLv2) hypervisor for server virtualization. The hypervisor provides a layer between the guest and the hardware allowing for multiple operating systems to be run on the same server.</p>
<p><strong>How does Xen differ from other hypervisor&#8217;s?</strong></p>
<p>Xen is developed by a combination of corporations where each company builds their unique strength into the software. Intel optimizes hardware, Oracle virtualized databases and Citrix works with desktop virtualization. VMware, our major propitary competitor, develops all their software alone and thus relies on a smaller support base.</p>
<p><strong>Why is it exciting to be working in virtualization now?</strong></p>
<p>Only about 20% of servers are virtual right now and that number is growing rapidly. As high speed internet becomes more widely available cloud computing will only continue to grow at least as fast as it has in the past few years. Xen is already being used for Amazon&#8217;s EC2 and Citrix systems&#8217;s servers.</p>
<p><strong>How can people become involved with the development of Xen?</strong></p>
<p>First off, get to our friendly <a href="http://www.xen.org/community/">mailing lists</a> and participate in the conversations. The Xen hypervisor  is a highly sophisticated construct that most hobbyists are not involved with, at this level changes must be approved by the hypervisor&#8217;s creator, Keir Fraiser. Most of the development that we see from individuals comes at the management space layer. We also have people that contribute by  simply answering questions on the message boards or explain how they use Xen.</p>
<p><strong>I noticed you have a project &#8220;<a href="http://xen.org/community/projects.html">Xen Around the World</a>&#8220;</strong>, <strong>where are some of the more interesting places you&#8217;ve found Xen?<br />
</strong></p>
<p>The goal here is to get Xen in Antarctica. So far we&#8217;ve hit every other continent but we still can&#8217;t find a way to get there. There is one group using Xen in a fairly remote part of Africa but we can&#8217;t seem to find out exactly what they are doing there. There&#8217;s also a group of guys in Britain who run horse racing bets on an OS/2 network, they used Xen to keep their bets going while they updated their hardware.</p>
<p><strong>Anything coming up?</strong></p>
<p>We&#8217;ve got a conference in San Jose on April 28th and 29th. That&#8217;s a real good place to be if you want to get to know some of the fine details of the hypervisor&#8217;s memory mapping.</p>
<p>For more information Steve can be found traveling to any of the following <a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;oe=UTF8&amp;msa=0&amp;msid=103032227175318047199.0004512063c9e38e0e54a&amp;ll=39.203307,-40.017068&amp;spn=90.171154,149.414063&amp;z=2&amp;source=embed" target="_blank">locations</a>.</p>
<p>Ryan Compton&#8217;s Homepage <a href="http://www.math.ucla.edu/~rcompton/" target="_blank">http://www.math.ucla.edu/~rcompton/</a></p>

<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://www.thebitsource.com/open-source/xen-in-antarctica/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PyCon 2010 Videos Now Available</title>
		<link>http://www.thebitsource.com/tech-conferences/pycon-2010-videos-now-available/</link>
		<comments>http://www.thebitsource.com/tech-conferences/pycon-2010-videos-now-available/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 18:02:44 +0000</pubDate>
		<dc:creator>Matthew Sacks</dc:creator>
				<category><![CDATA[Technology Conferences]]></category>
		<category><![CDATA[pycon]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.thebitsource.com/?p=1626</guid>
		<description><![CDATA[

The PyCon team has begun to post the videos from PyCon 2010 on blip.tv. More videos will appear online as they become available. See what you&#8217;ve missed here http://pycon.blip.tv/.


]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>The PyCon team has begun to post the videos from PyCon 2010 on blip.tv. More videos will appear online as they become available. See what you&#8217;ve missed here <a href="http://pycon.blip.tv/" target="_blank">http://pycon.blip.tv/</a>.</p>

<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://www.thebitsource.com/tech-conferences/pycon-2010-videos-now-available/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SourceForge.net chooses Python, TurboGears and MongoDB to Redesign their Web Site</title>
		<link>http://www.thebitsource.com/software-engineering/python/sourceforgenet-chooses-python-turbogears-and-mongodb-to-redesign-their-web-site/</link>
		<comments>http://www.thebitsource.com/software-engineering/python/sourceforgenet-chooses-python-turbogears-and-mongodb-to-redesign-their-web-site/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 08:06:48 +0000</pubDate>
		<dc:creator>Matthew Sacks</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[pycon]]></category>
		<category><![CDATA[TurboGears]]></category>

		<guid isPermaLink="false">http://www.thebitsource.com/?p=1616</guid>
		<description><![CDATA[

Rick Capeland, SourceForge.net gave a presentation on, &#8220;How Python, TurboGears, and MongoDB are Transforming SourceForge.net&#8221;, at PyCon 2010 today in Atlanta, Georgia. Copeland discussed SourceForge&#8217;s desire to migrate off PHP code and start re-factoring their customer facing site, using a with the titled recipe of Python, TurboGears, and MongoDB. The PHP code was chosen by [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Rick Capeland, SourceForge.net gave a presentation on, &#8220;How Python, TurboGears, and MongoDB are Transforming SourceForge.net&#8221;, at PyCon 2010 today in Atlanta, Georgia. Copeland discussed SourceForge&#8217;s desire to migrate off PHP code and start re-factoring their customer facing site, using a with the titled recipe of Python, TurboGears, and MongoDB. The PHP code was chosen by SourceForge to be the best technology at the time back in 1998, and SourceForge believes that a combination of Python and NoSQL is the best technology that the current times have to offer.</p>
<p>What was interesting was that Copeland goes on to explain that their reluctance to use Memcached due to the network overhead and object serialization and de-serialization. MongoDB can about the same performance as Memcached by utilizing local instance slaves, according to Copeland.</p>
<p>Copeland also recently released the open source project, Ming, which is an open source library for interfacing with MongoDB from Python. SourceForge plans to continue to re-factor more of their Web applications using the same technologies in the near future.</p>
<p>Copeland&#8217;s talk was interesting, and provides a different perspective on rebuilding a Web site from scratch. SourceForge is definitely breaking out the fun toys for their site redesign, and it will be interesting to see how quickly they can redesign their site and with how much manpower using these utilities.</p>
<p>What would also be interesting to see is a performance comparison of the site before and after the redesign on Python, TurboGears, and MongoDB.</p>
<p><strong>More Resources</strong></p>
<p>Rick Capland&#8217;s Talk (With Slides) <a href="http://us.pycon.org/2010/conference/schedule/event/110/" target="_blank">http://us.pycon.org/2010/conference/schedule/event/110/</a><br />
MongoDB <a href="http://www.mongodb.org/display/DOCS/Home" target="_blank">http://www.mongodb.org/display/DOCS/Home</a><br />
TurboGears <a href="http://turbogears.org/" target="_blank">http://turbogears.org/</a></p>

<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://www.thebitsource.com/software-engineering/python/sourceforgenet-chooses-python-turbogears-and-mongodb-to-redesign-their-web-site/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
