<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-241881619290465654</id><updated>2012-05-11T14:11:29.577-07:00</updated><category term='bitbucket'/><category term='mercurical'/><category term='software'/><title type='text'>README.txt</title><subtitle type='html'>Notes on software tech with a special focus on image processing, pattern recognition/machine learning, java open source tools, and high performance computing.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://peterkenji.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/241881619290465654/posts/default/-/software'/><link rel='alternate' type='text/html' href='http://peterkenji.blogspot.com/search/label/software'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Peter</name><uri>http://www.blogger.com/profile/14947760300472400741</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://2.bp.blogspot.com/_R3oZVH9aohs/SqfdPXYjghI/AAAAAAAABzQ/8r2UHpyv40w/s1600-R/DukeJava.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-241881619290465654.post-7412105601708237066</id><published>2009-06-28T18:31:00.000-07:00</published><updated>2009-06-29T13:00:52.987-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>The WebFridge Project</title><content type='html'>&lt;div style="text-align: center;"&gt;
&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R3oZVH9aohs/SkkdATDky0I/AAAAAAAABas/BFpqu4yLlgw/s1600-h/barcodes.jpg"&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;A few months ago, in the spirit of our recessionary times, we decided to institute severe household financial austerity measures. Around the same time, I was interested in learning more about the latest java technologies that are being used in enterprise software and web applications. This resulted in . . .&lt;/div&gt;&lt;div style="text-align: left;"&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style=" font-weight: bold; font-size:32px;"&gt;Project WebFridge!&lt;/span&gt;&lt;/div&gt;&lt;p&gt;Our housing expenses are the biggest impact on our budget. But
since our housing costs are relatively fixed, it seemed like the
biggest opportunity for improvement was the food budget. But this has
not been easy! I like food.&lt;/p&gt;&lt;p&gt;Here's our food expenditures over the past few months (credit goes
to mint.com for the pretty graph):&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R3oZVH9aohs/SkgZwleitpI/AAAAAAAABZ0/pc-lH6Kr7XY/s1600-h/foodSpending.png"&gt;
&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 246px;" src="http://3.bp.blogspot.com/_R3oZVH9aohs/SkgZwleitpI/AAAAAAAABZ0/pc-lH6Kr7XY/s400/foodSpending.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5352556479614465682" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A few notes:&lt;/p&gt;&lt;ul&gt; &lt;li&gt;&lt;p&gt;In January, we took a vacation to New Orleans. Lots of good restaurants and bars there. So I view that spike as a special non-recurring charge.&lt;/p&gt; &lt;/li&gt;&lt;li&gt;&lt;p&gt;Our general run rate appears to be in the $500-$800 range, and this reflects a major cutback in our restaurant/bar expenses.  This still seems embarassingly high.&lt;/p&gt; &lt;/li&gt;&lt;li&gt;&lt;p&gt;The green bars supposedly represent U.S. food spending according to Mint.com. Apparently people went on some kind of colossal diet in May.&lt;/p&gt; &lt;/li&gt;&lt;li&gt;&lt;p&gt;Apparently the &lt;a href="http://www.frac.org/pdf/FSC_Toolkit.pdf"&gt;food stamp budget for two people averages around $6/day&lt;/a&gt;, or $180 per
month.  Whoa.  We are nowhere close to that.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Anyways, what I decided to do was build a web application using the latest java technologies to keep an inventory of our foodstuffs.&lt;/p&gt;&lt;p&gt;We do throw out quite a bit of food that goes bad in our fridge or freezer because we basically forget that it's there. The goal of this application is to cut down on that waste. And also make it easier to plan our cooking menus and our shopping.&lt;/p&gt;&lt;p&gt;Here's a quick overview of how my application works. &lt;i&gt;You can take a live look at our current inventory &lt;/i&gt;&lt;a href="http://webfridge.homelinux.net/items.html"&gt;&lt;i&gt;here&lt;/i&gt;&lt;/a&gt;&lt;i&gt;!&lt;/i&gt;&lt;/p&gt;&lt;h2&gt;Logging into the Website&lt;/h2&gt;The system requires a login but you don't have to do it every time if you select the Remember Me checkbox.  There is an Administrator account that allows for managing user accounts.  This all uses Spring Security, which is a great security/authentication toolset.

