Wednesday, August 30, 2017

Big Web, Tiny Spider, So Many Questions

This last Sunday I wandered out to our deck and was shocked to see a good size spider staring back at me:

It's hard to tell from these photos, but this guy had somehow constructed a massive web that was anchored on one side by our house and on the other by a tree. I quickly stepped back inside and grabbed my camera. Here's a close up shot:

I had so many questions. How is it possible that such a tiny creature could make such an impossibly large and complex structure? And how long did it take? And is he dangerous? And should I be killing him instead of just snapping photos?

On the last question, I punted. I opted to step back inside for breakfast and to deal with Mr. Spider on a full stomach. Less than an hour later I stepped back outside to assess the situation. And I found...absolutely nothing. There wasn't the tiniest trace of the web. Had I neglected to grab photos, there would have been no proof of this remarkable structure and its creator.

So what does it all mean? Life is fragile? Be glad you're not a spider living a backyard full of birds? Take the pics, then eat breakfast? Truthfully, I'm not really sure. But it must mean something, right?

Tuesday, August 29, 2017

(A Very) Modest Model 100 Music Masterpiece

The first Model 100 project I planned to tackle was to have my ancient laptop produce some sweet tunes. You know, something along a Red Means Recording creation, but with a 34 year old(!) laptop. Mind you, I've got no experience actually creating music, but I figured that would hardly get in my way. What can I say, programmers are optimists.

While I could get the Model 100 to beep with relative ease, getting it produce anything along the lines of a tune was considerably more tricky. And then there's the hell that is line number BASIC. Besides the obvious annoyance of line numbers, you've got no named functions and only 1 and 2 character global variables to at your disposal. And of course, the Model 100 has an 8 line screen, which is another obstacle to deal with. Still, trying to create order out of such programming chaos was surprisingly fun, so I stuck with it.

For my musical creation, I give you a simple application which will play the notes of your choice. You can even control the octave and duration of the notes with relative ease (global variables for the win).

And here's my very first tune, carefully transcribed from an Internet resource.

Can you name that tune?

As I mentioned above, this exercise had less to do with creating interesting music and more to do with developing a sort of coding style that made reasoning on the Model 100 a doable task. For my tiny little program, I got there. Check out the code that powers the above song:

10 REM more music
20 REM Song: Yankee Doodle
30 DATA "C","C","D","E","C","E","D"
31 DATA "C","C","D","E","C","B"
32 DATA "C","C","D","E","F","E","D"
33 DATA "C","B","G","A","B","C","C"
39 DATA "X"
40 LET D = 7
50 FOR O = 1 TO 5 STEP 1
60 GOSUB 1000
70 RESTORE 30
80 NEXT O
99 END
1000 REM iterate through notes
1010 READ N$
1020 IF N$ = "X" THEN GOTO 1999
1030 GOSUB 2000
1040 GOTO 1010
1999 RETURN
2000 REM Let's Play the note in n$
2010 FQ(1) = 698
2020 FQ(2) = 622
2030 FQ(3) = 587
2040 FQ(4) = 523
2050 FQ(5) = 466
2060 FQ(6) = 439
2070 FQ(7) = 783
2080 I = ASC(N$) - 64
2090 F = FQ(I)
2100 FOR S = 1 TO O-1 STEP 1 
2110 F = F * 2
2120 NEXT S
2130 PRINT "playing "; N$ ; F ; I
2140 SOUND F, D
2999 RETURN

There's actually quite a few 'features' in the above code, including: support for playing arbitrary length songs, the ability to code in simple music notation ("C" for a C note) and as I bragged about above, the ability to control the duration and octave of each note. Heck, thanks to GOSUB I even achieved something resembling modularity.

I'm not quite sure where I go from here. I suppose I could continue this musical journey and see if I can't eek out something resembling unique (and perhaps even pleasant?!) music from this device. Or maybe it's time to find a new challenge.

This was a fascinating exercise in programming deprivation. Trying to hack my way out of line numbers and global variables was a great way to see classic programming challenges in a new light.

Monday, August 28, 2017

Exploring Kingman Island

