<?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 &#187; Linux</title>
	<atom:link href="http://www.kev009.com/wp/category/linux/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>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>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>Biting the Hand That Feeds</title>
		<link>http://www.kev009.com/wp/2010/06/biting-the-hand-that-feeds/</link>
		<comments>http://www.kev009.com/wp/2010/06/biting-the-hand-that-feeds/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 00:26:42 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Datacenter]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SCO]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[System V]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=487</guid>
		<description><![CDATA[Granted, I&#8217;m not a Groklaw junkie. Lawsuits are the epitome of bureaucratic boring and are not a creational activity. So, keep in mind that I only read the occasional major headlines from The SCO Group&#8217;s escapade in futility. It does &#8230; <a href="http://www.kev009.com/wp/2010/06/biting-the-hand-that-feeds/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p><!-- P { margin-bottom: 0.08in; } -->Granted, I&#8217;m not a Groklaw junkie.  Lawsuits are the epitome of bureaucratic boring and are not a creational activity.  So, keep in mind that I only read the occasional major headlines from The SCO Group&#8217;s escapade in futility.  It does come as a relief that the show is finally over.</p>
<p>The situation in many ways paralleled the AT&amp;T UNIX lawsuit of the &#8217;90s.  It is every bit as ironic considering, for instance, that BSD folks were largely responsible for the success of UNIX.  In SCO&#8217;s case, their OS (SVr4 UNIX) is based largely on the work of Research UNIX, BSD, and even includes a wide selection of GNU tools in userland.</p>
<p><strong>Except this time, no offending code was ever demonstrated, just a straw-man argument and utter defeat.</strong></p>
<p>Still, I feel an overwhelming sense of sadness over the whole affair.  Santa Cruz Operation and System V UNIX were respectable in their time.  My guess is that SCO along with UnixWare (the  natural evolution of System V) will fade into oblivion along side the countless other dead UNIX implementations.  Linux zealots often take jabs at other implementations, but I think UnixWare could have held a viable, if niche, place in the enterprise had been under proper stewardship.</p>
<p>As time goes on, the UNIX diaspora seems to be waning.  We are left with, essentially:</p>
<ul>
<li>Linux, with a mostly GNU userland 	as the heavyweight contender</li>
<li>The BSDs, perhaps equal or greater 	in architectural quality but relatively unknown giants.  We can 	however lump Mac OS X in here which is the most widely used.</li>
<li>Solaris, which might be considered 	an open source System V fork.  An interesting OS that has a a great 	lineage and potential, but lacks in trust and certainty for 	contributors at the moment.</li>
<li>AIX, a System V and BSD hybrid 	with plenty of IBM thrown in for good measure.  Perhaps the gold bar 	and only remaining competitive mid-iron standard due to IBM&#8217;s silicon prowess.</li>
<li>HP-UX, an older System V linage 	perhaps on a slow deathbed due to reliance on the vapid Itanium</li>
</ul>
<p>History has been unforgiving to those companies that try to unfairly weasel programmers and users in this market.  The lesson is to work with and encourage your development community and not bite the hand that feeds.  My eyes are on Oracle for the time being.  Sun had a hard enough time nurturing the Solaris community despite being a favorable company, and Oracle can just as easily kill this operating system through boneheaded maneuvers if it is not careful.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2010/06/biting-the-hand-that-feeds/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Computer Aided Government?</title>
		<link>http://www.kev009.com/wp/2010/03/computer-aided-government/</link>
		<comments>http://www.kev009.com/wp/2010/03/computer-aided-government/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 05:26:28 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[IBM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[computer aided government]]></category>
		<category><![CDATA[government]]></category>
		<category><![CDATA[philopsophy]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=455</guid>
		<description><![CDATA[Random thought of the day&#8230; As most programmers, I see tendencies of over optimism in myself.  Yet Mike Judge&#8217;s Idiocracy seems like a strange window into the future.  Part of me thinks that government should include an open source heuristic &#8230; <a href="http://www.kev009.com/wp/2010/03/computer-aided-government/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Random thought of the day&#8230;</p>
<p>As most programmers, I see tendencies of over optimism in myself.  Yet Mike Judge&#8217;s <a href="http://www.imdb.com/title/tt0387808/" target="_blank">Idiocracy</a> seems like a  strange window into the future.  Part of me thinks that government should include an open source  heuristic computer simulation doing minimax on wealth creation(aka  technology) and personal well-being to aide in decision making.</p>
<p>I suggest a new field of research:  <strong>Computer Aided Government</strong> <strong>(CAG)</strong>.  How can we wire sensors and algorithms into society to enable us to make optimized decisions?  How can we use game theory, statistics, Bayes&#8217; Theorem, simulation, sensors, neural nets, etc. to improve the human condition?  I think IBM is on to something big with their <a href="http://asmarterplanet.com/" target="_blank">Smarter Planet</a> initiative.</p>
<p><a href="http://asmarterplanet.com/" target="_blank"><img class="aligncenter size-medium wp-image-458" title="Smarter Planet" src="http://www.kev009.com/wp/wp-content/uploads/2010/03/hero-300x83.jpg" alt="" width="300" height="83" /></a></p>
<p>And just to reel it in if you think I&#8217;m bat shit insane, think that the current <a href="http://en.wikipedia.org/wiki/Constitutional_democracy" target="_blank">best forms</a> of government were originated over 300 years ago if not earlier.  This was before many forms of computation and logic had been explored and applied.  Surely technology can improve this field as it has for nearly every other facet of life.  I think open source computer scientists can step up in a big way here.  Research in the field could affect billions to come.</p>
<p>Think on it and comment.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2010/03/computer-aided-government/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>KDE SC 4.4 &#8211; Steady, Incremental Improvements</title>
		<link>http://www.kev009.com/wp/2010/02/kde-sc-4-4-steady-incremental-improvements/</link>
		<comments>http://www.kev009.com/wp/2010/02/kde-sc-4-4-steady-incremental-improvements/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 08:13:29 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Redhat]]></category>
		<category><![CDATA[kde 4.4]]></category>
		<category><![CDATA[kde sc 4.4]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=451</guid>
		<description><![CDATA[I haven&#8217;t noticed any killer features in KDE SC 4.4 and I&#8217;ve been running it since Beta 1. I&#8217;ve noticed a lot of subtle improvements.  Things like app stacking and selection in the task bar seem much more responsive.  All &#8230; <a href="http://www.kev009.com/wp/2010/02/kde-sc-4-4-steady-incremental-improvements/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t noticed any killer features in KDE SC 4.4 and I&#8217;ve been running it since Beta 1.  I&#8217;ve noticed a lot of subtle improvements.  Things like app stacking and selection in the task bar seem much more responsive.  All around, plasma looks subtly better and my favorite KDE apps seem to just keep getting better.</p>
<p>KSysGuard is really impressive and now has the ability to connect to remote hosts for monitoring.  However, the biggest change is in the <a href="http://techbase.kde.org/Schedules/KDE4/Application_Porting_Status">greater ecosystem</a>.  It seems all the external apps like Amarok, K3b, and digiKam are coming along to fruition.</p>
<p>Other than that, this is a smooth release and shows that the platform is starting to mature.  I think the Summer release distros will be able to do a good job delivering a nice desktop experience based on KDE 4.4.  I&#8217;ll end with my obligatory &#8220;try KDE 4.4 if you had previous bad KDE4 experiences&#8221;.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2010/02/kde-sc-4-4-steady-incremental-improvements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

