<?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>Rhonabwy &#187; Ranting and Reflections</title>
	<atom:link href="http://www.rhonabwy.com/wp/category/ranting-and-reflections/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rhonabwy.com/wp</link>
	<description>Mac, iOS, DevOps, and daily life in Seattle</description>
	<lastBuildDate>Wed, 12 Oct 2011 17:38:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Openstack Summit Fall 2011 &#8211; Wrap-up and overview</title>
		<link>http://www.rhonabwy.com/wp/2011/10/08/openstack-summit-fall-2011-wrap-up-and-overview/</link>
		<comments>http://www.rhonabwy.com/wp/2011/10/08/openstack-summit-fall-2011-wrap-up-and-overview/#comments</comments>
		<pubDate>Sat, 08 Oct 2011 21:48:00 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[devops]]></category>
		<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1146</guid>
		<description><![CDATA[I&#8217;m back from the OpenStack design summit and conference, just held in Boston, MA. It was a fantastic week, with the first three days dedicated to the design summit &#8211; getting down and dirty with the details, and the last &#8230; <a href="http://www.rhonabwy.com/wp/2011/10/08/openstack-summit-fall-2011-wrap-up-and-overview/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m back from the <a href="http://www.openstack.org/">OpenStack</a> design summit and conference, just held in Boston, MA. It was a fantastic week, with the first three days dedicated to the design summit &#8211; getting down and dirty with the details, and the last two dedicated to the conference portion &#8211; talks and panels about folks actively using OpenStack, and a little wrap-up and overview from the project technical leads of the next 6 month roadmap for the core and incubation projects in OpenStack.</p>
<p>One thing that was intended as new, and I think worked well, was the splitting of the conference and design summit. It really made it a lot easier to be involved in the technical details and not have to choose between that and listening to folks talk to what they&#8217;re Openstack experiences have been, governance models and choices, and so forth. As an active contributor to (and general jack-of-all-trades with) a number of the OpenStack projects, it&#8217;s hard enough to balance my focus between the technical sessions.</p>
<p>There was also a ton of news related to OpenStack that is just fantastic for the community. <a href="http://www.openstack.org/blog/2011/10/openstack-foundation/">Rackspace is starting to form out a foundation</a> to run OpenStack long term, and the governance round-table at the conference made it clear that pretty much everyone agreed to a thoughtful, careful process to set it up to really make a long term run with OpenStack. There was notable consensus on ideas and vision of how to set up governance, including taking some long and deep looks at how other successful open source foundations have been set up, and looking to those foundations to learn what&#8217;s been successful, and what they might have done differently.</p>
<p>There was also the entrance of Hewlett Packard very publicly actively into the OpenStack world. <a href="http://h30529.www3.hp.com/t5/HP-Scaling-the-Cloud-Blog/HP-Announces-Support-for-OpenStack/ba-p/109">Back in September, they said they&#8217;d be there</a>, and with the conference <a href="http://openstackconference2011.sched.org/event/4e321f227cd76589defcb7a443af370c">they have committed hardware and time to continuous integration efforts</a>. They were notably involved in the design summit as well, hosting a couple of sessions and getting actively involved in others. And I think most pleasing to me, they are actively submitting code contributions to the OpenStack core projects. I think it&#8217;s a little odd that they&#8217;re all coming in as &#8220;<a href="https://review.openstack.org/#dashboard,1631">HP Nova Contributors</a>&#8220;, but I&#8217;m glad to see it. </p>
<p>With HP running <a href="http://www.vimeo.com/27928411">their cloud offering</a> on OpenStack, they&#8217;re getting deeper in the details of the code. Dell&#8217;s been focusing their efforts on the <a href="http://robhirschfeld.com/2011/03/14/how-openstack-installer-works/">amazing OpenStack deployment tool: Crowbar</a>, and it seems clear to me that HP is taking their interest quite a bit deeper into the core projects.</p>
<p>I won&#8217;t even do justice the the individual project roadmaps from the summit &#8211; I think that the most of the project technical leads are likely recovering this weekend from an intensely focused week. In the next couple of weeks, we&#8217;ll see them hit the mailing list  &#8211; and from what I saw from the sessions in the conference, there&#8217;s going to be some hard choices coming up on where to expend resources. Every one of the projects has more that they want to do than they will be able to smoothly accomplish in the next 6 months. We&#8217;ll see the details hitting the <a href="https://blueprints.launchpad.net/openstack">blueprints</a> in the very near future I&#8217;m sure. Suffice to say that if you&#8217;ve been thinking about getting involved in OpenStack, now is very definitely the time to jump in &#8211; there&#8217;s a ton to do, and a lot of really interesting problems to solve in getting it done.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/10/08/openstack-summit-fall-2011-wrap-up-and-overview/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing OpenStack &#8211; Diablo release (nova and glance)</title>
		<link>http://www.rhonabwy.com/wp/2011/09/23/installing-openstack-diablo-release-nova-and-glance/</link>
		<comments>http://www.rhonabwy.com/wp/2011/09/23/installing-openstack-diablo-release-nova-and-glance/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 16:41:09 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1139</guid>
		<description><![CDATA[I know a lot of folks are using the StackOps script thingy to install OpenStack. I&#8217;ve been installing it (quite a bit) lately just from packages, and it&#8217;s not all that difficult, so I thought I&#8217;d write up the details &#8230; <a href="http://www.rhonabwy.com/wp/2011/09/23/installing-openstack-diablo-release-nova-and-glance/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I know a lot of folks are using the <a href="http://www.stackops.com/">StackOps</a> script thingy to install OpenStack. I&#8217;ve been installing it (quite a bit) lately just from packages, and it&#8217;s not all that difficult, so I thought I&#8217;d write up the details on how to do that. A lot of this is exactly what&#8217;s encoded into <a href="https://github.com/cloudbuilders/openstack-cookbooks">Chef recipes</a> and <a href="https://github.com/puppetlabs/puppetlabs-openstack">Puppet modules</a> out there &#8211; so if you&#8217;re looking to run with something already made, there&#8217;s plenty of options.</p>
<p>These instructions are assuming you&#8217;re starting with an Ubuntu based system &#8211; either 10.10 or 11.04. I haven&#8217;t tried it as yet with 11.10.</p>
<p>First things first, I recommend you make sure you have the latest bits of everything:</p>
<pre lang=bash>
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get autoremove
</pre>
<p>Then we need to add the release &#8220;PPA&#8221; so that your system can grab the packages for Openstack:</p>
<pre lang=bash>
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:openstack-release/2011.3
sudo apt-get update
</pre>
<p>Now we get into the details. I&#8217;m going to drive out the instructions that will start with a single host, but are set up to add additional virtualization hosts as you need. I&#8217;m writing this assuming you&#8217;re working in a small network, and setting it up for FlatDHCP networking. Choosing the networking strategy and IP address space to use is actually one of the trickier parts of doing a reasonable install. For just testing something out in a test lab, this setup will work reasonable well &#8211; the only thing to really note is that this *will* install a DHCP server to provide IP addresses to the virtual instances, so if you have another DHCP server handing out addresses, you might need to get into the details and change some of these settings.</p>
<p>Installing the packages:</p>
<p>OpenStack relies on using MySQL as a data repository for information about the openstack configuration, so we&#8217;ll need to set up a MySQL server. Normally when you install the packages for MySQL, it&#8217;ll ask you about configuring a root password and such. We can make that hands-off by pre-answering some of those questions. To do this, make a file named &#8220;/tmp/mysql_preseed.txt&#8221; and put in it the following:</p>
<pre>
mysql-server-5.1 mysql-server/root_password password openstack
mysql-server-5.1 mysql-server/root_password_again password openstack
mysql-server-5.1 mysql-server/start_on_boot boolean true
</pre>
<p>Then we can get into the commands to install the packages:</p>
<pre lang=bash>
cat /tmp/mysql_preseed.txt | debconf-set-selections
apt-get install mysql-server python-mysqldb
apt-get install rabbitmq-server
# ^^ pre-reqs for running controller nova instance
apt-get install euca2ools unzip
# ^^ for accessing nova through EC2 APIs
apt-get install nova-volume nova-vncproxy nova-api nova-ajax-console-proxy
apt-get install nova-doc nova-scheduler nova-objectstore
apt-get install nova-network nova-compute
apt-get install glance
</pre>
<p>That&#8217;s got all the packages installed onto your local system! Now we just need to configure it up and initialize some information (that&#8217;s the bit about networks, etc).</p>
<p>Before I get into changing configs, let me explain what I&#8217;ll be setting up. In this example, my internal &#8220;network&#8221; is 172.17.0.0/24 &#8211; and I have a dedicated IP address for this host that is 172.17.0.133. The virtual machines will be in their own network space (10.0.0.0 to 10.0.0.254), and (at this point) not visible from the local network, but will be able to access the local network through their virtualization hosts. The machine I&#8217;m using also only has a single NIC (eth0), which is fine for a little test bed, but not likely what you want to do in any sort of real setup.</p>
<p><strong>/etc/nova/nova.conf</strong></p>
<pre>--dhcpbridge_flagfile=/etc/nova/nova.conf
--dhcpbridge=/usr/bin/nova-dhcpbridge
--logdir=/var/log/nova
--state_path=/var/lib/nova
--lock_path=/var/lock/nova
--flagfile=/etc/nova/nova-compute.conf
--verbose
#
--sql_connection=mysql://novadbuser:novaDBsekret@172.17.0.133/nova
#
--network_manager=nova.network.manager.FlatDHCPManager
--flat_network_bridge=br100
--flat_injected=False
--flat_interface=eth0
--public_interface=eth0
#
--vncproxy_url=http://172.17.0.133:6080
--daemonize=1
--rabbit_host=172.17.0.133
--osapi_host=172.17.0.133
--ec2_host=172.17.0.133
--image_service=nova.image.glance.GlanceImageService
--glance_api_servers=172.17.0.133:9292
--use_syslog
</pre>
<p>Now you might have noticed the MySQL connection string in there. We need to set up that user and password in MySQL to do what needs to be done. I also change the MySQL configuration so that remote systems can connect to MySQL. It&#8217;s not needed on a single host, but if you ever want to have more than one compute host, you need to make this change. In <strong>/etc/mysql/my.conf</strong>, find the line:</p>
<pre>bind-address = 127.0.0.1</pre>
<p>and change it to</p>
<pre>bind-address 0.0.0.0</pre>
<p>Now lets make the user in Mysql:</p>
<pre>
mysql -popenstack
CREATE USER 'novadbuser' IDENTIFIED BY 'novaDBsekret';
GRANT ALL PRIVILEGES ON *.* TO 'novadbuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
</pre>
<p>And set up the database:</p>
<pre>
mysql -popenstack -e 'CREATE DATABASE nova;'
nova-manage db sync
</pre>
<p>If that last command gives you any trouble, then we likely don&#8217;t have the MySQL system configured correctly &#8211; the user can&#8217;t access the tables or something. Check in the logs for MySQL to get a sense of what might have gone wrong.</p>
<p>At this point, it&#8217;s time to configure up the internals of openstack &#8211; create projects, networks, etc.<br />
We&#8217;ll start by creating an admin user:</p>
<pre>
# create admin user called "cloudroot"
nova-manage user admin --name=cloudroot --secret=sekret
</pre>
<p>This should respond with something like:</p>
<pre>export EC2_ACCESS_KEY=sekret
export EC2_SECRET_KEY=653f3fad-df22-449b-9e6a-ea6c81e32621</pre>
<p>You can scratch that down, but we&#8217;ll be getting that same information again later and using it, so don&#8217;t worry too much about it.</p>
<p>Now we create a project:</p>
<pre>
# create project "cloudproject" with project mgr: "cloudroot"
nova-manage project create --project=cloudproject --user=cloudroot
</pre>
<p>And finally, a network configuration for those internal IP addresses:</p>
<pre>
nova-manage network create private \
    --fixed_range_v4=10.0.0.0/24 \
    --num_networks=1 \
    --network_size=256 \
    --bridge=br100 \
    --bridge_interface=eth0 \
    --multi_host=T
# gateway assumed at 10.0.0.1
# broadcast assumed at 10.0.0.255
</pre>
<p>Now I&#8217;m using the multi-host flag, which is new in the Diablo release. This makes each compute node it&#8217;s own networking host for the purposes of allowing the VM&#8217;s you spin up to access your network or the internet.</p>
<p>At this point, you&#8217;re system should be up and running, all systems operational. Let me walk you through the command steps to actually kick up a little test VM though. These commands are all meant to be done as a local user (not root!)</p>
<pre>
sudo nova-manage project zipfile cloudproject cloudroot /tmp/nova.zip
unzip -o /tmp/nova.zip -d ~/creds
cat creds/novarc >> ~/.bashrc
source creds/novarc
#
euca-add-keypair mykey > mykey.priv
chmod 600 mykey.priv
#
image="ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz"
wget http://smoser.brickies.net/ubuntu/ttylinux-uec/$image
uec-publish-tarball $image mybucket
#
wget http://uec-images.ubuntu.com/releases/10.04/release/ubuntu-10.04-server-uec-amd64.tar.gz
uec-publish-tarball ubuntu-10.04-server-uec-amd64.tar.gz mybucket
...OUTPUT...
Thu Aug 18 14:02:20 PDT 2011: ====== extracting image ======
Warning: no ramdisk found, assuming '--ramdisk none'
kernel : lucid-server-uec-amd64-vmlinuz-virtual
ramdisk: none
image  : lucid-server-uec-amd64.img
Thu Aug 18 14:02:29 PDT 2011: ====== bundle/upload kernel ======
Thu Aug 18 14:02:34 PDT 2011: ====== bundle/upload image ======
Thu Aug 18 14:03:12 PDT 2011: ====== done ======
emi="ami-00000002"; eri="none"; eki="aki-00000001";
...OUTPUT...
</pre>
<p>And running the instances:</p>
<pre>
euca-run-instances ami-00000002 -k mykey -t m1.large
...OUTPUT...
RESERVATION r-1jj2a80v  cloudproject    default
INSTANCE    i-00000001  ami-00000002            scheduling  mykey (cloudproject, None)  0       m1.tiny2011-08-18T21:06:03Z unknown zone    aki-00000001    ami-00000000
...OUTPUT...
#
euca-describe-instances
...OUTPUT...
RESERVATION r-1jj2a80v  cloudproject    default
INSTANCE    i-00000001  ami-00000002    10.0.0.2    10.0.0.2    building    mykey (cloudproject, SIX)   0   m1.tiny 2011-08-18T21:06:03Z    nova    aki-00000001    ami-00000000
...OUTPUT...
#
euca-describe-instances
...OUTPUT...
RESERVATION r-1jj2a80v  cloudproject    default
INSTANCE    i-00000001  ami-00000002    10.0.0.2    10.0.0.2    running mykey (cloudproject, SIX)   0       m1.tiny 2011-08-18T21:06:03Z    nova    aki-00000001    ami-00000000
...OUTPUT...
#
euca-authorize -P tcp -p 22 default
ssh -i mykey.priv root@10.0.0.2
</pre>
<p>To add on additional hosts to support more VMs, you only need to install a few of the packages:</p>
<pre>
apt-get install nova-compute nova-network nova-api
</pre>
<p>You do need that exact same <b>/etc/nova/nova.conf</b> file though.</p>
<p>Note:<br />
The default install of Glance expects the images that you&#8217;ve loaded up to be available on the local file system for every compute node at /var/lib/glance. Either NFS mount this directory from a central machine, or replicate the files underneath it to all your &#8220;compute hosts&#8221; when you upload a new image to be used in the virtual machines.</p>
<p>Also, the metadata URL needed for UEC images (169.154.169.154) may need help getting forwarded when running on a system with a single NIC. Two potential solutions: A) run nova-api on each of the compute nodes (quick and dirty) or B) specify the &#8211;ec2_dmz_host=$HOSTIP, and potentially invoke the command ip link set dev br100 promisc on to turn on promiscuous mode (per <a href="https://answers.launchpad.net/nova/+question/152528">https://answers.launchpad.net/nova/+question/152528</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/09/23/installing-openstack-diablo-release-nova-and-glance/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>As the diablo milestone nears&#8230;</title>
		<link>http://www.rhonabwy.com/wp/2011/09/17/as-the-diablo-milestone-nears/</link>
		<comments>http://www.rhonabwy.com/wp/2011/09/17/as-the-diablo-milestone-nears/#comments</comments>
		<pubDate>Sat, 17 Sep 2011 17:10:25 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1131</guid>
		<description><![CDATA[In the openstack project, we&#8217;re nearing the &#8220;Diablo Milestone&#8221;. To a large respect, it&#8217;s the fourth release of OpenStack. Even as we close down on the tail end of this release, there has been and is a huge amount of &#8230; <a href="http://www.rhonabwy.com/wp/2011/09/17/as-the-diablo-milestone-nears/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In the openstack project, we&#8217;re nearing the &#8220;Diablo Milestone&#8221;. To a large respect, it&#8217;s the fourth release of OpenStack. Even as we close down on the tail end of this release, there has been and is a huge amount of movement in the project.</p>
<p>We have <a href="https://github.com/openstack/quantum">Quantum</a> and <a href="https://github.com/openstack/glance">Glance</a> shifting to use Github as a repository, <a href="https://review.openstack.org/">new processes (that would be using Gerrit)</a> wrapped around GitHub to allow the project to have a &#8220;gated trunk&#8221; methodology, and lots of &#8220;motion&#8221; within the various projects. It&#8217;s pretty easy to see on Github, a little harder with launchpad (I just don&#8217;t have the tools handy to create the pretty graphs) &#8211; you can see the impact graphs for <a href="https://github.com/openstack/swift/graphs/impact">swift</a>, <a href="https://github.com/openstack/keystone/graphs/impact">keystone</a>, <a href="https://github.com/openstack/glance/graphs/impact">glance</a>, <a href="https://github.com/openstack/quantum/graphs/impact">quantum</a>, and <a href="https://github.com/4p/openstack-dashboard/graphs/impact">openstack-dashbaord</a> to see what I mean.</p>
<p>The shifting to Gerrit hasn&#8217;t been without it&#8217;s trials, but is coming along pretty well now. I really wish the GitHub folks had been a bit more amenable to putting in a field that external folks could use to store metadata about a pull request. Several folks from the OpenStack project (including myself) reached out to them about this, all rebuffed (nicely, but still). In fact, one of the suggestions I got back from the github&#8217;r support was &#8220;Why don&#8217;t you set up Gerrit?&#8221;</p>
<p>With the changes in core repository, lots of dependencies are shifting as well. Dashboard was broken a bit this week we kicked things around to get the dependencies to match the new locations, I think we&#8217;ve got all those pieces worked around now (pull request outstanding for openstack-dashboard). The other piece that really shifted and broke with these changes were the install scripts that we&#8217;ve been using to build and work on a developer&#8217;s environment. The cloudbuilder team at Rackspace recently created a whole new setup that works very nicely, so I think we&#8217;re going to drop our older scripts (based on over-extended versions of Vish&#8217;s excellent <a href="https://github.com/vishvananda/novascript/blob/master/nova.sh">nova.sh</a> script) and move to using their new &#8220;<a href="https://github.com/cloudbuilders/devstack/blob/master/stack.sh">stack.sh</a>&#8220;. (And yeah, of course we&#8217;ll want to mess with it ourselves, so I&#8217;ve forked it&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/09/17/as-the-diablo-milestone-nears/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mental gear shifting and reflections</title>
		<link>http://www.rhonabwy.com/wp/2011/09/10/mental-gear-shifting-and-reflections/</link>
		<comments>http://www.rhonabwy.com/wp/2011/09/10/mental-gear-shifting-and-reflections/#comments</comments>
		<pubDate>Sat, 10 Sep 2011 19:44:26 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1127</guid>
		<description><![CDATA[I&#8217;m in this weird mental space today. At work, I&#8217;ve been putting a lot of effort into building infrastructure &#8211; or more specifically, creating things that build infrastructure. While doing this over the past month, I&#8217;ve hit a few interesting &#8230; <a href="http://www.rhonabwy.com/wp/2011/09/10/mental-gear-shifting-and-reflections/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m in this weird mental space today. At work, I&#8217;ve been putting a lot of effort into building infrastructure &#8211; or more specifically, creating things that build infrastructure. While doing this over the past month, I&#8217;ve hit a few interesting realizations:</p>
<p>That I primarily work in two modes: </p>
<ul>
<li>&#8220;gettin&#8217; shit done and stay the fuck outa my way&#8221;</li>
</ul>
<p>Which is the rude way of saying I&#8217;m hammering out basic frameworks, making sure the theories of how something will go together work, mostly ignoring error conditions and error checking, and testing is manual and just as I need it. I sketch out structures, build blocks on each other, and hopefully end up with my arch/bridge/sofware component/etc &#8211; whatever construct I&#8217;m making.</p>
<ul>
<li>&#8220;making it correct&#8221;</li>
</ul>
<p>In which I get totally OCD about understanding how something works &#8211; even something I&#8217;ve just created, down to creating tests to cover the logic, defining the failure conditions, and picking &#8220;just the right names&#8221; for objects, method calls, and general analogies.</p>
<p>The first shows more apparent progress &#8211; really short term progress &#8211; very quickly. But if that&#8217;s all you do, then I&#8217;m deep in the bug/muck in not very long at all. I&#8217;ve worked with a lot of people who don&#8217;t toggle between these modes &#8211; or I think even recognize them. I think that&#8217;s a bit of a tragedy, and something I encourage people to look at introspectively when they&#8217;re working for me.</p>
<p>Another realization:</p>
<blockquote><p>I have far, far less patience with executives and managers than I do with technical folks/line workers.</p></blockquote>
<p>The explanation into that is a bit more lengthy:</p>
<p>Being a good manager is very, very difficult. (Related reading that I highly recommend: <a href="http://managinghumans.com/">Managing Humans</a> and <a href="http://pragprog.com/book/rdbcd/behind-closed-doors">Behind Closed Doors</a>. Being a good executive (director or whatever up) is even harder. Doing either of those jobs without resorting to being a dick &#8211; keeping an objective and fair eye out is damn near impossible. The dirty truth (that most folks in management positions realize pretty darn quickly) is that you get more money and tend to make more progress if you ARE a dick/backstabber/amoral sonuvabitch. Much of the thinking at an executive level is about capital, progress, and rewards &#8211; where anything you control is capital, what you output is progress, and what you get from all this is rewards. If you want to know in a general sense why an executive is doing anything, find out what their reward structure is. The track from there is usually abundantly clear.</p>
<p>Oh &#8211; and as for that &#8216;progress&#8217; thing, that&#8217;s really naive of me to assert. Here&#8217;s the cynical me: </p>
<p>I&#8217;ve seen instances where output is status quo because that makes larger business sense: you want to keep some segment of the operation running solidly. Those are usually the pieces of the business that bore the shit out of me, and ironically the ones that are &#8220;looking for creative people&#8221; &#8211; usually to do mind-numbing work. </p>
<p>I&#8217;ve also seen directors having the output of one group to just fuck with other groups &#8211; not playing to win, but playing to have someone else loose. Why? Because that makes it easier for other resources you control  appear to be making progress (even if it&#8217;s not the case). I&#8217;ve almost always seen this at the director and above level; managers just don&#8217;t have enough resources under their control to assign some of them to screwing with other folks, and it&#8217;s very, very rare that you&#8217;re overtly rewarded for screwing over the other guy. Okay, maybe not in Microsoft if you&#8217;re working for the &#8220;office&#8221; or &#8220;windows&#8221; franchise components. There&#8217;s another company (that I worked for directly &#8211; I haven&#8217;t worked at Microsoft) in which this pattern is abundant.</p>
<p>The end result of this cynicism (or realism, if you prefer) is that I have little patience with people whom I perceive as not &#8220;trying to make things better&#8221;. A bit idealistic of me, I know &#8211; a place where my idealism doesn&#8217;t match at all with reality. <a href="http://www.imdb.com/title/tt0327137/quotes?qt=qt0370315">A little quote</a> from a favorite movie (<a href="http://www.imdb.com/title/tt0327137/">Secondhand Lions</a>): </p>
<blockquote><p><a href="http://www.imdb.com/name/nm0000380/">Hub</a>: Sometimes the things that may or may not be true are the things a man needs to believe in the most. That people are basically good; that honor, courage, and virtue mean everything; that power and money, money and power mean nothing; that good always triumphs over evil; and I want you to remember this, that love&#8230; true love never dies. You remember that, boy. You remember that. Doesn&#8217;t matter if it&#8217;s true or not. You see, a man should believe in those things, because those are the things worth believing in.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/09/10/mental-gear-shifting-and-reflections/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making a board game</title>
		<link>http://www.rhonabwy.com/wp/2011/08/21/making-a-board-game/</link>
		<comments>http://www.rhonabwy.com/wp/2011/08/21/making-a-board-game/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 17:39:45 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1113</guid>
		<description><![CDATA[It&#8217;s been too long, so I&#8217;m diving back into IOS development and making a board game. I have a test app (not even close to the final thing) for working out the UI pieces of the game that I just &#8230; <a href="http://www.rhonabwy.com/wp/2011/08/21/making-a-board-game/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been too long, so I&#8217;m diving back into IOS development and making a board game. I have a test app (not even close to the final thing) for working out the UI pieces of the game that I just got to a reasonable baseline (i.e. it builds, runs on iPhone and iPad, and can be OTA updated with <a href="https://testflightapp.com/">TestFlight</a>).</p>
<p><a href="http://www.rhonabwy.com/wp/2011/08/21/making-a-board-game/gameboard/" rel="attachment wp-att-1112"><img src="http://www.rhonabwy.com/wp/wp-content/uploads/2011/08/gameboard-231x300.png" alt="" title="gameboard" width="231" height="300" class="aligncenter size-medium wp-image-1112" /></a></p>
<p>The game is <a href="http://en.wikipedia.org/wiki/Tafl_games">Hnefatafl</a> &#8211; not quite an ancestor of chess, but somewhat related. The board is 11&#215;11, and the game is unusual in that it&#8217;s an asymmetric game. It&#8217;s harder to win as one player than the other.</p>
<p>I first learned about this game through a book (the <a href="http://en.wikipedia.org/wiki/Mabinogion">Mabinogion</a>) that had a reference to a game called Gwyddbwyll (from &#8216;the dream of rhonabwy&#8217; &#8211; see how this crazy stuff all ties together?). Nobody really knows the details of gwyddbwyll, but there&#8217;s some reference to say its related to other games from that era &#8211; Irish and Welsh, all of which seem to be the asymmetric &#8220;save the king&#8221; tafl games.</p>
<p>Right now I&#8217;m building this on iPad and iPhone, but I&#8217;m not sure if I&#8217;ll release it under the iPhone &#8211; only because the squares are <i>so damned small</i> on that interface. I have a few ideas for how I want to make the interface function, and once I get beyond that I&#8217;m going to aim to make it a turn-based multiplayer game using Apple&#8217;s <a href="http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/GameKit_Guide/GameCenterOverview/GameCenterOverview.html">GameKit</a> (just an excuse to use the new stuff, course). A multi-player only game seemed kind of limiting though, so I purchased a book on game AI (<a href="http://www.amazon.com/gp/product/0123747317/ref=pd_lpo_k2_dp_sr_1">Artificial Intelligence for games</a>) so that I could make a reasonable single-player game. It&#8217;s a darned good book &#8211; so we&#8217;ll see how I do implementing some of those algorithms in Objective-C. I bought the whole book for Chapter 8 (<i>Board Games</i>), and don&#8217;t regret a penny of the purchase.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/08/21/making-a-board-game/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Functional testing with Lettuce and Fabric</title>
		<link>http://www.rhonabwy.com/wp/2011/08/10/functional-testing-with-lettuce-and-fabric/</link>
		<comments>http://www.rhonabwy.com/wp/2011/08/10/functional-testing-with-lettuce-and-fabric/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 17:08:23 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1109</guid>
		<description><![CDATA[After the launch of Nebula, from which I think I&#8217;m mostly recovered, I&#8217;ve been thinking about and working on ways to allow us to accelerate development. Our team has done a fair bit of work on the Openstack Dashboard, an &#8230; <a href="http://www.rhonabwy.com/wp/2011/08/10/functional-testing-with-lettuce-and-fabric/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After the launch of <a href="http://www.nebula.com/">Nebula</a>, from which I think I&#8217;m mostly recovered, I&#8217;ve been thinking about and working on ways to allow us to accelerate development. Our team has done a fair bit of work on the Openstack Dashboard, an incubating project within OpenStack, and we have a couple of internal http based interfaces for our own pieces. </p>
<p>We have unit testing up and running, and like most projects a few of those tests are more &#8220;functional&#8221; or &#8220;integration&#8221; tests than actually unit tests, but really the project&#8217;s been pretty darn good about keeping those separate. As it turns out, the Junit framework is truly awesome for fast, quick tests &#8211; but when you start to step into functional testing you want just a touch more linearity to the testing. The unit test frameworks that I&#8217;ve run into (<a href="http://readthedocs.org/docs/nose/en/latest/">nosetests</a>, <a href="http://docs.python.org/library/unittest.html">unittest2</a>) don&#8217;t have much in their mechanisms that allow you to set up longer, repeated sequences or flows, so it was time to look around for what else might work there. (sidenote: If you know of some mechanisms that do longer, sequential tests and are based around <a href="http://docs.python.org/library/unittest.html">unittest2</a> or <a href="http://readthedocs.org/docs/nose/en/latest/">nose</a>, I&#8217;d love it hear about it! I&#8217;ll freely admit to not having searched every corner there&#8230;)</p>
<p>I&#8217;ve been watching and reading quite a bit on <a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">BDD</a> and the <a href="http://cukes.info/">cucumber framework</a> for testing applications, so I thought it was time to try it out. Of course, being more of a python geek than a ruby geek, I&#8217;d heard about <a href="http://lettuce.it/">Lettuce</a>, which is either a straight up port, or incredibly headily inspired by Cucumber.</p>
<p>Getting started with it was incredibly easy. Everything we&#8217;re doing is working from a virtualenv (which I highly recommend for development!), so I just added lettuce to the pip-requires list and it was pretty much ready to go.</p>
<p>In setting up lettuce, I probably spent as much time knocking together a quick &#8220;functional_tests.py&#8221; script as anything &#8211; making it responsible for the sequence of testing. The whole point there was to make a single script that could be run, returning an exit code that meant success or failure for the whole set, so it could be plugged into our local instance of Jenkins.</p>
<p>The core of <a href="https://gist.github.com/1137357">that fabric script</a> is really just simple fabric commands to set up, clean, and push code to a remote node. I ended up adding a script to our local repository to start up services on the far-end for functional testing &#8211; <a href="https://gist.github.com/1137366">testsetup.sh</a> &#8211; that runs the various pieces under &#8220;screen&#8221; &#8211; which makes it super easy to see what&#8217;s happened when something goes awry.</p>
<p><script src="https://gist.github.com/1137357.js"> </script></p>
<p><script src="https://gist.github.com/1137366.js"> </script></p>
<p>You&#8217;ll notice at the very end of that functional test script, I invoke &#8220;lettuce&#8221; on the local machine. That takes care of running the actual test sequences. The documentation for lettuce is pretty reasonable, so I recommend walking through that tutorial for a quick understanding. The super-basic gists is that lettuce uses a DSL that you basically create as you go along, and ends up being rather highly customized to your testing setup. You put together files in a &#8220;features&#8221; directory, and they use &#8220;steps.py&#8221; in that same directory to do what&#8217;s needed. The pattern that I&#8217;ve been using (and which seemed to be implied) was to use the &#8220;world&#8221; object in lettuce as a sort of black-board to get and store data as you walk through the steps in lettuce. There&#8217;s deeper integration into Django based projects (my example was using a little <a href="http://flask.pocoo.org/">Flask</a> based application run with <a href="http://gunicorn.org/">gunicorn</a>).</p>
<p>The key to setting up the functional testing was taking advantage of the file &#8220;<a href="https://gist.github.com/1137390">terrain.py</a>&#8220;, which lettuce uses to do global setup, and setup/teardown around steps, scenarios, features, or the whole shebang. Turns out I had several options for how to reach out and walk through the remote application, so I chose to use twill, although I could clearly have used the local test_client() with Flask, or even the web_driver setup from Selenium to drive Firefox.</p>
<p><script src="https://gist.github.com/1137390.js"> </script></p>
<p>One of the nicer things that I found while walking through setting this up was that I could write up a feature file and run lettuce, and it gave me really pleasant &#8220;this isn&#8217;t implemented yet&#8221; output that I could use to expand steps.py. For example, I created &#8220;<a href="https://gist.github.com/1137413">example.feature</a>&#8221; in the features directory:</p>
<p><script src="https://gist.github.com/1137413.js"> </script></p>
<p>and then ran &#8220;lettuce&#8221; and got the following <a href="https://gist.github.com/1137418">output</a>:</p>
<p><script src="https://gist.github.com/1137418.js"> </script></p>
<p>As you can see, it&#8217;s basically giving you the code to add to steps.py to make this work. As I went, I found myself refactoring steps.py to use some of lettuce more advanced mechanisms &#8211; regular expressions and grouping steps together in sequences. And to make sure I don&#8217;t leave you completely in the dark about setting up and using <a href="https://gist.github.com/1137441">steps.py</a>, here&#8217;s a snippet from my growing file.</p>
<p><script src="https://gist.github.com/1137441.js"> </script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/08/10/functional-testing-with-lettuce-and-fabric/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Always On Applications, personal style</title>
		<link>http://www.rhonabwy.com/wp/2011/08/06/always-on-applications-personal-style/</link>
		<comments>http://www.rhonabwy.com/wp/2011/08/06/always-on-applications-personal-style/#comments</comments>
		<pubDate>Sat, 06 Aug 2011 20:37:07 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1105</guid>
		<description><![CDATA[Almost a year ago I wrote a bit about wanting &#8220;Always on&#8221; applications. I started out just sort of complaining about the difficultly with current computing devices, and then looked to the future with cloud computing and the price points &#8230; <a href="http://www.rhonabwy.com/wp/2011/08/06/always-on-applications-personal-style/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Almost a year ago I wrote a bit about wanting &#8220;Always on&#8221; applications. <a href="http://www.rhonabwy.com/wp/2010/09/19/the-always-on-for-desktop-apps/">I started out just sort of complaining</a> about the difficultly with current computing devices, and then <a href="http://www.rhonabwy.com/wp/2010/09/20/more-always-on-applications-in-the-cloud/">looked to the future with cloud computing and the price points to enable those sorts of applications</a>.</p>
<p>This morning, I found a link that adds a new dimension into place: <a href="http://www.raspberrypi.org/">Raspberry Pi</a>. <a href="http://en.wikipedia.org/wiki/Raspberry_Pi">Wikipedia has a good description of the details of the device</a>, and there&#8217;s a BBC interview that shows it and gets into a nice overview.</p>
<p>It&#8217;s the price point of this device with the capabilities that changes the game a bit. It&#8217;s a computer the size of a tin of mints, with a processor capable of easily running higher level languages &#8211; python, ruby, java, whatever. There&#8217;s a lot out there now (<a href="http://www.arduino.cc/">Arduino</a>) that is a roughly similar cost and form factor, but programming it requires working in C or <a href="http://arduino.cc/en/Reference/HomePage">C-like languages</a> and some tools to get it all together. </p>
<p>Raspberry Pi BBC Interview:<br />
<iframe width="560" height="349" src="http://www.youtube.com/embed/pQ7N4rycsy4" frameborder="0" allowfullscreen></iframe></p>
<p>While the interview and foundation talk to making low-cost computers available to kids, I think this kind of device has a much broader potential in personal computing. The tech specs of this device make it very similar to the computing power available in the iPad or iPhones. And while the first generation of this device is missing some things I&#8217;d like to see default (a networking port), it&#8217;s easily added with a USB hub. The device is also incredibly low power &#8211; so I could imagine a shoe-box sized container of these running a 10x the amount of compute, and generating less heat (using less power) than your average dell desktop.</p>
<p>For an always-on application, I want something that&#8217;s not drawing a lot of power and could conceivably run unattended in the closet all day and night. This enables it at a new, lower price point (~$25 compared to a <a href="http://hawkboard.wordpress.com/">Hawkboard SBC</a> at ~$90). Now that&#8217;s cheaper (for the moment), than running an instance up on a cloud server&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/08/06/always-on-applications-personal-style/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Artificial Intelligence for Games, Second Edition</title>
		<link>http://www.rhonabwy.com/wp/2011/07/16/artificial-intelligence-for-games-second-edition/</link>
		<comments>http://www.rhonabwy.com/wp/2011/07/16/artificial-intelligence-for-games-second-edition/#comments</comments>
		<pubDate>Sat, 16 Jul 2011 19:53:58 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1101</guid>
		<description><![CDATA[I&#8217;ve been thinking it&#8217;s time to cobble another IOS app up for sale, not just fiddle around with open source client apps (which is a lot of the IOS work I&#8217;ve been doing lately). So I found a board game &#8230; <a href="http://www.rhonabwy.com/wp/2011/07/16/artificial-intelligence-for-games-second-edition/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking it&#8217;s time to cobble another IOS app up for sale, not just fiddle around with open source client apps (which is a lot of the IOS work I&#8217;ve been doing lately). So I found a board game idea that I liked, and thought I&#8217;d make a stab of doing it &#8211; maybe using some of the new IOS5 features for a multiplayer turn-based game.</p>
<p>As I got into the game, noodling on the design and how the interaction would work, I came to the realization that I really would like to have a reasonable single player game as well, and that I didn&#8217;t have a clue about how to do board-game AI to make a good game experience.</p>
<p>After looking around through a pile of game AI books, I came across &#8220;<a href="http://www.amazon.com/Artificial-Intelligence-Games-Second-Millington/dp/0123747317">Artificial Intelligence for Games, Second Edition</a>&#8220;. Heavy book, hardback &#8211; some $80 if you pick it up outside of Amazon&#8217;s discount mechanisms. It looked good after a glance-through and minimal reading, so I took it home to dig in depth. I&#8217;m really glad I did!</p>
<p>This book does an excellent job of describing the AI algorithms in pseudo good and good ole english, as opposed to many which seem to be littered with mostly un-parse-able fragments of C++. They reference a number of modern games, but rather than catalog &#8220;these used this type of AI, the others didn&#8217;t&#8221; (which I saw in a number of books), they took some time to explain the tradeoffs in choosing the AI mechanism in the game, even if they didn&#8217;t have the &#8220;why&#8221; of the game designer to pull from.</p>
<p>I liked it enough to put up a review on Amazon, and hey &#8211; I&#8217;m writing this too. If you&#8217;re looking for a good overview of AI algorithms and how they work, I recommend the book.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/07/16/artificial-intelligence-for-games-second-edition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript everywhere</title>
		<link>http://www.rhonabwy.com/wp/2011/01/27/javascript-everywhere/</link>
		<comments>http://www.rhonabwy.com/wp/2011/01/27/javascript-everywhere/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 05:28:31 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1058</guid>
		<description><![CDATA[There&#8217;s an interesting fast iteration in language efforts happening around javascript. It&#8217;s been pretty much dominating the client side arena for ages, started to make some interesting headway into server side with Node.js, but now I am starting to see &#8230; <a href="http://www.rhonabwy.com/wp/2011/01/27/javascript-everywhere/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s an interesting fast iteration in language efforts happening around javascript. It&#8217;s been pretty much dominating the client side arena for ages, started to make some interesting headway into server side with <a href="http://nodejs.org/">Node.js</a>, but now I am starting to see even greater depth in the languages toolchain.</p>
<p>It all revolves around the development toolchain, and the base components to cobble together full desktop-UI quality applications. This happens to overlap extensively with the server side world too &#8211; but the details started really becoming clear after digging a bit into <a href="http://www.sencha.com/">Sencha</a>, <a href="http://www.sproutcore.com/">SproutCore</a>, and <a href="http://javascriptmvc.com/">JavascriptMVC</a>. And it&#8217;s Javascript MVC that stands out to me. </p>
<p>If you look at the home page for the site, it presents itself as a collection of tools and mechanisms to do a full-bore standard application:</p>
<ul>
<li>core generators</li>
<li>dependency management</li>
<li>build scripts</li>
<li>testing</li>
<li>templating</li>
<li>code cleaning and linting</li>
</ul>
<p>and the list goes on. All of those components in javascript, for javascript. It&#8217;s still incredibly fragmented as a language, but the parallel efforts moving forward to drive automated testing, including unit testing on the server side. Node has <a href="http://cjohansen.no/en/node_js/unit_testing_node_js_apps">it&#8217;s own built-in stuff</a>, but there&#8217;s also a lot of effort to bring <a href="http://docs.jquery.com/Qunit">QUnit</a> from the JQuery world into that same server side world.</p>
<p>Python and Ruby still have a dominant hold on the server side development, but I wonder for how much longer&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/01/27/javascript-everywhere/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Site moved and updated</title>
		<link>http://www.rhonabwy.com/wp/2011/01/09/site-moved-and-updated/</link>
		<comments>http://www.rhonabwy.com/wp/2011/01/09/site-moved-and-updated/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 02:31:08 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/?p=1045</guid>
		<description><![CDATA[I&#8217;ve a little bit of additional work to call it 100% complete, but the site is now available (as you&#8217;ve likely noticed) and updated internally. Still wordpress, but shifted to a new hosting location. My previous one decided to disable &#8230; <a href="http://www.rhonabwy.com/wp/2011/01/09/site-moved-and-updated/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve a little bit of additional work to call it 100% complete, but the site is now available (as you&#8217;ve likely noticed) and updated internally. Still wordpress, but shifted to a new hosting location. My previous one decided to disable PHP without a whole lot of notice, and it took me a while to get everything back in order.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/01/09/site-moved-and-updated/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jquerymobile and having design constraints</title>
		<link>http://www.rhonabwy.com/wp/2010/11/27/jquerymobile-and-having-design-constraints/</link>
		<comments>http://www.rhonabwy.com/wp/2010/11/27/jquerymobile-and-having-design-constraints/#comments</comments>
		<pubDate>Sat, 27 Nov 2010 20:07:22 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1039</guid>
		<description><![CDATA[I&#8217;ve been working on this idea/project called Eyes for the past year on and off. Maybe for the past 4 to 6 months I&#8217;ve been stymied by what I want the visual representation to look like, struggling with the options &#8230; <a href="http://www.rhonabwy.com/wp/2010/11/27/jquerymobile-and-having-design-constraints/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on this idea/project called <a href="http://bitbucket.org/heckj/eyes">Eyes</a> for the past year on and off. Maybe for the past 4 to 6 months I&#8217;ve been stymied by what I want the visual representation to look like, struggling with the options of an open HTML design canvas. I&#8217;m afraid the sheer potential of anything there left me struggling &#8211; there were too many ideas of what I could do for a visual presentation and interaction, and I wasn&#8217;t able to really narrow it down all that well.</p>
<p>I&#8217;ve been following <a href="http://www.sproutcore.com/">SproutCore</a> for a while, sort of thinking about that as an interesting mechanism, and then more recently I saw the announcements about the <a href="http://jquerymobile.com/">jQueryMobile</a> framework setup. Having done some iPhone and iPad development, the common metaphors of list views, tableviews, etc. felt very familiar. jQueryMobile isn&#8217;t all that to be perfectly honest, but the basic design feel is reasonably close.</p>
<p>I made a branch on Eyes and started laying it out &#8211; and I&#8217;ve been going gangbusters since. Laying in the constraints of the framework has really made the choices much easier to work out. Not that I haven&#8217;t run down some dead ends and had to back out, but I feel like I have better sense of how the pages flow and work together.</p>
<p><a href="http://www.rhonabwy.com/wp/wp-content/uploads/2010/11/fontpage.png"><img class="alignleft size-medium wp-image-1040" title="fontpage" src="http://www.rhonabwy.com/wp/wp-content/uploads/2010/11/fontpage-230x300.png" alt="" width="230" height="300" /></a>And best of all, I have something that I&#8217;m comfortable will work on mobile devices, while not looking like crap on a larger view.</p>
<p>I&#8217;m still learning the various tidbits of the framework CSS stylings, and I&#8217;m already seeing some elements where I&#8217;m going to want to dig deeper. The only real struggle I&#8217;ve had is working with Ajax based forms submissions and debugging them when I bork it up. Doing so much javascript work and debugging is still pretty unfamiliar to me. I&#8217;m ending up with a lot of print(&#8220;..&#8221;) debugging on the back end, and alert(&#8230;) debugging in the javascript itself.</p>
<p><a href="http://www.rhonabwy.com/wp/wp-content/uploads/2010/11/hostpage.png"><img class="alignleft size-medium wp-image-1041" title="hostpage" src="http://www.rhonabwy.com/wp/wp-content/uploads/2010/11/hostpage-300x231.png" alt="" width="300" height="231" /></a>All in all, I&#8217;m very pleased with the effects and results of using jQueryMobile. I do rather wish I hadn&#8217;t left my jQuery book at work for the holiday weekend though &#8211; I&#8217;m certainly not a jQuery expect, and it would have come in very handy more than once already. Thank god for excellent online documentation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2010/11/27/jquerymobile-and-having-design-constraints/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nearly at the top of that first hill</title>
		<link>http://www.rhonabwy.com/wp/2010/11/13/nearly-at-the-top-of-that-first-hill/</link>
		<comments>http://www.rhonabwy.com/wp/2010/11/13/nearly-at-the-top-of-that-first-hill/#comments</comments>
		<pubDate>Sat, 13 Nov 2010 22:25:14 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1030</guid>
		<description><![CDATA[I&#8217;ve been thinking about the past week at the OpenStack Design Summit (Bexar) solidly from last night (flying home from San Antonio, TX) through the various errands I&#8217;ve been running today. This morning Rick Clark tweeted &#8220;A question about OpenStack&#8221;. &#8230; <a href="http://www.rhonabwy.com/wp/2010/11/13/nearly-at-the-top-of-that-first-hill/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking about the past week at the <a href="http://summit.openstack.org/">OpenStack Design Summit (Bexar)</a> solidly from last night (flying home from San Antonio, TX) through the various errands I&#8217;ve been running today. This morning <a href="http://twitter.com/#!/dendrobates/status/3458393733865472">Rick Clark tweeted</a> <a href="http://dendrobates.wordpress.com/2010/11/13/a-question-about-openstack/"> &#8220;A question about OpenStack&#8221;</a>. As I think about it, this shouldn&#8217;t be about what is going right and wrong, but where the project is and what will provide the most benefit by improving it.</p>
<p>I&#8217;m saying all this after a week with the OpenStack guys &#8211; both in design sessions and just chillin&#8217; out. Focused, intelligent, demanding conversations scattered through the week with an amazing &#8220;no-ego&#8221; attitude presenting itself. Not that there weren&#8217;t some good ole technical &#8220;best way to do it&#8221; or &#8220;which is better&#8221; fights, but given the breadth of this project and the open nature with vendors lurking all around the corners &#8211; well, frankly I expected a lot more &#8220;special interest&#8221; to be clearly showing itself. Everyone at that conference was interested in making <a href="http://openstack.org/">OpenStack</a> better at every turn.</p>
<p>250 people, 12 countries, 90 companies/organizations &#8211; all that after 3 months from being publicly announced. And they&#8217;re going it without any prior structure &#8211; building up an OpenStack foundation, doing all the legal and community building, right from scratch. And yeah &#8211; that&#8217;s showing right now.</p>
<p>The first thing I see that will provide the biggest gains:</p>
<ul>
<li><strong>&#8220;How do we all work together?&#8221;</strong></li>
</ul>
<p>Some of the best sessions were around &#8220;What does the status X of bugs mean&#8221; and talking through the development and release process. At this point I&#8217;m convinced the core folks are reasonably comfortable with LaunchPad (the platform the system is hosted on) &#8211; and being at the conference really taught me a great deal about how OpenStack is effectively using it. Prior, it wasn&#8217;t comfortable or familiar to me at all. The object store and compute (swift and nova, respectively) core groups are really quite separate teams, all trying to figure out how to get some common ground in re-using code, libraries, and even setting up documentation.</p>
<p>The second:</p>
<ul>
<li><strong>&#8220;Show me it&#8217;s workin&#8217;, again and again&#8221;</strong></li>
</ul>
<p>OpenStack is quickly heading to be the kernel or core of a platform. You could see it in the twinkle of Eucalyptus&#8217; eye when they talked about Swift (the object store), or chatting with the folks from Scalr or RightScale. The whole system is being built with API in mind from the ground up, and while there is some <a href="http://hudson.openstack.org/job/swift-coverage/">pretty good unit testing</a> in play and <a href="http://hudson.openstack.org/">continuous integration</a>, it was clear that installing this sucker was a PITA &#8211; and the documentation to really pull that all together starting coming together in the documentation sprint and install fest at the summit. One of the &#8220;blueprints&#8221; of the design summit (i.e. &#8220;Things we want to do, and how we want to do it for the next release&#8221;) is to get some <a href="https://blueprints.launchpad.net/nova/+spec/bexar-testing-hudson-integration">fully automated integration testing</a> as well as track the metrics on how the system is operating. There were a lot of folks that have some cross over into the <a href="https://launchpad.net/drizzle">Drizzle project</a>, and the ideas of running and tracking benchmark data on every revision is darned power.</p>
<p>Add to that the benefits of a constant flow of functional testing against a couple of pre-defined clusters of both compute and object store, and you have a powerful engine to make sure trouble is spotted early and can be resolved quickly.</p>
<p>The third:</p>
<ul>
<li><strong>&#8220;How&#8217;s this thing tick?&#8221;</strong></li>
</ul>
<p>One of the admitted weak points is that some small, damned effective core teams have done most of the work &#8211; and if you want to understand the system, well&#8230; you&#8217;ve just got to read the code. That is a huge investment &#8211; and frankly a barrier to entry into the project that can be avoided with some effort towards docs and discussion. Again, great progress was made there (I learned what the &#8220;project&#8221; concept was in Nova at the summit) &#8211; but the interactions between components, what the components are responsible for, and what they&#8217;re *not* responsible for, are all kind of tricky to learn right now.</p>
<p>This extends down into digging into the code, where docstrings could be better (and are getting better!) so that if you wanted to go help with something specific, you didn&#8217;t have to grok a broad codebase to get a handle on what the impacts are of the changes you&#8217;ll need to make.</p>
<p>And the last thing I&#8217;ll throw in here:</p>
<ul>
<li><strong>&#8220;What OpenStack isn&#8217;t, or won&#8217;t do&#8230;&#8221;</strong></li>
</ul>
<p>The project is still in a lot of flux. There were some great components that were shown off at the summit that ride over the top of the infrastructure, or work with it through APIs. Should those be a part of OpenStack, or on the side? Some service providers were very interested in more platform-kind of elements &#8211; a common logging infrastructure, a common authentication, ID, and authorization infrastructure. Should that be a part, or on the side? How tightly or loosely do we want to couple some of these elements? The philosophy is there and forming up, but the real truth of it all will be over the next 6-12 months of the project when decisions are made, reviewed, and a core forms out of it. There have been a few architectural decisions made early: &#8220;Don&#8217;t mandate anything in the client&#8221;, &#8220;If a feature would restrict scale, it MUST be optional&#8221;, etc. that I absolutely applaud. I think it will form up more as projects apply to join the OpenStack umbrella and either make it or don&#8217;t. It will become clear what&#8217;s common, and what isn&#8217;t, pretty darn quickly.</p>
<p>I&#8217;m pumped about this project, the people, and it&#8217;s future. The core openstacker&#8217;s have clearly been driving up a steep hill to get to where they can level out a bit and move into more of a marathon mode. Really, it feels like we&#8217;re nearly at the top of that first hill.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2010/11/13/nearly-at-the-top-of-that-first-hill/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>more always on applications &#8230; in the cloud</title>
		<link>http://www.rhonabwy.com/wp/2010/09/20/more-always-on-applications-in-the-cloud/</link>
		<comments>http://www.rhonabwy.com/wp/2010/09/20/more-always-on-applications-in-the-cloud/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 06:12:13 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1024</guid>
		<description><![CDATA[I took the &#8220;always on application&#8221; and ran through some numbers this evening. I was curious &#8211; with the hosting options available today, what would it cost someone to run an &#8220;always on&#8221; application. The way I&#8217;m thinking about it, &#8230; <a href="http://www.rhonabwy.com/wp/2010/09/20/more-always-on-applications-in-the-cloud/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I took the &#8220;<a href="http://www.rhonabwy.com/wp/2010/09/19/the-always-on-for-desktop-apps/">always on application</a>&#8221; and ran through some numbers this evening. I was curious &#8211; with the hosting options available today, what would it cost someone to run an &#8220;always on&#8221; application.</p>
<p>The way I&#8217;m thinking about it, <a href="http://code.google.com/appengine/">GAE</a> probably isn&#8217;t the right thing. They don&#8217;t easily let you run repeated cron jobs, making an agent style application (i.e. proactive, rather than reactive) not quite a good fit. So what would be? A VM. Sure, you could slice it down farther and get a slicehost style thing &#8211; they&#8217;re excellent, but many of them have restrictions about &#8220;long running processes&#8221; &#8211; and that is exactly what I want.</p>
<p>So what&#8217;s it take to run a VM? There&#8217;s an interesting question. The cheapest I found was Rackspace &#8211; that offered a 256MB Linux hosting solution for $10/mo. Linode starts at 512MB for $19.95. Of course you need to at least make a vague attempt to compare to an EC2 instance. The always on really bites you there &#8211; the cheapest I could get my numbers was around $6/mo (a single micro instance, 1 yr commitment &#8211; minimal to no bandwidth).</p>
<p>I have to wonder &#8211; how well would something like that be received? Say you could offer a private agent/proxy service for $10/mo. I suspect you could get it cheaper &#8211; the compute needed for this kind of service would seem to smaller than the minimum you can purchase as a slice of compute. But people aren&#8217;t generally buying like this &#8211; at least not today.</p>
<p>I think most folks who have a desire for something like this would be more likely to have a desktop computer at home they could dedicate to leaving on. That&#8217;s assuming they have an internet service to their house too &#8211; so the real cost is more than the hosted compute, but since people often have it anyway&#8230; I&#8217;m guessing they&#8217;d be more likely to want to just use it.</p>
<p>The closest to paying as you go for an application gets to the Platform as a Service &#8211; <a href="http://code.google.com/appengine/">Google App Engine</a> or <a href="http://www.microsoft.com/windowsazure/">Microsoft Azure</a>. Frankly neither of which I particularly want because they both represent a sort of technology lock in. In development now is <a href="http://www.openstack.org/">OpenStack</a> &#8211; Rackspace &#038; NASA doing some of that base line commoditization work to drive down the costs of running small VM slices. We&#8217;re already on the sweet side of Moore&#8217;s Law for the commoditization of compute resources &#8211; it&#8217;s just a few more years until it&#8217;s a complete no brainer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2010/09/20/more-always-on-applications-in-the-cloud/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The &#8220;always on&#8221; for desktop apps&#8230;</title>
		<link>http://www.rhonabwy.com/wp/2010/09/19/the-always-on-for-desktop-apps/</link>
		<comments>http://www.rhonabwy.com/wp/2010/09/19/the-always-on-for-desktop-apps/#comments</comments>
		<pubDate>Sun, 19 Sep 2010 22:40:48 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1021</guid>
		<description><![CDATA[I&#8217;ve been thinking about a problem I&#8217;m having with twitter &#8211; that I want to see more than I can easily watch unless I&#8217;m checking on it every hour or so. This gets especially problematic when I&#8217;m gone for a &#8230; <a href="http://www.rhonabwy.com/wp/2010/09/19/the-always-on-for-desktop-apps/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking about a problem I&#8217;m having with twitter &#8211; that I want to see more than I can easily watch unless I&#8217;m checking on it every hour or so. This gets especially problematic when I&#8217;m gone for a long weekend or *gasp* on vacation and completely off the grid for a week. I don&#8217;t want to see it while I&#8217;m gone &#8211; but I would like to be able to review through what happened after the fact.</p>
<p>I also like using the desktop and iOS applications for watching twitter. They&#8217;re generally really good &#8211; give me a nice sliding window of news. But they only &#8220;go back&#8221; so far. The essential problem is that twitter has a limit to the history they&#8217;ll let you easily interrogate for your feed. My feed is wide enough that I&#8217;m starting to miss some pieces, especially as more of it is coming from around the globe and different time zones.</p>
<p>In thinking about it, we I think I need architecturally is something that&#8217;s &#8220;always on&#8221; on the Internet that can grab and watch my feed. Or, more efficiently, accept a twitter stream as events if they have a pub/sub model that is user specific (I don&#8217;t think so, but I didn&#8217;t look).</p>
<p>To me, that means leaving a desktop or something on all the time &#8211; kind of a pain, really. It&#8217;s way more compute than this little task needs. And my head is into cloud computing and various infrastructures &#8211; so what would it take to have something running &#8211; application as a service if you will &#8211; that I could cobble to do this for me? I think it would be pretty easy to arrange this with Google App Engine &#8211; and that feels roughly about right. A platform as a service engine &#8211; I can write and lay down the code on top of it, and then access it from the web through a browser or specifically out of an iOS application. I suppose someone could do this on a slicehost or other thin virtualization platform as well. This could all go into a dedicated JEOS VM and run on Amazon too. </p>
<p>What we&#8217;re down to is what&#8217;s it cost to run this sort of thing on a regular basis. Always on applications &#8211; can you do it cheaper &#8220;in the cloud&#8221; than you can at home? </p>
<p>And this whole thing is getting darned close to the concept of a personal agent &#8211; dealing with (aggregating, filtering) higher speed feeds on the internet than I want to dedicate my attention to. If you go beyond twitter, there&#8217;s a whole pile of social networking feeds that I review and look at with a variety of tools today &#8211; Netnewswire, browser, other dedicated applications&#8230; but all about consuming, filtering, and aggregating information I&#8217;m interested in. I get a heady feeling looking forward at how we might use it all.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2010/09/19/the-always-on-for-desktop-apps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vacation</title>
		<link>http://www.rhonabwy.com/wp/2010/09/19/vacation/</link>
		<comments>http://www.rhonabwy.com/wp/2010/09/19/vacation/#comments</comments>
		<pubDate>Sun, 19 Sep 2010 21:04:16 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1019</guid>
		<description><![CDATA[Last couple of weeks have been spent on vacation &#8211; something I&#8217;ve always wanted to do &#8211; cruise up the Inside Passage to Alaska. We left from Seattle, WA, stopped at Juneau, Skagway, Ketchikan (all in Alaska) and were dropped &#8230; <a href="http://www.rhonabwy.com/wp/2010/09/19/vacation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Last couple of weeks have been spent on vacation &#8211; something I&#8217;ve always wanted to do &#8211; cruise up the Inside Passage to Alaska. We left from Seattle, WA, stopped at Juneau, Skagway, Ketchikan (all in Alaska) and were dropped off in Vancouver, BC. <a href="http://www.facebook.com/ImNarek">Karen</a>, her parents, her aunt and uncle, and mom all went &#8211; one of the last carnival cruises for the season. <a href="http://www.facebook.com/profile.php?id=1196644810">Pat</a> (Karen&#8217;s aunt) has <a href="http://www.facebook.com/album.php?aid=2064311&#038;id=1196644810">a great photo album of it on Facebook</a> with 35 chosen pics. We came home with something like 2.5GB of photos from our collected point and shoot cameras.</p>
<p>The amazing natural beauty is what I went for, and definitely what I received. The bass note for the tour was news that my grandmother, <a href="http://www.facebook.com/profile.php?id=100000438236844">Lela</a>, was going downhill fast and was in the hospital (received just after we left Seattle), and passed away when we were in Juneau.</p>
<p><a href="http://www.flickr.com/photos/joseph_heck/5005861702/"><img alt="Lela Pietzsch" src="http://farm5.static.flickr.com/4132/5005861702_8dcdb4ec53_m.jpg" title="Lela Pietzsch by Joseph Heck" class="alignleft" width="240" height="240" /></a></p>
<p>She was an inspiration to me in so many ways &#8211; grew up in <a href="http://maps.google.com/maps?hl=en&#038;q=Burlington,+Iowa&#038;um=1&#038;ie=UTF-8&#038;hq=&#038;hnear=Burlington,+IA&#038;gl=us&#038;ei=v3mWTMS_CJK8sQP62vXACg&#038;sa=X&#038;oi=geocode_result&#038;ct=title&#038;resnum=1&#038;ved=0CCEQ8gEwAA">Burlington, Iowa</a>, stopped at a 6th grade education, lived through the depression, World War II, survived two husbands, and I think that shows she&#8217;s the most adaptable &#8211; bought her first computer 10 years ago in 2000, even had a <a href="http://www.facebook.com/profile.php?id=100000438236844">facebook page and presence</a>. I abused people complaining about &#8220;being too old&#8221; for computing with her accomplishments. Her passing wasn&#8217;t really unexpected &#8211; not at 97 years old, and when I visited her this past June she was definitely looking very frail. Aside from being very tired, and the various physical complications of just being old, she was sharp minded and had a great laugh through it all.</p>
<p>I got back from this all last week, had a day off at home, and then back to work for a couple of days. Now the weekend, where I&#8217;m writing this and reflecting a bit on the past two weeks. It was a really good vacation, definitely well timed, as the upcoming weeks and months are going to be darned busy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2010/09/19/vacation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>breaking the private network oasis addiction with OAuth</title>
		<link>http://www.rhonabwy.com/wp/2010/07/19/breaking-the-private-network-oasis-addiction-with-oauth/</link>
		<comments>http://www.rhonabwy.com/wp/2010/07/19/breaking-the-private-network-oasis-addiction-with-oauth/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 02:33:50 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[devops]]></category>
		<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1006</guid>
		<description><![CDATA[Most reasonably (and larger) sized operations organizations have a pretty standard networking setup &#8211; or at least some close variation on the theme. ARIN wants public IP addresses behind load balancers, so most orgnizations front up their services through software &#8230; <a href="http://www.rhonabwy.com/wp/2010/07/19/breaking-the-private-network-oasis-addiction-with-oauth/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Most reasonably (and larger) sized operations organizations have a pretty standard networking setup &#8211; or at least some close variation on the theme. ARIN wants public IP addresses behind load balancers, so most orgnizations front up their services through software or hardware load balancers. From there, it goes back to a highly response &#8220;web tier&#8221; &#8211; the spewing of content and the CDN source systems. Those back in to application tiers, and behind those are data persistence tiers (typically, your classic RDBMS). The only thing on the internet is often those load balancers. The networks are often segmented between app and data as well, often with firewalls, to &#8220;reduce potential intrusion&#8221;. It&#8217;s a good plan and pattern &#8211; it generally works. And while you own it all, you own your own network oasis of happiness. </p>
<p>Economic pressures being what they are, it is getting more effective to own what you absolutely need of infrastructure, and rent the rest. Shoot &#8211; if you&#8217;re small enough, owning anything at all for infrastructure may not make sense.</p>
<p>The problem comes when you want to start moving between those network oasis&#8217; of happiness. Like, oh say, to a cloud provider. The end result is our services have all become addicted to this concept of secure, high-bandwidth, reliable access between tiers &#8211; that happy oasis. And that addiction is one that isn&#8217;t healthy &#8211; at least not in a world of elastic scaling architectures. We&#8217;re getting used to breaking that addiction when we integrate with external services &#8211; facebook, twitter, etc. The mashups are breaking the mold of how this has been done in the past. And we need to break our addiction!</p>
<p>Why am I asserting this? As I look at a large number of applications, they don&#8217;t fit a &#8220;cloud provider&#8221; very well &#8211; at least not when you start to get into the realm of dynamic or elastic scaling. Most providers have something akin to an &#8220;internal network&#8221; which we can leverage as consumers. As we get to the logical conclusion we will find ourselves wanting to shift work between one &#8220;oasis of network happiness&#8221; to another. The solution today? Expand to fill all available resources and then buy some more at the same place.</p>
<p><em>That ain&#8217;t gunna to cut it.</em></p>
<p>For us as consumers of infrastructure of a service, we want one provider to be as good and flexibly as another. That means commoditization of the infrastructure (which I believe we&#8217;re starting to see now, although the infrastructure providers will fight it tooth and nail). That means we need to be able to shift from one to the other at a moments notice. </p>
<p>Here&#8217;s an example:</p>
<p>You have enough resources for 100 units at provider A, and you are running up to a high level usage that looks like it&#8217;ll exceed that. You call up Mr Infrastructure A, who reluctantly informs you &#8220;Sorry, all sold out &#8211; it&#8217;ll take 6 weeks to add capacity&#8221;. You also happen to have a not-quite-as-good deal with provider B that costs a little more. All sounds good so far &#8211; your uber-cool software provisioning system smacks down a couple of VM images and spins them up&#8230;. except it&#8217;s a got a problem: connecting the stuff running at provider A to the new stuff you&#8217;ve just spun up. </p>
<p>And that&#8217;s assuming that you&#8217;ve solved all sorts of somewhat evil configuration problems knowing to indicate to a component what it is and who it should be talking to to get its work done. That&#8217;s a topic for a different post though.</p>
<p>I don&#8217;t have THE answer, but I do have AN answer. Follow the mashup leaders: take the OAuth &#038; REST pattern back into your office, workspace, colleagues, whatever. That&#8217;s what we&#8217;re doing after all &#8211; mashing up some services. It&#8217;s just that we normally think mashup means &#8220;with someone else&#8217;s stuff&#8221;.</p>
<p>OAuth and REST work together beautifully and with some coordination can be the answer to providing the answer to the security question &#8220;Should I allow this external request to access these resources?&#8221; The <a href="http://tools.ietf.org/html/draft-ietf-oauth-v2">OAuth 2.0 spec</a> has a segment in it &#8211; <a href="http://tools.ietf.org/html/draft-ietf-oauth-v2-10#section-1.4.4">section 1.4.4 (version 10)</a> &#8211; that walks through the flow for this to happen. Routing over SSL does a pretty reasonable job of getting the data encrypted as well. The cost: running an Authorization server. </p>
<blockquote><p>(You can pull off this same trick with <a href="http://tools.ietf.org/html/draft-hammer-oauth-10">OAuth 1.0</a>: the not-quite-standard-but-defacto &#8220;2 legged OAuth&#8221; routing. The problem: not everyone and all the libraries agree on how to make that work seamlessly.)</p></blockquote>
<p>In order to allow our ourselves to start treating everything &#8211; infrastructure as well &#8211; as software with it&#8217;s speed of change  we need to be able to dynamically allocate resources. Once we have services that are all chatting across OAuth authorized links (encrypted or not), we&#8217;ve removed a huge impediment to being able to elastically scale our services.</p>
<p>Yeah, configuration. Kind of bitch, ain&#8217;t it. Another post, eh?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2010/07/19/breaking-the-private-network-oasis-addiction-with-oauth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>the CMDB is dead, long live the CMDB</title>
		<link>http://www.rhonabwy.com/wp/2010/07/18/the-cmdb-is-dead-long-live-the-cmdb/</link>
		<comments>http://www.rhonabwy.com/wp/2010/07/18/the-cmdb-is-dead-long-live-the-cmdb/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 19:23:16 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[devops]]></category>
		<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=998</guid>
		<description><![CDATA[I work in an environment that has an existing CMDB. Over the past year, I&#8217;ve spent a fair number of man hours from my team and an equal number of hours of my own thinking about what it is, what &#8230; <a href="http://www.rhonabwy.com/wp/2010/07/18/the-cmdb-is-dead-long-live-the-cmdb/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I work in an environment that has an existing <a href="http://en.wikipedia.org/wiki/Configuration_management_database">CMDB</a>. Over the past year, I&#8217;ve spent a fair number of man hours from my team and an equal number of hours of my own thinking about what it is, what we want from it, and how so much of what&#8217;s available today just doesn&#8217;t cut it.</p>
<p>The thing that we&#8217;ll label as a &#8220;CMDB&#8221;, to me, isn&#8217;t. It isn&#8217;t a configuration management database. For us, it&#8217;s an inventory of assets &#8211; digital and physical. It&#8217;s a metadata store that allows us to assign ownership, and an ancillary data set that makes categorizing incidents, requests, and changes in the classic service management sense a bit easier across a very wide organization. If any small company came to me and said &#8220;yeah, gotta have a CMDB!&#8221; I&#8217;d be looking very closely at how potentially insane they were. Most small orgs and companies just don&#8217;t need it. It&#8217;s honestly only useful when you breach some amount of scale.</p>
<p>The worst part is the ITIL definition of what should be in a CMDB has been effectively unachievable because of the costs associated with it. The classic ITIL world of CMDB has this data repository being updated with process (typically manual) as changes are approved &#8211; it&#8217;s meant to represent the &#8220;desired state&#8221; of an operational world. Only it doesn&#8217;t. Really, it never has. And even with the highest priced tools on the market today never will. At best it&#8217;s an audit-against tool that you can see &#8220;yeah, it matched or didn&#8217;t match when we ran that scan a few days ago&#8221;.</p>
<p>It doesn&#8217;t have to be this way though. What most of us want from a CMDB is what we get implicitly, to some degree, from many of our monitoring solutions &#8211; a digital map of our environment. The monitoring pieces created their own version &#8211; typically configured by hand, or sometimes configured automatically with a hand to help guide (<a href="http://www.zenoss.com/">Zenoss</a> and <a href="http://www.hyperic.com/">Hyperic</a> both do a pretty good job at this). The monitoring systems then use that data model to know who to alert when something goes wrong, or if they&#8217;re really good &#8211; to share some set of analysis around &#8220;service X is down because the component A that it relies on is down&#8221;.</p>
<p>Virtualization is pushing this all right over a critical tipping point. The &#8220;old&#8221; CMDB is dead, lets jump to the new. We need a model of our environment that maps our physical and digital assets. We need it to show us dependencies in an ever increasing world, and we need it to help inform us &#8211; especially in a larger organization, who to contact if there&#8217;s an issue with a service. If we have to fill out all this data and information by hand, we&#8217;re lost. The rate of change is increasing, and we *want it* to increase. Look to the model of <a href="http://timothyfitz.wordpress.com/2009/02/10/continuous-deployment-at-imvu-doing-the-impossible-fifty-times-a-day/">continuous deployment</a>, the natural successor to the software development process that is <a href="http://en.wikipedia.org/wiki/Continuous_integration">continuous integration</a>. Now in classic #devops style, let&#8217;s apply that right on through and into operations and running our services.</p>
<p>What doesn&#8217;t exist today, in our collective musings about a <a href="http://dev2ops.org/toolchain/">DevOps toolchain</a>, are (currently) the tools to integrate the knowledge that the deployment tools have into updating a digital asset model . Even these tools don&#8217;t know the dependencies (i.e. what database is this rails app using, which memcache server/port combo is being used, etc) &#8211; but it&#8217;s there, just slightly under the covers. </p>
<p>The other place where we want/need this knowledge stashed? Our monitoring systems. The continuos tests against our live services to assert they&#8217;re OK. Many open source systems include some level of a model just implicitly in their configurations. <a href="http://www.nagios.org/">Nagios</a>, <a href="http://munin-monitoring.org/">Munin</a>, <a href="http://www.zenoss.com/">Zenoss</a>, <a href="http://www.hyperic.com/">Hyperic</a>, etc. I am still struggling to find monitoring systems that have the concept of dynamic configuration through an API access built in to the base of them. Still &#8211; much of their configuration is something that we might naturally want to store in a map of our services.</p>
<p>The way to get this data? Drive it from the tools that are implementing the changes. Have it as a service that can be updated and modified through simple API&#8217;s that <a href="http://www.buildout.org/">Buildout</a>, <a href="https://fedorahosted.org/func/">Func</a>, <a href="http://www.capify.org/">Capistrano</a>, <a href="http://docs.fabfile.org/0.9.1/">Fabric</a>, <a href="http://controltier.org/">ControlTier</a>, or whatever can access and inform. Use the manifests and details that the system configuration tiers (<a href="http://trac.mcs.anl.gov/projects/bcfg2">BCFG</a>, <a href="http://www.cfengine.org/">cfengine</a>, <a href="http://www.opscode.com/chef">Chef</a>, <a href="http://www.puppetlabs.com/">Puppet</a>, <a href="http://www.smartfrog.org/">SmartFrog</a>) have been built with to populate this map as they deploy and invoke their services.</p>
<p>This is all a step to moving all of our infrastructure, historically so very physical, into the digital world. There are tremendous efficiencies to be gained &#8211; both financially (using our physical assets more effectively, or just using what you need from an existing infrastructure provider) and from a service perspective (being able to reconfigure and deploy your services to match the market needs).</p>
<p>Much of devops is focused on deployment, because that&#8217;s where we spend most of our time today. That&#8217;s good &#8211; but we can not forget that it is just one small part of the overall process for these services from inception to retirement.</p>
<p>&#8230;</p>
<p>And before any of the classic CMDB folks find me and start shooting, yes &#8211; I&#8217;m very aware of the work that is going on at <a href="http://www.cmdbf.org/">CMDBf</a> around <a href="http://www.dmtf.org/standards/cmdbf/">federating CMDBs</a>. The idea there is good &#8211; they&#8217;re heading in the right direction. At a 10,000 foot view they&#8217;re going the right direction with <a href="http://www.dmtf.org/standards/published_documents/DSP0252_1.0.1.pdf">their standard</a>. The foundation that it is built on is &#8211; in my opinion &#8211; now outdated and needs to be revisited. The implementation needs to be simplified. I would recommend you look at the labels of the members that are coming together around the federated CMDB concept. Do you see anything in there that shouts of &#8220;open, adaptable, flexible&#8221;? I don&#8217;t. I see the same kind of collaboration that led to J2EE standards and the W* standards around &#8220;web services&#8221;. What is needed is something simpler, more open, and with publicly available implementations. I would never expect BMC, CA, HP, IBM, or Microsoft to help provide that &#8211; it&#8217;s just not in their best interests when they have revenue tied to the services and software they provide in this space today.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2010/07/18/the-cmdb-is-dead-long-live-the-cmdb/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>WordPress 3.0 upgrade</title>
		<link>http://www.rhonabwy.com/wp/2010/07/05/wordpress-3-0-upgrade/</link>
		<comments>http://www.rhonabwy.com/wp/2010/07/05/wordpress-3-0-upgrade/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 21:22:11 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=989</guid>
		<description><![CDATA[New theme, and updated back end &#8211; moved everything this afternoon to WordPress version 3.0. Upgrade worked like a champ &#8211; and I took the time to twiddle the theme into something new and switched around the various widgets. Since &#8230; <a href="http://www.rhonabwy.com/wp/2010/07/05/wordpress-3-0-upgrade/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>New theme, and updated back end &#8211; moved everything this afternoon to WordPress version 3.0. Upgrade worked like a champ &#8211; and I took the time to twiddle the theme into something new and switched around the various widgets.</p>
<p>Since I started using WordPress several years ago, it&#8217;s really come along solidly. I upgrade it these days directly from subversion. My hosting solution doesn&#8217;t have FTP access, which makes upgrading the plugins a bit trickier, but all in all it&#8217;s been really slick and clean for the using.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2010/07/05/wordpress-3-0-upgrade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WWDC 2010 Wrap-up</title>
		<link>http://www.rhonabwy.com/wp/2010/06/12/wwdc-2010-wrap-up/</link>
		<comments>http://www.rhonabwy.com/wp/2010/06/12/wwdc-2010-wrap-up/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 00:28:58 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=985</guid>
		<description><![CDATA[I&#8217;m leaving San Francisco, and Apple&#8217;s WWDC, this year more introspective than inspired. The conference puts us under NDA, so while there was some new stuff shown and talked about there, I can&#8217;t pass it all along. Not yet anyway, &#8230; <a href="http://www.rhonabwy.com/wp/2010/06/12/wwdc-2010-wrap-up/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m leaving San Francisco, and <a href="http://developer.apple.com/wwdc/">Apple&#8217;s WWDC</a>, this year more introspective than inspired. The conference puts us under NDA, so while there was some new stuff shown and talked about there, I can&#8217;t pass it all along. Not yet anyway, there should be some interesting new stuff to talk about once iOS 4.0 is out and in the wild.</p>
<p>It&#8217;s no secret that most of the conference focused on the iPhone and iPad &#8211; what they&#8217;re now calling &#8220;iOS&#8221; (and yeah, I thought &#8220;Hey, doesn&#8217;t Cisco own that brand name&#8230;&#8221; when I first heard it). The desktop/laptop Mac OS X didn&#8217;t get much play time, the <a href="http://www.apple.com/iphone/softwareupdate/">iOS operating system</a> instead getting the red carpet treatment.</p>
<p>The engineers at Apple have managed to build, update, and ship an entire OS for specific platforms once a year for the past 3-4 years. I&#8217;ve got imagine that they&#8217;re nearly, if not completely, mentally bust at this point. I&#8217;m not at all surprised that &#8220;iOS 4&#8243; won&#8217;t be out until Fall for the iPad &#8211; I suspect they&#8217;ll call it iOS 4.1 or 4.2. Apple&#8217;s not growing like mad (at least that I can tell), which means to me that they have been and continue to push at a fevered pitched for the accomplishments they&#8217;re making. I hope they don&#8217;t push so hard they fry their best and brightest that make up the core of the culture that&#8217;s doing all this impressive lifting.</p>
<p>The &#8220;other focus&#8221; of the conference was around new developer tools &#8211; <a href="http://developer.apple.com/wwdc/news/monday.html">Xcode 4 (developer preview)</a> is quite a bit of engineering and accomplishment. To me it&#8217;s centrally a fulfillment of an idea that Chris Lattner presented and posed for possible futures in an <a href="http://llvm.org/">LLVM</a> session two years ago. It is more than that, and I&#8217;d love to wax a bit more enthusiastic about it, but I&#8217;m afraid that runs into NDA covered territory, so I&#8217;ll stop here on that topic. I did come away from the conference having submitted more enhancement requests than ever before around that tool chain.</p>
<p>Dr. Michael Johnson (<a href="http://twitter.com/drwave">@drwave</a>) gave a talk in the middle of the conference, impressive in display and content, and really talking to the &#8220;why&#8221; and &#8220;how&#8221; of making tools. The message I took away this year from his talk was akin to an artist extolling &#8220;know your medium&#8221;. He didn&#8217;t outline the pros/cons of each medium that he works in per se, but just expressed what he could do in each and why knowing that medium was important. I&#8217;m still reflecting this year&#8217;s talk off the meme that he was touting a year or more ago (and was reflected a bit in this year&#8217;s talk too): &#8220;using tools to remove the tension in the room&#8221;. I guess it was two years ago at WWDC, we talked a bit. He related a viewpoint that &#8220;tools shift power&#8221; and was being very mindful of wanting to shift it in a way that was ultimately positive, not negative. Being a bit of a tools guy myself, I find myself reflecting on that quite a bit. The real bitch is that it&#8217;s often hard to predict which way the &#8220;right way&#8221; is between organizational politics and getting our jobs done.</p>
<p>For all the cool and amazing stuff that I saw at WWDC, I&#8217;m finding that I&#8217;m not walking away from this one inspired, scheming, and planning for something new, cool, etc. Oh, there&#8217;s the idea for the iPhone or iPad client application to this or that, but really I find myself instead thinking about my day job.</p>
<p>This week has given me some much needed time to step back and away from the office. I deleted my mail accounts from my iPad and iPhone to make sure I wasn&#8217;t even tempted to check them (those red badges can be like a red flag to a bull when you&#8217;re a somewhat compulsive person). What are we really focusing on and what difference is it going to make? How do we push or pull the whole organization forward to make it better? I have ideas. Some &#8220;maybe 60-70% right&#8221; ideas but no definitive &#8220;I&#8217;m 100% sure of it&#8221; answers right now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2010/06/12/wwdc-2010-wrap-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rites of Passage</title>
		<link>http://www.rhonabwy.com/wp/2010/06/12/rites-of-passage/</link>
		<comments>http://www.rhonabwy.com/wp/2010/06/12/rites-of-passage/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 00:19:49 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=981</guid>
		<description><![CDATA[I saw on the news last night a story about a girl (Abby Sunderland) being rescued while on a solo around-the-world sailing trip. She was in the Indian Ocean, and the rough seas had taken their toll on her boat, &#8230; <a href="http://www.rhonabwy.com/wp/2010/06/12/rites-of-passage/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I saw on the news last night a story about a girl (<a href="http://soloround.blogspot.com/">Abby Sunderland</a>) <a href="http://www.seattlepi.com/national/421633_teen11.html">being rescued while on a solo around-the-world sailing trip</a>. She was in the Indian Ocean, and the rough seas had taken their toll on her boat, demasting her and leaving her drifting. She&#8217;d been on a sat-call apparently when it happened, and the sat call (which used the mast as an antenna) was abrubtly cut off. Her emergency beacon&#8217;s went off and Search and Rescue out of Australia came roaring out, found her and verified that she was OK and stable (the boat wasn&#8217;t taking water) &#8211; they should be picking her up today, if they haven&#8217;t already.</p>
<p>Abby is 16, and was going for a record: youngest solo around the world. Pretty damned impressive.</p>
<p>At <a href="http://www.seattlepi.com/national/421633_teen11.html">the article in the Seattle PI online</a>, the first comment was made by someone calling themselves &#8220;Bobert&#8221;. He wrote:</p>
<div style="padding-left: 30px;"><span style="font-family: arial, sans-serif; line-height: normal; color: #333333;">Her dad&#8217;s a moron, no need for a 16 year old to sail solo around the world.</span></div>
<div><span style="font-family: arial, sans-serif; line-height: normal; color: #333333;"><br />
</span></div>
<p>I don&#8217;t know who this person is, but whomever they are &#8211; they symbolize something that is very, very wrong with our society today. Preserve and protect at all costs. What the fuck have we come to? Our rites of passage are down to &#8220;driving&#8221;, &#8220;graduating from high school&#8221;, &#8220;getting laid for the first time&#8221;, and sometimes &#8220;graduating college&#8221;. What happened to Thomas Jefferson&#8217;s american ideals &#8211; where the hell did we loose them? Maybe what passes for mainline culture thinks a rite of passage is a barbaric, untidy thing. It&#8217;s &#8220;dangerous&#8221;, and not for those who haven&#8217;t &#8220;proven themselves responsible&#8221;. They might get hurt.</p>
<p>How the hell do you prove you can be responsible in this day and age? By looking down, fitting in, not making waves, and getting by? We need to be looking up and out, trying things, and reaching out for our limits. We need to think, plan, and move ourselves forward, not just follow along.</p>
<p>I don&#8217;t know about being in the Indian Ocean during the winter months down there, but to my mind Abby was taking a rite of passage. Also trying to get the youngest-solo-around-the-world record is neat, but to me somewhat irrelevant. She was going out and doing something that I&#8217;m sure has touched her in some significant ways, and none of the externally visible.</p>
<p>One of the best things I did around College was go one a four-month walk-about in Europe. By myself. Right after college, I got a backpack and my parents got me the tickets and a Eurail pass. I was off. I think that was my most significant rite of passage. Being by myself for months, in countries where I didn&#8217;t even speak the language, teaches you something about yourself.</p>
<p>So to the Bobert&#8217;s out there &#8211; wake up and fucking smell the coffee. We are not going to make a difference in the world by being sheep. Going on a rite of passage, by whatever you want to call it, should be praised for the effort, not belittled.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2010/06/12/rites-of-passage/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

