<?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>Sam Bull</title>
	<atom:link href="http://blog.sambull.org/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.sambull.org</link>
	<description>A personal blog</description>
	<lastBuildDate>Mon, 01 Apr 2013 12:10:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Phone app lock</title>
		<link>http://blog.sambull.org/phone-app-lock</link>
		<comments>http://blog.sambull.org/phone-app-lock#comments</comments>
		<pubDate>Wed, 27 Mar 2013 00:38:51 +0000</pubDate>
		<dc:creator>Sam Bull</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.sambull.org/?p=205</guid>
		<description><![CDATA[<p>This is a proposal to the Ubuntu phone developers about phone app locking.</p> Why? <p>Having to unlock your phone every time you turn it on can be too much hassle. Many users, including myself, disable the lock because of this, leaving a phone with absolutely no security. What&#8217;s the point of security features if they&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>This is a proposal to the Ubuntu phone developers about phone app locking.</p>
<h2>Why?</h2>
<p>Having to unlock your phone every time you turn it on can be too much hassle. Many users, including myself, disable the lock because of this, leaving a phone with absolutely no security. What&#8217;s the point of security features if they&#8217;re not used? I believe the solution is to only require unlocking the phone when trying to access restricted features, not every time you look at your phone.</p>
<h2>Opening a locked app</h2>
<p>This shows opening a locked app from the launcher, when the keyring is still locked.<br />
<img src="http://blog.sambull.org/wp-uploads/lockapp.png" alt="Launching a locked app" /></p>
<h2>Accessing a running app</h2>
<p>To improve the usability, this should also work for apps left running in the background. This could be achieved by adding a lock layer over the running app when the keyring is locked.<br />
<img src="http://blog.sambull.org/wp-uploads/lockapp-running.png" alt="Accessing a running app" /></p>
<h2>Fine-grain locking</h2>
<p>I think the ultimate goal should be to have an infrastructure for fine-grained lock controls. This would allow an app to be used without unlocking, but still stop unauthorised users using restricted features, such as sending email or replying to messages. Here is a mockup of the settings page for such a design:<br />
<a href="https://ubuntu.mybalsamiq.com/projects/ubuntuphonecoreapps/App%20locks"><img src="https://ubuntu.mybalsamiq.com/projects/ubuntuphonecoreapps/App%20locks.png?version=1&#038;etag=Q60WACPrEUzNNy5WGEGwlSb1H8a2dRmK alt="App lock settings" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sambull.org/phone-app-lock/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security design</title>
		<link>http://blog.sambull.org/security-design</link>
		<comments>http://blog.sambull.org/security-design#comments</comments>
		<pubDate>Sat, 16 Mar 2013 15:58:48 +0000</pubDate>
		<dc:creator>Sam Bull</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.sambull.org/?p=191</guid>
		<description><![CDATA[<p>This is a proposal for designing security on the desktop. This is in response to <a href="http://www.gnome.org/friends/">GNOME</a>&#8216;s privacy fundraiser, and will hopefully provide some ideas for how parts of this can be accomplished without breaking the user experience.</p> <p>For a single-user system, having a login screen just presents a barrier and time delay, this is [...]]]></description>
			<content:encoded><![CDATA[<p>This is a proposal for designing security on the desktop. This is in response to <a href="http://www.gnome.org/friends/">GNOME</a>&#8216;s privacy fundraiser, and will hopefully provide some ideas for how parts of this can be accomplished without breaking the user experience.</p>
<p>For a single-user system, having a login screen just presents a barrier and time delay, this is not good design. It is also common to allow friends etc. to use your laptop, but it should still be secure from their snooping while they use it. I hope we can agree then, that auto-login for a single-user system is a good idea, or atleast agree that it is a common use case. Now, this obviously eliminates full-disk encryption and home partition encryption. Currently, there is little protection for an auto-login user, and I think it&#8217;s time to change this.</p>
<p>You&#8217;ll see how I&#8217;ve achieved a good level of security on my system by looking at the tutorial posts on this blog, and here I will analyse them and discuss what needs to be changed to provide a great design integrated into the system.</p>
<h2>Encrypt folders</h2>
<p>The first example we&#8217;ll look at, is encrypting folders. It is likely that there are some files on your machine you don&#8217;t want other people to have access to. I&#8217;ve created what I can using a simple plugin for Nautilus, as described <a href="http://blog.sambull.org/easily-encrypt-folders-2"> here</a>. This extension allows a folder to be right-clicked and encrypted. When right-clicking an encrypted folder, it can be mounted. This uses the gnome-keyring to save a random password, allowing it to be unmounted without question if the keyring has already been unlocked.</p>
<h3>Things done right</h3>
<ul>
<li>Using the keyring to automatically decrypt it.</li>
<li>Simple, right-click menu item to encrypt a folder.</li>
</ul>
<h3>Things done wrong</h3>
<ul>
<li>Opening an encrypted folder shows the encrypted contents.</li>
<li>Mounting the folder places the decrypted contents in another folder using a different name.</li>
</ul>
<h3>What needs to be improved</h3>
<p>The feature should be integrated into Nautilus so that when attempting to open an encrypted folder, it is automatically decrypted using the keyring, and it should be decrypted in place, so the encrypted contents are displayed in the same folder. In other words, if the keyring has been unlocked, an encrypted folder would appear and act exactly like a normal folder.</p>
<p>This would eliminate the right-click menu item to mount folders, and also reduce the right-click encrypt item to a simple confirmation dialog.</p>
<h3>Other things to consider</h3>
<p>What if a program tries to access the contents of the folder, or the user tries to access the folder through CLI? Can we have this at a lower level than Nautilus, which will mount regardless of how it is accessed?</p>
<h2>Encrypting programs</h2>
<p>My other proposal is to have a simple way to encrypt applications. I&#8217;ve outlined the method I&#8217;ve used to encrypt Firefox <a href="http://blog.sambull.org/encrypt-firefox">here</a>. This encrypts my Firefox data, and will only allow Firefox to start if my keyring is unlocked.</p>
<h3>Things done right</h3>
<p>The result is completely seamless, and is exactly the experience I want to achieve.</p>
<h3>Things to be improved</h3>
<p>The method to achieve this seems a little hacky, and could perhaps be improved.</p>
<p>Setting up the encryption is not a nice interface. I would like to see a settings page which listed supported programs, and allows you to encrypt applications with a click of a button. There should be a way for programs to be added to this list automatically, by simple giving information on where sensitive user data is stored, in order to be encrypted.<br />
<img src="http://blog.sambull.org/wp-uploads/encrypt-applications.png" alt="Encrypt Applications dialog" /></p>
<h2>Multi-keyring support</h2>
<p>Another thing I wanted to mention, is that for an auto-login account like this, multi-keyring support needs to be improved.</p>
<p>For my laptop, I have a passwordless keyring to handle network authentication and anything else that should be used upon logging in without prompting me. I then have a normal keyring to handle the things I actually want to keep secure.</p>
<p>To improve this experience:</p>
<ul>
<li>In Seahorse, it should be possible to drag passwords between keyrings.</li>
<li>When saving a new password to a keyring, it should give an option in the prompt to specify which keyring it is added to.</li>
</ul>
<h2>Summary</h2>
<p>Hopefully this gives some ideas on how we can improve security without breaking up the user experience. With these proposals, the user will only ever have to enter their password to unlock the keyring once per session, this is the only point where the security will be noticed in the daily use of the system.</p>
<p>This should also provide a modular approach to security, where the user can decide exactly what they want protected. For example, I have Firefox encrypted and a few folders. I am happy to lend my laptop to a friend, and they can browse the internet using Web, look through my Documents (which I have backed up, so meddling isn&#8217;t a real concern), or any other task that&#8217;s not blocked by security measures.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sambull.org/security-design/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Internet</title>
		<link>http://blog.sambull.org/the-internet</link>
		<comments>http://blog.sambull.org/the-internet#comments</comments>
		<pubDate>Wed, 13 Feb 2013 20:17:51 +0000</pubDate>
		<dc:creator>Sam Bull</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.sambull.org/?p=180</guid>
		<description><![CDATA[A quick tour of the internet and how it works. I aim to provide a short, but reasonably comprehensive overview of the internet. Aimed at people who are interested in understanding how the internet works, but don't want to spend hours researching all the details.]]></description>
			<content:encoded><![CDATA[<p>This is an essay I wrote for my computer science course, where I had to explain a technical topic to a non-technical user.</p>
<p>It is a quick tour of the internet and how it works. The aim is to provide a short, but reasonably comprehensive overview of the internet. It is for people who are interested in how the internet works, but don&#8217;t want to spend hours researching all the details.</p>
<p>We&#8217;ll start by looking at the low-level design of the internet and gradually move up to browsing a website.</p>
<h2>What is the internet?</h2>
<p>Contrary to popular belief, the internet is neither a single physical entity or a large amorphous network. Rather, it is a network of networks.</p>
<p>These sub-networks are called Autonomous Systems (AS). There are just over 43,000 ASs connected to this network (<a href="http://www.cidr-report.org/as2.0/#General_Status">at the beginning of 2013</a>). Each AS consists of a network of nodes connected together.</p>
<h2>Where am I in this network?</h2>
<p>There are often further sub-networks. For example, when you connect to the internet, it is likely that your device is directly connected to a local network. This local network is often provided by a router in the same building, whether using a wired or wireless connection.</p>
<p>That router may have a direct connection to a node of your ISP&#8217;s (internet provider&#8217;s) AS.</p>
<h2>How does data reach other devices?</h2>
<p>In order to communicate with someone on the other side of the world, data is routed through the user&#8217;s local network and sent to the connected AS. From there, it is routed through the AS to reach the internet. At this point, it is routed through the internet to the AS the recipient is connected to, and through that AS to reach the recipient&#8217;s local network, where it is finally routed to their device.</p>
<p>IP (Internet Protocol) is used to work out where to route data to. This is achieved by assigning unique IP addresses to each device connected to the internet. In the case of our example, the user&#8217;s device will have been assigned a local IP address from the router, while the router (connected to the AS), will have a global IP address on the internet.</p>
<p>The internet uses part of the address to work out which AS data should be sent to. The AS uses the other part of the address to work out which node on it&#8217;s network to route to.</p>
<h2>What if something goes wrong?</h2>
<p>The network is designed to update its routes if a node disappears, becomes congested etc. Despite this, data frequently fails to reach its target.</p>
<p>To work around this, the TCP protocol is often used on top of the IP protocol (TCP/IP). This protocol allows data to be split into small packets. A packet is a chunk of data with additional information attached, including its destination among other things.</p>
<p>When data is sent to a recipient using TCP, it will first establish a connection with the recipient. This process is called &#8216;handshaking&#8217;, and is simply a way for both sides to confirm there is a connection between them and initialise data transfer.</p>
<p>At the end of receiving a series of packets, the recipient will send a reply packet to acknowledge this. If this acknowledgement is not received, the sender will assume the packets failed to arrive and resend the data packets.</p>
<h2>How does a website work?</h2>
<h3>Domain names?</h3>
<p>When a user enters a URL (e.g. http://google.com) into a browser, the first thing it must do is translate the domain name into an IP address. The domain name is the main part of a URL delimited with &#8216;.&#8217; (google.com), and is translated by querying a Domain Name System (DNS) server.</p>
<p>The machine may need to query a root DNS server to find the server for the given TLD (top level domain (e.g. .com)). It will then query that server to find the IP address for google.com.</p>
<p>A domain name may consist of multiple sub-domains, each of which may require looking up another DNS server to reach the final IP address. For example, foo.bar.gov.uk would start by looking up the TLD (.uk), at that server it would look for &#8216;gov&#8217;, at the next it would look for &#8216;bar&#8217;, and at the last DNS server it would get an IP address for &#8216;foo&#8217;.</p>
<h3>How does it get the web page?</h3>
<p>After a browser has retrieved the IP address of the server, the browser will begin communicating with the server; it will send a request to the server for a web page.</p>
<p>The web page is specified after the domain name, the part after the &#8216;/&#8217; (e.g. example.com/something.html). If no specific web page is specified, the server will choose a default page (typically called something like index.html).</p>
<p>If multiple parts are listed, such as example.com/foo/bar/baz.html, these can be thought of as sub-folders on the server.</p>
<p>The server will then send a reply with the requested page.</p>
<h3>How does a page display?</h3>
<p>The returned page is an HTML document. HTML is a markup language, which means that it describes what each part of the content is (e.g. header, table etc.). The browser will read this file, and decide from this information how to display it.</p>
<p>This is a single text file, but can contain links to images and other content which the browser will download separately and then display as part of the page. It can also contain links to other web pages and provide methods for sending additional data to the server.</p>
<h2>Further Reading</h2>
<p>We&#8217;ve taken a brief look at many different parts of the internet, if you&#8217;d like to learn more about any of these parts, the links below may give you a good start:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Autonomous_system_%28Internet%29">Autonomous System</a></li>
<li><a href="http://en.wikipedia.org/wiki/Routing_protocol">Routing</a></li>
<li><a href="http://en.wikipedia.org/wiki/Internet_protocol_suite">Internet protocols</a></li>
<li><a href="http://en.wikipedia.org/wiki/Domain_Name_System">DNS</a></li>
<li><a href="http://www.w3schools.com/html/default.asp">HTML</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.sambull.org/the-internet/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pygame GUI 0.2</title>
		<link>http://blog.sambull.org/pygame-gui-0-2</link>
		<comments>http://blog.sambull.org/pygame-gui-0-2#comments</comments>
		<pubDate>Mon, 08 Oct 2012 19:06:47 +0000</pubDate>
		<dc:creator>Sam Bull</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Game Development Updates]]></category>
		<category><![CDATA[GSoC]]></category>

		<guid isPermaLink="false">http://blog.sambull.org/?p=175</guid>
		<description><![CDATA[<p>Finally, the first stable release is available to download.</p> <p>This project provides a simple to use GUI toolkit that can be easily dropped into an existing game project. It will run with no code differences in either normal Pygame or Pygame+OpenGL.</p> <p>You can download the source code from <a href="https://launchpad.net/simplegc">launchpad.net/simplegc</a>, while documentation is available at [...]]]></description>
			<content:encoded><![CDATA[<p>Finally, the first stable release is available to download.</p>
<p>This project provides a simple to use GUI toolkit that can be easily dropped into an existing game project. It will run with no code differences in either normal Pygame or Pygame+OpenGL.</p>
<p>You can download the source code from <a href="https://launchpad.net/simplegc">launchpad.net/simplegc</a>, while documentation is available at <a href="http://program.sambull.org/sgc/">program.sambull.org/sgc</a> or a Devhelp version can be downloaded from the Launchpad page.</p>
<h2>Looking to the future</h2>
<p>For the future 0.4 series, I will focus on optimisations and creating a more dynamic positioning/sizing system. Dynamic positioning/sizing will allow for a more usable interface regardless of the resolution the user runs the game at, and will allow the game to work well when the window is resized.</p>
<p>There will also likely be additional releases in the 0.2 series with new features and additional widgets being added.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sambull.org/pygame-gui-0-2/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Easily encrypt folders</title>
		<link>http://blog.sambull.org/easily-encrypt-folders-2</link>
		<comments>http://blog.sambull.org/easily-encrypt-folders-2#comments</comments>
		<pubDate>Tue, 21 Aug 2012 19:32:08 +0000</pubDate>
		<dc:creator>Sam Bull</dc:creator>
				<category><![CDATA[Linux Tips]]></category>

		<guid isPermaLink="false">http://blog.sambull.org/?p=131</guid>
		<description><![CDATA[Encfs is a program that can be used to encrypt folders, unlike other encryption methods this doesn't require a file of a fixed size, so you can use the decrypted folder in the same way as a regular folder without worrying about space.

This tutorial will explain how you can use a plugin as a convenient way to use this tool.]]></description>
			<content:encoded><![CDATA[<p>Encfs is a program that can be used to encrypt folders, unlike other encryption methods this doesn&#8217;t require a file of a fixed size, so you can use the decrypted folder in the same way as a regular folder without worrying about space.</p>
<p>This tutorial will explain how you can use a plugin as a convenient way to use this tool.</p>
<h2 id="install">Pre-installation</h2>
<p>In order to use this plugin you will of course need to install the encfs program first, the easiest way to do that (on Ubuntu) is to try clicking this link:<br />
<a href="apt:encfs">apt:encfs</a></p>
<p>or copy this into a terminal:<br />
<code>sudo apt-get install encfs -y</code></p>
<p>In addition to this we will be using gnome-encfs, a small program that allows you to use the gnome-keyring to store encryption passwords. This program by Oben Sonne can be found <a href="https://bitbucket.org/obensonne/gnome-encfs/" target="_blank">here</a>; after downloading it, extract the gnome-encfs file to your home folder.</p>
<p>Then to install it run:<br />
<code>sudo install gnome-encfs /usr/local/bin</code></p>
<h2>Installation</h2>
<p>To install the actual plugin simply open a terminal and copy &amp; paste these commands:<br />
<code>sudo apt-get install python-nautilus<br />
mkdir -p ~/.local/share/nautilus-python/extensions/<br />
cd ~/.local/share/nautilus-python/extensions/<br />
wget http://sambull.org/downloads/encrypt-nautilus.py<br />
chmod a+x encrypt-nautilus.py</code></p>
<p>If you want to try this out immediately, press Alt+F2 and enter &#8220;nautilus -q&#8221;, then repeat and enter &#8220;nautilus&#8221;, otherwise it will be available next time you login.</p>
<h2 id="usage">Usage</h2>
<p>This new version has a greatly simplified and streamlined interface.</p>
<p>Simply right-click a folder you want to encrypt and click &#8220;Encrypt folder&#8221;, confirm when prompted and the contents of the folder will be immediately encrypted.</p>
<p>To view the decrypted contents, simply open the folder in Nautilus and it will be automatically mounted. If you want to manually unmount the folder, simply right-click and click &#8220;Unmount encrypted folder&#8221;.</p>
<h2 id="notes">Notes</h2>
<p>If you want to backup your encrypted files, they are stored in a hidden folder called &#8220;.[name]-enc&#8221;.</p>
<p>Folders are encrypted with a randomly generated password, which is stored in your keyring. Make sure you backup your keyring, or you risk losing all your encrypted files.</p>
<p>If you want to move/rename a folder, you will need to move/rename both the folder, and it&#8217;s encrypted counterpart. You will then also need to update the keyring. I hope to remove the last step in another update in the future.</p>
<h2>Upgrading</h2>
<p>If you&#8217;ve used the extension before the latest update, you will need to change your encrypted folders to work with this new extension. Simply rename each of your encrypted folders to &#8220;.[name]-enc&#8221; and create an empty folder called &#8220;[name]&#8220;. If you then open the latter folder, you should be prompted for a password, copy this from the password stored in you keyring and you should be setup (you can then delete the old password from the keyring).</p>
<h2>Extension</h2>
<p>I&#8217;ve written a follow-up post to this one that explains how this can be used to encrypt Firefox data seamlessly. You can read it <a href="http://blog.sambull.org/encrypt-firefox/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sambull.org/easily-encrypt-folders-2/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SGC 0.1.8 final beta release</title>
		<link>http://blog.sambull.org/sgc-0-1-8-final-beta-release</link>
		<comments>http://blog.sambull.org/sgc-0-1-8-final-beta-release#comments</comments>
		<pubDate>Tue, 21 Aug 2012 16:17:31 +0000</pubDate>
		<dc:creator>Sam Bull</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[GSoC]]></category>

		<guid isPermaLink="false">http://blog.sambull.org/?p=122</guid>
		<description><![CDATA[<p>Now at the end of GSoC, I am releasing the last beta leading up to the 0.2 stable release.</p> <p>This release primarily adds documentation for creating your own widgets. The<br /> documentation can be found at: <a href="http://program.sambull.org/sgc/dev.html">program.sambull.org/sgc/dev.html</a></p> <p>You can download the source code from the usual location <a href="https://launchpad.net/simplegc">launchpad.net/simplegc</a>, while documentation is available at [...]]]></description>
			<content:encoded><![CDATA[<p>Now at the end of GSoC, I am releasing the last beta leading up to the 0.2 stable release.</p>
<p>This release primarily adds documentation for creating your own widgets. The<br />
documentation can be found at: <a href="http://program.sambull.org/sgc/dev.html">program.sambull.org/sgc/dev.html</a></p>
<p>You can download the source code from the usual location <a href="https://launchpad.net/simplegc">launchpad.net/simplegc</a>, while documentation is available at <a href="http://program.sambull.org/sgc/">program.sambull.org/sgc</a> or a Devhelp version can be downloaded from the Launchpad page.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sambull.org/sgc-0-1-8-final-beta-release/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SGC 0.1.7 beta release</title>
		<link>http://blog.sambull.org/sgc-0-1-7-beta-release</link>
		<comments>http://blog.sambull.org/sgc-0-1-7-beta-release#comments</comments>
		<pubDate>Wed, 01 Aug 2012 13:08:16 +0000</pubDate>
		<dc:creator>Sam Bull</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[GSoC]]></category>

		<guid isPermaLink="false">http://blog.sambull.org/?p=119</guid>
		<description><![CDATA[<p>This will be one of the last beta releases leading up to the 0.2 stable release.</p> <p>This release adds an EventSlot object in locals, which allows a more dynamic addition and removal of callback functions. We also have a new DialogSaveQuit widget, which is a convenience widget to ask the user if they want to [...]]]></description>
			<content:encoded><![CDATA[<p>This will be one of the last beta releases leading up to the 0.2 stable release.</p>
<p>This release adds an EventSlot object in locals, which allows a more dynamic addition and removal of callback functions. We also have a new DialogSaveQuit widget, which is a convenience widget to ask the user if they want to save their work when quitting. Also added is basic relative positioning support, by passing in a string (like &#8220;30%&#8221;) into the pos or size arguments in place of an integer, it will use the relative size; this makes it easier to support differing screen resolutions in your game.</p>
<p>Also added, are some assert statements which help you fail early and with a more meaningful error.</p>
<p>And finally, the transparency problem that has been plaguing me since I started this project has finally been fixed. Thanks so much to Radomir Dopieralski for helping me with that.</p>
<p>You can download the source code from the usual location <a href="https://launchpad.net/simplegc">launchpad.net/simplegc</a>, while documentation is available at <a href="http://program.sambull.org/sgc/">program.sambull.org/sgc</a> or a Devhelp version can be downloaded from the Launchpad page.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sambull.org/sgc-0-1-7-beta-release/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SGC 0.1.6 beta release</title>
		<link>http://blog.sambull.org/sgc-0-1-6-beta-release</link>
		<comments>http://blog.sambull.org/sgc-0-1-6-beta-release#comments</comments>
		<pubDate>Thu, 19 Jul 2012 14:03:05 +0000</pubDate>
		<dc:creator>Sam Bull</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[GSoC]]></category>

		<guid isPermaLink="false">http://blog.sambull.org/?p=111</guid>
		<description><![CDATA[<p>After two weeks of conferences, I have another beta release.</p> <p>This release adds working OpenGL support. At the moment this is very inefficient, but will be optimised in some future release.</p> <p>Also improved in this release is the Menu widget. The menu widget now supports importing a variety of different widgets. The menu format is [...]]]></description>
			<content:encoded><![CDATA[<p>After two weeks of conferences, I have another beta release.</p>
<p>This release adds working OpenGL support. At the moment this is very inefficient, but will be optimised in some future release.</p>
<p>Also improved in this release is the Menu widget. The menu widget now supports importing a variety of different widgets. The menu format is now slightly improved and actually documented, so you can actually work out how to create your own menus. Sometime in a future release, I hope to add a drag &#8216;n&#8217; drop menu creator tool so people won&#8217;t need to mess around with this data directly.</p>
<p>As always, you can download the source code from the usual location <a href="https://launchpad.net/simplegc">launchpad.net/simplegc</a>, while documentation is available at <a href="http://program.sambull.org/sgc/">program.sambull.org/sgc</a> or a Devhelp version can be downloaded from the Launchpad page.</p>
<p>The new menu format documentation is at: <a href="http://program.sambull.org/sgc/dev.menu.html">program.sambull.org/sgc/dev.menu.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sambull.org/sgc-0-1-6-beta-release/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Starting OpenGL development</title>
		<link>http://blog.sambull.org/starting-opengl-development</link>
		<comments>http://blog.sambull.org/starting-opengl-development#comments</comments>
		<pubDate>Fri, 29 Jun 2012 11:54:55 +0000</pubDate>
		<dc:creator>Sam Bull</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[GSoC]]></category>

		<guid isPermaLink="false">http://blog.sambull.org/?p=108</guid>
		<description><![CDATA[<p>This week, I have started fixing the OpenGL support for the toolkit. Mike Fletcher gave me the brilliant idea of using Pygame&#8217;s surfaces as textures in OpenGL. This means there is a lot less work than I had anticipated, and I already have some code working. This also helps to guarantee that the OpenGL version [...]]]></description>
			<content:encoded><![CDATA[<p>This week, I have started fixing the OpenGL support for the toolkit. Mike Fletcher gave me the brilliant idea of using Pygame&#8217;s surfaces as textures in OpenGL. This means there is a lot less work than I had anticipated, and I already have some code working. This also helps to guarantee that the OpenGL version looks identical to the regular Pygame version.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sambull.org/starting-opengl-development/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SGC 0.1.5 beta release</title>
		<link>http://blog.sambull.org/sgc-0-1-5-beta-release</link>
		<comments>http://blog.sambull.org/sgc-0-1-5-beta-release#comments</comments>
		<pubDate>Wed, 20 Jun 2012 16:56:40 +0000</pubDate>
		<dc:creator>Sam Bull</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[GSoC]]></category>

		<guid isPermaLink="false">http://blog.sambull.org/?p=104</guid>
		<description><![CDATA[<p>After another couple of weeks, I can now announce another beta release. This version improves support for custom themes.</p> <p>I had some difficulty getting the final parts of this to work properly. Some widgets use extra images for things like the handle in the Switch widget, and getting this to work correctly was fairly complex. [...]]]></description>
			<content:encoded><![CDATA[<p>After another couple of weeks, I can now announce another beta release. This version improves support for custom themes.</p>
<p>I had some difficulty getting the final parts of this to work properly. Some widgets use extra images for things like the handle in the Switch widget, and getting this to work correctly was fairly complex. I managed to work it out in the end though.</p>
<p>Anyway, if you&#8217;d like to try out the new release, you can download the source code from the usual location: <a href="https://launchpad.net/simplegc">launchpad.net/simplegc</a></p>
<p>Documentation is available at <a href="http://program.sambull.org/sgc/">program.sambull.org/sgc</a> or a Devhelp version can be downloaded from the Launchpad page. Don&#8217;t forget to check out the new tutorial: <a href="http://program.sambull.org/sgc/tutorial.theming.html">program.sambull.org/sgc/tutorial.theming.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sambull.org/sgc-0-1-5-beta-release/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SGC 0.1.4 beta release</title>
		<link>http://blog.sambull.org/sgc-0-1-4-beta-release</link>
		<comments>http://blog.sambull.org/sgc-0-1-4-beta-release#comments</comments>
		<pubDate>Sat, 09 Jun 2012 10:42:59 +0000</pubDate>
		<dc:creator>Sam Bull</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[GSoC]]></category>

		<guid isPermaLink="false">http://blog.sambull.org/?p=101</guid>
		<description><![CDATA[<p>We&#8217;re at the end of the third week of GSoC, and I am releasing another beta to the community to test out.</p> <p>This version has the labels decoupled, meaning that the widgets no longer need to dynamically resize to accommodate the labels. This makes widget development easier and means the widgets are a more consistent [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re at the end of the third week of GSoC, and I am releasing another beta to the community to test out.</p>
<p>This version has the labels decoupled, meaning that the widgets no longer need to dynamically resize to accommodate the labels. This makes widget development easier and means the widgets are a more consistent size. This also has the advantage that labels can now be added to almost any widget, and can be attached to any side of the widget.</p>
<p>The second thing that I&#8217;ve been working on for GSoC is events. There are now more events being used in the toolkit. There is also now a tutorial for the events: <a href="http://program.sambull.org/sgc/tutorial.events.html">http://program.sambull.org/sgc/tutorial.events.html</a></p>
<p>The project can be found at: <a href="https://launchpad.net/simplegc">https://launchpad.net/simplegc</a></p>
<p>Hopefully the community will start testing this out, and I will soon have some feedback on this work.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sambull.org/sgc-0-1-4-beta-release/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beginning GSoC</title>
		<link>http://blog.sambull.org/beginning-gsoc</link>
		<comments>http://blog.sambull.org/beginning-gsoc#comments</comments>
		<pubDate>Mon, 28 May 2012 10:39:15 +0000</pubDate>
		<dc:creator>Sam Bull</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[GSoC]]></category>

		<guid isPermaLink="false">http://blog.sambull.org/?p=97</guid>
		<description><![CDATA[<p>After frantically fixing my server and sorting out several other things, I&#8217;m finally making my first GSoC post. We&#8217;re currently a week into the project and as per my schedule, I have been working on sorting out some issues with labels in my toolkit. I have nearly finished this, and it will be available in [...]]]></description>
			<content:encoded><![CDATA[<p>After frantically fixing my server and sorting out several other things, I&#8217;m finally making my first GSoC post. We&#8217;re currently a week into the project and as per my schedule, I have been working on sorting out some issues with labels in my toolkit. I have nearly finished this, and it will be available in the next beta release.</p>
<p>I have also restructured some of the code and have begun adding a few little images to the documentation to give a preview of each widget. All of these improvements will be in the next beta release in a couple of week&#8217;s time.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sambull.org/beginning-gsoc/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encrypt Firefox data</title>
		<link>http://blog.sambull.org/encrypt-firefox</link>
		<comments>http://blog.sambull.org/encrypt-firefox#comments</comments>
		<pubDate>Sat, 05 Mar 2011 12:24:44 +0000</pubDate>
		<dc:creator>Sam Bull</dc:creator>
				<category><![CDATA[Linux Tips]]></category>

		<guid isPermaLink="false">http://blog.sambull.org/?p=57</guid>
		<description><![CDATA[This is a little extension to my previous post on <a href="http://blog.sambull.org/linux/tips/easily-encrypt-folders/">encrypting folders</a>. Using the same tools previously created, we will make it easy to store Firefox's data encrypted, to be automatically decrypted when you run Firefox. This technique should be easily used for other web browsers as well.

Once setup, it will be no more hassle to use than running Firefox normally.]]></description>
			<content:encoded><![CDATA[<p>This is a little extension to my previous post on <a href="http://blog.sambull.org/easily-encrypt-folders-2">encrypting folders</a>. Using the same tools previously created, we will make it easy to store Firefox&#8217;s data encrypted, to be automatically decrypted when you run Firefox. This technique should be easily used for other web browsers as well.</p>
<p>Like the previous guide, this may require a little bit of effort to setup. But, once you have it setup, it will be no more hassle to use than running Firefox normally.</p>
<p>I am going to describe two methods, one for people who login to their computers, and the other for people who have auto-login enabled.<br />
<a id="enc"><br />
<h2>Encrypt folder</h2>
<p></a><br />
Simply navigate to the <code>.mozilla</code> folder (Ctrl+H shows hidden folders). In here you should see a <code>firefox</code> folder.</p>
<p>Now right-click and &#8220;Encrypt folder&#8221; the <code>firefox</code> folder.<br />
<a id="norm"><br />
<h2>Normal Login</h2>
<p></a><br />
If you login to your computer normally, start by encrypting the folder as above.</p>
<p>Now run in a terminal:<br />
<code>gnome-encfs -e ~/.mozilla/firefox</code><br />
Hit enter to accept the existing settings for the first 3 things, but set mount at login to &#8216;y&#8217;.</p>
<p>Now, whenever you login it will automatically mount the encrypted firefox data, ready for Firefox to use.</p>
<h2>Auto-login</h2>
<p>Auto-login users have two choices.</p>
<p>The first option, is to use the exact same method as the normal login solution. The drawback of this, is that every time you login (because it will try to mount on login) you will always be asked for your password to unlock the keyring.</p>
<p>The second option will only ask for your password when you try to run Firefox, this allows you to have a system that auto-login&#8217;s without any annoying pop-up windows when you start. This option requires a little more setup and maintenance though.</p>
<h3>Second Method</h3>
<p>First, encrypt the folder as described <a href="#enc">above</a>.</p>
<p>Next, you need to save a couple of simple scripts:</p>
<p><code>cd /usr/local/bin/<br />
sudo wget sambull.org/downloads/.firefox_encrypt<br />
sudo chmod +x /usr/local/bin/.firefox_encrypt<br />
sudo wget sambull.org/downloads/fix_firefox<br />
sudo chmod +x /usr/local/bin/fix_firefox</code></p>
<p>Now run the latter script: <code>sudo fix_firefox</code></p>
<p>This script simply renames the firefox program to firefox-dc, then creates a link, so whenever anything tries to run Firefox, it will actually run our little script. Our script then mounts the Firefox data and launches the real Firefox.</p>
<h4>Usage</h4>
<p>Just launch Firefox as you normally would, if your keyring hasn&#8217;t been unlocked yet you&#8217;ll be prompted for the password to unlock, and then Firefox will launch as normal.</p>
<h4>Maintenance</h4>
<p>One drawback of this method is that it requires a little bit of maintenance. Whenever the system updates Firefox, it is going to overwrite the link we made earlier. This is why we saved <code>fix_firefox</code> as a script, we now need to run this script everytime Firefox is updated.</p>
<p>Fortunately, we can automate this. Simply run:</p>
<p><code>sudo gedit /etc/apt/apt.conf.d/70debconf</code></p>
<p>and add a new line:</p>
<p><code>Dpkg::Post-Invoke{"/usr/local/bin/fix_firefox";};</code></p>
<p>Now, after a reboot, it will run our script everytime the computer is updated.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sambull.org/encrypt-firefox/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Howto: Easily encrypt individual folders</title>
		<link>http://blog.sambull.org/easily-encrypt-folders</link>
		<comments>http://blog.sambull.org/easily-encrypt-folders#comments</comments>
		<pubDate>Fri, 31 Dec 2010 20:30:08 +0000</pubDate>
		<dc:creator>Sam Bull</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Archived]]></category>

		<guid isPermaLink="false">http://blog.sambull.org/?p=8</guid>
		<description><![CDATA[<strong style="color:red">WARNING: This tutorial has been superseded by a future tutorial, using a full plugin, found <a href="http://blog.sambull.org/easily-encrypt-folders-2">here</a>.</strong>]]></description>
			<content:encoded><![CDATA[<p><strong style="color:red">WARNING: This tutorial has been superseded by a future tutorial, using a full plugin, found <a href="http://blog.sambull.org/easily-encrypt-folders-2">here</a>.</strong></p>
<p>Encfs is a program that can be used to encrypt folders, unlike other encryption methods this doesn&#8217;t require a file of a fixed size, so you can use the decrypted folder in the same way as a regular folder without worrying about space.</p>
<p>This tutorial will explain a convenient way to use this tool.</p>
<p>This method can both be used from the GUI and the command line.<br />
To understand if this is what you want please read the example in the <a href="#usage">usage</a> section at the bottom before going through the setup.</p>
<h2>Pre-installation</h2>
<p>First, you will of course need to install the encfs program, the easiest way to do that (on Ubuntu) is to try clicking this link:</p>
<p><a href="apt:encfs">apt:encfs</a></p>
<p>or copy this into a terminal:</p>
<p><code>sudo apt-get install encfs -y</code></p>
<p>In addition to this we will be using gnome-encfs, a small program that allows you to use the gnome-keyring to store encryption passwords. This program by Oben Sonne can be found <a href="https://bitbucket.org/obensonne/gnome-encfs/" target="_blank">here</a>, after downloading it, extract the gnome-encfs file to your home folder.</p>
<p>Then to install it run:</p>
<p><code>sudo install gnome-encfs /usr/local/bin</code></p>
<h2>Installation</h2>
<p>To do this, we will be using a couple of scripts, that can be used in Nautilus (the file manager) or from the command line.</p>
<h3>Scripts</h3>
<p>To install these scripts just save them into ~/.gnome2/nautilus-scripts/ (that is the folder <code>nautilus-scripts</code> in the <code>.gnome2</code> hidden folder in your home folder):</p>
<p>You can download the first script <a href="http://sambull.org/archive/emount">here</a>. Right-click &gt; Save as, then save it in the above folder (Ctrl+H shows hidden folders). Save it with whatever name you want to appear in the menu.</p>
<p>Repeat this for the unmount script, found <a href="http://sambull.org/archive/eumount">here</a>.</p>
<p>In order to allow them to run, you need to make them executable, in the terminal this can be done by copying and pasting:</p>
<p><code>chmod +x ~/.gnome2/nautilus-scripts/emount ~/.gnome2/nautilus-scripts/eumount</code></p>
<p>Don&#8217;t forget to change the <code>emount</code> and <code>eumount</code> names if you&#8217;re using different names.</p>
<p>Now if you right-click on a folder, go to scripts, you should see emount and eumount (or whatever you named them). Read the <a href="#usage">usage</a> section to find out how to use them.</p>
<h3>Command Line</h3>
<p>To use the scripts from the command line, we need to make symlinks, just run:</p>
<p><code>sudo ln -s ~/.gnome2/nautilus-scripts/emount /usr/local/bin/emount &#038;&#038;<br />
sudo ln -s ~/.gnome2/nautilus-scripts/eumount /usr/local/bin/eumount</code></p>
<p>Change the first <code>emount</code> to the name you saved for the GUI, and the second <code>emount</code> to the name you want to use for the command. Repeat with <code>eumount</code>.</p>
<h2><a id="usage">Usage</a></h2>
<p>I&#8217;ll give a little example here to demonstrate usage. Let&#8217;s say your Pictures folder contains some naughty images and you&#8217;d like to encrypt the entire folder. Let&#8217;s also say we want to do this from the GUI without using the command line.</p>
<div id="attachment_13" class="wp-caption aligncenter" style="width: 510px"><a href="http://blog.sambull.org/wp-uploads/2010/12/usage0.png"><img class="size-full wp-image-13  " title="usage0" src="http://blog.sambull.org/wp-uploads/2010/12/usage0.png" alt="Pictures folder" width="500" height="355" /></a><p class="wp-caption-text">The contents of my Pictures folder.</p></div>
<h3>Encrypting</h3>
<p>Simply right-click and <code>emount</code> the folder you want to encrypt. A window will now pop-up asking for the name of the folder where the decrypted contents will be displayed, I&#8217;ll use <code>pictures-decrypted</code> for this, you can use any name you like.</p>
<div id="attachment_14" class="wp-caption aligncenter" style="width: 227px"><a href="http://blog.sambull.org/wp-uploads/2011/02/screenshot1.png"><img class="size-full wp-image-53" title="usage1" src="http://blog.sambull.org/wp-uploads/2011/02/screenshot1.png" alt="Creating the encrypted folder" width="217" height="195" /></a><p class="wp-caption-text">Naming the decrypted folder.</p></div>
<p>It will then ask if you want to have it automatically mount at login, this will allow you to have it always decrypted for you, but make sure nobody else will be able to see the contents without logging in. Finally, it asks you for a password, this is the password you want it to use for decrypting the folder (not your login).</p>
<p>You will then see a new folder has been created, in my case it&#8217;s called pictures-decrypted. This new folder is the decrypted contents of the Pictures folder. If you add any new files, you need to save them into this decrypted folder, they will then automatically be encrypted.</p>
<div id="attachment_54" class="wp-caption aligncenter" style="width: 489px"><a href="http://blog.sambull.org/wp-uploads/2011/02/usage2.png"><img class="size-full wp-image-54" title="usage2" src="http://blog.sambull.org/wp-uploads/2011/02/usage2.png" alt="Folders after decryption" width="479" height="349" /></a><p class="wp-caption-text">The folders after decrypting.</p></div>
<h4>Unmounting</h4>
<p>Simply right-click <code>pictures-decrypted</code> and select eumount. The decrypted folder should now have vanished.</p>
<p>If you look in the Pictures folder you will see that the contents are all encrypted and you will be unable to view any of the files.</p>
<div id="attachment_16" class="wp-caption aligncenter" style="width: 490px"><a href="http://blog.sambull.org/wp-uploads/2010/12/usage3.png"><img class="size-full wp-image-16  " title="usage3" src="http://blog.sambull.org/wp-uploads/2010/12/usage3.png" alt="The encrypted contents" width="480" height="353" /></a><p class="wp-caption-text">With the contents encrypted nobody will be able to view them anymore.</p></div>
<h4>Command Line</h4>
<p>This works similarly to the GUI, but used from the command line:</p>
<p><code>emount foo/</code></p>
<p>will decrypt (or encrypt if it&#8217;s not encrypted yet) the <code>foo</code> folder. While:</p>
<p><code>eumount bar/</code></p>
<p>will unmount the <code>bar</code> folder.</p>
<h4>Auto-mount tip</h4>
<p>If you are going to auto-mount the folder on login, then you could rename the encrypted folder to something like <code>.pictures-encrypt</code> (the . makes it a hidden folder). Then when you make it encrypted, you can name the decrypted folder Pictures, so the encrypted folder remains hidden, and the decrypted folder acts like your normal pictures folder.</p>
<h3>Decrypting</h3>
<p>Now in future all you have to do is right-click the Pictures folder and select emount. It will then retrieve your password from gnome-keyring and the decrypted folder will appear there with all your pictures in, and right-clicking and eumount will make them disappear again, so nobody will be able to view them without your password.</p>
<h2>Extension</h2>
<p>I&#8217;ve written a follow-up post to this one that explains how this can be used to encrypt Firefox data seamlessly. You can read it <a href="http://blog.sambull.org/encrypt-firefox/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sambull.org/easily-encrypt-folders/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
