<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>The Clever Monkey</title>
 <subtitle>a life in progress</subtitle>
 <icon>/favicon.ico</icon>
 <link href="http://www.clevermonkey.org/atom.xml" rel="self"/>
 <link href="http://www.clevermonkey.org/"/>
 <updated>2025-10-17T09:33:25-04:00</updated>
 <id>http://www.clevermonkey.org/</id>
 <author>
   <name>John D. Verne</name>
   <email>John.Verne@gmail.com</email>
   <uri>https://about.me/jverne</uri>
 </author>
 <rights type="html"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">The Clever Monkey</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.clevermonkey.org" property="cc:attributionName" rel="cc:attributionURL">John D. Verne</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.</rights>

 
 <entry>
   <title>Guidelines for the Successful Tactical Developer</title>
   <link href="http://www.clevermonkey.org/work/2025/10/16/guidelines-for-the-successful-tactical-developer/"/>
   <updated>2025-10-16T12:05:00-04:00</updated>
   <id>work-2025-10-16-guidelines-for-the-successful-tactical-developer</id>
   <category term="work"/>
   <summary>Guidelines for the Successful Tactical Developer

You are a technical person, possibly a coder, but you probably know a whole bunch about other technologies. To you, it’s just stuff you figured out. But other people have noticed this. And now you are on a call with a customer1 who has run into a very weird and very critical problem that, on the face of it, should be impossible. It is your job to make sense of this and get to the bottom of the problem. Ideally, by yesterday2.

Congratulations and felicitations! You are now a Tactical Developer. Your cape3 is in the mail, along with pre-paid card for the local coffee shop. You’ll need it.

Tactical development is a very special kind of technical work. It involves synthesizing information from a variety of uneven sources, building a model or idea of a situation in time in one’s mind, and communicating the complicated story to peers and customers.

Your work is done only when a full root cause analysis has been shared in your issue tracking ticket, and maybe even some technical notes about possible fixes, ranked in order of effort required4.

Here are some of my rules for better living through tactical development. This is a work in progress.


  
    
      For “customer” you can also substitute any of the following: vendor, partner, peer, etc. &#8617;
    
    
      If everything is “mission critical” then nothing is mission critical. But customers will want you to know how important this all is. We can acknowledge this, but our job and how we do it doesn’t change. &#8617;
    
    
      No capes in the server room, please. &#8617;
    
    
      A Guide to Writing Good Bug Reports is still in the early editing stage. &#8617;
    
  

</summary>
   <content type="html">&lt;h1&gt;Guidelines for the Successful Tactical Developer&lt;/h1&gt;

&lt;p&gt;You are a technical person, possibly a coder, but you probably know a whole bunch about other technologies. To you, it’s just stuff you figured out. But other people have noticed this. And now you are on a call with a customer&lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; who has run into a very weird and very &lt;em&gt;critical&lt;/em&gt; problem that, on the face of it, should be &lt;em&gt;impossible&lt;/em&gt;. It is your job to make sense of this and get to the bottom of the problem. Ideally, by yesterday&lt;sup id=&quot;fnref:2&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Congratulations and felicitations! You are now a Tactical Developer. Your cape&lt;sup id=&quot;fnref:3&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:3&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; is in the mail, along with pre-paid card for the local coffee shop. You’ll need it.&lt;/p&gt;

&lt;p&gt;Tactical development is a very special kind of technical work. It involves synthesizing information from a variety of uneven sources, building a model or idea of a situation in time in one’s mind, and communicating the complicated story to peers and customers.&lt;/p&gt;

&lt;p&gt;Your work is done only when a full root cause analysis has been shared in your issue tracking ticket, and maybe even some technical notes about possible fixes, ranked in order of effort required&lt;sup id=&quot;fnref:4&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:4&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Here are some of my rules for better living through tactical development. This is a work in progress.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;1. Customers lie&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;They might not even know they are lying. People want to help and may have a preconceived notion of what you want to hear. Or they heard what they are reporting from someone else. Do not trust them. They will lie and think they are helping.&lt;/li&gt;
  &lt;li&gt;All information is provisional until it is backed up by other evidence.&lt;/li&gt;
  &lt;li&gt;For critical information, always ask the same question multiple times in different ways, ideally at different times. Because you will get slightly different information each time, allowing you to build a more accurate representation of the truth.&lt;/li&gt;
  &lt;li&gt;There is a reason people dislike talking with lawyers&lt;sup id=&quot;fnref:5&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:5&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;. They ask hard questions, distrust all answers, and usually have a pretty good idea what the answers are already. If you hear something outlandish or unlikely, be aware! Impossible things are impossible, but undefined behaviour&lt;sup id=&quot;fnref:6&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:6&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; is infinite in its expression. Your aim is to identify that undefined behaviour and trap it in a corner.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;2. Customers are as confused as you are&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;You are usually speaking with someone who only has second- or third-hand understanding of the problem. They don’t know the details any more than you do, and are as confused as you are. Nothing makes sense. All is confusion, darkness, and lament. The angels weep.&lt;/li&gt;
  &lt;li&gt;Always, &lt;em&gt;always&lt;/em&gt;, &lt;strong&gt;always&lt;/strong&gt;:
    &lt;ul&gt;
      &lt;li&gt;Keep notes and emails short. No one reads further than 10 lines. Most stop comprehending at 5. At this point, if you are still reading this document you are a statistical outlier. Go you!&lt;/li&gt;
      &lt;li&gt;If you must offer a full technical assessment, say perhaps for a weekly peer update, then offer a tight &lt;em&gt;precis&lt;/em&gt; at the top, followed by a clear “TL;DR” for the rest.&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;Know your audience.&lt;/strong&gt; When discussing things with your peers, you can use internal jargon, and get into the weeds. For most others, including technical people not immediately fluent in the technical space you find yourself in, keep it generic. It is ok and correct to hand-wave technical details. Save the details for the incident ticket.&lt;/li&gt;
      &lt;li&gt;Don’t be like this document! Stay away from obscure figures of speech and idiomatic phrases.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;When asking for something, be pedantically, annoyingly specific. You don’t know if the same people are reading your reports, or gathering what you ask. Someone might have stepped in to cover for someone. English is the &lt;em&gt;lingua franca&lt;/em&gt; of technology companies, but not everyone comes to English with the same confidence.
    &lt;ul&gt;
      &lt;li&gt;If you need some logs or reports be excruciatingly clear &lt;em&gt;what&lt;/em&gt; logs and &lt;em&gt;which&lt;/em&gt; reports.&lt;/li&gt;
      &lt;li&gt;Call things by their names. If everyone just calls them “the logs” but you know that it is exposed as a gesture labelled “Device Debug Logs” use that term. Every time. This will save at least one round-trip misunderstanding over a long weekend, where now you have to explain to your manager that the critical issue is stalled because your contact is in a different time zone and didn’t give you what you wanted on Friday.&lt;/li&gt;
      &lt;li&gt;At least early in the conversation, and occasionally over time, be sure to clarify this by showing examples for how to collect these things.&lt;/li&gt;
      &lt;li&gt;Help harried, disorganized people help you by giving them bullet point lists of tasks and preconditions even if you know that those preconditions are probably already in place. Don’t just say “collect the logs”. Rather, say something like:
        &lt;ul&gt;
          &lt;li&gt;Enable full “DEBUG” logging using the Frobnitz Logger control.&lt;/li&gt;
          &lt;li&gt;Set up the Xyzzy device with the Fnord configuration.&lt;/li&gt;
          &lt;li&gt;Make note of the wallclock time.&lt;/li&gt;
          &lt;li&gt;Reproduce the problem as reported only once.&lt;/li&gt;
          &lt;li&gt;Stop the DEBUG logger.&lt;/li&gt;
          &lt;li&gt;Collect the DEBUG logs (you can download them from the same interface) and send them in along with the wallclock time details noted earlier.&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;3. Work from first principles&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Always work from the known to the unknown. If something is unclear or unknown, then anything derived from it cannot be trusted.&lt;/li&gt;
  &lt;li&gt;“Spit-balling” is fine, but you absolutely cannot build a successful solution on guesswork. Test those assertions. If you can’t test them, then they are nothing more than fantasy and cannot be trusted. Save the wild ideas for your science-fiction novel. (Yes, I know you are writing a science-fiction novel.)&lt;/li&gt;
  &lt;li&gt;Help yourself and help others by stating your assumptions up front when asking for a clarification or information. When asking for a piece of information that you know hinges on a possibly shared assumption, state that assumption.
    &lt;ul&gt;
      &lt;li&gt;i.e., don’t just assume they are using that API or setting that 99.999% of people use; say something like, “Assuming you are using ‘Frobnitz’ setting, leaving it at the default of ‘Xyzzy’, can you please report the value of the ‘Fnord’ result exactly as shown?”&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;4. Keep it simple, silly&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Simplify, simplify, simplify. Complicated problems are complicated. They cannot be understood until each part is understood.&lt;/li&gt;
  &lt;li&gt;Real problems have multiple contributing factors. We operate under the “Swiss cheese” model&lt;sup id=&quot;fnref:7&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:7&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;, where the holes have to line up to cause that “weird” or “impossible” problem. It is your job to tell the story about how they lined up.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;5. Practice the Beginner’s Mind&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Even the saltiest, grumpiest bearded curmudgeon has not seen it all. Prepare to be surprised at the breadth and depth of astonishment that awaits the Tactical Developer.&lt;/li&gt;
  &lt;li&gt;Know that years of experience is also a lie: the ways modern systems can fail are near infinite and you should prepare to be constantly surprised.&lt;/li&gt;
  &lt;li&gt;Do not let your experience fool you! Always remember that undefined behaviour is infinite in its expression.&lt;/li&gt;
  &lt;li&gt;Try to maintain a beginner’s mind&lt;sup id=&quot;fnref:8&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:8&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;8&lt;/a&gt;&lt;/sup&gt; when trying to comprehend this infinite.&lt;/li&gt;
  &lt;li&gt;There is a perverse humour is comprehending how foolish these systems of ours are; embrace this. Remember that the worst days make the best stories.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Footnotes&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;For “customer” you can also substitute any of the following: vendor, partner, peer, etc. &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;If everything is “mission critical” then nothing is mission critical. But customers will want you to know how important this all is. We can acknowledge this, but our job and how we do it doesn’t change. &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:3&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;No capes in the server room, please. &lt;a href=&quot;#fnref:3&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:4&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;&lt;em&gt;A Guide to Writing Good Bug Reports&lt;/em&gt; is still in the early editing stage. &lt;a href=&quot;#fnref:4&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:5&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Though, Shakespeare wouldn’t dare call out tactical folks. He relied on them for solving 11th hour folio publishing issues. &lt;a href=&quot;#fnref:5&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:6&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Undefined behaviour is the set of all behaviours that overlaps with defined behaviour. “Working correctly” and “super-intelligent purple rhesus monkeys flew out of my server” are, under the right circumstances, possibly both defined and undefined behaviours. &lt;a href=&quot;#fnref:6&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:7&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The &lt;a href=&quot;https://en.wikipedia.org/wiki/Swiss_cheese_model&quot;&gt;Swiss cheese&lt;/a&gt; model of accident causation is a model used in risk analysis and risk management. &lt;a href=&quot;#fnref:7&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:8&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Shoshin&quot;&gt;Shosin&lt;/a&gt;, an attitude of openness, eagerness, and lack of preconceptions &lt;a href=&quot;#fnref:8&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>New Ham Starter Kit</title>
   <link href="http://www.clevermonkey.org/amateur-radio/2025/01/13/new-ham-starter-kit/"/>
   <updated>2025-01-13T20:31:00-05:00</updated>
   <id>amateur-radio-2025-01-13-new-ham-starter-kit</id>
   <category term="amateur-radio"/>
   <summary>From the shack-in-a-box dept.

Spoiler alert: I ended up buying a complete Xiegu setup, batteries, a cheap and cheerful charging module, and completely gutted the trailer to prototype this mobile station.

Even though this posting has been in my drafts for years, I decided to just publish it for posterity, two years later. An update with all the build details should follow within the decade.



Well, since I have my HF privileges (&lt;29.9 MHz in Canada) and a willingness to find a place to raise antennas, I ought to have some equipment that lets me transmit HF.

I’ve been working converting the old bicycle trailer into a sort of “Cycling On The Air” (ÇOTA?) system, which is a project that deserves its own series of entries. But when not in the trailer I’d like this stuff to live on a desktop as a shack base station to at least 10 metres. 6 metres is nice (especially for mobile) but my H/T covers that. Unlike SOTA (“Summits …”) and POTA (“Parks …”) I’m not looking to minimize mass, or only work QRP because I can carry a fair amount of power and recharging options; any wattage is good wattage.

With a modest Canadian budget how can we get on the air with a system that fits those requirements?

So, like any new ham, I’ve been comparison shopping. A lot. I’ve been looking at the local swaps, as well, but buying used requires a different kind of assessment.

Certainly a Yaesu FT-891 would be a very good choice. The ICOM choices are a bit more expensive, at least in Canada, but are all excellent options. But the POTA (“Parks …”) and SOTA (“Summits …”) radio folks…

But the POTA and SOTA folks do have one pointer they can give me, which is toward some of the newer SDR designs designed around mobile radio ops appropriate for your Prepper Field Day. Which means that for a modest (CDN$1000 plus tax, delivery) you can get:


  Xiegu G90 HF 20W SDR Transceiver
  Xiegu BFK-5 Desk Stand Frame Kit
  13.8 DC volt, 30 amp switching power supply
  Xiegu CE-19 Data Interface Expansion Card, with cables


Add a suitable antenna and you have a “New Ham Starter Kit.”

The G90 has, of course, many glowing reviews associated with it. Apparently, it doesn’t have a very good keyer, and the audio needs lots of EQ. It is also pretty much a QRP rig at 20 watts. It doesn’t cover 6 metres, which is a really nice mobile band and also gives me access to our club’s 6 metre repeater.

However, my little H/T (a Yaesu VX-7R) covers 6 metres, at least through a better antenna. As for RF power, my idea was to run any rig in low power mode anyway, and the standby current is pretty good for the Xiegu.
</summary>
   <content type="html">&lt;h2&gt;From the shack-in-a-box dept.&lt;/h2&gt;

&lt;p&gt;Spoiler alert: I ended up buying a complete Xiegu setup, batteries, a cheap and cheerful charging module, and completely gutted the trailer to prototype this mobile station.&lt;/p&gt;

&lt;p&gt;Even though this posting has been in my drafts for years, I decided to just publish it for posterity, two years later. An update with all the build details should follow within the decade.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Well, since I have my HF privileges (&amp;lt;29.9 MHz in Canada) and a willingness to find a place to raise antennas, I ought to have some equipment that lets me transmit HF.&lt;/p&gt;

&lt;p&gt;I’ve been working converting the old bicycle trailer into a sort of “Cycling On The Air” (ÇOTA?) system, which is a project that deserves its own series of entries. But when not in the trailer I’d like this stuff to live on a desktop as a shack base station to at least 10 metres. 6 metres is nice (especially for mobile) but my H/T covers that. Unlike SOTA (“Summits …”) and POTA (“Parks …”) I’m not looking to minimize mass, or only work QRP because I can carry a fair amount of power and recharging options; any wattage is good wattage.&lt;/p&gt;

&lt;p&gt;With a modest Canadian budget how can we get on the air with a system that fits those requirements?&lt;/p&gt;

&lt;p&gt;So, like any new ham, I’ve been comparison shopping. A lot. I’ve been looking at the local swaps, as well, but buying used requires a different kind of assessment.&lt;/p&gt;

&lt;p&gt;Certainly a Yaesu FT-891 would be a very good choice. The ICOM choices are a bit more expensive, at least in Canada, but are all excellent options. But the POTA (“Parks …”) and SOTA (“Summits …”) radio folks…&lt;/p&gt;

&lt;p&gt;But the POTA and SOTA folks do have one pointer they can give me, which is toward some of the newer SDR designs designed around mobile radio ops appropriate for your Prepper Field Day. Which means that for a modest (CDN$1000 plus tax, delivery) you can get:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Xiegu G90 HF 20W SDR Transceiver&lt;/li&gt;
  &lt;li&gt;Xiegu BFK-5 Desk Stand Frame Kit&lt;/li&gt;
  &lt;li&gt;13.8 DC volt, 30 amp switching power supply&lt;/li&gt;
  &lt;li&gt;Xiegu CE-19 Data Interface Expansion Card, with cables&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add a suitable antenna and you have a “New Ham Starter Kit.”&lt;/p&gt;

&lt;p&gt;The G90 has, of course, many glowing reviews associated with it. Apparently, it doesn’t have a very good keyer, and the audio needs lots of EQ. It is also pretty much a QRP rig at 20 watts. It doesn’t cover 6 metres, which is a really nice mobile band and also gives me access to our club’s 6 metre repeater.&lt;/p&gt;

&lt;p&gt;However, my little H/T (a Yaesu VX-7R) covers 6 metres, at least through a better antenna. As for RF power, my idea was to run any rig in low power mode anyway, and the standby current is pretty good for the Xiegu.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Victor Echo Three Whisky November Alfa</title>
   <link href="http://www.clevermonkey.org/amateur-radio/2022/04/28/cq-cq-cq-de-ve3wna-ve3wna-k/"/>
   <updated>2022-04-28T12:10:00-04:00</updated>
   <id>amateur-radio-2022-04-28-cq-cq-cq-de-ve3wna-ve3wna-k</id>
   <category term="amateur-radio"/>
   <summary>CQ CQ CQ DE VE3WNA VE3WNA K

As I mentioned in a previous update, I recently decided to re-restart getting my Canadian amateur radio operator certificate by joining an online course hosted by a club out East. Well, I can now report that after a few weeks of study I passed the exam with a final mark above 80% (99 out of 100!) which gives me access to the entire amateur radio spectrum here in Canada.

11-year old me is ecstatic. That was definitely on 11-year old me’s bucket list. Committing to an online course was definitely the way to go for me. I’m an excellent self-starter, but a terrible self-finisher.

The subtitle of this posting is a bit of a lie, though. I don’t know how to read or send Morse (or CW) yet. But I am taking a virtual CW course in the fall hosted by my local club, so it’s only a little lie. I suspect CW is going to be a bit more of a challenge, as in many ways it is like learning a new language. And, yes. I am already looking ahead to studying for the Advanced qualifications.

I’m not sure what I’m going to do with this new privilege to use the airwaves, but maybe I’ll take my H/T outside for a walk this evening and at least introduce myself on the local repeater. I do have some ideas about turning my bicycle trailer into a mobile station for lower carbon-load field days, but we’ll see.
</summary>
   <content type="html">&lt;h3&gt;CQ CQ CQ DE VE3WNA VE3WNA K&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://clevermonkey.org/amateur-radio/2022/03/13/current-events/&quot;&gt;As I mentioned&lt;/a&gt; in a previous update, I recently decided to re-restart getting my &lt;a href=&quot;https://www.ic.gc.ca/eic/site/smt-gst.nsf/eng/sf01862.html#B&quot;&gt;Canadian amateur radio operator certificate&lt;/a&gt; by joining an &lt;a href=&quot;https://avarc.ca/index.php/online-basic-course/&quot;&gt;online course hosted by a club out East&lt;/a&gt;. Well, I can now report that after a few weeks of study I passed the exam with a final mark above 80% (99 out of 100!) which gives me access to the entire amateur radio spectrum here in Canada.&lt;/p&gt;

&lt;p&gt;11-year old me is ecstatic. That was definitely on 11-year old me’s bucket list. Committing to an online course was definitely the way to go for me. I’m an excellent self-starter, but a terrible self-finisher.&lt;/p&gt;

&lt;p&gt;The subtitle of this posting is a bit of a lie, though. I don’t know how to read or send Morse (or CW) yet. But I am taking a virtual CW course in the fall &lt;a href=&quot;https://www.ve3yt.com/cw-course&quot;&gt;hosted by my local club&lt;/a&gt;, so it’s only a little lie. I suspect CW is going to be a bit more of a challenge, as in many ways it is like learning a new language. And, yes. I am already looking ahead to studying for the Advanced qualifications.&lt;/p&gt;