&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://2.bp.blogspot.com/_R3oZVH9aohs/SkgaZc6S-NI/AAAAAAAABZ8/xBsfmZ6sCvg/s400/webfridgeLogin.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5352557181689592018" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 244px; " /&gt;&lt;/span&gt;
&lt;h2&gt;Reviewing Inventory&lt;/h2&gt;&lt;p&gt;The inventory is displayed in a sortable list.  You can also filter by item location (Fridge, Freezer, Pantry) or by Item Type (Pork, Canned Veggie, etc).
&lt;/p&gt;&lt;p&gt;We often wonder, "what do we need to use in the freezer?".  This can be answered easily by clicking the Freezer button and then sorting by the Days Until Expiration field.
&lt;/p&gt;&lt;div&gt;
&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R3oZVH9aohs/SkgaoxRhvdI/AAAAAAAABaE/hoEt-FXUpyk/s1600-h/webfridgeItemList.png"&gt;&lt;img src="http://3.bp.blogspot.com/_R3oZVH9aohs/SkgaoxRhvdI/AAAAAAAABaE/hoEt-FXUpyk/s400/webfridgeItemList.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5352557444853775826" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 298px; " /&gt;&lt;/a&gt;&lt;p&gt;Note the beautiful Fridge, Freezer, and Pantry icons that I drew.  Need to make some prettier ones.
&lt;/p&gt;&lt;h2&gt;Adding Items using Barcodes and Auto-Lookup&lt;/h2&gt;&lt;p&gt;When you add packaged items, the system lets you scan in the UPC barcode and the item's information will be entered automatically with the system's internal UPC product database.  As soon as you scan in the barcode, the item description fields are automatically filled in.&lt;/p&gt;&lt;p&gt;This process really doesn't take too long.  I don't enter &lt;i&gt;everything&lt;/i&gt;.  For example, individual pieces of fruit that sit in a fruit bowl on our counter, that's not worth tracking since we see it every day and know what's in there.  Lots of the stuff we buy we immediately cook up for dinner so I don't bother entering that either.
&lt;/p&gt;&lt;p&gt;I am using a $10 scanner from ebay, the &lt;a href="http://en.wikipedia.org/wiki/CueCat"&gt;infamous cuecat.&lt;/a&gt;&lt;/p&gt;&lt;div&gt;
&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_R3oZVH9aohs/Skgbj7iA2MI/AAAAAAAABaM/3j2zC0glHDI/s1600-h/webfridgeCuecat.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_R3oZVH9aohs/Skgbj7iA2MI/AAAAAAAABaM/3j2zC0glHDI/s400/webfridgeCuecat.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5352558461219559618" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 164px; " /&gt;&lt;/a&gt;&lt;p&gt;For other items that do not have official barcodes, I printed out on some removable barcode stickers using my laser printer.  I put these on produce bags, tupperware containers, etc.&lt;/p&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;
&lt;img src="http://1.bp.blogspot.com/_R3oZVH9aohs/SkkdATDky0I/AAAAAAAABas/BFpqu4yLlgw/s400/barcodes.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5352841523059018562" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 300px; height: 400px; " /&gt;&lt;/span&gt;&lt;p&gt;Of course those items are not in the built-in UPC product database, so I have to fill in the item info manually.&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://4.bp.blogspot.com/_R3oZVH9aohs/Skgb8Xq4cCI/AAAAAAAABaU/sub3V3jh7eE/s400/webfridgeItemEntry.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5352558881089810466" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 264px; height: 400px; " /&gt;&lt;/span&gt;Note the Days Until Expiration field.  That field is automatically filled as soon as you pick Item Type (ie- fruit is given 5 days, canned goods 700 days, etc), but you can of course override it.&lt;/p&gt;&lt;h2&gt;Warning Tweets&lt;/h2&gt;
&lt;p&gt;When any item is 3 days from expiration, WebFridge automatically starts sending daily warning messages. This is &lt;i&gt;really&lt;/i&gt; helpful in using up those things in the back of the fridge or freezer before
they go bad.&lt;/p&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://1.bp.blogspot.com/_R3oZVH9aohs/SkgcmczFHEI/AAAAAAAABac/4Msg7Bv1Lzc/s400/webfridgeTweet.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5352559604020878402" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 192px; " /&gt;&lt;/span&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://3.bp.blogspot.com/_R3oZVH9aohs/SkgcwVa7JNI/AAAAAAAABak/WjcAlqLqKXg/s400/webfridgeTweet2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5352559773839205586" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 189px; " /&gt;&lt;/span&gt;&lt;p&gt;I suppose I could have used regular email instead of going through twitter, but hey, it was fun figuring out how to call the Twitter API from my software.&lt;/p&gt;&lt;h2&gt;Future Enhancements&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Right now I don't bother filling in the item size and price.  But it would be cool if I could have stats on item prices that I could check with my iphone when I'm at the store. I have a rough idea of prices for common things like a gallon of milk, but I am less sure of lots of things from apples to greek yogurt.  I'd like to think of some way to make this price entry more automated (perhaps running OCR on the itemized grocery receipt) since this could be a PITA otherwise.&lt;/li&gt;
&lt;li&gt;I want to make a special iphone web app interface.  I already check this webpage in my iphone browser, but Apple has special html tags that allow you to make the page look like a native iphone app.&lt;/li&gt;
&lt;li&gt;I'd like to be able to mark certain items as staples that would be automatically added to our shopping lists (right now we use Evernote for that) whenever they are removed from our inventory.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Tech Details&lt;/h2&gt;&lt;p&gt;This application is a customization of the excellent AppFuse tutorial project.  Appfuse is a great starting point for projects using java open source tools.  I am using Hibernate to access a mySql database and Struts 2 for my web framework. It is wired together with Spring. This all running on a ubuntu linux server within Apache Tomcat.  The code is automatically tested using jUnit and jMock and is built using maven.&lt;/p&gt;&lt;p&gt;I am not an html/css/graphic artist, so some of my customizations to the Appfuse web pages are not the prettiest ever.&lt;/p&gt;

