Friday, June 2, 2017

What was I reading in May 2017


- How to Read Mathematics
- Building a BlackBerry QNX 7 Desktop
- How to point GDB to your sources


- Getting Started with Headless Chrome - I'm thinking that this consume a sizable portion of my future.
- Why Walking Helps Us Think
- Programming as a Way of Thinking


- Kryptonite - the new home for your SSH private key. - I have this feeling that it's not an improvement of security. It's a convenience, therefore...
- evilsocket/opensnitch - One to watch?
- Fix your crappy ads and I'll stop blocking them - The author closes the browser tab. I go a bit further and inject code into my browser that highlights (in yellow) any link to the site, warning me that they have crappy ads. In short, I don't block the ads, I avoid the site altogether.
- Forensics - TeamViewer file extraction


- OpenSSH Removes SSHv1 Support


- Machine To Machine Talk Using ESP8266


- Thousands of Veterans Want to Learn to Code But Can't
- Avoid these 35 habits that lead to unmaintainable code
- Why Don't People Return Their Shopping Carts? - This is one of my peeves. We have strong winds here and my cars have had more than one scratch from these wheeled missiles.


- The hijacking flaw that lurked in Intel chips is worse than anyone thought
- WuTheFWasThat/vimflowy - This can also be used as typing practice for new Vi/Vim users.


- MTK51 8051 Microcontroller Trainer Kit
- A Lot of What Is Known about Pirates Is Not True, and a Lot of What Is True Is Not Known
- The Physicist Who Sees Crime Networks


- New device can harvest indoor light to power electronics
- Announcing SyntaxNet: The World's Most Accurate Parser Goes Open Source
- The Discipline of Chaos Engineering - Not only is it a good idea to know what "normal" looks like, you should be familiar with what "abnormal" looks like...
- Maintainers make the world go round
- Google releases DIY open source Raspberry Pi 'Voice Kit' hardware -- here's how to get it
- IPv6 as a metadata store


- KFUZZ, a fuzzer story.
- Amazon enables free calls and messages on all Echo devices with Alexa Calling


- “Google Is as Close to a Natural Monopoly as the Bell System Was in 1956″ - Complete and utter BS from another self-promoting armchair critic. Big != monopoly. He's also ignorant if he thinks that musicians don't make their primary income from touring.
- Lasp: a little further down the Erlang rabbithole. This is not a Monad tutorial
- SQL Notebook
- Exploiting the Linux kernel via packet sockets
- Get started Learning Music (Beta)
- Beware of Transparent Pixels


- dns-violations - Given the ways DNS has been "adapted" to support miscellaneous non-DNS services, I'm not sure that this is worth the time being put into it.
- Standing Up to a Dangerous New Breed of Patent Troll
- When Bash Scripts Bite


- Your Brain Can Only Take So Much Focus - Yeah, but it's like a muscle. With practice, you can focus longer. (Warning: Crappy ad website. Vertical reading area =~ 50% of browser.)


- The Tools We Use To Stay Afloat
- Rejection Letter - Could this be where the Iraqi Information Minister retired? (geesh)


- MP3 is dead missed the real much better story


- The Secret History of William Gibson's Never-Filmed Aliens Sequel
- Amazon Announces Notifications for Alexa' Feature Is Coming Soon Sign-Up to Stay Tuned


- Scientists Claim 'Cold Spot' In Space Could Offer Evidence of a Parallel Universe


- So You Want to Learn to Break Ciphers
- Algorithms and Data Structures
- PyCon 2017 - YouTube


- Building a legacy search engine for a legacy protocol
- Updating Logitech Hardware on Linux


- taviso/loadlibrary
- Don't use Hadoop - your data isn't that big
- US politicians think companies should be allowed to 'hack back' after WannaCry - If this becomes law, I'll attempt to corner the market on popcorn.


- MicroPython running "bare metal" in the browser via unicorn.js
- The Magic of XOR
- Little Things I Like to Do with Git
- Repurposing Thin Clients
- A brief history of IPv4 address space exhaustion
- 1922: Why I Quit Being So Accommodating
- Dirty COW and why lying is bad even if you are the Linux kernel