&lt;p&gt;I’m not sure what I’m going to do with this new privilege to use the airwaves, but maybe I’ll take my H/T outside for a walk this evening and at least introduce myself on the local repeater. I do have some ideas about turning my bicycle trailer into a mobile station for lower carbon-load field days, but we’ll see.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>VNA Awards</title>
   <link href="http://www.clevermonkey.org/amateur-radio/2022/03/30/vna-awards/"/>
   <updated>2022-03-30T14:09:00-04:00</updated>
   <id>amateur-radio-2022-03-30-vna-awards</id>
   <category term="amateur-radio"/>
   <summary>Another needless unboxing

This fancy box arrived in the mail today:


   


</summary>
   <content type="html">&lt;h3&gt;Another needless unboxing&lt;/h3&gt;

&lt;p&gt;This &lt;em&gt;fancy&lt;/em&gt; box arrived in the mail today:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.23hq.com/clvrmnky/photo/101741438&quot;&gt;
   &lt;img src=&quot;https://www.23hq.com/23666/101741438_b6d5afb8dd1618ae2c8147a9ea5a9479_standard.jpg&quot; height=&quot;345&quot; width=&quot;460&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inside the fancy box was all this stuff:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.23hq.com/clvrmnky/photo/101741423&quot;&gt;
   &lt;img src=&quot;https://www.23hq.com/23666/101741423_66bc6d9bbd176f4563dc967b0384f427_standard.jpg&quot; height=&quot;345&quot; width=&quot;460&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And this is what it looks like when I took out the box and turned on what looks like a power switch:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.23hq.com/clvrmnky/photo/101741431&quot;&gt;
   &lt;img src=&quot;https://www.23hq.com/23666/101741431_92e198b1fc8d4ac3471f5ca93e559507_standard.jpg&quot; height=&quot;345&quot; width=&quot;460&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s a &lt;a href=&quot;https://www.nooelec.com/store/test-equipment/analyzers/nanovna-h4-bundle.html&quot;&gt;very tiny network analyzer&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;I know. I know! I said I would never buy another piece of cheap test equipment! There is no way a NanoVNA can compete with a traditional &lt;a href=&quot;https://en.wikipedia.org/wiki/Network_analyzer_(electrical)&quot;&gt;network analyzer&lt;/a&gt;. But it was &lt;em&gt;so&lt;/em&gt; cheap, and &lt;em&gt;so&lt;/em&gt; cute I could not resist. Anyway, all the cool Amateurs are using them so there is a pile of information on how to use it for what it does best. It’s not like I’m going to be using this in order to submit official test results to Industry Canada (er, I guess that’s “Innovation, Science and Economic Development Canada” but what an unnecessary mouthful).&lt;/p&gt;

&lt;p&gt;This is a teaching tool, in that I am going to use it to teach myself practical antenna system fundamentals.&lt;/p&gt;

&lt;p&gt;Now, off to learn how to calibrate it and then see how bad my home-made loop antenna is.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Needless Unboxing Entry</title>
   <link href="http://www.clevermonkey.org/electronics/2022/03/15/needless-unboxing-entry/"/>
   <updated>2022-03-15T23:54:00-04:00</updated>
   <id>electronics-2022-03-15-needless-unboxing-entry</id>
   <category term="electronics"/>
   <summary>Here is an unboxing

Today I got this delivered via that web site named after the river and the jungle, but sent direct from the Rigol warehouse:



We decided to open it up and see what was inside.

</summary>
   <content type="html">&lt;h3&gt;Here is an unboxing&lt;/h3&gt;

&lt;p&gt;Today I got this delivered via that web site named after the river and the jungle, but sent direct from the Rigol warehouse:&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/51940169722/in/datetaken-public/&quot; title=&quot;A box labelled Rigol&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/51940169722_5b6b27ff7e_w_d.jpg&quot; width=&quot;300&quot; height=&quot;400&quot; alt=&quot;A box labelled Rigol&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;We decided to open it up and see what was inside.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/51941777110/in/datetaken-public/&quot; title=&quot;Opening the box with a boxcutter&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/51941777110_17a7f91f40_w_d.jpg&quot; width=&quot;300&quot; height=&quot;400&quot; alt=&quot;Opening the box with a boxcutter&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;When we opened the box we saw this inside:&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/51941161211/in/datetaken-public/&quot; title=&quot;The box has some stuff in it&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/51941161211_f7bab5aa5d_w_d.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; alt=&quot;Showing the inside of the box&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;There was some stuff inside the box. We decided to pull all the stuff out.&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/51941161191/in/datetaken-public/&quot; title=&quot;it&apos;s a scope!&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/51941161191_021b49ce3e_w_d.jpg&quot; width=&quot;300&quot; height=&quot;400&quot; alt=&quot;The scope in packing material&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;It’s an oscilloscope!&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/51941777025/in/datetaken-public/&quot; title=&quot;A Rigol DS1054Z&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/51941777025_0c9bdb2355_w_d.jpg&quot; width=&quot;300&quot; height=&quot;400&quot; alt=&quot;A Rigol DS1054Z oscilloscope&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;The ‘scope is on the bench and the probes calibrated. Next: time to see about those TRS-80 Model 100 display problems.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Current Events</title>
   <link href="http://www.clevermonkey.org/amateur-radio/2022/03/13/current-events/"/>
   <updated>2022-03-13T10:52:00-04:00</updated>
   <id>amateur-radio-2022-03-13-current-events</id>
   <category term="amateur-radio"/>
   <summary>Oh look. Another abandoned blog.

Trust me when I tell you that when I posted regularly to the self-hosted Old Blog I would often comment on current events. Often those events were technical in nature, given the technical nature of the blog. But there were often little asides or longer mini-essays that had a more political flavour.

This blog isn’t going to do that.

Now that we are Post-Peak-Blog, no one needs to read my hot takes on world events, technical or otherwise.

The only current events I am going to discuss with anyone right now is one that has a mathematical relationship with voltage and resistance, as I have decided to renew my interest in amateur radio and finally get my Basic Qualification. This is something I’ve wanted to do since I was in grade school.

</summary>
   <content type="html">&lt;h3&gt;Oh look. Another abandoned blog.&lt;/h3&gt;

&lt;p&gt;Trust me when I tell you that when I posted regularly to the self-hosted Old Blog I would often comment on current events. Often those events were technical in nature, given the technical nature of the blog. But there were often little asides or longer mini-essays that had a more political flavour.&lt;/p&gt;

&lt;p&gt;This blog isn’t going to do that.&lt;/p&gt;

&lt;p&gt;Now that we are Post-Peak-Blog, no one needs to read my hot takes on world events, technical or otherwise.&lt;/p&gt;

&lt;p&gt;The only current events I am going to discuss with anyone right now is one that has a mathematical relationship with voltage and resistance, as I have decided to renew my interest in &lt;a href=&quot;https://en.wikipedia.org/wiki/Amateur_radio&quot;&gt;amateur radio&lt;/a&gt; and &lt;em&gt;finally&lt;/em&gt; get my Basic Qualification. This is something I’ve wanted to do since I was in grade school.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For me, radio scratched the same itch as computer hacking, and to a greater extent still does. That is to say, it is the exploratory technical hacking and understanding that is of most interest, and not actually using radio to communicate with others that is the main drive for me. Don’t get me wrong: I think people are just fine. I just generally don’t want to talk to them most of the time. So, it is likely I’m going to be one of those silent, &lt;a href=&quot;https://www.arrl.org/digital-modes&quot;&gt;digital mode&lt;/a&gt;, keyboarding kind of hams. I don’t see myself doing much “rag-chewing” on local repeaters for so many reasons. (Sorry, local nets.)&lt;/p&gt;

&lt;p&gt;Anyway, because I’ve tried to complete my Amateur qualifications, like, three times in recent history, I also decided on a bit of a whim to take a bi-weekly virtual course hosted by the &lt;a href=&quot;https://avarc.ca/index.php/online-basic-course/&quot;&gt;Annapolis Valley Amateur Radio Club&lt;/a&gt;. The idea was that if I take a course I’ll be more likely to actually take the exam. We are close to wrapping up the course, and because it is possible to do so, I am aiming to ace the exam. (I didn’t take the course hosted by my local club because their website wasn’t up-to-date about the course they offer, and I really did this on the spur of the moment; I found a club hosting a course &lt;em&gt;right now&lt;/em&gt; and I signed up.)&lt;/p&gt;

&lt;p&gt;I will probably continue on to get my Advanced Qualification. Again, mostly just to have it.&lt;/p&gt;

&lt;p&gt;So, I’ve been spending a lot of time researching equipment and thinking about antennas and RC circuits and so on. Now, you &lt;em&gt;do not&lt;/em&gt; have to be good at math to be a radio amateur. There are just as many reasons to get on the air as there are amateurs. But, as I mentioned, this hobby for me is about the technical hackery. So, naturally, I’ve come right up against my &lt;em&gt;woefully&lt;/em&gt; thin maths education. This is something I am acutely aware of given how many of my peers in this town have at least 4 years of university math education from a &lt;em&gt;very&lt;/em&gt; well-known and respected mathematics department.&lt;/p&gt;

&lt;p&gt;Now, I &lt;em&gt;know&lt;/em&gt; I’m not dedicated enough to review all the high-school math I gave up on the first time around, lo, those many decades ago. But I have been trying to fill in the gaps as best I can to get my discrete math and linear algebra to a point where I can know (more or less) what I’m looking at in a &lt;a href=&quot;https://en.wikipedia.org/wiki/Smith_chart&quot;&gt;Smith chart&lt;/a&gt; or thinking about how some vectors on the complex plane relate to each other. But I’m not going to do the homework.&lt;/p&gt;

&lt;p&gt;Basically, it’s about being able to use the Python &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmath&lt;/code&gt; library in &lt;a href=&quot;https://www.gnuradio.org/&quot;&gt;GNU Radio&lt;/a&gt; with some confidence. Let’s just say I’m going to rely on Google and Wolfram Alpha to help me fill in the gaps.&lt;/p&gt;

&lt;p&gt;For some reasons I will probably talk about in the future, many of my previous hobbies are being retired more or less permanently. So there will be less talk about music and synthesis. Instead, that same interest in digital signal processing will be applied in a less artistic manner.&lt;/p&gt;

&lt;p&gt;In concert with this new hobby direction, I’ve decided to try and ressurrect this dead blog, and document some of this journey back to my early interests in radio, electronics, and experimental embedded hardware hacking.&lt;/p&gt;

&lt;p&gt;I also bought &lt;em&gt;another&lt;/em&gt; dead &lt;a href=&quot;https://www.trs-80.com/wordpress/trs-80-computer-line/model-100/&quot;&gt;TRS-80 Model 100&lt;/a&gt;, so now I have twice as much retrocomputing “fun” to share.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Picoblogging</title>
   <link href="http://www.clevermonkey.org/site-info/2018/05/02/picoblogging/"/>
   <updated>2018-05-02T08:27:00-04:00</updated>
   <id>site-info-2018-05-02-picoblogging</id>
   <category term="site-info"/>
   <summary>In a fit of pique, I’ve retired most of my social networking accounts. This is partially to encourage more writing. I also have a few projects on the go I should talk about.

Like, for instance, did you know I’m planning building a modular synth?
</summary>
   <content type="html">&lt;p&gt;In a fit of pique, I’ve retired most of my social networking accounts. This is partially to encourage more writing. I also have a few projects on the go I should talk about.&lt;/p&gt;

&lt;p&gt;Like, for instance, did you know I’m planning building a modular synth?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Boring Site Announcement</title>
   <link href="http://www.clevermonkey.org/site-info/2017/09/14/boring-site-announcement/"/>
   <updated>2017-09-14T14:02:00-04:00</updated>
   <id>site-info-2017-09-14-boring-site-announcement</id>
   <category term="site-info"/>
   <summary>I’m in the process of switching registrars for the clevermonkey.org domain, and during the switch-over I might not get the DNS stuff updated in a timely manner.

So, if you can read this either it worked, or it is about to not work. Sorry.

I’ll try to update again when all is assumed well.

Update: It appears to have worked. Let the blogging commence.
</summary>
   <content type="html">&lt;p&gt;I’m in the process of switching registrars for the clevermonkey.org domain, and during the switch-over I might not get the DNS stuff updated in a timely manner.&lt;/p&gt;

&lt;p&gt;So, if you can read this either it worked, or it is about to not work. Sorry.&lt;/p&gt;

&lt;p&gt;I’ll try to update again when all is assumed well.&lt;/p&gt;

&lt;p&gt;Update: It appears to have worked. Let the blogging commence.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Dance Like Nobody's Debugging</title>
   <link href="http://www.clevermonkey.org/electronics/2017/05/16/dance-like-nobody-s-debugging/"/>
   <updated>2017-05-16T14:34:00-04:00</updated>
   <id>electronics-2017-05-16-dance-like-nobody-s-debugging</id>
   <category term="electronics"/>
   <summary>A. and I completed the Wigl dancing robot, but the results were not that exciting. It appears to move, and the LEDs are lighting in a somewhat appropriate manner. I should report that A. successfully soldered the motors to the motor wires, and only once found out that you shouldn’t hold the iron like a pencil, near the hot end. (Don’t worry: no one was seriously harmed.) But, after some experimentation with various instruments, it appears it is about a half-step off from the expected.

The idea is that certain notes with cause the robot to turn, move forward, etc. And certain combination of notes will cause mode changes. However, after some head-scratching it looked like it was sampling such that a B♭ would turn left, instead of a natural B. Not only that, but the movements seemed, well, really jerky and weird. Almost like the sample rate was a little too fast. It wouldn’t respond at all, and then it would take off in some random manner. Something was not right.

This was, of course, a little disappointing.

Anyway, since we have some of the tools to figure this out, the first step was to confirm through the  Crowd Supply page that the code published in the GitHub project repository is actually on the ATmega328P shipped with the kit. I also made sure the pin header pads on the board were typical sizes so I could order a 90-degree 6-pin header so I can start poking at the chip via a serial port.

</summary>
   <content type="html">&lt;p&gt;A. and I completed the &lt;a href=&quot;/electronics/2017/01/08/wigl-it-just-a-little-bit/&quot;&gt;Wigl dancing robot&lt;/a&gt;, but the results were not that exciting. It appears to move, and the LEDs are lighting in a somewhat appropriate manner. I should report that A. successfully soldered the motors to the motor wires, and only once found out that you shouldn’t hold the iron like a pencil, near the hot end. (Don’t worry: no one was &lt;em&gt;seriously&lt;/em&gt; harmed.) But, after some experimentation with various instruments, it appears it is about a half-step off from the expected.&lt;/p&gt;

&lt;p&gt;The idea is that certain notes with cause the robot to turn, move forward, etc. And certain combination of notes will cause mode changes. However, after some head-scratching it looked like it was sampling such that a B♭ would turn left, instead of a natural B. Not only that, but the movements seemed, well, really jerky and weird. Almost like the sample rate was a little too fast. It wouldn’t respond at all, and then it would take off in some random manner. Something was not right.&lt;/p&gt;

&lt;p&gt;This was, of course, a little disappointing.&lt;/p&gt;

&lt;p&gt;Anyway, since we have some of the tools to figure this out, the first step was to confirm through the  &lt;a href=&quot;https://www.crowdsupply.com/vivek-mano/wigl&quot;&gt;Crowd Supply page&lt;/a&gt; that the code published in the &lt;a href=&quot;https://github.com/vivekmano/wigl&quot;&gt;GitHub project&lt;/a&gt; repository is actually on the ATmega328P shipped with the kit. I also made sure the pin header pads on the board were typical sizes so I could order a 90-degree 6-pin header so I can start poking at the chip via a serial port.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It turns out that we can’t be sure that what Crowd Supply shipped was within spec, so Vivek said he’d order a project for himself and make sure what was shipped was what he designed. Meanwhile, I could experiment a bit with the software, which required reprogramming the ATmega chip. Since I didn’t have any programming headers around, I put the board down for a bit.&lt;/p&gt;

&lt;p&gt;Fast-forward a few weeks and through the magic of global manufacturing and supply I have more 0.100″ (2.54 mm) Breakaway Male Headers than I will be able to use in my lifetime shipped right to my door for a few bucks.&lt;/p&gt;

&lt;p&gt;Last night I soldered the header in and hooked up an FTDI USB-to-TTL-Serial cable to the board and started down the rabbit hole of talking to an ATmega chip via various AVR/Arduino tools. After talking with Vivek, the chip is &lt;em&gt;supposed&lt;/em&gt; to be Arduino Uno-compatible with an on-chip bootloader but it sure isn’t behaving like it. It looks like the serial port circuit is sensing the DTR and invoking the auto-reset (or at least we see some LEDs flashing, which is the universal indicator for Arduino auto-reset) but otherwise I get the dreaded “avrdude:stk500_recv(): programmer is not responding” message.&lt;/p&gt;

&lt;p&gt;Well, by then it’s 1:30AM and I actually have to work in the morning, so here we are.&lt;/p&gt;

&lt;p&gt;The next step is to pull the ATmega chip and put it in the Arduino that I know works, and poke at that with the built-in FTDI and possibly the ISP. Luckily I am the proud owner of an &lt;a href=&quot;https://learn.adafruit.com/usbtinyisp&quot;&gt;AdaFruit USBtinyISP&lt;/a&gt; so I have the tools necessary if I need to burn a new bootloader on the chip. I should also check that my el cheapo FTDI cable is actually doing the right thing using my ‘scope. For all I know, the DTS is not being strobed and the Arduino bootloader on the chip has no clue I’m desperately trying to upload a new program image.&lt;/p&gt;

&lt;p&gt;Hopefully by this evening I’ll have a better idea if we assembled this thing right, or if maybe the kit has some odd or out of spec parts. Perhaps the next Wigl update will be a video of actual robotic things.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Wigl It, Just a Little Bit</title>
   <link href="http://www.clevermonkey.org/electronics/2017/01/08/wigl-it-just-a-little-bit/"/>
   <updated>2017-01-08T09:04:00-05:00</updated>
   <id>electronics-2017-01-08-wigl-it-just-a-little-bit</id>
   <category term="electronics"/>
   <summary>One of the Crowd Supply projects I backed finally delivered, which means I am the proud owner of a Wigl dancing robot. We’ve been looking forward to giving this to A., and each birthday or gifty holiday that passes we were wondering if it would arrive on time.

Well, it finally arrived a little after Christmas (or, it arrived right on time for Orthodox Christmas, if we are keeping score) so we went ahead and surprised her with it.

There was a little bit of organizing to do in the computer shack necessary to get things to a state where we could make solder smoke, not to mention a fair amount of moving “treasures” onto her new workbench. But once we got that out of the way, things related to the electronics assembly progressed relatively smoothly.

</summary>
   <content type="html">&lt;p&gt;One of the &lt;a href=&quot;https://www.crowdsupply.com/&quot;&gt;Crowd Supply&lt;/a&gt; projects I backed finally delivered, which means I am the proud owner of &lt;a href=&quot;/embedded-systems/2016/04/24/w-i-g-l/&quot;&gt;a Wigl dancing robot&lt;/a&gt;. We’ve been looking forward to giving this to A., and each birthday or gifty holiday that passes we were wondering if it would arrive on time.&lt;/p&gt;

&lt;p&gt;Well, it finally arrived a little after Christmas (or, it arrived right on time for Orthodox Christmas, if we are keeping score) so we went ahead and surprised her with it.&lt;/p&gt;

