Normal view

There are new articles available, click to refresh the page.
Before yesterdayCopasetic Flow

Unschooling and Python || wget, tar -xvzf and for loops

 Last night was a shorter run at things in general because KO6BTY, (the 13 year old known as Diaze here), and I got a later start.

We spent what felt like forever, but what was actually only 12 minutes trying to share files from the 'usual' file side of the kid's Chromebook with the Linux side using file folders and whatnot. Nothing worked. For whatever reason, the Linux folders weren't visible in the machine's 'My Files' app. Sharing folders led to the machine basically hanging. Then! Then, we handled the issue like a couple of programmers, and instead of downloading in one system and trying to copy to anther, Diaze just ran the following from her Linux terminal

wget https://data.cosmic.ucar.edu/gnss-ro/cosmic2/provisional/spaceWeather/level2/2024/203/ionPrf_prov1_2024_203.tar.gz

That was snazzy! It just brought the file right in because, well, command line interface tools are just... snazzy. 

Having a chat record of our work together is also really helpful. I remember feeling like we'd wasted so much time trying to copy files over. We literally spent 12 minutes. Not. The. End. Of.The. World. Happily!

Then! The kid used tar to unzip the compressed data tarball. Watching her as the 4000 files fold out onto the drive was a lot of fun. This is a good project! I also loved the part where she caught on that this was the same Python with the same constructs she'd been using on the Project TouCan's remote Morse code key.

From there, we got back into using the netCDF4 package to look at data. We talked about Python Dictionaries and then looked at the latitutude values of a radio occultation satellite pass that measured the electron density of the ionosphere. 

The goal at this point is for KO6BTY to create a map of the latitude and longitude values in Datasette to see where the satellite pass took place with respect to Earth.


Unschooling and Learning Python

 KO6BTY and I are making another run through Python.

Diaze has learned a bit of Python in the past when she set up our QSO mapping app to pull in pertinent ionosonde data from the Digisonde ionosondes. Now, we're working with Python again to analyze data not from ground-bound ionosondes, but from the COSMIC2 constellation of satellits that provide ionospheric data includihng electron density profiles.

That was the intro, and the application, but this post is more about how to informallly teach Python. What will work, and what won't? With unschooling, a lot of learning is initiated by something called strewing. Strewing as it's comonly defiined is, essentially, keeping things a little cluttered around the house. It's leaving reading material, projects, web sites, and so on, out where everyone in the house, including and especially the kids, can see them. I've widened the definition to include our entire indoor and outdoor lives, and the city and world at large. For us, it works in more ways than one.

But, it's a very informal activity designed to lead, perhaps, to more formal educational activities depending on the kid's interests. Here's the question: can a topic also be taught informally? I've had varying results with this. Sometimes the kids here pick up things hanging out with my partner and I. Diaze picked up writing by attending writing groups with me. Mota, who's manual dexterity is through the roof, picks up physical activitiese by hanging out with other people doing them as evidenced by me getting nailed in the chest by a perfect spiral football pass when he was six. Tawnse has picked up and lost physics more than once just soaking it in from my partner's online lecture productions.

I enjoy showing the gang how to do things but, especially for me, and especially with Python, there can be a lot of unexpected set up that can start to slow progress and sometimes drive everything to a halt. Last night, it was working in a venv vs not workign in a venv on a Chromebook with respect to installing packages with pip.

I, of course, have setup my Chromebook at sometime in the past to let me do pretty much whatever the heck I please. I don't remember how I did it. Meanwhile, Diaze's Chromebook was adamant that she not install netCDF4 with pip as it might ruin the entire Python install.

I'm happy to report that we did arrive at the venv solution mostly through our experience with Datasette plugins. The development section of most plugins mentions using venv. That did the trick. Once Diaze was within a virtual environment, pip felt comfortable enough to allow the install.

We stopped there for the day.

I'm going to try to keep a lab notebook of how this goes. I caught Covid this week, which  might seem irrelevant, but Diaze and I are doing all of this work through Google Meet so I  don't expose her. Consequently, I have our entire chat streams as a result. I'm going to see if I can somehow weave those in as data for how to improve or change or show what works about this 'teaching/learning' method.

It outghta be fun.


Another Cool Tool from Simon Willison via Claude

 Image quality compare from Simon Willison and Claude!

One of the many aspects of Simon Willison's blog that I've enjoyed is the set of posts about coding tools with LLMs (AIs.) The latest one was handier than most for me. It takes an image and downsizes more and more, presenting the different version on a web page so you can judge which one will work best for your website's view while cutting down on the amount of data your web site serves for that image.

