Author: jedreynolds

About jedreynolds

A programmer that has adopted an all-weather bicycle commuting lifestyle.

Parenting and Teaching Programming

At what level of programming are we actually imparting the philosophy of human thought? Or, another way, a basic program that prints out a few numbers is truly trivially basic: it merely teaches some programming syntax. However, contrast your smartphone apps to your old DOS/Windows apps. A significan understanding of human haptics and intuition have been codified into the most basic of smart phone apps where your DOS applications might still be more closely related to punch-cards.

Episode 27 of Bad Voltage takes a fascinating turn in the middle of the episode where these parents stop discussing technology in terms of quantifiable capacities and start talking about the philisophical benefits to young programmers. Jono Bacon quotes a collegue:

Programming is smulating how we thing. Teaching programming is teaching a meta-level of how we [make decisions].

And then Bryan Lunduke chimes in with Scratch, a simple programming environment suitable for younger children.

Please teach your kids, especially your girls, how to code. I firmly believe that this is not just a job skill, but an introduction to logic and analysis that is more tangible than any calculus tought, ever. And don’t brag to me about how you used an interval to compute the average runoff from a forested watershed, you’re showing off. You thouch your phone 120 times a day and you’re entirely dependent on it. If you can boil water and put peanut butter on bread, you can program, so stop raising your hands about how difficult it is. Our children will lead lives where software will decide their salaries, their health insurance, their academic opportunities and how they are promoted and ultimately how they promote themselves through life.

Please listen to that episode and tell me why you are not introducing your kids to computer programming.

Tweed ride thots

Thots on 2015 tweed ride possibilities

Non-facebook page. FB is convenient but not all-inclusive. Blog?

- historically appropriate venue: Roeder Home
– keg
– invite a photographer with a field camera (WCC) with polariod back
and demonstrate a phosphorous flash
– kids crafts table before hand
– start ride at library?
– have handouts on historical spots (not all, just a one or two between parks)
– contra dancing or banjo at final stop
– bbq for food
– judges for best bike, kids bike, best costume, best kids costume, best blog story
– a stop in Fairhaven, and a story from the Bham Bureau Historical Investiations?
– Before-hand crafting table near farmers market:
. yarn mustaches
. paper top hats
. round framed glasses
. bike mustache badges

- flyers
– earlier notification
– tea and scones for snack (sip-t?)
– bellingham radio museum display, old time radio music? (who does the sat/sun radio show)?
– parasols?

Crazy Perl Day

I’m surprised that this is the first time in Perl that I’ve bothered to use the posix character class [:alnum:]. Check this nuttiness out:

($::port_name, $::first_port, $::last_port) = 
  $::port_range =~ 

Yeah…it’s better with coffee.

My Pogoplug Thinks its in China?

I think I have to set a regulatory domain for my usb ath9k module because it appears to think it is in CN, which I’m assuming is China.

[   43.313192] usb 1-1: ath9k_htc: Firmware htc_9271.fw requested
[   43.331335] usbcore: registered new interface driver ath9k_htc
[   43.588793] cfg80211: World regulatory domain updated:
[   43.593951] cfg80211:  DFS Master region: unset
[   43.599250] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[   43.607671] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[   43.615102] cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[   43.622493] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm)
[   43.629915] usb 1-1: ath9k_htc: Transferred FW: htc_9271.fw, size: 51272
[   43.637976] cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm)
[   43.645347] cfg80211:   (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm)
[   43.652887] cfg80211:   (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm)
[   43.860765] ath9k_htc 1-1:1.0: ath9k_htc: HTC initialized with 33 credits
[   44.106890] ath9k_htc 1-1:1.0: ath9k_htc: FW Version: 1.3
[   44.118169] ath: EEPROM regdomain: 0x809c
[   44.118191] ath: EEPROM indicates we should expect a country code
[   44.118204] ath: doing EEPROM country->regdmn map search
[   44.118215] ath: country maps to regdmn code: 0x52
[   44.118227] ath: Country alpha2 being used: CN
[   44.118236] ath: Regpair used: 0x52
[   44.199766] ieee80211 phy0: Atheros AR9271 Rev:1
[   44.204557] cfg80211: Calling CRDA for country: CN
[   44.365621] cfg80211: Regulatory domain changed to country: CN
[   44.402441] cfg80211:  DFS Master region: unset
[   44.414598] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[   44.441649] cfg80211:   (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[   44.469124] cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2300 mBm)
[   44.476498] cfg80211:   (5250000 KHz - 5330000 KHz @ 80000 KHz), (N/A, 2300 mBm)
[   44.538122] cfg80211:   (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 3000 mBm)
[   44.545497] cfg80211:   (57240000 KHz - 59400000 KHz @ 2160000 KHz), (N/A, 2800 mBm)
[   44.614301] cfg80211:   (59400000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 4400 mBm)
[   44.638095] cfg80211:   (63720000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 2800 mBm)