&lt;p&gt;There was a little bit of organizing to do in the computer shack necessary to get things to a state where we could make solder smoke, not to mention a fair amount of moving “treasures” onto her new workbench. But once we got that out of the way, things related to the electronics assembly progressed relatively smoothly.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I guess we ought to start with the unboxing, of a sort:&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/32184887285/in/album-72157676965505932/&quot; title=&quot;Wigl I: The Unboxing&quot;&gt;&lt;img src=&quot;https://c6.staticflickr.com/1/290/32184887285_b6dc925c8a_z.jpg&quot; width=&quot;480&quot; height=&quot;640&quot; alt=&quot;Wigl I: The Unboxing&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/32147107496/in/album-72157676965505932/&quot; title=&quot;Wigl Unboxing II&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/1/455/32147107496_a7fee037b7_z.jpg&quot; width=&quot;480&quot; height=&quot;640&quot; alt=&quot;Wigl Unboxing II&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;Here’s all the parts, inexpertly knolled:&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/31343638214/in/album-72157676965505932/&quot; title=&quot;Wigl: A slight bit of knolling&quot;&gt;&lt;img src=&quot;https://c7.staticflickr.com/1/735/31343638214_727b6977b1_z.jpg&quot; width=&quot;640&quot; height=&quot;480&quot; alt=&quot;Wigl: A slight bit of knolling&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;And here’s the completed board:&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/32067011181/in/album-72157676965505932/&quot; title=&quot;Wigl: board complete&quot;&gt;&lt;img src=&quot;https://c6.staticflickr.com/1/768/32067011181_960e2645ea_z.jpg&quot; width=&quot;640&quot; height=&quot;480&quot; alt=&quot;Wigl: board complete&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;Here’s a close-up. My soldering skills are a bit weak, and I &lt;em&gt;really&lt;/em&gt; need thinner solder. So I’m not going to show the reverse side.&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/31374716873/in/album-72157676965505932/&quot; title=&quot;Wigl: warts and all&quot;&gt;&lt;img src=&quot;https://c2.staticflickr.com/1/764/31374716873_148398b002_z.jpg&quot; width=&quot;640&quot; height=&quot;480&quot; alt=&quot;Wigl: warts and all&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;I made a few mistakes but managed to resolve them without damaging anything. And when we hook up a 9V battery to the board and turn it on the RGB LED displays a variety of colours depending on the presence and pitch of sounds captured on the microphone. So that’s a win.&lt;/p&gt;

&lt;p&gt;A. helped a little, but I wasn’t sure we were ready to dive right into soldering yet; at least with the gear I have. I tried to enage her with selecting parts and holding some tricky bits while I made the smoke.&lt;/p&gt;

&lt;p&gt;The project has not published the full assembly directions yet, so we stopped here. It looks pretty straightforward, but I think I want to wait until I see the hints around putting the wheels on and figuring out motor direction and whatnot. It’s also unclear how to reprogram the AVR chip without a proper header, but I haven’t really looked closely at that yet. It does appear to have some working program already on it, so that’ll do for now.&lt;/p&gt;

&lt;p&gt;So, a qualified win. I was a little too timid about enagaging A. with the actual assembly and soldering. I’ll do better when we assemble the hardware. The fiddly puzzle-like pieces and actual nuts and bolts are something she is probably looking forward to messing around with.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>WTF WSL LOL NV JK</title>
   <link href="http://www.clevermonkey.org/daily/2016/11/24/wtf-wsl-lol-nv-jk/"/>
   <updated>2016-11-24T22:08:00-05:00</updated>
   <id>daily-2016-11-24-wtf-wsl-lol-nv-jk</id>
   <category term="daily"/>
   <summary>As discussed earlier, I have indeed purchased a Windows 10 based ultrabook and I’m not immediately installing Linux on it. I cannot tell a lie: I have kept Windows 10 on it, along with the Windows Subsystem for Linux (WSL) to scratch that Ubuntu itch.

And it’s just fine.

Even though WSL is in beta (and I’m compounding that by installing bleeding edge “Windows Insider” builds) it’s actually pretty solid. I might be losing all my hipster geek street-cred by saying it, but Windows 10 is just as good for me as OS X. Since I’m no avid fan of any X.org environment, this means I think it’s better than any Linux UI. So that’s a win.

WSL seems to be a pretty complete command-line Ubuntu install, with all the trappings of a Debian-flavoured console. I haven’t really pushed it hard, of course, but as a sort of acid-test I moved my Ruby-Jekyll-GitHub blog stuff over to the new lappy and made the right gem and apt-get incantations until I was able to successfully run bundle exec jekyll serve. I also updated Ubuntu to Xenial last night with little trouble.

I didn’t think I’d care that much about the mechanisms by which Microsoft has done all of this, but I’ve been skimming the technical notes with some interest. They’ve really done a decent job of implementing the user and kernel spaces.
</summary>
   <content type="html">&lt;p&gt;As &lt;a href=&quot;/daily/2016/11/07/windows-os-x-10-ubuntu-edition/&quot;&gt;discussed earlier&lt;/a&gt;, I have indeed purchased a Windows 10 based &lt;em&gt;ultrabook&lt;/em&gt; and I’m &lt;em&gt;not&lt;/em&gt; immediately installing Linux on it. I cannot tell a lie: I have kept Windows 10 on it, along with the &lt;a href=&quot;https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/&quot;&gt;Windows Subsystem for Linux&lt;/a&gt; (WSL) to scratch that Ubuntu itch.&lt;/p&gt;

&lt;p&gt;And it’s just fine.&lt;/p&gt;

&lt;p&gt;Even though WSL is in beta (and I’m compounding that by installing bleeding edge “Windows Insider” builds) it’s actually pretty solid. I might be losing all my hipster geek street-cred by saying it, but Windows 10 is just as good for me as OS X. Since I’m no avid fan of &lt;strong&gt;any&lt;/strong&gt; X.org environment, this means I think it’s better than any Linux UI. So that’s a win.&lt;/p&gt;

&lt;p&gt;WSL seems to be a pretty complete command-line Ubuntu install, with all the trappings of a Debian-flavoured console. I haven’t &lt;em&gt;really&lt;/em&gt; pushed it hard, of course, but as a sort of acid-test I moved my Ruby-Jekyll-GitHub blog stuff over to the new lappy and made the right &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;apt-get&lt;/code&gt; incantations until I was able to successfully run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle exec jekyll serve&lt;/code&gt;. I also updated Ubuntu to Xenial last night with little trouble.&lt;/p&gt;

&lt;p&gt;I didn’t think I’d care that much about the mechanisms by which Microsoft has done all of this, but I’ve been skimming the technical notes with some interest. They’ve really done a decent job of implementing the user and &lt;a href=&quot;https://blogs.msdn.microsoft.com/wsl/2016/06/08/wsl-system-calls/&quot;&gt;kernel spaces&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Windows OS X 10 Ubuntu Edition</title>
   <link href="http://www.clevermonkey.org/daily/2016/11/07/windows-os-x-10-ubuntu-edition/"/>
   <updated>2016-11-07T23:32:00-05:00</updated>
   <id>daily-2016-11-07-windows-os-x-10-ubuntu-edition</id>
   <category term="daily"/>
   <summary>Well, I finally bought a new laptop. The T460s seems to be the hacker weapon of choice these days, so after a little research I decided to go for it. So, I’m going to eventually be the owner of an “ultrabook”, and the first laptop that I’ve ever purchased with my own money that isn’t an Apple product.

According to UPS it’s on its way from China, so I don’t have it in my grubby paws yet. I suspect I’ll miss the giant screen on the old Macbook Pro I’m currently using. I won’t miss the tiny battery life or the way it acts like a little space heater.

I probably won’t miss OS X, at least too much.

The idea was to get a smaller upgradeable laptop with decent Linux support and run Arch or Gentoo, blowing away the Windows 10 install it comes with.

</summary>
   <content type="html">&lt;p&gt;Well, I finally bought &lt;a href=&quot;http://www3.lenovo.com/ca/en/laptops/thinkpad/thinkpad-t-series/T460s/p/22TP2TT460S&quot;&gt;a new laptop&lt;/a&gt;. The T460s seems to be the hacker weapon of choice these days, so after a little research I decided to go for it. So, I’m going to eventually be the owner of an “ultrabook”, and the first laptop that I’ve ever purchased with my own money that isn’t an Apple product.&lt;/p&gt;

&lt;p&gt;According to UPS it’s on its way from China, so I don’t have it in my grubby paws yet. I suspect I’ll miss the giant screen on the old Macbook Pro I’m currently using. I won’t miss the tiny battery life or the way it acts like a little space heater.&lt;/p&gt;

&lt;p&gt;I &lt;em&gt;probably&lt;/em&gt; won’t miss OS X, at least too much.&lt;/p&gt;

&lt;p&gt;The idea was to get a smaller upgradeable laptop with decent Linux support and run &lt;a href=&quot;https://www.archlinux.org/&quot;&gt;Arch&lt;/a&gt; or &lt;a href=&quot;https://www.gentoo.org/&quot;&gt;Gentoo&lt;/a&gt;, blowing away the Windows 10 install it comes with.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OS X works fine as a development workstation, of course. The reasons I switched to OS X early on was because both Linux and Windows were such a hot mess for something that, really, ought to be pretty easy. But I’ve made a career out of not really caring that much about which platform I code on. I’ve been a paid cross-platform developer for many years now so I really don’t have a dog in this fight. I do like my &lt;a href=&quot;https://en.wikipedia.org/wiki/POSIX&quot;&gt;POSIX&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Unix_shell&quot;&gt;shell&lt;/a&gt; tweaked  just right, but I also like pointy clicky GUIs for browsing and IDEs and what-not. Think of it as “laziness as a virtue”.&lt;/p&gt;

&lt;p&gt;This hybrid approach fit nicely with OS X, and I’ve banged out a lot of releases using a Mac.&lt;/p&gt;

&lt;p&gt;But I’ve banged out a lot more using Windows. Even the shitty releases of Windows (I’m looking at you, NT 3.51).&lt;/p&gt;

&lt;p&gt;I was lucky, in that early on I also worked for a company that made POSIX tools and APIs for Windows, which made things much easier for me. I cut my teeth on pre-POSIX command-line-only environments, and old habits die hard.&lt;/p&gt;

&lt;p&gt;So, once I’d placed the order for this new laptop I started thinking ahead to how I was going to configure it for maximum coffee-shop hackery. And I came to a surprising (for me) conclusion.&lt;/p&gt;

&lt;p&gt;I’m probably &lt;strong&gt;not&lt;/strong&gt; going to install Linux on it, at least for now. I actually have very few bad things to say about Windows 10 as a development OS at work. And installing Linux on a laptop, configuring it just right, and all that nonsense is just &lt;em&gt;boring&lt;/em&gt;. Quite frankly, most of what I need an OS to give me is a decent POSIX command-line, and it just so happens that &lt;a href=&quot;https://msdn.microsoft.com/en-us/commandline/wsl/about&quot;&gt;Windows 10 now offers a fairly useful Linux style command line environment&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;That’s right. I’m a &lt;a href=&quot;https://www.apple.com/pr/library/2002/06/10Apple-Launches-Real-People-Ad-Campaign.html&quot;&gt;switcher&lt;/a&gt; again, just like back in ‘02. Or maybe I only like to use releases that have the number 10 in them?&lt;/p&gt;

&lt;p&gt;The shell on Windows 10 isn’t tightly integrated with the OS like that other toolkit I mentioned from TLA, Inc., but it works fine for doing Gradle builds and doing unnatural things to pipes with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;find&lt;/code&gt;, which is sort of my life right now. And it is certainly the path of least resistance for a lot of those little apps that let me manage my ebook collection and so on that I always forget about, and then have to spend a few days figuring out on Linux.&lt;/p&gt;

&lt;p&gt;So I figured, why not just turn on all the developer settings in Windows 10 and see if it works out?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Art and Technology</title>
   <link href="http://www.clevermonkey.org/daily/2016/07/18/art-and-technology/"/>
   <updated>2016-07-18T22:07:00-04:00</updated>
   <id>daily-2016-07-18-art-and-technology</id>
   <category term="daily"/>
   <summary>It seems to me that we might be in the middle of a little art/tech Renaissance right now. Perhaps it is selection bias at work, but I keep running across references to folks putting together cool tech-based art projects that explore art in really interesting ways.

I may be slightly sensitive to this as a Canadian of a Certain Age, of course. A friend once told me about a class he took at university that suggested that Canadian visual arts heavily reinterpreted visual popular media, and even reincorporated image data in other works in a specifically Canadian manner. I’m hand-waving here because this was from a long time ago, and was probably the sort of discussion we would have over many beers. But I recall it really brought into sharp relief some of the things I’d been thinking about, say, Cronenburg films and Canadian body-horror cinema.

</summary>
   <content type="html">&lt;p&gt;It seems to me that we might be in the middle of a little art/tech Renaissance right now. Perhaps it is selection bias at work, but I keep running across references to folks putting together cool tech-based art projects that explore art in really interesting ways.&lt;/p&gt;

&lt;p&gt;I may be slightly sensitive to this as a Canadian of a Certain Age, of course. A friend once told me about a class he took at university that suggested that Canadian visual arts heavily reinterpreted visual popular media, and even reincorporated image data in other works in a specifically Canadian manner. I’m hand-waving here because this was from a long time ago, and was probably the sort of discussion we would have over many beers. But I recall it really brought into sharp relief some of the things I’d been thinking about, say, Cronenburg films and Canadian body-horror cinema.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Yes, there is a &lt;em&gt;specifically&lt;/em&gt; Canadian body-horror œuvre. Long live the New Flesh.)&lt;/p&gt;

&lt;p&gt;I was also exposed to coding and hacking at a pretty early age, and at a time when such things were a little obscure and magical. I’d always had a natural affinity for pants-seat engineering, so it was natural that I’d be one of those people to whom computing, electronics, and robotics were a bit like catnip.&lt;/p&gt;

&lt;p&gt;I mention this only to set the stage for an attempt at an explanation for why I think some of the artistic “maker” expressions I’m seeing are really interesting and worth noticing. As a kid who tried to &lt;em&gt;actually&lt;/em&gt; write &lt;em&gt;vers libre&lt;/em&gt; poetry in &lt;a href=&quot;https://www.forth.com/forth/&quot;&gt;Forth&lt;/a&gt;, projects like the &lt;a href=&quot;http://1bitsymphony.com/&quot;&gt;1-Bit Symphony&lt;/a&gt; really resonate deeply with me. I mean, one of the artefacts is a poster-sized print of the AVR assembly code.&lt;/p&gt;

&lt;p&gt;Likewise, &lt;a href=&quot;/electronics/2016/04/22/everything-i-know-about-electronics/&quot;&gt;I’ve already gushed&lt;/a&gt; about &lt;a href=&quot;https://www.crowdsupply.com/star-simpson/circuit-classics&quot;&gt;Circuit Classics&lt;/a&gt; which captures an aesthetic that meshes well with a certain artistic sensibility; it isn’t &lt;em&gt;just&lt;/em&gt; retro-nostalgia at work.&lt;/p&gt;

&lt;p&gt;And, recently, I ran across another art/music/tech collision in the form of an algorithmic exploration of techno entitled &lt;a href=&quot;http://www.pledgemusic.com/projects/spicule&quot;&gt;Spicule&lt;/a&gt; which I immediately identified as of a piece, spiritually, with these other projects I’ve mentioned.&lt;/p&gt;

&lt;p&gt;These are just the highlights. I’m also reminded of local Maker Space “noise nights” and countless sequencer projects that litter the internet. I admit that many of these projects are half-baked (at best), and much of the hardware shipped ends up getting dusty on well-meaning shelves, but the fact remains that &lt;em&gt;something&lt;/em&gt; seems to be going on that tickles the hell out of that 14-year old that had so much trouble articulating the notion that computers and software were (or could be) these cool toys of artistic expression.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Groovy Android Rocks the Gradle</title>
   <link href="http://www.clevermonkey.org/work/2016/07/17/groovy-android-rocks-the-gradle/"/>
   <updated>2016-07-17T17:24:00-04:00</updated>
   <id>work-2016-07-17-groovy-android-rocks-the-gradle</id>
   <category term="work"/>
   <summary>Embedded Android development continues apace, and I’m currently head’s down on an App Widget that needs an XML parser and some sort of datastore, which is a pretty good learning experience. We also ended up swtiching to a full-on Android Studio, Gradle, and jCenter environment, which has side-stepped a fair amount of Eclipse cruft. It has also introduced some infrastructure churn which I’m hoping settles down shortly. So, I am most definitely an Android developer now.

This has given me the excuse I need to think about using Groovy at work, though, which is a bit if a win. We need a fair number of custom Gradle tasks, and I think the best way to do this is direct functional Groovy. If this morphs into a full-on Spock unit-test environment I will call the whole thing a gigantic, play-off, Premier League level win.

The challenge is that I sort of promised a working demo of the app this coming week. So, I have my work cut out for me, I think. I was sure of this schedule on Friday, but then all weekend I’ve been remembering little things that need to be sorted before we really ship, so now I’m hoping I haven’t over-promised.

So, the Groovy Spock will have to wait until I bang out a few hundred lines of Android Java, including a semaphore controlled background executor.

Good thing I’m a senior developer. It says so right on my job description!
</summary>
   <content type="html">&lt;p&gt;Embedded Android development continues apace, and I’m currently head’s down on an App Widget that needs an XML parser and some sort of datastore, which is a pretty good learning experience. We also ended up swtiching to a full-on Android Studio, Gradle, and jCenter environment, which has side-stepped a fair amount of Eclipse cruft. It has also introduced some infrastructure churn which I’m hoping settles down shortly. So, I am most definitely an Android developer now.&lt;/p&gt;

&lt;p&gt;This has given me the excuse I need to think about using &lt;a href=&quot;http://www.groovy-lang.org/index.html&quot;&gt;Groovy&lt;/a&gt; at work, though, which is a bit if a win. We need a fair number of custom Gradle tasks, and I think the best way to do this is direct functional Groovy. If this morphs into a full-on &lt;a href=&quot;https://code.google.com/archive/p/spock/&quot;&gt;Spock&lt;/a&gt; unit-test environment I will call the whole thing a gigantic, play-off, Premier League level win.&lt;/p&gt;

&lt;p&gt;The challenge is that I sort of promised a working demo of the app this coming week. So, I have my work cut out for me, I think. I was sure of this schedule on Friday, but then all weekend I’ve been remembering little things that need to be sorted before we really ship, so now I’m hoping I haven’t over-promised.&lt;/p&gt;

&lt;p&gt;So, the Groovy Spock will have to wait until I bang out a few hundred lines of Android Java, including a semaphore controlled background executor.&lt;/p&gt;

&lt;p&gt;Good thing I’m a senior developer. It says so right on my job description!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>The Agony of Buying Power</title>
   <link href="http://www.clevermonkey.org/daily/2016/06/21/the-agony-of-buying-power/"/>
   <updated>2016-06-21T23:55:00-04:00</updated>
   <id>daily-2016-06-21-the-agony-of-buying-power</id>
   <category term="daily"/>
   <summary>For a few months I’ve been doing a little research to decide if I’m going to replace the aging Macbook Pro that is my main development tool at home with a more modern lappy. The idea is to get something that runs a bit cooler, lighter, and longer on battery that I can use for general purpose hackery. As I’ve mentioned before, I think I’ve gotten about as much life out of this Macbook as I can reasonably expect, so I should probably replace it.

I have no particular interest in staying with a Mac, though it is a decent development box. But I can get all that with Linux these days. Sure, I’ll have to resort to tinkering to get stuff to work, but this already happens with the Macbook regularly, so this is really shifting the problem around to a different flavour of tinkering. So, after learning what some of the new acronyms for computer equipment mean these days, I narrowed things down to a Lenovo Carbon X1, running some sort of Linux.

</summary>
   <content type="html">&lt;p&gt;For a few months I’ve been doing a little research to decide if I’m going to replace the aging Macbook Pro that is my main development tool at home with a more modern lappy. The idea is to get something that runs a bit cooler, lighter, and longer on battery that I can use for general purpose hackery. As I’ve mentioned before, I think I’ve gotten about as much life out of this Macbook as I can reasonably expect, so I should probably replace it.&lt;/p&gt;

