July 2, 2009
Off to San Pedro de Casta, Peru
This one in a series of articles about taking a service vacation to Peru, coordinated by Globe Aware.
Tonight we make final preparations for tomorrow's flight to Peru. If you haven't read, Heidi and I are spending a week in the Andean village of San Pedro de Casta, Peru on a service vacation. Kids are staying at home with their grandparents, who arrived earlier this week.
We probably haven't spent enough time preparing (Spanish vocabulary is still only a handful of words), but we've got the most critical stuff lined up.
Globe Aware, the organization coordinating the trip, has been excellent. They've provided good information about what to expect for travel, accommodations, food, and more. As we've had questions they've been great about getting back to us. All-in-all, they've done a great job at helping us know enough to be comfortable about going to a distant land and living among strangers-to-become-friends for a week.
A few weeks back the coordinator asked if we would transport some internet routers for boosting network signals, but it fell through as they were on backorder. I've been asked to take a look at the school and the computers and provide some feedback on getting a network and internet connection there.
Here's the page on the San Pedro trip, with a video and photos from previous groups.
Very excited, a little bit nervous....
Posted by mike in Globe Aware Service Vacation at 5:09 PM | Comments (0) | TrackBack (0)
Latest Bike Route - 20 miles from Malden up around Lake Quannapowitt
It was raining this morning, but was my last chance to get out on the Cannondale all-carbon road bike I've been borrowing and riding for the past week.
Instead of my usual "wind through neighborhoods to avoid all main roads" I mapped a ride straight up Route 28 until it meets I-95/128, across Wakefield past the Converse Factory and down along Lake Quannapowitt. A beautiful ride, the best route I've done yet from an enjoyment perspective (even through I was soaking from the increasingly heavy rain).
Toward the end of the ride it started thundering and lightning...which made me a bit nervous to scurry the last few miles home.
The Cannondale goes back to it's owner today. Has been a great week of riding, that thing floats compared to the mountain bike that I usually ride.
Posted by mike in Recreation at 8:50 AM | Comments (0) | TrackBack (0)
June 17, 2009
20 Mile Road Bike Loop Originating in Malden, MA
This is my most recent ride iteration in my quest to find a good 20-30 miles route starting and ending right around where we live. It's not perfect, but it works pretty well given that we live in a densely populated area and I often ride during evening commuting hours.
Posting the Map My Ride widget this time.
Posted by mike in Recreation at 10:29 PM | Comments (0) | TrackBack (0)
June 9, 2009
Another Boston Suburb Road Bike Route
The after work, before dinner bike ride today followed a route I planned out last night, up through the center of the Fells, up and across Stoneham and Wakefield, down through Melrose and back into Malden along the east side of the Fells.
I'm trying to find something in the 15-20 mile range that is quick to get out on and and the route travels along roads that are in good condition, have some kind of shoulder, and don't have heavy traffic. This ride was pretty good for all three. It's not a ride in the countryside, there are a handful intersections to navigate, but overall the roads were wide enough to accommodate a cyclist and not so heavily travelled that it was stressful to be riding.
It was raining when I rode tonight, a very light misting/drizzle. By the time I got home it was a bit heavier, but not so much that I was nervous about road traction. Definitely got wet though, water dripping from the helmet and all.
Bookmarking this ride for later use...
Posted by mike in at 10:11 PM | Comments (1) | TrackBack (0)
June 8, 2009
Evening Bike Ride around the Fells
For today's ride I tried a new route I had plotted out on Google maps after feeling short-changed on the last route I tried.
The stretch up South Border road looks inviting on the map. I've driven on that road before, in my mind it was a scenic stretch through the woods. Reality is that there's 2 inches of shoulder on that road, an uphil climb when traveling west, and quite a bit of traffic. I guess I should have known better than trying that route around 5pm when folks are trying to get home to their loved ones. Probably a better route if I'm going out early in the morning.
Heading north on Highland Avenue was a bit better. Still a lot of traffic but a bit more shoulder. As I got up closer to the bridge over I-93 traffic lightened up.
The second half of the ride was perfect. Franklin St. from Stoneham into Melrose and then the Fellwsay East back to Malden were the right way to end the ride.
This will be a good route for early mornings when traffic is light, I'm back to Google maps to do some more fiddling.
Posted by mike in at 10:43 PM | Comments (0) | TrackBack (0)
June 6, 2009
Road Bike Riding Around the Fells, North of Boston
I technically don't ride a road bike, but I'm on the hunt for a few good road routes around Malden, Medford, Winchester, Stoneham, Melrose and surrounding areas north of Boston.
Last year I tried to get more regular about riding my bike (inspired by Pete), and went on more regular evening rides during the summer. Nothing terribly long, just a chance to get out and stretch the legs a bit while enjoying the cooling summer evening.
The route I usually took is here, north through the center of the Fells and then back down along the eastern side. I think it's biker friendly enough, but not terribly long, so I'm exploring. A copy of Road Biking Massachusetts is on the way which might help.
I tried this route again today, stopping in the Fells to meet up with the family who hiked in for a picnic. When I got home I spent some time on Google maps to plot out a longer route to try next time.
I figure I need to "prove" myself by riding enough to warrant a second bike, more suited for the task. I like my mountain bike, and slicks go a long way, but it's nothing like being on a road bike.
Posted by mike in at 12:33 PM | Comments (0)
April 23, 2009
In Ireland
We're in Ireland for 9 days (a day touring the Irish countryside and western coast, a week in Dublin, and a day in Belfast).
Check for pictures on Heidi's Picassa gallery. We're trying to update it every night.
Travel here went pretty well. After the all-night flight we found our way to our apartment, got checked in, ate lunch, and then got out to get some information from the tourist center and see a few things. We stumbled around Dublin for a few hours to sightsee and keep ourselves awake until dinner time when we could eat and then crash.
Because the next day, our first full day, was a train and bus tour of the Irish countryside and western coast, we needed a full night's rest. Staying out all day meant we'd for sure sleep even though our bodies may have been thinking it was mid-afternoon.
The photo here is the Spire of Dublin, on O'Connell street.
Posted by mike in at 6:09 AM | Comments (0) | TrackBack (0)
March 28, 2009
Configuration Options for JavaScript Lint
I was telling someone about JavaScript Lint, and how I've been using it at work for checking JavaScript syntax. Can't seem to find a place online where you can look at the configuration options, so I'm posting them here.
# Configuration File for JavaScript Lint 0.3.0
# Developed by Matthias Miller (http://www.JavaScriptLint.com)
#
# This configuration file can be used to lint a collection of scripts, or to enable
# or disable warnings for scripts that are linted via the command line.
#
#
### Warnings
# Enable or disable warnings based on requirements.
# Use "+WarningName" to display or "-WarningName" to suppress.
#
+no_return_value # function {0} does not always return a value
+duplicate_formal # duplicate formal argument {0}
+equal_as_assign # test for equality (==) mistyped as assignment (=)?{0}
+var_hides_arg # variable {0} hides argument
+redeclared_var # redeclaration of {0} {1}
+anon_no_return_value # anonymous function does not always return a value
+missing_semicolon # missing semicolon
+meaningless_block # meaningless block; curly braces have no impact
+comma_separated_stmts # multiple statements separated by commas (use semicolons?)
+unreachable_code # unreachable code
+missing_break # missing break statement
+missing_break_for_last_case # missing break statement for last case in switch
+comparison_type_conv # comparisons against null, 0, true, false, or an empty string allowing implicit type conversion (use === or !==)
+inc_dec_within_stmt # increment (++) and decrement (--) operators used as part of greater statement
+useless_void # use of the void type may be unnecessary (void is always undefined)
+multiple_plus_minus # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs
+use_of_label # use of label
-block_without_braces # block statement without curly braces
+leading_decimal_point # leading decimal point may indicate a number or an object member
+trailing_decimal_point # trailing decimal point may indicate a number or an object member
+octal_number # leading zeros make an octal number
+nested_comment # nested comment
+misplaced_regex # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma
+ambiguous_newline # unexpected end of line; it is ambiguous whether these lines are part of the same statement
+empty_statement # empty statement or extra semicolon
-missing_option_explicit # the "option explicit" control comment is missing
+partial_option_explicit # the "option explicit" control comment, if used, must be in the first script tag
+dup_option_explicit # duplicate "option explicit" control comment
+useless_assign # useless assignment
+ambiguous_nested_stmt # block statements containing block statements should use curly braces to resolve ambiguity
+ambiguous_else_stmt # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent)
+missing_default_case # missing default case in switch statement
+duplicate_case_in_switch # duplicate case in switch statements
+default_not_at_end # the default case is not at the end of the switch statement
+legacy_cc_not_understood # couldn't understand control comment using /*@keyword@*/ syntax
+jsl_cc_not_understood # couldn't understand control comment using /*jsl:keyword*/ syntax
+useless_comparison # useless comparison; comparing identical expressions
+with_statement # with statement hides undeclared variables; use temporary variable instead
+trailing_comma_in_array # extra comma is not recommended in array initializers
+assign_to_function_call # assignment to a function call
+parseint_missing_radix # parseInt missing radix parameter
### Output format
# Customize the format of the error message.
# __FILE__ indicates current file path
# __FILENAME__ indicates current file name
# __LINE__ indicates current line
# __ERROR__ indicates error message
# Visual Studio syntax (default):
+output-format __FILE__(__LINE__): __ERROR__
# Alternative syntax:
#+output-format __FILE__:__LINE__: __ERROR__
### Context
# Show the in-line position of the error.
# Use "+context" to display or "-context" to suppress.
+context
### Semicolons
# By default, assignments of an anonymous function to a variable or
# property (such as a function prototype) must be followed by a semicolon.
#
+lambda_assign_requires_semicolon
### Control Comments
# Both JavaScript Lint and the JScript interpreter confuse each other with the syntax for
# the /*@keyword@*/ control comments and JScript conditional comments. (The latter is
# enabled in JScript with @cc_on@). The /*jsl:keyword*/ syntax is preferred for this reason,
# although legacy control comments are enabled by default for backward compatibility.
+legacy_control_comments
### JScript Function Extensions
# JScript allows member functions to be defined like this:
# function MyObj() { /*constructor*/ }
# function MyObj.prototype.go() { /*member function*/ }
#
# It also allows events to be attached like this:
# function window::onload() { /*init page*/ }
#
# This is a Microsoft-only JavaScript extension. Enable this setting to allow them.
-jscript_function_extensions
### Defining identifiers
# By default, "option explicit" is enabled on a per-file basis.
# To enable this for all files, use "+always_use_option_explicit"
-always_use_option_explicit
# Define certain identifiers of which the lint is not aware.
# (Use this in conjunction with the "undeclared identifier" warning.)
#
# Common uses for webpages might be:
#+define window
#+define document
### Files
# Specify which files to lint
# Use "+recurse" to enable recursion (disabled by default).
# To add a set of files, use "+process FileName", "+process Folder\Path\*.js",
# or "+process Folder\Path\*.htm".
#
+process jsl-test.js
Posted by mike in Technology at 2:52 PM | Comments (0)
March 25, 2009
Tripping up MySQL Replication's wild-ignore-table
Ran into something I hadn't seen before with MySQL replication this morning (details obscured).
We use the MySQL replication slave option replicate-wild-ignore-table to prevent tables generated for short-term use like calculated data, projections, and reports from being duplicated on our hot spare machines.
So if you've told MySQL that no tables containing the phrase "projection_temp" should be replicated, why would you see the following in show slave status on the slave?
...
Replicate_Wild_Ignore_Table: db_%.projection_temp\_%
Last_Errno: 1146
Last_Error: Error 'Table 'db_12345.projection_temp_gdoivxtt' doesn't exist'
...
I looked at the message for a long time, trying to figure out how that database or table name violates the ignore table rule. The statement to create the table wasn't applied to the slave, as evidenced by the 'table doesn't exist', but why would MySQL be trying to apply this binary log statement that's destined for this table?
The answer, an INSERT statement that SELECTs data from the ignored table.
As part of a recent enhancement we added, one of these short-term tables may be referenced to populate data in another table:
INSERT INTO projection_history (field1,field2)
SELECT field1, field2
FROM db_12345.projection_temp_gdoivxtt
We're now replicating those previously ignored tables.
Posted by mike in MySQL at 2:21 PM | Comments (0) | TrackBack (0)
February 10, 2009
The Last Soda
Dear Mr. Dew,
You've been in my life for a long time, about 22 years now I guess. It started back in high school when my preference for Mello Yello took a back seat for the less mellow, mountainously thrilling taste that flows from your wide-mouth opening.
Since then you've been a regular character in most of the scenes of my life. There have been periods where I've gone without, even long chunks of time, but you've always made your way back in. Oh how I've enjoyed a cold, even frosty (I put you in the freezer one hour before lunch), beverage every day at lunchtime over the past few years. Sometimes, on "special occasions," I'll have a second later in the day or even drink unmetered for a period where long nights are required. Those special occasions have been getting more frequent, and sometimes downright out of control.
Last week, as my supply was running low, I started wondering how old a person can get an still have this kind of treat as a part of their regular diet. I'm not old yet, and definitely don't prioritize healthy eating. I do know when I get to be an old man I will surely have stopped enjoying the sugary treat. How old is that, 40, 60, 80? And what will have happened between now and that age with regards to refreshing soft drinks?
So I figured now is probably the best time to say goodbye. I downed the my last can on February 6th, at lunchtime. I know, I've stopped before. Maybe it won't be for good, but I'm not getting any younger and the sad image of an 80 year old man sitting on the porch drinking a Dew is a powerful deterrent.
Sincerely,
Mike
Posted by mike in Recreation at 8:56 PM | Comments (2) | TrackBack (0)