<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.1" -->
<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/"
	>

<channel>
	<title>Jeremy of all Trades</title>
	<link>http://jeremy-brown.com/blog</link>
	<description></description>
	<pubDate>Fri, 10 Jun 2011 18:55:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.1</generator>
	<language>en</language>
			<item>
		<title>Modular Honeycomb Shelves with Hand-Cast Aluminum Brackets</title>
		<link>http://jeremy-brown.com/blog/archives/art-design/woodwork/34</link>
		<comments>http://jeremy-brown.com/blog/archives/art-design/woodwork/34#comments</comments>
		<pubDate>Tue, 15 Feb 2011 22:42:42 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[CNC]]></category>

		<category><![CDATA[Metalwork]]></category>

		<category><![CDATA[Woodwork]]></category>

		<guid isPermaLink="false">http://jeremy-brown.com/blog/archives/art-design/woodwork/34</guid>
		<description><![CDATA[After seeing this design for modular furniture on dornob (an architecture and furniture design website), I thought it would be cool to make my own. I designed the bracket shapes in Inkscape, converted them to G-Code with CamBam, and then cut them out of wood. I then took these wooden models to the local aluminum [...]]]></description>
			<content:encoded><![CDATA[<p>After seeing <a href="http://dornob.com/modular-home-furniture-7-wood-bed-chair-desk-designs/" target="_blank">this design for modular furniture on dornob</a> (an architecture and furniture design website), I thought it would be cool to make my own. I designed the bracket shapes in <a href="http://inkscape.org/" target="_blank">Inkscape</a>, converted them to G-Code with CamBam, and then cut them out of wood. I then took these wooden models to the local aluminum foundry (where they normally hand-cast things like pots and spoons). With the help of a friend speaking Lingala, I was able to get a good price per item (important since the hexagonal shelves I built have 34 brackets). The brackets came out a little bit rough, so I had to do some cleanup on them. I really like the finished product though! Check out <a href="http://www.flickr.com/photos/translate_life/sets/72157625936452711/">the photos on Flickr</a>.</p>
<p>And now you can view a <a href="http://www.commenthow.com/article/display/1354409/Modular-Honeycomb-Furniture-with-Cast-Aluminum-Brackets">tutorial</a> on my new website <a href="http://www.commenthow.com">CommentHow.com</a></p>
<p />
<img src="http://farm6.static.flickr.com/5175/5449368024_b2604e68f9.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://jeremy-brown.com/blog/archives/art-design/woodwork/34/feed</wfw:commentRss>
		</item>
		<item>
		<title>Obgaektify - Datastore Grooviness for Google App Engine</title>
		<link>http://jeremy-brown.com/blog/archives/coding/groovy/32</link>
		<comments>http://jeremy-brown.com/blog/archives/coding/groovy/32#comments</comments>
		<pubDate>Tue, 15 Feb 2011 21:25:10 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[Google App Engine]]></category>

		<category><![CDATA[Groovy]]></category>

		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://jeremy-brown.com/blog/archives/uncategorized/32</guid>
		<description><![CDATA[A while back, I started playing around with Google App Engine (Java) and the lightweight, Groovy , Gaelyk. There&#8217;s also a great library written for using the low level datastore in App Engine called Objectify.

I decided to write a little Groovified wrapper for Objectify (which already does most of the work) and turn it into [...]]]></description>
			<content:encoded><![CDATA[<p>A while back, I started playing around with <a href="http://code.google.com/appengine/" target="_blank">Google App Engine (Java)</a> and the lightweight, Groovy , <a href="http://gaelyk.appspot.com" target="_blank">Gaelyk</a>. There&#8217;s also a great library written for using the low level datastore in App Engine called <a href="http://code.google.com/p/objectify-appengine/" target="_blank">Objectify</a>.</p>
<p />
I decided to write a little Groovified wrapper for Objectify (which already does most of the work) and turn it into a plugin for Gaelyk. It adds a little syntactic sugar, and although it doesn&#8217;t have everything, it is working nicely for me so far. Check out the <a href="http://obgaektify.appspot.com">Obgaektify</a> site to learn more.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeremy-brown.com/blog/archives/coding/groovy/32/feed</wfw:commentRss>
		</item>
		<item>
		<title>Audacity SoundFinder Plugin</title>
		<link>http://jeremy-brown.com/blog/archives/coding/29</link>
		<comments>http://jeremy-brown.com/blog/archives/coding/29#comments</comments>
		<pubDate>Mon, 05 Oct 2009 14:22:24 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[Coding]]></category>

		<guid isPermaLink="false">http://jeremy-brown.com/blog/archives/uncategorized/29</guid>
		<description><![CDATA[I modified the Silence Finder plugin that comes with Audacity, and turned it into a Sound Finder plugin. The original plugin let you specify the minimum time period and volume level needed to count as a silence, and then inserted a label at some point during the silence. This new Sound Finder plugin creates a [...]]]></description>
			<content:encoded><![CDATA[<p>I modified the Silence Finder plugin that comes with Audacity, and turned it into a Sound Finder plugin. The original plugin let you specify the minimum time period and volume level needed to count as a silence, and then inserted a label at some point during the silence. This new Sound Finder plugin creates a label that stretches the length of each sound segment.</p>
<p>
I&#8217;ve now used this to help me add text transcriptions to about 80 audio files in 4 languages (Beembe, Bekwel, Mbochi, and Teke). The default parameters have worked pretty well for me, but you may need to adjust them depending on your recording.</p>
<p>
This is the Sound Finder dialog:</p>
<p><a href="http://jeremy-brown.com/blog/archives/coding/29/soundfinderdialog/" rel="attachment wp-att-30"><img src='http://jeremy-brown.com/blog/wp-content/uploads/2009/10/soundfinderdialog.thumbnail.png' title='SoundFinderDialog' alt='SoundFinderDialog' /></a></p>
<p>
This is an example of the resulting labels. You can replace the labels with your own text. In my case, I will replace the numbers with a text transcription.</p>
<p><a href="http://jeremy-brown.com/blog/archives/coding/29/soundfinderexample/" rel="attachment wp-att-31"><img src='http://jeremy-brown.com/blog/wp-content/uploads/2009/10/soundfinderexample.thumbnail.png' title='SoundFinderExample' alt='SoundFinderExample' /></a></p>
<p>
Finally, here&#8217;s the plugin file that you can download. Put it in the Plug-Ins folder inside your Audacity folder. After restarting Audacity, you should be able to access the plugin from the Analyze menu.</p>
<p>
<a href="http://jeremy-brown.com/blog/wp-content/uploads/2009/10/soundfinder.ny" class="attachmentlink">soundfinder.ny</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jeremy-brown.com/blog/archives/coding/29/feed</wfw:commentRss>
		</item>
		<item>
		<title>Directory Recursing Thumbnail Generator</title>
		<link>http://jeremy-brown.com/blog/archives/coding/groovy/27</link>
		<comments>http://jeremy-brown.com/blog/archives/coding/groovy/27#comments</comments>
		<pubDate>Sun, 04 Oct 2009 10:45:32 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[Groovy]]></category>

		<guid isPermaLink="false">http://jeremy-brown.com/blog/archives/coding/groovy/27</guid>
		<description><![CDATA[
Put this script in a particular directory (or change the directory specified in startDir variable
and it will recurse through all sub-directories, creating thumbnails of the images (jpg, png, gif, or bmp).
If you change the deleteOriginal variable to true, it will delete the original image for you afterwards.


import javax.imageio.*
import java.awt.*;
import java.awt.image.*;

def startDir = new File(".")
def deleteOriginal [...]]]></description>
			<content:encoded><![CDATA[<p>
Put this script in a particular directory (or change the directory specified in startDir variable<br />
and it will recurse through all sub-directories, creating thumbnails of the images (jpg, png, gif, or bmp).<br />
If you change the deleteOriginal variable to true, it will delete the original image for you afterwards.
</p>
<pre>
import javax.imageio.*
import java.awt.*;
import java.awt.image.*;

def startDir = new File(".")
def deleteOriginal = false
def thumbWidth = 200
def thumbHeight = 150

startDir.eachFileRecurse{file->
	if(file.name =~ /\.(JPG|jpg|PNG|png|GIF|gif|BMP|bmp)$/)
	{
		def imgType = file.name.replaceAll(/[^\.]*\.(JPG|jpg|PNG|png|GIF|gif|BMP|bmp)$/, "\$1")
		def imgPath = file.getCanonicalPath().replaceAll(/\.(JPG|jpg|PNG|png|GIF|gif|BMP|bmp)$/, "_Thumb.\$1")
		println("$imgType, $imgPath")

		//load each image
		img = ImageIO.read(file)
		println (file.name + " " + img.width + "x" + img.height)

		//output scaled thumbnail image
		width = thumbWidth
		height = thumbHeight
		if(img.width < img.height){width = thumbHeight; height = thumbWidth;}
		BufferedImage thumbImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		Graphics2D gThumbImg = thumbImg.createGraphics();
		gThumbImg.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
		gThumbImg.drawImage(img, 0, 0, width, height, null);
		ImageIO.write(thumbImg, "$imgType", new File(imgPath))

		if(deleteOriginal)
		{
			file.delete()
		}
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jeremy-brown.com/blog/archives/coding/groovy/27/feed</wfw:commentRss>
		</item>
		<item>
		<title>Unicode Files in Groovy</title>
		<link>http://jeremy-brown.com/blog/archives/coding/groovy/26</link>
		<comments>http://jeremy-brown.com/blog/archives/coding/groovy/26#comments</comments>
		<pubDate>Fri, 01 Feb 2008 09:23:13 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[Groovy]]></category>

		<guid isPermaLink="false">http://jeremy-brown.com/blog/archives/coding/groovy/26</guid>
		<description><![CDATA[It took a little while for me to track down how to read and write Unicode-encoded files using Groovy.  Here&#8217;s the answer:
 /*
Given a file called test.txt that's filled with text in UTF-8 format,
here's how to use Groovy to read it in, preserve the encoding, and
output it to a file called testout.txt, also in [...]]]></description>
			<content:encoded><![CDATA[<p>It took a little while for me to track down how to read and write Unicode-encoded files using Groovy.  Here&#8217;s the answer:</p>
<pre> /*
Given a file called test.txt that's filled with text in UTF-8 format,
here's how to use Groovy to read it in, preserve the encoding, and
output it to a file called testout.txt, also in UTF-8 formatting.
*/
def inF = new File("test.txt")
def reader = inF.newReader("UTF-8")
def outF = new File("testout.txt")
outF.withWriter("UTF-8"){writer-&gt;
    reader.eachLine{line-&gt;
        writer.write(line)
    }
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://jeremy-brown.com/blog/archives/coding/groovy/26/feed</wfw:commentRss>
		</item>
		<item>
		<title>Dynamic Swing</title>
		<link>http://jeremy-brown.com/blog/archives/coding/groovy/24</link>
		<comments>http://jeremy-brown.com/blog/archives/coding/groovy/24#comments</comments>
		<pubDate>Fri, 14 Dec 2007 01:54:26 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[Groovy]]></category>

		<guid isPermaLink="false">http://jeremy-brown.com/blog/archives/coding/groovy/24</guid>
		<description><![CDATA[ 
//Groovy script that demonstrates dynamically adding and removing text fields from a Swing form

import groovy.swing.SwingBuilder

swing = new SwingBuilder()

addButton = swing.button(text: 'Add Field', actionPerformed: {addField()})
remButton = swing.button(text: 'Remove Field', actionPerformed: {removeField()})

frame = swing.frame(title:"Test Dynamic Fields", size: [200,400], defaultCloseOperation:javax.swing.WindowConstants.EXIT_ON_CLOSE)
{
	panel = panel()
	{
		vbox = vbox(id:'vbox')
		{
			hbox()
			{
				widget(addButton)
				widget(remButton)
			}
		}
	}
}

fields = []
fields &#60;&#60; swing.textField(text: fields.size())

vbox.add(fields[0])

//frame.pack()
frame.show()

def addField()
{
	field = swing.textField(text: fields.size())
	fields &#60;&#60; field
	vbox.add(field)
	vbox.revalidate()
}

def removeField()
{
	if(fields.size() &#62; [...]]]></description>
			<content:encoded><![CDATA[<pre> <a href="http://jeremy-brown.com/blog/wp-content/uploads/2007/12/dynamicswing.png" title="dynamicswing.png"><img src="http://jeremy-brown.com/blog/wp-content/uploads/2007/12/dynamicswing.thumbnail.png" alt="dynamicswing.png" /></a></pre>
<pre>//Groovy script that demonstrates dynamically adding and removing text fields from a Swing form

import groovy.swing.SwingBuilder

swing = new SwingBuilder()

addButton = swing.button(text: 'Add Field', actionPerformed: {addField()})
remButton = swing.button(text: 'Remove Field', actionPerformed: {removeField()})

frame = swing.frame(title:"Test Dynamic Fields", size: [200,400], defaultCloseOperation:javax.swing.WindowConstants.EXIT_ON_CLOSE)
{
	panel = panel()
	{
		vbox = vbox(id:'vbox')
		{
			hbox()
			{
				widget(addButton)
				widget(remButton)
			}
		}
	}
}

fields = []
fields &lt;&lt; swing.textField(text: fields.size())

vbox.add(fields[0])

//frame.pack()
frame.show()

def addField()
{
	field = swing.textField(text: fields.size())
	fields &lt;&lt; field
	vbox.add(field)
	vbox.revalidate()
}

def removeField()
{
	if(fields.size() &gt; 0)
	{
		field = fields[-1]
		vbox.remove(field)
		fields.remove(fields.size() - 1)
	}
	vbox.revalidate()
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://jeremy-brown.com/blog/archives/coding/groovy/24/feed</wfw:commentRss>
		</item>
		<item>
		<title>Eagle Chest Finished!</title>
		<link>http://jeremy-brown.com/blog/archives/art-design/handcrafts/13</link>
		<comments>http://jeremy-brown.com/blog/archives/art-design/handcrafts/13#comments</comments>
		<pubDate>Wed, 21 Nov 2007 18:30:00 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[Handcrafts]]></category>

		<guid isPermaLink="false">http://jeremy-brown.com/blog/archives/art-design/handcrafts/13</guid>
		<description><![CDATA[Back in April, I started on a woodworking project to create a wooden chest. Now in November, I have finally finished it!
The chest was influenced by several elements from the immersing game Shadows of Angmar: The Lord of the Rings Online. One of the chests in the game had carved bird heads jutting out from [...]]]></description>
			<content:encoded><![CDATA[<p>Back in April, I started on a woodworking project to create a wooden chest. Now in November, I have finally finished it!</p>
<p>The chest was influenced by several elements from the immersing game <a href="http://lotro.turbine.com" target="_blank">Shadows of Angmar: The Lord of the Rings Online</a>. One of the chests in the game had carved bird heads jutting out from the sides, and when I saw it, I was suddenly inspired to build one myself. I drew up plans for a simple square chest, capped by a triangular lid, with carved eagle heads for handles on the sides.</p>
<p>The lower front panel&#8217;s design is based on the design of Thorin&#8217;s Hall in Ered Luin, where dwarven characters start their lives in Middle Earth. The design was wood-burned onto the panel with a wood-burning tool, and then colored with colored pencils for wood, before being covered with a protective coat of spray paint.</p>
<p>The front lid panel bears a chart of stars and constellations. Each star has a pinprick hole in its center. When it&#8217;s dark and a light is placed within the chest you get a semi-accurate view of the night sky (star sizes and luminosities are not to scale).</p>
<p><a href="http://www.flickr.com/photos/23539312@N00/1914312301/" class="flickr_link"><img src="http://farm3.static.flickr.com/2406/1914312301_d12eac2aac_s.jpg" alt="" class="flickr_img s photo" "/></a><a href="http://www.flickr.com/photos/23539312@N00/485744325/" class="flickr_link"><img src="http://farm1.static.flickr.com/228/485744325_8194df8b73_s.jpg" alt="" class="flickr_img s photo"  title="Eagle head #3. This one started out well with the neck feathers on the right side of the head, but the wood was sort of beat up on the left side, and so I had a harder time with the whorls of the head feathers. Eagle head #1 and #3 are on the same side, and I think this is definitely the back of the chest. Hopefully eagle head #4 will come out nicer, to match #2.""/></a><a href="http://www.flickr.com/photos/23539312@N00/645509922/" class="flickr_link"><img src="http://farm2.static.flickr.com/1406/645509922_bc3eab05c2_s.jpg" alt="" class="flickr_img s photo" "/></a><a href="http://www.flickr.com/photos/23539312@N00/644704099/" class="flickr_link"><img src="http://farm2.static.flickr.com/1213/644704099_2efede7e63_s.jpg" alt="" class="flickr_img s photo" "/></a><a href="http://www.flickr.com/photos/23539312@N00/1058498902/" class="flickr_link"><img src="http://farm2.static.flickr.com/1304/1058498902_7c44015083_s.jpg" alt="" class="flickr_img s photo" "/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://jeremy-brown.com/blog/archives/art-design/handcrafts/13/feed</wfw:commentRss>
		</item>
		<item>
		<title>Virtual Board Games</title>
		<link>http://jeremy-brown.com/blog/archives/coding/java/12</link>
		<comments>http://jeremy-brown.com/blog/archives/coding/java/12#comments</comments>
		<pubDate>Wed, 21 Nov 2007 18:29:16 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://jeremy-brown.com/blog/archives/coding/java/12</guid>
		<description><![CDATA[I&#8217;m currently working on a virtual board game engine written in Java. The idea is to represent game tokens with images (.png or .svg mostly), and allow the players to manipulate these tokens (flipping cards, rolling dice, moving pawns, spinning dials, etc.).
I&#8217;m using Ryan Gordon&#8217;s ManyMouse library to allow players to each have their own [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently working on a virtual board game engine written in Java. The idea is to represent game tokens with images (.png or .svg mostly), and allow the players to manipulate these tokens (flipping cards, rolling dice, moving pawns, spinning dials, etc.).</p>
<p>I&#8217;m using Ryan Gordon&#8217;s <a href="http://icculus.org/manymouse/" target="_blank">ManyMouse</a> library to allow players to each have their own mouse which controls their own cursor. Permissions set on each token will determine what operations a given player can perform - moving, rotating, flipping, etc.</p>
<p>So far, the basics are coming along well. You can load in tokens, change between token images, rotate tokens, move tokens, and use multiple cursors to affect the environment. I&#8217;ll post more details as I make progress.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeremy-brown.com/blog/archives/coding/java/12/feed</wfw:commentRss>
		</item>
		<item>
		<title>New Site</title>
		<link>http://jeremy-brown.com/blog/archives/coding/web/11</link>
		<comments>http://jeremy-brown.com/blog/archives/coding/web/11#comments</comments>
		<pubDate>Wed, 21 Nov 2007 18:28:45 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://jeremy-brown.com/blog/archives/coding/web/11</guid>
		<description><![CDATA[Every once in a while, I visit register.com to see if any good domain names with my name are available. I discovered recently that jeremy-brown.com was available, so I decided to snatch it up.
I installed this nice WordPress theme Dark LiquidCard, created by the French artist and designer Jori Avlis. Thanks Jori! With a few [...]]]></description>
			<content:encoded><![CDATA[<p>Every once in a while, I visit register.com to see if any good domain names with my name are available. I discovered recently that jeremy-brown.com was available, so I decided to snatch it up.</p>
<p>I installed this nice WordPress theme <a href="http://e-jori.com/post/2005/12/29/13-theme-liquidcard" target="_blank">Dark LiquidCard</a>, created by the French artist and designer <a href="http://e-jori.com/" target="_blank">Jori Avlis</a>. Thanks Jori! With a few tweaks to the code, I was able to enable WordPress widgets in the sidebar. Now the site is up and looking good.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeremy-brown.com/blog/archives/coding/web/11/feed</wfw:commentRss>
		</item>
	</channel>
</rss>