&lt;p&gt;I have no particular interest in staying with a Mac, though it is a decent development box. But I can get all that with Linux these days. Sure, I’ll have to resort to tinkering to get stuff to work, but this already happens with the Macbook regularly, so this is really shifting the problem around to a different flavour of tinkering. So, after learning what some of the new acronyms for computer equipment mean these days, I narrowed things down to a &lt;a href=&quot;http://shop.lenovo.com/ca/en/laptops/thinkpad/x-series/x1-carbon-4/&quot;&gt;Lenovo Carbon X1&lt;/a&gt;, running some sort of Linux.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As I like to shop for these things for a long time, I sort of put that research aside and went on with other things. I think it’s good to let big purchases (well, big for me) sit for a little while before I do anything rash, like put a CDN$1800 charge on my credit card.&lt;/p&gt;

&lt;p&gt;And now I’m wondering if I shouldn’t get an acoustic bass guitar instead. This is something I’ve wanted since well before &lt;a href=&quot;https://en.wikipedia.org/wiki/MTV_Unplugged&quot;&gt;MTV Unplugged&lt;/a&gt; made them what all the cool bassists played in the 90s. My research suggests that for about the same budget I could get a &lt;a href=&quot;http://www.warwickbass.com/en/Warwick---Products--Acoustic-Bass-Guitars--Alien-Acoustic--Warwick-Alien--4-string--Pictures.html&quot;&gt;Warwick Alien 4&lt;/a&gt; (because four strings is as high as I can count) which looks like a very nice piece of kit for unplugged noodling on the porch.&lt;/p&gt;

&lt;p&gt;Then I think that I’m not particularly happy with my commuter bike, and maybe I should see if I can get a &lt;a href=&quot;http://www.brodiebikes.com/2016/bikes/section_8.php&quot;&gt;Brodie Section 8&lt;/a&gt; (or similar) retrofitted with a &lt;a href=&quot;http://sheldonbrown.com/alfine-11.html&quot;&gt;Shimano Alfine 11-Speed hub&lt;/a&gt;, which would definitely be in that same budget.&lt;/p&gt;

&lt;p&gt;I’d certainly use the bike regularly, and selling my current ride will &lt;em&gt;probably&lt;/em&gt; pay for the high-end hub I want. But I’m feeling like I ought to do more hacking-for-fun, and maybe a new modern lappy will give me some more of that opportunity. Though, truth be told, if I really wanted to hack more, my Macbook works just fine as long as the keyboard doesn’t just stop working (which happens occasionally).&lt;/p&gt;

&lt;p&gt;And, really, I’m not the kind of player that practices regularly enough to get much better than I am today. I do miss playing the bass, though, and hanging out on the porch knocking out some reggae or funk grooves sounds like the sort of summer fun I most appreciate.&lt;/p&gt;

&lt;p&gt;And then there’s the question of whether to buy &lt;a href=&quot;http://en.nikon.ca/nikon-products/product/dslr-cameras/d750.html&quot;&gt;another DSLR&lt;/a&gt; or switch to a &lt;a href=&quot;http://www.fujifilm.ca/products/digital_cameras/x/fujifilm_x_t1/&quot;&gt;nice mirrorless system&lt;/a&gt; for everyday shooting, even though my old Nikon D80 is perfectly fine and my new phone takes pretty good pictures.&lt;/p&gt;

&lt;p&gt;What’s a good consumer to do? I don’t really &lt;em&gt;need&lt;/em&gt; any of these things, so there isn’t some sort of professional reason to invest this sort of cash into a computer, guitar, or bicycle. This is definitely a lifestyle luxury buying choice, and I already have enough computers, guitars, and bicycles.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Rexx Fortis Vocat</title>
   <link href="http://www.clevermonkey.org/retro-computing/2016/06/14/rex-fortis-vocat/"/>
   <updated>2016-06-14T15:38:00-04:00</updated>
   <id>retro-computing-2016-06-14-rex-fortis-vocat</id>
   <category term="retro-computing"/>
   <summary>So, I’m home sick from work today and, as one does, I’m idly playing around with some emulation stuff. Earlier I was researching my KIM-1 emulation project (which is turning out to be a bit harder than I thought).

Then, for some reason, I decided to get IBM PC-DOS 7.x/2000 working on VirtualBox. This is not for any particular reason, though I’ve occasionally needed a real DOS environment to mess about with abandonware. So, this image may be put to good use one day.

But for now, an almost-complete PC-DOS system. I haven’t figured out the networking stuff yet, but it has CD-ROM support, loads DOSidle so it doesn’t burn up my Mac, the usual assortment of high/upper/confusing/WTF memory settings that DOS requires, and so on. I don’t think networking will be that hard, but my Google-Fu is not finding the PCNet ethernet drivers that VirtualBox is emulating. So, for now I’m using sneaker-net.



Yeah. So, that’s a Rexx script being called via the command interpreter via a pseudo hash-bang mechanism (think of /* ... */ as the shebang line). There’s a reason I liked to run PC-DOS instead of that other one.

What’s going to bend your noodle is that I actually paid for a copy of PC-DOS, lo, those many years ago. So, I’m technically not pirating anything, matey.


Well, that was easy. Started the PCNet packet driver and ran DHCP from the mTCP project. I was even able to annoy some people on IRC.
</summary>
   <content type="html">&lt;p&gt;So, I’m home sick from work today and, as one does, I’m idly playing around with some emulation stuff. Earlier I was researching my KIM-1 emulation project (which is turning out to be a bit harder than I thought).&lt;/p&gt;

&lt;p&gt;Then, for some reason, I decided to get &lt;a href=&quot;https://en.wikipedia.org/wiki/IBM_PC_DOS&quot;&gt;IBM PC-DOS&lt;/a&gt; 7.x/2000 working on &lt;a href=&quot;https://www.virtualbox.org/&quot;&gt;VirtualBox&lt;/a&gt;. This is not for any particular reason, though I’ve occasionally needed a real DOS environment to mess about with &lt;a href=&quot;https://en.wikipedia.org/wiki/Abandonware&quot;&gt;abandonware&lt;/a&gt;. So, this image may be put to good use one day.&lt;/p&gt;

&lt;p&gt;But for now, an almost-complete PC-DOS system. I haven’t figured out the networking stuff yet, but it has CD-ROM support, loads &lt;a href=&quot;http://maribu.home.xs4all.nl/zeurkous/download/mirror/dosidle.html&quot;&gt;DOSidle&lt;/a&gt; so it doesn’t burn up my Mac, the usual assortment of high/upper/confusing/WTF memory settings that DOS requires, and so on. I don’t think networking will be that hard, but my Google-Fu is not finding the PCNet ethernet drivers that VirtualBox is emulating. So, for now I’m using sneaker-net.&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/27674314215/in/datetaken-public/&quot; title=&quot;PC-DOS 2000 on VirtualBox running Rexx&quot;&gt;&lt;img src=&quot;https://c8.staticflickr.com/8/7117/27674314215_fc8807cc6d.jpg&quot; width=&quot;500&quot; height=&quot;307&quot; alt=&quot;PC-DOS 2000 on VirtualBox running Rexx&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;Yeah. So, that’s a &lt;a href=&quot;https://en.wikipedia.org/wiki/Rexx&quot;&gt;Rexx&lt;/a&gt; script being called via the command interpreter via a pseudo &lt;a href=&quot;https://en.wikipedia.org/wiki/Shebang_%28Unix%29&quot;&gt;hash-bang&lt;/a&gt; mechanism (think of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/* ... */&lt;/code&gt; as the shebang line). There’s a reason I liked to run &lt;em&gt;PC&lt;/em&gt;-DOS instead of that other one.&lt;/p&gt;

&lt;p&gt;What’s going to bend your noodle is that I actually &lt;em&gt;paid&lt;/em&gt; for a copy of PC-DOS, lo, those many years ago. So, I’m &lt;em&gt;technically&lt;/em&gt; not pirating anything, matey.&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;Well, that was easy. Started the PCNet packet driver and ran &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DHCP&lt;/code&gt; from the &lt;a href=&quot;http://www.brutman.com/mTCP/&quot;&gt;mTCP&lt;/a&gt; project. I was even able to annoy some people on IRC.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Oh no. Beta.</title>
   <link href="http://www.clevermonkey.org/retro-computing/2016/05/09/oh-no-beta/"/>
   <updated>2016-05-09T15:25:00-04:00</updated>
   <id>retro-computing-2016-05-09-oh-no-beta</id>
   <category term="retro-computing"/>
   <summary>Well, the Retrocomputing StackExchange site I talked about earlier is now in open beta. So far, lots of chatter about old Apple and Commodore equipment, but nothing (yet) about truly old-school things like Altairs or KIM-1s.

I hope to remedy this in the near future.

Anyway, like many beta SE sites we are sorting out the scope of the subject we are going on about, which should be hours of popcorn fun.

It’s interesting to see how people define “retro”. There has been discussion about whether emulators, gaming consoles, or even coding (at all!) is on-topic. I’ve been surprised by some assumptions, because I cannot imagine retro-computing without emulators, coding emulators, and coding on actual retro systems.

Ironically, because of this sort of thing, it may turn out that my questions around emulating a KIM-1 with full RRIOT support may be deemed off-topic there. Which highlights both the great strengths and the great weaknesses of SE sites, in general.
</summary>
   <content type="html">&lt;p&gt;Well, the &lt;a href=&quot;/retro-computing/2016/03/15/a-glitch-in-the-matrix/&quot;&gt;Retrocomputing StackExchange site I talked about earlier&lt;/a&gt; is now in &lt;a href=&quot;http://retrocomputing.stackexchange.com/&quot;&gt;open beta&lt;/a&gt;. So far, lots of chatter about old Apple and Commodore equipment, but nothing (yet) about truly old-school things like Altairs or KIM-1s.&lt;/p&gt;

&lt;p&gt;I hope to remedy this in the near future.&lt;/p&gt;

&lt;p&gt;Anyway, like many beta SE sites we are sorting out the scope of the subject we are going on about, which should be hours of popcorn fun.&lt;/p&gt;

&lt;p&gt;It’s interesting to see how people define “retro”. There has been discussion about whether emulators, gaming consoles, or even coding (at all!) is on-topic. I’ve been surprised by some assumptions, because I cannot imagine retro-computing without emulators, coding emulators, and coding on actual retro systems.&lt;/p&gt;

&lt;p&gt;Ironically, because of this sort of thing, it may turn out that my questions around &lt;a href=&quot;/retro-computing/2015/08/27/thoughts-on-a-kim-1-emulator/&quot;&gt;emulating a KIM-1 with full RRIOT support&lt;/a&gt; may be deemed &lt;em&gt;off-topic&lt;/em&gt; there. Which highlights both the great strengths and the great weaknesses of SE sites, in general.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Relentless Coding for 6-year Olds</title>
   <link href="http://www.clevermonkey.org/daily/2016/05/01/relentless-coding-for-6-year-olds/"/>
   <updated>2016-05-01T20:26:00-04:00</updated>
   <id>daily-2016-05-01-relentless-coding-for-6-year-olds</id>
   <category term="daily"/>
   <summary>There is a good chance that the Cubetto Kickstarter I backed will also mature sometime around the kid’s 6th birthday this year.

As ecogrrl says, who cares if this is the right thing to do vis–à–vis female STEM and engineering and all that. The girl loves robots with exposed parts that she can command. I mean, the other day she called me up after bedtime to tell me she wants to design a digging robot for the backyard. She already had an idea of the actions such a robot would require, and how to go about telling a robot how to do these actions. (And, of course, my brain went right to how I could retro-fit a Tonka digger with servos and motors to solve this problem. I swear, if I had a budget I could make the best toys.)

Again, this is likely to go over well. Or we are raising an evil genius.

The Cubetto stuff has less hacking potential for me, but is definitely more kid accessible, and game and story oriented. It will be interesting to see if any of this stuff actually scratches the itch she has expressed.

Because, as we all know, scratching itches is what drives the hacker ethos.
</summary>
   <content type="html">&lt;p&gt;There is a good chance that the &lt;a href=&quot;https://www.kickstarter.com/projects/primotoys/cubetto-hands-on-coding-for-girls-and-boys-aged-3&quot;&gt;Cubetto Kickstarter&lt;/a&gt; I backed will also mature sometime around the kid’s 6th birthday this year.&lt;/p&gt;

&lt;p&gt;As &lt;a href=&quot;http://www.ecogrrl.org/&quot;&gt;ecogrrl&lt;/a&gt; says, who cares if this is the &lt;em&gt;right&lt;/em&gt; thing to do &lt;em&gt;vis–à–vis&lt;/em&gt; female STEM and engineering and all that. The girl loves robots with exposed parts that she can command. I mean, the other day she called me up after bedtime to tell me she wants to design a digging robot for the backyard. She already had an idea of the actions such a robot would require, and how to go about telling a robot how to do these actions. (And, of course, my brain went right to how I could retro-fit a Tonka digger with servos and motors to solve this problem. I swear, if I had a budget I could make the &lt;em&gt;best&lt;/em&gt; toys.)&lt;/p&gt;

&lt;p&gt;Again, this is likely to go over well. Or we are raising an evil genius.&lt;/p&gt;

&lt;p&gt;The Cubetto stuff has less hacking potential for me, but is definitely more kid accessible, and game and story oriented. It will be interesting to see if any of this stuff actually scratches the itch she has expressed.&lt;/p&gt;

&lt;p&gt;Because, as we all know, scratching itches is what drives the hacker ethos.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>W.I.G.L.</title>
   <link href="http://www.clevermonkey.org/embedded-systems/2016/04/24/w-i-g-l/"/>
   <updated>2016-04-24T17:34:00-04:00</updated>
   <id>embedded-systems-2016-04-24-w-i-g-l</id>
   <category term="embedded-systems"/>
   <summary>So, I got my daughter a dancing robot for her birthday.



I think this is going to go over well.
</summary>
   <content type="html">&lt;p&gt;So, I got my daughter &lt;a href=&quot;https://www.crowdsupply.com/vivek-mano/wigl&quot;&gt;a dancing robot&lt;/a&gt; for her birthday.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://www.clevermonkey.org/assets/img/wigl_github.jpg&quot; alt=&quot;Wigl&quot; title=&quot;Wigl dancing robot&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I think this is going to go over well.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Born for it</title>
   <link href="http://www.clevermonkey.org/work/2016/04/24/born-for-it/"/>
   <updated>2016-04-24T16:47:00-04:00</updated>
   <id>work-2016-04-24-born-for-it</id>
   <category term="work"/>
   <summary>Over on Martin Fowler’s site, Birgitta Böckeler provides a nice introduction into the gendered nature of early computing, and the historical fall-out we live with today, that is a very compelling read.


  The stereotype of the socially-awkward, white, male programmer has been around for a long time. Although “diversity in tech” is a much discussed topic, the numbers have not been getting any better. On the contrary, a lot of people inside and outside of the IT industry still take it for granted that this stereotype is the natural norm, and this perception is one of the things that is standing in our way to make the profession more inclusive and inviting. So where does this image come from? Did the demographics of the world’s programmer population really evolve naturally, because “boys just like computers more”? What shaped our perception of programmers? This text is about some possible explanations I found when reading about the history of computing.


This is a very interesting synopsis and overview of scholarly looks at the history of computer programming from a gender perspective.

</summary>
   <content type="html">&lt;p&gt;Over on Martin Fowler’s site, &lt;a href=&quot;http://martinfowler.com/articles/born-for-it.html&quot;&gt;Birgitta Böckeler provides a nice introduction&lt;/a&gt; into the gendered nature of early computing, and the historical fall-out we live with today, that is a very compelling read.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The stereotype of the socially-awkward, white, male programmer has been around for a long time. Although “diversity in tech” is a much discussed topic, the numbers have not been getting any better. On the contrary, a lot of people inside and outside of the IT industry still take it for granted that this stereotype is the natural norm, and this perception is one of the things that is standing in our way to make the profession more inclusive and inviting. So where does this image come from? Did the demographics of the world’s programmer population really evolve naturally, because “boys just like computers more”? What shaped our perception of programmers? This text is about some possible explanations I found when reading about the history of computing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is a &lt;em&gt;very&lt;/em&gt; interesting synopsis and overview of scholarly looks at the history of computer programming from a gender perspective.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve only skimmed this overview, but I really want to take the time to read at least one of the titles discussed. I particularly like the notion that “coder” was once a derogatory term, mostly reserved for the women initially hired to make early computers run.&lt;/p&gt;

&lt;p&gt;I also love the sweet irony that the rather academic fathers of general purpose computers didn’t realize that the single most important aspect of computing wasn’t going to be the hardware, but the software. I think this is something anyone can appreciate, even without considering the gendered aspect of the history.&lt;/p&gt;

&lt;p&gt;The common refrain of some young women leaving computer science education early rang very true for me, as well. I’ve written elsewhere about a disasterous high school Career Day where the one and only Software Engineer basically convinced me that software wasn’t for me. (Cue several years of wandering in the desert.) Even as a young man, there was a certain class and gender mechanism that did not include me, either. (I don’t raise this to provide some contrary evidence for any arguments, but rather to indicate I’ve had the opportunity to grok the mechanisms at play here.)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Everything I know about electronics I learned from Mims</title>
   <link href="http://www.clevermonkey.org/electronics/2016/04/22/everything-i-know-about-electronics/"/>
   <updated>2016-04-22T10:04:00-04:00</updated>
   <id>electronics-2016-04-22-everything-i-know-about-electronics</id>
   <category term="electronics"/>
   <summary>Stop reading this right now and go throw money at the Circuit Classics crowd-funding effort. Throw all your money at them.

Still reading? Ok. Let’s try again:

Someone had the awesome idea of creating a set of electronic kits that perfectly capture the design and aesthetic of “Getting Started in Electronics” by Forrest M. Mims III, down to the beautiful hand-written notes that accompanied each circuit design.

They are a joy to behold.
</summary>
   <content type="html">&lt;p&gt;Stop reading this right now and go throw money at the &lt;a href=&quot;https://www.crowdsupply.com/star-simpson/circuit-classics&quot;&gt;Circuit Classics crowd-funding effort&lt;/a&gt;. Throw &lt;em&gt;all&lt;/em&gt; your money at them.&lt;/p&gt;

&lt;p&gt;Still reading? Ok. Let’s try again:&lt;/p&gt;

&lt;p&gt;Someone had the awesome idea of creating a set of electronic kits that perfectly capture the design and aesthetic of “Getting Started in Electronics” by &lt;a href=&quot;https://en.wikipedia.org/wiki/Forrest_Mims&quot;&gt;Forrest M.&lt;/a&gt; &lt;a href=&quot;http://www.forrestmims.org/&quot;&gt;Mims III&lt;/a&gt;, down to the beautiful hand-written notes that accompanied each circuit design.&lt;/p&gt;

&lt;p&gt;They are a joy to behold.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Paranoid Android</title>
   <link href="http://www.clevermonkey.org/work/2016/04/09/paranoid-android/"/>
   <updated>2016-04-09T09:43:00-04:00</updated>
   <id>work-2016-04-09-paranoid-android</id>
   <category term="work"/>
   <summary>The only constant is change.

So, the wheels have turned ever so slowly, and now it looks like I am to be an Android application developer, at least for the next few months.

This new position I took recently has, so far, been the usual tour through Java and C++ with the expected diversions into Ant and Jenkins. However, I’ve found out this week that I’ll have to get up to speed fast on Android on a set of embedded devices (i.e., not strictly a phone of some type). So, not only will I have to sort out Android app development using the Android APIs, but also how that fits into a highly custom runtime we’re targeting.

</summary>
   <content type="html">&lt;p&gt;The only constant is change.&lt;/p&gt;

&lt;p&gt;So, the wheels have turned ever so slowly, and now it looks like I am to be an Android application developer, at least for the next few months.&lt;/p&gt;

&lt;p&gt;This new position I took recently has, so far, been the usual tour through Java and C++ with the expected diversions into Ant and Jenkins. However, I’ve found out this week that I’ll have to get up to speed fast on Android on a set of embedded devices (&lt;em&gt;i.e.&lt;/em&gt;, not strictly a phone of some type). So, not only will I have to sort out Android app development using the Android APIs, but also how that fits into a highly custom runtime we’re targeting.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a result, this has been a tricky week for me. I spent a few days reading the API docs (ours and theirs) and figuring out what API level we are supporting, and figuring out how to make Eclipse do Android things. This last part is a challenge because it looks like The Google have deprecated their Eclipse ADT plug-in in favour of their own IntelliJ Idea Android Studio. However, all my examples and demos are Eclipse-ADT-based. It still works for the time being, but there is a decision to be made there. I also took a few online courses related to Android and Android development, if only because I’ve never really used &lt;em&gt;or&lt;/em&gt; coded an Android device.&lt;/p&gt;

