Hoover Dam (Fixed)

Updated on Tuesday, May 25, 2021

Hoover Dam (Fixed)

The angle of an electricity transmission tower at the Hoover Dam was really bothering me until I fixed it in post.

(Related: Barker Dam and Wall Street Mill; Lake Merced; Cataract Creek)

(You might also like: Share a picture in MonoDroid; Convert BlogML comments to WXR for Disqus; What can I do for Brown?)

(Recent Photos)

High Roller Timelapse

Updated on Saturday, February 19, 2022

High Roller Ferris Wheel at The Linq in Las Vegas

Sunset timelapse of the 550 foot Ferris Wheel at The Linq in Las Vegas, Nevada (technically the High Roller Observation Wheel).

(Related: Kirby Cove; Sierra Nevada; Jupiter from Casini Ranch)

(You might also like: Catfood: Earth and Follower; How not to fix Democracy; Top 5 reasons to hate the Facebook like button)

(More Timelapses)

Book reviews for September 2018

Updated on Saturday, August 28, 2021
The Strange Library by Haruki Murakami

The Strange Library by Haruki Murakami

3/5

 

Revenge by Yōko Ogawa

Revenge by Yōko Ogawa

4/5

 

Ball Lightning by Liu Cixin

Ball Lightning by Liu Cixin

4/5

 

Enlightenment Now: The Case for Reason, Science, Humanism, and Progress by Steven Pinker

Enlightenment Now: The Case for Reason, Science, Humanism, and Progress by Steven Pinker

4/5

 

Provenance by Ann Leckie

Provenance by Ann Leckie

4/5

 

