Archive for the ‘Free Software’ Category

Putting new radios up in Everett

Wednesday, July 7th, 2010

NS2 device and a cat5

NS2 device and a cat5

I’m happy to note that we’re putting up new radios in Everett. The plan is to provide free but limited Internet access to neighbors and sell service to those who need a “fatter pipe” as the kids say. We’ve been running a repeater for over a year now. It doesn’t provide access to the Internet, but allows anyone who can see the repeater to exchange IP packets. We plan to install two new “NanoStation 2” devices this weekend on Walnut Street. It will be fun.

NS2 NIC & Antenna port

NS2 NIC & Antenna port

I’ll flesh this post out after the event. In the meantime, here are some pics of the hardware.

blog optimizations

Tuesday, July 6th, 2010

Thanks to some recommendations from Jeremy, Pierre and Jeff, this blog should be running a lot less slowly. I’ve installed memcached, set up wordpress plugins, tuned apache MPM parameters, tweaked iptables and tc rules and beaten on the blog with load testing scripts. It seems that it will now reliably handle around 10 concurrent requests and take less than 5 seconds to bring the page up. This is much better than the previous <2r/s 20s load time. I’m no amazon.com (thank goodness), but I think this will meet the blog’s needs quite well.

Hey, look. I got mcs to github before Miguel

Sunday, June 27th, 2010

http://github.com/cjac/mcs

I’m also hosting it on my own not-as-l33t git repo:

http://git.colliertech.org/?p=mcs.git;a=summary

Does this mean that I get a “cooler than Miguel” tee shirt?

Filing to become a licensed CA

Saturday, June 26th, 2010

Hey there gentle readers,

I am completing paperwork on behalf of Collier Technologies LLC which is required (as described in chapter 19.34 RCW [pdf]) to file with the state of Washington to become a licensed Certification Authority.

CPS (signed)

Look! I’m also running a(n unrecognized) repository!

Neat, huh?

C.J.

Building libvirt on CentOS5 (incomplete)

Thursday, May 27th, 2010

Much thanks to Brett for the pointers on rpm-fu.

http://grantmcwilliams.com/index.php?option=com_content&view=article&id=229:

$ sudo yum install \
xen-devel \
xhtml1-dtds \
hal-devel \
libpcap-devel \
cyrus-sasl-devel \
parted-devel \
numactl-devel \
avahi-devel \
slang-devel \
libvolume_id-devel \
openldap-devel

# device-mapper-devel \
# xmlrpc-c-devel \

for pkg in \
libssh2-devel-1.2.5-1.el5.pp.x86_64.rpm \
libssh2-1.2.5-1.el5.pp.x86_64.rpm \
libssh-0.2.1-0.2.svn193.el5.pp.x86_64.rpm \
libssh-devel-0.2.1-0.2.svn193.el5.pp.x86_64.rpm
do
wget ftp://ftp.pbone.net/mirror/ftp.pramberger.at/systems/linux/contrib/rhel5/x86_64/$pkg
rpm -i $pkg
done

wget http://www.fateyev.com/RPMS/RHEL5/x86_64/xmlrpc-c-devel-1.14.8-1.el5.x86_64.rpm
wget http://www.fateyev.com/RPMS/RHEL5/x86_64/xmlrpc-c-1.14.8-1.el5.x86_64.rpm
rpm -i xmlrpc-c-*1.14*el5*.rpm

wget ftp://ftp.icm.edu.pl/vol/rzm1/linux-fedora-secondary/development/source/SRPMS/corosync-0.95-2.fc11.src.rpm
alien -t corosync-0.95-2.fc11.src.rpm
mv corosync-0.95.tgz /tmp
cd ~/rpm/SOURCES
tar xfz /tmp/corosync-0.95.tgz
patch -p0

--- corosync.spec.orig  2010-05-26 19:17:15.000000000 +0000
+++ corosync.spec       2010-05-26 19:21:39.000000000 +0000
@@ -39,11 +39,7 @@
 fi
 %endif

-%{_configure}  CFLAGS="$(echo '%{optflags}')" \
-               --prefix=/usr \
-               --sysconfdir=/etc \
-               --localstatedir=/var \
-               --libdir=%{_libdir}
+%{configure}   CFLAGS="$(echo '%{optflags}')"

 %build
 make %{_smp_mflags}