&lt;p&gt;(Truth be told, I’m still not a huge fan of Android as a mobile UI. It works fine enough for what I’m doing, but I cannot imagine replacing my BlackBerry with any Android device. I find the user experience just so odd and clunky. But I digress.)&lt;/p&gt;

&lt;p&gt;I’m still a bit at sea with all this, and the requirements are &lt;em&gt;very&lt;/em&gt; mushy at the moment.  But I’ve been down this road before. All those tendrils I’m growing toward each other will meet over the next week and I’ll have put together the story I need to feel a lot more confident in where this is all going. It looks like this is going to be a bit of nice green-field development; our small team is going to put together and maintain a few key apps, along with the libraries necessary for those apps. Libraries that will be useful if we need to push out a custom app at the last minute, which is part of the business aim here.&lt;/p&gt;

&lt;p&gt;So, exciting times.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Maybe Harder is Better?</title>
   <link href="http://www.clevermonkey.org/embedded-systems/2016/04/08/maybe-harder-is-better/"/>
   <updated>2016-04-08T10:48:00-04:00</updated>
   <id>embedded-systems-2016-04-08-maybe-harder-is-better</id>
   <category term="embedded-systems"/>
   <summary>The Internet of Things. It is all around you. It is there when you pay your taxes. It is there when you take out your neighbour’s trash. It is made up of cloud-based web apps and Node.js powered interfaces.

I have a few colleagues that are honest-to-goodness embedded systems developers, and they all without fail absolutely hate these newer embedded toolchains. Most embedded developers I’ve known may have played with IDEs over the years, but eventually go back to plain old POSIX command line development. Maybe they choose a fancy text editor that can run Make or Bitbake for them, but that’s about it. Other than commercial ICE products (sometimes a necessary evil) most of these folks prefer to never see a GUI. For many pros a web-based or Javascript based toolchain is an anathema.

But for weekend warriors and hobbyists, setting up various toolchains for cross-compiling can be a real problem. To be fair, it’s a problem that’s often measured in hours as you sort out all the steps and read blog postings (yay for the internet, because in the old days you had to figure this stuff out seriously out-of-band) as long as you are reasonably good at hacking away on computers and figuring problems out in a step-wise manner.

The problem I have is keeping these toolchains up-to-date and working over time. I’ll get things working so I can, for example,  hack on my EZ430 Chronos, and then put that down for a few months. When I come back to it often some unrelated system change has broken some key step, or I need to update part of the toolchain which causes a ripple effect of connected failures. So, we are back to a few hours of busy work putting things back together, which often burns up the time I’ve blocked out for the project, or my interest (or both.)

</summary>
   <content type="html">&lt;p&gt;The Internet of Things. It is all around you. It is there when you pay your taxes. It is there when you take out your neighbour’s trash. It is made up of cloud-based web apps and Node.js powered interfaces.&lt;/p&gt;

&lt;p&gt;I have a few colleagues that are honest-to-goodness embedded systems developers, and they all without fail absolutely hate these newer embedded toolchains. Most embedded developers I’ve known may have played with IDEs over the years, but eventually go back to plain old POSIX command line development. &lt;em&gt;Maybe&lt;/em&gt; they choose a fancy text editor that can run Make or Bitbake for them, but that’s about it. Other than commercial &lt;a href=&quot;https://en.wikipedia.org/wiki/In-circuit_emulation&quot;&gt;ICE&lt;/a&gt; products (sometimes a necessary evil) most of these folks prefer to never see a GUI. For many pros a web-based or Javascript based toolchain is an anathema.&lt;/p&gt;

&lt;p&gt;But for weekend warriors and hobbyists, setting up various toolchains for cross-compiling can be a real problem. To be fair, it’s a problem that’s often measured in hours as you sort out all the steps and read blog postings (yay for the internet, because in the old days you had to figure this stuff out seriously out-of-band) as long as you are reasonably good at hacking away on computers and figuring problems out in a step-wise manner.&lt;/p&gt;

&lt;p&gt;The problem I have is keeping these toolchains up-to-date and working over time. I’ll get things working so I can, for example,  hack on my &lt;a href=&quot;http://processors.wiki.ti.com/index.php/EZ430-Chronos&quot;&gt;EZ430 Chronos&lt;/a&gt;, and then put that down for a few months. When I come back to it often some unrelated system change has broken some key step, or I need to update part of the toolchain which causes a ripple effect of connected failures. So, we are back to a few hours of busy work putting things back together, which often burns up the time I’ve blocked out for the project, or my interest (or both.)&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To be fair, this isn’t limited to embedded toolchains. It’s just more obvious and commonplace, in my experience. As a counter-example, recently my entire Ruby and &lt;a href=&quot;http://rubyonrails.org/&quot;&gt;RoR&lt;/a&gt; development environment on the Mac was completely hosed by an OS update. (Apple has done this to me a few times, actually: more than once an innocent update has actually had subtle effects that broke some development environment I depended on.)&lt;/p&gt;

&lt;p&gt;Anyway, I get why all these vendors want to get hardware into your hands with the thinnest possible cloud-based toolchain. They know as well as anyone that the barrier to entry is often the toolchain itself, and the faster you get a USB cable hooked up to some Node.js interface or cloud IDE, the faster you are going to blink that LED, and keep it blinking over successive weekends.&lt;/p&gt;

&lt;p&gt;However, I’ve noticed a down-side that isn’t necessarily related to what the pros complain about when discussing these tools. I suspect that a great majority of hobbyists happily hacking away at Tessel devices or getting into PIC via MPLAB Xpress see few problems. Their tools work, and continue to work. What could go wrong? Well, if something &lt;em&gt;does&lt;/em&gt; go wrong (and it will) much of the debugging and problem solving skills one has learned over the years has little value when trying to get things to work. You are sort of at the mercy of the cloud, or some library, or some driver. In some ways, we just move the problem around.&lt;/p&gt;

&lt;p&gt;Here are two examples:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;For fun, I requested a free Xpress Board from Microchip, and dutifully signed up for access to their shiny new &lt;a href=&quot;http://hackaday.com/2016/02/15/microchip-unveils-online-mplab-ide-and-10-board/&quot;&gt;MPLAB Xpress
Cloud-based IDE&lt;/a&gt;. I plugged in the board and… nothing. For some reason, on my Mac, the board is being mounted as a read-only device, so I am unable to drop hex files onto it (which is the programming interface) and neither is the IDE able to install and run compiled apps. No amount of system tweaking and hacking showed any promise, and the Microchip forums were less than helpful. I recognize this is probably something specific to my environment, but after a few hours of messing about I gave up. I was able to determine that it worked on Windows 10 at work, and that’s as far as that went. Microchip has &lt;a href=&quot;http://hackaday.com/2016/03/11/microchips-publishes-usb-mass-storage-loader/&quot;&gt;open-sourced their USB mass-storage loader&lt;/a&gt; that is at fault here, so &lt;em&gt;maybe&lt;/em&gt; I can figure it out. That isn’t really an itch I want to scratch, though.&lt;/li&gt;
  &lt;li&gt;Even more recently, my &lt;a href=&quot;http://tessel.io/&quot;&gt;Tessel2&lt;/a&gt; arrived, which is a platform driven by a more familiar (to me) command line interface. This interface is deployed by Node.js, so the first step is to install Node. And then everything fell apart in a variety of unhelpful ways. On Windows, the USB-device programming drivers are supposed to be provided when the device boots, but for Windows 10 this doesn’t work. The slightly more helpful Tessel forums actually showed they are trying to push a change out to fix this shortly. Ok, no problem. I plan to use my Mac with this anyway, so I take it home and do the same setup and… it completely fails, and looks like no one has even tried the steps they show on their start page. In this case Node is unable to install the Tessel tools globally (probably because of how OS X is so locked down now) and unable to run properly when installed locally. I’m sure this is all very solvable, but at this point I declined to spend the time digging into it. Perhaps someone else will figure it out later and I’ll pick up the thread then.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;My point isn’t that everything sucks (though it does, sort of) but rather that if this was a traditional toolchain I might have had a fighting chance. But, because these new models are based on stuff that is at a higher level of abstraction (i.e., the web, or USB mounts, or monolithic Javascript engines) my usual ways of solving these problems are not as useful.&lt;/p&gt;

&lt;p&gt;And the end result is the same: as a weekend warrior, the thought of wrestling the interface or toolchain often makes me want to choose a different hobby.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Well, it only took a few hours of mucking about, but I sorted out the Tessel 2 Node.js problem, the follow-on USB driver problem, the connecting to Wi-Fi problem, and was able to update the device. It is now happily blinking green and blue LEDs.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>A Glitch in the Matrix</title>
   <link href="http://www.clevermonkey.org/retro-computing/2016/03/15/a-glitch-in-the-matrix/"/>
   <updated>2016-03-15T11:40:00-04:00</updated>
   <id>retro-computing-2016-03-15-a-glitch-in-the-matrix</id>
   <category term="retro-computing"/>
   <summary>If you like retro-computing (and I know you do) maybe you might like to see a Retrocomputing StackExchange site?

Such a site is being proposed right now.
</summary>
   <content type="html">&lt;p&gt;If you like retro-computing (and I know you do) maybe you might like to see a Retrocomputing &lt;a href=&quot;https://stackexchange.com/&quot;&gt;StackExchange&lt;/a&gt; site?&lt;/p&gt;

&lt;p&gt;Such a site &lt;a href=&quot;http://area51.stackexchange.com/proposals/94441/retrocomputing?referrer=M-YAwndOwsOoX3hc-nnfLw2&quot;&gt;is being proposed right now&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Learning Astable Multivibrators Like a 5-year Old</title>
   <link href="http://www.clevermonkey.org/electronics/2016/02/17/learning-astable-multivibrators-like-a-5-year-old/"/>
   <updated>2016-02-17T20:09:00-05:00</updated>
   <id>electronics-2016-02-17-learning-astable-multivibrators-like-a-5-year-old</id>
   <category term="electronics"/>
   <summary>My daughter finds my basement shack fascinating, mostly because it’s full of interesting junk she can wade through. The other day she saw my collection of electronics parts and couldn’t get them out of her mind. Which is to be expected. I mean, have you seen electronics parts? They look like robot jewelry, which (now that I think about it) is like catnip to a 5-year old.

So, I promised I’d show her a few things that you can do with the parts. I know she had visions of robots wandering around answering to her commands. But, I figured it would be an education in bottom-up design to just, you know, flash an LED. So, I collected a 555 timer, an LED, and a solderless bread-board and showed her how boring it is to debug a circuit. It had been awhile since I made a multivibrator circuit, so I grabbed the first 555 datasheet I found on the internet and went for it (thanks, TI!)

</summary>
   <content type="html">&lt;p&gt;My daughter finds my basement shack fascinating, mostly because it’s full of interesting junk she can wade through. The other day she saw my collection of electronics parts and couldn’t get them out of her mind. Which is to be expected. I mean, &lt;a href=&quot;https://duckduckgo.com/?q=electronics+parts&amp;amp;t=ffab&amp;amp;iax=1&amp;amp;ia=images&quot;&gt;have you seen electronics parts&lt;/a&gt;? They look like robot jewelry, which (now that I think about it) is like catnip to a 5-year old.&lt;/p&gt;

&lt;p&gt;So, I promised I’d show her a few things that you can do with the parts. I &lt;em&gt;know&lt;/em&gt; she had visions of robots wandering around answering to her commands. But, I figured it would be an education in bottom-up design to just, you know, flash an LED. So, I collected a &lt;a href=&quot;https://en.wikipedia.org/wiki/555_timer_IC&quot;&gt;555 timer&lt;/a&gt;, an LED, and a solderless bread-board and showed her how &lt;em&gt;boring&lt;/em&gt; it is to debug a circuit. It had been awhile since I made a multivibrator circuit, so I grabbed the first 555 datasheet I found on the internet and went for it (thanks, TI!)&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What I’ve learned is that I have a terrible collection of capacitors. Really. My RC circuits are pretty limited, so we only had limited success getting a reasonable duty cycle going.&lt;/p&gt;

&lt;p&gt;Also, the tweaky wires and boring schematics quickly illustrated what &lt;a href=&quot;http://littlebits.cc/&quot;&gt;littleBits&lt;/a&gt; is doing right. I mean, even when I was twice her age I was more interesting in slamming things together to make lights flash, speakers squeal, and motors turn.&lt;/p&gt;

&lt;p&gt;But! Even thought she got bored and walked away to watch mom play video games, I decided to pull out the brand-new &lt;a href=&quot;http://www.bitscope.com/&quot;&gt;BitScope&lt;/a&gt; and see if my oscillator was actually oscillating.&lt;/p&gt;

&lt;p&gt;I should have taken a screenshot, but I was right chuffed to see a perfectly nice square wave coming out of pin 3. Now, because of aformentioned capacitor issues, the duty cycle was a little tight which meant the whole “flashing” aspect was missing. But still: a great way to determine my BitScope works, as this is the first signal it has displayed that has not been self-generated.&lt;/p&gt;

&lt;p&gt;So, overall, a win. As for budding hobbyist electronics and robotics enthusiasts in the house, not so much. Perhaps I should take advantage of the littleBits evenings at the local library for that.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Update Roundup Clip Show</title>
   <link href="http://www.clevermonkey.org/daily/2016/01/21/update-roundup-clip-show/"/>
   <updated>2016-01-21T22:00:00-05:00</updated>
   <id>daily-2016-01-21-update-roundup-clip-show</id>
   <category term="daily"/>
   <summary>I authored an entry on my new camera, but Prose.io ated it. Anyway, I recently got a sweet deal on a Pentax Q-S1, so I went for it. I’ll probably talk about this more in the future, once I’ve had a chance to play with it more.

It feels like years ago, but I pre-orderd a Tessel 2 when it was announced. I had a very specific idea of what I wanted to do with it, but now I can’t remember what that was. For now, I’ll add it to the list of embedded devices. I’m sure I’ll talk more about that in the future.

I’m also pretty sure I’m about to get an oscilloscope so I can finish trying to fix the TRS-80 Model 100 basketcase I have. No sense in letting the beautiful pleather slip-case go to waste. I even have a perfectly capable cassette player ready to CLOAD some BASIC goodness into it once it’s running again.

All this and more, I promise. Thought, right now I’m immersed in some for-pay C++ hacking. Because, for some reason, I keep getting hired as a Java or Lua coder and end up hacking on C++. All I’ve learned to date is that header files are weird, structs are weirder, and new is evil.

clvrmnky, out.
</summary>
   <content type="html">&lt;p&gt;I authored an entry on &lt;a href=&quot;http://ricoh-imaging.ca/en/products/cameras/Q-S1/&quot;&gt;my new camera&lt;/a&gt;, but Prose.io ated it. Anyway, I recently got a sweet deal on a Pentax Q-S1, so I went for it. I’ll probably talk about this more in the future, once I’ve had a chance to play with it more.&lt;/p&gt;

&lt;p&gt;It feels like years ago, but I pre-orderd a &lt;a href=&quot;https://www.tessel.io/&quot;&gt;Tessel 2&lt;/a&gt; when it was announced. I had a very specific idea of what I wanted to do with it, but now I can’t remember what that was. For now, I’ll add it to the &lt;a href=&quot;/embedded-systems/2015/09/09/embedded-device-zoo/&quot;&gt;list of embedded devices&lt;/a&gt;. I’m sure I’ll talk more about that in the future.&lt;/p&gt;

&lt;p&gt;I’m also pretty sure I’m about to get an oscilloscope so I can finish trying to fix the &lt;a href=&quot;/retro-computing/2015/09/08/how-to-not-repair-a-dinosaur/&quot;&gt;TRS-80 Model 100 basketcase&lt;/a&gt; I have. No sense in letting the beautiful pleather slip-case go to waste. I even have a perfectly capable cassette player ready to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CLOAD&lt;/code&gt; some BASIC goodness into it once it’s running again.&lt;/p&gt;

&lt;p&gt;All this and more, I promise. Thought, right now I’m immersed in some for-pay C++ hacking. Because, for some reason, I keep getting hired as a Java or Lua coder and end up hacking on C++. All I’ve learned to date is that header files are weird, structs are weirder, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;new&lt;/code&gt; is evil.&lt;/p&gt;

&lt;p&gt;clvrmnky, out.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>National Girls Learning Code Day</title>
   <link href="http://www.clevermonkey.org/daily/2015/11/06/national-girls-learning-code-day/"/>
   <updated>2015-11-06T21:16:00-05:00</updated>
   <id>daily-2015-11-06-national-girls-learning-code-day</id>
   <category term="daily"/>
   <summary>There was a local Twitter call-out for “mentors” to assist with teaching girls, age 8-13, in learning HTML and CSS for National Girls Learning Code Day. So, I thought, “why not”, and volunteered my time; now it looks like I’m showing up at 10AM tomorrow to act as a sort of web coding expert.

There was a brief moment when I panicked about my spotty HTML and CSS experience, and started to plan a crash course review of HTML 5 and CSS selectors and…

</summary>
   <content type="html">&lt;p&gt;There was a local Twitter call-out for “mentors” to assist with teaching girls, age 8-13, in learning HTML and CSS for &lt;a href=&quot;https://www.eventbrite.ca/e/kitchener-waterloo-national-girls-learning-code-day-for-girls-ages-8-13-their-parentguardian-tickets-18338143882&quot;&gt;National Girls Learning Code Day&lt;/a&gt;. So, I thought, “why not”, and volunteered my time; now it looks like I’m showing up at 10AM tomorrow to act as a sort of web coding expert.&lt;/p&gt;

&lt;p&gt;There was a brief moment when I panicked about my spotty HTML and CSS experience, and started to plan a crash course review of HTML 5 and CSS selectors and…&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;… then I realized they really just want someone with basic skills to encourage and facilitate learning. If I can help make that fun, then we can call it a win. As with most things in life, showing up when someone asks you,  and not being an asshole when you do show up, is pretty much the majority of what is expected.&lt;/p&gt;

&lt;p&gt;Because I’m no HTML/CSS expert. I “designed” this site, insofar as I wrote all the code that drives the Jekyll that tells GitHub how to make the content. But any pro designer will tell you that any joker can do that. But this experience is enough that I can help the next generation of expert designers get their start. I suspect the real trick will be staying out of their way, actually.&lt;/p&gt;

&lt;p&gt;Even better is that I’m armed with the experience of teaching Python to a 5-year old (who has recently caught wind of this awesome thing called “Ruby” that she has decided is the Best Thing Ever so I guess I better figure out Ruby turtle graphics pretty quick) so I expect this is going to be a pretty awesome day.&lt;/p&gt;

&lt;p&gt;Here’s to inclusive community building.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Ruby Tuesday</title>
   <link href="http://www.clevermonkey.org/coding/2015/10/27/ruby-tuesday/"/>
   <updated>2015-10-27T14:35:00-04:00</updated>
   <id>coding-2015-10-27-ruby-tuesday</id>
   <category term="coding"/>
   <summary>On Monday I had a meeting, and today (Tuesday) I blew the space-dust off of my copy off of the Pick-axe Book and, Crom save me, re-re-reinstalled Ruby On Rails on my lappy.

These two things are tangentially related, of course, and this will be discussed in a follow-up. But, since I’m in a mood to Learn All The Languages, I may as well refresh my L33t Ruby Skillz while I’m at it.

</summary>
   <content type="html">&lt;p&gt;On Monday I had a meeting, and today (Tuesday) I blew the space-dust off of my copy off of the &lt;a href=&quot;https://pragprog.com/book/ruby/programming-ruby&quot;&gt;Pick-axe Book&lt;/a&gt; and, Crom save me, re-re-reinstalled &lt;a href=&quot;http://rubyonrails.org/&quot;&gt;Ruby On Rails&lt;/a&gt; on my lappy.&lt;/p&gt;