So, here's the faster version of this blog's occasional header


Chosen from a variety of options:


You might wonder if I went meta on this and used the tool to reduce the size of the screenshot of the tool, and I aboslutely did! 

Cool stuff!


LobsterCon Wrap Up

 


The weather finally started to cool down a bit the day before LosterCon started. We had plenty of sun, but it wasn’t baking hot. 

The campground, where LobsterCon was held, Thomas Point Beach and Campground, was clean and well appointed, maybe too clean. There were no rocks laying about that would fit in the end of the tarred twine spools, so we wound up launching the antenna using pine cone stoppers. We had plenty of nice, flat ground for our two tents, and managed to get Project TouCans about 20 ft up between a pair of pine trees.


TouCans made two QSOs during LobstserCon, but the really nice part was all the in-person QSOs getting to hang out with everyone. 

KO6BTY and Tawnse diagrammed TouCans on the nearby beach the first evening. Later that night, the rig reached KF9VV in Wisconsin.


 The night after that, I made a short DX QSO with M7LLS. Then, we had lobster! So much lobster!

During the flea market, we got to check out new and old kits from W1REX of QRPMe.



TouCans is definitely back up and running. Check out the Reverse Beacon map during LobsterCon.



LobsterCon Travelog: Philadelphia

 We headed from Boston down to Philadelphia. Yeah, I know, that's no way to get to Maine, but when my partner and I were doing grad studies at Brookhaven on Long Island, Phillie was one of our favorite hangouts, so here we are!

With all the mapping Cesium has enabled of late, we were pretty tickled to get to visit their headquarters here in town. We got to demo our mapping tool that works with Datasette, and then got to ask questions about Cesium as well. Turns out the small object we frequently notice on the horizon is the Moon!



From there, we headed to Isgro near Christian and 10th. Armed with delicious pastries, we wandered up and down 9th St. checking all the other delicious things! A few hours later, Paesano's became our favorite place in town for pasta. We've had lunch there twice now, and just, oh my gosh, the food is so good!


Another day, a little further down 9th St., we found $5 cooked crabs and demolished them! I didn't understand why they asked if we wanted seasoning to the outside of the crabs, but said, "Sure," anyway. I quickly figure it out. The seasoning gets on your hands as you're shelling the crab. From there, it gets on to the crab meat, and yum!

Anthony's on the same street further North, closer to Christian St. has excellent everything, and handmade chocolates! Our favorites there were mochas for me, and gelato for all of us during the heatwave.
Today, we're headed up to Maine! More soon!


LobsterCon Travelog

We're on the East Coast! KO6BTY, myself, and the 9 year-old, (known on the internets as Tawnse), flew out to Boston from San Francisco yesterday. We walked out of the airport to the ferry terminal! That's so cool! You can walk to a ferry from the airport. But do you know what we did then? We didn't take a ferry, we took a water taxi to a different ferry terminal! So many cool things already!

Here's the view from the water taxi.


We landed at Rowes Wharf which seems to be one of the fanciest wharf's in Boston, so.. yeah. From there we caught the ferry southeast to Hingham 


and from there made it to our camp site at Wompatuck State Park.

We're now making our war around via public transit taking the T back in to Boston South Station to catch a train from South Station into Philadelphia.

Meanwhile! KO6BTY and I have had Cesium maps built into our QSO log for a few months now—ever since the day Simon Wilison nonchalantly pointed out that Datasette queries are URLs in an office hour we attended with him—but haven't put up a demo video! Here's a video of a few of KO6BTY's QSOs from one of our recent camping trips along with their associated F2 ionospheric skips.

 

Antipodal HF Radiation: Or How Did TouCans Talk to Nighttime Australia and Japan after Sunrise in CO?

 On one of the most interesting radio days of our recent camping trip, Project TouCans made QSOs with Australia, Japan, Columbia, and Argentina, all on the same day! The QSOs to Japan and Australia were made in the middle of their night. The Japan, Australia, and Columbia QSOs were all made in a sixteen minute window beginning with VK3YV at 12:40 UTC.



What was the Propagation Mode?

While the QSOs were awesome! How did they happen? I did a bit of research. 

Spoiler: I don't have an answer yet.

If you have ideas, I'd love help on this, please comment!

Dayside stations talking to nightside stations led me to sv1uy's page on chordal hop propagation which had a nice diagram