This can be changed with /sbin/iw reg set US. Once I did that, I got a lot more features listed with iw list:

root@pogoplug:/etc/modprobe.d# iw list
Wiphy phy0
	Band 1:
		Capabilities: 0x116e
			SM Power Save disabled
			RX HT20 SGI
			RX HT40 SGI
			RX STBC 1-stream
			Max AMSDU length: 3839 bytes
		Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
		Minimum RX AMPDU time spacing: 8 usec (0x06)
		HT TX/RX MCS rate indexes supported: 0-7
			* 2412 MHz [1] (20.0 dBm)
			* 2417 MHz [2] (20.0 dBm)
			* 2422 MHz [3] (20.0 dBm)
			* 2427 MHz [4] (20.0 dBm)
			* 2432 MHz [5] (20.0 dBm)
			* 2437 MHz [6] (20.0 dBm)
			* 2442 MHz [7] (20.0 dBm)
			* 2447 MHz [8] (20.0 dBm)
			* 2452 MHz [9] (20.0 dBm)
			* 2457 MHz [10] (20.0 dBm)
			* 2462 MHz [11] (20.0 dBm)
			* 2467 MHz [12] (disabled)
			* 2472 MHz [13] (disabled)
			* 2484 MHz [14] (disabled)
		Bitrates (non-HT):
			* 1.0 Mbps
			* 2.0 Mbps (short preamble supported)
			* 5.5 Mbps (short preamble supported)
			* 11.0 Mbps (short preamble supported)
			* 6.0 Mbps
			* 9.0 Mbps
			* 12.0 Mbps
			* 18.0 Mbps
			* 24.0 Mbps
			* 36.0 Mbps
			* 48.0 Mbps
			* 54.0 Mbps
	max # scan SSIDs: 4
	max scan IEs length: 2257 bytes
	Coverage class: 0 (up to 0m)
	Supported Ciphers:
		* WEP40 (00-0f-ac:1)
		* WEP104 (00-0f-ac:5)
		* TKIP (00-0f-ac:2)
		* CCMP (00-0f-ac:4)
		* CMAC (00-0f-ac:6)
	Available Antennas: TX 0x1 RX 0x1
	Configured Antennas: TX 0x1 RX 0x1
	Supported interface modes:
		 * IBSS
		 * managed
		 * AP
		 * AP/VLAN
		 * monitor
		 * mesh point
		 * P2P-client
		 * P2P-GO
	software interface modes (can always be added):
		 * AP/VLAN
		 * monitor
	valid interface combinations:
		 * #{ managed, P2P-client } <= 2, #{ AP, mesh point, P2P-GO } <= 2,
		   total <= 2, #channels <= 1
	Supported commands:
		 * new_interface
		 * set_interface
		 * new_key
		 * new_beacon
		 * new_station
		 * new_mpath
		 * set_mesh_params
		 * set_bss
		 * authenticate
		 * associate
		 * deauthenticate
		 * disassociate
		 * join_ibss
		 * join_mesh
		 * remain_on_channel
		 * set_tx_bitrate_mask
		 * action
		 * frame_wait_cancel
		 * set_wiphy_netns
		 * set_channel
		 * set_wds_peer
		 * Unknown command (84)
		 * Unknown command (87)
		 * Unknown command (85)
		 * Unknown command (89)
		 * Unknown command (92)
		 * Unknown command (104)
		 * connect
		 * disconnect
	Supported TX frame types:
		 * IBSS: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
		 * managed: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
		 * AP: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
		 * AP/VLAN: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
		 * mesh point: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
		 * P2P-client: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
		 * P2P-GO: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
		 * Unknown mode (10): 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
	Supported RX frame types:
		 * IBSS: 0x40 0xb0 0xc0 0xd0
		 * managed: 0x40 0xd0
		 * AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
		 * AP/VLAN: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
		 * mesh point: 0xb0 0xc0 0xd0
		 * P2P-client: 0x40 0xd0
		 * P2P-GO: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
		 * Unknown mode (10): 0x40 0xd0
	Device supports RSN-IBSS.
	HT Capability overrides:
		 * MCS: ff ff ff ff ff ff ff ff ff ff
		 * maximum A-MSDU length
		 * supported channel width
		 * short GI for 40 MHz
		 * max A-MPDU length exponent
		 * min MPDU start spacing
	Device supports TX status socket option.
	Device supports HT-IBSS.