- The American Scholar: Writing English as a Second Language
- Reflections on reflection (attacks)
- firmware-security-training


- (Important: the reach of a patent) IMPRESSION PRODUCTS INC. v. LEXMARK INT'L INC.
- Overview of top cryptocurrencies
- Pipes - Watching this one. I miss Yahoo Pipes.
- Computer science students should learn to cheat not be punished for it - Uh. No. Doing so defeats the purpose of learning how to do something (which is why the school is there). In the long run, someone will be sued for misappropriating someone else's code.
- Older Adults Learning Computer Programming: Motivations, Frustrations, and Design Opportunities
- MySQL 8.0: Retiring Support for the Query Cache
- oss-security - Qualys Security Advisory
- Writing a Unix Shell - Part I
- Remaining Trouble Spots with Computational Thinking

Above was generated by a homegrown bolt-on script for Wallabag, which is a free utility for capturing web content so that it can be read later.

Monday, May 1, 2017

What was I reading in April 2017

April was a busy month. Took a course on security for embedded devices (explains the gap at the end). Picked up an external 480 GB drive the size of two postage stamps. Overhauled one laptop. Installed Linux on two others (harder than it sounds when you're wrestling UEFI _and_ TPM). Sick for a number of days with whatever bug was hanging around. In short, those are my excuses for the 10 day gap near the end of April's reading list.


- Open Source Needs FPGAs; FPGAs Need an On-ramp
- The Shell Hater's Handbook
- Why Japan's Rail Workers Can't Stop Pointing at Things
- How to Write Portable C Without Complicating Your Build
- Destroying Cockroaches and the Hackathon Experience
- Microsoft closing down CodePlex, tells devs to move to GitHub - This is one of those things that probably shouldn't be announced on April 1st.
- - Remains to be seen if this is actually useful.


- Over The Air: Exploiting Broadcom's Wi-Fi Stack - Part 1
- How To Learn Hadoop For Free


- Unix is not an acceptable Unix
- Build Your Own Text Editor
- SEI CERT C Coding Standard - SEI CERT C Coding Standard
- Oath isn't just a terrible name, it's going to be a nightmare ad-tracking machine
- ShelfJoy - 17 Essential Machine Learning books suggested by Michael I. Jordan from Berkeley


- corkami/pics - Posters for various technical bits.
- Federated Learning: Collaborative Machine Learning without Centralized Training Data


- Introduction to the Domain Name System DNS
- The 5 Phases of Vim Use


- Exploring 3-Move - A LambdaMOO inspired environment
- My giant JavaScript Basics course is now live on YouTube. And it's free.


- The Bulwer-Lytton Fiction Contest - An annual contest to come up with the worst ever opening line for a book that doesn't exist (in a recognizable category, I think). Goal for self: achieve (at least) a "dishonorable mention".
- Vi's Complete Key Binding List
- New York becomes only state to offer free four-year college - Sure, now that I've spent a decade paying off my school debt...
- Packet Sniffing on Layer 2 Switched Local Area Networks


- How To Secure Your Web App With HTTP Headers


- Open Source Search Engines Retrieval Tools and Libraries - I agree with V3ss: Why wasn't SphinxSearch mentioned? (I'm using it in a home-grown document management system and a bookmark tracker.)
- nvbn/thefuck
- Learn 90 of Python in 90 Minutes
- The Hacker Dictionary - Hacker terms lingo slang and acronyms
- How To Host Your Own Private Git Repositories
- How to write a simple operating system in assembly language
- Unfixed security bugs
- Low level programming university


- I reverse engineered a motherboard
- StarCraft 1.18 Release: 18 April 2:00 PM PDT - StarCraft Forums

(insert excuses for 10 days sick+busy here)


- How Many x86-64 Instructions Are There Anyway?
- Learn LaTeX in 30 minutes

Above was generated by a homegrown bolt-on script for Wallabag, which is a free utility for capturing web content so that it can be read later.

