Pan Fried Gnocchi
As reported on 101 Cookbooks. Now, to find fresh Gnocchi…
Technorati Tags: cooking
« July 2006 | Main | September 2006 »
As reported on 101 Cookbooks. Now, to find fresh Gnocchi…
Technorati Tags: cooking
Quick miso soup recipe for a light dinner. Great working next to Uwajimaya, as I can pickup mushrooms and green onions after work. Stuff, in order of appearance:
Method:
If anything would reduce the amount of vinegar and mirin, perhaps too overpowering in the amounts listed above. Add tofu for protein, though miso not as appetizing with an army of tofu cubes in it.
Technorati Tags: cooking
Seattle Bicycle Master Plan - overview of Seattle’s Department of Transportation bicycle plan. Nothing on my grand scheme of things wish list, like “raise gas prices by $10 and hasten the demise of the automobile industry”, but a good start.
Technorati Tags: cycling
Anton Chuvakin on Log Standards. Focus should be on content of log messages, not the format or transport or storage thereof. Making developers remove spurious log messages would be a great start.
Additional logging thoughts: System Logging on Unix.
Technorati Tags: skid row
My recent reading included the following recommended texts:
Father Arseny, 1893-1973: Priest, Prisoner, Spiritual Father. Collection of letters, notes, and essays surrounding Father Arseny. Includes memoirs from a Soviet prison camp, and his life thereafter.
The Way of Zen by Alan Watts. Excellent introduction to Zen Buddhism. Sprawling history, covering the Indian origins, migration and evolution through China—take one part Buddhism, one part Tao, then mix well—and the various Japanese adaptations. Very clear and insightful prose.
Now bouldering V1 and V2 routes at Stone Gardens. Arm strength much improved due to biweekly climbing sessions, and moving better up the walls. Have completed several (easy) V3 routes, though rankings appear very subjective for routes of medium difficulty. Stone Gardens changing the routes often now: can miss out on things to try, though not stuck with “done it or defeated by it” doldrums.
Technorati Tags: rock climbing
Ideally, all systems would use the UTC timezone, and avoid problems with daylight savings shifts and timezone conversions. However, in practice, systems will use the local timezone, even if the company later follows the British Empire. Deployed systems will not migrate to UTC, as other projects will take priority, and the timezone change would require extensive testing and likely reveal previously unknown bugs. This article contains thoughts on better handling time related data, such as logfile entries or database records.
Eliminate missing metadata: the Unix syslogd(8) daemon logs neither the year nor the timezone, among other syslogd problems. This drops vital information, and wastes time if multiple groups need to reconcile timestamps from multiple sources across different timezones. Always include the year and timezone with the timestamp, even if everything uses UTC. How would someone from a different company know records were in UTC without asking or making educated guesses?
Timezone names may cause problems: EST stands for both Eastern Standard Time (-0500), and Eastern Standard Time (+1000). Different systems across the world may default to one or the other offset, and may result in erroneous dates. The numeric offsets recommended by ISO 8601 will avoid this issue.
Different software products use a multitude of time formats. If possible, standardize on a single company wide time format. This format must include as much metadata as possible: milliseconds through the year, in addition to the timezone. Standardization promotes in-house utilities to convert and display timestamps, as only one or a handful of input formats need to be coded for. These utilities in turn would speed exchange of time related data between groups and systems using different timezones. Logs can be standardized via software libraries such as log4j, or by replacing the stock syslogd with syslog-ng.
Set timezone policies at hardware (BIOS), system (OS), and application level. The system and BIOS timezone must be configured automatically when deploying the system, for example in a KickStart configuration file, and enforced with configuration management software. Application software should be likewise maintained. However, users may restart or change the timezone on the fly, leading to unexpected problems. A system set to UTC will start a database in UTC. However, a user who sets TZ=US/Pacific under their shell may kill and restart the database via sudo(8). This will bring the database up in a different timezone, and may result in records with incorrect timestamps. Therefore, the application must be set in the application initialization script. While some users may remember to use sudo -H to clear their custom environment variables, most will not. Standard, documented initialization scripts will avoid the issue.
To recap:
Finally, deploy time synchronization services to ensure all systems follow the same beat.
Highly recommend the book The Flavors of Olive Oil. Covers buying and tasting techniques: great advice when faced with rows of olive oil in a store. The tasting notes and the list of vendors provide a starting point for exploration. Also includes many helpful asides on food products and cooking methods, for example saba—an ancient grape must sweetener. Need to try some of the many recipes…
Technorati Tags: cooking
Using CPAN with a non-root account details customizing ~/.cpan/CPAN/MyConfig.pm and the Unix shell to use a custom directory for perl modules. While the following customize the PERL5LIB and MANPATH environment variables, editing the shell code is difficult:
if [ -d $HOME/lib/perl5 ]; then PERL5LIB=${PERL5LIB:+$PERL5LIB:}$HOME/lib/perl5 fi MANPATH=${MANPATH:+$MANPATH:}$HOME/share/man export MANPATH PERL5LIB
I currently use the following, which allows multiple directories to be listed, and the ordering of the directories changed easily in a text editor:
while read pf; do PERL5LIB=${PERL5LIB:+$PERL5LIB:}$pf done << EOPERL5LIB /sw/lib/perl5 $HOME/lib/perl5 EOPERL5LIB typeset -U PERL5LIB export PERL5LIB while read pf; do if [ -d $pf ]; then MANPATH=${MANPATH:+$MANPATH:}$pf fi done << EOMANPATH /sw/share/man /sw/man /usr/share/man /usr/X11R6/man /usr/local/share/man /usr/local/man /usr/local/pgsql/man $HOME/share/man EOMANPATH typeset -U MANPATH export MANPATH
This method works for all colon delimited environment variables, such as LD_LIBRARY_PATH, CLASSPATH, and others. Duplicate supression could be added, though would require additional code.
An even better option may be to template the shell configuration files, depending on the system. This way, complex source files would be rendered into minimal shell configuration files that need not perform any number of calculations for each new shell.
In addition to the excellent CIA World Factbook, the U.S. State Department issues a yearly religious freedom report. Warns about countries where the $LC_LOCALE_DOMINATE_RELIGION abuses the various non-dominate groups, whether missionaries allowed, and so forth. Oddly, Vatican City not covered.
The following ZSH functions, once added to ~/.zshrc and loaded, allow convenient lookup of Perl module versions and locations.
function pm-version { perl -M$1 -le "print \$$1::VERSION" } function pm-path { perl -l -M$1 \ -e "(\$mp=q{$1})=~s{::}{/}g;\$mp.=q{.pm};" \ -e "print \$INC{\$mp}" }
For example:
$ pm-version Text::Template 1.44 $ pm-path Text::Template /home/jmates/lib/perl5/Text/Template.pm
This leads to quick perldoc(1) lookups or viewing of module source code:
$ pm-path Text::Template /home/jmates/lib/perl5/Text/Template.pm $ perldoc `!!` … $ less !$ …
More perl tricks available in Perl One Liners.
My Felt mountain bike needs a frame fix on the rear brake. However, Supergo Performance bicycles no longer support repairs on Felt, and redirected me to Aurora Cycles. Technician their recommended Specialized for road bikes, citing great customer support. They only carry Felt road bikes and cruisers: adding mountain bikes would require additional paperwork from Felt. Next: contact Felt directly to determine the best return path.
Technorati Tags: cycling
After lunching in the International District of Seattle for over a month, I have two favorite restaurants:
Vegetarian Bistro at 668 South King Street. All vegetarian1, though have not tried any of the fake meat options. They have a huge selection, including wonderful Dim Sum. Especially like the steamed vegetable and pan fried pot stickers. The steamed or fried crispy bean curd has been too hard to chew for my liking. Excellent fried rice with tofu and ginger or seaweed and toasted pine nuts.
Not open on Tuesday, which leads to my second favorite restaurant.
Suspect Sichuan Peppers used to great effect in Vegetarian Bistro fried rice, so picked up a sample at World Merchants, Spice, Herb & Teahouse.
1 Fortune cookies probably baked with eggs. Oh, well. :)
Technorati Tags: food
Software must not emit warnings that are not errors. Needless errors clog log files, increase data processing and storage costs, and greatly complicate log analysis. At best, a new hire will debug a script, and waste time asking “is this message normal?” Better sites might Wiki “ignore this log” and hope the new hire can find it. Best sites kill off the message (or lower the severity to notice or below), and the time is never wasted wondering, documenting, and retraining. Without clear mappings of log levels to actions, one enters expression hell, where long action lists evolve: warnings X, Y, and Z require action but not M, Q, or Y. Except on Tuesday. Maintaining such lists is both time consuming and error prone.
Instead make logs actionable: specific priorities must map to specific actions. For example, a emerg or alert syslog(3) message always results in a severity 1 (highest priority) ticket and a page, crit or err messages a severity 2 ticket and page, warning messages a severity 3 ticket but no page, and no action for any lower priority. Simple to code for, and easy to decide what sort of response (and therefore priority) a new log message requires. Actionable log levels also create automation. Under Tomcat, developers could mandate any FATAL logs mean the instance requires immediate restart. Easy to check for in a log file, and automatically thread dump, kill, and restart java should a FATAL turn up.
In-house code benefits most from actionable logs. Vendor software may emit no logs, or use bizarre priority levels for trivial data: automount on Mac OS X used to log the automount version under daemon.err!. Worse, stock syslogd(8) omit the facility and priority information by default. Use monitoring software such as Nagios to trigger actionable events where vendor logs lack good information, and reserve log-based actions generated by tools like sec.pl to well known errors, such as disk full or kernel panics.
No news is good news: also eliminate spam from cron(8) jobs. Larger sites with high turnover may end up with hundreds of daily notifications, mostly junk, mixed with a few critical messages. Identify the required messages, and direct their output to role based mailing lists (never root or directly to a user), then kill off everything else. If the notification message confirms something ran, instead write a low priority log message (or touch a last-ran-on status file), then have another utility warn if the message (or the last-ran-file) was last updated too long ago.
Among many other coffee sources in the Belltown area of Seattle:
Technorati Tags: coffee
System administrators must read the book Time Management for System Administrators by Thomas Limoncelli. A quick read with excellent advice including the “keep your e-mail inbox empty” rule and how to prioritize tasks. David Allen’s longer Getting Things Done provides a complete workflow that encompasses both work and home.
I am currently experimenting with both the Kinkless GTD method (great for a Mac OS X laptop), and a Moleskin (great for accidental drops, unlike a fragile and expensive PDA). At work, trying Outlook, though the projects-as-contacts hack makes creating new projects difficult. Outlook otherwise good (when not being slow or crashing), as can quickly convert e-mail into tasks. Probably will have to write my own time management script, as current software not scriptable1 enough. For example instead of manually polling e-mail, have a script do the check. If a significant amount of e-mail needs attention, the script would create an action item to check my e-mail.
Other sites to watch for time management tips include:
Next week: Thyme Management.
1 While Kinkless GTD uses AppleScript, I would write my utility in Perl. AppleScript a difficult language for me: nearly impossible to create code from the dictionaries provided, time consuming to integrate into a working script. </rant>
Mutation on mudcracks used in a previous post. Water layer and different texture and lighting thrown in for good measure.
Bike next to I-5 by Northgate during rush hour, and be the only human not rolling ruin upon the planet. Or, avoid the hot car infested and shade free lanes with the Bikely bike trip planning site. Would have helped me better navigate from Greenlake to Shoreline without the Northgate diversion.
Added a few routes, will have to paw through the existing routes later…
Technorati Tags: cycling
Rather than edit a crontab(5) entry to disable a cron job, instead consider using a status file to disable the operation of a script. Various advantages include:
Disabling the cron entry or disabling crond blur the line between system configuration and system operation. Using a status file distinguishes whether the configuration is correct, and whether the script should not run for some external reason (planned outage, data center migration).
Either use a filename based on the script name, perhaps somewhere under a custom /var directory. Also consider a global file to disable all scripts, or filenames that disable groups of scripts by function.
Technorati Tags: Unix
Despite years of security warnings, people still utilize /tmp on Unix systems in highly unsafe fashions. Attacks include arbitrary and unlogged file deletion against the user writing the file, where a malicious user creates a symbolic link pointing at the file to be evicted. Solutions to this problem: use secure temporary file creation routines, or locate the files in a new directory with the minimum permissions required.
Use mktemp(1) to create temporary files. Temporary files can be shared by name between scripts, or by filehandle when using the Perl File::Temp module. See also my Term::CallEditor module, which solicits data from an external editor.
For a single temporary file under a shell script, expand on the following template:
#!/bin/sh # ensure temporary files cleaned up (unless an # improper kill -9 used on the script - but # that's a different rant!) cleanup () { rm -f $TMPFILE } # To better trace temporary file back to this script BASENAME=`basename $0` TMPFILE=`mktemp /tmp/$BASENAME.XXXXXXXX` || exit 1 trap "cleanup" 0 1 2 13 15 # add code involving TMPFILE here cleanup
Multiple temporary files could be appended into a string, which during cleanup would be removed in turn. Aadvanced shell scripting languages support arrays, though I would sooner switch to a Perl script.
For portability, try mktemp(1), then perhaps $RANDOM, and failing that a static file under /tmp. Emit a warning if mktemp(1) cannot be found, so customers can correct the deficiency.
The second major use of /tmp is for process tracking or similar status files. These files must have a static name, so other processes can consult the known file location. Solution: use a different directory, and set the minimum required permissions. Either overload the vendor space, using directories such as /var/run or /var/log, or create a new site specific directory structure that does not conflict with the vendor space.
Technorati Tags: Unix
Signed up for Bikestation Seattle access. Near work, and offers secure 24x7 parking. At work, the building lease prohibits bikes in the building, and the parking garage wants bikes stored in an open cage, locked behind a default password, and no attendant after hours. Small wonder bikes get stolen! While one may naturally suspect this cycling discouragement to stem from the usual Hindu American Zionist Latter-day Orthodox Corporate Zensufi Pentecostal Masonite conspiracy, more likely (but far less entertaining) causes include building owners who dislike tire scrapes and mud, and a parking garage who threw together unprofitable bike cages as an afterthought.
Slightly longer walk to work, though this avoids the annoying road by the Stadium. Escaping Northwesterly tricky. First avenue best option, as I can sneak into Pike Place Market for sorbet or other snacks on the way home. However, Pike Place Market comes to a screeching halt somewhere between 17:15 and 18:30, ruling out worked-a-bit-late days.
Technorati Tags: cycling
It’s that time of month again, when Mailman turns to notification spam. This time, a Perl script to automatically disable said spam. Silence is golden, and spam is not.
Hair soy. Lower cost! Recycles waste material! A win-win solution.