<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6653558328125881331</id><updated>2026-03-05T03:13:12.055-05:00</updated><category term="ubuntu"/><category term="linux"/><category term="video"/><category term="powerpc"/><category term="v4l2"/><category term="alsa"/><category term="mpeg"/><category term="podium"/><category term="bluecherry"/><category term="debug"/><category term="php"/><category term="macosx"/><category term="poker"/><category term="uds"/><category term="facebook"/><category term="feedburner"/><category term="flattr"/><category term="free-software"/><category term="open-source"/><category term="politics"/><category term="servergy"/><category term="zero-to-10k"/><category term="apache"/><category term="bass"/><category term="booct"/><category term="bootpd"/><category term="business"/><category term="cloud"/><category term="debian"/><category term="deploy"/><category term="dhcp"/><category term="hdcp"/><category term="internet"/><category term="lugradio"/><category term="mame"/><category term="privacy"/><category term="ps3"/><category term="rails"/><category term="rake"/><category term="ror"/><category term="security"/><category term="services"/><title type='text'>Ben Collins</title><subtitle type='html'>Technical ramblings of a Linux developer...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-1522713515461162115</id><published>2016-03-25T13:54:00.003-04:00</published><updated>2016-03-25T13:57:42.338-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="deploy"/><category scheme="http://www.blogger.com/atom/ns#" term="rails"/><category scheme="http://www.blogger.com/atom/ns#" term="rake"/><category scheme="http://www.blogger.com/atom/ns#" term="ror"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Easy Rake-based Deployment for Git-hosted Rails Apps</title><content type='html'>I searched a lot of places for an easy way to automate my deployments for &lt;a href=&quot;https://openstrokes.com&quot;&gt;OpenStrokes&lt;/a&gt;, a website I&#39;ve been working on. Some things were just too complex (capistrano) and some were way too simple (StackOverflow answers that didn&#39;t do everything, or didn&#39;t check for errors).&lt;br /&gt;
&lt;br /&gt;
So, as most people do, I wrote my own. Hopefully this short rake task can help you as well. This assumes that your application server has your app checked out as a clone of some git repo you push changes to and that you are running under passenger. When I want to deploy, I log in to my production server, &lt;code&gt;cd&lt;/code&gt; to my app repo, and then run:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;rake myapp:deploy&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
For just strictly view updates, it completes in 3 seconds or less. There are several things it does, in addition to checking for errors:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Checks to make sure the app&#39;s git checkout isn&#39;t dirty from any local edits.&lt;/li&gt;
&lt;li&gt;Fetches the remote branch and checks if there are any new commits, exits if not.&lt;/li&gt;
&lt;li&gt;Tags the current production code base before pulling the changes.&lt;/li&gt;
&lt;li&gt;Does a git pull with fast-forward only (to avoid unexpected merging).&lt;/li&gt;
&lt;li&gt;Checks if there are any new gems to install via bundle (checks for changes in Gemfile and Gemfile.lock).&lt;/li&gt;
&lt;li&gt;Checks if there are any database migrations that need to be done (checks for changes to db/schema.db db/migrations/*).&lt;/li&gt;
&lt;li&gt;Checks for possible changes to assets and precompiles if needed (checks Gemfile.lock and app/assets/*).&lt;/li&gt;
&lt;li&gt;Restarts passenger to pick up the changes.&lt;/li&gt;
&lt;li&gt;Does a HEAD request on / to make sure it gets an expected 200 showing the server is running without errors.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
The script can also take a few arguments:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;:branch&lt;/code&gt; Git branch, defaults to master&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:remote&lt;/code&gt; Git remote, defaults to origin&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:server_url&lt;/code&gt; URL for HEAD request to check server after completion&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Note, if the task encounters an error, you have to manually complete the deploy. You should not rerun the task.&lt;br /&gt;
&lt;br /&gt;
Any finally, here is the task itself. You can save this to &lt;code&gt;lib/tasks/myapp.rb&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;# We can&#39;t use Rake::Task because it can fail when things are mid
# upgrade

require &quot;net/http&quot;

def do_at_exit(start_time)
  puts &quot;Time: #{(Time.now - start_time).round(3)} secs&quot;
end

def start_timer
  start_time = Time.now
  at_exit { do_at_exit(start_time) }
end

namespace :myapp do
  desc &#39;Deployment automation&#39;
  task :deploy, [:branch, :remote, :server_url] do |t, args|
    start_timer

    # Arg supercedes env, which supercedes default
    branch = args[:branch] || ENV[&#39;DEPLOY_BRANCH&#39;] || &#39;master&#39;
    remote = args[:remote] || ENV[&#39;DEPLOY_REMOTE&#39;] || &#39;origin&#39;
    server_url = args[:server_url] || ENV[&#39;DEPLOY_SERVER_URL&#39;] || &#39;http://localhost/&#39;

    puts &quot;II: Starting deployment...&quot;

    # Check for dirty repo
    unless system(&quot;git diff --quiet&quot;)
      puts &quot;WW: Refusing to deploy on a dirty repo, exiting.&quot;
      exit 1
    end

    # Update from remote so we can check for what to do
    system(&quot;git fetch -n #{remote}&quot;)

    # See if there&#39;s anything new at all
    if system(&quot;git diff --quiet HEAD..#{remote}/#{branch} --&quot;)
      puts &quot;II: Nothing new, exiting&quot;
      exit
    end

    # Tag this revision...
    tag = &quot;prev-#{DateTime.now.strftime(&quot;%Y%m%dT%H%M%S&quot;)}&quot;
    system(&quot;git tag -f #{tag}&quot;)

    # Pull in the changes
    if ! system(&quot;git pull --ff-only #{remote} #{branch}&quot;)
      puts &quot;EE: Failed to fast-forward to #{branch}&quot;
      exit 1
    end

    # Base command to check for differences
    cmd = &quot;git diff --quiet #{tag}..HEAD&quot;

    if system(&quot;#{cmd} Gemfile Gemfile.lock&quot;)
      puts &quot;II: No updates to bundled gems&quot;
    else
      puts &quot;II: Running bundler...&quot;
      Bundler.with_clean_env do
        if ! system(&quot;bundle install&quot;)
          puts &quot;EE: Error running bundle install&quot;
          exit 1
        end
      end
    end

    if system(&quot;#{cmd} db/schema.rb db/migrate/&quot;)
      puts &quot;II: No db changes&quot;
    else
      puts &quot;II: Running db migrations...&quot;
      # We run this as a sub process to avoid errors
      if ! system(&quot;rake db:migrate&quot;)
        puts &quot;EE: Error running db migrations&quot;
        exit 1
      end
    end

    if system(&quot;#{cmd} Gemfile.lock app/assets/&quot;)
      puts &quot;II: No changes to assets&quot;
    else
      puts &quot;II: Running asset updates...&quot;
      if ! system(&quot;rake assets:precompile&quot;)
        puts &quot;EE: Error precompiling assets&quot;
        exit 1
      end
      system(&quot;rake assets:clean&quot;)
    end

    puts &quot;II: Restarting Passenger...&quot;
    FileUtils.touch(&quot;tmp/restart.txt&quot;)

    puts &quot;II: Checking HTTP response code...&quot;

    uri = URI.parse(server_url)
    res = nil

    Net::HTTP.start(uri.host, uri.port, :use_ssl =&gt; uri.scheme == &#39;https&#39;) do |http|
      req = Net::HTTP::Head.new(uri, {&#39;User-Agent&#39; =&gt; &#39;deploy/net-check&#39;})
      res = http.request req
    end

    if res.code != &quot;200&quot;
      puts &quot;EE: Server returned #{res.code}!!!&quot;
      exit 1
    else
      puts &quot;II: Everything appears to be ok&quot;
    end
  end
end&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Here&#39;s an example of the command output:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;$ rake myapp:deploy
II: Starting deployment...
remote: Counting objects: 15, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 8 (delta 6), reused 0 (delta 0)
Unpacking objects: 100% (8/8), done.
From /home/user/myapp
   efee45c..e5468c1  master     -&gt; origin/master
From /home/user/myapp
 * branch            master     -&gt; FETCH_HEAD
Updating efee45c..e5468c1
Fast-forward
 app/views/users/_display.html.erb     | 7 +++++--
 public/svg/badges/caretakers-club.svg | 1 -
 2 files changed, 5 insertions(+), 3 deletions(-)
 delete mode 100644 public/svg/badges/caretakers-club.svg
II: No updates to bundled gems
II: No db changes
II: No changes to assets
II: Restarting Passenger...
II: Checking HTTP response code...
II: Everything appears to be ok
Time: 3.031 secs&lt;/code&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/1522713515461162115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2016/03/easy-rake-based-deployment-for-git.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/1522713515461162115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/1522713515461162115'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2016/03/easy-rake-based-deployment-for-git.html' title='Easy Rake-based Deployment for Git-hosted Rails Apps'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Williamsburg, VA, USA</georss:featurename><georss:point>37.2707022 -76.7074571</georss:point><georss:box>37.169625200000006 -76.8688186 37.3717792 -76.5460956</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-8025284083853333954</id><published>2015-08-21T12:05:00.000-04:00</published><updated>2015-08-21T16:27:32.259-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="internet"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="podium"/><category scheme="http://www.blogger.com/atom/ns#" term="politics"/><category scheme="http://www.blogger.com/atom/ns#" term="privacy"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><title type='text'>Encryption is not for the bad guys</title><content type='html'>I&#39;ve been reading a lot of articles about presidential candidates and their stances on encryption for online privacy. It befuddles me how ridiculous their arguments are. You hear things like &quot;only evildoers use encryption&quot; or &quot;if you have nothing to hide, you shouldn&#39;t be against this.&quot;&lt;br /&gt;
&lt;br /&gt;
These are the same arguments that gave us our miranda rights, protection against illegal search and seizure, etc. Just because a citizen exercises their right to privacy does not mean they are hiding something, nor can it be taken as probable cause to remove their rights.&lt;br /&gt;
&lt;br /&gt;
Saying that law enforcement needs to remove encryption so they can find bad guys is like saying houses need to have open windows so they can see in to houses. It&#39;s like saying we should do away with home security systems because only people with illegal items use them.&lt;br /&gt;
&lt;br /&gt;
Any candidate that wants to keep me from protecting my privacy and security on the grounds of protecting me from some would-be terrorist is on a power trip and does not stand for the same constitution that I do.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/8025284083853333954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2015/08/encryption-is-not-for-bad-guys.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/8025284083853333954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/8025284083853333954'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2015/08/encryption-is-not-for-bad-guys.html' title='Encryption is not for the bad guys'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-5780820307175120222</id><published>2015-07-27T04:41:00.001-04:00</published><updated>2015-07-27T08:51:32.218-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="business"/><category scheme="http://www.blogger.com/atom/ns#" term="cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="services"/><title type='text'>How to Alienate Your Customers And Drive Your Online Service Into the Ground</title><content type='html'>So you&#39;ve spent months, maybe years, building an online service. You have lots of customers and people are starting to rely on your service for personal and/or business purposes. It has a great reputation and it&#39;s basically the only one of its kind. Now what?&lt;br /&gt;
&lt;br /&gt;
If you&#39;re like one particular service that I started using a couple of months ago, you ruin all of your good will and hard work inside of a week. I&#39;m not about to call out who this service is, but I will gladly tell you exactly how they went about this epic failure of standard practices. So let&#39;s get started.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Step One: Plan a maintenance window&lt;/h3&gt;&lt;br /&gt;
You&#39;ve got to keep these customers happy with new features, not to mention, you&#39;ve got to make room for the unexpected growth you&#39;ve seen.&lt;br /&gt;
&lt;br /&gt;
So let&#39;s do it all at once:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Lots of new customer facing features? Check&lt;/li&gt;
&lt;li&gt;Lots of backend features to handle unexpected growth? Check&lt;/li&gt;
&lt;li&gt;Move to new hardware? Check&lt;/li&gt;
&lt;li&gt;Database updates across billion-row tables? Check&lt;/li&gt;
&lt;li&gt;Test plan using mirrored copy of current data set? Ain&#39;t nobody got time for dat.&lt;/li&gt;
&lt;li&gt;Backout plan in case something goes wrong? Pshaw, we won&#39;t need one!&lt;/li&gt;
&lt;li&gt;Timetable for how long this operation will take? Eh, can&#39;t take too long, right?&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Here&#39;s the thing folks; never, and I mean never, run a maintenance window that involves multiple moving parts. If you can&#39;t perform these actions individually, then you&#39;ve messed up somewhere in building this thing out from the start. If your upgrades require moving to new hardware, then do it separate from the rest.&lt;br /&gt;
&lt;br /&gt;
Move to new hardware with the existing application and data. Don&#39;t mix features that aren&#39;t interdependent and make sure to test any database migrations on a full backup data set (or at least a good portion of it) before doing it on the live data set.&lt;br /&gt;
&lt;br /&gt;
Next, always have a way to go back. If you&#39;re upgrading a database, have some way to revert back to the original in an instant. Whether it&#39;s a backup, a snapshot, or whatever. Don&#39;t depend on being able to back out the change you&#39;ve made (i.e. running more SQL commands on the live data). You want a pristine place to draw from.&lt;br /&gt;
&lt;br /&gt;
But now that you&#39;ve screwed that up, let&#39;s continue on.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Step Two: Don&#39;t ever take the blame&lt;/h3&gt;&lt;br /&gt;
Now that you&#39;ve pushed this &quot;New and Improved&quot; version of your service in the most obscenely unprofessional way, you will definitely have something go wrong. It&#39;s not an &lt;i&gt;if&lt;/i&gt; or &lt;i&gt;when&lt;/i&gt;, it&#39;s just going to happen. First off, don&#39;t bother checking to make sure everything went well. Just go to bed and pat yourself on the back.&lt;br /&gt;
&lt;br /&gt;
When you wake up in the morning and see things aren&#39;t working as you expect, don&#39;t bother replying to the customers&#39; cries for help just yet. Let them know who&#39;s boss and who runs this joint. &lt;b&gt;You&lt;/b&gt;, that&#39;s right. After awhile, give a little update. Remember what your english teacher taught you; less is more. Something like this will do just fine:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;We&#39;re working hard to make our service better. Please bear with us while we continue to do so.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
Some companies forget that their customers are not stupid. We know when something&#39;s wrong and in cases like this, we know you screwed up somehow. Don&#39;t make it worse by glossing it over. Gives us the straight poop, so to speak. The main word here is &lt;b&gt;transparency&lt;/b&gt;. Most companies have this knee-jerk reaction of trying to make it look like &quot;oh, we just had some bad luck, we didn&#39;t do anything wrong.&quot;&lt;br /&gt;
&lt;br /&gt;
Believe me, even if you aren&#39;t transparent, the fact that you aren&#39;t is pretty transparent to us. Just like when my kids were 3 years old, I could tell when they were lying (&quot;But dad, I swear, it was the dog that ate all the cookies mommy just baked&quot;...as cookie crumbs fell from his face).&lt;br /&gt;
&lt;br /&gt;
Now that you&#39;re busy ignoring the flames on the customer front, let&#39;s take care of this problem.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Step Three: Take your time&lt;/h3&gt;&lt;br /&gt;
Who&#39;s in a hurry? Not this guy! Amiright? It&#39;s already broken, you have no capability to revert all of this crap, and you &lt;i&gt;have&lt;/i&gt; to get these new features to the masses else what was it all for? Just keep pushing forward like an angry crowd at a music festival.&lt;br /&gt;
&lt;br /&gt;
What you need to remember is that all of this work is for naught if your customers all leave. You have to be able to suck it up and back all of this out to get back to a stable base and come back at it later. The particular failure that I saw this past week may have been able to revert all of the mess they started. I don&#39;t know (they didn&#39;t talk much). I can only assume that a) they couldn&#39;t revert (bad planning) or b) they were so consumed with making this work, they decided to push forward.&lt;br /&gt;
&lt;br /&gt;
It&#39;s hard to say which scenario is worse, but if you do find yourself in a position where an upgrade has broken things and you are able to revert back to a known good state, don&#39;t let your ego get the best of you. Just &lt;b&gt;REVERT&lt;/b&gt;, go back to the drawing board, perform some postmortem, and start up again on a fresh day.&lt;br /&gt;
&lt;br /&gt;
Lastly, above all else, talk to your customers regularly through the process. Waiting 4-15 hours between updates is a super bad idea. Making these status updates vague and absolving yourself of any responsibility is mistake number two.&lt;br /&gt;
&lt;br /&gt;
Just remember, if you own a particularly new market, the only time a competitor will even think of jumping in is when you lose the trust of your customers. They will capitalize on your mistakes.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/5780820307175120222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2015/07/how-to-alienate-your-customers-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5780820307175120222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5780820307175120222'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2015/07/how-to-alienate-your-customers-and.html' title='How to Alienate Your Customers And Drive Your Online Service Into the Ground'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Williamsburg, VA, USA</georss:featurename><georss:point>37.2707022 -76.7074571</georss:point><georss:box>37.169625200000006 -76.8688186 37.3717792 -76.5460956</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-2544061075387703004</id><published>2013-03-07T15:18:00.001-05:00</published><updated>2013-03-08T11:14:50.240-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="free-software"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="open-source"/><category scheme="http://www.blogger.com/atom/ns#" term="powerpc"/><category scheme="http://www.blogger.com/atom/ns#" term="servergy"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Power Up</title><content type='html'>As a POWER architecture hardware vendor, we&#39;ve definitely run into quite a few wish-list items for software we want to have on our platform. Whether it&#39;s for customers or just to have a feature complete set of packages in everyday distributions, we want to see things build everywhere, and run just as well as the x86 counterparts.&lt;br /&gt;
&lt;br /&gt;
Starting soon, we are kicking off a PowerUp (my cool label) initiative in order to direct POWER developers toward software that needs a little love on our POWER platforms. Software targets range from the completely unsupported (e.g. Google&#39;s v8 Javascript engine, D Languages&#39;s phobos) to optimizing specifically for POWER (e.g. OpenJDK).&lt;br /&gt;
&lt;br /&gt;
To collect these initiatives together, we will be starting a new PowerUp portal. For now, we have begun a &lt;a href=&quot;https://github.com/PowerLinux&quot;&gt;GitHub Team&lt;/a&gt; where we have forked relevant repositories. Forums for discussion and participation will also follow. Feel free to clone and hack away. Email me if you have any questions (or wait until the forums and portal open).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NOTE:&lt;/b&gt; PowerUp is just my initial name. That may or may not change.&lt;br /&gt;
&lt;br /&gt;
I&#39;ll update this blog post when more information is available.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/2544061075387703004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2013/03/power-up.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/2544061075387703004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/2544061075387703004'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2013/03/power-up.html' title='Power Up'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-4189774119113918889</id><published>2013-03-06T12:47:00.002-05:00</published><updated>2013-03-06T14:10:31.242-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="powerpc"/><category scheme="http://www.blogger.com/atom/ns#" term="servergy"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Ubuntu Rolling Releases Vs. Hardware Companies</title><content type='html'>So I have to speak out on this whole issue. I work for &lt;a href=&quot;http://www.servergy.com/&quot;&gt;Servergy&lt;/a&gt;, and for almost two years I&#39;ve been working on Ubuntu&#39;s PowerPC port in order for our new hardware platform, the &lt;a href=&quot;http://www.servergy.com/portfolio/cts-1000/&quot;&gt;CTS-1000&lt;/a&gt;, to have an out-of-the-box solution for our customers. We&#39;ve been hedging on Ubuntu, since it was able to provide us a known quantity for release dates and an open community that we could participate in (especially being able to take advantage of my core-developer status).&lt;br /&gt;
&lt;br /&gt;
Now, after so much work, so much planning, we are worried about 13.04 never being properly released. This would leave us with no stable Linux distribution for our hardware, basically yanking the rug out from under all of our work. Having a stable release every two years also enlarges the support gap for our followup platforms. Now I realize most hardware vendors are x86-based, and their issues are likely limited to supporting peripherals, so this affects us more than most. The issue we face is supporting entirely new hardware platforms and SoCs with a completely new kernel (likely requiring lots of supporting patches). This is the type of thing that, historically, isn&#39;t allowed to be added to an LTS release.&lt;br /&gt;
&lt;br /&gt;
So I have to wonder, if Ubuntu does adopt this rolling release schedule, how viable is it for us? I would still be happy if Ubuntu had one release per year, with every other release becoming an LTS. However, the two year window is just entirely too large to depend on for quick moving hardware bring up and release.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/4189774119113918889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2013/03/ubuntu-rolling-releases-vs-hardware.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/4189774119113918889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/4189774119113918889'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2013/03/ubuntu-rolling-releases-vs-hardware.html' title='Ubuntu Rolling Releases Vs. Hardware Companies'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-1978956222324034085</id><published>2012-11-07T20:10:00.000-05:00</published><updated>2012-11-08T09:48:54.234-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="free-software"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="open-source"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Reflecting on 14 years of free software</title><content type='html'>14 years ago last month, I created my first PGP key to sign up to be a Debian developer. I recall what brought me to that place. I had been trying to improve my skill-set for my resume and wanted to learn to program.&lt;br /&gt;
&lt;br /&gt;
Considering Linux was free compared to development software on Windows (and it ran on my Pentium 90MHz CPU when BSD didn&#39;t), it was an easy choice. However, I had no idea what I was getting into.&lt;br /&gt;
&lt;br /&gt;
At the time, I was on a steep learning curve. This command line thing was nothing like the Apple //e BASIC prompt I was used to from my youth, and not even close to Mac/Windows. I was literally reinstalling my Linux OS 2-5 times a week because I would dig around into things that I had no business checking into. I tried several distributions of the time including RedHat, Slackware and Debian. I settled on Debian because it had the largest software repository, and I wanted no limitations to my journey into the realm of a software developer.&lt;br /&gt;
&lt;br /&gt;
Back then, configuring my network meant first configuring the serial port and modem and then PPP and related software, in addition to chat scripts (used to provide username/password). Luckily I worked as a web designer for a local ISP, so the *nix gurus there gave me plenty of help.&lt;br /&gt;
&lt;br /&gt;
As happens with free software, it isn&#39;t too long before you start finding &quot;bugs.&quot; These annoying little things that stand in the way of you and your Linux Adulthood. At first, you just kick it around, try to avoid irritating the little thing, but eventually, you find yourself on IRC or a bug tracking system trying to find help.&lt;br /&gt;
&lt;br /&gt;
I immersed myself into providing feedback to hackers and coders to test what could be wrong with my system. Surely, I thought, this was not just a problem I was having but sat amazed at how intuitive these programmers were and how steadfast in wanting to help me fix the issue. Their tireless efforts inspired me to return as much as I could.&lt;br /&gt;
&lt;br /&gt;
I decided to join this group of lively lads known as Debian Developers, and submitted my PGP key and new-maintainer request. I got a call from Ian Jackson, while at work, and verified information by FAXing a few identification-proving materials to him in London. This was an exhilarating experience. I had never talked to a Brit before, much less one that was in Britain (yes, I was a little sheltered and naive). Now I just needed a way to give back to this group of about 800 developers and it&#39;s thousands of users.&lt;br /&gt;
&lt;br /&gt;
As luck would have it, I got quite familiar with the inner workings of Debian&#39;s package system (DPKG/DEB) and how it worked on UltraSPARC computers. Working at NASA, I had access to all sorts of SPARC hardware, and, at the time, Debian&#39;s SPARC port was a fledgling of hope, without any guidance. I began automatic builds of Debian&#39;s vast software repository on my UltraSPARC II desktop system at work. I&#39;d come in in the morning, verify the builds, PGP sign them, and upload the lot to the repository. I was king of SPARC!&lt;br /&gt;
&lt;br /&gt;
Yes, this did get to my head. I was young, eager and worst of all, blinded by the slightest recognition. I thrived on acknowledgement and was empowered by the adulation of my peers. I dove into Debian work like Michael Phelps at a community pool; head first and with no purpose. I spent all of my spare time working on SPARC build failures, taking over things like glibc, PAM and OpenLDAP maintenance. I was hooked and my ego took me to the next logical step, running for Debian Project Leader. However, my arrogant and harsh online persona left me with few supporters, the first time around...and the second time around too.&lt;br /&gt;
&lt;br /&gt;
Two years later, wiser and tempered by humility, I ran for DPL again. This time with a clear vision of what I wanted to accomplish and a vague image of my future legacy. You can read the whole thing &lt;a href=&quot;http://www.debian.org/vote/1999/ben&quot;&gt;here&lt;/a&gt;. As I read it, after all these years, I&#39;m reminded of how little I knew of the real world, but I&#39;m aghast at my own confidence and ambitious attitude. Time has a way of dulling that drive. During this DPL election, I had a clear win, and so began my 15 minutes of fame.&lt;br /&gt;
&lt;br /&gt;
My new found leadership was longing for things to &quot;fix.&quot; I started with Debian&#39;s non-US archive. We wanted encryption to be mainline, but US export restrictions were a hassle. We took on a pro-bono lawyer to help us with the specifics and finally figured out how to abide by such restrictions without opening ourselves up to legal action. The cool part was that we had to email and snail-mail notifications for each and every upload of a package that fell under these restrictions. Each notification looked something &lt;a href=&quot;http://www.debian.org/legal/notificationfornewpackages&quot;&gt;like this&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
If you know anything about Debian, you know packages get uploaded by the dozens a day, if not more. We were basically flooding the bureau (with the remote hope that they would realize how ridiculous this all was). The original mailing was 2 reams of paper, double sided in a single package. This occurred about once a month. It was sheer insanity, but it got us one step closer to what we wanted...world domination!&lt;br /&gt;
&lt;br /&gt;
My next step was to build up our infrastructure. Debian is heavily reliant on donations -- equipment and money. We had a good chunk of money, but we never spent it. We had decent donated hardware and bandwidth, but the main donor at the time would whine and cry and make threats that left us wondering if he would yank it all away some day. Either way, we got new hardware with large disk space at my local ISP. Chucked down $5000 for a Sun RAID array with about 320Gigs of disk. Pretty damn expensive.&lt;br /&gt;
&lt;br /&gt;
How I loved this time of my life. I was well known and in the headlines of &lt;a href=&quot;http://linux.slashdot.org/story/01/03/29/1344259/new-debian-project-leader&quot;&gt;Slashdot&lt;/a&gt; and &lt;a href=&quot;http://linuxgazette.net/issue66/correa.html&quot;&gt;Linux Gazette&lt;/a&gt; on a regular basis. I remember being able to pick up a book or magazine or two at Barnes and Noble that had my name and/or picture in it. I would be lying if I said I didn&#39;t miss that.&lt;br /&gt;
&lt;br /&gt;
But deep down, I&#39;m a developer. It didn&#39;t take long before I had that yearning to &quot;do some real work&quot; and by that I mean staying up all night in front of a shell prompt trying to figure out why that oops disappears when I add in some debug printk&#39;s or reverse engineer the endianness of an OHCI-1394 packet on sparc64. Anyways, on to better things I went and many more adventures awaited me.&lt;br /&gt;
&lt;br /&gt;
As I moved through my career, I became more and more focused on Linux kernel work. From embedded to server, from network drivers to mpeg drivers, from MMUs to CPUs. I&#39;ve never regretted a single step of the journey. As I sit here now, working from home at my newest job, I reflect, not with a sense of accomplishment, but with a sense of humility, knowing that there were many greater, smarter and harder working folks that traversed those same years making it all happen and enabling the opportunities that I&#39;ve had.&lt;br /&gt;
&lt;br /&gt;
So for anyone who stumbles upon this lonely blog entry, wondering what this whole free software thing is; take a seat, pour a cup of tea, and relax for a few minutes. It&#39;s probably the last time you will have that brief illusion of a normal life, but you wont miss it one bit.&lt;br /&gt;
&lt;br /&gt;
Cheers</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/1978956222324034085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2012/11/reflecting-on-14-years-of-free-software.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/1978956222324034085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/1978956222324034085'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2012/11/reflecting-on-14-years-of-free-software.html' title='Reflecting on 14 years of free software'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-1978012797300303820</id><published>2012-11-04T10:49:00.000-05:00</published><updated>2012-11-04T11:35:57.309-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="powerpc"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="uds"/><title type='text'>Follow-up: Power Architecture Related Tracks Proposed for UDS-r</title><content type='html'>A few weeks ago I &lt;a href=&quot;http://ben-collins.blogspot.com/2012/09/power-architecture-related-tracks.html&quot;&gt;posted&lt;/a&gt; about some tracks at UDS concerning PowerPC. Here are links to the session results.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://summit.ubuntu.com/uds-r/meeting/21138/servercloud-r-virt-powerpc/&quot;&gt;Virtualization support for Power architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://summit.ubuntu.com/uds-r/meeting/21130/hardware-r-powerpc-devel/&quot;&gt;Power Architecture Kernel Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://summit.ubuntu.com/uds-r/meeting/21075/foundations-r-powerpc-bootloaders/&quot;&gt;PowerPC Bootloader Options&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
I need to clean up the items. The main take away is that the PowerPC kernels will be maintained separately from the mainline kernels, which means we will be getting support for some new architectures. It will probably be a couple of weeks before I get this setup, but expect it nonetheless.&lt;br /&gt;
&lt;br /&gt;
The other side is the boot loader. This is a tricky and complex implementation point. Details are in the session notes, but this may have implications based on relevant work being done on ARM as well.&lt;br /&gt;
&lt;br /&gt;
That&#39;s the extent of it at this point. Looking forward to great things with &lt;i&gt;Raring&lt;/i&gt;.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/1978012797300303820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2012/11/follow-up-power-architecture-related.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/1978012797300303820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/1978012797300303820'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2012/11/follow-up-power-architecture-related.html' title='Follow-up: Power Architecture Related Tracks Proposed for UDS-r'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-2890478672281921056</id><published>2012-11-03T11:13:00.000-04:00</published><updated>2012-11-03T11:18:54.303-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="powerpc"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="uds"/><title type='text'>Servergy Announces New PowerPC Developer Board</title><content type='html'>&lt;b&gt;DISCLAIMER:&lt;/b&gt; I work for Servergy, Inc.&lt;br /&gt;
&lt;br /&gt;
This week, at UDS, Servergy has announced that it will be designing and selling a PowerPC based developer board like no other currently on the market. Typical Power dev kits are using out-dated and feature-poor CPUs. As a follow up, they made &lt;a href=&quot;http://www.linux.com/news/enterprise/high-performance/147-high-performance/659106-servergy-announces-linux-on-power-enterprise-development-platform&quot;&gt;this formal announcement&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Servergy plans many needed features, including:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Multi-core processor&lt;/li&gt;
&lt;li&gt;Hardware virtualization (via Linux kernel KVM)&lt;/li&gt;
&lt;li&gt;Gigabit ethernet&lt;/li&gt;
&lt;li&gt;HDMI video output&lt;/li&gt;
&lt;li&gt;Network offloading engines&lt;/li&gt;
&lt;li&gt;SATA controller&lt;/li&gt;
&lt;li&gt;Audio output&lt;/li&gt;
&lt;li&gt;USB Ports&lt;/li&gt;
&lt;li&gt;SD Card slot&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Servergy has dubbed this board P-Cubed.&lt;br /&gt;
&lt;br /&gt;
They are planning a wide range of software support including firmware/boot-loader source code and pre-built images for creating bootable SD cards. Support for major Linux distributions will include Debian, Ubuntu, Fedora and openSUSE.&lt;br /&gt;
&lt;br /&gt;
The platform is geared toward making modern Power systems available to developers for a fraction of the cost of full fledged server systems (Servergy&#39;s primary market). While the board is aimed at increasing the ecosystem and community around Linux-on-Power, the pricing is sure to attract hobbyists and students as well.&lt;br /&gt;
&lt;br /&gt;
While Servergy did not say the exact price, they are aiming at a sub-$200 system. Keep an eye on &lt;a href=&quot;http://www.servergy.com/&quot;&gt;Servergy&#39;s website&lt;/a&gt; for news and pre-order form.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/2890478672281921056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2012/11/servergy-announces-new-powerpc.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/2890478672281921056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/2890478672281921056'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2012/11/servergy-announces-new-powerpc.html' title='Servergy Announces New PowerPC Developer Board'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-3261589691704265812</id><published>2012-10-25T10:00:00.000-04:00</published><updated>2012-10-25T10:00:04.849-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>How to Setup an Alternative Linux Distro Chroot Under Ubuntu - Part 2</title><content type='html'>&lt;b&gt;NOTE:&lt;/b&gt; This is part 2 of a 2 part series.&lt;br /&gt;
&lt;br /&gt;
In my last post, we setup a chroot environment for our RPM based distribution in &lt;code&gt;/srv/chroots/rhel6-ppc&lt;/code&gt;. Now we&#39;ll setup &lt;code&gt;schroot&lt;/code&gt; so we can access this environment as if it were the booted system, and using a union type scheme (an &lt;code&gt;schroot&lt;/code&gt; configuration setup) so that we will always have a pristine environment for builds and such.&lt;br /&gt;
&lt;br /&gt;
So let&#39;s look at &lt;code&gt;/etc/schroot/schroot.conf&lt;/code&gt; and add the following entry:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;[rhel6]
type=directory
union-type=overlayfs
description=RedHat Enterprise Linux 6
groups=adm,root
directory=/srv/chroots/rhel6-ppc
profile=default&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
This is the basic setup. The key here is that it uses &lt;code&gt;overlayfs&lt;/code&gt; for union mounting the original. This means that after you exit a newly created &lt;code&gt;schroot&lt;/code&gt; for this entry, it will be purged and the original chroot will not be changed.&lt;br /&gt;
&lt;br /&gt;
Also, the &lt;code&gt;profile=default&lt;/code&gt; means it will use configurations from &lt;code&gt;/etc/schroot/default/&lt;/code&gt;. Make sure to add yourself to the &lt;code&gt;adm&lt;/code&gt; group or run &lt;code&gt;schroot&lt;/code&gt; as root.&lt;br /&gt;
&lt;br /&gt;
In order to try it out, use the following command:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;schroot -c rhel6&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
From here, you can do whatever it is you like to do in your new environment!</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/3261589691704265812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2012/10/how-to-setup-alternative-linux-distro_25.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/3261589691704265812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/3261589691704265812'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2012/10/how-to-setup-alternative-linux-distro_25.html' title='How to Setup an Alternative Linux Distro Chroot Under Ubuntu - Part 2'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-6661843782112397412</id><published>2012-10-24T09:38:00.000-04:00</published><updated>2012-10-24T20:58:09.609-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>How to Setup an Alternative Linux Distro Chroot Under Ubuntu - Part 1</title><content type='html'>&lt;b&gt;NOTE:&lt;/b&gt; This is part 1 of a 2 part series.&lt;br /&gt;
&lt;br /&gt;
Developing a new server product requires me to test all sorts of things, including multiple distributions. As an Ubuntu developer, my main platform is, of course, Ubuntu.&lt;br /&gt;
&lt;br /&gt;
It&#39;s a PITA to run multiple distributions from one system (and not very productive doing it from multiple machines), so I decided to setup chroots for each one. My production system has three environments outside of the main Ubuntu install: RHEL5, RHEL6 and SLES11.&lt;br /&gt;
&lt;br /&gt;
Fortunately, Ubuntu has a nice tool called &lt;code&gt;schroot&lt;/code&gt;. I like it because it&#39;s based off the original tool called &lt;a href=&quot;http://anonscm.debian.org/bzr/da-tools/da-tools/dchroot-dsa-common/dchroot.c&quot;&gt;&lt;code&gt;dchroot&lt;/code&gt;&lt;/a&gt;, which I wrote back in 1999 (wow). It was mainly to allow people to use the UltraSPARC developer systems with more than one release of Debian without me having to setup multiple machines.&lt;br /&gt;
&lt;br /&gt;
Fast forward 13 years, and now we have &lt;code&gt;schroot&lt;/code&gt;. This tool has come a long way, and even includes support for snap shot of file systems so you can always start with a pristine environment. This is useful to me because I want to make sure when I build a package, only the required dependencies are installed, and I don&#39;t want to worry about screwing up the original environment. Not to mention, I can start more than one session and they wont bother each other.&lt;br /&gt;
&lt;br /&gt;
In addition to &lt;code&gt;schroot&lt;/code&gt;, we will need the &lt;code&gt;rinse&lt;/code&gt; package. For anyone familiar with &lt;code&gt;debootstrap&lt;/code&gt;, it&#39;s basically the same thing, but for RPM based systems. It will download and bootstrap all the required RPMs needed for a particular distro, in a manner suitable for a chroot environment.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;sudo apt-get install schroot rinse&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Now, if you look in &lt;code&gt;/etc/rinse/rinse.conf&lt;/code&gt;, you will see several already configured RPM distributions. If you are wanting to do one for RHEL, you will need to either use CentOS instead, or duplicate the matching CentOS entry and rename, being sure to change the mirror URL to match your location. For my RHEL distros, I have a local RPM repository, so I use this entry:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;[rhel-6]
mirror       = file:///srv/rhel6-ppc/RPMS/media/Packages&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
You will also need to copy the matching &lt;code&gt;.packages&lt;/code&gt; file in &lt;code&gt;/etc/rinse/&lt;/code&gt; naming it the same as your entry.&lt;br /&gt;
&lt;br /&gt;
Now decide where you want your chroot to be located. I&#39;ve decided to put mine in &lt;code&gt;/srv/chroots/rhel6-ppc&lt;/code&gt;. Create this directory, and then you can run the &lt;code&gt;rinse&lt;/code&gt; command as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;sudo rinse --arch ppc --directory /srv/chroots/rhel6-ppc --distribution rhel-6&lt;/code&gt;&lt;/pre&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NOTE:&lt;/b&gt; I have my &lt;code&gt;rinse&lt;/code&gt; script hacked a little to allow &lt;code&gt;ppc&lt;/code&gt; as an arch. You will probably use &lt;code&gt;i386&lt;/code&gt; or &lt;code&gt;amd64&lt;/code&gt;. Also, the &lt;code&gt;--distribution&lt;/code&gt; argument is the same as the entry name.&lt;br /&gt;
&lt;br /&gt;
In my next post, we&#39;ll move on to configuring &lt;code&gt;schroot&lt;/code&gt; with a &lt;code&gt;union&lt;/code&gt; type backing.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/6661843782112397412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2012/10/how-to-setup-alternative-linux-distro.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/6661843782112397412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/6661843782112397412'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2012/10/how-to-setup-alternative-linux-distro.html' title='How to Setup an Alternative Linux Distro Chroot Under Ubuntu - Part 1'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-8260368305347579380</id><published>2012-10-22T11:32:00.000-04:00</published><updated>2012-10-22T11:32:51.813-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="powerpc"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Where to Obtain PowerPC Dev Kits</title><content type='html'>I was asked this today on #ubuntu-kernel. It&#39;s a good question, and one which I hear often. Most people can go with old Mac hardware, but those things are kind of obsolete and largish for many people. Not to mention it doesn&#39;t do much justice for the modern CPUs you see today (multi-core, hardware virtualization, SATA, DDR2/3, etc.). Unfortunately, you aren&#39;t going to find many cheap modern Power kits like you would expect in the ARM world, but here some some quick links that I was able to put together. I would stick with Freescale, but IBM has some dev kits too.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.micetek.com/englishweb/company/news123/Customize%20service.htm&quot;&gt;Micetek&lt;/a&gt; - These are actually really nice&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.embeddedplanet.com/products/single-board-computers/freescale-powerpc&quot;&gt;Embedded Planet&lt;/a&gt; - Very low CPU speeds&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www-01.ibm.com/chips/techlib/techlib.nsf/products/PowerPC_750FX_Evaluation_Kit&quot;&gt;IBM 750FX&lt;/a&gt; - 64-bit but unsure about pricing&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.lynuxworks.com/board-support/emerson.php&quot;&gt;Emerson&lt;/a&gt; - Unsure of pricing, but very broad list of CPUs for IBM and Freescale&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
If you know of more, please comment and I&#39;ll add them to this post.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/8260368305347579380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2012/10/where-to-obtain-powerpc-dev-kits.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/8260368305347579380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/8260368305347579380'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2012/10/where-to-obtain-powerpc-dev-kits.html' title='Where to Obtain PowerPC Dev Kits'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-5092551920321387231</id><published>2012-10-19T21:45:00.000-04:00</published><updated>2012-10-20T01:00:35.154-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Can Canonical Make Skunkwork Work?</title><content type='html'>This post is in regards to Mark&#39;s recent &lt;a href=&quot;http://www.markshuttleworth.com/archives/1200&quot;&gt;announcement&lt;/a&gt; that Ubuntu 13.04 will be using a skunkworks approach to some of its more wow-factor features.&lt;br /&gt;
&lt;br /&gt;
I know some people are going to cry out from their basement, screaming &quot;community, community, community!&quot; Let&#39;s face it though, one thing Linux is missing is being able to release something and people say &quot;holy shitballs, batman!&quot;&lt;br /&gt;
&lt;br /&gt;
Anyway, I totally applaud Mark and Canonical for this decision. If it all goes well, here&#39;s my vote for naming 13.10 the &lt;b&gt;Snazzy Skunk&lt;/b&gt;.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/5092551920321387231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2012/10/can-canonical-make-skunkwork-work.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5092551920321387231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5092551920321387231'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2012/10/can-canonical-make-skunkwork-work.html' title='Can Canonical Make Skunkwork Work?'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total><georss:featurename>Williamsburg, VA</georss:featurename><georss:point>37.279747072426126 -76.744297742843628</georss:point><georss:box>37.278957572426123 -76.745531742843625 37.280536572426129 -76.743063742843631</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-7563358647410551541</id><published>2012-10-02T14:13:00.000-04:00</published><updated>2012-10-02T14:13:04.012-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="podium"/><category scheme="http://www.blogger.com/atom/ns#" term="politics"/><title type='text'>The GOP/DEM Circlejerk</title><content type='html'>This is slightly off from my normal blog topics, but it is election season. As I stare off with an uncontrolled dazed look on my face, pondering which candidate to vote for, a deep depression has set in.&lt;br /&gt;
&lt;br /&gt;
I could choose Obama. At least I&#39;ll know what I&#39;m getting, even though I disagree with his wealth distribution policies and bailing out too-big-to-fail companies that are sending us in a spiral of debt.&lt;br /&gt;
&lt;br /&gt;
I could choose Romney, since I&#39;m Republican, but I honestly don&#39;t like him as a person, and I feel he will serve money hungry people more than a strict capitalist agenda.&lt;br /&gt;
&lt;br /&gt;
I could vote Libertarian, but, let&#39;s be honest, that will just take votes away from one of the other candidates. At this point, a vote for anything other than Romney is like voting for Obama.&lt;br /&gt;
&lt;br /&gt;
My depression begins when I consider that the two primary political parties are only interested in preserving themselves. Considering that Democratic and Republican platforms have morphed every election campaign into what they think will get them voted into power, or attempt to separate themselves from one another, I can never be sure that the party I choose on my beliefs really fits who I&#39;m voting for.&lt;br /&gt;
&lt;br /&gt;
Every election it&#39;s the same thing: &quot;Your problems are because of &amp;lt;insert opposite party&amp;gt;.&quot; Neither party will say &quot;our platform allowed these problems to happen&quot; or &quot;the bills we voted caused a downturn in the economy, we&#39;ll revert that and try something else.&quot;&lt;br /&gt;
&lt;br /&gt;
Let&#39;s consider this. Say you work at a company. You and another co-worker handle a particular product or service together. You work well together, bouncing ideas and patting each other on the back. One day, your manager quits, and since your company promotes from with-in, you know that you or your co-worker are going to replace him. You&#39;ll get more money, access to the executive bathroom, more vacation days, etc.&lt;br /&gt;
&lt;br /&gt;
So during the manager&#39;s last couple weeks, you work your ass off. You make sure that the higher ups responsible for the decision see your hard work. You are basically campaigning for this new position. Your co-worker, being prudent, does the same thing.&lt;br /&gt;
&lt;br /&gt;
Now, instead of working closely together, you are both trying to make yourself look more important and more manager-like. During these few weeks, arguments ensue, and instead of trying to build a great product or service, you are positioning, spreading distrust against your co-worker and generally being unproductive, all for the power of that promotion.&lt;br /&gt;
&lt;br /&gt;
In the end, your co-worker wins out. You blame it on him bringing the top-shelf bottle of liquor to the Christmas party and taking the boss out to golf with some no-name NBA player that his cousin is towel-boy for. It&#39;s definitely not because he&#39;s better.&lt;br /&gt;
&lt;br /&gt;
Now you stew in your hatred toward him as he becomes YOUR boss. At first, you continue to do your job, until one day he tells you that he thinks the product would be better if you changed one aspect. This doesn&#39;t sit well with you. &quot;Who does he think he is?&quot; It wasn&#39;t your idea, so it must be crap. You toss all logic aside and just hate his suggestion, regardless of the fact that it will save tons of money and is generally better at solving a certain problem than your solution would have been.&lt;br /&gt;
&lt;br /&gt;
You do as you&#39;re told, but you don&#39;t have it in you to put in 100% effort. You don&#39;t necessarily sabotage the product, but the solution he asked you to implement is definitely half-assed and you don&#39;t care.&lt;br /&gt;
&lt;br /&gt;
Now the product goes into production, and sure enough, the implementation falls flat, the one that you worked on. However, it was his idea, so you don&#39;t care. When the firestorm comes down from above, you blame the problem on your back-stabbing co-worker that took yer job. &quot;He wanted it implemented this way, but I wanted to do it different.&quot; Sure enough, he&#39;s canned and now you have the manager job.&lt;br /&gt;
&lt;br /&gt;
You got what you wanted. The power courses through your veins like an espresso hopped up on Redbull. You are the man. Now, two people work for you, one of whom was there when you did the poor implementation, and overheard you complain about your manager at the water cooler. He knows what you did, and has a distaste for how you got your new job. He thinks you are incompetent and undeserving: He is just like you used to be.&lt;br /&gt;
&lt;br /&gt;
You get my meaning here? How can we expect Congress or the President to do anything useful if their entire intent is to make their affiliate party look good, not to mention, self-serve their lust for power? How is the President supposed to get anything done when his counterparts in Congress are trying to set him up for failure so they have bullet points on the next presidential election?&lt;br /&gt;
&lt;br /&gt;
I wish I had some sort of proposal to fix this, but alas, I&#39;m not a political scientist, so all I can do is bring the bad news.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/7563358647410551541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2012/10/the-gopdem-circlejerk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/7563358647410551541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/7563358647410551541'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2012/10/the-gopdem-circlejerk.html' title='The GOP/DEM Circlejerk'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-8644065137741267986</id><published>2012-09-28T16:35:00.001-04:00</published><updated>2012-10-21T12:48:17.880-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="powerpc"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="uds"/><title type='text'>Power Architecture Related Tracks Proposed for UDS-r</title><content type='html'>On my ramp-up toward UDS-r, I&#39;ve created some blueprints and pinged some related folks to get them into the proper tracks.&lt;br /&gt;
&lt;br /&gt;
I&#39;m hoping to get a lot of interest and discussion around there, so here they are:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://blueprints.launchpad.net/ubuntu/+spec/servercloud-r-virt-powerpc&quot;&gt;Virtualization support for Power architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blueprints.launchpad.net/ubuntu/+spec/hardware-r-powerpc-devel&quot;&gt;Power Architecture Kernel Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blueprints.launchpad.net/ubuntu/+spec/foundations-r-powerpc-bootloaders&quot;&gt;PowerPC Bootloader Options&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
So this covers a wide range of topics. The most in-depth one is the Virtualization blueprint. As of yet, I&#39;ve not seen a lot of broad support for non-x86 in OpenStack and related software. While it works (I&#39;ve set it up), it just doesn&#39;t do a lot to make me happy happy.&lt;br /&gt;
&lt;br /&gt;
The boot loaders blueprint is basically an RFC. The idea of Power architecture on a non-embedded system not having OpenFirmware is about on par with Dell selling an Intel system without a BIOS. The Power systems do have u-Boot (Das Boot), but that&#39;s not as robust as it needs to be. I&#39;m thinking something like grub2 being compiled agains the u-Boot API that u-Boot can load modularly or perhaps something like the kexec based loader that the ps3 used.&lt;br /&gt;
&lt;br /&gt;
Finally, the kernel development is a host discussion that needs to be hammered out with the Canonical Kernel Team so we can all be happy and not step on the primary architectures, but still being able to spread some support for newer Power equipment.&lt;br /&gt;
&lt;br /&gt;
Cheers and see you in Denmark!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;EDIT:&lt;/b&gt; Updated link for boot loaders blueprint</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/8644065137741267986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2012/09/power-architecture-related-tracks.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/8644065137741267986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/8644065137741267986'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2012/09/power-architecture-related-tracks.html' title='Power Architecture Related Tracks Proposed for UDS-r'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-5092658908692372121</id><published>2012-09-26T15:27:00.002-04:00</published><updated>2012-09-26T15:27:38.019-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="powerpc"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>The Rack Revolution</title><content type='html'>As I sit here in my cozy home on my comfy couch, I am bewildered and amazed at just how far things have come in the last decade.&lt;br /&gt;
&lt;br /&gt;
Let&#39;s take a quick inventory of my immediate surroundings:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;font color=&quot;green&quot;&gt;&amp;#10004;&lt;/font&gt; Laptop&lt;/li&gt;
&lt;li&gt;&lt;font color=&quot;green&quot;&gt;&amp;#10004;&lt;/font&gt; WiFi&lt;/li&gt;
&lt;li&gt;&lt;font color=&quot;green&quot;&gt;&amp;#10004;&lt;/font&gt; Smart Phone&lt;/li&gt;
&lt;li&gt;&lt;font color=&quot;green&quot;&gt;&amp;#10004;&lt;/font&gt; HD TV&lt;/li&gt;
&lt;li&gt;&lt;font color=&quot;green&quot;&gt;&amp;#10004;&lt;/font&gt; High Speed Internet&lt;/li&gt;
&lt;li&gt;&lt;font color=&quot;red&quot;&gt;&amp;#10006;&lt;/font&gt; Server Farm&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Hmm...that last one&#39;s a bit different from the old days. I used to have a nice collection of loudly humming, room-warming servers in my garage. As a telecommuter, I needed it. My blog was running on it, my email was running on it and my firewall was running on it.&lt;br /&gt;
&lt;br /&gt;
What happened? Well, we all know the answer to that question: things consolidated into the &quot;Cloud.&quot; Instead of under-the-table boxes running our local services, we now have providers doing the heavy (literally) lifting for us.&lt;br /&gt;
&lt;br /&gt;
So what do they run on? Practically the same loudly humming room-warmers that we used to keep under our desks. However, in recent years, the move is being made to lower the operating costs of these rack farms into quiet, low-powered, self-cooling, maintainable animals.&lt;br /&gt;
&lt;br /&gt;
As most places have tried to just tone down, or spread thin, some have been making the move to efficiency. Enter the reverse revolution of the CPU to something more applicable to today&#39;s computing needs. Instead of powering with high-wattage x86 chips, many are dipping their toes into the shallow end of the alternative-processor kiddy-pool.&lt;br /&gt;
&lt;br /&gt;
And with that I introduce an amazing NEW and WILD CPU: PowerPC!&lt;br /&gt;
&lt;br /&gt;
Oh, you&#39;ve heard of it? It&#39;s legacy and old-hat, you say? I must be thinking of a different PowerPC CPU then. The company I&#39;ve been gainfully employed with for the past 1.5 years seems to be using something quite different than your grandmother&#39;s Power chip. Not quite the behemoth of the IBM Power7 iron (in size nor noise), but not the wussy of your old PowerMac neither.&lt;br /&gt;
&lt;br /&gt;
We&#39;re talking multiway SoCs with full floating-point running at a fraction of the wattage of just about anything else on the market. Add with it full hardware virtualization (via KVM), and you begin to see where in the market this is headed.&lt;br /&gt;
&lt;br /&gt;
We&#39;ve already been engaging multiple Linux and software vendors to give a complete and first rate experience on this new class of hardware. You&#39;ll have multiple choices when it comes to supporting and administrating, whether it&#39;s one system or a room full of racks filled.&lt;br /&gt;
&lt;br /&gt;
So here&#39;s my not-so-humble way of introducing you to &lt;a href=&quot;http://www.servergy.com/&quot;&gt;Servergy, Inc.&lt;/a&gt;. They&#39;ve been around for 3 years, but expect to be hearing a lot more about us in the coming months. If you&#39;re going to be at a Linux or Cloud/Server related event in the near future, chances are you will run into one of us. I&#39;ll actually be at Ubuntu&#39;s &lt;a href=&quot;http://uds.ubuntu.com/&quot;&gt;UDS-r&lt;/a&gt; in Copenhagen at the end of October. I&#39;m hoping to have a live demonstration while I&#39;m there.&lt;br /&gt;
&lt;br /&gt;
Cheers&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NOTE:&lt;/b&gt; In this article I am speaking solely on my behalf. None of what I&#39;ve said can be taken as a statement by the company I work for: Servergy, Inc.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/5092658908692372121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2012/09/the-rack-revolution.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5092658908692372121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5092658908692372121'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2012/09/the-rack-revolution.html' title='The Rack Revolution'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-4268051087413264016</id><published>2012-07-17T19:41:00.004-04:00</published><updated>2012-07-17T19:41:51.664-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="podium"/><category scheme="http://www.blogger.com/atom/ns#" term="powerpc"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>The Community Conundrum: PowerPC</title><content type='html'>In my recent work, I&#39;ve been dealing a lot with PowerPC. As an old Mac user, I&#39;ve had a soft spot for PowerPC for ages. Like most people, until recently, I&#39;ve considered PowerPC an aging and dying architecture. Even with IBM selling PowerLinux systems, the lack of cheap hardware for developers has left a hole not easily filled, no matter how man old PowerMacs you buy in eBay.&lt;br /&gt;
&lt;br /&gt;
However, there are a lot of PowerPC platforms that do fill this gap left by PowerMac. Some are even 32-bit platforms that can compete in today&#39;s markets.&lt;br /&gt;
&lt;br /&gt;
So why have you never heard of them? Why can&#39;t you download Fedora or Ubuntu to install on your PowerPC of today? Several reason:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Distributions don&#39;t really support it.&lt;br /&gt;
&lt;li&gt;The &quot;community&quot; behind it is driven at the kernel and low-level, not at the distribution level (see last bullet item).&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
This circle of support appears to be the hold up. Convincing even community supported architectures like Ubuntu and Fedora to support these different kernel flavors is met with archaic skepticism, and is usually concluded with &quot;there is no community&quot; to which I usually respond &quot;because there is no support.&quot;&lt;br /&gt;
&lt;br /&gt;
Something has to give here. Linux and Open Source isn&#39;t where we want the chicken-and-egg scenario to happen. You can&#39;t walk up to a Linux distro with a community and say &quot;Here we are, let&#39;s do this&quot; in much the same way as you can&#39;t go to a community and say &quot;Come over here with us. We don&#39;t support you yet, but we&#39;d like you to prove that you&#39;re worth it.&quot;&lt;br /&gt;
&lt;br /&gt;
So where to begin...</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/4268051087413264016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2012/07/community-conundrum-powerpc.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/4268051087413264016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/4268051087413264016'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2012/07/community-conundrum-powerpc.html' title='The Community Conundrum: PowerPC'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-5066387818583877865</id><published>2011-12-09T22:31:00.001-05:00</published><updated>2011-12-09T23:37:10.970-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="powerpc"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Reviving the Ubuntu PowerPC community effort</title><content type='html'>Just is just a heads up to some people who may be interested. I am trying to breath some life back into the Ubuntu PowerPC community. My interest extends from my current job and focus on the server market. That&#39;s not to say that I don&#39;t think PowerPC should have a desktop life (though most people would only like it for the legacy ppc Mac systems out there), just that my personal focus won&#39;t cover much of that beyond perhaps some CD creation and fixing fails-to-build-from-source problems.&lt;br /&gt;
&lt;br /&gt;
So, come one, come all. I&#39;ve sent a quick note out to the &lt;a href=&quot;https://launchpad.net/~ubuntu-powerpc&quot;&gt;Ubuntu PowerPC LaunchPad Team&lt;/a&gt;. There&#39;s also a mailing list now.&lt;br /&gt;
&lt;br /&gt;
I&#39;ll be posting more of a road-map soonish.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/5066387818583877865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2011/12/reviving-ubuntu-powerpc-community.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5066387818583877865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5066387818583877865'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2011/12/reviving-ubuntu-powerpc-community.html' title='Reviving the Ubuntu PowerPC community effort'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total><georss:featurename>Williamsburg, VA</georss:featurename><georss:point>37.283126745294112 -76.739125509411778</georss:point><georss:box>11.823014245294111 -117.16881300941178 62.743239245294113 -36.309438009411778</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-2959967576658962732</id><published>2011-06-30T12:44:00.000-04:00</published><updated>2011-06-30T12:44:39.879-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debug"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Setting up minicom and ckermit for u-boot serial file transfers</title><content type='html'>Took awhile to get this simple bit of legacy working. I&#39;m working over a USB serial console to a dev board and needed to update some parts of flash but I don&#39;t have working ethernet yet. U-Boot allows for kermit binary file transfers, but default ckermit settings don&#39;t appear to work well. So to speed others along, here&#39;s what I did. Quite simply, add this to (or create) ~/.kermrc:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set rec pack 1000
set send pack 1000
set window 5&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Otherwise, ckermit expects some modem line signals and CONNECT before it starts the transfer. Now you can use minicom&#39;s send command.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/2959967576658962732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2011/06/setting-up-minicom-and-ckermit-for-u.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/2959967576658962732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/2959967576658962732'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2011/06/setting-up-minicom-and-ckermit-for-u.html' title='Setting up minicom and ckermit for u-boot serial file transfers'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-4682920159307734716</id><published>2011-06-29T11:28:00.000-04:00</published><updated>2011-06-29T11:28:58.873-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="alsa"/><category scheme="http://www.blogger.com/atom/ns#" term="bluecherry"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="mpeg"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="v4l2"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Bluecherry is hiring an Ubuntu developer!</title><content type='html'>My old employer, Bluecherry, is looking to hire an Ubuntu developer with the following experience:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Extensive knowledge of the Video4Linux2 and ALSA sound API&lt;br /&gt;
&lt;li&gt;Prior experience in Linux based software design / implementation&lt;br /&gt;
&lt;li&gt;Prior knowledge of Ubuntu, including building / maintaining Debian packages&lt;br /&gt;
&lt;li&gt;Prior experience with gstreamer and RTSP&lt;br /&gt;
&lt;li&gt;Prior experience with MYSQL.&lt;br /&gt;
&lt;li&gt;Prior experience with Matroska file containers and video encoding&lt;br /&gt;
&lt;li&gt;Excellent verbal and written communication skills&lt;br /&gt;
&lt;li&gt;Strong knowledge of C&lt;br /&gt;
&lt;li&gt;Previous work with and understanding of working with video / audio formatting / codecs including MPEG4 and H.264&lt;br /&gt;
&lt;li&gt;Internet and operating system security fundamentals&lt;br /&gt;
&lt;li&gt;Sharp analytical abilities and proven design skills&lt;br /&gt;
&lt;li&gt;Strong sense of ownership, urgency, and drive&lt;br /&gt;
&lt;li&gt;Demonstrated ability to achieve goals in a highly innovative and fast paced environment&lt;br /&gt;
&lt;/ul&gt;
Yes it&#39;s a long list, but you are replacing me, so get used to high expectations, but a highly rewarding job. You don&#39;t need to know all of this, but you should have a good enough foundation that you can embrace the current codebase and not shy away from a steep learning curve.

Visit &lt;a href=&quot;http://www.bluecherrydvr.com/2011/06/we-are-hiring-linux-software-engineer/&quot;&gt;Bluecherry&#39;s job posting&lt;/a&gt; for more information.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/4682920159307734716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2011/06/bluecherry-is-hiring-ubuntu-developer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/4682920159307734716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/4682920159307734716'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2011/06/bluecherry-is-hiring-ubuntu-developer.html' title='Bluecherry is hiring an Ubuntu developer!'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-2943592060076490187</id><published>2011-06-08T13:21:00.002-04:00</published><updated>2011-06-08T19:44:56.135-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Stripping an Ubuntu system to just the basics...</title><content type='html'>&lt;font color=&quot;red&quot;&gt;WARNING:&lt;/font&gt; I am not responsible for you trashing your system. Use this guide with care. No attempt was made to ensure your intelligence level (nor mine).&lt;br /&gt;
&lt;br /&gt;
&lt;font color=&quot;green&quot;&gt;UPDATE:&lt;/font&gt; Please read the comments about using apt-mark instead of the man-handler of a script that I have in the main post. Should lessen the chance of hosing your system.&lt;br /&gt;
&lt;br /&gt;
While working on a cross-build system inside an Ubuntu 10.10 virtual machine instance, I decided I didn&#39;t want all the fluff of the desktop version. However, instead of just going through the entire package list on the machine, I came up with a quick way to have APT automatically handle it for me.&lt;br /&gt;
&lt;br /&gt;
Ubuntu is nice in that it has meta-packages for the different levels of their system. The top-level meta-packages -- ubuntu-minimal, ubuntu-standard and ubuntu-desktop -- let APT know which package group to install (ubuntu-standard is generally used for server installs). APT also has the nice functionality of automatically being able to remove packages which were only installed because they were depended on by some other package. For example, if you install ffmpeg, you get a ton of libraries with it. If you then remove ffmpeg, you can run &quot;apt-get autoremove&quot; to also remove the libraries that are no longer needed because they were only installed to satisfy ffmpeg&#39;s dependencies.&lt;br /&gt;
&lt;br /&gt;
So now, how to abuse this functionality. First, we find out how APT tracks these implicit/explicit package states (packages we installed directly vs. packages that were only installed to satisfy dependencies). We find /var/lib/apt/extended_states. The format is similar to /var/lib/dpkg/status and has stanzas in the form of:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Package: foo
Architecture: i386
Auto-Installed: 1&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
So here&#39;s a quick script that will mark all of your currently installed packages as auto-installed:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;#!/bin/bash

arch=$(dpkg --print-architecture)
dpkg --get-selections | awk &#39;{print $1}&#39; | \
(while read pkg; do
        echo &quot;Package: $pkg&quot;
        echo &quot;Architecture: $arch&quot;
        echo &quot;Auto-Installed: 1&quot;
        echo
done)&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Here&#39;s how we use it (ai-all.sh is the shell script from above):&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;sudo cp /var/lib/apt/extended_states /var/lib/apt/extended_states.bak
bash ai-all.sh | sudo tee /var/lib/apt/extended_states &gt; /dev/null 2&gt;&amp;1&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Now, we have to tell APT that we want to keep some things. Personally, I went with the ubuntu-standard as a base line and added a few necessities for good measure. You could go with ubuntu-minimal, and also add packages here that you specifically want to keep (otherwise the commands later will remove them). Note, I specifically added grub-pc because a boot-loader is not a required package (think EC2, diskless installs, etc.). Be sure to add your boot-loader to this command if you require it.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;sudo apt-get install ubuntu-standard grub-pc vim build-essential git&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
This most likely wont do much, since these packages are already installed. However, APT will mark them as &quot;Auto-Installed: 0&quot; so that it knows we explicitly installed them. Next, time to ditch a few hundred megs:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;sudo apt-get --purge autoremove&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
This will take some time and finally spew out a huge list of things to remove. You may want to give it a quick once-over to make sure you aren&#39;t tossing something important. If you see a package you need, ^C out and run the apt-get install command again with the new package(s).&lt;br /&gt;
&lt;br /&gt;
So now you should be clean and clear. Note that the above --purge option is meant to completely remove things like configuration files that were installed with the packages you are removing. If that scares you, then remove that option.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/2943592060076490187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2011/06/stripping-ubuntu-system-to-just-basics.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/2943592060076490187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/2943592060076490187'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2011/06/stripping-ubuntu-system-to-just-basics.html' title='Stripping an Ubuntu system to just the basics...'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-5027570619945505096</id><published>2010-11-12T12:41:00.002-05:00</published><updated>2010-11-12T14:28:02.807-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bluecherry"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="mpeg"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="v4l2"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Bluecherry Releases beta1 of their new DVR product</title><content type='html'>After much delay, and much anticipation, we at Bluecherry have finally released our first public beta of version 2 of our DVR product.&lt;br /&gt;
&lt;br /&gt;
For extensive details, please see &lt;a href=&quot;http://www.bluecherrydvr.com/2010/11/12/version-2-public-beta-released/&quot;&gt;the announcement&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I&#39;m honored to have worked on this project. While I&#39;ve been dealing with the driver (solo6x10) and backend server for over a year, the final parts of the product have fallen into place in just the last 6 months. It was an overwhelming effort by just 4 developers on a project that spanned from hardware to UI.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/5027570619945505096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2010/11/bluecherry-releases-beta1-of-their-new.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5027570619945505096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5027570619945505096'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2010/11/bluecherry-releases-beta1-of-their-new.html' title='Bluecherry Releases beta1 of their new DVR product'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-5397511630973645771</id><published>2010-09-14T12:33:00.000-04:00</published><updated>2010-09-14T12:33:54.239-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hdcp"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>HDCP Master Key</title><content type='html'>This is a mirror of the HDCP Master Key. As reported on Slashdot, this key is used to make source and sink keys, essentially making HDCP useless as a DRM mechanism. Sounds to me like it will make all HDCP sources prone to attack (e.g. BlueRay players, satellite and cable boxes, etc). Enjoy, and hopefully this is real.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;HDCP MASTER KEY (MIRROR THIS TEXT!)

This is a forty times forty element matrix of fifty-six bit
hexadecimal numbers.

To generate a source key, take a forty-bit number that (in
binary) consists of twenty ones and twenty zeroes; this is
the source KSV.  Add together those twenty rows of the matrix
that correspond to the ones in the KSV (with the lowest bit
in the KSV corresponding to the first row), taking all elements
modulo two to the power of fifty-six; this is the source
private key.

To generate a sink key, do the same, but with the transposed
matrix.


6692d179032205 b4116a96425a7f ecc2ef51af1740 959d3b6d07bce4 fa9f2af29814d9
82592e77a204a8 146a6970e3c4a1 f43a81dc36eff7 568b44f60c79f5 bb606d7fe87dd6
1b91b9b73c68f9 f31c6aeef81de6 9a9cc14469a037 a480bc978970a6 997f729d0a1a39
b3b9accda43860 f9d45a5bf64a1d 180a1013ba5023 42b73df2d33112 851f2c4d21b05e
2901308bbd685c 9fde452d3328f5 4cc518f97414a8 8fca1f7e2a0a14 dc8bdbb12e2378
672f11cedf36c5 f45a2a00da1c1d 5a3e82c124129a 084a707eadd972 cb45c81b64808d
07ebd2779e3e71 9663e2beeee6e5 25078568d83de8 28027d5c0c4e65 ec3f0fc32c7e63
1d6b501ae0f003 f5a8fcecb28092 854349337aa99e 9c669367e08bf1 d9c23474e09f70

3c901d46bada9a 40981ffcfa376f a4b686ca8fb039 63f2ce16b91863 1bade89cc52ca2
4552921af8efd2 fe8ac96a02a6f9 9248b8894b23bd 17535dbff93d56 94bdc32a095df2
cd247c6d30286e d2212f9d8ce80a dc55bdc2a6962c bcabf9b5fcbe6f c2cfc78f5fdafa
80e32223b9feab f1fa23f5b0bf0d ab6bf4b5b698ae d960315753d36f 424701e5a944ed
10f61245ebe788 f57a17fc53a314 00e22e88911d9e 76575e18c7956e c1ef4eee022e38
f5459f177591d9 08748f861098ef 287d2c63bd809e e6a28a6f5d000c 7ae5964a663c1b
0f15f7167f56c6 d6c05b2bbe8800 544a49be026410 d9f3f08602517f 74878dc02827f7
d72ef3ea24b7c8 717c7afc0b55a5 0be2a582516d08 202ded173a5428 9b71e35e45943f

9e7cd2c8789c99 1b590a91f1cffd 903dca7c36d298 52ad58ddcc1861 56dd3acba0d9c5
c76254c1be9ed1 06ecb6ae8ff373 cfcc1afcbc80a4 30eba7ac19308c d6e20ae760c986
c0d1e59db1075f 8933d5d8284b92 9280d9a3faa716 8386984f92bfd6 be56cd7c4bfa59
16593d2aa598a6 d62534326a40ee 0c1f1919936667 acbaf0eefdd395 36dbfdbf9e1439
0bd7c7e683d280 54759e16cfd9ea cac9029104bd51 436d1dca1371d3 ca2f808654cdb2
7d6923e47f97b5 70e256b741910c 7dd466ed5fff2e 26bec4a28e8cc4 5754ea7219d4eb
75270aa4d3cc8d e0ae1d1897b7f4 4fe5663e8cb342 05a80e4a1a950d 66b4eb6ed4c99e
3d7e9d469c6165 81677af04a2e15 ada4be60bc348d dfdfbbad739248 98ad5986f3ca1f

971d02ada31b46 2adab96f7b15da 9855f01b9b7b94 6cef0f65663fbf eb328e8a3c6c5d
e29f0f0b1ef2bf e4a30b29047d31 52250e7ae3a4ac fe3efc3b8c2df1 8c997d15d6078b
49da8b4611ff9f b1e061bc9be995 31fd68c4ad6dc6 fd8974f0c506dd 90421c1cd2b26c
53eec84c91ed17 5159ba3711173b 25e318ddceea6a 98a14125755955 2bb97fd341cea2
3f8404769a0a8e bce5c7a45fb5d4 9608307b43f785 2a98e5856afe75 b4dbead4815cac
d1118af62c964a 3142667a5b0d14 6c6f90933acd3d 6b14a0052e2be4 1b1811fda0f554
12300aa7f10405 1919ca0bff56ea d3e2f3aad5250c 4aeeea5101d2ec 377fc499c07057
6cb1a90cdb7b11 3c839d47a4b814 25c5ac14b5ec28 4ef18646d5b9c2 95a98cc51ebd3b

310e98028e24de 092ffc76b79f44 0740a1ca2d4737 b9f38966257c99 a75afc7454abe4
a6dd815be8ccbf ec2cac2df0c675 41f7636aa4080f 30e87b712520fd d5dfdc6d3266ac
ee28f5479f836f 0bf8ee2112173f 43ae802fa8d52d 4e0dffd36c1eac 3cbda974bb7585
fb60a4700470e3 d9f6b6083ef13d 4a5840f02d0130 6c20ef5e35e2bf dad2f85c745b5b
61c5ddc65d3fc9 7f6ec395d4ae22 2b8906fb3996e2 e4110f59eb92ac 1cb212b44128bb
545afda80a4fd1 b1ffea547eab6b fac3d9166afce8 3fe35fe17586f2 9d082667026a4c
17ffaf1cb50145 24f27b316acfff b6bb758ec4ad60 995e8726359ef7 c44952cb424035
5ec53461dbd248 40a1586f04aee7 49ea3fa4474e52 c13e8f52c51562 30a1a70162cfb8

ccbada27b91c33 33661064d05759 3388bb6315b036 0380a6b43851fb 0228dadb44ad3d
b732565bc37841 993c0d383cfaae 0bea49476758ac accc69dbfcde8b f416ab0474f022
2b7dbcc3002502 20dc4e67289e50 0068424fde9515 64806d59eb0c18 9cf08fb2abc362
8d0ee78a6cace9 b6781bd504d105 af65fab8ee6252 64a8f8dd8e2d14 cb9d3354e06b5b
53082840d3c011 8e080bedab3c4c e30d722a455843 24955a20397c17 82495c1c5114e8
656e71c31d813d 1f0a6d291823a1 6327f9534353fa b89529c2f034fb 70e9b12205c7b3
a06c87969407a2 520bfa2fe80f90 da1efc3d345c65 313936ec023811 a8cc87128be2fa
4cd0e8645ee141 be7975519e2b63 9543d23113c2a8 3d87b0da033f22 df0464c704e9d4

7e1a30947e867e 014ae464b37935 5c4babf689fa4e c4aec0cb01cc35 328c0e4a0230e4
fdacb93b419594 26deefc8a553e6 6e75a2d790cb55 2c4554518f7396 94b77184cb145d
95f883f620a8bb edff42866a2783 7b4ee6304b711d ed56e077a4b9fb c4e60e687ff6c3
0cbf144b8f64d5 023dd10a35eddd beaa3323e999c6 d2e016b31c38c4 8d2917a888f799
18c3abd28e736b 8d38e69b4966cc 624db0143dd2e7 5e2fa510f632b7 ee6e64d45b139a
a1c6d852e74be7 429843b9e6bb7e db9ab07c8dc267 9efa092299f071 dcca9e0e61e960
94406fac95f1d8 d19122f3f88782 1b11a662e9c83f d161fd6fb7f032 89f7d984da9d48
a3583fea45fe58 885e2c4839e254 47e87235f713b1 f4732e05b71aee ae026d063f4349

0a481d2db197af abfce1039d4ac0 4a6b89d2d1aeac 0842eb7178cc53 b82ce2835f1937
3b4002ca21d6b6 e64a78a78abb27 8bd6142ad04526 e035dacb23624a 4cf80110135771
7a52fafc92745e efa28a290ea782 735617cd8b0221 b095e9f4b286a5 021e9ba0727645
3e58e9ec16ed1c d7732bb5ba99a6 374bde43fa89a9 cb83e5ef2e4d04 1da4f73566d134
e01da194625c25 d62018764d7473 64643721313d24 5a01badd970941 481c9578781414
a4d3faa92d1fef bd4b247d37862a 5332a7ca3c2ca6 393ee51989d5a9 01a6e564040d37
390c472ee27892 f0217fe009e9b4 5d3f04da415b35 612ecd5b8e4eac 757e27d2169f2d
92853b737b7526 9ac837c86476df e956c2b45ebd5e d4fa6da687ac39 60f4343669ddd3

64b8d778e72e78 f86cd55efe92b8 a9adbf2e728440 966c8282cee1f9 ea195972b883f4
46ac03b37e7f24 744df253954ae5 22e3f9a0adbc58 6add7c7d8a2961 ba963e4912d17c
2840ac28fcfad9 8d8ec3ad6dfc32 a3c788dd094910 e65ebb61dabb5f b50e906b28c881
003b11eb83e6a9 a2fac0595b138d 3d55a28f915330 c343bd1849a085 54c786629d2b42
1d465cb22ccbc2 d8f87fd52aded1 ecb34f46656b71 b4cbe50f839f2c 2df6a553cc3698
40b2dd25f26d51 492f3c5c6fa566 f80dd453864548 d4be786d8735d9 e364511a0fb62d
3c2df64d6d1c9f f640e4ef4186be 41773025d6ff57 6147e75d7df3f5 49809548639d16
01067ef6034247 4e7c1b20deb154 3f8172a6b98ea0 b0691d4b575801 136a88607a3e5b

0180058ca8742e 972bc2ca1c4cb6 7b05bbc57e63df 5f01049697eaa2 c537f3121384dc
edb1fa0b34f132 689b1374cafe25 802d7bca5c6674 f8e01e75e9eb3d a59c2d9126d85d
f10f603f8c4fd9 d5a358aa84b2d5 f8320f2a3bd078 019bcf0dabb5c3 43dd8dd5e173f0
45169f788a0233 d62daee0e9839c 7d673cf77a53d2 008730faf272d0 3c08080778ae8d
920e40fad87d7e bf118230ffb194 692baf40b951b4 83549affe4e382 68e172f86a40b3
aa5e2c1b74636d c3d7809ac68aae 33c344fd9bcc33 6e6057dc7d71f0 bceef547db57fa
ec91cc1056e4b5 8153f00c8ef4f8 a2ca943ab03915 079a070121782d d592dcec23dd3f
44ba5fe5078279 e6f8ed790ffa59 e7877e834b4391 d1ca3db32bccd7 b382e35bff1ba1

96cb3b9ef8671e 70342fff9216a5 d635530148dcc6 bf40909f72ba4b e3697761ac11f1
f2a77a5f435c5c a57729bb9aaf37 14f78a30f9bf6f 1a7fe7f0271b01 0b224bc83ef07b
0d409ce2157473 adefa793287d48 a6b13ce8e00a7f 74d735fd54a00b e2dc16285d1b5a
8b3d55371ce703 bb3909153586b6 03c8c622aa53e9 89ee3322e069aa 325ce41fbd0175
2cd1326421cd83 3c47eed2daadda 87c2177de0c63f 39b496d688c971 179359349f5e0e
3cfa9ea9345dbc 47b1948cbfe45f 2a13b18cf3a0d1 00b03fc13e6cde 656ef26757f5d1
7c584630c27fb2 02f2e14ca8a67e fcfec527978154 4ec09910379625 e90fc0a898a5b7
5beb0f3ee5d03a 2383832708cfb7 6905747e27453e 1714e418f0f0a3 53bcdef0965e8d

2c9b5813b90c3c bb9a20c8ebb80e 045e04f3d57918 6fe6ffb0718731 201760abf11c27
e289872adda7e1 233e7ef2b2c83b 423b4c0ba711db 334b15e5bd4c01 034d1e41bff0e8
58a436cce28ea3 e6ef4d94b49962 ec8728db63716b 8c8ffc95c21b06 0beb50502d9acb
c1eb732268091a e45e0c30cfed36 31d58c384bc3e4 8a26ae8b7a5c60 83991e11e8a21e
e4f193c0183e07 691fbbf9ccb4c2 4e5214fae905d8 2052c969e9699d f6cea5a6157de3
fd84477a6bad8e 04f37758724bc3 a491d0fd8f084e 19933cec5f51f0 93794e76e1f29b
ebd1f1c057b30c 7ec220fa6d31d9 867d711c9a7674 a700cf5f177e37 cf3fae5da3ddc4
4e8030990c7917 553a5ce2abaaa4 c2296c42e2dcea 19ae4f9b654581 66d5fff1163703

bb5085e0e7d595 12605df8a35f9f 35c6d572c28ea5 5099437e5f5595 fb45cdaa8872f1
6e012db5feedc3 1ba0e5515be76f b793b687fbf1dd 9d2c01063d4ca1 c2e6fde5bc3a1c
c17b11e1a33418 436fcacef170c5 e4c3cbc3066618 2063665d2a1b84 a8b5b4f2e58850
ce74bcbc892d71 b312d96806cdc8 82d9c95678fff1 5d8a0120206c3c 621f13db39bd6e
4a5db4815f181d 8dae6e596cebd5 1b8b1681dd4918 1dbcbd79f8e5ff 135064b0968c4e
d81e91507c1e96 ce08e072644e54 e1648d32befadc d0b7f41fca118d 7b9291b680b18a
10ab9a2fb4f9a0 9f462d2370dd03 bb453f4b48b2ea b3c3e6d63c2559 be4aa3d8e8f129
90af78e01d25c9 2e06a8715063da 988dbf792de669 17eabe5b043c41 b1f700946e4ad2

e329ae8a66581e 4a5bda0ff2a313 79577080aaac8c 0dd34f4f929df3 0f5e87f82b9b1f
1ead67333c42d5 ebac8fb8797375 dc26965e625abb 953ce074d8c84c 2edd54991b2104
a45196065c2bca 98f56533f328bf 8560a1a390e921 37d2506aff3d7b f88576a47d273e
562b7c9592ffdc 2d0ff0ba59787b 4dd89971bd39a6 7a4a778d69a4cc 58bad18bf5fc74
5cac8d53dcc72c ba7e9c7a2b57d7 ff544acc98f08f 1d22f503712081 cf868290f04def
ba48ab7c61a8ab 3ca439f055f713 2401e3a43338e0 b7c4b19cf1edc8 37db6b0d8991a7
10ede95c9c35e6 a8f021fc870126 6e5909a7f3217b 33772e647266ff a5c8fd0c786e0f
04f0bb34025c67 cc33c6a49bf101 45c563f33f807d 6e95e9c2b5e349 3a0e55d42d44b7

611138d0e928dd 24d7958e8e6149 c66faf12b50f45 eaa5eb19337961 e68c81cb35d5d3
ed1fe1f1b8d443 612ca593de8afe 6c15ee22ffb8b0 c27152ca5a1e77 0133b8165e3ed1
608c9c1a6ca4aa df5272bd1b6425 6f7efc5b2bbfa0 b49b5f0c67ee30 f4ef0e7ed820cb
4b14d077b672ce 3a60f2386c0218 9e8d6e5f6caddf a53ccecbae8684 d3183beeba0cef
4cd21e6afc08e8 5db41995d15a93 6afe570246af77 d0994bc305b27f 2de99a0885c909
1629a47aaa161f 0f6b6d45ff8967 cfc4e83f5b469c cc22586cab3936 29e6b3f94d122e
83f00e419d8980 bb282b6f3efdef 30d80463fb25e0 1846f8f1b935d3 3c03ed5243b7b4
cb6b0e6e4c770f 8bc2856390163a 73a332bc2ebabd b3aeafedbc8c08 74ff7726398cd4

0071d5d3644b97 45dd1ae0369e9a c1f518cd384512 b933bc25cb3402 9377c50007d647
e609eb009c9245 7d99fff828ba6e 9f0adcca6cd0a9 5c5cf8366b699f f00f513ad9e29d
7c2ecfdb5afe40 1f131691f0677b 30e1df0cce8710 f3c52df030e941 b2bb6b650cf2d7
012a5a2d11f1b4 4699b78e898918 977b2e06972b36 674e2619e6be97 93007948f99eee
af2b5b80b81bb3 417446ac93bc16 14fb20c6ab0e24 3ffc77d1672771 36580afea2edec
48942ed95911c5 fa312a7aca8f83 992e36a47ef1db 3937ff39b1a9b5 2af79ef5c48c64
6c88d58111a0b7 b6fa6dc5f7c8dc b1acc64f2b083d 332baac65b4feb e58dae530ad4af
0fbdb072d0ba36 e2607b065b6fe4 f803ae22cb2a6c 9b639dd91166cc f5e430b9cece8c

687c1dc2ac5898 b429122b168f1c 4248f91ae51605 1c24d7f1578ba6 1dec5a6c003598
e3c04b01a812a7 2df7909352cece de31efaffdd0d4 e4a7f11873ec87 4768f7b8d77583
23b6f7bae4521f 8fbf571e568d5a 577ad8b71f3721 718b68ac1ada36 e10689cc83ea91
43f73798b295f7 6e2b078c8d68e5 613c3bb265ca36 d25d07032b8c80 843fe3783b5959
e918f7789f0d33 afac1cb1534684 0fb3c6c442a94b 167f58645b56c2 76132472470129
590ae9be533d39 75adfeba5e6230 30dea290d933d7 08cc4d30a4af39 09bc69be193a2f
f7f8ff9f03af3b 3ad1a453e9dde4 a534709b6e15c7 c6ce7d4efd42e9 5e947977595b68
ca674d0c7541e9 97f178a43b6057 137a6483c7653a 49f1eec3082cc7 70824eb5bebf04

cf95519563f7c7 cef140efdaa431 4f8ddc5fb70009 27710736a485cd 41b05dfead9e7a
dcbf8e83a3a89a 23e46b5a421a08 84f0fb922099a4 120b226eedd549 cf4706582b36f4
e3b718cabb9c11 03db1daab9520a 3a29a8c65c45f6 0219e82dbeb36b b351c498a8dda8
0ba2a5607f3bf6 0b95be14721f63 62d3b4d2b1fc16 f46a95de23a55e b70c2f136e83eb
a0b215f5837e73 d76368870bd5bc 0372cf15e7ff03 c992d958598014 1fb03e9712f2c4
a73b9107699fb2 239ad1d706b5f3 3623dab66fefc1 8b5e04ac40e7ed 77eaadd7c4d35c
b3ba11dde839a2 621e7ab334235d 29f2ed9f1990d9 e0d731952272a4 d31f58d8cfad64
57690ff74579fe e78fb0fe43c6cf b127e3c5c7da88 1765c8883fcd01 dc0028f618172d

07d8f79c0e5b79 bdff41e18ee3b3 0990bd1c710888 b0ef52eb6da5bd b790ff7419e17d
22ab4221d42b9a 35bec4ded01a53 6a2f35fd63b686 db66f3c21b9291 165a5fd321d034
f2ea034bd3a6b6 4d47388e2680b7 018dd250cfd53b 53babaed27080a 73c54d98e4a365
6a77f2e71cfab6 4f9539f7e67a64 c35beaa6ab5528 1698a8ee44d10d 01e623ff7096e8
96a68072d59c56 6baba4b0d232ee 725a1f9e0fbeb1 97728ef73b9a8e 16ecfe23a3bdb6
f035aac743b427 202c094281f68b 1c8be9e39e4591 0959fad0920ae6 15a97f475dc632
a3fc9e9363688a 89cea147f0339b d1ffe6e68570d2 329a0b16c32fa2 cbd5818383dd8f
c26f57abe7c8cd 4d680e55e8a77d feefbd47b284a3 41bc9077e7df69 1c32ea11a0df3c

2ea8501eab0c69 63dff30ea51c9f 8de69a045d957b 4036f90d8e90b7 5886f2e5059e5d
7341e707011eca 8d6006677dabf1 2c6f2040741941 5058a43d3958d2 29eee2b01178b8
eb9e382e6ea2e5 62e44ce8f6b19e a5b4444f78d77d c12755f1de34c7 8fd001eb8d0d91
8a3ece83c541b5 659f736aca9076 1c1864cc5b30f1 1b9f901459a142 f5571fc19f94a3
39e842e17176ca ed2a1659a97f8e 625e74d131b3da bdbdfeaa0366bd 95ebf86c33a687
4a09faea206cd1 29f59174377238 908e6c956350cb 686a225a26548c a45140d1ed5b76
75e9ea2087732c 14dd568be007bf 3668e3791bdd4b 56f9aa39df5785 e7b37c964271c9
c5211e837c726e 374513cd4cd34f a5c71ff1a4195e 4e234c5adc13b4 75093fc66c8faf

2ec02dd6ea2715 d8676bb21e7f0b b4c22ceadbd907 9ccaf78857ea36 a28da605bbf2d8
723651fb07c86a 07039b49d2fa32 40dbb6dc2ef93d da48f7e9d5eb92 45bc6190b3a9e4
fc84b55352b994 25f44b36a3fb83 d09a8f4ab7d78e 0829201a523b21 966e0098395656
5984c4e317d930 581dd2ab677c99 a92a70424c5aae 4ea1dbaca67de1 e45918a0d6d560
1e5c75efdd907f 99a6e56cbb015f 04fd11c8ae4d05 83a72f3e967bb6 2ddf23b892d1e5
d648bbe9e5f8d3 d4b128d667ff6a 781dcd435b03f4 1a1cb99fc298e1 69d80c51941a26
5263476c788bb7 db0b584b59ec8d d95a4e9a6a95c5 5263b0eb0cc8d4 98e62e5116ab09
97564c79d4b733 39d708c3284fb2 d2cd596efe674a a9e3b1f33b4473 70b30aa67c0c2c

3532c9874c8ce5 680a796f9db4b3 64e5825663090f eb0a67604f3f9b 7c4716c88afa20
cecf4b6b1467f8 342600406fe556 200290eea56903 36562b6cff764c b02d3847d68f8f
a26c2ab20fe063 5de36be096db8d ac5998b94e3c17 4c8808ebb9bf53 4bbf0a436470da
d3875253f7b0a9 a99369bfede348 8c3391fd3a5f95 5005f88c89d735 acd8196d21d41b
5ba2ce34f48817 da3e7f4332994f 8cfe88c8ae18af e4df8b64d16e61 b0f200ab8229f9
5a15b4ad681a60 350a1bb85a5708 f5731809fe17da 9da29858778783 e496533ffbda6c
a590c76b953dff edbf61ba227191 f7fd713fd0b4bf 4a5e6df9905845 42ed273f1fee88
e56d34cbb2866d cc76209f9773ec 4c21238f991ec6 7adff263cb22b1 4fb41d94f97f42

f26d90e0b24a1a 37fe90421cee92 5cd69e29e95550 bec2bff0431bc0 6acc812fa97ad4
4f19e44dd33a0e d9280b1ae70cff 6575a036db7f1e 7bf2ed31bcef8e 45dfb49b8dc51d
e1fd10fb1b59b8 092da05f342c0a 01fa56a0375319 c1f5ad03dc627a cb1f2c96f11444
5d67a093467a43 a832f56266f0bf 7a464d7fab7c48 42561af703a045 c1c9b270211af3
edcaf802cfd336 6f9ba5cc39c3dc 585554fa4224ca 4a7216b8d2dd3e 16c2d8b31e6fa9
e9ae301e1bfa98 ac8389842b368a 158c5060209885 c01a2c3f5b7bca d20124920faa1c
a2217820d1fa40 803272c88d1844 c2554237c9ecc8 d25f509a6db1de 325148c1726f18
398c66b1339048 8c8c43dd7f2c26 24cf4ec93ee498 54618829620375 eb494db615a50f

69e1fb949b4215 3e02e353426513 bf6ea2adefdded fbbb781d40e52c d6ebec825d94a0
3f84de44b6fd50 0b466ea0458290 3a77f7804e0c62 b0ce750e2b2078 69f346f188a43a
24ef26f7c284a3 544ea716d5498b 3e1f23b1154dcf 6d5c580dbec7f0 120302c7a16ee0
bae4ae638ee502 60cd112182bd84 dbc443744789a8 7faefcebed3a2c 579c0f77cfa536
0d920b050cb068 fb2fc616ee5eb8 3b7082e645d419 40df3b620a8474 df360190d74ec7
28f0d33396ee1e 3c007bfb335325 ac5c5327fcfbe9 9daecd75584e11 770aecaa7200f5
ef955be6081878 8c906f9fbbd9a8 f16d11b5a2980c f837a8f49c0378 33efbbae308e71
0bda652822a309 8990e49a4320ce 8bf60c5517e853 0b0f2a3d47d09b b07d28e7903ac9

5009b61262ab9c 0161bb90668bf4 a314e46c502058 447250d9698fed c3e4ceaa255d41
5ba4045c2fdba8 17b0720f52e736 0eb0036d8439d0 9e15116b8245e2 3dad88738ceab0
260986d154e9a9 56cd13e67e508e 9895906f7a2bc2 4970647a63ed02 5e192810f2e040
02e7f4cad9b4cb 18d5850dc181a2 05204ea9653f18 2d3b188124823d f9b34ca3d2c93b
2e5ba515010f68 7308114d65f874 acbf4d6286131d 46681d439816a8 15fc07b05c47fe
f0ef6a332c3132 c4630529dd2021 a743a1e9423e63 b12af7fe3d806e 0cb7d03c2afdae
7abe068af28323 fe75b567a2c0c7 069313cf6c1f44 a39aeec0ddcc87 747c3bd20c1471
876af6b8558b0f eb0b357c5d8f97 c64ac9dcac22f2 856e4341b42b50 663b16ec5eb01f

0d31dd990e70cc f7203530ab3d19 6d42eb5412ec69 dc9e4fcaf97880 e0dcd2d94a10fc
b5f39a9e831217 4b084adf9c02c4 d3cabf53a97846 4c331980146846 3c9f7c840833be
b0cb542c3108b1 9dcf7401e6f79a c1f27ed5dd4e0e 509cf69e83c56c 15ca00d43e1758
5948602f5bf14d 1d129ae6b9f4ee 2b58f973ae2956 6a6c792feb0c13 62474058c00758
caab48f22b2e6a ed88328618842d 0418ebd349eb34 846eda10087342 e8b6c21b95cbf9
cc90523ed0cb59 4c9374718e79ca 60c8fa29dd489a 41f2190a03e88f 8ac12bebb17c5e
3195835960d662 2317a3d2d90ead 5f5aeb6d34f4e1 7a39957a01179f 3f88d79fc83f9c
edb1049a771b1e 30a85067c640ed 06cac8047923de 59bdda0f1b1b9d 7a014eaecf61b7

292e8b0f865638 4dc1de3d7f5dda d9b1b7557b4db8 54813ab90c75a3 9b35f03246f1e4
20f760465bc347 0da41ba5991181 a6a49de8fdf505 60b1ea116f81a6 ce2716aa9919a7
e3fce68f208dd3 05d5b9594f643d ded74364c812db 16b6e7e4269696 ad975ff975a727
4d6e503b6ae9a9 9ce664850ed1da a714650763250b 944b7b251c3e6b 0d37d4e4854c4c
06c7e1c3d4b917 5602bc69558908 92f5ddd9a20bbd 84d12a16b5963d d1426dd7f44f09
06cca7d8cd71ba 710072c1b4ea7a ebabe1e8242f72 69960c6c0d5bf3 2084edb90ada1d
235ed7d8a9fe39 3b133ed8a3fec1 132c4509579af1 203ca5447787a5 ca938128fcd756
ca569d31b6f05d edec4129270543 ff17078079c2aa f642caa8568a3b 8d1f6c3bf9b5e7

c947c61701ce12 1a3808b18cb73c d1d7543be23892 9917eefd8b4b7d 0eabef30f24b08
b72c10d49c60a3 c01344f22cc2a2 b97c57f2a37b00 f82a2f9338e520 5a8b9c9ce0dc1d
8a4d7e7260e257 62046c5551c0e9 19811c1011cf28 dc158db4a957c2 b516e794206aa4
4a9e535622d8df bea44b252b2ab8 7284568528acd5 239ab1d64c7025 bad538907922d6
57fb163fcb9eca ad97c1507e480a 78e8cfc81ca935 14eee2413bbe9d e349073d92ab5c
8ed191d530d9af f3a72b6e194e41 d26925b22eb6c5 f709c6088bb419 8527923aa6f4f3
1345fcb8916f88 9f82d7a298174b b0a41e5d16d9d4 28c7eab4098fe2 f34abb591392d4
a5084515586118 71f3fcfcee19ff 180d1b40c23b7c c18c22be085cc3 edeb86d04f3c78

c56c61899b8011 2cf78b1bcd5b77 99247be60f0cdb 4c8a9aa7a58409 e2bf0ad4cfe9b6
f79b501f91d364 5fd2c40e48e881 c650973fb8e681 7c8ae6d3aca02c 7a01c329e3bf17
3b126f2cda1e76 229d405bbc41d3 5e028a9f388566 97e13e1dfee5e2 aa02da00a5271a
be2abd92296fc2 e380153ffa1a5d dc3c184ca2fd9a 8dd7381eccc7e0 55a7fef2252572
76da25ac98ef00 3e12a21d43ef92 28c5f1d9e71a96 b7cd9a47a9c9d8 aaf77a03539742
9f8854a9983a9c 2bcde940d64350 6986616ba3f75f e80cc522c68b65 f03f78b91d9f6c
fdf9170e4ac9f1 c84c3819797def 03bbfca0340880 2893d145bda408 df07456e5388bf
cbadcc8ac22dc9 365807ab820d70 29da8be4c0de87 756ee3a7865bfe 46439df366b70b

ab960b51e728db e2e3c346921e4e 74c6317baa49fb b3efd421fb40bd 979d2df24bca93
98d5bd5de71195 bc030746a50c59 02cf2a4b1b9812 467af79145cfaa 0ed643c7b530e4
181ef7d406026a f6ea606e325377 a302d06af1f7cc c7658f6ae6defa bbe5314d959e1f
bb5757386c8799 8759670183f618 58e0cc3816f883 c113183a0578ee ce5456e86ee96b
c04285b8c56bb1 74e5fb66d586e6 9d8eea215e70c8 f4a00feb7bc2f6 369c2bf470063d
5b267be08f0594 c26fb2440b1ac6 8610ef5a140769 bb3d5b50a536d4 df6c30bc09f971
74e572ca84d171 2deb91e812d860 b17ac9ae5be211 c95a0e3f542c78 46397245b13a99
1806ab9ceb6646 1b4161b0ec2edc fc536e2a24abf8 9f7207bf519f1b abf95b0d0d3cae

d9e17ba1bf7678 6526f524fad677 ec243ad271d0cb 9b1c06cf737605 0a36697c74beaa
fa0f0056a6bd7e 9f2d03db497a93 027d76e6e8692a 72ceb29c5913a7 55eb297dae3330
eb676e7345fb39 7021192efd5b47 462906905e7511 e005f52fd8da5e 1288c01960d735
3460b18eafd2d8 faa9b1c3caf426 5035e585d9fd2d 85636dff1d4e42 600c4b7f664267
02b21e6a8c7a03 79ce25c264e2f4 035a7f32c227ea bf8f711445a7d7 d0b5e3b336f71e
c454a416321483 bdc1a7a9d20dea e1ee4744e83143 5b6969f2864529 17a6b42d6346ab
ff0fb6edf2265a ba75b0991f6dfb 6638c1d7243ff8 e7806af6600486 dfe3bc58f31717
b0c4adc2717922 c11abff0b4a290 43598e076f60be 2ef17ad2f77605 3a41a09d974da6

ee787846e7ff26 ce05d869fecf18 fde916d95f9357 4c1b4dd723b90d b1f024400d61a2
f51dfebc71b770 461e7f725d9637 2b1587ff40035e a2cafbcd0c6b17 2e9efaf6986045
80e339a823ea56 febfaa02609bb2 a33955624e1602 a137b84639ef0c 6e2ecf420a6d6b
69f13acbea8f97 b4d36c41e3a867 1352aee4798c08 e3ec254ddf35cb ab600d90f13919
d00cc1d401fd2c 1c629e621756d2 090f8d6e0895fa 701bd1b0a355ce a53c7c91b15eb4
dd8579d4dd92e4 03d1c960c63d55 215a8fbc09cc85 59c1e6069b6dd1 a0428bfb223cca
46d131153e9982 c5dab0c9ffb93d 682db866d6503c a481c48384a087 a417c564567258
2ec7b9722b5c5f 2d491f9cf79086 30cd268b1088d0 f02e69b1441963 d9841b5339d18f

a26deb7b957527 337f3bd67d3c51 e6839a4d5fe4cf 1619c18889be68 d971f0f57d1016
56213ebf152a2d 9c0e0394832c92 9e6fc90ca28ba5 9c5151dfbb8394 f49fe4cf2a3f7a
97f4db054b2b34 2a4c21abf6406f eb941a80bee3f8 7615468e80e77a 0f935ebe8e8842
959f2b3ba1f50c d6bc8b614e39de 3c43d13746983a 7956e617131247 56de3547cf1010
c16d5d1fce2bcc 3e73e5ef9fd691 1211c1a27803ad f1c9644aac4ba2 8d67134e3be189
d8aee617c607cb f62677b30d8ece e7df69402b2291 6ec102f220e09f a6223e874c3e53
fb474983ebdb9f 806832bde2f4e6 7c25ef688134b3 4aadca3409a6b3 bdccd638f3b19a
2b01f18625fdd1 0f5e91c28af081 f28e4dcd9077cd 9229d87caebbfb 072b846b4d2ce0

fd7a25e195d67a ec9546899268d2 ff3068a2e9d0c2 af9f2fc2de9978 01b47566d0faef
fc5a8eab966720 4b981c9fe7ff10 b4a0aa0873484e 25a8b544ed8801 c72530c2e5d37f
94b0483e74e4fa bc5ac97d82cd68 1a23d34cce0d52 6e4d17a8475b19 63493b14551149
d36db24ae5ced3 a24a53ea6aada0 230cbe502aa32e 2aa07485f281e6 66777be0d719c7
5d3ab65be78916 06076f42e71bd2 273e56dd3eccfd 5ef1c9394b6a9e 42f1f49590ffa2
1e6ab6994e56a8 8d54a339e301c2 efff698c46e74e 6721df7c5334d0 f36cf6a93bf3ff
91d8979d8fe631 321dc8b5eccceb a237eb1423c395 4623a16cc50b79 83f616f60d8114
32c15a65536b82 e4a00d384d99cd 369206bbef6fb4 42a720e294a9e4 768a1c77e94dac

31d4798dffbd75 da46bbd77e908b 0fc027a69fcccc 4204ee745159f5 c14155873d42b2
7ce0c031527eae 22fb1c9d6da9a7 33c940531510c9 d938e52464ce71 385b73fa95a2d3
597bf6362dd268 f9901921654409 7c8d064cd5b4ea 80e8fe2f1b3288 ee188609ef2cdf
beee34a1c48fe2 459cefca35857f 33b5320fbbca79 7789297027b6a4 f1debe5a09d013
fd5d818a56bf63 19a092fb1ec45c 526f5d3ff64331 9b8295291aef56 d6963c3a92c34c
065482a033fbbb 9b9ab43410d764 44ebbd99c86a86 4c087234311b85 db6e5a803ba13f
760c159ce2a619 d58d83243fe0ba 1c1e5e83aa79b5 75c8bbae9baabf 2ed91bdb632ae8
8e46b443cfffe5 afa4f53f148577 0be538701c4afa 3fd89c44ef7ced 060dcdc21e9368

0a5b9e2ba4a53b 63db0419a96d30 f68e038377a61e aa15b78389ec74 5f532809ff80f1
f2892acc49ca4e e2d68174c08e81 378254a38f5138 0b060222bb20b1 8013f6f4745c47
ef08e87e2c197d b69d5ddaadf417 7bc66fe482b730 f4bd76d3bb1dfc 09492b63f2935b
43875dd685ab00 e15a528f666486 aad1fac042ef90 b3bb7b8ef9c2e9 c78967b9392a1c
2f05fd5ca0230b 1008345afdd18c dac73c313ace60 346d535e500b62 12e6357496459b
ecccdac5a34926 3b880f7098608f e66c3352a9cdd6 049b176ff1a04d 897d9569948066
806230e9740d6e 179ebf2b7952ab 3a2c5079b5bbea 73261b85c35fb1 5b917dc1bf7e57
9c55b95581c1d5 e1fb86e6219639 c72a22d8404448 95dc5d7b966027 457f3fec730d5d

469cd82a2b3cec 021d9de560b8d6 85b4d126933886 c8265dafb87325 8741d99af7f420
1329e52d3e66f8 7d37c458a6ad05 1241c5ccbc355b 7fdcad3c3c269d 05f04a0a23acc7
ce076aba97cc18 74b36afc4645b2 cd7adaad8f5b91 bd0651649dc722 3d9b6437c667fb
6827ec09eed45e 8ad6102faa934f 1a80658c0bfe1e ef1749235ab59f 75478ad5949a06
49ce6e19841851 8df41dc39cc628 bd9dc9bec89c8b 7771a21fe8028c 65082929b051f3
c657798a3aebd1 ce9c37c494cfc8 156efce8330e42 d0d95860d39040 dfb0fb66f814c4
4b421540a0aece 9e767cbf7e9c49 eeea5b5c866a9e e2026ca4bfb067 ec9fff1a5d41c0
290ed4da32d333 65208d00dba471 99e1d15a83b736 5585401976a265 1668daeb4aad72

cdabffa646baca 7a6c7bb29875f7 1a87a53a2139c1 1ecf7ae823158a b1087bf595f7f2
d8e668fe076e4e b0794cf137a863 81e2a419a320ac 8090b1d39e5171 813903d5f1a68c
ba31f8211e56bb 52413eefa30a66 af88d053eb8a4a 4d2235fdb9bf91 69a947973d3ed3
0dbcf583c26ffd b6bfbee58458b7 5a12f3e625e5d8 53ae22c2b1bc6a 8e6f7e7bbde691
2b692a6746d3be 686438e4ac66e4 aa77be21178471 36aed3fc3ff079 8c9373ebb1c2f7
bb99fd5bfaebc1 665902d08610e8 8af0db91b80b6e 00d4995f9a6ce8 1d503d26442bd9
e61b181dfd0949 2a02f5075a277e 76caa7ddc435fe 5cedae4cae7a57 4b5f7c58c4f214
1446a05c1023ab 459c93a9f5ad37 1ea5f5aa4060b2 a48215350fcd60 ac21e2a4729a51

f18cf87ecf430f 0fd48c241ac6bc 33964cd2e3d9ec 8bebeffc2e848e bb84a5c2ea9b0e
311f20ff7ce601 752573f4effe98 79dbe4d184dce5 6bb04def99d322 7d2d5f23c2475b
7f93f7dbddf04e fff303e751fffe 08d205f8999a3d 5750d14f75e056 1107a3f96ca8e9
f62b50c8ad9f20 53e7fcc55d72d8 6345dec1054cb6 01d52c21dc654a aa0bd78e39c594
2265b675381cd5 57cc03dd65f821 1fa373049059a8 9885886b48085f 8357ab98192a14
5bb6cfbf84048b 5cf862f25ff6ab c9382e36ab2dbd 2357b5ade91fcf 2db77558ceef24
d4a0cb3ba50a2a 12c3cb633dfe47 db805410168807 a5e635ac766e1a 25252810f49fad
cae296fce18ed4 b9932d5822c519 4b7006cc54ea84 2546d761d284cf 2346d0a11b1ed9

81ce0d028c4474 c8002fd0315372 8670db1a6ad6eb 4c7f942260e9c9 822bb2c423cc53
e3b67febea3672 59c24223d913c3 6f4b196f69400f 51bfb6cc7f3603 fb9fbef84ffaf4
7c1632636806f6 a50ec42076931f f68b2be9e5e7ad 7603302a518bd4 d7cd9bb97ffa3c
acf1faaebf7412 f55d55d548bd86 5b34112ed53d06 1b58692e1e33b7 cc7e3cb6d32fe2
8f7b35c14a744f 9a4ed599399554 8eb369e71641af d4a6d1a5c74123 8cc7ec376acf04
ec0a470647b248 2fd9e8eea1f10e 94439285677960 4d11f6e6a426e0 06378817230b68
ec14f2df152cb7 199a8c0bd5f05d ecad5aab44ac2b ca87ab2ba6e905 69c0bf2acdb36c
d66279737bc807 4dd946eb19d81b 4e9c473b5e9846 5a016f7ca86f9d d02c2b7dca744a&lt;/code&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/5397511630973645771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2010/09/hdcp-master-key.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5397511630973645771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5397511630973645771'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2010/09/hdcp-master-key.html' title='HDCP Master Key'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-5538977344367471334</id><published>2010-09-09T15:14:00.000-04:00</published><updated>2010-09-09T15:14:27.981-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apache"/><category scheme="http://www.blogger.com/atom/ns#" term="debug"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>The Facebook Like button PITA: fb_xd_fragment=</title><content type='html'>So I have been using Facebook&#39;s like button for awhile now. I have it on a couple blogs, and a site I maintain using drupal. I started noticing that I was getting requests with a query of &quot;?fb_xd_fragment=&quot;. This is a problem, because it shows a blank page.&lt;br /&gt;
&lt;br /&gt;
I did some investigating, and this seems to be caused by two bugs (that I can tell). One, that Facebook&#39;s API causes a bug in IE that sends this query in the first place, and second that my website, because of the Facebook API, causes the page to become visibly blank because of it.&lt;br /&gt;
&lt;br /&gt;
So, what to do? I decided to kill the query string at the source: my apache web server using mod_rewrite.&lt;br /&gt;
&lt;br /&gt;
So here&#39;s what I added to the apache config for just this web server:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;RewriteEngine On
RewriteCond %{QUERY_STRING} fb_xd_fragment=
RewriteRule (.*) $1? [R=301]&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
So this basically sends a 301 HTTP code (Moved Permanently) with the same request, minus the query string. Note that the &quot;?&quot; on the RewriteRule is needed so that mod_rewrite doesn&#39;t append the old query back on. Seems to be doing the trick, and now I&#39;m not losing traffic due to a Facebook API bug.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/5538977344367471334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2010/09/facebook-like-button-pita-fbxdfragment.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5538977344367471334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5538977344367471334'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2010/09/facebook-like-button-pita-fbxdfragment.html' title='The Facebook Like button PITA: fb_xd_fragment='/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-8984158749527145277</id><published>2010-08-25T11:39:00.000-04:00</published><updated>2010-08-25T11:39:10.308-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bluecherry"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="mpeg"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="v4l2"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Solo6x10: Recording from video</title><content type='html'>I&#39;ve finally gotten around to writing an example program for recording from Solo6x10 devices to a file. This program is very basic. It leaves the video device in it&#39;s default state (resolution, frame rate, etc). So you can modify those settings separately, and then use this program to record at those settings.&lt;br /&gt;
&lt;br /&gt;
I also did not put motion detection examples in this, mainly because I have not satisfied my desire to create a decent API in v4l2 yet for that that.&lt;br /&gt;
&lt;br /&gt;
Next step, I will add sound recording into this.&lt;br /&gt;
&lt;br /&gt;
You can find the example source &lt;a href=&quot;http://lizard.bluecherry.net/~bcollins/bc-record.c&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
To compile it, run:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;gcc -lavformat bc-record.c -o bc-record&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Execute it with a single command line option, the device for a solo6x10 encoder (e.g. /dev/video1). It will record until you hit ^C.&lt;br /&gt;
&lt;br /&gt;
Happy recording!</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/8984158749527145277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2010/08/solo6x10-recording-from-video.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/8984158749527145277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/8984158749527145277'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2010/08/solo6x10-recording-from-video.html' title='Solo6x10: Recording from video'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6653558328125881331.post-5615778746503214793</id><published>2010-08-24T13:53:00.000-04:00</published><updated>2010-08-24T13:53:11.416-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bootpd"/><category scheme="http://www.blogger.com/atom/ns#" term="dhcp"/><category scheme="http://www.blogger.com/atom/ns#" term="macosx"/><title type='text'>Mac OS X Internet Sharing Problems, resolved</title><content type='html'>I was having problems with Internet Sharing on Mac OS X Snow Leopard. It was working at one time, and then it stopped. I would see from my Mac that it was getting a DHCP DISCOVER from my other computer, but the Mac would not give out a network address.&lt;br /&gt;
&lt;br /&gt;
At long last, I figured out the problem. If perform this command:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;$ sudo launchctl list | grep bootp
1550 - com.apple.bootpd&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
You will see that bootpd is actually running, but being com.apple.bootpd means it is running as the normal system bootpd server. You don&#39;t want that.&lt;br /&gt;
&lt;br /&gt;
First, disable Internet Sharing. Then run this command:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;$ sudo launchctl remove com.apple.bootpd&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Then, re-enable Internet Sharing. You should now see something like:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;$ sudo launchctl list | grep bootp
3423 - 0x100101440.anonymous.bootpd&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
This is the anonymous Internet Sharing version of bootpd. Now it all works.</content><link rel='replies' type='application/atom+xml' href='http://ben-collins.blogspot.com/feeds/5615778746503214793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ben-collins.blogspot.com/2010/08/mac-os-x-internet-sharing-problems.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5615778746503214793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6653558328125881331/posts/default/5615778746503214793'/><link rel='alternate' type='text/html' href='http://ben-collins.blogspot.com/2010/08/mac-os-x-internet-sharing-problems.html' title='Mac OS X Internet Sharing Problems, resolved'/><author><name>Ben Collins</name><uri>http://www.blogger.com/profile/16641016264284463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry></feed>