<?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>James&#039; World &#187; OSCON</title>
	<atom:link href="http://www.jebriggs.com/blog/category/oscon/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jebriggs.com/blog</link>
	<description>Observations by a Programmer of Silicon Valley and Beyond</description>
	<lastBuildDate>Sun, 05 Feb 2012 10:40:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Humorous NoSQL Videos</title>
		<link>http://www.jebriggs.com/blog/2011/11/humorous-nosql-videos/</link>
		<comments>http://www.jebriggs.com/blog/2011/11/humorous-nosql-videos/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 12:12:05 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://www.jebriggs.com/blog/2011/11/</guid>
		<description><![CDATA[NoSQL Better Than MySQL? Episode 1 &#8211; MongoDB Is Web Scale Hitler&#8217;s Hadoop and NoSQL Downfall Parody O&#8217;Reilly MySQL CE 2010: Brian Aker, &#8220;A Guide to No-SQL&#8221;]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.youtube.com/watch?v=QU34ZVD2ylY">NoSQL Better Than MySQL?</a><br />
<a href="http://www.youtube.com/watch?v=b2F-DItXtZs">Episode 1 &#8211; MongoDB Is Web Scale</a><br />
<a href="http://www.youtube.com/watch?v=hEqQMLSXQlY">Hitler&#8217;s Hadoop and NoSQL Downfall Parody</a><br />
<a href="http://www.youtube.com/watch?v=z-0uO9EgI2o">O&#8217;Reilly MySQL CE 2010: Brian Aker, &#8220;A Guide to No-SQL&#8221;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jebriggs.com/blog/2011/11/humorous-nosql-videos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2011, Portland</title>
		<link>http://www.jebriggs.com/blog/2011/07/oscon-2011-portland/</link>
		<comments>http://www.jebriggs.com/blog/2011/07/oscon-2011-portland/#comments</comments>
		<pubDate>Sun, 31 Jul 2011 06:03:21 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[Japanese]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Psychology]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Toys]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[User Groups]]></category>

		<guid isPermaLink="false">http://www.jebriggs.com/blog/?p=3735</guid>
		<description><![CDATA[Once again, the O&#8217;Reilly Open Source Conference (OSCON) was held in Portland, Oregon. It was held in parallel at the Oregon Convention Center with the O&#8217;Reilly OSdata and OSjava Conferences at the beginning of the week, and then later a &#8230; <a href="http://www.jebriggs.com/blog/2011/07/oscon-2011-portland/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Once again, the <a href="http://www.oscon.com/oscon2011/">O&#8217;Reilly Open Source Conference (OSCON)</a> was held in Portland, Oregon.</p>
<p>It was held in parallel at the Oregon Convention Center with the O&#8217;Reilly OSdata and OSjava Conferences at the beginning of the week, and then later a knitting conference.</p>
<p>The conferences were well-managed, as usual. Great economy: lots of job notices and recruiting appeals. There was some chatter about Tim&#8217;s <a href="http://radar.oreilly.com/2011/07/sexual-harassment-at-technical.html">anti-harassment blog post.</a></p>
<p><strong>Executive Summary:</strong></p>
<ul>
<li>HTML5/CSS3/AppCache are what should have been available 20 years ago, and are significant improvements that allow both desktop and mobile development in HTML. Although the HTML5 video tag gets a lot of press, HTML5 includes equally important forms improvements.
<li>DNSSEC is <a href="http://tools.ietf.org/html/draft-ietf-dnsop-rfc4641bis-07">complex</a> and new signatures should be generated every 30 days or less (to reduce replay attacks by limiting the signature validity period), which is a burden on companies without a full-time DNS hostmaster. Third-party DNS hosting companies are salivating over DNSSEC.
<li>MySQL long-term stewardship is still in question, with Oracle hemorrhaging MySQL developers and closing access to their bugs database, but MontyProgram and Percona maintaining strong forks.
</ul>
<p>Here&#8217;s my notes on some of the tutorials and talks I attended:</p>
<p><strong>Monday</strong></p>
<p><strong><a href="http://www.oscon.com/oscon2011/public/schedule/detail/19216">HTML5 &#038; CSS3: The Good Enough Parts</a></strong><br />
Estelle Weyl, Standardista.com<br />
<a href="http://www.standardista.com/forms/oscon/">Slides</a></p>
<p>- transform-origin is key to snowflake demo looking realistic, easy to use<br />
- background resets everything, so use individual properties<br />
- background-position &#8211; use all 4 values<br />
- background-size auto contain cover, handy for iPhones<br />
- text-overflow: ellipsis<br />
- minimal HTML5 document:<br />
<code><br />
&lt;!doctype html5&gt;<br />
&lt;meta charset=utf8&gt;<br />
&lt;title&gt;&lt;/title&gt;<br />
</code><br />
(head and body are implied)<br />
- or even send tags in server headers<br />
- changed most elements<br />
- &lt;i lang=&#8221;"&gt; useful to style<br />
- small tag useful for legal smallprint, since there&#8217;s no copyright metatag yet<br />
- <a href="http://code.google.com/p/html5shim/">html5shim</a><br />
- <a href="http://www.modernizr.com/">Modernizr</a><br />
- <a href="http://html5boilerplate.com/">HTML5 Boilerplate</a> &#8211; good way to learn HTML5 and CSS3<br />
- tabindex=&#8221;-1&#8243; allows JS to set focus and not bother user otherwise<br />
- spellcheck=&#8221;true&#8221; | &#8220;false&#8221;<br />
- itemtype=&#8221;http://data-vocabulary.org/Person&#8221;<br />
- new input types<br />
- placeholder, pattern, required, spellcheck, validate<br />
- a@b is deliverable for internal email servers. hmm.<br />
- meter, progress, output widgets<br />
- <a href="http://www.html5rocks.com/">HTML5Rocks</a><br />
- button generator at <a href="http://css3button.net/">css3button.net</a><br />
- <a href="http://en.wikipedia.org/wiki/Voronoi_diagram">Voronoi diagram</a> demo<br />
- <a href="http://code.google.com/p/webglsamples/">aquarium.js</a><br />
- web workers</p>
<p><strong>Monday Lunch</strong></p>
<p>Benjamin, Ubuntu<br />
- loves <a href="https://www.cloudflare.com/">CloudFlare</a><br />
- likes Linode<br />
- <a href="http://nimbula.com/">nimbula</a></p>
<p>Talked to an open mapping data fellow about various projects. Google ToS is scary when it comes to that kind of data.</p>
<p><strong>Monday Afternoon</strong></p>
<p><a href="http://www.oscon.com/oscon2011/public/schedule/detail/17828">Moose is Perl: A Guide to the New Revolution</a><br />
Ricardo Signes, Pobox.com<br />
<a href="http://assets.en.oreilly.com/1/event/61/Moose is Perl_ A Guide to the New Revolution Presentation 1.pdf">Slides</a></p>
<p>- detailed talk about Moose features and syntax<br />
- chatted with other folks at break time about topics like <a href="http://search.cpan.org/~kamelkev/CSS-Inliner/">CSS::Inliner</a> and <a href="http://search.cpan.org/~sri/Mojolicious/">Mojolicious</a> web framework (with minimal dependencies) by Sebastian Riedel.</p>
<p><strong>Tuesday Afternoon</strong></p>
<p><a href="http://www.oscon.com/oscon2011/public/schedule/detail/18984">Three For Five &#8211; Functional HTML5 &#038; CSS3 for Designers &#038; Developers</a><br />
Jason VanLue, Envy Labs and CodeSchools.com</p>
<p>- good training session with fun sample &#8211; a beer menu created from 1 photo (CSS3 text scaling and rotation) and HTML5/CSS3 styled text<br />
- <a href="http://threeforfive.codeschool.com/">training class is available online</a> for $75 (also jQuery and 2 Rails classes)<br />
<center><br />
<a href="http://jebriggs.com/php/3-for-5-beer.png"><img src="http://jebriggs.com/php/3-for-5-beer.png" alt="3-for-5 Beer Menu" title="3-for-5 Beer Menu" width="95%" height="95%"/></a><br />
<a href="http://jebriggs.com/php/3-for-5-beer.png">Click to Enlarge</a><br />
</center></p>
<p><strong>Tuesday Night</strong><br />
<center><br />
<img src="http://jebriggs.com/php/puppet_labs_logo.jpg" alt="Puppet Labs Logo" title="Puppet Labs Logo"/><br />
</center><br />
- went to <a href="http://www.puppetlabs.com/">Puppet Labs</a> office for CloudCamp lightning talks, which started about 90 minutes late<br />
- nice office, typical start-up look across from a small park. Comfy little meeting rooms with leather sofas a la Netflix.<br />
- about 5 lightning talks total, 2 were sales pitches, 2 had 40 slides crammed into 5 minutes. ick.<br />
- Puppet Labs CEO gave a good talk on optimizing Puppet for a client with 10,000+ nodes. Converted XML::RPC to REST, which doubled performance from 500 to 1,000 qps (I talked to Randy Ray about that, and he wasn&#8217;t surprised and that would be the case on simple requests), did some more work and maxed out at 2,500 qps. Enabling SSL did not slow down requests.<br />
- got too crowded for me, and also fire department, who manned the exits and counted people as they entered and left.<br />
<center><br />
<a href="http://www.flickr.com/photos/jacob_helwig/5979946129/sizes/m/in/photostream/"><img src="http://jebriggs.com/php/puppet_labs_office.jpg" alt="Puppet Labs Office" title="Puppet Labs Office" /></a><br />
Photo credit: Jacob Helwig<br />
</center><br />
<strong>Wednesday</strong></p>
<p><a href="http://www.oscon.com/oscon2011/public/schedule/detail/18480">Creating a Scalable JavaScript Application Architecture</a><br />
Nicholas Zakas, NCZConsulting<br />
<a href="http://slideshare.net/nzakas">Slides</a></p>
<p>An AJAX client only cares about getting the data it wants, not response codes, etc. </p>
<p>Use layered JavaScript client architecture:</p>
<p>- sandbox<br />
- application<br />
- library (Dojo, YUI, <a href="http://mootools.net/">MooTools,</a> etc. )</p>
<p>www.nczonline.net<br />
@slicknet<br />
Author of &#8220;High Performance JavaScript&#8221;</p>
<p><strong>Wednesday Lunch</strong></p>
<p>I talked to Ben Golub, CEO of <a href="http://www.gluster.com/">Gluster.</a></p>
<p>- 80% business, 20% scientific<br />
- users include <a href="http://www.box.net/">box.net,</a> <a href="http://www.pandora.com/">Pandora.com</a><br />
- written in C<br />
- minimum is 2 nodes for replication<br />
- lots of people use it in EC2<br />
- office located in Sunnyvale.</p>
<p><strong>Wednesday Afternoon</strong></p>
<p><a href="http://www.oscon.com/oscon2011/public/schedule/detail/18792">HTML5: All about Web Forms</a><br />
Estelle Weyl, standardista.com</p>
<p>- use label tag with forms to ease navigation for end-users<br />
- use placeholder attribute, better for screenreaders than JS coding<br />
- multiple autofocus defaults to last one in HTML5<br />
- type=&#8221;text&#8221; is default, so tel, email, etc. degrades on all browsers back to text<br />
- form element can disassociate parent form, useful for AJAX multiform pages<br />
- input types good for mobile devices to show useful soft keyboard for url or email input types<br />
- numeric step options<br />
- test date and numeric input types for usability. Scrolling birthdays or zip codes is painful<br />
- still need JS<br />
- Opera is first with new UI features but last with artistic design, so currently has hideous tooltip appearance<br />
- list and datalist like exploded select. Include select for IE backward compatibility<br />
- meter, progress and output UI elements<br />
- input type=text x-webkit-speech, now on Google homepage</p>
<p><a href="http://www.oscon.com/oscon2011/public/schedule/detail/19154">HTML5 in Your Pocket: Application Cache and Local Storage </a><br />
Scott Davis, ThirstyHead.com</p>
<p>- 4 million Macs, 32 million iDevices in last quarter<br />
- Basecamp Mobile<br />
- <a href="http://diveintohtml5.org/">&#8220;Dive into HTML5&#8243;</a> by Mark Pilgrim online<br />
- cookies should be called thimbles, only 4k<br />
- HTML5 localstorage supported in IE8, FF 3.5, so practically all<br />
- 5 MB, QUOTA_EXCEEDED_ERR, can&#8217;t increase now<br />
- <a href="http://statcounter.com/">StatCounter</a> browser stats<br />
- <a href="https://gist.github.com/350433">gist 350433: Storage polyfill</a> using window.name and cookies<br />
- no version of IE or FF support web SQL and they probably won&#8217;t, FF for philosophical reasons<br />
- cache manifest<br />
- <a href="http://jameswragg.com/experiments/genmanifest/">genManifest</a> bookmarklet<br />
- FF <a href="http://about:cache">about:cache</a> and Firebug are handy to see caches<br />
- appcache has no expiry date<br />
- date stamping manifest file causes re-download<br />
- 404 causes none to be saved<br />
- treat appcache as only slightly more secure than cookies, which are round-tripped<br />
- webplication<br />
- still sandboxed from local file access, could use node.js or signed app<br />
- See W3C <a href="http://www.w3.org/TR/html5/offline.html">HTML5 offline</a></p>
<p><a href="http://www.oscon.com/oscon2011/public/schedule/detail/18972">Profiling and Detecting Bottlenecks in Software</a><br />
Bryan Call, Yahoo!/Apache Committer<br />
<a href="http://assets.en.oreilly.com/1/event/61/Profiling%20and%20Detecting%20Bottlenecks%20in%20Software%20Presentation.pptx">PowerPoint .pptx</a></p>
<p>- usual savings (machines, moving parts, get smart)<br />
- top, <a href="http://htop.sourceforge.net/">htop</a><br />
- vmstat, dstat<br />
- time cmd<br />
- Boost logging does small writes, allocates memory when it gets behind, causing both IO and memory pressure<br />
- profilers like oprofile and google profile cause 1% to 8% slowdown<br />
- valgrind&#8217;s callgrind much more resources<br />
- oprofile has script to convert output to <a href="http://kcachegrind.sourceforge.net/html/Home.html">kcachegrind</a><br />
- opcontrol &#8211;deinit<br />
- sysctl nmi_watchdog off<br />
- opcontrol &#8211;no-vmlinux<br />
- opcontrol &#8211;daemon<br />
- google profiler userland, LD_PRELOAD<br />
- env CPUPROFILE=/tmp/mybin.prof /usr/local/bin/my_binary_compiled_with_libprofiler_so<br />
- caching: don&#8217;t do the same work twice<br />
- choose the correct algorithms and data structures:  dqueue vs. List, hash vs. trees, locks vs. r/w locks, bloom filter<br />
- reuse memory, stack vs. heap, <a href="http://goog-perftools.sourceforge.net/doc/tcmalloc.html">tcmalloc</a><br />
- make fewer system calls (larger reads and writes)<br />
- faster hardware, bonded NICs, SSDs, RAID, CPU, more cores<br />
- read <a href="https://cwiki.apache.org/TS/profiling.html">How to Profile Apache Traffic Server</a><br />
- <a href="http://www.bootchart.org/">bootchart</a><br />
- <a href="http://acme.com/software/http_load/">http_load</a> now uses epoll<br />
- he made ab multi-core</p>
<p>From <a href="http://www.mjmwired.net/kernel/Documentation/sysctl/kernel.txt">kernel.txt</a>: &#8220;nmi_watchdog: Enables/Disables the NMI watchdog on x86 systems.  When the value is non-zero the NMI watchdog is enabled and will continuously test all online cpus to determine whether or not they are still functioning properly. Currently, passing &#8220;nmi_watchdog=&#8221; parameter at boot time is required for this function to work. If LAPIC NMI watchdog method is in use (nmi_watchdog=2 kernel parameter), the NMI watchdog shares registers with oprofile. By disabling the NMI watchdog, oprofile may have more registers to utilize.&#8221;</p>
<p><a href="http://www.oscon.com/oscon2011/public/schedule/detail/21187">CoffeeScript: A New Hope for JavaScript</a><br />
Scott Davis, ThirstyHead.com</p>
<p>- trainer, author, worked on Comcast/Time Warner TVs which mostly use WebKit<br />
- little language that compiles into JS<br />
- JS V8 headless, like node.js<br />
- PhantomJS is headless HTML, handy for testing<br />
- Google GWT compiles Java to JS<br />
- &#8220;transpiler&#8221;<br />
- install node.js<br />
- install npm<br />
- npm install -g coffeescript<br />
- &#8211;tokens, &#8211;nodes like java p<br />
- immediately invoked function expression IIFE<br />
- coffeescript: string interpolation #{name}, &#8220;&#8221;"<br />
- objects with left-hand spacing like python</p>
<p><strong>Thursday</strong></p>
<p><a href="http://www.oscon.com/oscon2011/public/schedule/detail/18809">DNSSEC @ Mozilla</a><br />
Shyam Mani, Mozilla Corporation<br />
<a href="http://people.mozilla.org/~shyam/presentations/oscon-2011.pdf">Slides</a></p>
<p>- BIND 9.7 is nice for DNSSEC<br />
- Keys are everything, protect them. Have a backup plan.<br />
- Cisco core routers by default don&#8217;t expect large DNS transfers:<br />
<code><br />
policy-map global policy class inspection_default inspect dns maximum-length 4096<br />
</code><br />
- DS was live, no signed zones<br />
- watch log levels, can be chatty and quickly fill disk with logs<br />
- DNSSEC has no immediate benefit to end-users, since resolvers don&#8217;t honor it<br />
- their logs show 1000:1 dns vs dnssec queries for last 6 months, but growing<br />
- <a href="https://supportforums.cisco.com/thread/2013194">IOS Firewall DNSSEC</a></p>
<p><a href="http://www.oscon.com/oscon2011/public/schedule/detail/18795">Ask Google Engineers Anything</a><br />
Chris DiBona, Google</p>
<p>- 55 Google employees attending OSCON this year<br />
- mostly end-user questions about Google+ circles and API<br />
- or running Go on android<br />
- or why does my telco not do firmware releases for my smartphone<br />
- or not happy with Google search results this month<br />
- I asked about original reason for GFS. Originally, the hardware was really that flaky, and Google even actively bought bulk refurbed computers and RAM, sometimes off the back of a truck. Got a gopher plushie in return.<br />
- also some good feedback complaints: google groups UI inadequate for managing 350 groups in an Education scenario<br />
- inadequate data import tools for non-profit users of groups, mentioned by a religious charity.</p>
<p><a href="http://www.oscon.com/oscon2011/public/schedule/detail/19925">How Not to Design Like a Developer: Open Source Can Look Good Too!</a><br />
Chrissie Brodigan, Mozilla/Firefox</p>
<p>- KPI vs. git (different goals)<br />
- @sirupsen<br />
- story about the <a href="http://glow.mozilla.org">downloads map graphic</a> for FF 4 &#8211; a developer silently removed social button graphics, limiting participation of wider audience. Marketing needs to explain why and how other staff fit into outreach programs.<br />
- hang out on #projectdesign<br />
- design contests are a good way to get them to come out of the woodwork<br />
- designers hang out on twitter, not irc<br />
- programmers should avoid big red buttons that scare users, and improve accessibility<br />
- Inkscape, Blender, HTML and CSS are some Open Source tools for design mockups<br />
- do AB testing or survey users<br />
- designers want to be martyrs, so be careful they don&#8217;t offer more than you are willing to accept (start with 1 icon rather than the whole set)<br />
- take a look at graphics libre for icons<br />
- <a href="http://quitestrong.com">Quitestrong.com</a> 5 girls who do design</p>
<p><strong><a href="http://gearman.org/">Gearman</a> BOF</strong><br />
Brian Aker</p>
<p>- Gearman polls, beanstalk busy waits<br />
- nice to have feature to give up to another thread<br />
- monitor projects handle launching of workers<br />
- Gearman has durable and non-durable queues<br />
- is a superset of the crap you handrolled. Most of the homegrown apps peak at 50% to 60% of Gearman&#8217;s features<br />
- Gearman is production ready, but the postgresql driver less so because of fewer test cases and Brian&#8217;s lesser familiarity<br />
- setup ntp and use Gearman coalescence for redundant cron servers<br />
- can inspect queue<br />
- agnostic to backend<br />
- 99designs.com looking at this, same use case as original developer<br />
- I still think that if you already have a database app, adding a status column gets you a lot of Gearman functionality without one more moving part.</p>
<p><strong><a href="http://mariadb.org/">MariaDB</a> BOF</strong><br />
Monty Widenius, MontyProgram AB</p>
<p>- Monty mentioned that the latest release of <a href="http://kb.askmonty.org/en/what-is-mariadb-53">MariaDB 5.3-beta</a> has faster replication from group commit and performance improvements on the master, which also help the slave. Also subqueries and joins work much better.<br />
- Monty talked about his Aria storage engine, which is a replacement for MyISAM that has both transaction and non-transaction modes. It&#8217;s intended for users who want the space savings of MyISAM. Over time it may compete with InnoDB.<br />
- Monty&#8217;s responsibility is to convince Percona to merge into 1 source base sometime<br />
- it&#8217;s estimated that although Oracle still has the InnoDB team, they may only have 1 general MySQL server programmer left.<br />
- he explained that MontyProgram developers work 50% on feature requests from end-users, and 50% Open Source-related. So paid requests for 1 week of work really need to cover 2 weeks of developer time for that model to work. Typically a medium-sized change is roughly $12,000 and includes development, testing and documentation.<br />
- Zmanda got FLUSH TABLES WITH READ LOCK NO CHECKPOINT for a beer, though. <img src='http://www.jebriggs.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Monty was able to find a code path that could be locked to prevent Aria and MyISAM from writing anything during the backup.<br />
- I sponsored <a href="http://askmonty.org/worklog/Server-RawIdeaBin/?tid=232">WL#232</a> for USD$100 to add a SHUTDOWN statement to MySQL<br />
- Monty explained that MERGE tables may be a better choice than MySQL partitions for logging applications.<br />
- attendees from MontyProgram, SkySQL, Percona, DeNA</p>
<p><a href="http://kb.askmonty.org/en/1631">AskMonty: MySQL &#8220;Wishlist&#8221; Session from an online travel agency</a><br />
<a href="http://download.oracle.com/docs/cd/E17952_01/refman-5.5-en/flush.html">MySQL Manual 5.5: FLUSH Syntax</a></p>
<p><strong>Perl Lightning Talks</strong><br />
Hosted by Geoff Avery</p>
<p>- a talk on why arrogant community members telling others that &#8220;they need a thick skin&#8221; is unhelpful<br />
- a talk by a young Perl community member on getting commit access, and how others can get the spirit and contribute<br />
- Larry did several talks, mostly encouraging backporting Perl6 features to Perl5 it seemed, perhaps as a replacement to going Moose<br />
- nice song on the importance of public libraries, which face shutdown due to economic budgeting problems in Australia and USA<br />
- nice comedy juggling act comparing programming languages. Perl6 was omitted as &#8220;nothing has been updated in 5 or 6 years&#8221;, prompting Larry to say that he was happy he has a thick skin. See above. <img src='http://www.jebriggs.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
- afterward, I talked to a booking.com rep about why a European company needed to actively recruit in USA and world-wide. He said that European developers are happy working where they are now, and it&#8217;s easier to recruit in places with mobile workforces like the USA. He would like to hire a couple developers per week to meet their development schedule.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jebriggs.com/blog/2011/07/oscon-2011-portland/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some ZFS News</title>
		<link>http://www.jebriggs.com/blog/2010/08/some-zfs-news/</link>
		<comments>http://www.jebriggs.com/blog/2010/08/some-zfs-news/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 03:11:19 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[BSD]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Toys]]></category>

		<guid isPermaLink="false">http://www.jebriggs.com/blog/?p=2306</guid>
		<description><![CDATA[Phoronix has a really well-written article on ZFS, including news on a company planning to release a CDDL-licensed linux kernel module. ZFS is the holy grail of filesystems. Many Database Administrators have switched from Linux to Solaris because ZFS has &#8230; <a href="http://www.jebriggs.com/blog/2010/08/some-zfs-news/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Phoronix has <a href="http://www.phoronix.com/scan.php?page=article&#038;item=zfs_linux_coming&#038;num=1">a really well-written article on ZFS</a>, including news on a company planning to release a CDDL-licensed linux kernel module.</p>
<p>ZFS is the holy grail of filesystems. Many Database Administrators have switched from Linux to Solaris because ZFS has much better snapshot support than LLVM, as well as good SSD support.</p>
<p><a href="http://www.phoronix.com/scan.php?page=article&#038;item=zfs_linux_coming&#038;num=1">phoronix.com: Native ZFS Is Coming To Linux Next Month (Aug. 27, 2010)</a><br />
<a href="http://www.phoronix.com/scan.php?page=article&#038;item=btrfs_zfs_ssd&#038;num=1">phoronix.com: Btrfs, EXT4 &#038; ZFS On A Solid-State Drive (Aug. 9, 2010)</a><br />
<a href="http://www.phoronix.com/scan.php?page=article&#038;item=zfs_ext4_btrfs&#038;num=1">phoronix.com: Benchmarking ZFS On FreeBSD vs. EXT4 &#038; Btrfs On Linux (July 27, 2010)</a><br />
<a href="http://www.phoronix.com/scan.php?page=article&#038;item=freebsd_zfs_cam&#038;num=1">phoronix.com: Running ZFS With CAM-based ATA On FreeBSD 8.1 (July 26, 2010)</a><br />
<a href="http://github.com/behlendorf/zfs/wiki">github: Native ZFS for Linux</a><br />
<a href="http://wiki.freebsd.org/ZFS">FreeBSD Wiki: ZFS</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jebriggs.com/blog/2010/08/some-zfs-news/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O&#8217;Reilly Open Source Conference 2010, Portland</title>
		<link>http://www.jebriggs.com/blog/2010/07/oscon-conference-2010-portland/</link>
		<comments>http://www.jebriggs.com/blog/2010/07/oscon-conference-2010-portland/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 23:22:51 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[BSD]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Toys]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[User Groups]]></category>

		<guid isPermaLink="false">http://www.jebriggs.com/blog/?p=2140</guid>
		<description><![CDATA[Once again, the O&#8217;Reilly Open Source Conference (OSCON) was held in Portland, Oregon. It was a good conference, and we had beautiful weather all week long. Executive Summary The themes promoted by the conference organizers were Cloud Computing, NoSQL, Emerging &#8230; <a href="http://www.jebriggs.com/blog/2010/07/oscon-conference-2010-portland/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Once again, <a href="http://www.oscon.com/oscon2010">the O&#8217;Reilly Open Source Conference (OSCON)</a> was held in Portland, Oregon.</p>
<p>It was a good conference, and we had beautiful weather all week long.</p>
<p><strong>Executive Summary</strong></p>
<p>The themes promoted by the conference organizers were Cloud Computing, NoSQL, Emerging Languages (Scala, Erlang, Parrot, Go) and Android phone development.</p>
<p>The <a href="http://twitter.com/oscon">@oscon</a> twitter channel was heavily used to coordinate amongst organizers and attendees. I used the <a href="http://www.twixtreme.com/">TwiXtreme</a> twitter client program on my BlackBerry.</p>
<p>Plug Computers were very popular in the Expo area. They are 5 watt ARM-based computers running Debian Linux that fit into a power brick-sized case and cost $99 to $129 depending on features. The Marvell booth had a few models on display, from GlobalScale <a href="http://www.globalscaletechnologies.com/c-2-globalscale-technologies-products.aspx">(GuruPlug)</a> and <a href="http://www.ionics-ems.com/plugcomputer.html">Ionics.</a> High-end models have dual gigabit NICs, multiple USB ports, a WiFi access point and other expansion ports.</p>
<p>There was also continuing buzz regarding Facebook&#8217;s <a href="http://www.facebook.com/note.php?note_id=388112370932">Flashcache SSD module (GPL v2)</a> for linux, and also ZFS snapshots.</p>
<p><strong>Tutorials</strong></p>
<p>I went to the <a href="http://gearman.org/">Gearman</a> Cookbook tutorial, the first half of the <a href="http://opscode.com/chef/">Chef</a> tutorial and some of the Cloud Summit talks.</p>
<p>The <a href="http://gearman.org/">Gearman</a> Cookbook tutorial was excellent. After a detailed overview of the Gearman architecture and implementations in Perl and C, a number of use cases were explored in detail, including before and after code samples. The talk was both easy to listen to as an overall survey, as well as providing immediately useful info for those wanting to deploy it.</p>
<p>The <a href="http://opscode.com/chef/">Chef</a> tutorial was very detailed &#8211; too much so perhaps. I went to the first half only, since I am not planning to implement Chef soon (I use PXE and anaconda/kickstart with CentOS), and did not need that level of detail at this time. cfengine, puppet and chef are ops tools for configuring servers. Chef uses Ruby data structures for its configuration files, and has include files and other useful syntax. Basically, users can &#8220;code&#8221; server configuration, as if they were traditional apps.</p>
<p>I went to some of the <a href="http://www.oscon.com/oscon2010/public/schedule/detail/15295">Cloud Summit talks</a> and BOFs, but found that anybody who has done a simple project using EC2 knew as much or more than the speakers, some I would call blowhards.</p>
<p>Marten Mickos, president of Eucalyptus, is refreshing in that he is always clear about being in it for the money, while also promoting Open Source.</p>
<p><strong>Sessions</strong></p>
<p>Some of the most memorable sessions to me were:</p>
<p><strong>Introduction to MongoDB, Kristina Chodorow (MongoDB)</strong></p>
<p><a href="http://www.snailinaturtleneck.com/blog/">Kristina</a> is the maintainer of the Perl and PHP drivers for MongoDB. She gave an overview of MongoDB, a NoSQL document store, and its command-line interface, which uses JavaScript. </p>
<p>Some day she will release <a href="http://www.snailinaturtleneck.com/blog/2010/06/30/managing-your-mongo-horde-with-genghis-khan/">a sharding tool</a> for MongoDB.</p>
<p><strong>Scaling SourceForge with MongoDB, Nosh Petigara (10gen), Rick Copeland (SourceForge.net / GeekNet) </strong></p>
<p>Nosh and Rick gave an excellent review of incorporating MongoDB into the SourceForge site.</p>
<p>- SF query load is mostly read-only<br />
- ops team benchmarked a few NoSQL candidates, and MongoDB won on performance<br />
- original MySQL servers had 64 GB RAM. After migration to MongoDB, same server machines but only 8 GB RAM<br />
- backup dumps are verified to be bitwise the same as masters<br />
- have to be careful not to dump all documents in your database to the network or it will max out switches<br />
- SF relies on first-class data centers and replication slaves, less worried about MongoDB mmap (not crash-safe)<br />
- I personally looked at their performance numbers and site graphs (on an iPad), and the end result was impressive.</p>
<p><strong>Perl Lightning Talks</strong></p>
<p>As always, the Perl Lightning Talks are a highpoint of the conference.</p>
<p>The &#8220;cartoon&#8221; of <a href="http://www.math.u-bordeaux1.fr/~pit/">Vincent Pit&#8217;s</a> remarkable CPAN module<a href="http://search.cpan.org/~vpit/">(VPIT)</a> contributions was both informative and hilarious. Vincent is a French Ph.D. candidate in advanced geometry.</p>
<p><strong>Cloud BOF (3 Hours)</strong></p>
<p>The Cloud BOF was disorganized, starting 30 minutes late and for some reason was subdivided into 4 audience groups. Startups and vendors trying to make a cloud sales push led the BOF, including cloud and DNS service providers.</p>
<p>The Health Regulations subgroup came up with a couple ways to make the Cloud palatable to regulators by using encryption on all data due to the multi-tenancy issues with sharing public VMs.</p>
<p>I was in the NoSQL group, which discussed general issues and particular successes. <a href="http://www.memcached.org/">Memcached</a> was the clearest winner, while some people also had success with MongoDB and Redis.</p>
<p>My neighbor was an engineer at <a href="http://www.postrank.com/">Postrank.com</a>. He said that they were happy with HAProxy, but much less happy with the unpredictable IO available when running MySQL on EC2. He also said to carefully look at storage volumes available to your instance, as one is a useful tmpfs. They use <a href="http://www.authsmtp.com/">AuthSMTP</a> to get around EC2 being generally blacklisted for outbound email.</p>
<p><strong>Database BOFs</strong></p>
<p><strong>MySQL BOF</strong></p>
<p>The MySQL AB engineering staff has left Oracle. <a href="http://askmonty.org">Monty Program AB</a> (21 staff) has the core developers, and Percona Inc. (32 staff) has the consultants. Oracle still has some of the InnoDB programmers.</p>
<p>The business plan for Monty Program AB is 60% commercially-sponsored MySQL development, and 40% community-request development. Monty would like commercial users of MySQL to sponsor patches that would benefit them.</p>
<p>Mark mentioned that using Nehalem instructions for CRC were much faster, and that Facebook was using partitions for truncating tables instead of doing multi-record deletes. (See his blog for more details.)</p>
<p>One person mentioned using a commercial backup tool, <a href="http://www.r1soft.com/">R1Soft</a>, that inserts a linux kernel module to allow filesystem snapshots. He said to carefully test backup and restore in your environment, especially for filesystems greater than 1 TB which may exceed certain block counter limits. Peter said that some of his clients had used it with varying success.</p>
<p>It worked for him in his environment, and the file browser allows selective file restore (he uses it to restore by priority where a system runs multiple applications.) It starts at $299 for the Standard Edition, and also has MySQL Add-on and Enterprise Editions. </p>
<p><strong>PostgreSQL BOF</strong></p>
<p>The PostgreSQL BOF talked about 30 or so changes that went into version 9.</p>
<p>One of the most exciting new features is a native replication feature, called streaming replication (block-based.) The advantage over <a href="http://www.slony.info/">Slony-I</a> replication is that Slony-I is trigger-based, so has a variety of issues included inability to replicate DDL commands.</p>
<p>Some of the developers mimed replication events, which was rather amusing to watch. Yes, it was taped.</p>
<p>PostgreSQL is released under the <a href="http://www.opensource.org/licenses/postgresql">PostgreSQL Licence</a>, which is BSDish.</p>
<p>Peter Zaitsev, co-founder of <a href="http://www.percona.com/">Percona</a>, organized 3 BOFs, including XtraDB, XtraBackup, Maatkit, Percona Server, <a href="http://www.sphinxsearch.com/">Sphinx Search</a> and Running Databases on Flash Storage.</p>
<p><strong>Sphinx Search BOF</strong></p>
<p>Andrew Aksyonoff, the original programmer of Sphinx Search (GPL v2), couldn&#8217;t make it to OSCON (the good excuse was that he was busy coding), so Richard Kelm (Sphinx sales/customer support honcho) and Peter filled in (Percona is a business partner with Sphinx, and many of Percona&#8217;s clients use it.)</p>
<p>Some of the attendees were existing users, like myself, and some from HP and other companies were looking for a large-scale search solution or alternative to Lucene.</p>
<p>Monty mentioned that the latest MySQL 5.1 should be used, as there have been a number of performance and reliability improvements. Full-text search is supposed to be 10x faster than 5.0, and replication is nearly bug-free by now.</p>
<p>Sphinx Search now has <a href="http://www.sphinxsearch.com/docs/current.html#rt-indexes">real-time index updates</a> in version 1.1.0 beta. Another very nice feature is SQL+FS indexing.</p>
<p>Here is the full Sphinx 1.1.0 <a href="http://www.sphinxsearch.com/docs/current.html#rel110">changelog.</a></p>
<p><strong>Running Databases on Flash Storage BOF</strong></p>
<p>The Running Databases on Flash Storage BOF had a combination of MySQL and Postgres users who have tested or used most of the SSD products: FusionIO, violin, Intel, OCZ, etc. Everybody was happy with SSD IOPS performance, but less so with cost and metadata RAM requirements with the add-in boards (FusionIO may require 4 GB RAM for metadata.)</p>
<p>Peter said that 20% to 30% of his clients are already using SSD &#8211; across the spectrum of vendors and models. Some are also trying &#8220;massive RAM&#8221; solutions, like Cisco servers with 384 GB RAM.</p>
<p>Some users had 1+ TB Postgres databases with very thorny backup and mgmt. issues. One solution was to start a snapshot, but not do the copy operation.</p>
<p><strong>Expo Notes</strong></p>
<p>I had an enjoyable talk with Austin Hook, who has operated the OpenBSD Store for many years. He lives near Calgary, the center of OpenBSD/OpenSSH/PF development. He mentioned that some perennial financial contributors had stopped because of the recession, so here&#8217;s <a href="http://www.openbsd.org/donations.html">the donations link.</a></p>
<p>I also talked to some reps from a Brazilian outsourcing firm, <a href="http://www.actminds.com/">ActMinds.</a> They currently have 400 employees across Brazil and a sales office in Philadelphia. Brazil is only 2 hours ahead of EST. They said the minimum project size is 2 developers and developer turnover a low 5%/annum. Their pricing is $35 to $45/hour.</p>
<p>And I had fun handling the plug computers on display at the Marvell booth. The Ionics boards are amazingly densely populated.</p>
<p><strong>Discussions</strong></p>
<p>I had the opportunity to talk to a long-time Portland resident who works as a computer consultant. He said that the Portland economy is not doing great, and really hasn&#8217;t done well since old-growth logging was stopped after 90% of the forests were cleared. And although hundreds of miles of fiber optic has been laid downtown, it&#8217;s not available for residential use. However, the Beaverton area does have ubiquitous FTTH.</p>
<p>I also talked to somebody who attended the Emerging Languages talks. He&#8217;s working on his M.Sc. in Computer Science, so found those talks fascinating.</p>
<p><strong>Twitter Humor</strong></p>
<p>There were some humorous tweets:</p>
<p>- &#8220;my MongoDB and CouchDB mugs are fighting each other.&#8221;<br />
- &#8220;I got one MongoDB mug, but need two to safely store coffee.&#8221;</p>
<p><strong>Notes</strong></p>
<p>Note to self: skip the nightly parties unless you have a date. The bars are too loud to talk to anybody.</p>
<p>Note to the O&#8217;Reilly conference organizers: use meetup.com for the BOFs like ApacheCon does. The average audience was about 10 people, and with meetup it would  be 4x that.</p>
<p><a href="http://www.oscon.com/oscon2010/public/schedule/proceedings">OSCON 2010 Slides</a><br />
<a href="http://www.tbray.org/ongoing/When/201x/2010/07/21/DPH">Tim Bray: Desperate Perl Hacker</a><br />
<a href="http://www.youtube.com/results?search_query=oscon+2010&#038;aq=f">Youtube: OSCON 2010 videos</a><br />
<a href="http://blip.tv/?search=oscon2010;s=search">blip.tv: OSCON2010 videos</a><br />
<a href="http://en.wikipedia.org/wiki/Plug_computer">wikipedia: Plug Computer</a><br />
<a href="http://blog.zawodny.com/2010/05/22/mongodb-early-impressions/#comments">Jeremy Zawodny: MongoDB Early Impressions</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jebriggs.com/blog/2010/07/oscon-conference-2010-portland/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON 2009 &#8211; San Jose</title>
		<link>http://www.jebriggs.com/blog/2009/07/oscon-2009-san-jose/</link>
		<comments>http://www.jebriggs.com/blog/2009/07/oscon-2009-san-jose/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 06:08:24 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Psychology]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Toys]]></category>
		<category><![CDATA[User Groups]]></category>

		<guid isPermaLink="false">http://www.jebriggs.com/blog/?p=927</guid>
		<description><![CDATA[For the first time in a decade, the O&#8217;Reilly Perl and Open Source Conference (OSCON) was held San Jose again for 2009. (I have heard that the City of San Jose Business Development office is very, very accommodating towards conferences &#8230; <a href="http://www.jebriggs.com/blog/2009/07/oscon-2009-san-jose/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>For the first time in a decade, <a href="http://en.oreilly.com/oscon2009">the O&#8217;Reilly Perl and Open Source Conference (OSCON)</a> was held San Jose again for 2009.</p>
<p>(I have heard that the City of San Jose Business Development office is very, very accommodating towards conferences these days.)</p>
<p>There was great attendance, and plenty to see with about <a href="http://en.oreilly.com/oscon2009/public/schedule/grid/2009-07-22">15 simultaneous tracks</a>, lots of BoFs, and an active exhibits area.</p>
<p>One of the changes this year was more OS talks, including some for linux and FreeBSD. This is a welcome change, though many kernel hackers won&#8217;t travel to the USA, for various legal issues.</p>
<p>My favorites were:</p>
<ul>
<li>talk &#8211; <a href="http://www.yaml.org/">YAML</a> by Ingy. YAML is a serialization standard for all programming languages and <a href="http://blog.ingy.net/2007/05/yaml-and-json.html">is a superset of JSON</a>, in that YAML supports types and references. The Perl module is <a href="http://search.cpan.org/~ingy/YAML-0.68/lib/YAML.pm">YAML.pm.</a> Although it is a &#8220;serialization standard&#8221;, best results are obtained when both sides of the exchange are controlled by the programmer (ie. different word sizes or floating point standards will likely cause issues.)
<li>Perl lightning talk &#8211; <a href="http://obsidianrook.com/devnotes/talks/esthetic_randomness/">Esthetic Randomness</a> by Joseph Brenner. Joseph likes to post-process random output before display to get a more desirable appearance. He&#8217;s kind of goth-looking, so the overall subject and delivery made it an interesting 5 minutes.
<li>BoF &#8211; MySQL social with Monty, Percona (now 25 employees!) and Mark C.
<li>exhibit &#8211; <a href="http://www.haiku-os.org/">Haiku OS</a> (the Open Source BeOS clone) demo. 2 developers, now at Google, reimplemented BFS from the textbook. Haiku can run with 64 MB RAM. Posix compatible, so the gcc toolchain works. The ARM port is a GSoC project. The video support comes from from ffmpeg, xiph, etc.
</ul>
<p>Regarding the MySQL BoFs, I think they can be summarized like this: the community is not going to wait for MySQL AB/Sun/Oracle to dick around any further.</p>
<p><a href="http://askmonty.org/">Monty Program AB</a>, <a href="http://www.percona.com/">Percona</a> and <a href="http://www.drizzle.org/">Drizzle</a> are going to have forks regardless of what Oracle does. Either the official MySQL documentation will be freed, or rewritten by Monty Program AB and Drizzle.</p>
<p>Typo3 CMS also had a community booth. They are the #1 European CMS with support for 38 languages.</p>
<p>I didn&#8217;t see much use for the &#8220;OSCamp&#8221; attendee-organized tracks personally. Whereas at the MySQL Conference the Percona Performance Conference was necessary to fix the broken speaker selection process that was weighed towards MySQL/Sun staff instead of productive community contributors, that wasn&#8217;t an issue this time around.</p>
<p>The talk on Perl and Unicode was pedantic (focusing on UTF-8 bit patterns, presumably for those needing to detect and fix corruption) but comprehensive, as <a href="http://en.wikipedia.org/wiki/Tom_Christiansen">Tom Christiansen</a> was in attendance to provide up-to-the-minute comments and tips. <a href="http://search.cpan.org/~nwclark/perl-5.8.9/pod/perluniintro.pod">perluniintro</a> is very helpful.</p>
<p>The PHP Best Practices talk was informative, as the 2 presenters have worked as PHP programming consultants and seen how projects go wrong. They tend to use whatever PHP framework the client is using, and have nothing glowing to say about any particular one.</p>
<p>I&#8217;d say that the world of PHP frameworks (dozens) is even more fragmented than Perl (Catalyst, Mason, embperl, CGI::Application are the major ones), which is indeed astonishing. And ironic &#8211; since PHP is itself a templating language.</p>
<p><a href="http://www.stonehenge.com/">Stonehenge Consulting</a> threw another of their famous drunkfests at a local bar for those wearing their neon yellow t-shirts. If you want to get hammered for free, this is always the spot. <img src='http://www.jebriggs.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I talked to Randy Ray a little about what can be done with svlug.pm considering that the South Bay is suburban and thus less centralized than a dense city. Stay tuned.</p>
<p>Other Perl lightning talks included:</p>
<ul>
<li>Larry Wall&#8217;s son talking about black holes
<li>Scott Smith talking about Getopt::Complete, which can do svn command-line style nested args
<li>connie willis bellwether talked about Flocks and the hive mind as defined by 3 rules.
<li>Don&#8217;t Blame Perl &#8211; It’s the programmer’s problem if they don’t use modules, scoping, comments, brevity, objects.
<li>Cool Perl6 &#8211; hyperoperators (work on arrays) with a card game sample using extended-ASCII symbols.
<li>svn is not totally useless &#8211; it pointed the world towards git.
</ul>
<p>The closing talk on linux economics seemed to be an eye-opener for the audience. Most cell carriers and OEMs are at a severe disadvantage to Apple in the apps market, so they may need linux (or Haiku) to mount any kind of response that makes financial sense.</p>
<p>In the conference wrap-up segment, Allison Randal and an O&#8217;Reilly rep fielded questions from the audience and answered in &#8220;Twitter mode&#8221; &#8211; single sentences less than 140 characters in length.</p>
<p><a href="http://en.oreilly.com/oscon2009/public/schedule/proceedings">OSCON 2009 Speaker Presentation Files</a><br />
<a href="http://www.youtube.com/results?search_query=oscon+2009">youtube.com: oscon 2009 video clips</a><br />
<a href="http://en.wikipedia.org/wiki/Monty_Program_Ab">wikipedia: Monty Program AB</a><br />
<a href="http://mtocker.livejournal.com/50931.html">mtocker: Understanding the MySQL forks</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jebriggs.com/blog/2009/07/oscon-2009-san-jose/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVLUG: The Parrot Virtual Machine, Allison Randal</title>
		<link>http://www.jebriggs.com/blog/2009/06/svlug-the-parrot-virtual-machine-allison-randal/</link>
		<comments>http://www.jebriggs.com/blog/2009/06/svlug-the-parrot-virtual-machine-allison-randal/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 06:32:59 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[User Groups]]></category>

		<guid isPermaLink="false">http://www.jebriggs.com/blog/?p=867</guid>
		<description><![CDATA[Allison Randal gave an overview of the Parrot Virtual Machine, plus delved into the syntactic details of the PIR assembly language for the virtual machine. (around 1200 opcodes.) Parrot is a virtual machine aimed at running all dynamic languages. She&#8217;s &#8230; <a href="http://www.jebriggs.com/blog/2009/06/svlug-the-parrot-virtual-machine-allison-randal/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Allison Randal gave an overview of the <a href="http://www.parrot.org/">Parrot Virtual Machine</a>, plus delved into the syntactic details of the PIR assembly language for the virtual machine. (around 1200 opcodes.)</p>
<p>Parrot is a virtual machine aimed at running all dynamic languages.</p>
<p>She&#8217;s the chief architect for the Parrot project, and is also the author of the Python port to Parrot, Pynie. Apparently the Python maintainers are happy to have help with language backend support.</p>
<p>Allison said that perhaps <a href="http://www.parrot.org/languages">50 dynamic languages</a> are in some process of being ported to Parrot. Often they run up to 10x faster on Parrot than the original implementation.</p>
<p>One member said he knew of a commercial project that used Parrot as the language VM when the underlying chip or OS became obsolete and they needed to port to a more modern system.</p>
<p>PIR source is actually run through flex and yacc.</p>
<p>This was her third talk on Parrot in the Bay Area recently. They&#8217;re organized around her business meetings for the <a href="http://en.oreilly.com/oscon2009">O&#8217;Reilly Open Source Convention</a>, to be held in July in San Jose.</p>
<p>Besides working for O&#8217;Reilly Media, she is also working on her Ph.D. computer science at Bristol University in the UK.</p>
<p>Thanks again to Symantec for hosting SVLUG meetings.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jebriggs.com/blog/2009/06/svlug-the-parrot-virtual-machine-allison-randal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008, Portland</title>
		<link>http://www.jebriggs.com/blog/2008/07/oscon-2008-portland/</link>
		<comments>http://www.jebriggs.com/blog/2008/07/oscon-2008-portland/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 21:09:26 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Toys]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://www.jebriggs.com/blog/?p=422</guid>
		<description><![CDATA[I attended the O&#8217;Reilly Open Source Conference, once again in Portland, Oregon. Overall my impression was that the talks and vibe were oriented towards Web 2.0 primarily. I would say that the talks were not as strong as previous years, &#8230; <a href="http://www.jebriggs.com/blog/2008/07/oscon-2008-portland/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I attended the <a href="http://en.oreilly.com/oscon2008/public/content/home">O&#8217;Reilly Open Source Conference</a>, once again in Portland, Oregon.</p>
<p>Overall my impression was that the talks and vibe were oriented towards Web 2.0 primarily.</p>
<p>I would say that the talks were not as strong as previous years, but it&#8217;s easy to compensate for that with the &#8220;hallway track&#8221; and access to the original Open Source authors.</p>
<p>Several attendees used the EEE sub-notebook computer, and were happy with it as a email/browser tool.</p>
<p><strong>Wednesday</strong></p>
<p><strong>PHP Taint Tool: It Ain&#8217;t a Parser</strong></p>
<p>- CS&#8217;y effort at PHP parser for code analysis, reminds me of early days of Perl&#8217;s B tools<br />
- not suitable for end-users</p>
<p><strong>Write Beautiful Code (in PHP), Laura Thomson, Mozilla</strong></p>
<p>- good general background on good programming practises<br />
- not a lot of specifics about PHP, but available for questions</p>
<p><strong>Hypertable, Doug Judd, Zevents</strong></p>
<p>- HyperTable is a clone of Google&#8217;s BigTable, from public paper<br />
- room was packed, some turned away<br />
- still alpha, maybe beta in August<br />
- preferred distributed filesystem is HDFS, works with others<br />
- I recommend reading web site and then looking at the curt slides<br />
- plans to do benchmarks with same hardware as Google has published.</p>
<p><strong>Open Source Virtualization for People Who Feel Guilty About Using VMware So Much, andy michelle, EDA</strong></p>
<p>- cute talk about VirtualBox, Xen and VMware<br />
- Xen has weird nomenclature compared to other tools<br />
- VMware wins on tools and polish<br />
- showed screenshots of unreleased and alpha mgmt. tools.</p>
<p><strong>Barely Legal XXX Perl, Jos Boumans, RIPE</strong></p>
<p>- stunning and twisted example of overloading, short-circuiting, import-faking, whatever it takes to make a loaded module do something other than intended<br />
- illustrates great flexibility of perl, for good or ill<br />
- could be useful for things like testing harnesses, etc.<br />
- motivated to win bet of $100 or 1 vertical meter of beer<br />
- said it took 3 or 4 hours to complete.</p>
<p>I walked around the exhibits area.</p>
<p>Got a demo of <a href="http://www.atlassian.com/">Atlassian&#8217;s</a> continuous integration (CI) tool, <a href="http://www.atlassian.com/software/bamboo/">Bamboo</a>. They&#8217;re also the vendors of JIRA issue tracker and Confluence wiki, which I&#8217;ve used before.</p>
<p>One company had a public Wii game happening.</p>
<p><strong>Thursday</strong></p>
<p><strong>Scaling Databases with DBIx::Router, Perrin Harkins</strong></p>
<p><strong>Ultimate Perl Code Profiling, Tim Bunce (Shopzilla)</strong></p>
<p>- talk and screenshots about NYT perl profiler</p>
<p><a href="http://open.blogs.nytimes.com/2008/03/05/the-new-york-times-perl-profiler/"><br />
The New York Times Perl Profiler</a></p>
<p><strong>Top 10 Scalability Mistakes, John Coggeshall (Automotive Computer Services)</strong></p>
<p>- good overview of writing high-performance, maintainable Internet systems<br />
- interesting opinion that scalability is not just about increasing performance. scalability can be about scaling up or down, performance or maintainability, etc.<br />
- recommended php.ini settings list</p>
<p><strong>Perl Lightning Talks</strong></p>
<p>- popular with audience, attendees seemed to like all the talks<br />
- Mail::ESMTP looks very interesting for testing and production</p>
<p><strong>Code is Easy, People are Hard: Developing Meebo’s Interview Process, Elaine Wherry (meebo)</strong></p>
<p>- struggled to find time, right approach to interview new candidates in 1996, likely at behest of VCs<br />
- external recruiters hit-and-miss, conferences and jobs email link useless<br />
- phase where non-founder employees doing interviews wanted a founder involved in interview process<br />
- trying to preserve culture (finger rockets, social networking, 2 female founders, etc.)<br />
- came up with process involving reading resumes, phone screens, and office &#8220;sim&#8221; that adds a new candidate within 3-6 weeks<br />
- &#8220;sim&#8221; has 3 versions: office manager (plan to erect a meebo office sign), front-end engineer (write a JavaScript app), and back-end engineer (write a server) in 4 hours<br />
- current goal is to keep interview time down to 8 hours per candidate over 10 days<br />
- now up to about 40 employees<br />
- my feeling was that their hiring process started off clueless due to inexperienced mgmt. and is still oriented towards junior engineers. Silicon Valley is full of expert engineers and it doesn&#8217;t take 8 hours to interview them.</p>
<p><strong>BOF</strong></p>
<p><strong>mysql-sandbox</strong></p>
<p>Giuseppe Maxia discussed and demoed his very useful <a href="http://sourceforge.net/projects/mysql-sandbox/">mysql-sandbox</a> utility for managing several versions and instances of MySQL on the same machine.</p>
<p>He wrote it for his testing work at MySQL AB. Very well received by attendees. This is a great example of what I call &#8220;anti-virtualization&#8221; &#8211; using ports instead of resource-intensive VMs.</p>
<p><a href="http://en.oreilly.com/mysql2008/public/schedule/detail/311">MySQL Conference 2008 Presentation</a></p>
<p><strong>State of the Onion Address, Larry Wall</strong></p>
<p>- talk about Perl6, random anecdotes, etc.</p>
<p><strong>Friday</strong></p>
<p><strong>Open Voices, Jim Zemlin (The Linux Foundation), Keith Bergelt (Open Invention Network), Karen Sandler (Software Freedom Law Center), Phil Robb (Hewlett Packard)</strong></p>
<p>- panel discussion of various free software efforts, some little-known</p>
<p><strong>An Illustrated History of Failure, Paul Fenwick (Perl Training Australia)</strong></p>
<p>Paul gave an interesting talk on notable Software Failures and estimated a price tag for each. I had heard news reports of many of them, but it was interesting to hear an updated analysis of what really happened behind the scenes.</p>
<p>Thanks to Google for sponsoring the fairly good almost-gourmet lunches. Sure beats the O&#8217;Reilly lunchbags from the dot bomb days. (Everybody I know bailed and found a subway shop back then.)</p>
<p><strong>Notes</strong></p>
<p>- Burgerville popular with attendees, can upgrade combos to a shake.<br />
- Red Lion hotel has a small cardio gym with 1 universal machine, no free weights, open til 11 pm<br />
- WiFi password changed weekly, in middle of remodel, lobby just finished.<br />
- There is a 24-Hour Fitness that is actually open 24 hours near downtown Portland. Has basketball court and 2-lane pool. $15 for non-member visitors.</p>
<p><a href="http://en.oreilly.com/oscon2008/public/schedule/proceedings">OSCON 2008 Presentations</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jebriggs.com/blog/2008/07/oscon-2008-portland/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON July, 2007 &#8211; Portland</title>
		<link>http://www.jebriggs.com/blog/2007/07/oscon-july-2007-portland/</link>
		<comments>http://www.jebriggs.com/blog/2007/07/oscon-july-2007-portland/#comments</comments>
		<pubDate>Sat, 28 Jul 2007 06:18:14 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[BSD]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Flying]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Toys]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://www.jebriggs.com/blog/?p=371</guid>
		<description><![CDATA[I attended the O&#8217;Reilly Open Source convention again, making it 10 years in a row. Once again it was held at the Convention Center near downtown Portland, a convenient light rail ride from the airport. Like many experienced developers, I &#8230; <a href="http://www.jebriggs.com/blog/2007/07/oscon-july-2007-portland/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I attended the O&#8217;Reilly Open Source convention again, making it 10 years in a row. Once again it was held at the Convention Center near downtown Portland, a convenient light rail ride from the airport.</p>
<p>Like many experienced developers, I spent a lot of time in the &#8220;hallway track&#8221; talking to other developers and users, as well as in one of the 15 simultaneous talks.</p>
<p>The general consensus was that the talks were not as strong as in previous years (not even compared to the MySQL conference this year), but it&#8217;s worthwhile to me if I can get even one juicy nugget from each talk, or gain an understanding of a developing trend in programming or system administration.</p>
<p>Many of the presenters griped about there not being enough time to look at source code in a 40 minute talk.</p>
<p>For those who want a conference summary in a nutshell:</p>
<ul>
<li>OpenID is popular</li>
<li>lucene and its REST interface have more mindshare than projects like Kinosearch, language-specific bindings, etc.</li>
<li>Yahoo! released the yslow browser plug-in for front-end performance evaluation</li>
<li>Perl: no ORM appears to be gaining the upper hand, though DBIx is respected. Tim Bunce would like to see a wrapper around JDBC for each scripting language. Alison Randal is updating the Perl license.</li>
<li>PHP: no good way to do vector reporting graphics, especially since IE doesn&#8217;t support SVG and Adobe is killing the Macromedia plug-in in December. PHP4 is being EOL&#8217;ed 8/8/8 so that the PHP developers can focus on 5 and 6 only.</li>
</ul>
<p>Google was heavily recruiting at the conference. I ran into 3 recruiters, and there were even more in the Google booth.</p>
<p>Pretty good food for lunch, usually chicken or fish in some kind of red sauce with steamed veggies. Better than the wilted sandwich boxes from previous years that mainly got tossed out.</p>
<p><strong>Tuesday nite</strong></p>
<p>I arrived at the Convention Center in time for the evening Google Open Source awards. Happened to sit next to Zak and the 20 year-old <a href="http://openid.net/">OpenID</a> guy, David Recordon, who won $5,000 and a colored, transparent, angular plastic trophy and base that we had fun stabbing each other with.</p>
<p>The OpenID Foundation is offering a $5,000 <a href="http://iwantmyopenid.org/bounty">bounty</a> to the first 10 OSI-approved projects that add OpenID support. Many programmers were busy adding it, including SocialText and others. (David works at Verisign.)</p>
<p>I walked over to the <a href="http://www.dougfirlounge.com/">Doug Fir Lounge</a> with a few guys, 2 of them Austrian. I had the halibut fish and chips and lemonade for $20 including tip. It was ok. They have a log cabin motif happening with a restaurant, patio and bar upstairs, and dance club downstairs, so ID is required to enter. Open from 7 am to 2:30 am every day, 1 503 231 WOOD.</p>
<p><strong>Wednesday</strong></p>
<p>Nagios</p>
<p>- general overview of features<br />
- Event Broker most powerful, least used</p>
<p>Bigger and Faster<br />
Rasmus Lerdorf</p>
<p>Rasmus did his usual &#8220;PHP is as secure as any other language&#8221;, and &#8220;pick on a PHP app and make it go faster&#8221; talk.</p>
<p>He said he&#8217;s still not a Y! Paranoid, but his work does often touch on PHP and web security.</p>
<p>He used to use httpload, but now prefers siege for load testing because it has support for cookies.</p>
<p>http://developer.yahoo.com/yslow/</p>
<p>Live HTTP Headers<br />
APC</p>
<p>sla.ckers.org/forum/list.php?3<br />
php.net/filter<br />
xdebug.org/docs/profiler<br />
talks.php.net/show/oscon07</p>
<p>xdebug<br />
jeremiah san diego xss console author<br />
scanmus.corp.yahoo.com</p>
<p>PHP and Ruby Envy<br />
- NZ programmer on Silverlight CMS (BSD licensed)<br />
- own object system in PHP5<br />
- Ruby less available on web servers, less mindshare<br />
- rolled his own PHP OO frameword apparently</p>
<p>Exhibits</p>
<p>- talked to Mark Finkle of mozilla.org<br />
- said hi to Larry. He had the whole family there.</p>
<p>Trac<br />
Vivek Khera</p>
<p>- he uses <a href="http://bestpractical.com/rt/">RT</a> for public tickets, <a href="http://trac.edgewall.org/">Trac</a> internally<br />
- doesn&#8217;t require much resources since only a few developers<br />
- Trac is used on many Ruby/PHP projects<br />
- gives you wiki/tickets/etc.<br />
- modified BSD license</p>
<p>Afterwards mentioned:</p>
<p>- uses Trac in a BSD jail<br />
- an alternative to Trac would be <a href="http://www.basecamphq.com/">basecamp</a> (or I guess Sourceforge software). See slashdot.org threads for more ideas.<br />
- likes <a href="http://www.pfsense.com/">pfSense</a> firewall as an appliance<br />
- nagios alerts too much, and no good rule builder for multiple hosts<br />
- own web framework called Rowdy (RWDE)<br />
- software as complicated to install as RT should be treated as an appliance<br />
- he submitted 6 related talks on software development environment, only 1 accepted.</p>
<p>Steve Souders<br />
Chief Performance Yahoo!<br />
souders@yahoo-inc.com<br />
Exceptional Performance Group</p>
<p><a href="http://developer.yahoo.com/performance">http://developer.yahoo.com/performance</a></p>
<p>- IBM Page Detailer Pro<br />
- <a href="http://developer.yahoo.com/yslow/">yslow</a> (crawls the DOM, not a packet sniffer)<br />
- <a href="http://www.getfirebug.com/">firebug</a><br />
- <a href="http://jslint.com/">jslint</a> &#8211; The JavaScript Verifier</p>
<p>80-90% of end user response time is spent on the front-end. so optimize there.</p>
<p>14 Rules for a Better User Experience</p>
<p>1. make fewer HTTP requests<br />
2. use a CDN<br />
3. add an Expires header<br />
4. gzip components &#8211; even JS and CSS<br />
5. CSS at top<br />
6. JavaScripts to bottom<br />
7. avoid CSS expressions<br />
8. make JS and CSS external<br />
9. reduce DNS lookups<br />
10. minify Javascript<br />
11. avoid redirects<br />
12. remove duplicate scripts<br />
13. configure Etags &#8211; disable in most cases if load-balanced or multiple web servers<br />
14. make AJAX cacheable</p>
<p>move JS to onload<br />
remove bottom tabs<br />
avoid redirects<br />
images sprites<br />
expires</p>
<p><strong>Thursday</strong></p>
<p>PHP Graphics<br />
Luke Welling, OmniTI</p>
<p>Luke presented an overview of raster and vector graphics modules for PHP.</p>
<p>He prefers vector graphics, but there&#8217;s not many free options for doing that.</p>
<p>He feels that Yahoo! Finance and Google analytics sites are state of the art in presentation graphics with anti-aliasing, interactivity, esthetics, text and maps. I&#8217;d say that&#8217;s aiming a little low, but it&#8217;s a start I guess.</p>
<ul>
<li>JpGraph (GD-based, QPL/Commercial E85.+)</li>
<li>raw Adobe PDF</li>
<li><a href="http://dojotoolkit.org/">Dojo charting (BSD/Academic)</a></li>
<li><a href="http://www.fusioncharts.com/">FusionCharts (Commercial $499+)</a></li>
<li>DIY Flash</li>
<li>Flex</li>
<li>Ming Flash</li>
<li><a href="http://ez.no/">ez graph (GD and swf-based,</a></li>
<li>another is <a href="http://www.ankord.com/zxchart.html">zxChart (swf-based, shareware E15.)</a></li>
<li>another is <a href="http://teethgrinder.co.uk/open-flash-chart/">Open Flash Chart (swf-based, GPL)</a></li>
</ul>
<p>Perl Lightning Talks</p>
<ul>
<li>Vani Raja did a talk on Yahoo! JS</li>
<li>Ask did his talk on qsmtpd again</li>
<li>talk on Test::More 3?</li>
<li>talk on task lists for hit and run volunteers</li>
<li>Schwern did one talk on making tea for 5 minutes, and one on &#8220;Blame Schwern&#8221; &#8211; just do it instead of waiting for permission</li>
<li>Tim Potter did a talk on a messaging standards effort for his employer, saying that the ANSI process was too slow and looking for an alternative</li>
<li>Andy Lester did a talk on ack</li>
<li>a talk on SVN::Notify</li>
<li>http://angerwhale.org/</li>
<li>Tim Bunce talked about DBD::Gofer Proxy and next-gen cross-scripting language DB API based on JDBC API</li>
<li>guitar song about #perl</li>
</ul>
<p><a href="http://youtube.com/user/schtonk">YouTube: Perl Lightning Talks on Handycam by Schtonk</a></p>
<p>Perl Auction</p>
<p>Larry&#8217;s talk on comparative languages and Perl6. Sounds like we&#8217;ll be able to do something like foreach (1..infinity).</p>
<p>Full Text Search BOF<br />
Peter Zaitsev<br />
   &#8211; based in London, England but often in SV<br />
   &#8211; uses Sphinx on several servers<br />
   &#8211; http://boardreader.com/ one TB of searchable data<br />
   &#8211; geneology is big on full-text search</p>
<p>- after insert, mysql full text gets slow, run optimize.<br />
  also, doing it at insert time causes index update per keyword<br />
- gin or gyst for Postgresql 8.4?<br />
- Michael Kimsal, SOLR<br />
- hard disk space is free (enough for whatever indexing is required)<br />
- mostly news search involves last 5 minutes of feed<br />
- MessageOne stores email for lawyers to mine. They like to search, archive and expire. Mostly Exchange lusers, rarely Unix admins.<br />
- Lucene and REST interface<br />
- Monty says MySQL AB hired a programmer to work on search, but he&#8217;s working on another project now. They need somebody with a burning desire to make progress in an area like that, but they recognize the importance of search.<br />
- Monty poured out free Finnish chocolate rum from a Pepsi bottle that was so powerful it scared most people. He said it was banned for 2 years in Finland because it was so addictive.</p>
<p>Sun BOF</p>
<p>- audience talked to senior Sun staff about Java and Solaris a little.<br />
- free beer, cheese and crackers.</p>
<p><strong>Friday</strong></p>
<p>A bunch of Postgres people went to the Portland wine tasting on the river event in the afternoon.</p>
<p><strong>Call for Software Whiteboard</strong></p>
<p><a href="http://jebriggs.com/php/wb_oscon07.jpg" alt="OSCON07 Call for Software Whiteboard" />OSCON07 Call for Software Whiteboard</a><br />
<a href="http://flickr.com/photos/kubina/sets/72157601137155970/">flickr.com: Jeff Kubina&#8217;s OSCON 2007 Whiteboard set of tiles</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jebriggs.com/blog/2007/07/oscon-july-2007-portland/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3 Rules for Writing High-Performance Code</title>
		<link>http://www.jebriggs.com/blog/2006/10/performance-optimization-principles/</link>
		<comments>http://www.jebriggs.com/blog/2006/10/performance-optimization-principles/#comments</comments>
		<pubDate>Tue, 31 Oct 2006 04:29:18 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://www.jebriggs.com/php/wordpress/?p=210</guid>
		<description><![CDATA[Several years ago I attended a talk by Chip Salzenberg, a former Perl Pumpkin (lead maintainer), at OSCON. One of his slides had these three rules for writing high-performance code: Don&#8217;t do it. Do it later. Let somebody else do &#8230; <a href="http://www.jebriggs.com/blog/2006/10/performance-optimization-principles/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Several years ago I attended a talk by <a href="http://en.wikipedia.org/wiki/Chip_Salzenberg">Chip Salzenberg</a>, a former Perl Pumpkin (lead maintainer), at OSCON.</p>
<p>One of his slides had these three rules for writing high-performance code:</p>
<ol>
<li>Don&#8217;t do it.</li>
<li>Do it later.</li>
<li>Let somebody else do it.</li>
</ol>
<p>Simple rules, but they get powerful results.</p>
<p>I especially like &#8220;Don&#8217;t do it.&#8221;</p>
<ul>
<li>Don&#8217;t walk that array &#8211; use a hash data structure. (Perl and JavaScript have hash built-in, C has it in Boost.)</li>
<li>Don&#8217;t do locking if serialization is not needed.</li>
<li>Don&#8217;t add more columns or surrogate keys to your database if not needed.</li>
<li>Don&#8217;t do that join.</li>
</ul>
<p>CPUs have gotten faster over the years (disks haven&#8217;t), but server code still needs to be tight so that you can provide a better user experience (under 300 ms page creation time) with fewer boxes (save money, space, manpower and energy.)</p>
<p>Smile and &#8220;Just say No.&#8221; on your project.</p>
<p>Your users and DBA will thank you later.</p>
<p><a href="http://www.netropolis.org/hash/perl/virtue.html">Virtues of a Perl Programmer: Laziness, Impatience, Hubris</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jebriggs.com/blog/2006/10/performance-optimization-principles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL 4.x to Oracle 10g Migration Notes</title>
		<link>http://www.jebriggs.com/blog/2006/08/mysql-4x-to-oracle-10g-migration-notes/</link>
		<comments>http://www.jebriggs.com/blog/2006/08/mysql-4x-to-oracle-10g-migration-notes/#comments</comments>
		<pubDate>Thu, 17 Aug 2006 03:55:28 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://www.jebriggs.com/php/wordpress/?p=161</guid>
		<description><![CDATA[About once a year I need to migrate a medium-sized web application using MySQL to Oracle. Usually it&#8217;s to prepare a successful intranet application for a move to a formally supported production environment &#8211; and in Silicon Valley, that usually &#8230; <a href="http://www.jebriggs.com/blog/2006/08/mysql-4x-to-oracle-10g-migration-notes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>About once a year I need to migrate a medium-sized web application using MySQL to Oracle.</p>
<p>Usually it&#8217;s to prepare a successful intranet application for a move to a formally supported production environment &#8211; and in Silicon Valley, that usually means Oracle.</p>
<p>I was apologizing to Monty at OSCON this year about my latest migration project away from MySQL.</p>
<p>His surprising response was, &#8220;It&#8217;s not a bad thing. I don&#8217;t mind hearing about conversions because successful migrations demonstrate that people don&#8217;t have to worry about database lock-in.&#8221;</p>
<p>Here&#8217;s some notes on doing migrations.</p>
<p><strong>Converting MySQL 4.x Apps to Oracle 10g</strong></p>
<p><strong>Conceptual Issues</strong></p>
<ul>
<li>Skills: Oracle has a steep learning curve for programmers unfamiliar with database transaction programming, so you should have at least one programmer who has worked with Oracle in the past and can write stored procedures. You will also need an experienced Oracle DBA for non-trivial projects.
<li>Portability: decide if you want to maintain dual database support or not. It&#8217;s not difficult to do since 90% of SQL queries work the same, and it&#8217;s unlikely you&#8217;ve done anything tricky like stored procedures or views in MySQL since those are new features in 5.0. It&#8217;s nice to have dual-database support if your developers use notebook computers (MySQL is fairly light-weight), or if you want to market the software later (for example, most ISP hosting plans support MySQL only.)
<li>Autocommit: decide if you want to use autocommit or not with Oracle. Usually not.
<li>Performance: MySQL has a very limited query optimizer, resulting often in slow table scans. Oracle however has a great query optimizer and can optimize queries even with multiple subselects and OR clauses.
<p>If you do mass updates, consider checkpointing them (loop and commit) to avoid filling the Oracle redo log. A MyISAM UPDATE statement that touches all records can fill up the log in Oracle if not sized correctly. For the sames reason, Oracle TRUNCATE is much more efficient than doing a DELETE * FROM TABLE.</p>
<p>MySQL has table types that have specialized features and performance, such as MyISAM/FullText, Innodb/Transactions, Heap, Blackhole, etc.</p>
<p>Oracle has 3 storage engines (heap/parallel query, index-organized, external) with features on top of that. Heap is the default storage engine, index-organized is a B-tree optimized for compactness and quick access that can be several times faster for index and range queries than heap, often used for data warehousing.</p>
<li>MySQL supports database names, but Oracle is quite different &#8230; it uses one database but optionally supports multiple schemas based on userid
<li>Schema: converting the database schema and data migration will likely be more difficult than doing the application source code changes. There are tools to help. <a href="http://www.spectralcore.com/order.php">Spectral Core</a> sells Full Convert. Same with regression testing. MySQL can be accomodating about blank vs. null. vs 0000-00-00. Oracle is not, so loading data can be touchy.
<li>Timezone: MySQL-based applications often use whatever timezone the MySQL server uses. Oracle recommends for performance reasons setting the database to UTC (+0000). Beginning with MySQL 4.1.3 and Oracle 9i, both databases have similar tz features, as both are based on the Olson timezone database. To do timezone conversion, MySQL uses CONVERT_TZ and Oracle uses FROM_TZ. Note that in MySQL 5.0, NOW() is a session timestamp (computed once so replication-safe), while SYSDATE() is a real-time timestamp and would be a different value on the slave.
<p><code><br />
mysql> SELECT @@global.time_zone, @@session.time_zone; # show MySQL tz settings<br />
SYSTEM SYSTEM</p>
<p>mysql> select * from time_zone_name; # see if tz database is loaded yet<br />
Name                                   | Time_zone_id<br />
Africa/Abidjan                   |            1<br />
Africa/Accra                       |            2<br />
Africa/Addis_Ababa         |            3 </p>
<p>sqlplus>  SELECT * FROM v_$timezone_names;</p>
<p></code></p>
<li>Character Set: MySQL-based applications often use whatever character set that MySQL defaults to. When moving to Oracle, you likely want to add explicit support because production Oracle instances are usually set to AL32UTF8 these days (Oracle&#8217;s &#8220;UTF8&#8243; character set is actually Unicode 2.0 from 8i days). You can see which character set a database or column is set to with:
<p><code><br />
select * from v$nls_parameters where parameter in ('NLS_LANGUAGE',<br />
   'NLS_TERRITORY', 'NLS_CHARACTERSET');<br />
select dump(mycolumn,1017) from mytable where rownum=1;<br />
</code></p>
<li>Case-sensitivity: MySQL generally does case-insensitive string comparisons if you don&#8217;t use the BINARY keyword, but Oracle is case-sensitive. MySQL database and table names are case-sensitive on Unix (but not Windows or Mac OS X HPFS+) because databases and tables are actually directories and files, but Oracle silently upper-cases them and appears case-insensitive.
<li>Sequence Numbers: Oracle sequence numbers are not guaranteed to be sequential. Values are &#8220;lost&#8221; in a rollback, and will most likely be &#8220;lost&#8221; if cached sequence numbers are specified and there is a shutdown or panic or library age-out. Non-cached sequence numbers can cause a noticeable performance impact (a disk access), which is why the default is to cache 20 values per allocation. 1000 is commonly used for bulk loading.
<p>Some Oracle sequence factoids: sequences never rollback after being incremented, they can be non-numeric, and you can use multiple sequences per table in Oracle. (Oracle sequences are actually separate objects from tables.)</p>
<p>To use sequences in Oracle, you can either specify NAME_OF_SEQ.NEXTVAL followed on the same $dbh with NAME_OF_SEQ.CURRVAL in 2 statements, or combine both with an INSERT &#8230; RETURNING &#8230; INTO statement.</p>
<p>You can emulate MySQL&#8217;s autoincrement feature with an Oracle sequence and a trigger. This is documented in the blog posting <a href="http://www.lifeaftercoffee.com/2006/02/17/how-to-create-auto-increment-columns-in-oracle/">How to Create Auto Increment Columns in Oracle.</a><br />
When migrating from MySQL to Oracle, you may want to consider dropping useless surrogate keys altogether, reducing the need for application code changes or creating sequences.</p>
<li>Trailing spaces: MySQL and Oracle handle trailing spaces in columns differently when doing string comparisons. Oracle&#8217;s NCHAR preserves trailing spaces, and NVARCHAR2 does not.
<li>Performance: MySQL is a lightweight database that usually performs well with little planning. Updating a couple of rows and doing a select from a MyISAM table may take milliseconds in MySQL, but one second calendar time in Oracle without prior thought to using batch inserts in a single transaction, or batch sequence numbers.
<li>NULL: In MySQL, the empty string may be inserted into a column and is not a NULL value. Oracle converts the empty string to NULL.
<li>MySQL silently truncates input data when too wide for a column, but Oracle considers the column width to be a constraint and fails the insert or update.
<li>It is smart to quickly migrate a representative sample of your migrated code with the converted Oracle schema to notice any surprise problems.
</ul>
<p><strong>SQL Syntax Issues</strong></p>
<ul>
<li>the ANSI join syntax works in 10g, so that makes porting much easier than in the past. (The Oracle DBAs I have talked to said that the new features in 9i were not ready for prime-time.)
<li>MySQL allows GROUP BY on any column. Oracle only allows GROUP BY on all of the columns in your query result set.
<li>MySQL unix_timestamp() can be converted to an Oracle stored procedure
<li>if you were using a MySQL database for scratch tables, you can do a similar thing in Oracle by declaring tables to be in a scratch tablespace, but in the same schema
<li>should be able to use Oracle transactions and ACID, and remove MySQL LOCK TABLE and UNLOCK TABLE statements.
<li>in MySQL, a database is a combination of a hostname and database name. In Oracle it&#8217;s a SID, and is defined in the tnsnames.ora configuration file.
<li>MySQL LIMIT can be replaced with a subquery using ROWNUM in Oracle, for example SELECT * FROM (SELECT ROWNUM limit,  &#8230; ORDER BY &#8230;) WHERE limit BETWEEN ? and ?. Note that MySQL LIMIT is 0-based but Oracle ROWNUM is 1-based.
<li>Oracle object names (column, table, sequence) are 32 characters and by default case-insensitive. In MySQL, database and table names are just files, so case-sensitive on case-sensitive file systems like Unix
<li>MySQL autoincrement columns will instead need a sequence in Oracle.
<li>the optional MySQL AS alias statement keyword is not recognized in Oracle  after a FROM clause table name&#8230; just delete it. (AS is valid after a column name.)
<li>MySQL CONCAT can be rewritten as || in Oracle
<li>MySQL syntax INSERT INTO table SET is not supported in Oracle.
<li>MySQL syntax for batch INSERT (mutiple VALUE lists) is not supported in Oracle.
<li>MySQL NOW() can be replaced with Oracle SYSDATE, or CURRENT_TIMESTAMP which works in both MySQL and Oracle. CURRENT_DATE is also portable.
<li>MySQL SELECT on a datetime field for display without explicit formatting can be emulated with select to_char(SYSDATE,&#8217;YYYY-MM-DD HH24:MI:SS&#8217;) from dual;
<li>MySQL EXPLAIN can be done 2 ways in Oracle: EXPLAIN PLAN FOR &#8230;; @$ORACLE_HOME/rdbms/admin/utlxpls.sql, or the DBA can create a plan_table so that in SQLPLUS you can type SET AUTOTRACE ON
<li>MySQL CREATE TABLE &#8230; LIKE would need a stored procedure in Oracle to copy metadata. Oracle&#8217;s CREATE TABLE &#8230; AS SELECT does not copy indexes, triggers, constraints, tablespaces or sequences. Oh, and in Oracle, non-primary indexes must have unique names across tables because they are schema objects that do not actually belong to a table.
<li>SELECT COUNT(*) FROM table_name is very fast with MySQL MyISAM tables, because the total row count is stored in the index. In Oracle, expect a much slower result as an index scan is required. An estimate is stored in NUM_ROWS which is updated after most non-INSERT table changes, but it can be wildly inaccurate.
<li>To read blobs in Oracle, you will likely need to allocate memory for the result: $db->{LongReadLen}=500000;  # Make sure buffer is big enough for BLOB
<li>MySQL always sorts NULLs last, but Oracle ORDER &#8230; DESC sorts NULLs first, unless you specify NULLS LAST
<li>queries returning the &#8220;top n&#8221; results are usually implemented in MySQL with ORDER &#8230; LIMIT, but in Oracle there are a number of ways of doing that with subselects, ROWNUM and RANK keywords.
<li>The MySQL client program (mysql) is a fairly usable text-mode application. Oracle&#8217;s version, sqlplus, is inadequate for programmers. Consider using Oracle <a href="http://www.oracle.com/technology/software/products/sql/index.html">SQL Developer</a> (Java, so kind of slow sometimes but does work on MacIntel machines), Squirrel, or Qwest TOAD instead.
<li>MySQL&#8217;s LOAD DATA INFILE and SELECT INTO OUTFILE statements can be emulated in Oracle with SQL Loader and BCP external programs. Perl programmers can use the CPAN module <a href="http://search.cpan.org/dist/Oracle-SQLLoader/">Oracle::SQLLoader,</a> although it is simplistic and needs more testing for customized control files.
<li>Perl DBI&#8217;s $sth->rows() returns the row count from a SELECT result set in MySQL, but in Oracle does not. At best it will indicate -1 for failure and 0E0 for success, so do a COUNT(*) or loop over the result set with while and fetch for a row count. In Oracle, $sth->rows() is incremented as you do the fetch, often too late for your program logic.
<li>Jeremy&#8217;s MyTop for MySQL has an analogous display in Oracle&#8217;s SQL Developer Reports .. DD Reports .. DB .. Top SQL.
<li>MySQL&#8217;s best-effort statement-based replication and Oracle&#8217;s replication are very different. Oracle replication is done in a transaction across master and slave, so they stay in sync.
</ul>
<p>A sequence hack, that I would seldom recommend, to mimic MySQL autoinc in Oracle is this. Define one sequence in Oracle called APP_ID, have the app call APP_ID.NEXTVAL everywhere an autoinc is needed, regardless of table, and create an Oracle stored procedure called LAST_INSERT_ID that calls APP_ID.CURRVAL. That way you can minimize source code changes to your MySQL app.</p>
<p>The downside is that a busy app will soon be using very large numbers as IDs, perhaps needing wider columns, and making it difficult for humans to write or verbalize them, or even predict what the next value will be for a given table.</p>
<p>Please post <strong>your</strong> migration tips!</p>
<p><a href="http://www.oracle.com/technology/tech/globalization/pdf/ ">Oracle Globalization Whitepaper</a><br />
<a href="http://www.oracle.com/technology/documentation/index.html">Oracle Documentation</a><br />
<a href="http://dev.mysql.com/doc/">MySQL Documentation</a><br />
<a href="http://www.oracle.com/technology/pub/columns/kestelyn_manage.html">Oracle: Welcome to the &#8220;2 Day DBA&#8221;</a><br />
<a href="http://www.planetmysql.org/">Planet MySQL (High Quality Blog Aggregator)</a><br />
<a href="http://www.oracle-base.com/articles/8i/ExplainPlanUsage.php">Oracle-Base: EXPLAIN PLAN Usage</a><br />
<a href="http://www.orafaq.com/faqloadr.htm">Oracle SQL*Loader FAQ</a><br />
<a href="http://www.fors.com/orasupp/rdbms/utils/140121_1.HTM">SOLUTIONS TO COMMON SQL*LOADER QUESTIONS</a><br />
<a href="http://www.arikaplan.com/oracle/ari82599.html">BULLETIN: CACHING ORACLE SEQUENCES</a><br />
<a href="http://orafaq.com/scripts/perl/blob.txt">OraFAQ: BLOBs</a><br />
<a href="http://dev.mysql.com/doc/refman/4.1/en/time-zone-support.html">MySQL Manual: MySQL Server Time Zone Support</a><br />
<a href="http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html">MySQL Manual: MySQL Date and Time Functions</a><br />
<a href="http://www.psoug.org/reference/date_func.html">Oracle Date Functions</a><br />
<a href="http://oracleandy.blogspot.com/2006/02/one-of-best-9i-features-for-dbas-is.html#links">Oracle Resumable Transactions</a><br />
<a href="http://www.devx.com/dbzone/Article/30501">Write Time Zone Aware Code in Oracle</a><br />
<a href="http://www.lc.leidenuniv.nl/awcourse/oracle/appdev.920/a96590/adg07iot.htm">Speeding Up Index Access with Index-Organized Tables</a><br />
Contact <a href="mailto:james@actionmessage.com?subject=Re: Consulting">James</a> if you need database conversion or Perl consulting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jebriggs.com/blog/2006/08/mysql-4x-to-oracle-10g-migration-notes/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Database Caching 1/33 queries in 0.010 seconds using disk
Object Caching 778/838 objects using disk

Served from: www.jebriggs.com @ 2012-02-06 03:55:28 -->