Friday, April 14, 2017

Finding RSS feeds

One you have a feed reader up and running, you'll want to subscribe to RSS feeds that support your favorite topics. You can search for them with Google, by using the "inurl" or "filetype" search modifiers. Example searches could include:
 inurl:rss security
 filetype:rss linux
 inurl:xml asterisk
 filetype:atom sphinx search
Note that there are multiple feed formats (rss, atom, xml, etc.) so it's recommended that you experiment with the search parameters.

Saturday, April 1, 2017

What was I reading in March 2017


- x86 Paging Tutorial - Ciro Santilli


- selfie by cksystemsteaching - For MIPS studens
- Consistent Hash Rings Explained Simply
- The Collapse of the UNIX Philosophy - Not an attractive article. Appears to be written by comparing it with Windows, without saying "Windows". Then again, I'm an old fart and am used to the "borken way".


- CS department updates introductory courses
- cs01/gdbgui


- Learn C Programming With 9 Excellent Open Source Books - OSS Blog


- I'm Old, Part XLI: Trolling Creative People
- Vacant Homes Are A Global Epidemic And Paris Is Fighting It With A 60 Tax Better Dwelling


- I learned how to do math with the ancient abacus — and it changed my life
- A right to repair: why Nebraska farmers are taking on John Deere and Apple


- Apologies. I had a article here but it's since been moved behind a pay wall. I've also added the site to my news filter.
- Phyllis Diller Gag File - Smithsonian Seeks Digital Volunteers


- 18 Things You'll Understand If You Went To High School In A Small Town - #8 is bs 'cause it assumes a certain level of traffic. #13 - if you had to look up FFA, you didn't grow up in a small town. #14 - If you had a DQ, (again) you didn't grow up in a small town. We had Tastee Freez and it was in the next town over. #16 - the rodeo was for the townees. Farmers already have horses, cattle, etc. We showed them off at the county fair (4-H/FFA, remember?). #18 - I'm hoping the cool girls still know how to saddle a horse.


- My Response to: How to never complete anything
- Google goes after Slack and splits Hangouts into Chat and Meet
- Backdooring MySQL Backups
- Baidu’s Artificial Intelligence Lab Unveils Synthetic Speech System


- Draft NIST SP 800-63-3 Digital Identity Guidelines
- Real-time notifications from systemd to Slack


- Teach Yourself Computer Science
- Gödel and the limits of logic
- On Programming Languages; Why My Dad Went From Programming to Driving a Bus


- Notes on Programming in C
- The Cyberpunk Sensibility
- Why We Desperately Need To Bring Back Vocational Training In Schools
- Why I've Retired My PGP Keys and What's Replaced It


- Chrome getting support for animated PNGs - A sign the end is near?
- Reverse Culture Shock - The Challenges of Returning Home: Reverse Culture Shock - Somewhat, this also applies to returning to a small towns.
- Scrolling on the web: A primer - Microsoft Edge Dev Blog


- How to Clear a Path Through 60 Feet of Snow Japanese Style
- Learning when to skim and when to read
- The Cult of DD
- A Good Vimrc
- The Surprisingly Simple Logic Behind Japanese Sentence Structure


- They Used To Last 50 Years
- How to Write a Git Commit Message - Just what Git needs: an effin' style guide. This kind of stuff gets my ire up because it makes assumptions (who's the expected audience, why you're pushing to Git, that there's a human involved in pushing to Git, etc.). We now know where the don't-ever-top-post people went...


- Why losing a dog can be harder than losing a relative or friend
- A hot bath has benefits similar to exercise
- How I Built a Profitable "Startup" in 28 Days With a $100 Budget


- Dig once bill could bring fiber Internet to much of the US


- The Days of Google Talk Are Over - Please, please no!


- Linux x86 Program Start Up
- Writing a Linux Debugger Part 1: Setup
- Writing a Linux Debugger Part 2: Breakpoints
- How to learn on your own
- 21 XMPP use-cases and the best ways to achieve them
- tmuxp tmuxp 1.2.7 documentation


