Fixing IPv6-only issues in Ubuntu

Recently some local coffee shops have seemingly begun to use routers provided by the ISP which hand out IPv6 addresses. Nobody else seems to have issues with this (even my phone seems fine) but my laptop is unhappy with the situation.

Initial debugging via ifconfig shows that I am only getting IPv6 addresses (no IPv4 addresses on the WiFi interface) and apparently the ISP does not have any 6to4 gateways or carrier-grade NAT configured because I can access IPv6-enabled websites like http://www.yahoo.com and http://www.google.com but not my own IPv4-only sites. Also obviously the ping, traceroute, and nslookup commands stop working as normal because of the ping6, traceroute6, and AAAA records instead of A records in nslookup.

Last time I came to this cafe I solved the problem by using some random 6to4 gateways online, which ended up working but was a massive pain.

This time, I poked around more (nothing seems to come up on Google) and ended up clicking the “Require IPv4 addressing for this connection to complete” and “Require IPv6 addressing for this connection to complete” checkboxes. That was the trick. Apparently Ubuntu gives up on finding addresses once it gets its first address, and apparently BOTH checkboxes need to be clicked on networks like this in order to actually work.

Advertisements

Chromium / Chrome 53 Users seeing Certificate Transparency errors this week (Nov 10 ish)

If you’re seeing random sites pop up with transparency warnings, it’s due to a new Chrome rollout of that requirement. However they’ve allegedly rolled it back, but Chromium users may be stuck on the strict version.

https://bugs.launchpad.net/ubuntu/+source/chromium-browser/+bug/1641380

https://bugs.chromium.org/p/chromium/issues/detail?id=664177

https://knowledge.symantec.com/support/ssl-certificates-support/index?page=content&id=ALERT2160&pmv=print&actp=PRINT

https://sslmate.com/blog/post/ct_redaction_in_chrome_53

 

If You Give a User a WYSIWYG

Homemade WYSIWYG installations as part of homemade blog engines or CMSes remind me of that children’s book, “If You Give a Mouse a Cookie.”

If you give a user a blog_posts database table and three form fields, they’re going to want to format things… like bold, headline, paragraphs, and links.

If you give them a way to format things, they’re going to want it to be WYSIWYG.

If you give them a WYSIWYG, Continue reading

California DMV improvement suggestions

I left our first DMV appointment practically empty-handed despite being a 30-year-old college-educated web programmer, and spending probably two hours researching and preparing for our DMV visit.
If I got confused and forgot some necessary documents, I’m sure it’s nearly impossible for most people who don’t know what to do when links don’t take you straight to the right section or have trouble parsing complicated lists of requirements.
Check out Arizona’s MVD site as if you were a new driver or new resident… it’s not perfect, but it seems to do a quite good job hand-holding people through things. They even have a survey at the end of each request for feedback to improve their site. I never had to make two trips to an Arizona MVD, and have done everything 100% online for the last ~7 years there, so it’s pretty decent.
Though, I do greatly appreciate California’s appointment system (which could use clearer outdoor signage at least at Petaluma, by the way… I only saw the Appointment line after standing outside in the rain for fifteen minutes.) Continue reading

Ansible ec2_eni error solution

If you’re using Ansible with the AWS EC2 plugin ec2_eni and getting this error:

AttributeError: 'NetworkInterface' object has no attribute 'attach'

The problem is that the boto NetworkInterface object indeed does not have anything called “attach” — you’re probably using an old version of boto; “attach” was added somewhere between 2.20 and 2.38. So, upgrading your boto version should fix it.

First, check that you don’t have boto installed via your package manager; I opened Ubuntu’s Software Sources and searched for boto, sure enough had to uninstall it.

Then, install the latest version with “sudo pip install boto”. Should work now!

Cable for connecting APRSdroid to a Baofeng UV-82 Radio (APRS via RF)

aprs cable

This cable follows the below diagram precisely; note the color-coded heat shrink, and note that the TRRS plug’s internal wiring is such that the Tip is wired to the furthest-left solder point, followed by R1 and R2, and finally the Sleeve solder point is actually also the strain relief and threaded housing. So you’ve gotta think a bit backwards (and/or use an ohmmeter to check your wiring.)

Sources:

Warning, this alternative *may* be more reliable than mine: https://github.com/johnboiles/BaofengUV5R-TRRS

And this article has a lot of helpful hints: http://www.wcares.org/?page_id=2677

And of course, using a Bluetooth TNC, etc, is going to be much more reliable than this hack. I don’t use this on a regular basis.

Finally, this cable seems to work well on my Samsung Galaxy Nexus, but is not detected as an output by my Nexus 5x when plugged into the radio so it might need different resistor values or connections depending on your devices.

I harvested a cheap Baofeng handheld speaker/microphone for its cable (although you can buy them here — the Kenwood type) and bought a 3.5mm TRRS plug from Digi-key. It’s a bit tight to solder the resistors inside the plug housing, but it is possible (just remember to put the plug housing on the cable BEFORE soldering, otherwise you’ll be unable to put it on later… a mistake I made about three times.)

Here are the diagrams:  Continue reading

Fixing: Cannot set session ID after the session has started in PHPUnit

I got this error after adding an onKernelRequest listener to my Symfony project and trying to pass Twig_Environment to it as an argument. It worked via the web browser, but not in any PHPUnit tests hitting multiple pages.

After much head scratching and reading of the Symfony source code, I ended up making an onKernelException listener instead. Magically, rendering a twig template from it (passing a TwigEngine argument) worked.

So, here’s how I handle custom exceptions in a custom way. Notice I’m testing for Twig_Error_Runtime because my specific error is coming via Twig; you may be able to just test for regular Symfony exceptions instead:

https://gist.github.com/zyphlar/e1089be4c0f0499ab08b