(Related: Go-arounds: LEGO and Legislative Service; #Resist; Scanning from the ADF using WIA in C#)

(You might also like: What can I do for Brown?; Fermi Suicide; Personal Finger Daemon for Windows)

(All Book Reviews)

Autumnal Equinox 2018

Better related posts with word2vec (C#)

I have been experimenting with word2vec recently. Word2vec trains a neural network to guess which word is likely to appear given the context of the surrounding words. The result is a vector representation of each word in the trained vocabulary with some amazing properties (the canonical example is king - man + woman = queen). You can also find similar words by looking at cosine distance - words that are close in meaning have vectors that are close in orientation.

This sounds like it should work well for finding related posts. Spoiler alert: it does!

My old system listed posts with similar tags. This worked reasonably well, but it depended on me remembering to add enough tags to each post and a lot of the time it really just listed a few recent posts that were loosely related. The new system (live now) does a much better job which should be helpful to visitors and is likely to help with SEO as well.

I don't have a full implementation to share as it's reasonably tightly coupled to my custom CMS but here is a code snippet which should be enough to get this up and running anywhere:

The first step is getting a vector representation of a post. Word2vec just gives you a vector for a word (or short phrase depending on how the model is trained). A related technology, doc2vec, adds the document to the vector. This could be useful but isn't really what I needed here (i.e. I could solve my forgetfulness around adding tags by training a model to suggest them for me - might be a good project for another day). I ended up using a pre-trained model and then averaging together the vectors for each word. This paper (PDF) suggests that this isn't too crazy.

For the model I used word2vec-slim which condenses the Google News model down from 3 million words to 300k. This is because my blog runs on a very modest EC2 instance and a multi-gigabyte model might kill it. I load the model into Word2vec.Tools (available via NuGet) and then just get the word vectors (GetRepresentationFor(...).NumericVector) and average them together.

I haven't included code to build the word list but I just took every word from the post, title, meta description and tag list, removed stop words (the, and, etc) and converted to lower case.

Now that each post has a vector representation it's easy to compute the most related posts. For a given post compute the cosine distance between the post vector and every other post. Sort the list in ascending order and pick however many you want from the top (the distance between the post and itself would be 1, a totally unrelated post would be 0). The last line in the code sample shows this comparison for one post pair using Accord.Math, also on Nuget.

I'm really happy with the results. This was a fast implementation and a huge improvement over tag based related posts.

(Related: Export Google Fit Daily Steps, Weight and Distance to a Google Sheet; Top 5 reasons to hate the Facebook like button; Catfood: Klout and Follower)

(You might also like: Teague Hill Preserve; Train of Lights; The end of Facebook)

(All Code Posts)

Lassen Star Trails

Updated on Saturday, February 19, 2022

Star trails from the Manzanita Lake campground at Lassen Volcanic National Park

A timelapse two ways shot from the Manzanita Lake campground at Lassen Volcanic National Park (the second time I've visited and the second time that Bumpass Hell has been closed). First a regular 4K timelapse looking up from the campsite:

The second version is the same footage in HD where each frame is the cumulative maximum pixel value of all the frames up to the current frame (so it builds in star trails as the video runs):

(Related: Star Trails; Stars over Columbia State Historic Park; Road Trip Timelapse)

(You might also like: Point Reyes - Drakes Estero; Cheek Cells, Methylene Blue Stain; ASCII Sunset)

(More Timelapses)

Draw the rest of the Hummingbird

Updated on Saturday, February 19, 2022

Generation three thousand of a genetic algorithm learning to draw a hummingbird

A genetic algorithm learns to draw a hummingbird:

The video is an animation of three thousand generations of evolution. It starts with a random mix of line segments which are then mutated by adding or removing lines and by changing the start, end and color of existing lines. Each generation has 32 individuals. The best individual is mutated to create the next generation.

For this implementation the best or fittest individual is the one with the least error on a pixel by pixel comparison to a stock art drawing of a hummingbird. Because I care more about the shape than completely filling in the drawing an error outside the figure is penalized three times more than a gap inside the figure.

Color is mutated each generation but not selected for, so it's just changing randomly.

(Related: Can I move to a Better Simulation Please?; Life, Non-locality and the Simulation Hypothesis; Better related posts with word2vec (C#))

(You might also like: Number Line; Moorhen and Chick; Rio Vista Bridge)

(All Etc Posts)

Book reviews for July 2018

Ancillary Justice (Imperial Radch, #1) by Ann Leckie

Ancillary Justice (Imperial Radch, #1) by Ann Leckie

4/5

 

Ancillary Sword (Imperial Radch, #2) by Ann Leckie

Ancillary Sword (Imperial Radch, #2) by Ann Leckie

4/5

 

Ancillary Mercy (Imperial Radch #3) by Ann Leckie

Ancillary Mercy (Imperial Radch #3) by Ann Leckie

4/5

 

(Related: #Resist; Nonfiction; Go-arounds: LEGO and Legislative Service)

(You might also like: Pitcher Plant; Not a Private Key; Comments Restored)

(All Book Reviews)

Hoylake Beach

Updated on Saturday, February 19, 2022

What if the Senate Voted Proportionally to Population

Relative influence of each state on the Electoral College

This is massively less likely than sorting out the Electoral College, but imagine for a minute that 100 Senators woke up tomorrow and decided to do the right thing.

Dianne Feinstein, the senior Senator from California would wield 6.04 votes. Mike Enzi, the senior Senator from Wyoming would have to make do with 0.09 votes.

Overall a party line vote would see 55.85 Democratic votes to 44.15 Republican, assuming normal independent caucusing habits. Not quite a supermajority, but enough to not send Kavanaugh to The Supreme Court for instance.

This is based on 2010 census figures from Wikipedia.

Not going to happen, but find my estimate of your State's fair voting power by Senator below.

StateVotes per Senator
California6.04
Texas4.08
Florida3.05
New York3.14
Pennsylvania2.06
Illinois2.08
Ohio1.87
Georgia1.57
North Carolina1.55
Michigan1.6
New Jersey1.43
Virginia1.3
Washington1.09
Arizona1.04
Massachusetts1.06
Tennessee1.03
Indiana1.05
Missouri0.97
Maryland0.94
Wisconsin0.92
Colorado0.82
Minnesota0.86
South Carolina0.75
Alabama0.78
Louisiana0.74
Kentucky0.7
Oregon0.62
Oklahoma0.61
Connecticut0.58
Iowa0.49
Utah0.45
Arkansas0.47
Nevada0.44
Mississippi0.48
Kansas0.46
New Mexico0.33
Nebraska0.3
West Virginia0.3
Idaho0.25
Hawaii0.22
New Hampshire0.21
Maine0.22
Rhode Island0.17
Montana0.16
Delaware0.15
South Dakota0.13
North Dakota0.11
Alaska0.12
Vermont0.1
Wyoming0.09

(Related: Legislative Service; Liquid Democracy and united.vote; 2020 Results)

(You might also like: Elsie Street, west slope of Bernal Heights; World Time Lapse; International Date Line Longitude, Latitude Coordinates)

(All Politics Posts)

I Thought He Came With You is Robert Ellison's blog.

Newsletter