@@ -52,8 +48,8 @@
 rm -rf %{buildroot}

 make install DESTDIR=%{buildroot}
-install -d %{buildroot}%{_initddir}
-install -m 755 init/redhat %{buildroot}%{_initddir}/corosync
+install -d %{buildroot}%{_sysconfdir}/init.d
+install -m 755 init/redhat %{buildroot}%{_sysconfdir}/init.d/corosync

 ## tree fixup
 # drop static libs
@@ -95,7 +91,7 @@
 %{_sbindir}/corosync-fplay
 %{_sbindir}/corosync-pload
 %config(noreplace) /etc/corosync.conf
-%{_initddir}/corosync
+%{_sysconfdir}/init.d/corosync
 %dir %{_libexecdir}/lcrso
 %{_libexecdir}/lcrso/coroparse.lcrso
 %{_libexecdir}/lcrso/objdb.lcrso

rpmbuild -bb corosync.spec
sudo rpm -i ~/rpm/RPMS/x86_64/corosynclib*.rpm

wget ftp://ftp.icm.edu.pl/vol/rzm1/linux-fedora-secondary/development/source/SRPMS/openais-0.94-1.fc11.src.rpm
alien -t openais-0.94-1.fc11.src.rpm
mv openais-0.94.tgz /tmp
cd ~/rpm/SOURCES
tar xfz /tmp/openais-0.94.tgz
rpmbuild -bb openais.spec
sudo rpm -i ~/rpm/RPMS/x86_64/openaislib-*.rpm

wget ftp://ftp.icm.edu.pl/vol/rzm1/linux-fedora-secondary/development/source/SRPMS/lvm2-2.02.45-4.fc11.src.rpm
alien -t lvm2-2.02.45-4.fc11.src.rpm
mv lvm2-2.02.45.tgz /tmp
cd ~/rpm/SOURCES
tar xfz /tmp/lvm2-2.02.45.tgz
rpmbuild -bb lvm2.spec

PocketSphinx on android via the NDK

Thursday, April 29th, 2010

While working on my project for the Spring ’10 “NLP on Mobile Devices” course, I put together a PocketSphinx ndk build. You can pull it down from my git repo:

$ git clone git://colliertech.org/colliertech/PocketSphinx.git

I haven’t written any of the JNI marshaling functions yet, though.

GSoC 2010

Monday, April 26th, 2010

Earlier this month, I applied to the Mono Project (and the University of Washington, and Ubuntu, and Debian, and The Perl Foundation) requesting a mentor to get Perl6 hosted on the DLR.

Last Tuesday, Miguel contacted me and asked that I chat with Michael Hutchinson about possibly taking up a different project. It seems that the group did not have any mentors who felt comfortable mentoring the Perl6 project. After a bit of consideration, I agreed to modify my application and take up a project to revive the regular expression compiler from 2.2.

Today, the project was officially accepted, and I met with my mentor for the first time (hi Rodrigo!).

I will also be working with Matthew Wilson (aka @diakopter), since he has purportedly implemented a number of regex-to-IL compilers ;) He also offered to mentor me if The Perl Foundation had accepted my application, and since he has already implemented a perl6 compiler in javascript, I have been looking forward to poking some code with him.

Although the GSoC doesn’t officially get started until 5/24, I’m making a git-svn checkout now. I’ve always committed the code directly to svn, but I’ve enjoyed working with git, and it seems about time to start contributing via git-svn. It will be easier to have local branches this way, too.

Anyway, I’m looking forward to it ;)

John Hodgman is using software that I helped to write

Tuesday, April 13th, 2010

A recent blog post by The Hodg Man mentions that he uses (AND ENJOYS) a product I’ve helped to build. Yay.

***

FULL DISCLOSURE NUMBER TWO

FAITHFUL READERS OF THIS IMITATION BLOG know that, having crashed my own website repeatedly while linking to it Twitterphonically, I experimented with NEW INTERNET TECHNOLOGY to try to fix this problem.

SPECIFICALLY, my host, LiquidWeb, called and offered their cloud computing solution STORM ON DEMAND. I think this means that instead of being stored on a single regular computer, my whole website is instead stored on dozens of semi-mechanical, murderous black clouds on various uncharted islands.

