Home | Random | Downloads | About | Hikes | 7,204,039,910 | Search | Feed

Book reviews for April 2014

The Goldfinch by Donna Tartt

The Goldfinch by Donna Tartt

5/5

Took a while to start because The Secret History is one of my favorite books and I was pretty disappointed by The Little Friend - I can't really even remember it. The Goldfinch on the other hand will stick with me for a long time. It's a book where you inhabit someone else's life so deeply that it's disorienting to finish. Outstanding.

 

Elsie Street, west slope of Bernal Heights

Elsie Street, west slope of Bernal Heights

If you only buy one house in Bernal Heights this month it should be 94 Elsie Street on the west slope of the hill (I'm not biased, just happened to have lived there for nearly ten years!)

Boris: Make London a National Park!

Book reviews for March 2014

Growth Hacker Marketing: A Primer on the Future of PR, Marketing, and Advertising by Ryan Holiday

Growth Hacker Marketing: A Primer on the Future of PR, Marketing, and Advertising by Ryan Holiday

2/5

Very short. Not as grubby as I was expecting. You'd be better off just reading The Lean Startup.

 

Waiting for Sunrise by William Boyd

Waiting for Sunrise by William Boyd

5/5

Outstanding WW1 spy/psychological literary thriller.

 

Constellation Games by Leonard Richardson

Constellation Games by Leonard Richardson

3/5

Engaging romp of an alien first contact mission to Earth as experienced by a video game developer.

 

Vernal Equinox 2014

Vernal Equinox 2014

It's spring time in the northern hemisphere, autumn if your water flows the wrong way down the plughole. Rendered in Catfood Earth.

Commute failing to suck this morning...

Commute failing to suck this morning...

Presidio Theatre

Presidio Theatre

Personal Finger Daemon for Windows

Did you know that Windows still has a vestigial finger command with just about nothing left to talk to? One of my New Year's resolutions is to bring finger back and unlike the stalled webfinger project I need to make some progress. Here's some C# to run your own personal finger daemon... you just need to create a .plan file in your home directory (haven't done that for a while):

using System;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace fingerd
{
    static class Program
    {
        private const int FingerPort = 79;
        private const int MaxFingerCommand = 256;
        private const string PlanFile = ".plan";

        private static readonly TcpListener _tcpListener = new TcpListener(
             IPAddress.Any, FingerPort);

        static void Main()
        {
            _tcpListener.Start();

            while (true)
            {
                TcpClient tcpClient = _tcpListener.AcceptTcpClient();
                Thread clientThread = new Thread(ClientThread);
                clientThread.Start(tcpClient);
            }
        }

        static void ClientThread(object client)
        {
            NetworkStream clientStream = null;
            TcpClient tcpClient = client as TcpClient;
            if (tcpClient == null) { return; }

            try
            {
                byte[] command = new byte[MaxFingerCommand];
                clientStream = tcpClient.GetStream();

                int read = clientStream.Read(command, 0, command.Length);
                if (read == 0) { return; }

                ASCIIEncoding asciiEncoding = new ASCIIEncoding();
                string commandText = asciiEncoding.GetString(command);

                int endOfCommand = commandText.IndexOf("\r\n"
                    StringComparison.InvariantCultureIgnoreCase);
                if (endOfCommand <= 0) { return; }

                string user = commandText.Substring(0, endOfCommand);
                if (string.Compare(user, Environment.UserName, 
                    StringComparison.InvariantCultureIgnoreCase) != 0) { return; }

                string planPath = Path.Combine(Environment.GetFolderPath(
                    Environment.SpecialFolder.UserProfile),
                    PlanFile);
                if (!File.Exists(planPath)) { return; }

                string plan = File.ReadAllText(planPath) + "\r\n";
                byte[] planBytes = asciiEncoding.GetBytes(plan);
                clientStream.Write(planBytes, 0, planBytes.Length);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {
                if (clientStream != null)
                {
                    clientStream.Close();
                }
                tcpClient.Close();
            }
        }
    }
}

Book reviews for February 2014

Five Billion Years of Solitude: The Search for Life Among the Stars by Lee Billings

Five Billion Years of Solitude: The Search for Life Among the Stars by Lee Billings

4/5

Epic book about the origins, frequency and long term outlook of life in the universe.

 

Countdown City (The Last Policeman, #2) by Ben H. Winters

Countdown City (The Last Policeman, #2) by Ben H. Winters

4/5

A search for a missing person is the backdrop for watching society start to collapse and the plot begin to thicken in the sequel to The Last Policeman. Here's hoping that the third book will be worth the wait.

 

Skype for Android - Getting Closer

Skype for Android - Getting Closer

Skype for Android is finally getting there. Push support means that it is now useful for more than conditioning your battery. Conversation read status is mostly synced between different client instances which is a big time saver. I'm actually starting to use it.

There is one horrible usability crime. When you open the app you get a list of unread conversations. Your set your finger in flight to the first one and then notice an ad sliding down from the top of the screen. With horror you realize it's too late to change course and you hit the ad instead of the conversation.

I'm not complaining about Skype being ad supported here, but if you were going to try and design a UI to trick people into clicking ads you really couldn't do better than this. I expect better from Microsoft.

Other than this the only real complaint is that new posts to group messages sometimes make it through to the notification bar and sometimes don't. You have to run the app periodically to see if there is something new.

(previously, previously)

Previous Page | Next Page

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

Like I Thought He Came With You on Facebook