Monday November 12, 2007
JunkfoodFood and Junk. Just ordered an OLPC XO Laptop I just placed an order for an XO Laptop through the the One Laptop Per Child (OLPC) "Give One Get One" program (G1G1). The OLPC project aims to catalyze educational and other opportunities for children in less-developed countries by providing them with specialized laptop computers. The XO laptop was developed by the program to meet its specific needs-- ruggedized, low-powered, ad hoc networking, customizable, easy to use, etc. The G1G1 program allows people to receive an XO laptop by donating $399 USD (plus $24.95 shipping, in my case). The money purchases two laptops. One is given to the purchaser as a gift, and the other is donated to a child in a developing country. I plan to use my XO for basic mobile computing-- web browser, email, and note-taking. I have no other laptop, so this will be my primary mobile device. The XO is designed to be low-powered so its batteries can be recharged manually in locations without electricity, via a pull-string dynamo or solar recharger. However, the ones being sent to donors will not include the manual recharger. (2007-11-12 10:22:11.0) Permalink | June 2006 New England Food Festivals and Events Food festival season has started. Most of the June events seem to be early in the month. I don't have anything after the 11th. Most food festivals are at the end of summer, and I'll post an update later with the full schedule.
(2006-06-02 07:30:00.0) Permalink | 2005-06 Girl Scout Cookie Equivalency Chart Between 2004 and 2005-06, Cartwheels and Thanks-A-Lot replaced Animal Treasures and Iced Berry Piñatas; and Café Cookies replaced Double Dutch.
There are two baking companies licensed to produce Girl Scout cookies, ABC Bakers (Interbake Foods LLC) and Little Brownie Bakers. Each company must produce three mandatory cookie types and can offer up to five more. Currently, there are five common cookie types that are produced by both companies. Confusingly, the same cookies have different names, depending on the baking company. This chart shows which cookies are equivalent. Between 2003 and 2004, Iced Berry Piñatas replaced Friendship Circles, and Lemon Coolers and Double Dutch replaced Olé Olé's and Aloha Chips. References:
(2006-01-24 07:44:00.0) Permalink | I visited the IKEA in Stoughton, MA, partially to look at furniture but mostly to try their restaurant. I was there on Saturday, the day of New Year's Eve. When I arrived at 10:30am, the parking lot was pretty much empty. However, when I left at 1:30pm, the parking lot was entirely full, and cars had to stalk exiting customers to get a spot. I also recall that there was an overflow lot nearby, and that was filling up. If you are a Zipcar customer, IKEA has about 4 or 5 spots reserved for Zipcars (though at 1:30pm, all of these spots were taken by non-Zipcar vehicles). For breakfast, I had the 99-cent Breakfast Plate which contained a good portion of scrambled eggs, home fries (with onions and green and red peppers), and bacon (I was served 3 strips). The food was tasty and definitely a good value. For lunch, I had Swedish Meatballs and a side order of Macaroni and Cheese. The Meatballs come with two red potatoes (I think that you could also request French fries) and some lingonberry preserves. Again, the food was good. I especially liked the Macaroni and Cheese. Towards the end of my meal, I was surprised when a woman and child just sat down across from me at my table. The restaurant was crowded, and this was pretty much the way to get seats (getting someone in your party to sit next to a diner who is almost finished). Finally, on the way out, I had a 50-cent Hot Dog at the Bistro downstairs. I think that it was pretty good. It was served on a New England-style roll. If you really like lingonberries or meatballs and want to serve them at home, there is a small food market next to the Bistro. Frozen meatballs are $6.99 for 2.5 pounds. Lingonberry preserves are $2.99 for a 14 oz. jar or $9.99 for a 1.5 liter tub. Restaurant Hours:
Restaurant Menu:
Restaurant Notes:
Bistro Menu:
Bistro Notes:
(2006-01-19 09:00:00.0) Permalink | Millennium Falcon simulator ride I went to the Millennium Falcon simulation two weeks ago. This is an upcharge attraction at the Star Wars: Where Science Meets Imagination exhibit at the Museum of Science in Boston. http://starwars.mos.org/
(2005-11-09 08:30:00.0) Permalink | More notes on Brunch at the Museum of Science
(2005-10-28 04:33:00.0) Permalink | Sunday brunch at the Museum of Science I ate at the Sunday Brunch buffet at the Museum of Science on October 23, 2005. It's catered by Wolfgang Puck Catering and served in the Skyline Room, on the sixth floor. There are two seatings: 11:00am and 1:00pm. Brunch is $32 and includes exhibit admission, a ticket to a show, and parking (brunch-only is available for $24). http://www.mos.org/
The room itself has floor-to-ceiling windows on two sides, with a panoramic view stretching from the Zakim Bridge, down the Boston riverbank, across the Charles River, up the Cambridge riverbank, all the way to the Royal Sonesta. I chose to sit so I could dine with a view of the Zakim Bridge. I ate at the 1:00pm seating, and the room wasn't very full (perhaps 30 diners). I believe that the 11:00am seating may have been busier and that it finished late, as the staff was still hurrying to turn the room as the 1:00pm seating began. Wolfgang Puck Catering runs an elegant operation. I was somewhat hoping that Chef Puck himself might make an appearance to check up on things (he was in town the night before, at the gala opening for the Museum's Star Wars exhibit), but no such luck. The food was good. My favorites were, in order:
Info and Tips
Below is the menu from my brunch. There were a few other items available that weren't listed on the menu. One was grilled asparagus. There was also fruit stuffed with a creamy filling. I'm embarrassed to say that I was unfamiliar with this type of fruit, and I still don't know what it was. (Perhaps it was passion fruit?) The Menu:
(2005-10-26 06:00:00.0) Permalink | I visited a preview of the "Star Wars: Where Science Meets Imagination" at the Museum of Science in Boston, on Sunday, October 23, 2005. It was okay. The exhibit was smaller and somewhat disappointing when compared to the previous Lord of the Rings exhibit. There weren't as many movie props to see. On a more positive note, this exhibit contained more science and educational content. http://starwars.mos.org/ Visiting Tips
About the Exhibit
Multimedia Tour
Millennium Falcon ride
(2005-10-25 07:56:00.0) Permalink | New England Food Festivals and Events Upcoming New England area food festivals and events.
(2005-08-24 09:47:00.0) Permalink | Roller: Navigation Bar Improvement The current behavior of the Navigation Bar (the one on my page, at the right, that starts with "Sun Bloggers" and "Weblog") is that if a Roller user logs into the system, the Navigation Bar also contains "New Entry", "Settings", and "Logout". It makes sense if I (the page owner) am the one looking at this page. However, for other Roller users who happen to see this on my page, it may be somewhat confusing. Similarly, when I am logged in and look at other users' pages, I see a "New Entry" link which is confusing for me.
The improved behavior is that "New Entry", "Settings", and "Logout" is seen in the Navigation Bar only when I (the page owner) am logged in. Other logged-in users don't see these links. Non-logged in users see a link to "Login". The below macro contains the fix. It overrides an existing Roller macro.
#macro( showNavBar2 $vertical $delimiter $useCSS)
#set( $container = "div" )
#if ( $useCSS ) #set( $container = "ul" ) #end
#set( $rawUrl = "$ctxPath/page/$userName" )
<$container class="rNavigationBar">
#if ($siteName=="Main")
#set( $mainUrl = "$ctxPath?rmk=tabbedmenu.main&rmik=tabbedmenu.main" )
#printNavLink( $mainUrl $text.get("navigationBar.main") $useCSS $vertical "" )
#else
#printNavLink( "$ctxPath/" $siteName $useCSS $vertical "" )
#end
#if( $website )
#foreach( $iPage in $pages )
#set( $invisible = $iPage.Name.startsWith("_") )
## Again, there is no "break" in Velocity
#if( !$invisible )
#set( $isSelected = false )
#if( $page && $iPage.Id == $page.Id &&
!$editorui) #set($isSelected = true) #end
#if( !$isSelected )
#printNavLink( "$rawUrl/$iPage.Link" $iPage.Name
$useCSS $vertical $delimiter )
#else
#if( $useCSS )<li class="rNavItem">
#elseif( $vertical ) <br />
#else $delimiter
#end
$iPage.Name
#end
#end
#end
#end
## strutsUrlHelper( useIds, isAction, path, val1, val2)
#if ($req.getUserPrincipal())
## // The person looking at the page is logged into Roller.
#if ($req.getUserPrincipal().getName().equals($userName))
## // The person looking at the page is this blog's owner
## // who is also currently logged in.
#set( $editUrl = $rawUrl )
#set( $editUrl = $pageHelper.strutsUrlHelper(false, true,
"weblogCreate", "tabbedmenu.weblog", "tabbedmenu.weblog.newEntry") )
#printNavLink( $editUrl $text.get("navigationBar.newEntry")
$useCSS $vertical $delimiter )
#set( $editUrl = $rawUrl )
#set( $editUrl = $pageHelper.strutsUrlHelper(false, true,
"editWebsite", "tabbedmenu.website", "tabbedmenu.website.settings") )
#printNavLink( $editUrl $text.get("navigationBar.settings")
$useCSS $vertical $delimiter )
#set( $editUrl = $rawUrl )
#set( $editUrl = $pageHelper.strutsUrlHelper(false, true,
"logout-redirect", "", "") )
#printNavLink( $editUrl $text.get("navigationBar.logout")
$useCSS $vertical $delimiter )
#else
## // The person looking at the page is the owner of a
## // different blog. They are logged in.
#end
#else
## // The user is not logged into Roller.
#set( $editUrl = $pageHelper.strutsUrlHelper(false, true, "login-redirect",
"", "") )
#printNavLink( $editUrl $text.get("navigationBar.login") $useCSS $vertical
$delimiter )
#if ($req.getAttribute("allowNewUsers"))
#set( $registerUrl = $pageHelper.strutsUrlHelper(false, true,
"registerUser", "", "") )
#printNavLink( $registerUrl $text.get("navigationBar.register") $useCSS
$vertical $delimiter )
#end
#end
</$container >
#end
(Some long lines have been broken into separate lines, so you may need to join them back together manually.) (2005-01-27 13:00:00.0) Permalink | Comments [1] Example of Improved Permalink Format
(2005-01-25 09:40:49.0) Permalink | Roller: Improved Permalink Format In most blogs I've seen, a Permalink for an entry is a URL that points to a page containing just that entry, along with that entry's comments. However, Roller uses Permalink URLs that contain a date and point to a page containing all entries from that date and earlier (containing the entry specified, along with a whole bunch of other entries). This is so, even though Roller already has the capability to generate pages that look like "standard" Permalink pages. If you look at the URL for any Roller blog entry's "Comments" page, you'll see
that it is very similar to a "standard" Permalink URL. And, if you follow the
Comments link, the resulting page looks very much like a "standard"
Permalink page. In fact, if we take a Roller comments page URL and simply
remove the " The below macro overrides the standard Roller macro for generating Permalink URLs, to use the alternate format. The diff is also below. Because I do not know whether overriding the Permalink URL format might have any side effects (within Roller or for outside agents/aggregators), I have not implemented it on my blog. (I have tested it, and it appears to work just fine.) This macro needs to be put in the "_day" template. Putting it in the "Weblog" template does not work.
#macro( showEntryPermalink $entry )
<a href="$ctxPath/page/$userName/$page.link/$utilities.encode($entry.anchor)"
title="$text.get( "macro.weblog.entrypermalink.title" )"
class="entrypermalink">Permalink</a>
#if ($pageHelper.isUserAuthorizedToEdit())
[<a href="$pageHelper.getEntryEditUrl($entry)">
$text.get( "macro.weblog.entrypermalink.edit" )</a>]
#end
#end
2c2
< <a href="$baseURL$entry.permaLink"
---
> <a href="$ctxPath/page/$userName/$page.link/$utilities.encode($entry.anchor)"
(2005-01-25 09:24:00.0) Permalink | Comments [3] Roller: Re-ordering the Category Bar The following macro allows you to re-order Categories shown by the showWeblogCategoryChooser macro. Specifically, it alphabetically sorts Categories by their Descriptions. I don't think that the Description field is used elsewhere, so it is probably safe to use it as a sorting key.
#macro( showWeblogSubcategoryChooser2 $parentCategory $divider )
#set( $rawUrl = "$ctxPath/page/$userName/$page.link" )
<div class="rWeblogCategoryChooser">
#set( $weblogUrl = $rawUrl )
#set( $chosenCat = "" )
#if( $req.getParameter( $WEBLOGCATEGORYNAME_KEY ) )
#set( $chosenCat = $req.getParameter( $WEBLOGCATEGORYNAME_KEY ) )
<span class="rUnchosenCategory"><a href="$weblogUrl">
$text.get( "macro.weblog.allcategories" )</a></span>
#else
<span class="rChosenCategory">$text.get( "macro.weblog.allcategories" )</span>
#end
#if ( $req.getParameter($PAGEID_KEY) )
#set( $pageParam = "&$PAGEID_KEY=$req.getParameter($PAGEID_KEY)" )
#end
#set( $rawcats = $pageModel.getWeblogCategories($parentCategory) )
## // Sort categories by description, using a bubble sort.
## // The "All" category is not sorted; it's always first.
#set( $cats = [] )
#foreach( $rawcat in $rawcats )
#set ($curcat = $rawcat)
#set ($catcounter = 0)
#foreach ($cat in $cats)
#if ($curcat.description.compareTo($cat.description) < 0)
#set ($curcat = $cats.set($catcounter, $curcat))
#end
#set ($catcounter = $catcounter + 1)
#end
#if ($cats.add($curcat))
#end
#end
#foreach( $cat in $cats )
## $pageHelper.strutsUrlHelper() wasn't working, so do it manually
#set( $catParam = "?$WEBLOGCATEGORYNAME_KEY=$utilities.encode($cat.path)" )
#set( $weblogUrl = "$rawUrl$catParam$!pageParam" )
$divider
#if( $chosenCat == $cat.path )
<span class="rChosenCategory">$cat.Name</span>
#else
<span class="rUnchosenCategory"><a href="$weblogUrl">$cat.Name</a></span>
#end
#end
</div>
#end
The macro does not change category order anywhere else. Specifically, it does not change it in the Search drop-down menu or in the New Weblog Entry category drop-down menu (and therefore the default category for new entries is also unchanged). It also doesn't change the position of the "All" category (which is always in the first position). I'm not sure how Roller orders categories by default. It's either reverse alphabetical order by name or reverse of the order that the categories were added. (2005-01-24 13:00:00.0) Permalink | Girl Scout Cookie Equivalency Chart Revised for 2004. There are two baking companies licensed to produce Girl Scout cookies, ABC Bakers (Interbake Foods LLC) and Little Brownie Bakers. Each company must produce three mandatory cookie types and can offer up to five more. Currently, there are five common cookie types that are produced by both companies. Confusingly, the same cookies have different names, depending on the baking company. This chart shows which cookies are equivalent.
Between 2003 and 2004, Pinatas replaced Friendship Circles, and Lemon Coolers and Double Dutch replaced Ole Ole's and Aloha Chips. References:
(2005-01-21 13:00:00.0) Permalink | Comments [2] Roller: Macro Customization and Hacking Most Roller customization documents I've read seem to deal with customizing the look of the weblog by editing page templates or CSS stylesheets. However, they are not helpful if what you want to change is output produced by Roller macros. Here are some tips for writing/customizing Roller macros (levels 4 and 5 of the Levels of Roller Customization below). Levels of Roller Customization (from high to low-level):
Unfortunately, the documentation you need is scattered across many different sites. Specifically, you need documentation on Roller macros, Roller templates, Roller Java source code, the Velocity Template Language, and the Java programming language.
Customization at this level is really just programming: writing new macros and re-writing the Roller macros. This requires knowledge of the Velocity Template Language (which is a programming language). It also requires knowledge of Java since Velocity is designed to interface with Java. Its basic variable types (String, ArrayList, Map) are Java objects whose methods are available to be used (if you know how). Roller is written in Java, and its objects, variables, and methods can also be used. Unfortunately, Roller is poorly documented and reading/interpreting its Java source code is necessary. Some tips:
Good luck! (2005-01-20 13:00:00.0) Permalink | Comments [2] |
Calendar
Recent Entries
SearchNavigation
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||