<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tech Scribblings</title>
	<atom:link href="http://tech.pedersen-live.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://tech.pedersen-live.com</link>
	<description></description>
	<lastBuildDate>Wed, 16 May 2012 20:00:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Disable &#8220;Waiting for network configuration&#8221; messages on Ubuntu boot</title>
		<link>http://tech.pedersen-live.com/2012/05/disable-waiting-for-network-configuration-messages-on-ubuntu-boot/</link>
		<comments>http://tech.pedersen-live.com/2012/05/disable-waiting-for-network-configuration-messages-on-ubuntu-boot/#comments</comments>
		<pubDate>Wed, 16 May 2012 19:59:58 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://tech.pedersen-live.com/?p=110</guid>
		<description><![CDATA[I was just creating a custom live CD for Ubuntu 12.04 and was having a problem with the boot process hanging for several minutes while waiting for the network to be configured. I was trying to see if I could fix it but I have no idea why it is happening for now. I found [...]]]></description>
			<content:encoded><![CDATA[<p>I was just creating a custom live CD for Ubuntu 12.04 and was having a problem with the boot process hanging for several minutes while waiting for the network to be configured. I was trying to see if I could fix it but I have no idea why it is happening for now. I found a bug logged on LaunchPad here https://bugs.launchpad.net/ubuntu/+source/dbus/+bug/811441/comments/24 that describes a workaround for oneric (11.10) but this fix/workaround is there by default in precise so obviously it didn&#8217;t fix my problem.</p>
<p>I didn&#8217;t really need networking setup at all and just wanted to skip waiting for the network to be configured. In order to do this you just need to edit the file /etc/init/failsafe.conf. In that file is where it sleeps for several minutes waiting for the network to come up. All I did was:</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span class="kw2">sudo</span> <span class="kw2">vim</span> <span class="sy0">/</span>etc<span class="sy0">/</span>init<span class="sy0">/</span>failsafe.conf</pre></div></div>

<p>I changed the first sleep command to</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span class="kw2">sleep</span> <span class="nu0">5</span></pre></div></div>

<p> and then commented out the following lines:</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span class="re1">$PLYMOUTH</span> message <span class="re5">--text</span>=<span class="st0">&quot;Waiting for network configuration...&quot;</span> <span class="sy0">||</span> :
<span class="kw2">sleep</span> <span class="nu0">40</span>
&nbsp;
<span class="re1">$PLYMOUTH</span> message <span class="re5">--text</span>=<span class="st0">&quot;Waiting up to 60 more seconds for network configuration...&quot;</span> <span class="sy0">||</span> :
<span class="kw2">sleep</span> <span class="nu0">59</span></pre></div></div>

<p>Just place a &#8216;#&#8217; character at the beginning of each of those lines. Now it will just wait 5 seconds and then continue on.</p>
<p>To my surprise, the network was actually working just fine even though the script thinks it is not.</p>
<p>Just a note, do NOT remove the failsafe.conf file, otherwise it will hang the boot process indefinitely waiting for the network to be &#8220;configured.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.pedersen-live.com/2012/05/disable-waiting-for-network-configuration-messages-on-ubuntu-boot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Benefits of Developing a Desktop Linux Distribution for Corresponding Server Distributions</title>
		<link>http://tech.pedersen-live.com/2012/04/the-benefits-of-developing-a-desktop-linux-distribution-for-corresponding-server-distributions/</link>
		<comments>http://tech.pedersen-live.com/2012/04/the-benefits-of-developing-a-desktop-linux-distribution-for-corresponding-server-distributions/#comments</comments>
		<pubDate>Sat, 28 Apr 2012 20:43:40 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tech.pedersen-live.com/?p=107</guid>
		<description><![CDATA[I just happened to be thinking about desktop linux distributions and the effect they have for their corresponding server distributions. I have been a fan of Ubuntu for quite a long time. I took a class in college for web programming and we were forced to use Ubuntu. Ever since then I have used Ubuntu [...]]]></description>
			<content:encoded><![CDATA[<p>I just happened to be thinking about desktop linux distributions and the effect they have for their corresponding server distributions. I have been a fan of Ubuntu for quite a long time. I took a class in college for web programming and we were forced to use Ubuntu. Ever since then I have used Ubuntu for all of my development and have enjoyed it&#8230;up until Canonical decided to screw with the UI. I am not a fan of Unity (or Gnome 3 for that matter but I will take Gnome 3 over Unity). I have setup several different servers to run different web apps and other things and I really prefer to use Ubuntu. The key reason I use the Ubuntu server edition is because I am familiar with all the tools available to manage the system since I use it on my desktop and laptop. I am familiar with how everything works so it makes managing the server much simpler.</p>
<p>Because of the frustration with recent versions of Ubuntu I have started to test out other desktop distributions for my laptop and desktop machines. I first tried using Linux Mint with it&#8217;s Cinnamon UI, however I quickly found that Cinnamon was not very mature and didn&#8217;t suit my tastes. I guess it&#8217;s just like slapping lipstick on a pig, and not very good lipstick either.</p>
<p>After my trials with Linux Mint I almost decided to try out openSuSE. The funny thing is, I work at Novell and work with SuSE Linux Enterprise Server all day and have obviously tried openSuSE before. However, it left a very bad taste in my mouth and several of my colleagues use openSuSE and gripe about it fairly often, so I decided to stay away for now.</p>
<p>That&#8217;s when I decided to try out Fedora. I had used fedora before at college (different class) and tested it out briefly on an old laptop I had. Neither of these experiences left a great experience in my mind, but it wasn&#8217;t terrible either, the reason Fedora didn&#8217;t work so well on my laptop wasn&#8217;t really Fedora&#8217;s fault. So, anyway, I decided to try out Fedora on my laptop and am absolutely loving it. I love the fact that they have the most recent versions of tons of software. One thing I always loved in Ubuntu was dpkg/apt-get (package management) and the bash completion support&#8230;that feature is SERIOUSLY lacking in SuSE and it bugs the crap out of me. However, Fedora&#8217;s yum package manager tool is wonderful.</p>
<p>Now, getting to the point where this affects server distributions. Because I have had such an awesome experience with Fedora I am now ready and excited to try out CentOS on my next server that I install. It may still take some getting used to but I know that CentOS/RedHat have a great reputation and I have somewhat of an idea of what to expect.</p>
<p>So everybody that develops a server distribution of Linux, take note and make sure your desktop experience really shines and is delightful to use for engineers that may end up using your server distribution, since we are the ones that will be making the decisions as to what distribution to go with.</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.pedersen-live.com/2012/04/the-benefits-of-developing-a-desktop-linux-distribution-for-corresponding-server-distributions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing Oracle JDK/JRE as default java in Fedora</title>
		<link>http://tech.pedersen-live.com/2012/03/installing-oracle-jdkjre-as-default-java-in-fedora/</link>
		<comments>http://tech.pedersen-live.com/2012/03/installing-oracle-jdkjre-as-default-java-in-fedora/#comments</comments>
		<pubDate>Sat, 31 Mar 2012 17:39:20 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tech.pedersen-live.com/?p=97</guid>
		<description><![CDATA[I copied most of this from a post on a Ubuntu help page and just wanted to copy it down for my own notes since I have had to do this several times. For Fedora I just installed the RPM for the JDK which installs all the java files in /usr/java/jdk1.x.x_xx. To install all the [...]]]></description>
			<content:encoded><![CDATA[<p>I copied most of this from a post on a Ubuntu help page and just wanted to copy it down for my own notes since I have had to do this several times. For Fedora I just installed the RPM for the JDK which installs all the java files in /usr/java/jdk1.x.x_xx. To install all the java/javac etc. files so they are picked up by default we need to update the alternatives and set it to pick up the java version installed here, to do this we can just run a little for loop and update the alternatives. This can be copy and pasted as needed but just make sure to change the first line to point to the &#8216;bin&#8217; directory of your java installation.</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span class="kw3">export</span> <span class="re2">JAVA_BIN_DIR</span>=<span class="sy0">/</span>usr<span class="sy0">/</span>java<span class="sy0">/</span>jdk1.x.x_xx<span class="sy0">/</span>bin <span class="co0"># replace 1.x.x_xx with your installed version</span>
<span class="kw3">cd</span> <span class="co1">${JAVA_BIN_DIR}</span>
<span class="kw1">for</span> exe <span class="kw1">in</span> <span class="sy0">*</span>; <span class="kw1">do</span>
<span class="kw2">sudo</span> update-alternatives <span class="re5">--install</span> <span class="st0">&quot;/usr/bin/<span class="es3">${exe}</span>&quot;</span> <span class="st0">&quot;<span class="es3">${exe}</span>&quot;</span> <span class="st0">&quot;<span class="es3">${JAVA_BIN_DIR}</span>/<span class="es3">${exe}</span>&quot;</span> <span class="nu0">1</span>
<span class="kw2">sudo</span> update-alternatives <span class="re5">--set</span> <span class="co1">${exe}</span> <span class="co1">${JAVA_BIN_DIR}</span><span class="sy0">/</span><span class="co1">${exe}</span>
<span class="kw1">done</span></pre></div></div>

<p>And thats it, test it out by running java -version.</p>
<p>Also, I had a problem where I installed LibreOffice which installed the OpenJDK RPM and it overrode the Oracle java version I had installed, to fix that I just re-ran the above script and it reset it to use the correct java version.</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.pedersen-live.com/2012/03/installing-oracle-jdkjre-as-default-java-in-fedora/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing RHEL6 as Paravirtualized VM in XEN</title>
		<link>http://tech.pedersen-live.com/2010/12/installing-rhel6-as-paravirtualized-vm-in-xen/</link>
		<comments>http://tech.pedersen-live.com/2010/12/installing-rhel6-as-paravirtualized-vm-in-xen/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 23:34:34 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://tech.pedersen-live.com/?p=91</guid>
		<description><![CDATA[This is probably not a common scenario, but I have RHEL running as a XEN VM on top of SLES (for testing). I am not sure if this is a common problem with XEN or just a problem with SLES but hopefully this will help someone else. The trouble I had getting RHEL6 to install [...]]]></description>
			<content:encoded><![CDATA[<p>This is probably not a common scenario, but I have RHEL running as a XEN VM on top of SLES (for testing). I am not sure if this is a common problem with XEN or just a problem with SLES but hopefully this will help someone else.</p>
<p>The trouble I had getting RHEL6 to install as a paravirtualized VM on XEN was the vm-install process was trying to boot a kernel from the installation media that didn&#8217;t exist. I would get errors that the path /images/xen/vmlinuz didn&#8217;t exist and even when I fixed that after rebooting it would fail because it couldn&#8217;t find the correct kernel. To get around this just takes a few little steps.</p>
<p>First, you need to copy the installation media to a web server and make a symbolic link from /images/pxeboot/ to /images/xen and so when XEN launches the installation it will pick up the pxeboot vmlinuz image which actually works just fine.</p>
<p>The next step is at the end of the installation don&#8217;t reboot. You need to go to the console on the VM. With the gui vm-install you can just hit the menu item &#8216;Send Key&#8217;-&gt;&#8217;Ctrl-Alt-F2&#8242;. Now you need to go to the /mnt/sysimage/boot directory. Here is where your dom0 xen will look for a kernel to use to boot. It will look for a file called vmlinuz-xen or vmlinuz-xenpae. Look for the default vmlinuz (mine was called vmlinuz-2.6.32-71.el6.i686). Now just make a symbolic link from that file to vmlinuz-xen. It will reboot and find the kernel and everything will work just fine even though there isn&#8217;t a specific xen kernel because of (I think) the pv drivers Red Hat decided to keep in there anyway (even though they dropped support for RHEL as a XEN host).</p>
<p>You will need to keep the vmlinuz-xen symbolic link up to date every time there is a new kernel installed, otherwise you will keep running on the original kernel (or the link might get broken if the old version is removed).</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.pedersen-live.com/2010/12/installing-rhel6-as-paravirtualized-vm-in-xen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trusting All Certificates In Jython</title>
		<link>http://tech.pedersen-live.com/2010/10/trusting-all-certificates-in-jython/</link>
		<comments>http://tech.pedersen-live.com/2010/10/trusting-all-certificates-in-jython/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 20:30:47 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[certificates]]></category>
		<category><![CDATA[jython]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://tech.pedersen-live.com/?p=69</guid>
		<description><![CDATA[I had a little application I was writing to check some information on a VMware vSphere server. I was sending SSL HTTP requests to the server to get data. Everything was working fine under python. I had one function that needs to use Jython (which is fine because I am running everything under Jython most [...]]]></description>
			<content:encoded><![CDATA[<p>I had a little application I was writing to check some information on a VMware vSphere server. I was sending SSL HTTP requests to the server to get data. Everything was working fine under python. I had one function that needs to use Jython (which is fine because I am running everything under Jython most of the time anyway, Python is just faster to start up for testing). However, when I ran it in Jython I was getting socket.sslerror SSL handshake exceptions. This is known behavior in Jython because by default Java will automatically check the validity of certificates while Python just disregards the SSL certificates.</p>
<p>There are a couple of ways to get around this and they are documented here <a href="http://wiki.python.org/jython/NewSocketModule#SSLSupport">http://wiki.python.org/jython/NewSocketModule#SSLSupport</a>. However, I didn&#8217;t like any of those approaches.</p>
<p>The first option requires messing with your certificate store in the JVM which means all Java processes doing anything will have your certificate added. This may or may not be what you want, but if you go to another machine or use a different JVM you will lose the ability to connect to your SSL host again.</p>
<p>Option 2, creating your own Security Provider looked a little more appealing because I don&#8217;t have to worry about importing each certificate and could enable this at runtime. However, it has the drawback of having to be compiled outside of Jython, and has to be put on the class path. Again, this makes it a little less portable (but not too bad). It also has the affect of trusting all certificates for every single SSL connection made, which is good because it matches up to what Python does but what if you want to only trust invalid certificates in certain parts of your code?</p>
<p>I started digging and came up with a way that would let me trust all certificates, be written completely in Jython, and have the ability to dynamically switch between trusting all certificates or not.</p>

<div class="wp_syntax"><div class="code"><pre class="python"><span class="co1"># Check if running in Jython</span>
<span class="kw1">if</span> <span class="st0">'java'</span> <span class="kw1">in</span> <span class="kw3">sys</span>.<span class="kw3">platform</span>:
    <span class="kw1">from</span> javax.<span class="me1">net</span>.<span class="me1">ssl</span> <span class="kw1">import</span> TrustManager, X509TrustManager
    <span class="kw1">from</span> jarray <span class="kw1">import</span> <span class="kw3">array</span>
    <span class="kw1">from</span> javax.<span class="me1">net</span>.<span class="me1">ssl</span> <span class="kw1">import</span> SSLContext
    <span class="kw1">class</span> TrustAllX509TrustManager<span class="br0">&#40;</span>X509TrustManager<span class="br0">&#41;</span>:
        <span class="st0">''</span><span class="st0">'Define a custom TrustManager which will blindly accept all certificates'</span><span class="st0">''</span>
&nbsp;
            <span class="kw1">def</span> checkClientTrusted<span class="br0">&#40;</span><span class="kw2">self</span>, chain, auth<span class="br0">&#41;</span>:
                <span class="kw1">pass</span>
&nbsp;
            <span class="kw1">def</span> checkServerTrusted<span class="br0">&#40;</span><span class="kw2">self</span>, chain, auth<span class="br0">&#41;</span>:
                <span class="kw1">pass</span>
&nbsp;
            <span class="kw1">def</span> getAcceptedIssuers<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:
                <span class="kw1">return</span> <span class="kw2">None</span>
    <span class="co1"># Create a static reference to an SSLContext which will use</span>
    <span class="co1"># our custom TrustManager</span>
    trust_managers = <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#91;</span>TrustAllX509TrustManager<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>, TrustManager<span class="br0">&#41;</span>
    TRUST_ALL_CONTEXT = SSLContext.<span class="me1">getInstance</span><span class="br0">&#40;</span><span class="st0">&quot;SSL&quot;</span><span class="br0">&#41;</span>
    TRUST_ALL_CONTEXT.<span class="me1">init</span><span class="br0">&#40;</span><span class="kw2">None</span>, trust_managers, <span class="kw2">None</span><span class="br0">&#41;</span>
    <span class="co1"># Keep a static reference to the JVM's default SSLContext for restoring</span>
    <span class="co1"># at a later time</span>
    DEFAULT_CONTEXT = SSLContext.<span class="me1">getDefault</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
&nbsp;
<span class="kw1">def</span> trust_all_certificates<span class="br0">&#40;</span>f<span class="br0">&#41;</span>:
    <span class="st0">''</span><span class="st0">'Decorator function that will make it so the context of the decorated method
    will run with our TrustManager that accepts all certificates'</span><span class="st0">''</span>
    <span class="kw1">def</span> wrapped<span class="br0">&#40;</span><span class="sy0">*</span>args, <span class="sy0">**</span>kwargs<span class="br0">&#41;</span>:
        <span class="co1"># Only do this if running under Jython</span>
        <span class="kw1">if</span> <span class="st0">'java'</span> <span class="kw1">in</span> <span class="kw3">sys</span>.<span class="kw3">platform</span>:
            <span class="kw1">from</span> javax.<span class="me1">net</span>.<span class="me1">ssl</span> <span class="kw1">import</span> SSLContext
            SSLContext.<span class="me1">setDefault</span><span class="br0">&#40;</span>TRUST_ALL_CONTEXT<span class="br0">&#41;</span>
            <span class="kw1">try</span>:
                res = f<span class="br0">&#40;</span><span class="sy0">*</span>args, <span class="sy0">**</span>kwargs<span class="br0">&#41;</span>
                <span class="kw1">return</span> res
            <span class="kw1">finally</span>:
                SSLContext.<span class="me1">setDefault</span><span class="br0">&#40;</span>DEFAULT_CONTEXT<span class="br0">&#41;</span>
        <span class="kw1">else</span>:
            <span class="kw1">return</span> f<span class="br0">&#40;</span><span class="sy0">*</span>args, <span class="sy0">**</span>kwargs<span class="br0">&#41;</span>
    <span class="kw1">return</span> wrapped</pre></div></div>

<p>Thats it. Now I can do things like:</p>

<div class="wp_syntax"><div class="code"><pre class="python">@trust_all_certificates
<span class="kw1">def</span> connect_to_untrusted_host<span class="br0">&#40;</span>host<span class="br0">&#41;</span>:
        conn = <span class="kw3">httplib</span>.<span class="me1">HTTPSConnection</span><span class="br0">&#40;</span>host<span class="br0">&#41;</span>
        conn.<span class="me1">request</span><span class="br0">&#40;</span><span class="st0">'GET'</span>, <span class="st0">'/index.html'</span><span class="br0">&#41;</span>
        response = conn.<span class="me1">getresponse</span><span class="br0">&#40;</span><span class="br0">&#41;</span></pre></div></div>

<p>And the connection will succeed. If I have another method that is not decorated then it will automatically verify the certificates validity.</p>
<p>Note that this decorator is not thread safe. Setting the SSLContext default is a global operation, so if another thread is running it could reset the SSLContext to the default before another method tries to make an SSL connection.</p>
<p>You can also use this without the decorator function. Just use the code prior to the decorator and set the SSLContext default wherever you need to.</p>
<p>If you happen to also need to verify the hostname of a certificate, which is the case if you use an HttpsURLConnection, then you will also need to create a HostnameVerifier. You can do this as follows:</p>
<p> </p>

<div class="wp_syntax"><div class="code"><pre class="python"><span class="kw1">from</span> javax.<span class="me1">net</span>.<span class="me1">ssl</span> <span class="kw1">import</span> HostnameVerifier, HttpsURLConnection
<span class="kw1">class</span> AllHostsVerifier<span class="br0">&#40;</span>HostnameVerifier<span class="br0">&#41;</span>:
    <span class="kw1">def</span> verify<span class="br0">&#40;</span><span class="kw2">self</span>, urlHostname, session<span class="br0">&#41;</span>:
        <span class="kw1">return</span> <span class="kw2">True</span>
HttpsURLConnection.<span class="me1">setDefaultHostnameVerifier</span><span class="br0">&#40;</span>AllHostsVerifier<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></pre></div></div>

<p> </p>
<p>Hope that helps. It&#8217;s nice to have a pure Jython implementation of this and have it be transportable.</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.pedersen-live.com/2010/10/trusting-all-certificates-in-jython/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tomboy Notes Crashes In Windows</title>
		<link>http://tech.pedersen-live.com/2010/09/tomboy-notes-crashes-in-windows/</link>
		<comments>http://tech.pedersen-live.com/2010/09/tomboy-notes-crashes-in-windows/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 15:26:09 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tech.pedersen-live.com/?p=66</guid>
		<description><![CDATA[I love tomboy notes. I work on a lot of different computers and so I need to have all my data synchronized between all these machines and I frequently go between Linux and Windows machines. I used to use just Evernote for taking notes but since they updated to 3.5 I have not been able [...]]]></description>
			<content:encoded><![CDATA[<p>I love tomboy notes. I work on a lot of different computers and so I need to have all my data synchronized between all these machines and I frequently go between Linux and Windows machines. I used to use just Evernote for taking notes but since they updated to 3.5 I have not been able to get the desktop application to work under Wine in Linux. Thats when I started using Tomboy Notes and it has been great.</p>
<p>The only problem I have had is that Tomboy Notes on one of my Windows machines would never open. It would start and I would see the icon in the notification area but then it would disappear and I couldn&#8217;t ever do anything. Today I figured out how to get around it.</p>
<p>To fix this I just went to the Tomboy.exe file and went to Properties -&gt; Compatibility and set it to run in compatibility mode for Windows XP SP3. Now everything is working great!</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.pedersen-live.com/2010/09/tomboy-notes-crashes-in-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating symbolic link fails with permission denied as root</title>
		<link>http://tech.pedersen-live.com/2010/08/creating-symbolic-link-fails-with-permission-denied-as-root/</link>
		<comments>http://tech.pedersen-live.com/2010/08/creating-symbolic-link-fails-with-permission-denied-as-root/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 05:50:27 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tech.pedersen-live.com/?p=63</guid>
		<description><![CDATA[Ran into an interesting problem today. I was moving files to a new SAN for a little build cluster. I was mounting the share to the same place as the old files were mounted to but when I ran ln -s it kept saying permission denied&#8230;even though I am root. I also did an ls [...]]]></description>
			<content:encoded><![CDATA[<p>Ran into an interesting problem today. I was moving files to a new SAN for a little build cluster. I was mounting the share to the same place as the old files were mounted to but when I ran ln -s it kept saying permission denied&#8230;even though I am root. I also did an ls on the directory to make sure I wasn&#8217;t trying to overwrite an existing file and there was nothing (which is very weird&#8230;keep reading).</p>
<p>The problem turned out to be with autofs. We were using autofs to keep the storage mounted in our little cluster of machines. The weird thing is that it will not show the directory it is mounting when doing an ls. I do ls /auto/ and I see nothing. I do ls /auto/home and voila, I see a bunch of files. So, I just had to turn off autofs and the symbolic link worked just like it should.</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.pedersen-live.com/2010/08/creating-symbolic-link-fails-with-permission-denied-as-root/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No sound on T60 in Ubuntu Karmic</title>
		<link>http://tech.pedersen-live.com/2009/11/no-sound-on-t60-in-ubuntu-karmic/</link>
		<comments>http://tech.pedersen-live.com/2009/11/no-sound-on-t60-in-ubuntu-karmic/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 05:13:14 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tech.pedersen-live.com/?p=59</guid>
		<description><![CDATA[Just got a used laptop from work today (a lenovo t60p) and decided to install Ubuntu 9.10 on it. Most things were working pretty smoothly, I got the fingerprint reader working by following some of the stuff on http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader_with_ThinkFinger. I also got the hard drive protection stuff working which is pretty nifty, never had that [...]]]></description>
			<content:encoded><![CDATA[<p>Just got a used laptop from work today (a lenovo t60p) and decided to install Ubuntu 9.10 on it. Most things were working pretty smoothly, I got the fingerprint reader working by following some of the stuff on <a href="http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader_with_ThinkFinger" target="_blank">http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader_with_ThinkFinger</a>. I also got the hard drive protection stuff working which is pretty nifty, never had that on a laptop, and I played tux racer by moving my laptop side-to-side, haha.</p>
<p>I had some problems with audio though. I tried several solutions I found on a forum here: <a href="http://ubuntuforums.org/showthread.php?t=346676">http://ubuntuforums.org/showthread.php?t=346676</a> and <a href="http://ubuntuforums.org/showthread.php?t=1043568" target="_blank">http://ubuntuforums.org/showthread.php?t=1043568</a> but I think the thing that really made it work was that for some reason I was not in a group that would allow access to sound devices. The page here <a href="https://wiki.ubuntu.com/DebuggingSoundProblems" target="_blank">https://wiki.ubuntu.com/DebuggingSoundProblems</a> said to make sure you have permissions for it&#8230;I figured this would be the last thing that would work since I was the user that installed the system, well, I guess I was wrong, the little checkbox wasn&#8217;t checked, I checked it and restarted and it work, who would have thought?</p>
<p>Now I just need to get bluetooth working&#8230;wasn&#8217;t seeing my phone&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.pedersen-live.com/2009/11/no-sound-on-t60-in-ubuntu-karmic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Set up SLES/SuSE for imaging or as a virtual machine</title>
		<link>http://tech.pedersen-live.com/2009/08/set-up-slessuse-for-imaging-or-as-a-virtual-machine/</link>
		<comments>http://tech.pedersen-live.com/2009/08/set-up-slessuse-for-imaging-or-as-a-virtual-machine/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 21:17:54 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[imaging]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://tech.pedersen-live.com/?p=55</guid>
		<description><![CDATA[I test software on SLES/SLED machines and it is always a pain trying to prepare images for re-use in other locations. SuSE uses hardware specific IDs for booting and configuring network interfaces by default so if you try to make an image and use it on another machine you are out of luck. Also, making [...]]]></description>
			<content:encoded><![CDATA[<p>I test software on SLES/SLED machines and it is always a pain trying to prepare images for re-use in other locations. SuSE uses hardware specific IDs for booting and configuring network interfaces by default so if you try to make an image and use it on another machine you are out of luck. Also, making VMWare images and cloning them creates all new hardware IDs as well so no cloning of the VMs either. Today I finally found a good way to fix all these problems so that network interfaces are set up automatically upon boot for DHCP and GRUB won&#8217;t boot using the /dev/disks/by-id/ location but just the /dev/sdaX location.</p>
<p>I found these tips on the Novell Cool Solutions page. One from <a href="http://www.novell.com/communities/node/1516/imaging-sled-10-sp1-workstation" target="_blank">http://www.novell.com/communities/node/1516/imaging-sled-10-sp1-workstation</a> and another from <a href="http://www.novell.com/communities/node/5789/automatic-network-configuration-and-edirectory-configuration-bootable-vmware-images" target="_blank">http://www.novell.com/communities/node/5789/automatic-network-configuration-and-edirectory-configuration-bootable-vmware-images</a>.</p>
<p>There are just two general steps that need to take place. First, make it so GRUB boots using the device name and not the device ID. To do this:</p>
<ol>
<li>Open Yast</li>
<li>Navigate to System -&gt; Partitioner</li>
<li>For each partition that will be mounted click Edit, Fstab Options, and select Device name rather than Device ID</li>
<li>Apply those settings</li>
<li>Now open Yast -&gt; System -&gt; Bootloader</li>
<li>For each entry click edit and for the root device select the proper device name</li>
<li>Apply those settings and you are done</li>
</ol>
<p>The second issue has to do with the device ID of the network card changing and so it is not configured for DHCP on boot. To make all your network interfaces configure automatically with DHCP on boot you need to be able to generate ifcfg-eth-id network configuration files for the interfaces on boot. To do this</p>
<ol>
<li>Download <a href="http://files.pedersen-live.com/buildeth0" target="_self">this buildeth0 script</a> from (This was taken from a set of scripts on the second Novell link above)
<ol>
<li>If you are running SLES/SLED 11 then download <a href="http://files.pedersen-live.com/buildeth0.sle11" target="_blank">this script</a> and rename it to buildeth0</li>
</ol>
</li>
<li>Copy the script buildeth0 to /etc/init.d/.  Be sure to chmod 755 the script so it will execute.</li>
<li>Now, add the script to the default run-levels rc3 and rc5 by running &#8220;chkconfig -a buildeth0&#8243;</li>
</ol>
<p>This script requires that the persistent names are enforced and generated when your machine boots. This is already on by default in SLES/SLED. When the machine boots it will check all the devices connected and create persistent names for any ethernet device in /etc/udev/rules.d/30-net_persistent_names.rules. The script will check that file for any entries. It will then check to see if each of those entries have configuration information setup in /etc/sysconfig/network/ifcfg-eth-id-&#8230; if not it will generate that file automatically and configure the interface with DHCP. When the network is setup it will see the configuration there and configure the interface with DHCP.</p>
<p>To prepare for taking an image you should remove all the configuration information already setup for your machine so that when the new device boots it doesn&#8217;t wait for non-existing interfaces to be set up.</p>
<ol>
<li>rm /etc/sysconfig/network/ifcfg-eth-id*</li>
<li>Edit /etc/udev/rules.d/30-net_persistent_names.rules and remove any SUBSYSTEM==&#8221;net&#8221; lines. (Don&#8217;t just comment them out)</li>
</ol>
<p>That&#8217;s it, just shutdown and take a snapshot/image of the machine.</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.pedersen-live.com/2009/08/set-up-slessuse-for-imaging-or-as-a-virtual-machine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick SVN Branch</title>
		<link>http://tech.pedersen-live.com/2009/08/quick-svn-branch/</link>
		<comments>http://tech.pedersen-live.com/2009/08/quick-svn-branch/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 16:20:27 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://tech.pedersen-live.com/?p=53</guid>
		<description><![CDATA[Took me a while to figure out how to make a branch. There is an easy way to do it without even checking out a new local copy. Just: svn copy https://your.svn.server/svn/location/trunk https://your.svn.server/svn/location/branches/branch_name -m "commit message" All the work is done on the server. No mess locally and super quick&#8230;now I just need to figure [...]]]></description>
			<content:encoded><![CDATA[<p>Took me a while to figure out how to make a branch. There is an easy way to do it without even checking out a new local copy. Just:</p>
<pre>svn copy https://your.svn.server/svn/location/trunk https://your.svn.server/svn/location/branches/branch_name -m "commit message"</pre>
<p>All the work is done on the server. No mess locally and super quick&#8230;now I just need to figure out how to merge changes between branches easily</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.pedersen-live.com/2009/08/quick-svn-branch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