This past weekend friends took us to explore Kingman Island in DC. This anonymous bit of green space situated in the middle of Anacostia River was nothing short of awesome. It was nearly empty, save for a few runners and dog walkers, and felt wholly separated from the city around us. I love discovering gems in DC, and this was a top notch find.

If you find yourself near the old RFK Stadium, you've basically situated yourself next to the bridge which will take you to Kingman Island. If you get there, you owe it to yourself to explore the island.

A Little Backyard Ninja Training

A few years ago, I gave my brother throwing knives for a birthday gift, because, well, throwing knives are awesome. Last Friday night, we busted them out and I foolishly put my cell phone down range to capture my attempts at throwing them.

Surprisingly, I was rewarded for this needlessly risky act:

I can't tell you how proud the 12 year old boy in me is!

Here's an action shot of David throwing a knife - not too shabby! Though he loses points for not stupidly aiming at his cell phone.

All it takes is $9.99 and a disregard for all the rules of Totin' chip, and you can get in on this fun!

Friday, August 25, 2017

Something from Nothing - Paracord Edition

One of my favorite books is Something From Nothing, a children's story about a single gift that seems to get worn out, only to get re-purposed into something new and equally precious. From blanket, to coat, to vest and so on. It was in the spirit of this book that I pondered what do with 15 inches of reflective orange paracord.

What had started the summer as hank of 100 feet was down now to this raggedy strand. Over the summer, I'd used the now missing pieces to create gear tethers, necklaces, hang a bear bag and even improvised a a cuddly stuffed animal. I couldn't bring myself to simply toss this last bit of cord out.

I did a bit of Googling around and found the perfect use for it: to make a bit of key chain flair using the 2 Strand Wall Knot.

At first, the 2 Stand Wall Knot looked impossibly complicated. But that's because I was visually examining each step. Once I slowed down and just followed the written instructions, I quickly learned the knot wasn't actually that complex. Here's my creation coming together:

And best of all, when I finally lose this key fob, I'll still have this post, the knowledge of how to make a 2 Strand Wall Knot and a summer full of memories. If that's not Something from Nothing, I don't know what is.

Thursday, August 24, 2017

Using Google Sheets to Manage SDR Touch Presets

One of my hurdles to playing with Software Defined Radio is that experimenting with a fresh list of potential radio frequencies is a cumbersome process. SDR Touch, my radio app of choice, has the ability setup presets, which makes jumping around to frequencies easy. But getting the initial list in there is a pain. I noticed that SDR Touch offers the ability to import and export presets, which I figured would vastly simplify this problem.

The first solution I tried was to create some presets, export them and try changing the XML file by hand. Unfortunately, the XML format was just a bit too low level to comfortably manage this way. On to Plan B, which was to create a simplified format and convert it to XML using some code.

While the Unix Geek in me wanted this 'simple format' to be text based, I figured this was a good opportunity for me to play around with AppScript, Google's solution for extending Docs, Sheets, etc. My plan was to manage the frequencies in a Google Spreadsheet and then write some AppScript to generate the ugly XML.

After about 15 minutes of playing with AppScript, I had a crude version of this solution implemented. Here's the spreadsheet and here's a few screenshots showing my code in action.

First off, I cataloged a bunch of interesting presets:

If you were paying close attention, you may have noticed in the screenshot above that there's a new top level menu: SDR Tools. Clicking on it, shows the entry point to the Export code I wrote. Pretty sweet, right?

And finally, clicking the above menu item causes the system to generate a dialog box with the relevant XML in place:

Ultimately, I had to copy and paste this XML into a file named SDRTouchPresets.xml and store this file in the root directory of my LG G6. With that done, I could import the file. And bam!, all the frequencies mentioned in the spreadsheet were loaded up and are now a press away from me accessing them:

While this worked, the solution still has a ways to go. Right now, only the currently selected sheet in the spreadsheet is included in the export file. I need to change it so that all sheets are processed and stored in the XML. Also, I should really be storing the XML in Google Drive, and not depending on Copy and Paste. But still, this is a good start and really opens my eyes up to a whole new world of possibilities in Google Sheets and Docs.

Here's the code that powers the above:

function onOpen() {
  var spreadsheet = SpreadsheetApp.getActive();
  var menuItems = [
    {name: 'Export Frequencies', functionName: 'sdrFreqExport'}
  ];
  spreadsheet.addMenu('SDR Tools', menuItems); 
}