- A Second Life for very old C programs
- No. I Don't Want to Subscribe to Your Newsletter


- 'Cards Against Humanity' Creator Just Pledged To Buy and Publish Congress's Browser History - Is it just me or does the law somehow miss that much of our web traffic is encrypted? If ISPs are going to start intercepting SSL traffic (ala mitmproxy or similar), isn't such still illegal?
- The Arrival of Artificial Intelligence
- Learn Redis the hard way in production
- TRS-80 Model III Emulator for Windows - Yes, I'm an old fart. I spent many hours playing "Hack" on Trash-80 CP/M.
- DNSCrypt - Official Project Home Page
- /dev/lawyer - Open Source License Business Perception Report

Above was generated by a homegrown bolt-on script for Wallabag, which is a free utility for capturing web content so that it can be read later.

Sunday, March 19, 2017

Command-line Docker tip

If you're developing/running command line tools in Docker containers, you'll probably want the tool to know from what folder you're running the tool. To do this, you'll want to pass the "-v `pwd`:/source" option, where:
  • "pwd" (surrounded by backticks) is aliased to the working directory within the container
  • "/source" is the internal working directory within the container

For this (above and below) example, I'm using the Pandoc container, developed by jagregory. If I save the script (below) as "md2pdf", the syntax to run it would be something like:

  md2pdf result.pdf

My Script:



# following must be "beamer" or "latex"
# note: use beamer when producing PDF slides 
#       and latex when producing papers

#$format = "beamer";
$format = "latex";

if($format eq "latex") {
 $margin="-V geometry:margin=1in";
 $toc = "--toc";
 $highlight = "--listings --highlight-style=tango";

system("sudo docker run --rm -v `pwd`:/source pg/pandoc $toc $margin \
  $highlight -f markdown -t $format $src -o $tgt");

Sunday, March 12, 2017

Oops! Fixed.

While posting about Pandoc, I noticed that the February reading list was missing (it was still in draft status). I've finished the content and have post-dated it.

How to install Pandoc in Docker and convert Markdown to PDF

Pandoc is described as the Swiss Army knife of document converters. Following are my notes describing how to combine Docker and Pandoc, with a bit of Perl, to implement a command line utility that converts from one format to another (in this case, Markdown to PDF).

Note: Following assumes that you already have a working instance of Docker and that you can either: configure Docker to run as a normal user or can configure sudo to allow the user to run Docker.


1) Create a working directory and navigate into it:

  mkdir work
  cd work

2) Pull in J. A. Gregory's Dockerfile by running:


3) Create the Docker container by running:

  docker build -t pg/pandoc .

Note the period at the end. The above will take a few minutes to build so take a bio break, make a cup of coffee, or do something else that takes about 5 minutes.

4) In a "/bin" directory (I use /home/tim/bin and have added that to my $PATH), create a file called "md2pdf", containing the following:

  # declare the output
  $format = "latex";
  # edit the following to tweak your output
  $margin="-V geometry:margin=1in";
  $toc = "--toc";
  # following should all be on a single line
  # use "sudo docker..." if your Docker can't be called by 
  # a normal user
  system("sudo docker run -v `pwd`:/source pg/pandoc $toc \
    $margin -f markdown -t $format $src -o $tgt");

In the above, "-v `pwd`:/source" allows you to convert a Markdown file in whichever directory you happen to be working in, when calling pandoc. Effectively, you're temporarily linking your current working directory to the "/source" folder in the container.

5) Make "md2pdf" executable by running:

  chmod a+x md2pdf

In the above, the $margin variable redefines the margins for the output. Without the declaration, the output's margins are a bit excessive. The $toc variable causes the output to have a table of contents. If you use that, you'll probably also want to use \newpage or \pagebreak in your Markdown code, to trigger a new-page in the output.

6) Test your instance by creating a file called "", containing:

  # This is a test
  Just want to see if this works

    #sample code
    blah blah

  Hopefully it worked.

7) Test the file conversion by running:

  md2pdf mine.pdf

8) Open the new file in Google Chrome or your favorite PDF reader.