technology

Will Faught

October 2023

How Unicode Country Flags Work

How do you encode politically-contentious country flags?

Benjamin Esham: Version 6.0 of the Unicode standard, released in October 2010, added support for emoji. Aside from the classics like 😃 (SMILING FACE WITH OPEN MOUTH), 👍 (THUMBS UP SIGN), and 💩 (PILE OF POO), the standard also included several national flags like these: 🇺🇸 🇩🇪 🇬🇧 🇯🇵 🇮🇹 In fact, the standard included every national flag, and in a way that won’t require the standard to be changed when new countries come into being.

technology unicode

Will Faught

1 minute

September 2023

Bad Unicode Assumptions

All the ways in which you’re wrong about Unicode.

Unicode is much more complicated than it seems.

technology text unicode

Will Faught

1 minute

August 2023

Server-To-Server Authentication Schemes

A tour of motivations, techniques, strengths, and weaknesses.

Latacora: Modern applications tend to be composed from relationships between smaller applications. Secure modern applications thus need a way to express and enforce security policies that span multiple services. This is the “server-to-server” (S2S) authentication and authorization problem (for simplicity, I’ll mash both concepts into the term “auth” for most of this post). Designers today have a lot of options for S2S auth, but there isn’t much clarity about what the options are or why you’d select any of them.

authentication encryption macaroons mtls servers technology

Will Faught

3 minutes

July 2023

RED Metrics

Metrics for understanding request-driven program performance.

Tim Yocum, writing for InfoWorld: The RED method is a monitoring methodology coined by Tom Wilkie based on what he learned while working at Google. RED is derived from some best practices established at Google known as the “Four Golden Signals,” developed by Google’s SRE team. […] RED stands for rate, errors, and duration. These represent the three key metrics you want to monitor for each service in your architecture:

metrics microservices red technology

Will Faught

4 minutes

Don’t Use JWTs

Use session tokens instead.

Raja Rao, writing for Redis: There are many in-depth articles and videos from SMEs of companies like Okta talking about the potential dangers and inefficiencies of using JWT tokens[1]. Yet, these warnings are overshadowed by marketers, YouTubers, bloggers, course creators, and others who knowingly or unknowingly promote it. If you look at many of these videos and articles, they all just talk about the perceived benefits of JWT and ignore the deficiency.

json jwt redis sessions technology

Will Faught

1 minute

Data-Driven Software Interviews

Software interviews suck, but they don’t have to.

Thomas Ptacek: The software developer job interview doesn’t work. Companies should stop relying on them. The savviest teams will outcompete their peers by devising alternative hiring schemes. Years from now, we’ll look back at the 2015 developer interview as an anachronism, akin to hiring an orchestra cellist with a personality test and a quiz about music theory rather than a blind audition. Being good at navigating hiring processes requires a basket of skills that isn’t correlated with job performance.

hiring interviews software technology

Will Faught

1 minute

March 2023

Open Letter To Pause AI Experiments

All of a sudden, the consequences of technology are a problem.

An open letter signed by people who are upset they aren’t personally pioneering the AI frontier, and want to stall the head start of others until they can catch up or even figure out what to do about it: Contemporary AI systems are now becoming human-competitive at general tasks,[3] and we must ask ourselves: Should we let machines flood our information channels with propaganda and untruth? Should we automate away all the jobs, including the fulfilling ones?

ai technology

Will Faught

2 minutes

September 2022

Always Change, Never Finish

An interview with an Agile Coach.

Part 1: Part 2: Some gems: They were posted one “sprint” apart. 🤣 “It’s really Waterfall with meetings every two weeks.” “That’s Greg. His birthday is on day 2 of sprint 7.” “We don’t even define requirements until after production.” “I lost my job because I’m a horrible developer. Now I’m an Agile coach.” “Always change. Never finish.” “Folks who don’t have anything valuable to add deserve meetings.” “I’m so used to it, I don’t even hear the Waterfall.