function sdrFreqExport() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var name = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();

  // This represents ALL the data
  var range = sheet.getDataRange();
  var values = range.getValues();

  var doc    = ['<?xml version="1.0" encoding="UTF-8"?>',
                '<sdr_presets version="1">',
                ' <category id="1" name="' + name + '">'];
  for (var i = 2; i < values.length; i++) {
    doc.push('  <preset id="' + i + '" ' +
             '          name="' + values[i][2] + '" ' +
             '          freq="' + rawFreq(values[i][1]) + '" ' +
             '          centfreq="' + rawFreq(values[i][1]) + '" ' +
             '          offset="0" ' +
             '          order="' + i + '" ' +
             '          filter="13686" dem="0"/>');
  }
  doc.push(' </category>');
  doc.push('</sdr_presets>');
  
  showDoc(doc.join("\n"));
}

function rawFreq(freq, band) {
  return freq * 1000000;
}

function showDoc(doc) {
  var src = "<pre><![CDATA[" + doc + "]]></pre>";  
  var html = HtmlService.createHtmlOutput(src)
      .setWidth(400)
      .setHeight(300);
  SpreadsheetApp.getUi()
      .showModalDialog(html, 'SDR Export');
}

Feel free to grab it and improve it.

Wednesday, August 23, 2017

Weekly Discoveries

With our Epic Boston Adventure in the way, I got a bit behind on my Weekly Discoveries. But there's no time like the present to catch up.

A few weeks back it was Tisha B'av, the saddest day in the Jewish calendar. On this day especially, I wasn't in the mood to rock out. Luckily, YouTube had me covered with such gems as 2 HOURS: Sad Violin and Piano, which filled in the silence nicely. And here's a nice recitation of the book of Eicha, and includes a though provoking introduction. And when all else failed, I listened to folks wailing at the Wailing Wall in Jerusalem. YouTube never fails to deliver.

The following week things got much more up beat. Enter Shikari by Live Outside was an awesome tune, with an only slightly disturbing video. I also continued rounding out my appreciation of rap music thanks to Briggs, L-FRESH and A.B. Original.

That last tune, Dumb Things is clearly injected with a political message, though issue at hand seems totally foreign to me. I hope message is a positive one, as I really enjoyed listening to the tune. As for more local politics, I'll leave it to you to decide if Naive Bravado by Urthboy describes the current US administration or not.

Pentatonix's channel is filled with videos that have earned 10's of millions of views, so they hardly need one more person heaping praise on them. But man, their rendition of Dancing On My Own was so good, I couldn't help but add it to that week's list.

On the other end of the view count spectrum is EOP Live, a channel filled with interesting, barely watched performances. Take this one by Levi Lowrey; it's terrific. And yet, he's currently at 51 views, 3 of which were probably mine.

I can definitely relate to the awkward but persistent guy in Greatest Love Story. I'm not usually one to dig a sappy love song, but this one pulled me in. It makes me want to stop typing this blog post, call up my wife and tell her that we truly are the Greatest Love Story.

I know it's an advertisement for a candy company, but I found that I couldn't resist adding Making Music With Candy by Andrew Huang to my discoveries list. It's a creative approach to pushing a brand, and Huang makes the video work. And who knows, maybe it will inspire you (or your kids) to go out and make some music.

