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.


Wednesday, March 1, 2017

What was I reading in February 2017?


- OpenScope An Open Source Multi-function Board - Electronics-Lab
- Stop Disabling SELinux: A Real-World guide
- Typing Practice for Programmers SpeedCoder
- CoVim - Collaboration in Vim!


- Using tmux properly
- Terrible Ideas in Git
- Military Reading List
- Shaarli


- House Passes E-mail Privacy Act
- oxford-cs-deepnlp-2017/lectures
- Op-ed: Windows 10 0day exploit goes wild and so do Microsoft marketers
- Learn C Programming With 9 Excellent Open Source Books


- Windows Subsystem for Linux: Wine runs on it! No idea why but...


- What Vizio was doing behind the TV screen


- muesli/beehive - An event/agent system
- marcan/ - Wipe and reinstall a running Linux system via SSH, without rebooting.
- Keybase's end-to-end encrypted chat
- Oracle refuses to accept pro-Google fair use verdict in API battle - Means there's more of the shambling horror to come...


- I Do Not Know C
- Now sites can fingerprint you online even when you use multiple browsers
- Fuzzing PCI express: security in plaintext


- a discussion of Fedora's legal state []
- Getting Started with Deep Learning - Silicon Valley Data Science
- A rift in the NTP world []


- Neuromancer - Audio Book : William Gibson : Free Download & Streaming : Internet Archive
- Toward the Discovery of Citation Cartels in Citation Networks
- Tsundoku - One man's libary is another's OCD. You decid(Never mind that! None of your business! Go away!)


- Getting started with Vim


- Google Site Search - Google Enterprise Search
- World of Tanks streamer dies during 24-hour Twitch marathon
- The Hidden History of the Laundry Chute
- The PMP - How it Ruined Project Management


- Encryption Primer


- Is Your Child A Hacker? - I'd thought this meme was dead, years ago.


- Why Nothing Works Anymore
- Secondhand Smoke Is Not Nearly As Dangerous As We Thought. Shouldn't That Matter?

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.