&lt;p&gt;


&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/241881619290465654-7412105601708237066?l=peterkenji.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://peterkenji.blogspot.com/feeds/7412105601708237066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://peterkenji.blogspot.com/2009/06/webfridge-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/241881619290465654/posts/default/7412105601708237066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/241881619290465654/posts/default/7412105601708237066'/><link rel='alternate' type='text/html' href='http://peterkenji.blogspot.com/2009/06/webfridge-project.html' title='The WebFridge Project'/><author><name>Peter</name><uri>http://www.blogger.com/profile/14947760300472400741</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://2.bp.blogspot.com/_R3oZVH9aohs/SqfdPXYjghI/AAAAAAAABzQ/8r2UHpyv40w/s1600-R/DukeJava.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_R3oZVH9aohs/SkgZwleitpI/AAAAAAAABZ0/pc-lH6Kr7XY/s72-c/foodSpending.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-241881619290465654.post-8410188260163052816</id><published>2009-06-17T09:53:00.001-07:00</published><updated>2010-03-18T08:28:22.213-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Posting Code</title><content type='html'>I figured out a recipe for posting nicely formatted code online, like this:
&lt;pre class="brush: js; highlight:2"&gt;
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.config.clipboardSwf = "scripts/clipboard.swf";
...
SyntaxHighlighter.all();
&lt;/pre&gt;
I like the nice formatting and colors, including the ability to highlight lines.  This also has a nice floating menu to allow the user to easily copy the code to their editor.

If you are curious how to do this, read on!
&lt;span class="fullpost"&gt;
The key is a &lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter"&gt;nice javascript library called Syntax Highlighter&lt;/a&gt; from Alex Gorbatchev.  If you are comfortable with CSS styles and javascript, it should pretty easy to figure out how to use it and incorporate this library into your website or blog.  Alex's website has good reference documentation, but it assumes you know how to hook javascript and css into your website.&lt;p&gt;
If you are like me, and CSS and javascript is still a little unfamiliar, here is the recipe that I figured out.  Note that this also works on Blogger, which is what I'm using right now . . . you'll just need to edit your template html.
&lt;/p&gt;&lt;h3&gt;Step 1:  Add the javascript libraries to your webpage&lt;/h3&gt;
Paste the following into your &amp;lt;head&gt; section:

