<?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>Kev009.com</title>
	<atom:link href="http://www.kev009.com/wp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kev009.com/wp</link>
	<description>Speed and Accuracy are fine, kev009 is final: Projects and Ventures of Kevin Bowling</description>
	<lastBuildDate>Thu, 19 Jan 2012 03:18:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Zabbix 1.8.9 Debian Squeeze Backport</title>
		<link>http://www.kev009.com/wp/2012/01/zabbix-1-8-9-debian-squeeze/</link>
		<comments>http://www.kev009.com/wp/2012/01/zabbix-1-8-9-debian-squeeze/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 03:18:08 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Datacenter]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[backports]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[squeeze]]></category>
		<category><![CDATA[zabbix]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=657</guid>
		<description><![CDATA[I was beginning to get hit by many bad things in the Debian Squeeze zabbix 1.8.2 package.  If you aren&#8217;t aware, zabbix is a nifty data center monitoring system and is only slightly annoying compared to most other systems which &#8230; <a href="http://www.kev009.com/wp/2012/01/zabbix-1-8-9-debian-squeeze/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>I was beginning to get hit by many bad things in the Debian Squeeze <a href="http://www.zabbix.com/" target="_blank">zabbix</a> 1.8.2 package.  If you aren&#8217;t aware, zabbix is a nifty data center monitoring system and is only slightly annoying compared to most other systems which are very annoying to set up and use.</p>
<p>Most notably, this package will safely run on PostgreSQL 9.1 from <a href="http://packages.debian.org/squeeze-backports/" target="_blank">squeeze-backports</a> and contains many performance improvements.  It should be a drop in upgrade for the distro package.</p>
<p>Get it here:<br />
<a href="http://kev009.com/files/zabbix-1.8.9-squeeze.tar.gz" target="_blank">http://kev009.com/files/zabbix-1.8.9-squeeze.tar.gz</a></p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2012/01/zabbix-1-8-9-debian-squeeze/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Configuration Management Software Sucks</title>
		<link>http://www.kev009.com/wp/2012/01/configuration-management-software-sucks/</link>
		<comments>http://www.kev009.com/wp/2012/01/configuration-management-software-sucks/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 13:14:15 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Datacenter]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Redhat]]></category>
		<category><![CDATA[bcfg2]]></category>
		<category><![CDATA[Cfengine]]></category>
		<category><![CDATA[Puppet]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=643</guid>
		<description><![CDATA[Yes.  Configuration Management Software Sucks.  Horribly. The main problem is that n-th order tweakability is preferred over convention.  It&#8217;s just stupid.  There are a core set of things that just about everybody needs to do.  Those should be dead simple.  &#8230; <a href="http://www.kev009.com/wp/2012/01/configuration-management-software-sucks/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p><strong>Yes.  Configuration Management Software Sucks.  Horribly.</strong></p>
<p>The main problem is that <span style="text-decoration: underline;">n-th order tweakability</span> is preferred over <span style="text-decoration: underline;">convention</span>.  It&#8217;s just stupid.  There are a core set of things that just about everybody needs to do.  Those should be dead simple.  Ready to uncomment and run.  The set operating systems used in the enterprise is fairly small:  RHEL5, RHEL6, Debian 6, Ubuntu LTS.  A configuration system should be opinionated and have complete out of the box support for these platforms.  Simple rulesets for the basics that nearly everyone uses should be ready to go..  package management, process initialization, file management, ssh, sudo, DNS, Apache, PAM, PostgreSQL, MySQL, OpenLDAP, etc.  Keep it simple.  Keep it simple.  Keep it simple.  Resist all urges to add complexity.</p>
<p>That&#8217;s not the case.</p>
<p>You&#8217;d think after 30 years of Unix, BSD and Linux network deployments this would be pretty well trodden ground.  Wrong.  It&#8217;s a complete crapshoot and everybody does things differently.  Pick your poisons and reinvent the stack ad infinitum.</p>
<p>This is one of the few areas I&#8217;m green with envy of the Microsoft side of the fence.  Between Active Directory, Group Policy,  and maybe a third party tool or two for cloning and installs and such, Microsoft environments can easily be set up and managed well by complete morons (and often are).</p>
<h2>Puppet</h2>
<p><a href="http://puppetlabs.com/" target="_blank">Puppet</a> seems to have potential.  Of course, out of the box you&#8217;re pissing in the wind with a blank slate and most books and sites will have you following tutorials to rewrite rulesets that thousands of other people before you have similarly cobbled poorly together.  As a Ruby project, it unsurprisingly has vocal hipster fanboys.  Unfortunately, they forgot to parrot their DRY principle to each other.</p>
<p>It centers around a domain specific convention which isn&#8217;t so bad..  but in no time flat you&#8217;ll start seeing full blown Ruby programs intermingled.  Ugh.  But it&#8217;s not so bad if you stick to the basics.</p>
<p>If you look around you can find reasonably complete module sets, i.e. <a href="http://www.example42.com/" target="_blank">http://www.example42.com/</a>.  It&#8217;s not all gravy as these are heavily interdependent and kludgy.  If you want a clean, simple solution you&#8217;re back to rolling your own with some healthy copy and paste.</p>
<p>Since it&#8217;s a Ruby project, aside from the annoying fanboys, you&#8217;re also going to run into scalability problems past a few hundred nodes.  There are mitigation strategies, but it&#8217;s a joke compared to something like Cfengine.</p>
<p>Due to hype, you&#8217;ll find decent versions in the Debian and Ubuntu backports repos.  RHEL 5 and 6 are covered by a Puppet Labs repo.  2.6 and 2.7 are therefore readily available and as long as your master is running the later version you shouldn&#8217;t have interop problems.</p>
<p>All things considered, Puppet is probably the best choice at the moment.  It sucks, but it&#8217;s got a lot of momentum behind it.  There are mountains of docs, books, and tutorials to get you going and nothing is too foreign or hard to grasp.</p>
<h2>Cfengine 3</h2>
<p>I really want to like <a href="http://cfengine.com/" target="_blank">Cfengine</a>.  It&#8217;s incredibly light weight and hardcore ROFLscale.  It&#8217;s got serious theory behind it and older versions have been used in massive deployments.  But it&#8217;s not just a blank slate.  It&#8217;s even lower level and incomplete compared to the others.</p>
<p>You really need to add a promise library to get features that should be included by default.  These are all stagnate though, and still leave much to be desired.</p>
<p>There&#8217;s a company behind it doing something or another, but the open source version is raw.  If you have more than one Linux distribution, I&#8217;ll pretty much guarantee the packages are incompatible.</p>
<p>The repo choices aren&#8217;t great either.  Uncle Bob&#8217;s PPA on Ubuntu, out of luck on Debian.  RPMs in the EL repos look out of date.  You can of course get source and binaries from the Cfengine company, but it&#8217;s not my preferred way to install things and makes bootstrapping harder than it needs to be.</p>
<p>I haven&#8217;t tried the latest release, but quickly gave this one up when I found severe incompatibilities between point releases.  Madness.  You&#8217;d think people inventing something like promise theory could handle something as simple as version stability.</p>
<p>Ping me when a corporation backs Cfengine with a good promise library, some standard tasks, and repos for the common operating systems.</p>
<h2>Bcfg2</h2>
<p><a href="http://trac.mcs.anl.gov/projects/bcfg2" target="_blank">Bcfg2</a> made the most sense to me out of the box.  XML is yucky and out of fashion these days, but Bcfg2 manages to use it acceptably.  Consequently, most things are declarative, easily read, and overall easy to mimic.  Beyond that, you can tap into some Python template and generator stuff.  But yes, these guys finally didn&#8217;t put n-th order above the common cases!  Installing packages and ensuring services are on is a snap.</p>
<p>They&#8217;ve got their own repos for many distros so installation isn&#8217;t bad.</p>
<p>The client and server are Python so you&#8217;ll have similar scaling problems to Puppet in large environments.</p>
<p>My biggest grievance with Bcfg2 is that the server needs intimate knowledge of each operating system version&#8217;s package repos.  You&#8217;ll fumble around writing a good bit of XML definitions for this in a heterogeneous environment.</p>
<p>The main thing Bcfg2 is lacking right now is community momentum.  Including repo definitions by default and some  more doc work.. I think this would be a great system for small to medium deployments.</p>
<h2>Conclusions</h2>
<p>The lot of this stuff is really terrible.  End to end system management under *nix is a major pain point.  On top of this, you&#8217;ll need a fairly free form monitoring framework (these also all suck) and directory service.  Mix and match an impossible array of projects and eventually you&#8217;ll find your own recipe that sort of works.  Except everyone does it differently so you&#8217;ll constantly be learning and redoing the same things over and over anyway.</p>
<p>It&#8217;s not fun.  What we need is end to end integrated thinking.  This area is still ripe for picking.  Oh RedHat, where art thou?</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2012/01/configuration-management-software-sucks/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>GUNNAR Optiks Computer Glasses Review</title>
		<link>http://www.kev009.com/wp/2011/07/gunnar-optiks-computer-glasses-review/</link>
		<comments>http://www.kev009.com/wp/2011/07/gunnar-optiks-computer-glasses-review/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 06:00:25 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[product review]]></category>
		<category><![CDATA[Computer Glasses]]></category>
		<category><![CDATA[GUNNAR]]></category>
		<category><![CDATA[GUNNAR Optiks]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=616</guid>
		<description><![CDATA[Intro As one might expect from a computing professional, I spend a lot of time in front of LCD screens.  This is coupled to the modern assault of Compact Florescent Lights (CFL).  These are both heavy on the blue spectrum.  &#8230; <a href="http://www.kev009.com/wp/2011/07/gunnar-optiks-computer-glasses-review/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<h3>Intro</h3>
<p>As one might expect from a computing professional, I spend a lot of time in front of LCD screens.  This is coupled to the modern assault of Compact Florescent Lights (CFL).  These are both heavy on the blue spectrum.  Depending on what you read and believe [1], this can have a number of health implications.</p>
<p>For the past few weeks, I&#8217;ve been swapping yellow lenses into my sport sunglasses while at the computer.  I&#8217;ve been pleased with the result and noted an easier time going to bed at night and subjectively my eyes feel less tired.</p>
<p><a href="http://www.kev009.com/wp/wp-content/uploads/2011/07/img095.jpg"><img class="aligncenter size-medium wp-image-619" title="GUNNAR Rocket Onyx" src="http://www.kev009.com/wp/wp-content/uploads/2011/07/img095-300x225.jpg" alt="" width="300" height="225" /></a>Swapping the lenses so often became a bit tedious.  I had to clean them every use.  I began looking for a dedicated pair of glasses.  <a href="http://www.gunnars.com/" target="_blank">GUNNAR Optiks</a> has a decent marketing machine that swooned me into purchasing their purpose-built product.  I was eager to try them out and see if there were any benefits to the specialty computer glasses.</p>
<h3>Pros</h3>
<ul>
<li>Amber tint reduces blue shift as expected.</li>
<li>Look decent.  I would comfortably wear these at my desk in an office environment.  The GUNNAR lens coating gives off a bluish reflection that tones down the impact of the yellow lens to onlookers.</li>
<li>Comfortable frame.  No problems here, I could wear the frames all day.</li>
</ul>
<h3>Cons</h3>
<ul>
<li>Magnification.  Deal breaker.  I wasn&#8217;t expecting a product like this to alter my eye&#8217;s focus, especially without ample warning.  I wasn&#8217;t sure about the magnification until reading another review [2].</li>
<li>Quality.  Chinese made, feel flimsy, and other reviews say the finish can flake off.</li>
<li>Cost.  For the relative quality, these are retailing for 2-3x the price they should be.</li>
</ul>
<h3>Conclusion and Verdict</h3>
<p>I&#8217;m not afraid to spend money a decent product, even if a good chunk of that is marketing and brand name.  However, the GUNNARs fall short in both quality and execution and I would advise looking elsewhere.</p>
<p>The magnification is a deal breaker for me.  I don&#8217;t need it, I&#8217;m not used to it, and it gave me a headache.  I find it borderline negligent [3] to not mention this beyond fine print about &#8220;diopters&#8221; (note:  I&#8217;m not an Rx wearer; this wasn&#8217;t a familiar term) on the bottom of the packaging.  It made taking eyes off the monitor and looking around awkward &#8212; a tried and true ergonomic tip.</p>
<p>I&#8217;m going to stop by an optometrist and see if they can do a neutral real glass lens (superior optics and scratch resistance) with a slight yellow or orange tint and anti-reflective coating for a reasonable price.  Alternatively, sport, safety, or shooting glasses from a reputable vendor can be cheaper than the GUNNARs and do a fine job.  Prescription glasses wearers should consult their optometrist but I saw passing discussion that the anti-reflective coatings are great and of course they have the expertise to adjust the power and focal length directly to your needs.</p>
<p>The GUNNARs are getting returned.</p>
<h3>Further Readings</h3>
<ul>
<li>[1] <a href="http://texyt.com/bright+blue+leds+annoyance+health+risks" target="_blank">Article and discussion on blue LEDs and light effects</a></li>
<li><a href="http://www.gunnars.com/" target="_blank">GUNNAR Optiks</a></li>
<li>[2] <a href="http://pogue.blogs.nytimes.com/2008/10/09/high-performance-eyewear-guess-again/" target="_blank">New York Times review and discussion of these glasses (pretty funny!)</a></li>
<li>[3] <a href="http://www.visionclinics.com/faq.html#reading" target="_blank">Can drugstore-reading glasses be harmful to my eyes?</a></li>
<li><a href="http://www.amazon.com/3M-Metaliks-Sport-Safety-Eyewear/dp/B000NPALQU" target="_blank">Cheap pair of 3M amber lens glasses</a></li>
</ul>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2011/07/gunnar-optiks-computer-glasses-review/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Something good about every language I used in 2010</title>
		<link>http://www.kev009.com/wp/2011/01/something-good-about-every-language-i-used-in-2010/</link>
		<comments>http://www.kev009.com/wp/2011/01/something-good-about-every-language-i-used-in-2010/#comments</comments>
		<pubDate>Sat, 01 Jan 2011 10:38:40 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[c]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Verilog]]></category>
		<category><![CDATA[VHDL]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=596</guid>
		<description><![CDATA[Inspired by Samuel Tardieu&#8217;s post, I want to do a year in review of all the languages I have used this year.  A lot of times we prima donna programmers complain about anything and everything. I really enjoyed the positive &#8230; <a href="http://www.kev009.com/wp/2011/01/something-good-about-every-language-i-used-in-2010/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Inspired by <a href="http://www.rfc1149.net/blog/2010/12/09/something-nice-about-every-language-i-use/">Samuel Tardieu&#8217;s post</a>, I want to do a year in review of all the languages I have used this year.  A lot of times we prima donna programmers complain about anything and everything.  I really enjoyed the positive outlook of Samuel&#8217;s post and want to take note of my experiences with similar attitude.</p>
<h3>Bread &amp; Butter</h3>
<ul>
<li>Python &#8211; My language of choice for the year.  Whether prototyping, experimenting, developing a Facebook application, maintaining a test framework I wrote for my workplace, or implementing cryptographic algorithms for a security course, Python continued to serve me well.  Between a copy of &#8220;Python Essential Reference&#8221; and PyPI, I feel there are very few problems beyond my means thanks to the power of this beautiful language and its surrounding community.</li>
<li>Java &#8211; As a student, I pounded out many a line of Java throughout the wee hours of the morning in my capstone classes.  Java seems to be the New Age language of academia and I can speak it universally to my classmates and professors as a lingua franca.  I&#8217;ve noticed that my Java programs tend to structure themselves well without much effort thanks to the strong object influence forced by Java and expansive standard library and Collections classes.  Also used at two collegiate programming competitions which is an entirely different experience than normal software development where the large standard library again came in handy.</li>
</ul>
<h3>Good Progress</h3>
<ul>
<li>C &#8211; I launched a <a href="https://github.com/kev009/craftd">good sized networking project</a> in C as my first big project in the language and contributed a number of portability fixes to the <a href="http://monkey.org/~provos/libevent/">libevent</a> project.  Fast to compile, fast at runtime, and full low level control, C is a great language for Unix Systems Programming.  I greatly expanded my knowledge of the POSIX interfaces this year and really enjoy programming at this level.  I&#8217;ve noticed that some principles from other higher order languages have rubbed off on my C style; namely, data hiding and well formed/adaptable interfaces (see the post right before this one).</li>
<li>C++ &#8211; Been putting this one off because of all the FUD and intimidation at the sheer size of it.  C++ is pretty much the Latin of our field and is used in everything from safety-critical Jet aircraft systems, to GUIs, to games, to JITs, to cutting edge research.  As some of the pundits say, C++ is the language for &#8220;Demanding Applications&#8221;.  If you consider Java as the Flight Engineer of a large aircraft, C++ is definitely in the Pilot seat.  You have full control and high visibility of what is going on, but if you aren&#8217;t careful you can crash and burn.  I&#8217;ve probably progressed to the advanced beginner stage where I can use it as a better C but haven&#8217;t endured the trials and tribulations of an expert in the art of C++, nor read important references like Scott Meyers&#8217; &#8220;Effective C++&#8221; series.  I really like the power and efficiency of the STL and plan on knowing enough C++ to use it when called upon.</li>
</ul>
<h3>Breaking New Ground</h3>
<ul>
<li>VHDL &#8211; After a required Electrical Engineering course, I was exposed to the entirely different paradigm of programmable hardware (FPGAs).  This was an eye opening experience.  Fundamentally, digital design is concurrent.  There may be valuable lessons here for both academic and professional Computer Science and I need to explore more here.  In 2011, I&#8217;d like to buy my own FPGA development board and work through the design of a simple CPU to gain further appreciation of hardware and VHDL or Verilog.</li>
</ul>
<h3>Back Burner</h3>
<ul>
<li>PHP &#8211; The first language I seriously learned and used some 12 years ago (I dabbled in Perl before that at the ripe age of 8, and probably Lego Logo a year before that :-P ).  I&#8217;ve been keeping an eye on it and it seems some of the Framework movement that stole a lot of developers away to other languages has sprouted mature analogues in PHP land.  No longer just C for the web, PHP 5.3 continues the lineage of the 5-series as a serious object-oriented language for web development that is basically universally available and dead simple to scale.  The extent of my PHP coding in 2010 was limited to maintaining some programs I&#8217;d written in years past (aside from merely installing/using PHP products like this blog).</li>
</ul>
<h3>On to 2011</h3>
<ul>
<li>D &#8211; D2 has me really excited.  For some intents and purposes, it seems like an evolution of C++ with a healthy removal of backward compatibility.  Embracing fast compile times, integrating concurrency and message passing, allowing easy interfacing to C libraries, and more mean this is a language capable of &#8220;Demanding Applications&#8221;.  Perhaps most intriguing is the use of the language proper for metaprogramming and compile-time programs.  I have Andrei Alexandrescu&#8217;s book on my shelf and have thumbed through it a few times.  The fact that he is involved speak volumes of D&#8217;s potential and his book looks superbly written. 2011 means working my way through the book and working on at least one sizable project in D.</li>
<li>Erlang &#8211; Erlang has been on my radar for a couple years now.  The fact that the OTP has roots in the demanding and critical realm of telecom means this is a serious language and seems to deliver interesting take on concurrency.  Erlang has already proven itself effective for XMPP servers and Message Queues.  This may yet be one of the best languages around for scalable networking applications and I&#8217;d like to get some hands on experience with it in 2011.</li>
<li>Haskell &#8211; I don&#8217;t know much about Haskell other than playing around with TryHaskell.  What I do know is that Haskell has a fairly mature Software Transactional Memory and that alone interests me.  I&#8217;ve also heard the optimizing compiler is pretty good.  Through investigation is due in the second half of the year.</li>
</ul>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2011/01/something-good-about-every-language-i-used-in-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>No Nonsense Logging in C (and C++)</title>
		<link>http://www.kev009.com/wp/2010/12/no-nonsense-logging-in-c-and-cpp/</link>
		<comments>http://www.kev009.com/wp/2010/12/no-nonsense-logging-in-c-and-cpp/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 20:08:30 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[c]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[Object Oriented Programming]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[syslog]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=558</guid>
		<description><![CDATA[A lot of times people do zany things and try and reinvent wheels when it comes to programming. Sometimes this is good: when learning, when trying to improve state of the art, or when trying to simplify when only Two-Ton &#8230; <a href="http://www.kev009.com/wp/2010/12/no-nonsense-logging-in-c-and-cpp/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>A lot of times people do zany things and try and reinvent wheels when it comes to programming.  Sometimes this is good:  when learning, when trying to improve state of the art, or when trying to simplify when only Two-Ton solutions are available.</p>
<p>For a current daemon project I need good, fast, thread-safe logging.  <strong>syslog</strong> fits the bill to a tee and using anything else would be downright foolish &#8212; akin to implementing my own relational database.  There&#8217;s one caveat.  For development and debugging, I&#8217;d like to not fork/daemonize and instead output messages to <em>stdout</em>.  Some implementations of <em>syslog()</em> define <em>LOG_PERROR</em>, but this is not in <a href="http://www.opengroup.org/onlinepubs/9699919799/">POSIX.1-2008</a> and it also logs to both stderr and wherever the syslog sink is set.  That may not be desired.</p>
<p>So, the goals here are:  continue to use <em>syslog()</em> for the normal case as it is awesome, but allow console output in a portable way.  Non-goals were using something asinine like a reimplementation of Log4Bloat or other large attempt at thread-safe logging from scratch.</p>
<p>Using function pointers, we can get a close approximation of an Interface or Virtual Function of Object Oriented languages:</p>
<pre class="brush: c">
void (*LOG)(int, const char *, ...);
int (*LOG_setmask)(int);
</pre>
<p>These are the same parameters that POSIX <em>syslog()</em> and <em>setlogmask()</em> take.  Now, at runtime, if we desire to use the the &#8220;real&#8221; syslog:</p>
<pre class="brush: c">
LOG = &amp;syslog;
LOG_setmask = &amp;setlogmask;
</pre>
<p>If we wish to instead log to console, a little more work is in order.  Essentially, we need to define a console logging function &#8220;inheriting&#8221; the <em>syslog()</em> &#8220;method signature&#8221; (or arguments for non-OO types).</p>
<pre class="brush: c">
/* In a header somewhere */
void log_console(int priority, const char *format, ...);
int log_console_setlogmask(int mask);
</pre>
<p>And finally, a basic console output format:</p>
<pre class="brush: c">
/* Private storage for the current mask */
static int log_consolemask;

int log_console_setlogmask(int mask)
{
  int oldmask = log_consolemask;
  if(mask == 0)
    return oldmask; /* POSIX definition for 0 mask */
  log_consolemask = mask;
  return oldmask;
}

void log_console(int priority, const char *format, ...)
{
  va_list arglist;
  const char *loglevel;
  va_start(arglist, format);

  /* Return on MASKed log priorities */
  if (LOG_MASK(priority) &amp; log_consolemask)
    return;

  switch(priority)
  {
  case LOG_ALERT:
    loglevel = &quot;ALERT: &quot;;
    break;
  case LOG_CRIT:
    loglevel = &quot;CRIT: &quot;;
    break;
  case LOG_DEBUG:
    loglevel = &quot;DEBUG: &quot;;
    break;
  case LOG_EMERG:
    loglevel = &quot;EMERG: &quot;;
    break;
  case LOG_ERR:
    loglevel = &quot;ERR: &quot;;
    break;
  case LOG_INFO:
    loglevel = &quot;INFO: &quot;;
    break;
  case LOG_NOTICE:
    loglevel = &quot;NOTICE: &quot;;
    break;
  case LOG_WARNING:
    loglevel = &quot;WARNING: &quot;;
    break;
  default:
    loglevel = &quot;UNKNOWN: &quot;;
    break;
  }

  printf(&quot;%s&quot;, loglevel);
  vprintf(format, arglist);
  printf(&quot;\n&quot;);
  va_end(arglist);
}
</pre>
<p>Now, if console output is what you desire at runtime you could use something like this:</p>
<pre class="brush: c">
LOG = &amp;log_console;
LOG_setmask = &amp;log_console_setlogmask;
LOG_setmask(LOG_MASK(LOG_DEBUG));

LOG(LOG_INFO, &quot;Program Started!&quot;);
</pre>
<p>In about 60 lines of code we got the desired functionality by slightly extending rather than reinventing things or pulling in a large external dependency.  If C++ is your cup of tea, it is left as a trivial reimplementation where you can store the console logmask as a private class variable.</p>
<p>Some notes:</p>
<ol>
<li>You should still call openlog() at the beginning of your program in case syslog() is selected at runtime.  Likewise, you should still call closelog() at exit.</li>
<li>It&#8217;s left as a trivial exercise to the reader to define another function to do logging to both <em>stdout</em> and, using <em>vsyslog()</em>, the syslog.  This implements <em>LOG_PERROR</em> in a portable way.</li>
<li>I chose stdout because it is line buffered by default.  If you use stderr, you should combine the loglevel, format, and newline with <em>sprintf</em> before calling <em>vprintf</em> on the variable arglist to prevent jumbled messages.</li>
<li>Of course, make sure you are cognizant that the format string is passed in and do not allow any user-supplied format strings as usual.</li>
</ol>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2010/12/no-nonsense-logging-in-c-and-cpp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why VIM is not my favorite editor</title>
		<link>http://www.kev009.com/wp/2010/11/why-vim-is-not-my-favorite-editor/</link>
		<comments>http://www.kev009.com/wp/2010/11/why-vim-is-not-my-favorite-editor/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 21:15:17 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[c]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[autocompletion]]></category>
		<category><![CDATA[intellisense]]></category>
		<category><![CDATA[kdevelop]]></category>
		<category><![CDATA[omnicomplete]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=546</guid>
		<description><![CDATA[UPDATE: clang_complete is what the people want and what the doctor ordered: https://github.com/Rip-Rip/clang_complete let g:clang_snippets=1 let g:clang_conceal_snippets=1 C^X, C^U, profit. Another awesome development for LLVM! It sucks for C and C++ development. Popup code completion (&#8220;IntelliSense&#8221;) is a godsend.  Instead &#8230; <a href="http://www.kev009.com/wp/2010/11/why-vim-is-not-my-favorite-editor/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<hr />
<strong>UPDATE:</strong><br />
clang_complete is what the people want and what the doctor ordered:</p>
<ul>
<li><a href="https://github.com/Rip-Rip/clang_complete">https://github.com/Rip-Rip/clang_complete</a></li>
</ul>
<p><code>let g:clang_snippets=1<br />
let g:clang_conceal_snippets=1</code></p>
<p>C^X, C^U, profit.  Another awesome development for LLVM!</p>
<p><a href="http://www.kev009.com/wp/wp-content/uploads/2010/11/vim-clang_complete.png"><img class="aligncenter size-medium wp-image-556" title="vim-clang_complete" src="http://www.kev009.com/wp/wp-content/uploads/2010/11/vim-clang_complete-300x209.png" alt="VIM clang_complete" width="300" height="209" /></a></p>
<hr />
It sucks for C and C++ development.</p>
<p>Popup code completion (&#8220;IntelliSense&#8221;) is a godsend.  Instead of flipping back and forth between an API reference and your code, a non-invasive popup of available functions, method signature, struct members, instance variables, etc is right at your fingertips.  It&#8217;s especially useful when it contains the declaration&#8217;s comment/Doxygen/JavaDoc.</p>
<p>Building a &#8216;ctags&#8217; file of my system libraries takes ten minutes and weighs 1.5GB for VIM&#8217;s integrated omnicomplete.  Any time the headers are updated, it has to be manually rebuilt. The project&#8217;s tags need to be rebuilt per change.  Unbearable.</p>
<p>I also can&#8217;t get inline function/method signatures or automatic struct member completion without a three year old script, <a href="http://www.vim.org/scripts/script.php?script_id=1520" target="_blank">omnicppcomplete</a>.  Yes, this is true for plain old C too.</p>
<p>The one editor I&#8217;ve found that provides the level of introspection I expect yet otherwise stays out of the way is <a href="http://www.kdevelop.org/" target="_blank">KDevelop</a> 4.1.  It basically takes the Kate text editor, with awesome syntax highlighting and standard editing features, and adds some of the best auto-completion I&#8217;ve seen for C or C++.  It&#8217;s fast too, and doesn&#8217;t require a ridiculous manual scan or gigabyte symbol database.  It just works &#8211; automatically.</p>
<p>Well, editing from the console is pretty convenient, especially on slow remote SSH connections.  Lazyweb, am I missing something that VIM gurus know and I don&#8217;t?  Does emacs provide the level of completion I&#8217;m looking for on the console out of the box?</p>
<p>I know the <a href="http://www.llvm.org/" target="_blank">llvm</a> devs have some code brewing that uses llvm for syntax completion.  Maybe there&#8217;s light at the end of the tunnel.</p>
<p>My .vimrc looks like this if anyone has any suggestions:<span id="more-546"></span><br />
<code><br />
filetype on<br />
filetype plugin on<br />
filetype indent on<br />
set nocp<br />
set expandtab<br />
set smarttab<br />
set textwidth=80<br />
set softtabstop=2<br />
set shiftwidth=2<br />
set omnifunc+=syntaxcomplete#Complete<br />
set completeopt+=longest,menuone<br />
set tags+=~/.vim/systags</code></p>
<p><code>autocmd FileType make set noexpandtab</p>
<p>augroup csrc<br />
au!<br />
autocmd FileType *      set nocindent smartindent<br />
autocmd FileType c,cpp  set cindent<br />
augroup END</p>
<p></code></p>
<p><code>syntax on<br />
</code></p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2010/11/why-vim-is-not-my-favorite-editor/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Stop Social Distributed Version Control Diaspora!</title>
		<link>http://www.kev009.com/wp/2010/10/stop-distributed-version-control-diaspora/</link>
		<comments>http://www.kev009.com/wp/2010/10/stop-distributed-version-control-diaspora/#comments</comments>
		<pubDate>Sat, 30 Oct 2010 06:08:57 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[bitbucket]]></category>
		<category><![CDATA[dvcs]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[gitorious]]></category>
		<category><![CDATA[hg]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[social coding]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=516</guid>
		<description><![CDATA[A ton of people use github, gitorious, and bitbucket these days.  Aside from the obvious benefits of dVCS, these sites have excellent features such as: Code review Merge requests Repository &#8220;forking&#8221; (in a good way)/cloning and easy methods to let &#8230; <a href="http://www.kev009.com/wp/2010/10/stop-distributed-version-control-diaspora/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>A ton of people use <a href="http://github.com/" target="_blank">github</a>, <a href="http://gitorious.org/" target="_blank">gitorious</a>, and <a href="http://bitbucket.org/" target="_blank">bitbucket</a> these days.  Aside from the obvious benefits of dVCS, these sites have excellent features such as:</p>
<ul>
<li>Code review</li>
<li>Merge requests</li>
<li>Repository &#8220;forking&#8221; (in a good way)/cloning and easy methods to let upstream know about your branch</li>
<li>Project following/notification</li>
</ul>
<p>Basically, the buzzword they billet this as is <strong>social coding</strong>.  The idea isn&#8217;t entirely new considering mailing lists with patches have been in use for ages, but the new interfaces are intuitive and visually appealing.</p>
<p>The problem?  <a href="http://en.wikipedia.org/wiki/Walled_garden_%28technology%29" target="_blank">Walled garden</a>.  One system doesn&#8217;t work with the other.  Worse if you want to run your own project infrastructure.  You&#8217;d think as FOSS programmers we&#8217;d know better than this and not fall into the same pitfall that social networks are currently in.</p>
<p><strong>I plead with you, social coding providers, come together and create a universal API in which we can uniformly share and exchange information </strong>such as followers, branches, notifications, and merge requests.</p>
<p>I believe this situation is important enough to warrant the attention of community leaders.  I have sent email to the <a href="http://www.fsf.org/" target="_blank">Free Software Foundation</a> and <a href="http://www.linuxfoundation.org/">The Linux Foundation</a> asking for guidance.   If you would kindly pass this along to them and members of <a href="http://www.canonical.com/" target="_blank">Canonical</a>, <a href="http://debian.org/" target="_blank">Debian</a>, and other large FOSS groups we will stymie community fragmentation and develop a way to further the openness that has allowed the creation of such fantastic tools.</p>
<p>Sincerely,<a href="http://www.kev009.com/wp/2010/10/dvcs-diaspora/#comments"><br />
</a> <a href="http://www.kev009.com/wp/2010/10/stop-distributed-version-control-diaspora/#respond">The Undersigned Free Software Advocates:</a> place comment on this entry</p>
<p>&#8212;&#8212;&#8212;-</p>
<p>Edit #1: Response to a couple frequently asked questions:</p>
<ul>
<li>The idea is to keep the information open, free, and interchangeable as  information is what these sites add.  We&#8217;ve had public VCS repos and web  interfaces for ages.  The fact that gitorious is open source does not address this.</li>
</ul>
<ul>
<li>The value of these sites is the social factor, and for the most  part they bottle it up.  If you prefer github, but a project you want to  follow uses gitorious (like Qt), there is no means of exchanging the  social factor.  This is nearly identical to facebook-&gt;<a href="http://www.joindiaspora.com/" target="_blank">Diaspora</a>.While some of these sites do have extended APIs, we need to come  together and make sure that they inter-operate and also work with  self-hosted systems like trac and redmine.</li>
</ul>
<p>Edit #2: A good summary of what needs to be done on <a href="http://www.reddit.com/r/opensource/comments/dylz2/stop_distributed_version_control_diaspora/c13x0mv" target="_blank">reddit</a>.</p>
<p>Edit #3:  A response from Richard Stallman, Atlassian (bitbucket), and github!</p>
<p>An email from RMS:</p>
<blockquote><p>
> There is a chance to increase openness and productivity by making these<br />
> systems as well as self-hosted solutions such as trac, redmine, and<br />
> reviewboard inter-operate.  Developing a standard protocol for the social<br />
> features such as clone notification, merge requests, and commit comments<br />
> would also make integration into the commandline and GUI tools easily<br />
> possible.</p>
<p>It seems like a good idea to me, to the extent it is feasible.  I<br />
don&#8217;t know how these tools work, but I think that most of them use<br />
communication protocols based on their data formats, which are unique<br />
to each program.  So we could only unify the aspects of the protocols<br />
which don&#8217;t depend on those internal data formats.  But that much<br />
could be useful.
</p></blockquote>
<p>Both Atlassian and github saw this as a valid point and were not opposed to such a standard but did not indicate they were working toward anything.  Can anyone advise on how to start a working group or RFC to define such a protocol?</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2010/10/stop-distributed-version-control-diaspora/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Software Freedom Day 2010 &#8211; Gentoo Linux</title>
		<link>http://www.kev009.com/wp/2010/09/sfd-2010-gentoo-linux/</link>
		<comments>http://www.kev009.com/wp/2010/09/sfd-2010-gentoo-linux/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 15:37:58 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=508</guid>
		<description><![CDATA[I&#8217;m doing a presentation/Q&#38;A for Software Freedom Day 2010 in Charleston, SC.  CSCLUG is putting on the event. Software Freedom Day 2010 &#8211; Gentoo Linux Presentation &#8211; .odp / Open Office Impress Software Freedom Day 2010 &#8211; Gentoo Linux PDF &#8230; <a href="http://www.kev009.com/wp/2010/09/sfd-2010-gentoo-linux/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m doing a presentation/Q&amp;A for Software Freedom Day 2010 in Charleston, SC.  <a href="http://csclug.org/">CSCLUG</a> is putting on the event.</p>
<ul>
<li><a href="http://www.kev009.com/wp/wp-content/uploads/2010/09/GentooSFD2010.odp">Software Freedom Day 2010 &#8211; Gentoo Linux Presentation</a> &#8211; .odp / Open Office Impress</li>
<li><a href="http://www.kev009.com/wp/wp-content/uploads/2010/09/GentooSFD2010.pdf">Software Freedom Day 2010 &#8211; Gentoo Linux PDF</a> &#8211; .pdf / Portable Document Format</li>
</ul>
<p>Here is the presentation.  Feel free to use or modify this under the terms of CC-SA3.0.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2010/09/sfd-2010-gentoo-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sun/Oracle Ultra 27 Workstation Discontinued?</title>
		<link>http://www.kev009.com/wp/2010/07/sunoracle-ultra-27-workstation-discontinued/</link>
		<comments>http://www.kev009.com/wp/2010/07/sunoracle-ultra-27-workstation-discontinued/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 02:30:20 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[OpenSolaris]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[Sun]]></category>
		<category><![CDATA[Ultra 27]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=501</guid>
		<description><![CDATA[I just noticed that the Sun/Oracle Ultra 27 is no longer listed on the Desktops section of Oracles products page.  This is a shame because I&#8217;m quite pleased with mine. This sends a couple of messages: Oracle doesn&#8217;t think Solaris/OpenSolaris &#8230; <a href="http://www.kev009.com/wp/2010/07/sunoracle-ultra-27-workstation-discontinued/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>I just noticed that the Sun/Oracle Ultra 27 is no longer listed on the <a href="http://www.oracle.com/us/products/servers-storage/desktop-workstations/index.html">Desktops section</a> of Oracles products page.  This is a shame because I&#8217;m <a href="http://www.kev009.com/wp/2009/12/sun-ultra-27-review-the-ultimate-linux-workstation/">quite pleased</a> with mine.</p>
<p>This sends a couple of messages:</p>
<ol>
<li> Oracle doesn&#8217;t think Solaris/OpenSolaris is viable on the workstation</li>
<li>Oracle can&#8217;t deliver low margin hardware (the prices on these boxes skyrocketed after the acquisition)</li>
</ol>
<p>It could be a purge while they bump to a new model featuring 6-core Xeons.  Yet more than likely, another victim of the merger.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2010/07/sunoracle-ultra-27-workstation-discontinued/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Monty, stop trolling!</title>
		<link>http://www.kev009.com/wp/2010/07/monty-stop-trolling/</link>
		<comments>http://www.kev009.com/wp/2010/07/monty-stop-trolling/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 05:25:35 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Datacenter]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[Monty Widenius]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=494</guid>
		<description><![CDATA[Monty has resorted to another round of hand-waving in his post MySQL saga.  This guy is starting to become an embarrassment to the FOSS community. Some people accuse him of &#8220;selling out&#8221; in some moral sense; this is not the &#8230; <a href="http://www.kev009.com/wp/2010/07/monty-stop-trolling/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Monty has resorted to another round of <a href="http://www.theregister.co.uk/2010/07/05/monty_appeals_ec_oracle_decision/" target="_blank">hand-waving</a> in his post MySQL saga.  This guy is starting to become an embarrassment to the FOSS community.</p>
<p>Some people accuse him of &#8220;selling out&#8221; in some moral sense; this is not the case.  As a technologist, I can imagine liquidity is a liberating experience as you can pass on the reigns and ultimate financial responsibility of your company and get back to the tech.  He built and sold MySQL AB for <strong>$1 billion dollars</strong>.  Needless to say, he and his shareholders were well compensated &#8212; probably far more than the actual &#8220;worth&#8221; of the company.  It is his fault that he did not architect a sale in such a way where he&#8217;d remain <em>supreme commander</em> if that was his true desire.  In retrospect, what he did by selling, quickly leaving SUN,  and starting a fork of the code is a pretty deviant thing to do.  But  again, if the acquisitions agreement didn&#8217;t forbid this, there is no  foul play on either side.</p>
<p>Sun and now Oracle have done nothing overt to prevent MySQL advancement.   What&#8217;s &#8220;killing&#8221;[1] MySQL is failure to innovate.  Don&#8217;t get me wrong, MySQL is  a great tool and meshes beautifully to the needs of many web  workloads.  It powers everything from this humble blog to many enormous  web properties.  It&#8217;s always been the &#8220;good enough&#8221; DB and for a long while lacked rather  fundamental features that big corporate systems had.  Although most of  these problems are shored up (and allowed reciprocal growth in 4.x and 5.0), nothing exciting has come along since 5.0.   Creating work-a-like storage engines just because Oracle owns InnoDB was  silly in retrospect and potentially fatal in the long-term.  Sorry Monty, MySQL has never really broken out of the niche that made  it  so popular back in the version 3.23 days and if you spent your energy and money since innovating instead of dragging your feet this would not be the case.</p>
<p>I&#8217;ve been using the PostgreSQL 9 betas, and let me tell you, it meets or exceeds all my RDBMS needs.  If you need a traditional database that has a rock solid history and has stepped up on the innovation front recently, take it for a spin.  There are some interesting non-traditional developments as well, especially <a href="http://couchdb.apache.org/" target="_blank">CouchDB</a>.  All in all, if Oracle does fumble[2] MySQL, the only really damage is to Monty&#8217;s ego as we have excellent alternatives.</p>
<p>[1] MySQL isn&#8217;t going to go away.  It has simply saturated the target  market and the growth curve has since flattened.</p>
<p>[2] I see no reason they will do any better or worse than MySQL AB, Sun, or Monty Program AB.  Expect more of the same.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2010/07/monty-stop-trolling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