Wow, that’s a lot better! But does it survive a restart? This post describes how to update crda (udev rules) and hostapd.conf.


  1. add country_code=US to hostapd.conf.
  2. Edit /etc/default/crda so that REGDOMAIN=US
  3. Edit /etc/modules.d/cfg80211.conf and add “options cfg80211 ieee80211_regdom=US”

This is not a simple thing. I think I might have a busted regulatory.bin file?

SourceForge is making Open Source Look Like a Scam

Not only when I download something from SourceForge these days am I presented a proxy-downloader that tries to sell me on installing some unsolicited system utility — like a browser home page take over — it manages to install some other bullshit system utilities as well. Holy shit. This is not the Sourceforge I used to use. It is seriously WASTING MY TIME and making me HATE free (as in beer) software on Windows! Can’t they tell how much they are pissing in the well?

All I wanted to do was install Filezilla. Now I have crap to uninstall as well. Who at OSDL or FSDL or do I have to strangle to stop this?

Update: Malwarebytes just popped up and said it blocked some malware. It started scanning and found four new bits of badness on my filesystem and asked me to reboot. Sure.

IntelliJ configuration notes on using HugePages

Java has supported Linux Hugepages for a while, but it is not on by default. I like to squeeze the most performance out of my IDE so I turned it on. And here are the settings I used for Intellij now:

> cat idea64.vmoptions

Pogoplug now running hostapd

I was not anticipating it not being able to reach channel 11, so I set it to channel 1. Also, it cannot do 802.11n, so I set it to 802.11g. My cell phone seems to be able to use it.

Also, for some reason, my pogoplug syncs up to the same switch better than my laptop does. Using iperf on my laptop, I get a max of 95Mbps, yet on my pogoplug I get 180Mbps over the LAN. That is just too wierd.

Hostapd : The Linux Way to create Virtual Wifi Access Point


This is more than I need to do, since I already have a dhcp server of on my beaglebone black, but the basic hostapd configuration is pretty neat.

Originally posted on Foo, Bar and Foobar:

NOTE: Although this guide should work in most cases, it is not flawless and still requires few minor modifications to make the process bug-free. Please do point out corrections and changes.

(After you are done with this post, please do checkout my Python Hostapd Client)

I was recently looking into ways to use my laptop’s wifi adapter as a wireless access point to enable my phone (Nokia E63) and playstation portable to connect to the internet through it. Ad-hoc feature may be used to share internet through wifi, but it doesn’t work with many phones and my PSP. I found connectify and virtual router for Windows which served this purpose, unsatisfactorily. Other than the reasons like Virtual Router not detecting my 3g modem and Connectify (free version) not allowing me to set desired ssid for my virtual access point, the biggest issue with these two was the limited modes…

View original 1,361 more words