First TensorFlow Book is Published!

Man, it has been a while since I posted anything!

I’ve emerged from my writer’s cave (along with my co-authors), and have emerged with TensorFlow for Machine Intelligence! In my extremely biased opinion, it’s one of the best resources out there for people trying to get started with TensorFlow. I had a heavy hand in helping design the content of the book, and I wanted to make sure that learning the software was as digestible as possible. I’m not a huge fan of marketing buzz-speak, but one of our reviewers, Guillaume Binet, says

“Finally a TensorFlow book for humans.”

TensorFlow for Machine Intelligence
The book’s snazzy cover!

Mission Accomplished Sort Of!

I Have no idea how it’s going to sell, but hopefully a decent amount of people find the book helpful. Right now, a huge amount of the reward from this process has been getting even more deeply acquainted with the TensorFlow library. Plus, I can literally say “I wrote the book on it”.

I’ve been working on this with the fine folks at Bleeding Edge Press for several months, and while for a book the timeframe has been pretty short, this release feels like a long time coming.

Special thanks to my awesome co-authors Danijar Hafner, Erik Erwitt, and Ariel Scarpinelli. We had a few tight deadlines, but at the end of the day we’ve got an awesome book!

Read More

Aside: Back from Israel and A New Small Program

Happy New Year!

Alright! Back from Taglit/Birthright a little more tan, a little more mensch-y. Here’s what I’ve been up to in the digital (though occasionally also spiritual) world:

  • Helped out with some documentation on the TensorFlow repo. Really enjoying the little bits of collaboration with the Google folks I’ve been able to have with that. I’d say that one thing that could be improved is a little bit more information about which components Google is actively working toward releasing. After taking notes on their white paper, there are several important features that exist in Google’s internal implementation that have yet to be open-sourced. I think making an explicit list of these features will help guide the open source community to work on new problems (and maybe just maybe stop asking about the same things over and over again. It’s coming guys! Google wants TensorFlow to succeed)
  • A pull request I made in October for the Node.js linear algebra package finally got merged! The maintainer hadn’t touched the project for over a year, but now it seems like there’s been more life. Sadly, my ambitions of creating a simple JavaScript feed-forward neural network executor have been set off course, as learning and using TensorFlow seems to be a better use of time (along with several other projects). Hopefully the new feature is useful to someone!
  • Continued to make some updates on the previously mentioned TensorFlow white paper notes

Additionally, I’ve got a little Python project that I hope will improve people’s lives! For the moment, it’s called:

AnchorHub

Check out the repo here. Basically, it should make intra- and inter-Markdown document anchor links more sensible to use in GitHub. Headers in Markdown files are automatically given anchor tags on GitHub, but they can get a little verbose and/or difficult to utilize. One might end up uploading a file, copying the anchor URL (using the chain icon next to the header), pasting that URL back into the document, and uploading a second time. A waste of time AND it clutters up the commit log. Here’s the basics of what AnchorHub does:

What you write:
# This is a header that I would like to make an id for {#head}
[This link points to that header!](#head)

What AnchorHub outputs:
# This is a header that I would like to make an id for
[This link points to that header!](#this-is-a-header-that-i-would-like-to-make-an-id-for)

It works automatically within an entire directory tree, so you can link across documents the same way you might use id tags in HTML. There’s still plenty of work to be done, but it is actually usable right now! Command-line arguments coming up next after fixing a last second bug. Then onto pip-packaging!

Read More

Santa Monica Parking Meter API: “street_address” Field Is More Useful Than It Appears at First Glance

“Approximate Street Address” Doesn’t Do It Justice

Whew! It’s been a while since the last update- don’t worry, I’ve been hard at work learning TensorFlow (and I’ve even contributed to its documentation a touch), and I’ll have a fairly large post later this week. In the meantime, I thought I’d share something I’ve discovered about one of the Santa Monica Parking API‘s fields that I had previously shrugged off as unhelpful.

I was looking through some of my parking data and decided to print some information for all parking meters, ordered by meter_id, when I noticed something interesting:

list

Multiple meters were given the same street_address field. On further inspection, I also noticed that address numbers in the list either ended in 0 or 1. I couldn’t think of a better thing to do than plot some of them on a map and see what I came up with.

First, I picked two group of meters that had similar addresses. In this example, “00 Pico Blvd” and “01 Pico Blvd”.

pico00

pico01

Here’s the “01 Pico Blvd” coordinates mapped:
pins_00

And then with “00 Pico Blvd” added in:
pins

The street_address is a label for their block! I tested this out with several groups of meters, and found the block-by-block grouping consistent. That makes me comfortable to say this:

street_address Groups Parking Meters Together by Block

There’s your TLDR. Two reasons I’m sharing this today:

  1. As of writing, that information is not conveyed in the API
  2. It’s going to save a huge amount of effort when people inevitably want to group these meters together block-by-block

Before realizing this, I was thinking of various way of trying to use a combination of meter_id and GPS coordinates to try to group these together without doing it manually, but this provides a very natural way to group them! Hooray for the data being even better than first thought!

Read More

My Computer is Using 19 GB of Virtual Memory

RAMtastic

And all of its RAM

This happens a lot.

Some of it can be attributed to the various Chrome tabs I have open at any given time (Google Chrome Helpers out the wazoo). The rest of the blame falls on the work I do on-the-daily: data science and animation.

Who am I?

I’m Sam Abrahams– math nerd, programmer, and digital-media dude. I graduated from the University of Richmond in 2014 with a B.S. in Mathematical Economics (more statistics, less abstract algebra). After moving out to the west coast, I began seeking out analyst jobs all over Los Angeles. However, as I was interviewing for those jobs, I was given the opportunity to do a short 2D animation for Illumination Entertainment- best known for these yellow guys. They liked my work, and so I became a contracted artist with them. Since then, I’ve been doing animation for my job, while machine learning and programming have become the focus of my studies and personal projects.

Blog.

It’s been a hell of a year for me, and I have a lot of exciting things now going on and planned for the future. I want this blog to be a repository for people to see what I’m working on and thinking about in the fields of machine learning, programming, and animation. Occasionally, I will try to write detailed tutorials for certain tasks I’ve become proficient at, and at the very least I will share thoughts on the latest hot things.

One post down. Let’s do this!
-Sam

Read More