The rest of the notes from below followed from this diagram. I don't have answers yet, but here are my notes. I've been talking with the kids about radio occultation, refraction, and of course, the Gladych research project during all of this. I'm also using it to introduce trig which will layer in with the work the 11 and 9 year-olds, (Mota and Tawnse), are doing with fractions.

This mode, (numbered page 4 of Gold's thesis), is interesting because we had plenty of scattering. Notice the mountain peaks and ridges all round us below.



Chordal Modes Introduced with Villard

And we have our first reference to Villard, which included Okinawa, and therefore two different Gladychs, Michael's Project Smoke Puff article, and Stanislaw who was the architect for the Okinwa base in 1955.




And there's a bit of a Gladych aside here that's just too difficult to ignore. Apparently Stanislaw also few planes in World War II? I knew Michael did, but this is the first mention [pdf] I've seen of Stanislaw being a pilot


Carter Manny Jr. worked with Stanislaw. Here's his Chicago Tribune obituary.

Finding Our Antipodal Point

To find the anitpoidal point, we can follow our longitude over the North (or South for that matter) where it will become the same longitude minus 180 degrees, or pi radians if that's the unit you prefer. You can see this in the diagram below where our longitude of about -107 degrees traced over the pole becomes about 73 degrees.




Meanwhile, our latitude above the equator will be used to find the same number of degrees below the equator:

37.82275 becomes -37.82275.

More precisely, we get 

37.822754°N 107.717935°W -> 37.822754°N 72.282065°E



And our anitpodal is shown below near the 70 degrees East label.


Pretty excellent discussion of anitpodal points.

Conclusions for the moment

I don't know what propagation mode we had yet. We're going to pull some ionosonde data next to see if there was in fact a 'tilt' in the ionosphere at the time of the QSOs.


Low Slung Dipoles and How Project TouCans Reached California from US-5906 on a POTA by a Cliff

 We got to camp a bit more in the middle of nowhere than we usually do while traveling across Utah last weekend. My partner found the Burr Trail Scenic Byway. I've looked for a route across southern Utah for the last several years, but had somehow missed this really nice, well-paved, little road.

We camped at the foot of an East-facing cliff, and the QSO map for the POTA reflected that fact pretty nicely:


Based on this overall map, I didn't think we could hit the West Coast because of this cliff face.


Almost all of the QSOs and spots paid attention to that cliff face. And then, there was N0OI:



How? How had the signal cleared the cliff and skipped out to Perris, CA?

Using data from the Boulder, CO ionosonde, at the time Project TouCans was spotted in California, the F2 layer skip is modeled in the gif below. Note that it clears the mesa, (just barely.)


The other skip off to the Southeast was headed to the Cayman Islands. All of the skewing around is to convince myself that the the F2 path lines up with the path to the spotting station. You'll notice that there's a slight elevation offset that needs to be fixed.

More Notes on the POTA

I blew out my knee a bit sitting on the ground outside the tent for a three hour podcast interview on Friday night, consequently, the gang did most of the station set up including deploying Project TouCans in its dipole. Throughout that process, the family pup kept me company

When the gang were done, we had what, for Project TouCans, was a fairly typical antenna height of about five feet over the ground

One really interesting aspect of this POTA was that I didn't have the ability to Internet spot myself. Frankly, I wasn't sure it was going to work out at all, and for the longest time from about 00:02 GMT 24-05-27 till 13:50 GMT on the same day, it didn't. (Yes, I was asleep for most of that time with the rig turned off.) And then! Thanks—I think—to a few neighboring POTA stations, ops started to realize that TouCans was there! It may have also helped that my first QSO with WI5D was a bit of a rag chew.

Also, while hanging out on the cliff, the gang found an interesting mineral/quartz/mica/I don't know sample of rock. It was flat, broke easily, and contained pockets of crystals that were translucent. Any ideas what this might be?



For the moment, I'll leave you with this map of all the spots and QSOs for the POTA over the course of the evening, and into the next morning. Click play, then move the time slider all the way back to the left to see all the spots and QSOs with their associated F2 skips at once. Then, you can hit play to see how it all unfolded. (Keep in mind, the overnight nothingness is included in the map. You may want to skip over that.)



As a final note, while I'm waiting for all the F2 data to come back, I've been trying to convince the gang that the F2-height datastream from the Boulder, CO ionosonde 


is in fact entered manually by a room of accountants not unlike those in John Wick, but to no avail. I guess they're just digital natives :) 


Ah! And credits to where the ionosonde data actually is coming from

This was made possible with data collected by 





Dads, Kids, Kitchen Cleaning, Executive Function, and Social Emotional Learning

 This is a story from back in February.

I wanted to share a cool moment in time that Mota, Tawnse, and I had on Monday. Daize had gone off
to attend College Algebra, and I was working from the house. I walked into the kitchen and it looked like a portion of the recent bomb cyclone had landed in there. I had 25 minutes to kill, so I called Motaand Tawnse. When they arrived, I was already taking the recycling bag out to the garage. I asked them to empty the dishwasher and they got to work. When I returned, I moved everything off the stove into one sink. I asked them to load the dishwasher back up. While they were doing that, I got to work on scrubbing pans. As I did, I looked around the kitchen. I noticed a few dishes they’d missed, pointed it out, and they plopped those in as well. I asked them to check the rest of the house for dishes. While they were checking, I finished the pans, and got to work on cleaning the stove top. When they returned, I asked the two of them to get all the food and other debris off the counters, and then asked them to 409 the countertops when they were done. Finally, I asked them to sweep as I was wrapping up the stove top. Some of the things we did definitely took more than one try, but 20 minutes later, we had a really clean kitchen.


Here’s the point. This was all very pleasant for all of us. We’ve pursued an SEL approach that I found in three books that I”ll reference below, and it’s worked really nicely! I’ve always worked with and treated the kids more like we’re roommates than any other way. This started when they were little. They’ve helped with construction and cooking projects since they were big enough to handle whatever tools (knives, screwdrivers, hammers, etc…) They built the desk I'm writing this on when they were six, four, and two. The ages for this pretty much from the time they learned to walk till the present day, (an example of something they don’t help with yet is cleaning the toilet and tub because the prospect of accidents with Comet freak me out… Anyway.) At those ages, they were excited to be helping as part of the family. That seemed to help build it into part of their personal culture. They’ve also always carried their own stuff while we were out and about. On a few occasions, we’ve all had conversations about us all living in the house and enjoying it, and that part of enjoying it is keeping it nice. When I ask them to do something, I say please… Every time. The whole thing’s been approached on a team of equals level, and it’s worked pretty nicely!


Have I had to ask a bunch of times for one of the gang to move their dishes the additional one foot from the sink to the dishwasher? Yup. Will I have to another 2,000 times or so over the next several years? Oh yeah! But lots of times, (most of the time), the dishes wind up where they should be. To answer a perhaps unasked question about the all ages thing, “Do I think it’s ok for kids to climb on top of and stand on the counter to unload the dishwasher?” Totes! “Do I frequently leave the room while they do this because I can’t bear to watch?” Also totes! :)