agile methodology scrum software technology

Will Faught

1 minute

April 2022

Generics For Go

A design that adds generic functions and types.

(Obviously for Go 1.17.) Why you might find this approach interesting: Type variable declarations are implicit Type arguments for functions are implicit Type variable constraints can be omitted for the empty interface Methods can be generic Operations are represented with generics as normal methods It can simplify the Go language specification Check out the More ideas section at the end for things beyond generics. Define comparison operations for all types For the types that don’t yet have them:

design generics go languages technology types

Will Faught

28 minutes

May 2020

Shortage Of COBOL Programmers

Alicia Lee, writing for CNN: On top of ventilators, face masks and health care workers, you can now add COBOL programmers to the list of what several states urgently need as they battle the coronavirus pandemic. In New Jersey, Gov. Phil Murphy has put out a call for volunteers who know how to code the decades-old computer programming language called COBOL because many of the state’s systems still run on older mainframes.

cobol coronavirus technology world

Will Faught

3 minutes

August 2016

Go Raised The Bar

Go raised the bar for new language distributions: UTF-8 code Testing, benchmarking, and profiling built in Single command line tool Build tool that leaves code directories clean Package manager Package doc browser Standard code style and formatter Fast builds Language spec with grammar and thorough library documentation Uniform, batteries-included standard library Concurrency support and automatic parallelism, sync and atomic libs, race detector Interfaces, not inheritance Vendoring support Cross compilation Static linking only for simple deployments Tabs, not spaces No semicolon line terminators Trailing commas in lists to minimize diffs Static types Default values for uninitialized variables Built-in comparisons and hashing Safety (e.

code coding engineer engineering go program programming raise the bar software swift technology

Will Faught

1 minute

January 2015

Accidental Tech Podcast On Golang

An interesting take on Golang from someone looking for a better server language. It starts about five minutes in and ends at the first ad.

golang technology

Will Faught

1 minute

June 2014

“Only Apple”

John Gruber: Apple, Google, and Microsoft each offer all three things: devices, services, and platforms. But each has a different starting point. With Apple it’s the device. With Microsoft it’s the platform. With Google it’s the services. And thus all three companies can brag about things that only they can achieve. What Cook is arguing, and which I would say last week’s WWDC exemplified more so than at any point since the original iPhone in 2007, is that there are more advantages to Apple’s approach.

apple daring fireball technology world

Will Faught

1 minute

April 2013

OS X Proxy Configuration

If you use OS X, and you use an HTTP forward proxy, and you use command line programs like curl or wget that use the HTTP or HTTPS protocols, then you must set the shell environment variables http_proxy and https_proxy (and their all-caps equivalents). An example of doing this in ~/.profile: export http_proxy="proxy.company.com:3128" export https_proxy="proxy.company.com:3128" export HTTP_PROXY=$http_proxy export HTTPS_PROXY=$https_proxy If you don’t do this, you’ll see errors like this: $ curl http://www.

configuration osx proxy technology

Will Faught

1 minute

January 2013

E Piss Bed

EPSBD is a mnemonic I use to remember five helpful approaches to solving algorithmic problems that I got from Cracking the Coding Interview by Gayle McDowell: Examplify: Derive rules from examples. To compute the angle between the hour and minute hands in a clock, first derive the rules for computing the angle of each hand separately, then derive the rule for computing the angle between the hands in terms of them.

code interviews technology

Will Faught

1 minute

April 2011

You Have To Enable FaceTime

I just tried to FaceTime someone for the first time, but I couldn’t find the button for it in the Contacts app. It turns out that there’s a FaceTime option in the phone settings you have to turn on to enable it and see the buttons.

facetime iphone technology

Will Faught

1 minute

New Goodies

I recently bought a MacBook Air (13", 256 GB SSD, 4 GB RAM, 2.13 GHz) and a Canon S95. My prior digital camera was several years old and was showing its age. It was very difficult to get low-light shots to turn out right, and most of my pictures were low-light. The S95 is a godsend. I’ve only tried it out a little bit in my apartment so far, but even using the flash in near darkness (in my bathroom), the pictures look like they were taken with all the lights on.

canon s95 macbook air technology

Will Faught

1 minute

March 2011

C’s Faults

A few nights ago while lying in bed I put together a list of things that I don’t like about C: Side effects Weak typing Breakable semantics Simple types Design tends to put many cases into one struct No first-class functions No overflow/sign checks No homoiconicity or metacircular evaluation Weak macros Numerous code styles and conventions No namespaces Memory management Incorrect arithmetic Compiler-driven development Implementation-defined behavior No inherent or safe concurrency Multiple character sets Eager evaluation Encourages monolithic design Separate declarations and definitions No cheap container types like lists or tuples built in Difficult to reason about Debugging is necessary and primitive Declaration order matters I began to think about what I would change to improve it while keeping it attractive to current users.

c technology

Will Faught

1 minute

I Just Learned Markdown

I love it! Way better than WYSIWYG formatting. Hats off to John Gruber.

markdown technology

Will Faught

1 minute

Focus Yourself

It took me several hours to figure out how to enable a Silverlight custom control to be “activated” by the space bar or enter keys like Button. It turns out when a control gets input events, it isn’t automatically given focus (i.e. OnGotFocus isn’t called). You have to call Focus() yourself. Hope this saves someone else some time.

silverlight technology

Will Faught

1 minute

Silverlight Inherited Properties

I was working on a Silverlight control template last night and wondered which dependency properties are inherited and which aren’t. It’s a good idea to bind those that aren’t in the template so the dependency properties for UIElement, FrameworkElement, and Control work as expected for your control. However, I couldn’t find a list of inherited dependency properties in the documentation or elsewhere online. I discovered a somewhat reliable way to determine such a list: Look at the documentation for counterparts in WPF.

silverlight technology

Will Faught

1 minute

Dedicated Hardware Needed For Flash

Ken Tindell: For embedded processors, it’s a problem: again, it’s CPU time and power consumption that makes things run sluggishly and runs the battery down. And the bigger the screen, the more data to be handled. The solution is again to get Flash to use specially-designed hardware for doing all this work: to have dedicated hardware pathways for converting video, for layering graphics and for scaling the outputs so that the huge amount of data being handled doesn’t hit the CPU and soak up memory bandwidth.

flash performance power smartphones technology

Will Faught

1 minute

What Would Feynman Do?

How well would the late Nobel-Prize-winning physicist Dr. Richard P. Feynman do in a technical interview at a software company?

feynman interview software technology

Will Faught

1 minute

Xcode 4 Released

Only $5! Next to that, Microsoft’s prices are exorbitant. I love the Git support and the integration of Interface Builder into a single window.

apple technology xcode

Will Faught

1 minute

Going With HTML Instead Of Silverlight

Compares HTML and Silverlight development by a variety of criteria, and concludes that HTML is a better long term bet. I’ve never seen it broken down like this before.

html silverlight technology

Will Faught

1 minute

February 2011

Mac OS Lion

Mac OS Lion looks promising: Choose and organize apps like iOS Full screen apps Better way to see running apps File changes are saved automatically File versions are stored and accessible like Time Machine Restarting saves the state of running apps and restores them automatically Easy file sharing with any Mac on your network Server with wiki These are substantial new features that I would love to have. This is the kind of innovation I admire.

apple macos technology

Will Faught

1 minute

Apple Keynote

I just started experimenting with builds in Keynote. I’m amazed at how simple it is to make fairly complex animations. Everything is attractive and slick. $20 on the Apple App Store is a steal. PowerPoint 2010 is $139. Microsoft: Where is the app store already?

apple keynote microsoft powerpoint technology world

Will Faught

1 minute

C

I used C quite a bit in college. Now I use C++ at work, and now I can really appreciate the relative simplicity and elegance of C. C++ just smells. C# seems to be a synthesis of the best qualities of C and Java. One of the great absurdities of computation is how widespread C++ is.

c c++ csharp technology

Will Faught

1 minute

XMB

The Cross Media Bar is the sleekest UI I’ve seen. Everything is ordered in a very structured, hierarchical way. You navigate it by doing up, down, left, and right movements that feel like drilling down into a tree, but look like a mix of scrolling a list and moving between pages. It has a very simple, minimal aesthetic, which pleases my own taste. I was disappointed to see that it won’t also be used in Sony’s NGP (PSP 2), but I can see that it wouldn’t make for a good touch interface as-is.

playstation sony technology xmb

Will Faught

1 minute

MSDN Documentation

This is the most useless documentation I’ve ever seen. Every Boolean property “gets a value that indicates” something. Inherited methods are mixed with the others. You have to drill down one page to see the list of overrides for a method name. I’ve seen some class docs explain what they do by restating the class name in sentence form. I pine for the Javadocs of yore.

documentation javadocs msdn technology

Will Faught

1 minute

UI Pet Peeve

I hate it when text isn’t selectable in a dialog box or window. Gee, maybe I’d like to look up exception 0x00000035 without having to squint and count zeroes.

technology ui

Will Faught

1 minute

The Zen Of Lisp

Structure and Interpretation of Computer Programs: In a similar way, we can regard the evaluator as a very special machine that takes as input a description of a machine. Given this input, the evaluator configures itself to emulate the machine described… From this perspective, our evaluator is seen to be a universal machine. It mimics other machines when these are described as Lisp programs. This is striking. Try to imagine an analogous evaluator for electrical circuits.

lisp sicp technology universal machine

Will Faught

1 minute

Apple, Netflix, And Nintendo

It’s kinda crazy how high Apple’s stock is right now (currently $339). I wish I had invested more in it when it was only $90. I only considered buying their stock at the time because I believed in what they were doing, and didn’t really care about dividends or stock price fluctuations. I recently took stock of what I spend my money on and realized that Netflix is another company that I believe in, and would consider investing in without doing any research.

apple netflix nintendo stock technology world

Will Faught

2 minutes

OmniFocus Is Missing Location Notifications

OmniFocus for iPhone is a pretty great task organizer. You can even view a map of your surrounding area to see which tasks you can accomplish near your location. What confuses me is why they haven’t added what seems to me to be an obvious extension of this: location-based notifications. When I’m in the neighborhood of a QFC, I’d like my iPhone to notify me that I can get an errand done.

iphone omnifocus technology

Will Faught

1 minute

Learn You A Haskell For Great Good!

I’ve been reading this Haskell tutorial, and I’m almost finished with it. Most of it was review for me, but the sections on functors, applicative functors, monoids, monads, and zippers are very thorough and invaluable references. I love the tone of the writing and the artwork. It’s so fanciful. I would totally buy this book if it were for sale. Check it out.

haskell technology

Will Faught

1 minute

Tumblr Theme

I really like my Tumblr theme. It’s called Easy Reader, and it’s free. In the past, I’ve left blog services because I wasn’t satisfied with the blog themes they had available for free. I’m a big fan of simplicity. There’s just something satisfying about good presentation. Hopefully this will entice me to stick around and blog more.

technology theme tumblr

Will Faught

1 minute

Household Internet Access

What is the percentage of households with internet access in the United States? 75%, estimated as of 2008. Wolfram Alpha is really cool.

internet access technology wolfram alpha world

Will Faught

1 minute

January 2011

MacBook Air

I think the next home computer setup I’ll have will be a MacBook Air combined with a wireless keyboard and mouse and an Apple 27" display. I like the idea of being able to take my whole digital presence on the go with me, but be able to plug in for some extra screen space if I need it. Having a dedicated computer for the desktop seems like overkill these days.

apple macbook air technology

Will Faught

1 minute

October 2010

Free Online Haskell Book

A great introduction to Haskell: Learn You a Haskell for Great Good!

coding haskell technology

Will Faught

1 minute

IPhone Hub

The big thing touted for Windows Phone 7 as the innovation over iPhone is hubs: information aggregated into one place and viewable at a glance. It seems to me that Apple could easily add such a feature to the home screen by letting you drag downward or upward to view a Dashboard like in Mac OS X that you can put widgets on that call out whatever information you care about—upcoming calendar events, missed calls, new messages, weather, whatever.

apple iphone mac microsoft technology windows phone

Will Faught

1 minute

September 2010

Kindle 3

I recently bought a Kindle 3 to condense the space occupied by my book collection and to make it portable, searchable, annotatable, and replaceable. The average $10 per book isn’t bad, especially now when I only read a couple books a month. It’s light, slim, attractive, readable, and has long battery life. Reading the paper-like screen noticeably strains my eyes less than my iPad’s LCD screen. It’s somewhat astonishing that it can display images without using power.

kindle technology

Will Faught

1 minute

Internet Explorer 9 Beta

Microsoft recently released a beta of Internet Explorer 9. I’ve used it a little and have some initial impressions. Overall, it’s a much-needed improvement over 8. It’s a cross between Firefox and Chrome, incorporating features from each, although there are some 8 leftovers. The look is simple and clean and comes off as much more lightweight. It’s a pleasure to see and to use. The address bar and tabs area were set horizontally adjacent to each other.

browsers internet explorer microsoft reviews technology

Will Faught

4 minutes

Wiping My Old Hard Drive

I’m going to donate my old desktop computer. To be safe, I wanted to wipe the hard drive. I figured an Ubuntu Live CD would do the trick, and I almost got it to work by guessing the command, but I had mistakenly specified the partition (sda5) instead of the drive itself (sda). It worked like a charm. Here’s how I did it: sudo swapoff -a sudo shred -vfz /dev/sda

hard drive technology ubuntu

Will Faught

1 minute

Apple TV

I was loathe to get a media center PC because: it would be a living room eyesore, it would use a keyboard and a mouse instead of a remote, it would cost as much as a regular computer, and TV episode rentals would cost too much. I think Apple has finally solved these problems with their newest Apple TV: It’s tiny and black and can pull any media wirelessly from my desktop, I can use my iPhone to control it, it’s $100, and TV episode rentals are $1.

apple apple tv technology tv

Will Faught

2 minutes

Safari Extensions

Despite wanting Firefox-like extensions for Safari, I only just tried Safari extensions. Gentle Status Bar and Middle-Click AutoScroll add Chrome-like behavior. AdBlock is a necessity for any clean experience. Delicous, Instapaper, and Add To Google Reader are invaluable when finding things to go back to. Add To Amazon Wish List is a good idea, but I sense it’s naively implemented.

browsers chrome extensions firefox safari technology

Will Faught

1 minute

John Backus

My favorite computer science paper is Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs by John Backus. It struck me because it reflected my own thoughts on contemporary languages. I started to compile quotations from the paper, but found I was quoting more than not, so instead I’ll just give you a taste by quoting the very beginning. If this piques your interest, I highly recommend reading the paper; it’s very readable, insightful, and prophetic.

coding john backus languages papers technology

Will Faught

2 minutes

HTML5

Just skimmed an overview of HTML5. Love the new canvas and the new input form elements, like colors, emails, URLs, and searches. I’m glad they ditched the crufty stuff like <center>. I wish there was help for animations.

coding html html5 technology

Will Faught

1 minute

Git

If you’re a programmer and you’re not using a distributed version control system, you’re doing yourself a disservice. Learn why Git is better than your version control system and then learn how it works.

coding git technology version control

Will Faught

1 minute

π