&lt;p&gt;These two things are tangentially related, of course, and this will be discussed in a follow-up. But, since I’m in a mood to Learn All The Languages, I may as well refresh my L33t Ruby Skillz while I’m at it.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But (as &lt;a href=&quot;http://www.eloisewebsite.com/&quot;&gt;Eloise&lt;/a&gt; would say), &lt;em&gt;oh, my Lord&lt;/em&gt;, did the OS X 10.11 upgrade totally &lt;strong&gt;wreck&lt;/strong&gt; everything to do with my RoR and Jekyll development setup! What a total and complete mess. This is even better than that time they updated the C++ compiler to Clang without warning in a point release. After an hour or so I have managed to successfully invoke &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails new ...&lt;/code&gt; and get a working demo, and the Jekyll bundle that drives the local version of this blog is, once again, working. I’m sure I’ll find more as I go along.&lt;/p&gt;

&lt;p&gt;I don’t even remember exactly what I did, but it involved much custom tweaking based on experimentation and reading StackOverflow articles. Be wary of anyone who says “all you have to do is …” regarding this! I might still have a weird problem where some of the “shimmed” rbenv executables overlap with the local copy of the Ruby Gem executables I have in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/bin&lt;/code&gt;. It’s still very much a disaster, but a very slow-moving one.&lt;/p&gt;

&lt;p&gt;I’ll have to sit down and sort out how to rationalize the stuff in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.rbenv&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.gemrc&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.gem&lt;/code&gt; at some point, I’m &lt;em&gt;rawther&lt;/em&gt; sure.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Wherein the Author Attempts to not Learn Python</title>
   <link href="http://www.clevermonkey.org/coding/2015/10/14/wherein-the-author-attempts-to-not-learn-python/"/>
   <updated>2015-10-14T10:25:00-04:00</updated>
   <id>coding-2015-10-14-wherein-the-author-attempts-to-not-learn-python</id>
   <category term="coding"/>
   <summary>I recently ran across an article discussing strategies for learning a new computer language (while still having a life) that was both inspiring and a little depressing. I agree that success at something as mushy and large as “learn a new computer language” is best approached as a “series of little wins”.

Inspiring, because I recognized many of the techniques the authors uses to bootstrap learning a new language: we both have a similar approach, where we grok enough of the docs and READMES to get a purchase, and build from there. This can be a very good way of iteratively building up a new skill while side-stepping information overload. Experience has taught me that I do not do well trying to sip from a firehose, and I’m at my best taking the smallest sips.

</summary>
   <content type="html">&lt;p&gt;I recently ran across &lt;a href=&quot;http://rob.conery.io/2015/10/06/how-to-learn-a-new-programming-language-while-maintaining-your-day-job-and-still-being-there-for-your-family/&quot;&gt;an article discussing strategies for learning a new computer language&lt;/a&gt; (while still having a life) that was both inspiring and a little depressing. I agree that success at something as mushy and large as “learn a new computer language” is best approached as a “series of little wins”.&lt;/p&gt;

&lt;p&gt;Inspiring, because I recognized many of the techniques the authors uses to bootstrap learning a new language: we both have a similar approach, where we grok enough of the docs and READMES to get a purchase, and build from there. This can be a very good way of iteratively building up a new skill while side-stepping information overload. Experience has taught me that I do not do well trying to sip from a firehose, and I’m at my best taking the smallest sips.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Java, C++, and C were all crash courses for me: I spent all my free time at work, school, or home thinking about, or reading about, or actually coding the language. But I’ve also learned enough Perl, Lua, and Ruby to get by (and get hired) as a &lt;a href=&quot;https://pragprog.com/&quot;&gt;Pragmatic&lt;/a&gt; learning background task while busy with other stuff.&lt;/p&gt;

&lt;p&gt;Fast-forward a few years, though, and I’m less inclined (and less able) to successfully negotiate these total submersions in something. It’s not &lt;em&gt;just&lt;/em&gt; that I have a life (of a sort), and not &lt;em&gt;just&lt;/em&gt; that I have more things vying for my attention. I’m also less able to stay interested at this level. There seems to be a finer balance (or perhaps I’m more aware of it now) of full-on submersion and idle musings.&lt;/p&gt;

&lt;p&gt;Anyway, the author of that article I mention shows how he very successfully grokked a new language ecosystem to satisfy the itch he wanted to scratch. And he did it in a way that matches what I do in the same situation (well, I don’t schedule the time in my calendar so strictly, but this is a minor point). So, why depressing, then?&lt;/p&gt;

&lt;p&gt;Part of this balance I’m speaking of relies heavily on maintaining some level of interest; the itch I need to scratch. This is complicated thing, at least for me. I do it for my career, but not &lt;em&gt;just&lt;/em&gt; my career. I do it because I think the tech is &lt;em&gt;cool&lt;/em&gt;, but not &lt;em&gt;just&lt;/em&gt; because it’s cool. I do it to stay sharp, but I can just as easily stay sharp diving deeper into something I already know. It feels like there is an odd calculus here that drives me to make those first steps, and then keep going.&lt;/p&gt;

&lt;p&gt;This last year has been hard for me to decide on the Next Language to Learn. I’ve made noises about immersing myself in functional coding via Haskell, which gave way to my practical need to finally get Python under my belt (since it seems to have occluded Lua in the niche both live in). I really ought to spend more time with Python, and the little hacking I’ve done with my daughter has been great. But I’m not really inspired by it; there’s no real itch there. For example, my latest crush is &lt;a href=&quot;http://www.groovy-lang.org/&quot;&gt;Groovy&lt;/a&gt;, yet another JVM language that has been on my radar for awhile, but I’m not sure how long this will last. I’d really like an excuse to use &lt;a href=&quot;http://www.groovy-lang.org/ecosystem.html#Spock&quot;&gt;Spock&lt;/a&gt;, but without a daily need to be a test-driven Java coder there isn’t a lot of scratch there, either.&lt;/p&gt;

&lt;p&gt;It seems to me that maybe I ought to find the itch first, and then see which tools scratch it best. Perhaps that’s the thing: I don’t have much itch lately. Honestly, I may just need a new job that requires me to drop everything and learn something new so I can immediately apply what I know.&lt;/p&gt;

&lt;p&gt;Then again, I am still pretty good at short, intense learning sessions. Maybe the key is to try and converge some of those interests and hobbies so they reinforce each other. I mean, there is an obvious connection between robotics and Python. And both of these could lead to actual employment doing either in this town. So those reinforce each other. &lt;a href=&quot;http://www.arrl.org/software-defined-radio&quot;&gt;SDR&lt;/a&gt;, Amateur Radio, and Python are also pretty commonly found together. Python and Quality Time with my Kid is still a thing.&lt;/p&gt;

&lt;p&gt;Uh. Ok. Apparently, I should just continue to concentrate on Python. Maybe I &lt;em&gt;will&lt;/em&gt; schedule time in my calendar to work on a Python project.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>In Cupertino, Laptop Replaces You</title>
   <link href="http://www.clevermonkey.org/daily/2015/10/10/in-cupertino-laptop-replaces-you/"/>
   <updated>2015-10-10T03:25:00-04:00</updated>
   <id>daily-2015-10-10-in-cupertino-laptop-replaces-you</id>
   <category term="daily"/>
   <summary>It occurs to me that this 2007 MacBook Pro I’m using is on its second motherboard, its third battery, its third hard drive, its second charger, and its second set of memory sticks.

Now I want to keep it alive long enough to replace all the fans and reseat the heatsinks. I’ll be tempted to replace the capacitors as they start to dry out and fail, too.
</summary>
   <content type="html">&lt;p&gt;It occurs to me that this 2007 MacBook Pro I’m using is on its second motherboard, its third battery, its third hard drive, its second charger, and its second set of memory sticks.&lt;/p&gt;

&lt;p&gt;Now I want to keep it alive long enough to replace all the fans and reseat the heatsinks. I’ll be tempted to replace the capacitors as they start to dry out and fail, too.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>A Nice Piece of Kit</title>
   <link href="http://www.clevermonkey.org/electronics/2015/10/08/a-nice-piece-of-kit/"/>
   <updated>2015-10-08T14:57:00-04:00</updated>
   <id>electronics-2015-10-08-a-nice-piece-of-kit</id>
   <category term="electronics"/>
   <summary>So, apparently Heathkit lives again, which creates such a feeling of must-have nostalgia for me, it’s hard to convince myself not to buy this TRF AM radio right now.

Yes, an AM radio. Using tuned radio-frequency circuits instead of PLLs or microprocessors. I imagine for many people, the notion that one could spend US$150 on an AM radio is simply insane. Which, of course, it totally is. But this is as much a statement of art as much as it is a piece of technology. Well, for some definitions of art.

Once I get my Amateur Radio license I’ll be equally tempted if they re-release their famous classic QRP transceiver (or I can find a vintage kit in good repair). Ditto, if they re-release any of the equally famous valve radio kits.

But the thing that really got my attention is a little gem of an air variable capacitor. Good grief, an air variable cap with reduction gears and bearings like it’s 1963? Given how rare such things are, I’m not at all surprised that Heathkit is selling them separately. I’m only a little confused why they don’t share the range of values this capacitor covers, though for US$20 I suppose one would simply adjust they rest of the circuit to match.

It’ll be interesting to see if Heathkit can make a go of it selling objects of nostalgic desire in this manner.

Via Hackaday.
</summary>
   <content type="html">&lt;p&gt;So, apparently &lt;a href=&quot;https://en.wikipedia.org/wiki/Heathkit&quot;&gt;Heathkit&lt;/a&gt; lives again, which creates such a feeling of must-have nostalgia for me, it’s hard to convince myself not to buy this &lt;a href=&quot;https://shop.heathkit.com/shop/product/explorer-jr-trf-am-radio-receiver-kit-black-case-gr-150-bk-16&quot;&gt;TRF AM radio&lt;/a&gt; right &lt;em&gt;now&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Yes, an &lt;em&gt;AM&lt;/em&gt; radio. Using tuned radio-frequency circuits instead of PLLs or microprocessors. I imagine for many people, the notion that one could spend US$150 on an AM radio is simply insane. Which, of course, it totally is. But this is as much a statement of art as much as it is a piece of technology. Well, for some definitions of art.&lt;/p&gt;

&lt;p&gt;Once I get my Amateur Radio license I’ll be equally tempted if they re-release their famous classic QRP transceiver (or I can find a vintage kit in good repair). Ditto, if they re-release any of the equally famous valve radio kits.&lt;/p&gt;

&lt;p&gt;But the thing that really got my attention is a little gem of an &lt;a href=&quot;https://shop.heathkit.com/shop/product/air-variable-capacitor-for-hw-8-transceiver-3&quot;&gt;air variable capacitor&lt;/a&gt;. Good grief, an air variable cap with reduction gears and bearings like it’s 1963? Given how rare such things are, I’m not at all surprised that Heathkit is selling them separately. I’m only a little confused why they don’t share the range of values this capacitor covers, though for US$20 I suppose one would simply adjust they rest of the circuit to match.&lt;/p&gt;

&lt;p&gt;It’ll be interesting to see if Heathkit can make a go of it selling objects of nostalgic desire in this manner.&lt;/p&gt;

&lt;p&gt;Via &lt;a href=&quot;https://hackaday.com/2015/10/08/heathkit-live-die-repeat/&quot;&gt;Hackaday&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Backups are for the Weak</title>
   <link href="http://www.clevermonkey.org/site-info/2015/10/08/backups-are-for-the-weak/"/>
   <updated>2015-10-08T13:20:00-04:00</updated>
   <id>site-info-2015-10-08-backups-are-for-the-weak</id>
   <category term="site-info"/>
   <summary>Well, I just went through all my old PATA drives looking for the MySQL dump from an earlier incarnation of this blog, and it appears that the data is well and truly gone forever. I made a backup image of a candidate drive, which was very lucky: the heads crashed hard whilst I was running TestDisk on it.

But I’m not really able to make sense of the image anyway. It looks like this IBM drive is from my original OS X/Mac OS box that I bought nearly 15 years ago. At some point I put it in a FireWire (remember that?) enclosure as a bootable Mac OS drive (when Apple still supported that) so I could play Alpha Centauri, and from there it ended up as an OpenBSD backup drive. So, most partition-level tools see a complete mess of HFS and DOS partitions containing a hodge-podge of duplicate HFS+, NTFS, and FFS filesystems.

It’s an intractible mess, or at least enough of a mess the rewards are not worth the effort.  Just use the Internet Wayback Machine if you want to see how much I used to swear on my blog. (Hint: a lot.)

I suppose I did become an instant expert in Linux partition and filesystem tools. I still think the best solution to data loss is to not make data you are afraid to lose.
</summary>
   <content type="html">&lt;p&gt;Well, I just went through &lt;strong&gt;all&lt;/strong&gt; my old PATA drives looking for the MySQL dump from an earlier incarnation of this blog, and it appears that the data is well and truly gone forever. I made a backup image of a candidate drive, which was very lucky: the heads crashed hard whilst I was running &lt;a href=&quot;http://www.cgsecurity.org/wiki/TestDisk&quot;&gt;TestDisk&lt;/a&gt; on it.&lt;/p&gt;

&lt;p&gt;But I’m not really able to make sense of the image anyway. It looks like this IBM drive is from my &lt;em&gt;original&lt;/em&gt; OS X/Mac OS box that I bought nearly 15 years ago. At some point I put it in a FireWire (remember that?) enclosure as a bootable Mac OS drive (when Apple still supported that) so I could play Alpha Centauri, and from there it ended up as an OpenBSD backup drive. So, most partition-level tools see a complete mess of HFS and DOS partitions containing a hodge-podge of duplicate HFS+, NTFS, and FFS filesystems.&lt;/p&gt;

&lt;p&gt;It’s an intractible mess, or at least enough of a mess the rewards are not worth the effort.  Just use the Internet Wayback Machine if you want to see how much I used to swear on my blog. (Hint: a lot.)&lt;/p&gt;

&lt;p&gt;I suppose I did become an instant expert in Linux partition and filesystem tools. I still think the best solution to data loss is to not make data you are afraid to lose.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>You're Only Fooling a Few People Bringing Your Laptop to the Library</title>
   <link href="http://www.clevermonkey.org/daily/2015/09/23/you-re-only-fooling-a-few-people-bringing-your-laptop-to-the-library/"/>
   <updated>2015-09-23T12:16:00-04:00</updated>
   <id>daily-2015-09-23-you-re-only-fooling-a-few-people-bringing-your-laptop-to-the-library</id>
   <category term="daily"/>
   <summary>In an effort to remind myself how to focus after quite a lazy summer, I am at the wonderful new Central KPL stealing wi-fi and prepping for Java interviews. I’ve sort of taken the summer off, and while I’ve written and studied Java a little (taking a Java 8 lambda course, for example) I’ve been mostly learning Python or messing about with Linux, NQC, and LEGO.

(As an aside, how can people stand interfaces that whistle, chime, and others announce every single operation? There is a woman next to me who is using some tiny keyboard-and-ipad combination that is literally making a different noise on every keystroke.)

So, I’m out of practice thinking like a working Java coder.

This whole coding interview is a tricky thing, though. My feeling is that I don’t come across very well in such interviews, mostly because unless I’m in the moment looking at a specific problem, I forget exactly what I did, or how I went about it. I just don’t solve problems and approach algorithms like I was taught in class.

</summary>
   <content type="html">&lt;p&gt;In an effort to remind myself how to focus after quite a lazy summer, I am at the wonderful new &lt;a href=&quot;http://www.kpl.org/locations/central.html&quot;&gt;Central KPL&lt;/a&gt; stealing wi-fi and prepping for Java interviews. I’ve sort of taken the summer off, and while I’ve written and studied Java a little (taking a Java 8 lambda course, for example) I’ve been mostly learning Python or messing about with Linux, NQC, and LEGO.&lt;/p&gt;

&lt;p&gt;(As an aside, how can people stand interfaces that whistle, chime, and others announce &lt;em&gt;every single operation&lt;/em&gt;? There is a woman next to me who is using some tiny keyboard-and-ipad combination that is &lt;em&gt;literally&lt;/em&gt; making a different noise on every keystroke.)&lt;/p&gt;

&lt;p&gt;So, I’m out of practice thinking like a working Java coder.&lt;/p&gt;

&lt;p&gt;This whole coding interview is a tricky thing, though. My feeling is that I don’t come across very well in such interviews, mostly because unless I’m in the moment looking at a specific problem, I forget exactly what I did, or how I went about it. I just don’t solve problems and approach algorithms like I was taught in class.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In real life &lt;a href=&quot;http://heeris.id.au/2013/this-is-why-you-shouldnt-interrupt-a-programmer/&quot;&gt;it’s more like this&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’m pretty sure I “think like a computer scientist”, but my sort of computer science is a little more ad hoc, and grounded in hackery as much as beautiful code and math. I mostly used hacking as a gateway drug to code and math. I’ve also jumped around a lot over the years, and as a true generalist I’ve placed more importance on grokking frameworks and business needs over deep algorithmic understanding.&lt;/p&gt;

&lt;p&gt;So, coming into this cold while being stared at by an engineer potentially as grumpy as me is a bit of a challenge. (And offers no small amount of irony.) So, I’m trying to just get into the pair-programming mindset.&lt;/p&gt;

&lt;p&gt;I just hope I’m not going to be implementing yet another hashset or LRU cache in Java.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>You're Not Fooling Anyone Bringing Your Laptop to the Coffee Shop</title>
   <link href="http://www.clevermonkey.org/daily/2015/09/21/you-re-not-fooling-anyone-bringing-your-laptop-to-the-coffee-shop/"/>
   <updated>2015-09-21T14:56:00-04:00</updated>
   <id>daily-2015-09-21-you-re-not-fooling-anyone-bringing-your-laptop-to-the-coffee-shop</id>
   <category term="daily"/>
   <summary>The nostalgic soundtrack at this coffee shop is strangely soothing.

I’m pretending to work while Robert Plant’s solo offerings give way to Boston’s “More than a Feeling” and then Van Halen’s “Panama”, and a crowd of nice slavic ladies raucously catch up at the same shared table. The ladies are also strangely soothing.

</summary>
   <content type="html">&lt;p&gt;The nostalgic soundtrack at this coffee shop is strangely soothing.&lt;/p&gt;

&lt;p&gt;I’m pretending to work while Robert Plant’s solo offerings give way to Boston’s “More than a Feeling” and then Van Halen’s “Panama”, and a crowd of nice slavic ladies raucously catch up at the same shared table. The ladies are also strangely soothing.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The idea is to change my surroundings in order to get some busy-work done, or at least started. The intention:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Run through some Java coding interview stuff for my call with [REDACTED] this week&lt;/li&gt;
  &lt;li&gt;Get &lt;a href=&quot;http://www.ros.org/&quot;&gt;ROS&lt;/a&gt; installed on my &lt;a href=&quot;http://lubuntu.net/&quot;&gt;Lubuntu&lt;/a&gt; VM for fun (and, potentially, profit)&lt;/li&gt;
  &lt;li&gt;Restart preparing for my Amateur Radio Basic Qualifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even though my basement computer shack workstation runs &lt;a href=&quot;http://archlinux.org&quot;&gt;Arch&lt;/a&gt;, I mostly did that so the DistCC based build system for &lt;a href=&quot;http://archlinuxarm.org/&quot;&gt;Arch Linux ARM&lt;/a&gt; on the BeagleBone Black (BBB) would be easier. That project was shelved, though, and now the BBB is running &lt;a href=&quot;https://developer.ubuntu.com/en/snappy/&quot;&gt;Snappy Ubuntu&lt;/a&gt; so the path of least resistance was an Ubuntu Core workstation. So, I’ve been doing a little light Snappy hacking.&lt;/p&gt;

&lt;p&gt;But then I had a chat with a local start-up about ROS at the past &lt;a href=&quot;http://www.makerexpo.ca/&quot;&gt;Maker Expo&lt;/a&gt; and it turns out that Ubuntu is an easy entry into that, as well. Since both the Arduino and the BeagleBone offer interfaces to ROS, and ROS is of interest to at least one start-up in town, why not see what it’s all about?&lt;/p&gt;

&lt;p&gt;The Maker Expo is also where I chatted with someone from &lt;a href=&quot;http://rac.ca/&quot;&gt;RAC&lt;/a&gt; who convinced me to just finally pull the trigger and get my no-code Basic Qualification, so I’m going to do that. I’m a little rusty on the Industry Canada rules and some of the parallel vs. serial RC circuits stuff, so I pulled out my flash cards and RAC manual to bone up a bit on that.&lt;/p&gt;

&lt;p&gt;Perhaps soon I’ll have a new job, a haircut, and a VE3 call-sign.&lt;/p&gt;

&lt;p&gt;Little of that will happen, though, until I stop writing, and start studying.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>On _issing Dat_</title>
   <link href="http://www.clevermonkey.org/site-info/2015/09/18/on-issing-dat/"/>
   <updated>2015-09-18T14:53:00-04:00</updated>
   <id>site-info-2015-09-18-on-issing-dat</id>
   <category term="site-info"/>
   <summary>My great hope of resurrecting some of my better posts from the old self-hosted clevermonkey.org may be fully dashed.

I cannot, for the life of me, find the backup of the MySQL database that powered that site, lo, those many years ago. I have a terrible feeling that I reused the drive to save @Carmen’s old Mac image when she got the new Air. (Which also means I may have purged the old ecogrrl.org site. Shhh. Don’t tell her.)

I have one even older drive to check, which requires the usual hoop-jumping because it is either Firewire (what now?) or PATA. But I’m thinking those bits are lost to the ages. My own personal Library of Alexandria, and I’m Caesar.

This mirrors a lot of how I seem to treat the information I’ve generated over the decades. In the past, I have deliberately purged notebooks full of writings in an effort to shed baggage and move on. But the old blog was different; it was always intended to be public. Personal, but very much intended for everyone to read (for better or for worse).

This is an unfortunately loss, if it is a loss. Perhaps I can salvage some of that from the Internet WayBack Machine? Honestly, I suspect only about 1% of the dataset I’m thinking of wants to be saved. It’s not like the world is missing another Socrates’ Rhetorics here.
</summary>
   <content type="html">&lt;p&gt;My great hope of resurrecting some of my &lt;em&gt;better&lt;/em&gt; posts from the old self-hosted clevermonkey.org may be fully dashed.&lt;/p&gt;

&lt;p&gt;I cannot, for the life of me, find the backup of the MySQL database that powered that site, lo, those many years ago. I have a terrible feeling that I reused the drive to save @Carmen’s old Mac image when she got the new Air. (Which also means I may have purged the old ecogrrl.org site. &lt;em&gt;Shhh&lt;/em&gt;. Don’t tell her.)&lt;/p&gt;

&lt;p&gt;I have one even older drive to check, which requires the usual hoop-jumping because it is either Firewire (what now?) or PATA. But I’m thinking those bits are lost to the ages. My own personal Library of Alexandria, and I’m Caesar.&lt;/p&gt;

&lt;p&gt;This mirrors a lot of how I seem to treat the information I’ve generated over the decades. In the past, I have deliberately purged notebooks full of writings in an effort to shed baggage and move on. But the old blog was different; it was always intended to be public. Personal, but very much intended for &lt;em&gt;everyone&lt;/em&gt; to read (for better or for worse).&lt;/p&gt;

&lt;p&gt;This is an unfortunately loss, if it is a loss. Perhaps I can salvage some of that from the Internet WayBack Machine? Honestly, I suspect only about 1% of the dataset I’m thinking of wants to be saved. It’s not like the world is missing another Socrates’ Rhetorics here.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Pithon Hacini</title>
   <link href="http://www.clevermonkey.org/daily/2015/09/18/pithon-hackini/"/>
   <updated>2015-09-18T14:37:00-04:00</updated>
   <id>daily-2015-09-18-pithon-hackini</id>
   <category term="daily"/>
   <summary>My daughter made a sign declaring when it is suitable for us to do some Python Hacking (“Pithon Hacini”):



Living with a 5-year old is often an exercise in time-management, leading us to experiment with various go/no-go signs related to when we need to do some work, or when TV is off limits, and so on. It appears she has internalized this mode of communication.

We decided this ought to be commemorated as a cocktail of some sort, and it needed to be a classic 1920s martini, with a twist. Well, not a “twist” because that isn’t classic. Anyway, we give you…

The Dirty Hacktini

  2 oz. gin
  0.5 oz. dry vermouth
  dash Fee Bros. Orange Bitters
  dash olive brine


Combine ingredients in a shaker with ice. Pour into a cocktail glass and garnish with an olive, a pickled “Perl” onion, and a gherkin (or a pickled hot pepper).
</summary>
   <content type="html">&lt;p&gt;My daughter made a sign declaring when it is suitable for us to do some &lt;a href=&quot;/coding/2015/08/27/learning-python-like-a-5-year-old/&quot;&gt;Python Hacking&lt;/a&gt; (“Pithon Hacini”):&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/21337147928/in/datetaken-public/&quot; title=&quot;Pithon Hacini&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/690/21337147928_5cb2d23e74.jpg&quot; width=&quot;500&quot; height=&quot;355&quot; alt=&quot;Pithon Hacini&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;Living with a 5-year old is often an exercise in time-management, leading us to experiment with various go/no-go signs related to when we need to do some work, or when TV is off limits, and so on. It appears she has internalized this mode of communication.&lt;/p&gt;

&lt;p&gt;We decided this ought to be commemorated as a cocktail of some sort, and it needed to be a classic 1920s martini, with a twist. Well, not a “twist” because that isn’t classic. &lt;em&gt;Anyway&lt;/em&gt;, we give you…&lt;/p&gt;

&lt;h3&gt;The Dirty Hacktini&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;2 oz. gin&lt;/li&gt;
  &lt;li&gt;0.5 oz. dry vermouth&lt;/li&gt;
  &lt;li&gt;dash Fee Bros. Orange Bitters&lt;/li&gt;
  &lt;li&gt;dash olive brine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Combine ingredients in a shaker with ice. Pour into a cocktail glass and garnish with an olive, a pickled “Perl” onion, and a gherkin (or a pickled hot pepper).&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Night of the Living Programmer</title>
   <link href="http://www.clevermonkey.org/daily/2015/09/14/night-of-the-living-programmer/"/>
   <updated>2015-09-14T15:13:00-04:00</updated>
   <id>daily-2015-09-14-night-of-the-living-programmer</id>
   <category term="daily"/>
   <summary>I’m not sure how I feel about today being Day of the Programmer. Perhaps because these days it feels more like Day of the Brogrammer or Night of the Living Programmer (perhaps depending on if your shop is Agile or not).

Maybe I’ll celebrate by showing up to one the Geek Week events this week. Tonight is something called HackerNest which refers to itself as a “tech social”. (I note that HackerNest is a very silly name, indeed, though I suppose silly names are very much part of programming culture.)

I’m not sold, yet, on any need to further discuss “tech” in this town, but perhaps I’ll be pleasantly surprised.

Perhaps.
</summary>
   <content type="html">&lt;p&gt;I’m not sure how I feel about today being &lt;a href=&quot;https://en.wikipedia.org/wiki/Day_of_the_Programmer&quot;&gt;Day of the Programmer&lt;/a&gt;. Perhaps because these days it feels more like Day of the Brogrammer or Night of the Living Programmer (perhaps depending on if your shop is Agile or not).&lt;/p&gt;

&lt;p&gt;Maybe I’ll celebrate by showing up to one the &lt;a href=&quot;https://geekweekwr.ca/&quot;&gt;Geek Week&lt;/a&gt; events this week. Tonight is something called &lt;a href=&quot;http://waterloo.hackernest.com/events/hackernest-kitchener-waterloo-september-tech-social-3/&quot;&gt;HackerNest&lt;/a&gt; which refers to itself as a “tech social”. (I note that HackerNest is a very silly name, indeed, though I suppose silly names are very much part of programming culture.)&lt;/p&gt;

&lt;p&gt;I’m not sold, yet, on any need to further discuss “tech” in this town, but perhaps I’ll be pleasantly surprised.&lt;/p&gt;

&lt;p&gt;Perhaps.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Embedded Device Zoo</title>
   <link href="http://www.clevermonkey.org/embedded-systems/2015/09/09/embedded-device-zoo/"/>
   <updated>2015-09-09T14:50:00-04:00</updated>
   <id>embedded-systems-2015-09-09-embedded-device-zoo</id>
   <category term="embedded-systems"/>
   <summary>While cleaning up my work area today I moved a bunch of electronics stuff around into different storage boxes. Since I had most of the turnkey embedded hobby systems out as part of that reorganization, I decided to take a photo of them.



</summary>
   <content type="html">&lt;p&gt;While cleaning up my work area today I moved a bunch of electronics stuff around into different storage boxes. Since I had &lt;em&gt;most&lt;/em&gt; of the turnkey embedded hobby systems out as part of that reorganization, I decided to take a photo of them.&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/21285543061/in/datetaken-public/&quot; title=&quot;Embedded Device Zoo&quot;&gt;&lt;img src=&quot;https://farm6.staticflickr.com/5685/21285543061_bd6884476c.jpg&quot; width=&quot;372&quot; height=&quot;500&quot; alt=&quot;Embedded Device Zoo&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clockwise from lower-left:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Texas Instruments &lt;a href=&quot;http://www.ti.com/tool/ez430-chronos&quot;&gt;MSP-eZ430U-based Chronos&lt;/a&gt; programmable digital watch (with wireless and direct-connection programming dongles)&lt;/li&gt;
  &lt;li&gt;STMicroelectronics &lt;a href=&quot;http://www.st.com/web/catalog/tools/FM116/CL1620/SC959/SS1532/LN1848/PF253215&quot;&gt;STM32F0DISCOVERY STM32F0 Cortex-M0 kit&lt;/a&gt; (I think I got this one for free just by asking for it)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.arduino.cc/en/Main/ArduinoBoardDuemilanove&quot;&gt;Arduino Duemilanove&lt;/a&gt; ATmega328p (with a well-hacked Adafruit bootloader)&lt;/li&gt;
  &lt;li&gt;Texas Instruments &lt;a href=&quot;http://www.ti.com/tool/EZ430-F2013&quot;&gt;eZ430-F2013&lt;/a&gt; USB development system (which I got for free when I went to a TI event)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://beagleboard.org/black&quot;&gt;BeagleBone Black&lt;/a&gt; revision B, currently running either Debian or Arch ARM (which I received in trade for a guitar amp)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Not shown:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;An Arduino-based &lt;a href=&quot;http://www.triggertrap.com/&quot;&gt;Triggertrap&lt;/a&gt; photography tool (a Kickstarter reward which doesn’t even seem to be a product anymore)&lt;/li&gt;
  &lt;li&gt;A &lt;a href=&quot;https://en.wikipedia.org/wiki/Lego_Mindstorms#RCX&quot;&gt;LEGO MINDSTORMS RCX&lt;/a&gt; brick that I usually hack on with &lt;a href=&quot;https://github.com/jverne/nqc&quot;&gt;my own fork of NQC&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I was originally going to turn the BeagleBone into a low-power edge box running Arch Linux, but that project was easier with some donated hardware and &lt;a href=&quot;http://www.dd-wrt.com/site/index&quot;&gt;DD-WRT&lt;/a&gt;. I think the plan is to turn it into a &lt;a href=&quot;http://www.bitscope.com/&quot;&gt;BitScope&lt;/a&gt; device once that is officially supported.&lt;/p&gt;

&lt;p&gt;The Chronos watch I’ve tweaked heavily, but the irony is I never wear a watch, so it sits in a box. It does occur to me now that the watch guts could easily be turned into a remote weather datalogger. So let’s put a pin in that idea.&lt;/p&gt;

&lt;p&gt;The Arduino is currently a KIM UNO KIM-1 (incomplete) software-only emulator &lt;a href=&quot;/retro-computing/2015/08/27/thoughts-on-a-kim-1-emulator/&quot;&gt;as discussed earlier&lt;/a&gt;. I’d like to get back to getting the KIM-1 RRIOT emulation more complete.&lt;/p&gt;

&lt;p&gt;The other two I’ve run the equivalent of “Hello World” on (&lt;em&gt;i.e.&lt;/em&gt;, made an LED flash). I’ve had idle thoughts about turning one or the other into a little bike computer of some sort.&lt;/p&gt;

&lt;p&gt;So, not exactly bursting with embedded activity over here, but a respectible collection that I’ve actually spent some time with. I might even have working toolchains for the majority of these devices.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>How to not Repair a Dinosaur</title>
   <link href="http://www.clevermonkey.org/retro-computing/2015/09/08/how-to-not-repair-a-dinosaur/"/>
   <updated>2015-09-08T22:02:00-04:00</updated>
   <id>retro-computing-2015-09-08-how-to-not-repair-a-dinosaur</id>
   <category term="retro-computing"/>
   <summary>As I mentioned in a previous post I have a dinosaur of a TRS-80 Model 100 that I’m trying to bring back to life.

The symptoms:



It responds to power by setting all the LCD pixels on except for that weird half column. Reset doesn’t seem do anything.

</summary>
   <content type="html">&lt;p&gt;As I mentioned in &lt;a href=&quot;/retro-computing/2015/09/02/retro-computing-the-last-refuge-of-the-scoundrel/&quot;&gt;a previous post&lt;/a&gt; I have a dinosaur of a &lt;a href=&quot;http://www.oldcomputers.net/trs100.html&quot;&gt;TRS-80 Model 100&lt;/a&gt; that I’m trying to bring back to life.&lt;/p&gt;

&lt;p&gt;The symptoms:&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/21233283076/in/datetaken-public/&quot; title=&quot;Slightly Dead Model 100&quot;&gt;&lt;img src=&quot;https://farm6.staticflickr.com/5725/21233283076_24791a5140.jpg&quot; width=&quot;500&quot; height=&quot;281&quot; alt=&quot;Slightly Dead Model 100&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;It responds to power by setting all the LCD pixels on except for that weird half column. Reset doesn’t &lt;em&gt;seem&lt;/em&gt; do anything.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Armed with nothing more than a copy of the original Tandy service manual I found on the internet, a cheap DMM, and three semesters of high school electronics shop education, I started troubleshooting today.&lt;/p&gt;

&lt;p&gt;And I’m pretty sure I’m going to need a ‘scope. All the easy voltage references check out, and the reset circuitry is setting things high and low when it ought to, and the CPU appears to be agreeing with these levels. And there aren’t any obvious physical signs of failure. Which leaves seeing if I can get a picture of things like clock cycles going into (and out) of the CPU, and LCD driver pulses.&lt;/p&gt;

&lt;p&gt;I’m almost positive that I’m going to eventually spring for a &lt;a href=&quot;http://bitscope.com/product/BS05/&quot;&gt;BitScope Micro&lt;/a&gt;. This is a nice cheap-and-cheerful solution that I can run via the Macbook, or the Arch Linux box in my basement workshop, or even standalone via a &lt;a href=&quot;http://bitscope.com/pi/&quot;&gt;Raspberry Pi&lt;/a&gt; (or, eventually, my BeagleBone). And, if my memory of how analog ‘scopes work, it has a sample rate and probes options necessary to get a decent picture of what this nearly dead computer is doing.&lt;/p&gt;

&lt;p&gt;I mean, the Model 100 runs at a max clock speed of 4.9152 MHz (or some division thereof) so it’s not like I have to freeze picosecond moments like a Time Lord here. And, well, the price is right, that’s for sure. For a weekend warrior like myself, it’s just right.&lt;/p&gt;

&lt;p&gt;But, for now, I think I’m stuck. I probably ought to spend some time collecting all these pieces into one handy box. And maybe try to find the missing hardware from the first time I took it apart.&lt;/p&gt;

&lt;p&gt;Which also makes it easy to ship as-is to an eBay victim if I decide to give up on all this nonsense.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Beware the Food Blogger</title>
   <link href="http://www.clevermonkey.org/food/2015/09/05/beware-the-food-blogger/"/>
   <updated>2015-09-05T17:11:00-04:00</updated>
   <id>food-2015-09-05-beware-the-food-blogger</id>
   <category term="food"/>
   <summary>Well, if there is anything a TRS-80 Model I emulator can’t do, it’s make a nice dinner.

Actually, taking a look at the old Model I software available on sharing sites, I suspect there are several menu and cookery applications. Convergence is a bit of a bitch, no? We’ve been trying to pull-start that engine for a few decades now.

</summary>
   <content type="html">&lt;p&gt;Well, if there is anything a TRS-80 Model I emulator &lt;em&gt;can’t&lt;/em&gt; do, it’s make a nice dinner.&lt;/p&gt;

&lt;p&gt;Actually, taking a look at the old Model I software available on sharing sites, I suspect there &lt;em&gt;are&lt;/em&gt; several menu and cookery applications. Convergence is a bit of a bitch, no? We’ve been trying to pull-start that engine for a few decades now.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anyway, it was time to switch gears and put some of this great &lt;a href=&quot;http://csafarms.ca/&quot;&gt;CSA farm&lt;/a&gt; food to better use. I’ve, sadly, let some of my hot peppers go soft and black, but my habañero is still good to go. So what to do with it?&lt;/p&gt;

&lt;p&gt;Wings! Wings of the magical chicken! From the market!&lt;/p&gt;

&lt;p&gt;So, yeah. I threw together a basic sweet and hot sauce using a blackened habeñero and garlic (&lt;a href=&quot;http://www.seriouseats.com/recipes/2011/01/habanero-barbecue-wings-recipe-super-bowl.html&quot;&gt;loosely based on this recipe&lt;/a&gt;), which will be the basis for an experiment in sticky, &lt;em&gt;super&lt;/em&gt; &lt;strong&gt;spicy&lt;/strong&gt; wings for dad. Mom gets her fave butter-and-milder-sauce, and the kiddo gets her special “Tangy” sauce from her own cookbook. Everyone is happy!&lt;/p&gt;

&lt;p&gt;Happy Labour Day Weekend, y’all. Stay spicy.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>HE WAS IN ROOM 10</title>
   <link href="http://www.clevermonkey.org/retro-computing/2015/09/04/he-was-in-room-10/"/>
   <updated>2015-09-04T00:39:00-04:00</updated>
   <id>retro-computing-2015-09-04-he-was-in-room-10</id>
   <category term="retro-computing"/>
   <summary>Apparently, there was a WUMPUS v2.0 for the TRS-80 Model I.



</summary>
   <content type="html">&lt;p&gt;Apparently, there was a WUMPUS v2.0 for the &lt;a href=&quot;http://www.oldcomputers.net/trs80i.html&quot;&gt;TRS-80 Model I&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/clvrmnky/21136804611/in/datetaken-public/&quot; title=&quot;WUMPUS II on a TRS-80 Model I&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/683/21136804611_120f0876a8_m.jpg&quot; width=&quot;320&quot; height=&quot;259&quot; alt=&quot;wumpus&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apparently, I am able to &lt;a href=&quot;http://sdltrs.sourceforge.net&quot;&gt;emulate&lt;/a&gt; a decent enough TRS-80 Model I on a Mac well enough to run it from a virtual floppy via LDOS 5.3.1.&lt;/p&gt;

&lt;p&gt;I didn’t show a screencap of &lt;a href=&quot;http://www.millermicro.com/mmsforth.html&quot;&gt;MMS Forth&lt;/a&gt; running on the same emulator. Too geeky.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Two Great Tastes</title>
   <link href="http://www.clevermonkey.org/work/2015/09/03/two-great-tastes/"/>
   <updated>2015-09-03T14:04:00-04:00</updated>
   <id>work-2015-09-03-two-great-tastes</id>
   <category term="work"/>
   <summary>There is a very interesting article about Agile methodologies as labour unions over at West Space Journal. I’m still making my way through it (it isn’t particularly long, but I’ve been… distracted) but I wanted to get some ideas down while they are fresh in my mind.

</summary>
   <content type="html">&lt;p&gt;There is a very &lt;a href=&quot;http://www.westspacejournal.org.au/article/the-agile-union/&quot;&gt;interesting article about Agile methodologies as labour unions&lt;/a&gt; over at West Space Journal. I’m still making my way through it (it isn’t particularly long, but I’ve been… &lt;em&gt;distracted&lt;/em&gt;) but I wanted to get some ideas down while they are fresh in my mind.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But, you should read that article I linked to. I’ll wait here whilst you do so.&lt;/p&gt;

&lt;p&gt;The notion that Agile can be interpreted as the closest thing working coders have to a labour union is a compelling one. I’ve long thought that Agile was about protecting the Team from the vagaries of management and scheduling. This was something I keyed into early when first working for a company that was adopting an Agile methodology as a corporate standard. The ability to meet company demands using an agreed upon convention, and Agile-as-conversation was something that I saw early on as a real benefit compared to other team and scheduling methodologies I’d been exposed to.&lt;/p&gt;

&lt;p&gt;I also found it very telling that even when everyone buys into Agile at a company, there are diverse ideas of how to go about &lt;em&gt;doing&lt;/em&gt; Agile in a day-to-day manner. For example, I often found myself not making new friends among management when I suggested to Product Owners that they were welcome to attend a specific meeting, but that they were not there as stakeholders or participants. To me, a place where the Team could go away and come up with a cohesive plan as part of the Agile conversation was sancrosanct; having a PO there as an active participant was not only against the “rules”, it was contrary to the whole agreement of Agile.&lt;/p&gt;

&lt;p&gt;Few POs wanted to hear this, especially technical POs who could not let go of their own ideas of how a Story should or could be broken down, and the cost of Tasks. These are Team notions, and I immediately saw the value of keeping these Team notions.&lt;/p&gt;

&lt;p&gt;But I did not make the immediate connection of Agile to labour movements until I saw how this article broke down parts of the Agile Manifesto (well, the fact that both Agile and Labour are famous for their manifestos should have been a rather large hint) in order to compare and contrast with historical trade and labour concepts.&lt;/p&gt;

&lt;p&gt;For example, it is obvious now that I’ve read it, but the whole idea of specialization vs. generalization and the neo-modern notions of “ownership” and separation of concerns in traditional methodologies borrowed from factory and mega-project management are one of the key ways Agile can be read as trade unionism.&lt;/p&gt;

&lt;p&gt;The irony, of course, is that Agile is steeped in the nomenclature and assumptions of neo-liberal, libertarian, new-economy philosophy. In this manner, one could argue, the values and desires of The Corporation are used to, in effect, introduce collective bargaining into the mix. Almost without anyone on either side of the conversation noticing.&lt;/p&gt;

&lt;p&gt;Well, at first.&lt;/p&gt;

&lt;p&gt;In the years since Agile took the world by storm, it feels more and more like it is being watered down and eroded pretty quickly. Many companies have shoe-horned most of their Agile teams into a Frankenstein’s monster of Waterfall-with-Scrum, Stories-as-Requirements. Not only have we started to treat Agile as a buffet, we’ve made it all-you-can-eat and stocked the buffet with never-ending variations on deep-fryed, cogs-in-a-machine development.&lt;/p&gt;

&lt;p&gt;The front-end stuff goes to the front-end developers, the service guys keep working on the services, and the mightly waterfall keeps falling. It’s not always a death-march, of course. And maybe Agile was doomed all along.&lt;/p&gt;

&lt;p&gt;But, maybe it was doomed not because it was a particularly bad idea, but because it is actually at odds with the New Economy management wonks.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Retro-computing, the Last Refuge of the Scoundrel</title>
   <link href="http://www.clevermonkey.org/retro-computing/2015/09/02/retro-computing-the-last-refuge-of-the-scoundrel/"/>
   <updated>2015-09-02T14:59:00-04:00</updated>
   <id>retro-computing-2015-09-02-retro-computing-the-last-refuge-of-the-scoundrel</id>
   <category term="retro-computing"/>
   <summary>Because I can’t seem to get enough of 1980s high-technology, I’ve decided to attempt to resurrect a TRS-80 Model-100 I inherited years ago. Unfortunately, I made a classic rookie mistake by not properly putting it back together the last time I looked at it, so now I may have misplaced all the hardware that keeps it together.

</summary>
   <content type="html">&lt;p&gt;Because I can’t seem to get enough of 1980s high-technology, I’ve decided to attempt to resurrect a &lt;a href=&quot;http://www.oldcomputers.net/trs100.html&quot;&gt;TRS-80 Model-100&lt;/a&gt; I inherited years ago. Unfortunately, I made a classic rookie mistake by not properly putting it back together the last time I looked at it, so now I may have misplaced all the hardware that keeps it together.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Assuming I can find the &lt;em&gt;specific&lt;/em&gt; plastic 35mm film canister I recall stuffing the screws and other fasteners I removed from it earlier, hopefully I’ll be able to fix it &lt;em&gt;and&lt;/em&gt; put it back together enough to surf the web at 300 baud and code in Microsoft BASIC v1.1 (which was authored by some unknown coder who calls himself “Bill Gates”) in short order.&lt;/p&gt;

&lt;p&gt;(As an historical aside, I was semi-famous my senior year of high school for using one of these to take notes in class. I may have been the first person in my school to have done this sort of thing. My final grades in Canadian History and English 300 were well above average [for me] that year! I fully admit I did some light BASIC hacking in some of those classes; if those grades suffered, I made up for it in Computer Science 305. [It’s just too bad I was convinced to &lt;em&gt;not&lt;/em&gt; go into Software Engineering on Career Day, but that is a story for another post!])&lt;/p&gt;

&lt;p&gt;Luckily, &lt;a href=&quot;http://www.club100.org/&quot;&gt;there are other folks out there with similar interests&lt;/a&gt; such that I was able to get my paws on two different service manuals for the Model 100. Even more lucky for me, it was written with the complete novice in mind, with troubleshooting flowcharts and what-not to aid the technician in finding out why the thing won’t go.&lt;/p&gt;

&lt;p&gt;In this case, “won’t go” means “appears to power up, but only displays a bar across a single column of the display”. I’ve already verified some basic voltages and so on, and my fear is that we are on to the part of the manual where I need to start ‘scoping out waveforms. With the oscilloscope I don’t have.&lt;/p&gt;

&lt;p&gt;I don’t need any excuse to buy a ‘scope, and I don’t need an excuse to &lt;a href=&quot;http://www.catb.org/~esr/jargon/html/Y/yak-shaving.html&quot;&gt;shave more yaks&lt;/a&gt; turning my Arduino or &lt;a href=&quot;http://www.instructables.com/id/Use-Your-Laptop-as-Oscilloscope/&quot;&gt;my lappy into a ‘scope&lt;/a&gt;. But I might &lt;em&gt;have&lt;/em&gt; to.&lt;/p&gt;

&lt;p&gt;The end goal here is simple: earn the &lt;a href=&quot;http://retro.hackaday.com/Success/index.html&quot;&gt;Hack a Day Retro success&lt;/a&gt; achievement badge&lt;strong&gt;[esc]5Xi&lt;/strong&gt;t-shirt.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Web Design is Hard</title>
   <link href="http://www.clevermonkey.org/site-info/2015/08/30/web-design-is-hard/"/>
   <updated>2015-08-30T00:00:00-04:00</updated>
   <id>site-info-2015-08-30-web-design-is-hard</id>
   <category term="site-info"/>
   <summary>I keep tinkering with the layout and style of this site because I can’t quite get what I want. I messed around with a few Jekyll site generators, and stole some ideas from other GitHub Pages, but I couldn’t quite get what I wanted.

I learned a lot from poking about in other GitHub Pages, but at the end of the day many of these even simple sites do a little too much; or they do too much I don’t understand. Like many people, I needed to bring up my site from scratch so I grokked as much as I needed to.

</summary>
   <content type="html">&lt;p&gt;I keep tinkering with the layout and style of this site because I can’t quite get what I want. I messed around with a few Jekyll site generators, and stole some ideas from other GitHub Pages, but I couldn’t quite get what I wanted.&lt;/p&gt;

&lt;p&gt;I learned a lot from poking about in other GitHub Pages, but at the end of the day many of these even simple sites do a little too much; or they do too much I don’t understand. Like many people, I needed to bring up my site from scratch so I grokked as much as I needed to.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I ran into &lt;a href=&quot;http://www.w3schools.com/w3css/default.asp&quot;&gt;the W3 Schools W3.CSS tutorial&lt;/a&gt; which isn’t really about beautiful pages, but it gave me enough to grab onto so I could leverage what I already know to make The Clever Monkey somewhat responsive and somewhat HTML5 semantically sane. Along the way I figured out much of what I need to know to get Jekyll and Liquid templating working, and found a nice set of plain icons hosted on a CDN by &lt;a href=&quot;https://fortawesome.github.io/Font-Awesome/&quot;&gt;Font Awesome&lt;/a&gt; (thanks guys!) so I don’t even have to rescale the usual AIGA sign images I’ve been using for “decoration” on the old site.&lt;/p&gt;

&lt;p&gt;So, here it is, in all it’s single column, blue-grey, sans-serif glory.&lt;/p&gt;

&lt;p&gt;I still really like to learn how to make things a bit more beautiful, especially with regards to my rather busy article view. For example, it might be nice to have the article across columns, so tags and other metadata could be rendered next to the text instead of at the bottom. But one step at a time.&lt;/p&gt;

&lt;p&gt;I still need to write a few Liquid template files to grok the Categories and Tags views and counts (and, you know, actually use categories) which might require some refactoring.&lt;/p&gt;

&lt;p&gt;But, I think we are firmly into the &lt;em&gt;beta&lt;/em&gt; stage of The Clever Monkey. Yay?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Learning Python Like a Five Year Old</title>
   <link href="http://www.clevermonkey.org/coding/2015/08/27/learning-python-like-a-5-year-old/"/>
   <updated>2015-08-27T10:48:00-04:00</updated>
   <id>coding-2015-08-27-learning-python-like-a-5-year-old</id>
   <category term="coding"/>
   <summary>I’ve been putting off learning Python for a few years now. In some double irony, someone I met on an IRC channel dedicated to Perl is a big fan, and has been prodding me to learn it for nearly as many years.

Recently, though, someone got my 5-year old daughter a classic Spirograph toy for her birthday, and she loves it. It got me to thinking that programming a version of Spirograph might be a neat project, and that led to me to old-school Logo turtle graphics, which led me to an O’Reilly webcast based on the book Teach Your Kids to Code. All roads lead to O’Reilly, I suppose.

</summary>
   <content type="html">&lt;p&gt;I’ve been putting off learning Python for a few years now. In some double irony, someone I met on an IRC channel dedicated to Perl is a big fan, and has been prodding me to learn it for nearly as many years.&lt;/p&gt;

&lt;p&gt;Recently, though, someone got my 5-year old daughter a classic &lt;a href=&quot;https://en.wikipedia.org/wiki/Spirograph&quot;&gt;Spirograph&lt;/a&gt; toy for her birthday, and she loves it. It got me to thinking that programming a version of Spirograph might be a neat project, and that led to me to old-school Logo turtle graphics, which led me to an O’Reilly webcast based on the book &lt;a href=&quot;https://www.nostarch.com/teachkids&quot;&gt;Teach Your Kids to Code&lt;/a&gt;. All roads lead to O’Reilly, I suppose.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I then realized that I’d be reinventing the wheel writing such an application, especially when there is a perfectly good &lt;a href=&quot;https://docs.python.org/3.5/library/turtle.html&quot;&gt;Python turtle graphics library&lt;/a&gt; to leverage, and entire books on the subject.&lt;/p&gt;

&lt;p&gt;So, we (my daughter and I) are working our way through the aforementioned &lt;em&gt;Teach Your Kids to Code&lt;/em&gt; book, making little changes to colours and rules and so on. It’s fun!&lt;/p&gt;

&lt;p&gt;This has had two results so far, that I have noticed:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I am actually learning Python, both how to code like a Python coder and also how to make Python go on OS X and Linux. (In fact, the former was a real challenge, as OS X already has Python 2 installed, and installing Python 3 such that Tcl/Tk and idle3 was layed down properly was a bit of a chore.)&lt;/li&gt;
  &lt;li&gt;My daughter now asks, out of the blue and in public, “daddy, can we do some Python hacking?”, which is a geeky parenting &lt;strong&gt;win&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Up to now, the concept of coding has been a bit opaque to her, given that the intersection of code and fun she has been exposed to has been the rather tweaky &lt;a href=&quot;https://github.com/jverne/nqc&quot;&gt;NQC&lt;/a&gt; programs I’ve written for our LEGO robot projects. (Or watching me hack C++ for my cash money.) Which is to say, not very much exposure at all.&lt;/p&gt;

&lt;p&gt;So, once I write this, we are back to ch. 2 of the book, exploring more of the ways we can make Python draw nice pictures. Maybe I’ll capture some of the winners and post them here.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Thoughts on a KIM-1 Emulator</title>
   <link href="http://www.clevermonkey.org/retro-computing/2015/08/27/thoughts-on-a-kim-1-emulator/"/>
   <updated>2015-08-27T10:02:00-04:00</updated>
   <id>retro-computing-2015-08-27-thoughts-on-a-kim-1-emulator</id>
   <category term="retro-computing"/>
   <summary>So, nobody has really made a fully binary compatible KIM-1 software emulator.

KIM Uno KIM-on-an-Arduino project is really cool, and highly accessible. It does 96% of what needs to be done, even without hardware. The MAME/MESS mess is an approximation, but it doesn’t do single-stepping, which is pretty much the best thing about the KIM-1. And it really doesn’t behave like a KIM-1. I even found an old Palm III emulator that is actually pretty close, but it does not pass the acid test.

</summary>
   <content type="html">&lt;p&gt;So, nobody has &lt;em&gt;really&lt;/em&gt; made a fully binary compatible &lt;a href=&quot;http://www.oldcomputers.net/kim1.html&quot;&gt;KIM-1&lt;/a&gt; software emulator.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://obsolescence.wix.com/obsolescence#!kim-uno-summary/c1uuh&quot;&gt;KIM Uno&lt;/a&gt; KIM-on-an-&lt;a href=&quot;http://arduino.cc&quot;&gt;Arduino&lt;/a&gt; project is really cool, and highly accessible. It does 96% of what needs to be done, even without hardware. The &lt;a href=&quot;http://www.mess.org/&quot;&gt;MAME/MESS&lt;/a&gt; mess is an approximation, but it doesn’t do single-stepping, which is pretty much the best thing about the KIM-1. And it really doesn’t behave like a KIM-1. I even found an old Palm III emulator that is actually pretty close, but it does not pass the acid test.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Where by “acid test” I mean “does it play &lt;a href=&quot;https://en.wikipedia.org/wiki/Hunt_the_Wumpus&quot;&gt;WUMPUS&lt;/a&gt;?”&lt;/p&gt;

&lt;p&gt;Because of how the KIM-1 was designed, the intention was to give the engineer a pretty complete turnkey solution that would highlight the features of the &lt;a href=&quot;https://en.wikipedia.org/wiki/MOS_Technology&quot;&gt;MOS&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/MOS_Technology_65xx&quot;&gt;65xx&lt;/a&gt; family of &lt;a href=&quot;https://en.wikipedia.org/wiki/CMOS&quot;&gt;CMOS&lt;/a&gt; processors. And it does this admirably. So well, in fact, that people just bought them to do the work the MOS expected them to design new boards for.&lt;/p&gt;

&lt;p&gt;So a full emulation requires emulating not just the CPU and registers and ROM, all of which appears to be pretty straightforward. It also requires emulating the two 6530 &lt;a href=&quot;https://en.wikipedia.org/wiki/MOS_Technology_RRIOT&quot;&gt;RRIOTs&lt;/a&gt; that provided the IO and timer capabilities they were demonstrating. And WUMPUS needs a working timer. (Perhaps for its sucker feet?) As a very novice hardware hacker, I have been thinking long and hard about how to emulate this rather strange memory map, where a single block of memory can contain ROM, RAM, IO, and timer interfaces across two different discrete devices. I’m going to go ahead and assume this is a &lt;strong&gt;hard&lt;/strong&gt; problem, because so many folks have just ignored it. Or returned a random value for the timer (because some games just used the current timer value as a random seed (yes, I know… it was the mid 70s; cut us some slack).&lt;/p&gt;

&lt;p&gt;But WUMPUS actually needs a working timer. And while I’m not sure I’m the person to provide that timer, my mind keeps turning on how one might emulate this in software. Does it need to be a separate task? Probably. And the “ticks” it makes need to match the 1Mhz speed that 6502 implementations ran at, at least as a master clock, which can then be divided down based on what is stored in specific RAM locations within the RIOT. How to handle the second timer that raises an interrupt?&lt;/p&gt;

&lt;p&gt;These are actually &lt;em&gt;very&lt;/em&gt; foreign notions to a high-level maintenance coder like myself, though they touch on concurrency and interruptibility in ways very similar to how the latest concurrent tools work. I suppose it is because I recognize this problem as solvable that it interests me. It is a hard problem, but not intractible.&lt;/p&gt;

&lt;p&gt;And it gives me hope for running WUMPUS on my Arduino.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Is This Thing On?</title>
   <link href="http://www.clevermonkey.org/site-info/2015/08/26/is-this-thing-on/"/>
   <updated>2015-08-26T16:18:00-04:00</updated>
   <id>site-info-2015-08-26-is-this-thing-on</id>
   <category term="site-info"/>
   <summary>While researching hosting a CMS (again) for @CarmenNave I ran across a very smart article about ditching the CMS model altogether for small personal sites.

Like many coders, I was in love with building a solution based on their pet technology (in my case, I wanted an excuse to make a Linux [well, DD-WRT], Lua, Lighttpd, SQLite thingy) but I also knew that I wanted something lighter weight and easier to maintain.

Well, what could be more lightweight than letting GitHub host static pages underpinned by Jekyll and decent templating? When I looked at Jekyll the first time I liked it, but I didn’t want to go down the road of hosting it locally if I had to build a front-end (I’m afraid of Javascript!) that was necessary for non-git-command-line-using folks.

</summary>
   <content type="html">&lt;p&gt;While researching hosting a CMS (again) for @CarmenNave I ran across a &lt;a href=&quot;https://developmentseed.org/blog/2012/07/27/build-cms-free-websites/&quot;&gt;very smart article about ditching the CMS model altogether&lt;/a&gt; for small personal sites.&lt;/p&gt;

&lt;p&gt;Like many coders, I was in love with building a solution based on their pet technology (in my case, I wanted an excuse to make a Linux [well, DD-WRT], Lua, Lighttpd, SQLite thingy) but I also knew that I wanted something lighter weight and easier to maintain.&lt;/p&gt;

&lt;p&gt;Well, what could be more lightweight than letting GitHub host static pages underpinned by Jekyll and decent templating? When I looked at Jekyll the first time I liked it, but I didn’t want to go down the road of hosting it locally if I had to build a front-end (I’m afraid of Javascript!) that was necessary for non-git-command-line-using folks.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But simply adding the lightest front-end in the form of &lt;a href=&quot;http://prose.io&quot;&gt;Prose.io&lt;/a&gt; sealed the deal. Since my blog has been languishing on a dying OpenBSD/mini-ITX edge-box, and then moved (sort of) to Tumblr, why not give it a try and then use that as a model for Carmen?&lt;/p&gt;

&lt;p&gt;So, yeah. I’m not done yet. I have to decided how much, if any, of the content from the old clevermonkey.org site I want to import. I obviously have to learn HTML5, Liquid, and CSS.&lt;/p&gt;

&lt;p&gt;But, being able to add content via Prose.io to a GitHub Pages site that auto-builds as necessary is a win, and that is why this site is live. I’m writing this via Prose.io right now, and it is pretty slick.&lt;/p&gt;

&lt;p&gt;So, lots is going to change, and even more is going to appear a little dead. But the plan at this stage is for this to be the new home of clevermonkey.org.&lt;/p&gt;

&lt;p&gt;Consider it part of a life in progress.&lt;/p&gt;
</content>
 </entry>
 

</feed>