<?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>Jason's Computer Science Blog</title>
	<atom:link href="http://www.jasonernst.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jasonernst.com</link>
	<description>By Jason Ernst</description>
	<lastBuildDate>Fri, 11 May 2012 17:36:38 +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>Toshiba Laptop + Ubuntu, Wireless Switch Problem</title>
		<link>http://www.jasonernst.com/2012/03/05/toshiba-laptop-ubuntu-wireless-switch-problem/</link>
		<comments>http://www.jasonernst.com/2012/03/05/toshiba-laptop-ubuntu-wireless-switch-problem/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 01:29:31 +0000</pubDate>
		<dc:creator>Jason Ernst</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Wireless Networks]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Off]]></category>
		<category><![CDATA[Realtek]]></category>
		<category><![CDATA[Satellite]]></category>
		<category><![CDATA[Switch]]></category>
		<category><![CDATA[Toshiba]]></category>
		<category><![CDATA[Turned]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Wireless]]></category>

		<guid isPermaLink="false">http://www.jasonernst.com/?p=1992</guid>
		<description><![CDATA[Just a quick post, about an annoyance with my Toshiba Satellite laptop. Maybe it will help someone, but the wireless card had no power because the &#8220;hardware switch&#8221; was turned off. This laptop has no power switch. The function keys which turn it on/off in Windows do not seem to work in Ubuntu. The solution [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick post, about an annoyance with my Toshiba Satellite laptop. Maybe it will help someone, but the wireless card had no power because the &#8220;hardware switch&#8221; was turned off. This laptop has no power switch. The function keys which turn it on/off in Windows do not seem to work in Ubuntu. The solution was found originally in the post below, but to save some time, the solution for me was to power the laptop off, take out batter for 30 seconds, holding down the power button. Then when the laptop is powered back on, the wireless in Ubuntu works. Hopefully this won&#8217;t need to be repeated over and over, but at least its working now.</p>
<p>http://askubuntu.com/questions/106568/my-wireless-has-suddenly-became-disabled-by-hardware-switch-bios-rfkill-fnf8</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonernst.com/2012/03/05/toshiba-laptop-ubuntu-wireless-switch-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenGL Console Library for Blackberry Native SDK (Playbook)</title>
		<link>http://www.jasonernst.com/2012/01/24/opengl-console-library-for-blackberry-native-sdk-playbook/</link>
		<comments>http://www.jasonernst.com/2012/01/24/opengl-console-library-for-blackberry-native-sdk-playbook/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 20:41:29 +0000</pubDate>
		<dc:creator>Jason Ernst</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Blackberry]]></category>
		<category><![CDATA[Console]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Guide]]></category>
		<category><![CDATA[Native]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[Playbook]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.jasonernst.com/?p=1897</guid>
		<description><![CDATA[Over the break, I decided to try my hand at some Blackberry native SDK programming since I recently got a playbook. I looked around the App World and noticed there weren&#8217;t any telnet/ssh tools available for free (that worked the way I wanted) so I thought this would be a good starter project. However, for [...]]]></description>
			<content:encoded><![CDATA[<p>Over the break, I decided to try my hand at some Blackberry native SDK programming since I recently got a playbook. I looked around the App World and noticed there weren&#8217;t any telnet/ssh tools available for free (that worked the way I wanted) so I thought this would be a good starter project.</p>
<p>However, for the look I wanted, I wanted to maximize the screen space for the console application to show as much text as possible and worked off the hello world example on the SDK webpage. Essentially, the simple &#8220;library&#8221; (note: library is used very loosely here) initializes the display, shows the keyboard and supports some simple output using putch and puts functions that I implemented. It can also show a blinking cursor and user input at a prompt. In case someone else can use the code I have made it available. Check back soon to see the source for the telnet portion of the app I made as well or look for it on the App World.</p>
<p><center>
<div class="image"><a href="http://www.jasonernst.com/wp-content/uploads/2012/01/simple_telnet.png"><img src="http://www.jasonernst.com/wp-content/uploads/2012/01/simple_telnet-300x185.png" alt="Simple Telnet - Example Application" title="Simple Telnet - Example Application" width="300" height="185" class="aligncenter size-medium wp-image-1902" /></a><br/>Simple Telnet &#8211; Example Application using the conosole library</div>
<p></center></p>
<p>In order to use the library, you need to make use of the bbutil.c and bbutil.h files that are included in many of the examples provided by RIM. I have provided them here alongside my own code so that it is easier to follow along. I also provide two more files: glconsole.c and glconsole.h. You just need to #include &#8220;glconsole.h&#8221; in your source in order to use the library. All of the functions available to you are listed in the &#8220;glconsole.h&#8221; file as well. I will go over the important ones in this article.</p>
<p>First is gl_init(). This function initializes the library, the screen, font etc. This function should be called before using anything else in the library. Similarly, gl_cleanup() is used to free memory and should be called before your app is terminated.</p>
<p>After initialization, you may now use the puts and putch functions to display characters to the screen. gl_putch(char c) takes a single character and displays it onto the screen. It can handle newlines which are represented as &#8216;\n&#8217; and tabs which are represented as &#8216;\t&#8217;. Backspaces by user input is handled as a &#8216;\b&#8217; character. This is similar to how people on <a href="http://forum.osdev.org/">The osdev.rg website</a> often handle character output in their custom operating systems. I&#8217;m not sure how it relates with normal c standards, but I imagine it is similar. Eventually I hope to implement a printf() type of function, but at the moment the putch() and puts() functions serve what I am doing well enough. Note: puts() is the same as putch() but instead takes a (char *) ie) a string. The string should also be null-terminated, or it will just continue until it hits a null character. The characters are automatically scrolled when the bottom of the screen is reached. </p>
<p>The only other really important function is gl_render(). This function is what should be called everytime the screen needs to be refreshed. This is usually in a for loop within your main() function in your app.</p>
<p>It is also possible to resize the screen using the gl_resize() function. By default the screen starts at 80X29 which is the maximum size with no virtualkeyboard showing, at the font size I selected. When the keyboard shows up, it fits 80&#215;14. In some sample code I&#8217;ll also show how keyboard input can be handled, how to blink the cursor and how to detect when the keyboard is shown or hidden.</p>
<p>For the rest of this guide, I&#8217;ll assume you are using the QNX Momentix IDE available from RIM&#8217;s developer website. To start, create a new project by going to File->New Blackberry Tablet OS C/C++ Project. Name it whatever you like, click next. Then choose the C language, and empty Application Project. You can now drag the gl_console.c, glconsole.h, bbutil.c and bbutil.h files into the src folder within the IDE to include them. You will probably want to copy the files and not link them when it asks. Before compiling, there are several libaries which must be linked to the project. You can do this by right clicking your project, going to properties. Then go to C/C++ General->Paths and Symbols->Libraries. Here you can add libraries. Each time you add one, be sure to check &#8220;add to all Configurations&#8221; so that you don&#8217;t need to do this again if you change from a device-debug to device-release build. The following libraries should be included:</p>
<ul style="margin-left:30px; margin-bottom: 10px;">
<li>bps</li>
<li>EGL</li>
<li>GLESv1_CM</li>
<li>freetype</li>
<li>png</li>
</ul>
<p>Now that all this is setup, it is possible to start you main() function and use the library. If you like you can right click on your src folder and click &#8220;new file&#8221; and create a main.c file or whatever you like to name it. While this isn&#8217;t the typical way you would include a library into a project, this way lets you edit the library source to your liking in case you want to further extend it. </p>
<p>The following example shows a skeleton of what is required to get the code to display some text:</p>
<div class="snippet"><pre><code>#include &lt;stdlib.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* EXIT_FAILURE */
#include &lt;stddef.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* NULL */
#include &lt;bps/bps.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* BPS_SUCCESS */
#include &lt;bps/screen.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* screen_event_get_event() */
#include &lt;bps/navigator.h&gt;&nbsp;&nbsp;/* NAVIGATOR_EXIT */
#include &quot;glconsole.h&quot;

void handleScreenEvent(bps_event_t *event);

int main(int argc, char * argv[])
{
&nbsp;&nbsp;int exit_application = 0;

&nbsp;&nbsp;if(EXIT_SUCCESS != gl_init())
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr, &quot;error init\n&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
&nbsp;&nbsp;}

&nbsp;&nbsp;gl_puts(&quot;Hello gl console world!\n&quot;);

&nbsp;&nbsp;for(;;)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;bps_event_t *event = NULL;
&nbsp;&nbsp;&nbsp;&nbsp;if (bps_get_event(&amp;event, 0) != BPS_SUCCESS)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return EXIT_FAILURE;

&nbsp;&nbsp;&nbsp;&nbsp;if (event)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int domain = bps_event_get_domain(event);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (domain == screen_get_domain())
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handleScreenEvent(event);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if ((domain == navigator_get_domain()) &amp;&amp; (NAVIGATOR_EXIT == bps_event_get_code(event)))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit_application = 1;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (exit_application)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;gl_render();
&nbsp;&nbsp;}

&nbsp;&nbsp;gl_cleanup();
&nbsp;&nbsp;return 0;
}

void handleScreenEvent(bps_event_t *event)
{
&nbsp;&nbsp;/* do normal event handling here, see other bb examples */
}</code></pre></div>
<p>The key parts are calling gl_init() which initializes the library. Then within the main loop, the gl_render() function should be called which will actually render the text. Finally gl_cleanup() should be called before termination to properly free memory.</p>
<p>In the near future I plan to add some support to handle ansi encoded text (specifically for my telnet application) so that it can display colours and move the cursor around the screen using this standard.</p>
<p>Here are the files:<br />
<a href='http://www.jasonernst.com/wp-content/uploads/2012/01/glconsole.h'>glconsole.h</a><br />
<a href='http://www.jasonernst.com/wp-content/uploads/2012/01/glconsole.c'>glconsole.c</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonernst.com/2012/01/24/opengl-console-library-for-blackberry-native-sdk-playbook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Bluetooth Access point (NAP) in Ubuntu 11.10</title>
		<link>http://www.jasonernst.com/2011/11/29/creating-a-bluetooth-access-point-nap-in-ubuntu-11-10/</link>
		<comments>http://www.jasonernst.com/2011/11/29/creating-a-bluetooth-access-point-nap-in-ubuntu-11-10/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 01:06:13 +0000</pubDate>
		<dc:creator>Jason Ernst</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Wireless Networks]]></category>
		<category><![CDATA[11.10]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[Access Point]]></category>
		<category><![CDATA[Bluetooth]]></category>
		<category><![CDATA[Bluez]]></category>
		<category><![CDATA[NAP]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.jasonernst.com/?p=1848</guid>
		<description><![CDATA[A Bluetooth NAP is similar to a Wi-Fi access point. In this case, we will be using NAP to share an Internet connection to another computer with Bluetooth. It is supposed to be able to support 7 or 8 devices connected at once in this manner. Eventually my personal goal is to use this in [...]]]></description>
			<content:encoded><![CDATA[<p>A Bluetooth NAP is similar to a Wi-Fi access point. In this case, we will be using NAP to share an Internet connection to another computer with Bluetooth. It is supposed to be able to support 7 or 8 devices connected at once in this manner. Eventually my personal goal is to use this in conjunction with a Wi-Fi connection to get slightly more speed at once or for some redundancy to help achieve a more ubiquitous/pervasive connection.</p>
<p>It turns out what should be a simple process is a bit tricky in Ubuntu. You would expect to be able to create an IP access point fairly easily so that you can share your Internet connection to other devices using Bluetooth. (It turns out it may be possible with Blueman &#8211; http://blog.larsstrand.org/2009/04/sharing-internet-connection-over.html, but I&#8217;ve never had any luck with setting it up this way.) Here&#8217;s some of the steps and resources I used to get it to work. I am using one laptop with a generic usb dongle and another toshiba netbook with built-in Bluetooth for this.</p>
<p>Before anything is started, you need to make sure the devices are paired and trusted with one another. I found the easiest way to get this to work is with blueman (it is in the Ubuntu repos). Also it seems to work better if you initiate the pairing from the client (the computer not sharing the connection).</p>
<p>First, you need a bridge interface. This is easy enough in Ubuntu, by editing the /etc/network/interfaces file. If the interface you wish to share is eth0 (if you want to share a Wi-Fi connection instead, you could switch this with something like wlan0 or whatever your Wi-Fi interface is), you could add something like this:</p>
<p><pre><pre>auto br1
iface br1 inet dhcp
&nbsp;&nbsp;bridge_ports eth0
&nbsp;&nbsp;bridge_fd 9
&nbsp;&nbsp;bridge_hello 2
&nbsp;&nbsp;bridge_maxage 12
&nbsp;&nbsp;bridge_stp off
</pre></pre></p>
<p>Next you need to make sure both computers can see each other via Bluetooth. This requires enabling scanning and turning the NAP into a master and the client(s) into slaves. This can be done as follows:<br />
<pre>sudo hciconfig hci0 piscan</pre><br />
and<br />
<pre>sudo hciconfig hci0 lm MASTER,ACCEPT</pre><br />
or<br />
<pre>sudo hciconfig hci0 lm SLAVE,ACCEPT</pre></p>
<p>You can now check to see if each of the computers can see each other on bluetooth by running:<br />
<pre>hcitool scan</pre><br />
where you should be able to see the opposite computer on each. </p>
<p>Next you want to start the NAP server on the computer you wish to share the connection from. (This is the computer with the bridge device). This script, which is available on the git repository will allow you to start up the NAP server. (it may also be possible to use pand, but I haven&#8217;t had any luck yet with it)<br />
This script is called test-nap. It takes a single argument, which is the name of the bridge device. So in our case we would first need to chmod +x the file (to make it executable), then run it like this: <pre>./test-nap br1</pre></p>
<div class="snippet"><pre><code>#!/usr/bin/python

import sys
import time
import dbus
from optparse import OptionParser, make_option

bus = dbus.SystemBus()

manager = dbus.Interface(bus.get_object(&quot;org.bluez&quot;, &quot;/&quot;),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;org.bluez.Manager&quot;)

option_list = [
&nbsp;&nbsp;&nbsp;&nbsp;make_option(&quot;-i&quot;, &quot;--device&quot;, action=&quot;store&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type=&quot;string&quot;, dest=&quot;dev_id&quot;),
&nbsp;&nbsp;&nbsp;&nbsp;]
parser = OptionParser(option_list=option_list)

(options, args) = parser.parse_args()

if options.dev_id:
&nbsp;&nbsp;adapter_path = manager.FindAdapter(options.dev_id)
else:
&nbsp;&nbsp;adapter_path = manager.DefaultAdapter()

server = dbus.Interface(bus.get_object(&quot;org.bluez&quot;, adapter_path),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;org.bluez.NetworkServer&quot;)

service = &quot;nap&quot;

if (len(args) &lt; 1):
&nbsp;&nbsp;bridge = &quot;tether&quot;
else:
&nbsp;&nbsp;bridge = args[0]

server.Register(service, bridge)

print &quot;Server for %s registered for %s&quot; % (service, bridge)

print &quot;Press CTRL-C to disconnect&quot;

try:
&nbsp;&nbsp;time.sleep(1000)
&nbsp;&nbsp;print &quot;Terminating connection&quot;
except:
&nbsp;&nbsp;pass

server.Unregister(service)</code></pre></div>
<p>After this, you can search from the client to see if the NAP service can be discovered with the command:<br />
<pre>sdptool search NAP</pre><br />
You should be able to see the NAP service from your server machine at this point.</p>
<p>The last thing to do is edit the /etc/network/interfaces file on the client side (the device which will connect to the Internet via Bluetooth. When pand connects, it uses a bnep0 interface. You need to add the following to your file:<br />
<pre>iface bnep0 inet dhcp</pre></p>
<p>Now we are ready to connect. This is how you connect:<br />
<pre><pre>pand -c &lt;mac address of your server BT device&gt;
sudo ifup bnep0</pre></pre></p>
<h3>Links:</h3>
<ul style="margin-left: 15px;">
<li><a href="http://global.hkepc.com/forum/redirect.php?tid=1710030&#038;goto=lastpost">http://global.hkepc.com/forum/redirect.php?tid=1710030&#038;goto=lastpost</a></li>
<li><a href="https://www.linux.com/learn/tutorials/346552-personal-area-networking-with-bluetooth">https://www.linux.com/learn/tutorials/346552-personal-area-networking-with-bluetooth</a></li>
<li><a href="http://ubuntuforums.org/showthread.php?t=1632825">http://ubuntuforums.org/showthread.php?t=1632825</a></li>
<li><a href="http://forum.doozan.com/read.php?2,2698">http://forum.doozan.com/read.php?2,2698</a></li>
<li><a href="http://xn--9bi.net/2009/06/17/tethering-iphone-3-0-to-ubuntu-9-04/">http://xn--9bi.net/2009/06/17/tethering-iphone-3-0-to-ubuntu-9-04/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonernst.com/2011/11/29/creating-a-bluetooth-access-point-nap-in-ubuntu-11-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Burg / Grub 2 Icons for Meego</title>
		<link>http://www.jasonernst.com/2011/11/29/burg-grub-2-icons-for-meego/</link>
		<comments>http://www.jasonernst.com/2011/11/29/burg-grub-2-icons-for-meego/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 13:59:17 +0000</pubDate>
		<dc:creator>Jason Ernst</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[Burg]]></category>
		<category><![CDATA[Grub2]]></category>
		<category><![CDATA[Icon]]></category>
		<category><![CDATA[Meego]]></category>
		<category><![CDATA[Moblin]]></category>

		<guid isPermaLink="false">http://www.jasonernst.com/?p=1837</guid>
		<description><![CDATA[Only recently I noticed that Moblin (which I sometimes use) has changed its name to Meego, and has a new icon. I previously released an icon for the moblin os for the grub2 / burg system and so here is the new version of the icons with the new name, for anyone interested. The previous [...]]]></description>
			<content:encoded><![CDATA[<p>Only recently I noticed that Moblin (which I sometimes use) has changed its name to Meego, and has a new icon. I previously released an icon for the moblin os for the grub2 / burg system and so here is the new version of the icons with the new name, for anyone interested. The previous post, and tutorial on how to add your own icons to grub2 / burg is available here: <a href="http://www.jasonernst.com/2011/01/29/howto-custom-icons-for-burg-graphical-grub2/">http://www.jasonernst.com/2011/01/29/howto-custom-icons-for-burg-graphical-grub2/</a></p>
<p><a href="http://www.jasonernst.com/wp-content/uploads/2011/11/large_meego.png"><img src="http://www.jasonernst.com/wp-content/uploads/2011/11/large_meego.png" alt="" title="large_meego" width="128" height="128" class="aligncenter size-full wp-image-1839" /></a></p>
<p><a href="http://www.jasonernst.com/wp-content/uploads/2011/11/grey_meego.png"><img src="http://www.jasonernst.com/wp-content/uploads/2011/11/grey_meego.png" alt="" title="grey_meego" width="128" height="128" class="aligncenter size-full wp-image-1838" /></a></p>
<p><a href="http://www.jasonernst.com/wp-content/uploads/2011/11/small_meego.png"><img src="http://www.jasonernst.com/wp-content/uploads/2011/11/small_meego.png" alt="" title="small_meego" width="28" height="28" class="aligncenter size-full wp-image-1840" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonernst.com/2011/11/29/burg-grub-2-icons-for-meego/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aircrack suite + Ubuntu 11.10 problems with monitor mode channel</title>
		<link>http://www.jasonernst.com/2011/11/04/aircrack-suite-ubuntu-11-10-problems-with-monitor-mode-channel/</link>
		<comments>http://www.jasonernst.com/2011/11/04/aircrack-suite-ubuntu-11-10-problems-with-monitor-mode-channel/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 18:04:23 +0000</pubDate>
		<dc:creator>Jason Ernst</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[Aircrack]]></category>
		<category><![CDATA[Fixed Channel]]></category>
		<category><![CDATA[mon0]]></category>
		<category><![CDATA[Monitor Mode]]></category>
		<category><![CDATA[Ubuntu 11.10]]></category>
		<category><![CDATA[wlan0]]></category>

		<guid isPermaLink="false">http://www.jasonernst.com/?p=1815</guid>
		<description><![CDATA[Recently I have been playing around with the aircrack suite and in particular the aireplay-ng tool. This tool may be used for ARP replay attacks, however it requires that the monitor mode interface is able to switch channels to the channel of the target device / access point. For some reason my monitor interface was [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I have been playing around with the aircrack suite and in particular the aireplay-ng tool. This tool may be used for ARP replay attacks, however it requires that the monitor mode interface is able to switch channels to the channel of the target device / access point. For some reason my monitor interface was stuck in channel -1. So to fix this I found a forum post on Ubuntu Forums which solves this problem: <a href="http://ubuntuforums.org/showpost.php?p=10550806&#038;postcount=6" title="Ubuntu Forums">http://ubuntuforums.org/showpost.php?p=10550806&#038;postcount=6</a></p>
<p>You can apply this to the wlan interface to put it directly into monitor mode and avoid using the airmon-ng tool altogether if you wish. You may also be able to apply this to the mon0 interface created by the airmon-ng tool as well, however I have not tried it yet.</p>
<p>The bulk of the problem is just the order in which monitor mode and channel are enabled, it must follow the order as follows:<br />
ifconfig $IFACE down<br />
iwconfig $IFACE mode managed<br />
ifconfig $IFACE up<br />
iwconfig $IFACE channel $@<br />
ifconfig $IFACE down<br />
iwconfig $IFACE mode monitor<br />
ifconfig $IFACE up</p>
<p>Hope this solves some problems&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonernst.com/2011/11/04/aircrack-suite-ubuntu-11-10-problems-with-monitor-mode-channel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upcoming PhD QE Progress</title>
		<link>http://www.jasonernst.com/2011/07/27/upcoming-phd-qe-progress/</link>
		<comments>http://www.jasonernst.com/2011/07/27/upcoming-phd-qe-progress/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 17:26:38 +0000</pubDate>
		<dc:creator>Jason Ernst</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Wireless Networks]]></category>
		<category><![CDATA[3G]]></category>
		<category><![CDATA[4G]]></category>
		<category><![CDATA[Handover]]></category>
		<category><![CDATA[Heterogeneous]]></category>
		<category><![CDATA[Jason B. Ernst]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Seamless]]></category>
		<category><![CDATA[Wireless]]></category>

		<guid isPermaLink="false">http://www.jasonernst.com/?p=1739</guid>
		<description><![CDATA[So I&#8217;ve been doing my PhD for over two years now, and I haven&#8217;t posted a reflective &#8220;state of the thesis&#8221; post in quite some time, so here it is. I have maxed out my 50 pages (not included ToC and references) for some time now, it&#8217;s just been in the process of revision for [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been doing my PhD for over two years now, and I haven&#8217;t posted a reflective &#8220;state of the thesis&#8221; post in quite some time, so here it is. I have maxed out my 50 pages (not included ToC and references) for some time now, it&#8217;s just been in the process of revision for the last month or so! I have more or less settled on what my research actually is now and am getting a clearer picture of it in my head all the time.</p>
<p>Officially the topic is &#8220;Radio Resource Management for Quality of Service in Heterogeneous Wireless Networks&#8221;. This is quite the mouthful, I know. Really what it boils down to is: Making various wireless technologies (Bluetooth, WiFi, WiMAX, 3G, 4G, &#8230; , etc) seamlessly work together. Many devices are capable of connecting to many of these radio access technologies (RATs), but often it is not <em>seamless</em>. What do I mean by this? Well suppose I am inside a university building, deep in the basement (where they tend to put CS students <img src='http://www.jasonernst.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ) where there is no mobile reception (3G, 4G etc.). I start downloading a large file, or call someone via wifi. Now I want to walk to my car because it&#8217;s time to go home for the day. Many networks now are not able to handle this, and it is interrupted after you change networks. Furthermore, you often have to manually tell the device you want to leave one network and join another. <em>Seamless</em> means this should all happen without you noticing. This is the focus of my research.</p>
<p>The biggest problem that I am concerned with is called handoff or handover. This is when the switch between RATs occurs. Traditionally, this also occurs when a mobile device switches from one tower to another, and it usually involved predicting the motion of the device along with some other factors for Quality of Service (QoS). For a vertical handover, we may or may not need to predict motion. If the heterogeneous wireless network (HWN) is densely covered, many RATs are available throughout the coverage region (as opposed to a sparsely covered where a given location may have access to one technology at once). In a dense HWN, the problem becomes a multi-criteria question.</p>
<ol>
<li>Which network is most economical for me to connect to?</li>
<li>Which configuration of (network, client) pairs is most profitable for the operator?</li>
<li>Which network is able to provide me with the required QoS?</li>
</ol>
<p>More technical details to follow&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonernst.com/2011/07/27/upcoming-phd-qe-progress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why Blanket Wireless Coverage in Waterloo Failed, and Potential Solutions</title>
		<link>http://www.jasonernst.com/2011/07/22/why-blanket-wireless-coverage-in-waterloo-failed-and-potential-solutions/</link>
		<comments>http://www.jasonernst.com/2011/07/22/why-blanket-wireless-coverage-in-waterloo-failed-and-potential-solutions/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 15:46:04 +0000</pubDate>
		<dc:creator>Jason Ernst</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Wireless Networks]]></category>
		<category><![CDATA[Atria]]></category>
		<category><![CDATA[Blanket Coverage]]></category>
		<category><![CDATA[KW Record]]></category>
		<category><![CDATA[Waterloo Region]]></category>
		<category><![CDATA[Wireless]]></category>

		<guid isPermaLink="false">http://www.jasonernst.com/?p=1723</guid>
		<description><![CDATA[Today the KW Record ran an article entitled &#8220;Blanket Wi-Fi plans unplugged in Waterloo Region and Guelph, but growing in Stratford&#8221;. I thought I&#8217;d throw in my two cents since this issue is very related to some of my research. Overall to me, the biggest factor that contributed to the failure of blanket wireless access [...]]]></description>
			<content:encoded><![CDATA[<p>Today the KW Record ran an article entitled <a href="http://www.therecord.com/news/local/article/567110--blanket-wi-fi-plans-unplugged-in-waterloo-region-and-guelph-but-growing-in-stratford">&#8220;Blanket Wi-Fi plans unplugged in Waterloo Region and Guelph, but growing in Stratford&#8221;</a>. I thought I&#8217;d throw in my two cents since this issue is very related to some of my research. Overall to me, the biggest factor that contributed to the failure of blanket wireless access in the Region of Waterloo was the cost of the service for users. From what I remember, it was on part with many high speed Internet plans. Why would someone pay the same price to have potentially slower, less secure service than competing wired services? </p>
<p>The Atria plan used large WiFi cells, with very expensive antennas (see the apartment building near University Plaza, which I believe was one of them).</p>
<p>Many other cities (much larger ones) have been very successful in providing blanket WiFi, using a completing different coverage model and cost model. The best example is San Francisco where a company named Meraki provides free wifi for over 100,000 people using their Mesh Router devices. These devices cost<a href="http://meraki.com/products/wireless/mr16#compare"> between $399 and $1500 each</a>, which is still expensive, but likely much cheaper than anything used by Atria. These devices likely have much lower range and handle dense areas compared with the atria cells which seem to be designed for large areas, and require many people to subscribe to pay for their costs. The argument in the article that WiFi coverage in metropolitan areas is difficult seems like a terrible attitude to have for an area that has a reputation as a high tech leader. San Francisco likely has much greater challenges in this regard compared to our tiny city. </p>
<p><center>
<div class="image"><a href="http://www.jasonernst.com/wp-content/uploads/2011/07/meraki_sf.jpg"><img src="http://www.jasonernst.com/wp-content/uploads/2011/07/meraki_sf-300x216.jpg" alt="" title="meraki_sf" width="300" height="216" class="aligncenter size-medium wp-image-1731" /></a><br/>Example coverage map in San Francisco</div>
<p></center></p>
<p>Instead of using these expensive devices, much cheaper devices such as linksys wrt routers could be used. These routers support linux, and because of this much customization is possible such as mesh networking. While these devices are less reliable than the previous more expensive solutions, it may be a good way to at least get the network started cheaply. Additionally, areas which are not used by as many people could be covered with cheaper routers, while areas with more dense traffic may be covered by expensive ones.</p>
<p>The argument in the article that WiFi networks are unnecessary because of cellular networks is ludicrous! If that is the case, why are every smartphone and other device including WiFi radios in them? It&#8217;s because data on cellular networks is way to expensive. Any place where a device can get free or low cost WiFi should be used instead of the cellular network. One large problem with this at the moment, however is that it is not seamless to go from a cellular network to a wifi network. For example, it is often not possible to carry on a phone call while switching networks, or continue downloading or steaming without interruption. This will change with much of the <a href="http://www.uoguelph.ca/~jernst/research.shtml" title="Heterogeneous Wireless Research">research in heterogeneous networks</a>.</p>
<p>One potential model that hasn&#8217;t been explored much is community wireless networks. In this case, devices could be provided to anyone willing to provide access to their own home network for the community. The incentive could be either donations from users, or a very small fee (2 &#8211; 5 dollars per month) which is distributed to providers. Additionally, anyone who provides a part of the network is able to get on free to other parts of the network. Of course, there&#8217;s nothing to stop the larger companies like Rogers and Bell from creating the same type of value added service. Since so many people already have wireless in their home using Rogers and Bell, they could create some type of login where you take your bandwidth quota with you and have access to anyone else&#8217;s network who is also participating. This way, you are not using their bandwidth cap (only their &#8220;speed&#8221; &#8211; which may introduce a whole other range of problems <img src='http://www.jasonernst.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> )</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonernst.com/2011/07/22/why-blanket-wireless-coverage-in-waterloo-failed-and-potential-solutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 7 &#8211; SP1, Multiple OS &#8211; Grub</title>
		<link>http://www.jasonernst.com/2011/07/17/windows-7-sp1-multiple-os/</link>
		<comments>http://www.jasonernst.com/2011/07/17/windows-7-sp1-multiple-os/#comments</comments>
		<pubDate>Sun, 17 Jul 2011 14:44:10 +0000</pubDate>
		<dc:creator>Jason Ernst</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[0x800F0A12]]></category>
		<category><![CDATA[Failure]]></category>
		<category><![CDATA[Grub2]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[Multiple OS]]></category>
		<category><![CDATA[Partition]]></category>
		<category><![CDATA[Service Pack One]]></category>
		<category><![CDATA[Solution]]></category>
		<category><![CDATA[SP1]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://www.jasonernst.com/?p=1694</guid>
		<description><![CDATA[A while ago I bought a Toshiba netbook which of course came with Windows 7 startup. Since I was going to be putting 4 OS&#8217;es on it (Windows, Ubuntu, Chromium and Meego), I was switching from the usual method of booting directly into Windows, into using Grub2. Of course now that the SP1 update has [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago I bought a Toshiba netbook which of course came with Windows 7 startup. Since I was going to be putting 4 OS&#8217;es on it (Windows, Ubuntu, Chromium and Meego), I was switching from the usual method of booting directly into Windows, into using Grub2. Of course now that the SP1 update has come out, it doesn&#8217;t install properly. This is the support page that the error pointed me to: <a href="http://windows.microsoft.com/en-US/windows7/windows-7-windows-server-2008-r2-service-pack-1-sp1-installation-error-0x800F0A12">http://windows.microsoft.com/en-US/windows7/windows-7-windows-server-2008-r2-service-pack-1-sp1-installation-error-0x800F0A12</a></p>
<p><center>
<div class="image"><a href="http://www.jasonernst.com/wp-content/uploads/2011/07/disk.png"><img src="http://www.jasonernst.com/wp-content/uploads/2011/07/disk-300x167.png" alt="" title="disk" width="300" height="167" class="aligncenter size-medium wp-image-1702" /></a><br/>Windows Disk Management Tool, used for setting active partition</div>
<p></center></p>
<p>Unfortunately, none of these options worked. It turns out, it is a simple fix (at least for me). In start menu, type &#8220;disk management&#8221; into the search, and click on &#8220;create and format hard disk partitions&#8221;. Right click on the partition that has Windows7 (likely the largest NTFS partition [don't select the recovery partition] if you have a setup like mine) and click &#8220;Mark Partition as Active&#8221;. Then try to install SP1 again, and it should work fine.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonernst.com/2011/07/17/windows-7-sp1-multiple-os/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>uShare autostart &#8211; Ubuntu 11.04</title>
		<link>http://www.jasonernst.com/2011/07/17/ushare-autostart-ubuntu-11-04/</link>
		<comments>http://www.jasonernst.com/2011/07/17/ushare-autostart-ubuntu-11-04/#comments</comments>
		<pubDate>Sun, 17 Jul 2011 14:34:29 +0000</pubDate>
		<dc:creator>Jason Ernst</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[autostart]]></category>
		<category><![CDATA[Ubuntu 11.04]]></category>
		<category><![CDATA[ushare]]></category>

		<guid isPermaLink="false">http://www.jasonernst.com/?p=1687</guid>
		<description><![CDATA[Previously, I installed ushare easily on Ubuntu following a process similar to this: https://help.ubuntu.com/community/Xbox360Media I&#8217;ve recently become annoyed that ushare hasn&#8217;t been autostarting in Ubuntu 11.04. I suspect it may have something to do with the fact that I am using the same machine to host vpn so I have a bridged connection br0 as [...]]]></description>
			<content:encoded><![CDATA[<p>Previously, I installed ushare easily on Ubuntu following a process similar to this: <a href="https://help.ubuntu.com/community/Xbox360Media">https://help.ubuntu.com/community/Xbox360Media</a></p>
<p>I&#8217;ve recently become annoyed that ushare hasn&#8217;t been autostarting in Ubuntu 11.04. I suspect it may have something to do with the fact that I am using the same machine to host vpn so I have a bridged connection br0 as my main connection. The default script in /etc/init.d/ushare should be able to autostart, and I have tried adding it to rc.d using variation of this command &#8220;sudo update-rc.d ushare defaults 80&#8243;, however it fails to start. I have no trouble running it manually with the &#8220;/etc/init.d/ushare start&#8221; command however. So I&#8217;m guessing it is just trying to start before the network interfaces come up and failing. The workaround I found tries to solve this by explicitly running after the interface is up. The way to do it, is to add it to the &#8220;/etc/network/interfaces&#8221; file using something called &#8220;post-up&#8221;. Since I wanted to have ushare run after my br0 interface is brought up, I added it like at the bottom of the br0 section, see below:</p>
<div class="snippet"><pre><code>iface br0 inet static
&nbsp;&nbsp;address 192.168.0.198
&nbsp;&nbsp;netmask 255.255.255.0
&nbsp;&nbsp;gateway 192.168.0.1
&nbsp;&nbsp;bridge_ports eth1
&nbsp;&nbsp;post-up /etc/init.d/ushare start
</code></pre></snippet></p>
<p>And, now on restart &#8220;ps ax | grep ushare&#8221; shows the process running. I am also able to connect on my xbox just as before <img src='http://www.jasonernst.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Sources: <a href="http://www.cyberciti.biz/tips/how-do-i-run-firewall-script-as-soon-as-eth0-interface-brings-up.html">http://www.cyberciti.biz/tips/how-do-i-run-firewall-script-as-soon-as-eth0-interface-brings-up.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonernst.com/2011/07/17/ushare-autostart-ubuntu-11-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MediaWiki + Ubuntu 11.04 &amp; Customizations</title>
		<link>http://www.jasonernst.com/2011/07/05/mediawiki-ubuntu-11-04-customizations/</link>
		<comments>http://www.jasonernst.com/2011/07/05/mediawiki-ubuntu-11-04-customizations/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 21:03:03 +0000</pubDate>
		<dc:creator>Jason Ernst</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[customize]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[mediawiki]]></category>
		<category><![CDATA[Ubuntu 11.04]]></category>

		<guid isPermaLink="false">http://www.jasonernst.com/?p=1663</guid>
		<description><![CDATA[Recently, I setup a personal wiki for myself since I&#8217;m always encountering more information than I have time to read, but always want to go back later. Its also a way for me to organize topics I don&#8217;t know as much about as I&#8217;d like so that I can remember to come back to those [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I setup a personal wiki for myself since I&#8217;m always encountering more information than I have time to read, but always want to go back later. Its also a way for me to organize topics I don&#8217;t know as much about as I&#8217;d like so that I can remember to come back to those areas later on. (Inspired by fellow UoG Student Eddia Ma: <a href="http://eddiema.ca/wiki/" title="Eddie Ma - Wiki">http://eddiema.ca/wiki/</a>) The default install from Ubuntu is pretty simple. I just installed it with the expected:</p>
<div class="snippet"><code>sudo apt-get install mediawiki</code></div>
<p>There are some simple steps to follow as you install with the package manager such as setting up the database and first configuration which should be easy enough to get through. However, the wiki required much customization before it would be good for what I was planning on using it for. </p>
<h2>Citation Support</h2>
<p>First of all, it had to support citations so that I could source the original papers, websites and others. This required the <a href="http://www.mediawiki.org/wiki/Extension:Cite/Cite.php" title="Cite Extension" target="_blank">Cite Extension</a> which can be downloaded here: <a href="http://www.mediawiki.org/wiki/Special:ExtensionDistributor/Cite" title="Cite Extension Download" target="_blank">http://www.mediawiki.org/wiki/Special:ExtensionDistributor/Cite</a> (make sure you select the version that corresponds to the mediawiki version you have installed. Next extract to your extensions folder (likely /var/lib/mediawiki/extensions/ on Ubuntu 11.04). Finally add the following line to your mediawiki configuration file LocalSettings.php (likely in /etc/mediawiki).</p>
<div class="snippet"><code>require_once(&quot;$IP/extensions/Cite/Cite.php&quot;);</code></div>
<h2>Attachments</h2>
<p>I wanted to be able to attach papers directly into my wiki (pdfs and other documents from academic papers). For this I had to add the following line to my LocalSettings.php file (likely in /etc/mediawiki):</p>
<div class="snippet"><code>$wgFileExtensions = array(&#039;png&#039;,&#039;gif&#039;,&#039;jpg&#039;,&#039;jpeg&#039;,&#039;doc&#039;,&#039;xls&#039;,&#039;mpp&#039;,&#039;pdf&#039;,&#039;ppt&#039;,&#039;tiff&#039;,&#039;bmp&#039;,&#039;docx&#039;, &#039;xlsx&#039;, &#039;pptx&#039;,&#039;ps&#039;,&#039;odt&#039;,&#039;ods&#039;,&#039;odp&#039;,&#039;odg&#039;);</code></div>
<p>Additionally, I encountered problems uploading many larger pdfs since they are larger than the default php upload size. In ubuntu, this can be changed by modifying the php.ini file (likely located in /etc/php5/apache). Look for &#8216;upload_max_filesize&#8217; and &#8216;post_max_size&#8217; in order to change this to whatever size you like.</p>
<h2>Math!</h2>
<p>Of course being a CS student, I need to be able to add math equations into my wiki. The math formulas are entered using Latex which most CS grad students (and many undergrads) should know how to use. This one is in the Ubuntu repositories so it is easy to do:</p>
<div class="snippet"><code>sudo apt-get install mediawiki-math</code></div>
<p>Then you have to edit the LocalSettings.php file again (/etc/mediawiki) so that the wgUseTex flag is true:</p>
<div class="snippet"><code>$wgUseTeX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = true;</code></div>
<h2>Source Code &#8211; Syntax Highlighting</h2>
<p>Again since I am a CS student, my wiki <em>needs</em> to be able to display source code easily in a readable way. For this I use the Ubuntu package manager again:</p>
<div class="snippet"><code>sudo apt-get install mediawiki-extensions-geshi</code></div>
<p>And edit the LocalSettings.php file (/etc/mediawiki) &#8211; For some reason, other instructions I have online have different paths and names for the plugin, so this will only work using the plugin from the repository. If you download it yourself directly, the name and location may be different:</p>
<div class="snippet"><code>require_once(&quot;$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php&quot;);</code></div>
<h2>Wiki Privacy</h2>
<p>Lastly, as I previously mentioned the wiki is private (at least for now). To do this it is quite simple. Just paste this into the bottom of your LocalSettings.php file. (There are other variations on how private you can make the wiki, but if you want to do that, check out the official mediawiki page)</p>
<div class="snippet"><pre><code># Disable reading by anonymous users
# See: http://www.mediawiki.org/wiki/Manual:Preventing_access#Restrict_viewing_of_all_pages
$wgGroupPermissions[&#039;*&#039;][&#039;read&#039;] = false;

# But allow them to access the login page or else there will be no way to log in!
# NOTE: You also need to provide access here to the .css and .js files that the
# allowed pages attempt to load; otherwise, users will get errors on the page
# when they attempt to load it (IE will complain about the errors;
# FF will show them in its error console)
# [You also might want to add access to &quot;Main Page&quot;, &quot;Wikipedia:Help&quot;, etc.)
$wgWhitelistRead = array (&quot;Special:Userlogin&quot;, &quot;MediaWiki:Common.css&quot;,
&quot;MediaWiki:Common.js&quot;, &quot;MediaWiki:Monobook.css&quot;, &quot;MediaWiki:Monobook.js&quot;, &quot;-&quot;);

# Disable anonymous editing
$wgGroupPermissions[&#039;*&#039;][&#039;edit&#039;] = false;

# Prevent new user registrations except by sysops
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false;
</code></pre></div>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonernst.com/2011/07/05/mediawiki-ubuntu-11-04-customizations/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