Another note to make is that we don’t, generally, have schedules and routines. Definitely not for this kind of stuff. For us, things just kind of percolating along is fine. Which bring us to, “Do I think this would/could/should work for everyone?”


Nope.


There are folks that need schedules. There are folks that are as freaked out about knives as I am about Comet. There’s all sorts of different people… Of course.


But, I wanted to share the coolness we’ve had with this SEL approach just because it was pleasant.


The books that I’ve referenced in this pursuit have been


Home Grown by Ben Hewitt

The Child in the City by Colin Ward

(Kind of hard to get a hold of at the moment, but lots of libraries have a copy.)

and

Hunter, Gather, Parent, by Michaeleen Doucleff

(I haven’t read the book yet, but I did read the authors pieces in the NYT (I think) and The Atlantic.)


Also? The little bitty San Francisco kitchen looked just gorgeous when we were done!

Things I Learned: Datasette-Enrichments: The Template Can Be The Optional Arguments

 This is a small thing, but it's going to give me a lot of utility with the enrichments I'm writing.

More than once, I've run into the need for an input argument to the enrichments I'm creating. Take the elevation enrichment for example. I'd like the user to be able to specify how long their elevation profile path should be in meters. My slop and drop method for adding an argument to rows of table data would be to simply specify a constant in my SQL query ala 

select tx_lat, tx_lng, rx_lat, rx_lng, 200 as optional_meters from qso_table

That would result in an extra column containing the number 200 on every row.

That also won't work with enrichments for the moment because the operate on filtered tables, not generic SQL queries. That was irksome. The answer though, is simple, elegant even.

For each enrichment, the user specifies their input using a template. For the elevation enrichment, the template looks like this:


but I could have just as easily typed


and now, that ',200' will give me the 200 argument I wanted to include on every row! It's that easy. I just hadn't thought through all of the tools that I had available.



❌
❌