On the non-musical side of things, I give you 5 Different Ways to Make Bread Over a Campfire by Kenneth Kramm. Kramm is a bit of a YouTube legend (among Bushcrafter's anyway), as he's knowledgeable, creative, thorough and has the screen presence of Mr. Rogers (I mean that strictly as a compliment). A few weeks back, I attempted a bit of campfire cooking myself and the results were pretty horrendous. I vowed I'd beef up my skills before attempting again, and Kramm's video is a solid start. He shows 5 ways to cook bread, surely one of which will give me better results on our next trip.

Watch both sets of discoveries here and here. Enjoy!

Tuesday, August 22, 2017

Road Tripping, Car Camping Gear That Worked

We just finished up an epic week of Road Tripping and Car Camping with our Boston Nieces and Nephews. Here's some gear I tried on it that really delivered. Maybe this will be helpful for your next adventure?

10L Mangrove Backpack / 10L Quecua Backpack - these are basically the same small backpack under two different brand names on Amazon. These backpacks *rock*. For around $10, you get a compact, well made bag. The size is just right for kids, as it lets them store essentials without ever getting too bulky. This past trip, everyone from 8 year old Chana to 4 year old Gavriella carried their "adventure bag" pretty much everywhere.

When the kids were hiking the bag contained: a water bottle, snack, disposable poncho, Heat Sheet emergency blanket, compass, whistle and flashlight. The bag had enough room to cram in a toy and any shells or rocks found along the way. The kids never complained about the bags, and whenever they were thirsty or hungry, they knew where they could turn. Even Gavriella, who didn't go into the woods this last trip, carried her adventure bag throughout Plymouth.

I'm all about kids being (relatively) self sufficient, and this bag lets them carry their essentials without weighing them down.

Cold Steel Bird and Trout Knife - I'm not much of a knife guy, but after being frustrated with the locking mechanism of the Gerber STL 2.0, I wondered what other options are out there. Looking around, the Bird and Trout Knife caught my eye. Like the STL, it was compact and lightweight. It's also a fixed blade, so it has no locking issues. I wondered how it would handle as both an outdoorsy knife for me, as well as an option for a knife beginner.

In many respects, the Bird and Trout knife did awesome. You wear it around your neck and it's surprisingly comfortable. I put it on when I got to the campsite and didn't take it off till I had to check it in my bag to avoid getting stopped by TSA. The blade is nice and sharp, and a reasonable size - just about the same size as the Gerber STL that I was considering replacing. It took a bit of research, but I finally got the hang of locking the knife in the sheath, which it fit well. For nearly all simple camp tasks, from cutting rope to opening food packages, the knife was awesome.

As for cons, the sheath that seemed so definitively locking when I got it, already seemed to loosen up in the span of the week. I doubt the knife will go anywhere while hanging on my neck, but it's disconcerting that I can now tug on it and the blade can slip from the sheath even without pushing the thumb lock.

The biggest con, however, is that for larger tasks you simply can't muscle this knife. I could shave a point on the end of a hot dog stick and all, but attempting to attack larger chunks of wood in a more aggressive way was just plain too uncomfortable. The thin handle cuts into your skin and reminds you loudly that this a knife for delicate work. Shira's bulky locking blade knife was far easier on the hands for bigger tasks.

Ultimately, I think the Bird and Trout Knife is a winner. It's super lightweight and for the majority of simple camp tasks I do, it's perfect. The neck carry, in an outdoor context, is also ideal, as it means that the knife is always at hand.

I've considered using it as an Every Day Carry knife, but I think that's probably a non-starter. Assuming my shirt is baggy enough, nobody would notice I was wearing a neck knife. But getting it out in public and putting it back is just an ungraceful thing to do. For now, the knife lives with my camping gear and will be pulled out for hikes and camping trips.

As for being optimal for the new-knife user, I'm honestly not sure. I'll have to let M and P experiment with it, and I'll report back.

Sharpie Twin Tip Marker - with four children and a bunch of different stages to our trip, I found that one of the most useful things I carried was a Sharpie. Water bottles and snacks could be instantly assigned. Clothes for different activities could be dropped into a white garbage bag and then labled for easy retrieval. It may be simple, but man was my Sharpie useful.

Empty Bic Sparker - a while back I made a super tiny sparker out of an empty Bic lighter. It was an interesting exercise, but I was left wondering what I was going to do with the thing. Turns out, it fits perfectly in with our compact Pocket Rocket stove:

The spark this little guy throws lights the Pocket Rocket with ease. While I always carry a lighter on me when camping (and in general, if possible), it was super convenient this last trip to have a spark generator that lives in the case with the stove. If you have a backpacking stove, you need to make one.

Double Black Diamond Packable Throw - much has been written in the backpacking gear community of the cheap Costco down throw that can be re-purposed into a down sleeping quilt. We picked up a two pack of these down throws for $42 (spending an extra couple bucks because we're not Costco Members) and they worked really well for increasing the warmth rating of the Recamp Ultralight Sleeping Bags the kids used. This way, we didn't have to invest in bulky, cold weather bags that I couldn't imagine us needing anytime too soon.

The compact nature of these throws was especially key, because we needed to pack our entire camping setup in a single large suitcase:

Consider that the above picture has 5 sleeping bags, 5 pads, 3 throws, 1 down jacket, 1 emergency bivvy, 2 pillows, and there was still enough space to cram a 6 person dome tent in there. Sure, the bag weighed 48lbs, but as long as it was under the airline's 50lb limit we were good to go.

Monday, August 21, 2017

Boston Summer 2017 - Positively Portland

The final leg of our Boston 2017 Summer Adventure would consist of a full day spent in Portland, Maine. The idea was to stage ourselves relatively close to Boston, so we could drop the kids off and catch our flight with ease. It also meant a couple more nights in a hotel and a couple less nights in a tent.

Last Wednesday, we had no problem driving from Acadia National Park to Portland. The kids were craving swimming time in the pool, and shortly after we got to the hotel that's where we headed. All the kids enjoyed the pool, but Tzipora, fresh off of swimming lessons, was the clear fish in the group. The underwater selfies we captured were just too precious.

My personal highlight for that first night in Portland was getting a hot shower after spending three days camping. Man that felt good!

Thursday was spent exploring Portland, which didn't disappoint. Our first stop was the Maine Wildlife Park, a sort of zoo-like facility run by the Maine Department of Fisheries and Wildlife. It was the perfect way to guarantee that the kids would see some classic Maine wildlife, including being just a few feet away from a Moose. When Chana found out that Acadia was home to foxes, she was excited and getting to see one up close at the wildlife park was just too awesome. When I asked each of the kids which was their favorite animal, Dovid chose the peacocks, Tzipora the cougars but Chana refused to be pinned down--sure she loved the foxes and coyotes, but really she loved all the animals.

Much of this trip had been planned out, like the visit to Plimoth Plantation or even specific hikes in Acadia National Park. But for Portland, we just figured it out on the fly, and the Wildlife Park could not have been a more perfect activity for the kids (and adults). It was truly one of the most unique animal parks we've been to.

After the Wildlife Park we made our way to the LL Bean flagship store. As Shira noted, I was in both Heaven and Hell. On one hand, there was all this sweet camping gear on display for me to oggle. On the other hand, it's LL Bean, so the prices aren't particularly low. And, we had three kids in tow, so we had a limited attention span to deal with. The store does contain some fun features, like a knot board and various taxidermied animals on display. In one moment of complete cuteness, the kids plopped themselves down on a couple of large chairs and browsed through some of the kids books they were selling. We also visited the nearby LL Bean Outlet, which had more potential for sweet deals, but again, the kids were pretty shopped out by that point.

After shopping we made our way to the Portland Headlight, which is a terrifically picturesque lighthouse. While you can't climb the lighthouse (d'oh!) you can explore the nearby cliffs, which we all did. Give these children rocks to climb on, and they're happy! We played until it started getting close to dinner time. It's a shame we had to cut our time at the Headlight so short, as there were a number of other interesting features that would have been fun to explore, from the Children's Garden to various remnants of a Fort. Still, we had managed to squeeze in three major activities in the day, so I had nothing to complain about.

Before we knew it, it was Friday morning and time to head back Boston. We made one attempt to stop at a park in New Hampshire, which brought us mixed results. On one hand, we got to see a vertical lift bridge in action (whoo!), see some whale bones and do some beach exploring. On the other, we got rained out and the Science Museum on site was too pricey for the amount of time we had to dedicate to it (which was about 20 minutes at most). The rain served as a good reminder that we'd truly received an amazing gift this week: awesome weather. As we fled back to our car in the rain, it hit me that this could have been happening every day. Whew.

A bit more driving and we were back in Boston! We spent a little time with Elana and Shmuel, bringing them up to speed on our adventures. The kids had kept a journal throughout the week, and were proud to share it with their parents. And with that, we exchanged hugs and kisses and headed off to the airport.

What a week it had been! Plymouth, Acadia, Portland - they turned out to be the perfect locations to take the kids. What fun! I figure we have a few weeks to rest up, and then it's time to start planning next summer.

View All Photos and Captions