Cloud Computing at Work

THIS EXPERIMENT WAS SUCCESSFUL. So, in the spirit of full disclosure,

I AM USING STORM ON DEMAND FOR A REDUCED PRICE, and unless it grabs me and pulls me in to the woods to murder me, I will continue to USE AND ENJOY IT.

***

Getting started with gtk♯

Thursday, April 8th, 2010

This is a quick tutorial for getting a first gtk-sharp app up and going.

Install MonoDevelop

$ sudo apt-get install monodevelop libgtk2.0-cil-dev

Start MonoDevelop

It’ll be in your GNOME application menu under Applications->Programming->MonoDevelop

Create a new Gtk# Project

Create New Project

Create New Project

Select Gtk# 2.0 Project

Select Gtk# 2.0 Project

Select Project Features

Select Project Features

Hello World

Hello World

Run project

You can run this boilerplate by pressing Ctrl-F5

Using the Designer

Double-click on the file named MainWindow.cs in the Solution section. When the file opens, click the Designer button below the code view.

The Designer

The Designer

The Toolbox

To add the Toolbox, press Alt-Shift-B or click View->Toolbox.

Drag a VBox widget from the Toolbox to the main window.

Add VBox

Add VBox

Drop a Menu Bar widget into the top cell of the VBox, and a Statusbar into the bottom.

Insert Menu and Status Bar

Insert Menu and Status Bar

Properties grid

Drop a Button widget into the middle cell of the VBox.
Add the Properties grid from the View menu (Alt+Shift+P or View->Properties).
Select the new button by clicking on it.
In the Properties grid, expand the Button Properties section and click the value of the Label field. Delete the default content and replace it with a different string.

Button with new Label

Button with new Label

Adding a Click handler

Select the button in the Designer view
In the Property grid, select the Signals tab
Click twice on the text in the column to the right of the Clicked and replace Click here to add a new handler with MyButtonClickHandler

Add a click handler

Add a click handler

Click on the Source Code button below the viewer window to switch to the C♯ code. You can use the find tool to search for the new handler you created, called MyButtonClickHandler. Ctrl-F will bring up the find dialogue.

Browse to click handler

Browse to click handler

Add some code to update the status bar.

	protected virtual void MyButtonClickHandler (object sender, System.EventArgs e)
	{
		var contextId = this.statusbar1.GetContextId("clicked");
		this.statusbar1.Push(contextId, "Clicky-Clicky" );
	}
Click handler code

Click handler code

Modify button layout

The size of the running window is a little weird. I fixed mine by un-setting the Auto Size boolean and setting the Expand and Fill in the Box Child Layout section of the Properties grid.

Button layout changes

Button layout changes

Exercise button click handler

Run your application with Ctrl-F5 and click on the button. You should see the new string show up in the status bar at the bottom left of the window.

Not yet clicked

Not yet clicked

Clicked + Status update

Clicked + Status update

Add Menu items

Create File Menu Entry

Create File Menu Entry

Create File->Quit Menu Item

Create File->Quit Menu Item

Add Quit event handler

Add Quit event handler

Add Clear Statusbar Activate Handler

Add Clear Statusbar Activate Handler

Importing darcs into a git branch

Wednesday, March 24th, 2010

Maybe this will make it more google-able…

Looks like you can export your darcs repo with darcs-fast-export and then import it with git-fast-import

18:15 < wakko666> I have kind of an odd question that google doesn't seem to
                  know. I'm converting a darcs repo to a git repo. i've already
                  got the tool to export the darcs side.   however, i'd like to
                  import the commits into a branch of an existing repository.
                  is this possible?
18:16 < cj> make a remote tracking branch referencing the exported darcs repo?
18:17 < wakko666> cj: thanks for the clue. i'll try it.
18:28 < cj> git remote add darcsthing git://moo/darcsthing.git ; git checkout
            -b darcsthing darcsthing/master
18:28 < cj> oh, there should probably be a git fetch darcsthing in there
            somewhere
18:31 < wakko666> cj: yup, that works. thanks for the help. :)
18:31 < cj> yay.  glad I could help.
Performance Optimization WordPress Plugins by W3 EDGE