&lt;pre class="brush: js"&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shCore.js"&gt;  &amp;lt;/script&gt; 
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushBash.js"&gt;  &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushCpp.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushCSharp.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushCss.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushDelphi.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushDiff.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushGroovy.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushJava.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushJScript.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushPhp.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushPlain.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushPython.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushRuby.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushPerl.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushScala.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushSql.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushVb.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushXml.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushAS3.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushJavaFX.js"&gt; &amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushPowerShell.js"&gt; &amp;lt;/script&gt;
&lt;/pre&gt;
Note that each script (except for shCore.js) is for a different programming language.  These provide the logic for language-specific highlighting.  As you'll see, when you do your actual posting, you'll indicate which language your code is in.  So, technically, you don't need &lt;i&gt;all&lt;/i&gt; these scripts, just the ones for the languages that you'll be quoting on your page.  But it doesn't hurt to just paste the whole block in for simplicity's sake.
&lt;h3&gt;Step 2:  Link to the SyntaxHighlighter CSS styles&lt;/h3&gt;
Immediately after the stuff you just pasted (and still within the &amp;lt;head &gt; tag), add the following links:
&lt;pre class="brush: plain"&gt;
&amp;lt;link type="text/css" rel="stylesheet" href="http://alexgorbatchev.com/pub/sh/2.0.320/styles/shCore.css"/&gt;
&amp;lt;link type="text/css" rel="stylesheet" href="http://alexgorbatchev.com/pub/sh/2.0.320/styles/shThemeDefault.css" id="shTheme" /&gt;
&lt;/pre&gt;
&lt;h3&gt;Step 3:  Configure&lt;/h3&gt;
This step may be optional for you.  Basically, we make javascript calls into the library to configure the behavior of SyntaxHighlighter.  These options are documented &lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter:Configuration"&gt;here&lt;/a&gt;.  For a start, just paste the following in after the previous stuff:
&lt;pre class="brush: js; highlight:2"&gt;
&amp;lt;script type="text/javascript"&gt;
SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/2.0.320/scripts/clipboard.swf';
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.config.gutter = true;

SyntaxHighlighter.all();
&amp;lt;/script&gt;
&lt;/pre&gt;
Note the highlighted line about the clipboardSwf.  This gives the user a nice floating menu that allows them to easily copy your code to the clipboard.
Also note the next line referencing bloggerMode.  That needs to be set to true to have the formatting work correctly from within the Blogger.com framework.
&lt;h3&gt;Step 4: Post your Code!&lt;/h3&gt;
Now, whenever you want to post some code, you can enclose it in a &amp;lt;pre&gt; tag with a special &lt;pre&gt;class&lt;/pre&gt; indicating which language highlighting you would like (java, c#, etc).  The class is of the format:  "brush: &lt;language&gt;" . . . deduce the language string from the javascript filenames in Step 1 above.  Like this:
&lt;pre class="brush: java, html-script= true"&gt;
&amp;lt;pre class="brush: java"&gt;
System.out.println("Hello World!");
&amp;lt;/pre&gt;
&lt;/pre&gt;
Have fun!
&lt;/language&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/241881619290465654-8410188260163052816?l=peterkenji.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://peterkenji.blogspot.com/feeds/8410188260163052816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://peterkenji.blogspot.com/2009/06/test.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/241881619290465654/posts/default/8410188260163052816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/241881619290465654/posts/default/8410188260163052816'/><link rel='alternate' type='text/html' href='http://peterkenji.blogspot.com/2009/06/test.html' title='Posting Code'/><author><name>Peter</name><uri>http://www.blogger.com/profile/14947760300472400741</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://2.bp.blogspot.com/_R3oZVH9aohs/SqfdPXYjghI/AAAAAAAABzQ/8r2UHpyv40w/s1600-R/DukeJava.jpg'/></author><thr:total>1</thr:total></entry></feed>
