All Regions
Argentina
Australia
Austria
Belgium (fr)
Belgium (nl)
Brazil
Bulgaria
Canada (en)
Canada (fr)
Catalonia
Chile
China
Colombia
Croatia
Czech Republic
Denmark
Estonia
Finland
France
Germany
Greece
Hong Kong
Hungary
Iceland
India (en)
Indonesia (en)
Ireland
Israel (en)
Italy
Japan
Korea
Latvia
Lithuania
Malaysia (en)
Mexico
Netherlands
New Zealand
Norway
Pakistan (en)
Peru
Philippines (en)
Poland
Portugal
Romania
Russia
Saudi Arabia
Singapore
Slovakia
Slovenia
South Africa
Spain (ca)
Spain (es)
Sweden
Switzerland (de)
Switzerland (fr)
Taiwan
Thailand (en)
Turkey
US (English)
US (Spanish)
Ukraine
United Kingdom
Vietnam (en)
Any Time
Past Day
Past Week
Past Month
Past Year
willnorris.com
willnorris.com
Jun 15, 2021. We were a Kraft household growing up, certainly eating our fair share of blue box mac and cheese. The steps to make it are quite simple: cook the pasta and drain out the water, put the pasta back in the pan, then stir in milk, butter, and the cheese packet.
Improving my HTTPS support
willnorris.com/2013/improving-my-https-support/
This is enabled simply by returning a header in all
HTTPS
responses. I added the following line in my .htaccess file, instructing browsers to always access
willnorris.com
using
HTTPS
, and to remember that decision for about six months: Header add Strict-Transport-Security "max-age=16070400" Little Brother
Tailscale devices with a custom domain
willnorris.com/2023/tailscale-custom-domain/
2023-11-01T00:00:00.0000000
I manually respecify records for my nameservers since some resolvers will check for that. I then configure the coredns-tailscale plugin to use my ipn.willnorris.net zone, and register itself with my Tailscale auth key.. Now this auth key is the one really non-standard bit, and relies on a local change I made to coredns-tailscale. Normally, it requires that a Tailscale client be running on the ...
Accessing go links across tailnets
willnorris.com/2023/golinks-across-tailnets/
2023-11-02T00:00:00.0000000
One of the more fun projects I've worked on at Tailscale is golink, which provide simple, private shortcuts that you can share with others on your tailnet.We have hundreds of go links at Tailscale that we use on a daily basis. But I also run a personal golink server in my homelab with some links that don't really make sense to add to our corporate golink instance.
Caddy snippets for static sites
willnorris.com/2023/caddy-snippets/
2023-10-27T00:00:00.0000000
Fetching go packages. In February 2015, I wrote Fetching Go Sub-Packages on Static
Sites
.Unsurprisingly, I still use my own domain in the import path of all of my go packages. I currently use Hugo to generate my
site
, so I have a custom layout for my go package files which reads relevant metadata from the page front matter and populates the necessary meta tags.
Tailscale at the Pinewood Derby - Will Norris
willnorris.com/2023/tailscale-pinewood-derby/
2023-05-05T00:00:00.0000000
The track manager (who was tethered on a separate phone) was then able to navigate to my same MagicDNS hostname (something like
https
://derby.tailnet.ts.net) which routed through Tailscale's public funnel servers and down to my laptop.It worked amazingly well, especially considering that Funnel was a very new feature at the time.. We ran the whole pinewood derby like this without even the ...
Leaving Google - Will Norris
willnorris.com/2020/leaving-google/
Leaving Google. September 18, 2020 by Will Norris. After 10 years, 8 months, and a handful of days, today is my last day at Google. It's surreal and bittersweet, but I'm really excited about what's next. As I'm writing this, I'm sitting outside of Charlie's, getting ready to go gather my personal belongings and turn in my badge to ...
Intentionally Positive - Will Norris
willnorris.com/2021/intentionally-positive/
We must strive to be intentionally positive. Being intentionally positive is not something that happens by accident. It's not something you stumble into, and I suspect that it does not come naturally to many people. By definition, being intentionally positive is a conscious and deliberate choice to behave in a particular way.
Facebook switching to HTTPS by default - willnorris.com
willnorris.com/2013/facebook-switching-to-https-by-default/
It's really nice to see Facebook moving to use
HTTPS
by default for all users, and generally beefing up their TLS setup. This is good for everyone.
willnorris.com
. don't lose focus. About; Archive; now; Facebook switching to
HTTPS
by default. August 1, 2013 by Will Norris.
Archive - Will Norris
willnorris.com/archives/
All
https
, all the time Dec 16, 2012; The Links We Lost Dec 14, 2012; indie two-factor auth Jun 13, 2012; Google+ Profile Link Chrome Extension Feb 4, 2012; 2011. Outsourcing comments to Google+ Sep 15, 2011; Launching the Google+ Platform Sep 15, 2011; Excited to finally be able to talk to family and friends about what I've been working on
HTTP Client Library for PHP - Will Norris
willnorris.com/2009/http-client-library-for-php/
Update (Dec 2013): If you're just looking for a good
HTTP
library in PHP, I currently recommend Requests. As I mentioned in my last post, I'm currently spending a lot of time thinking about and coding PHP libraries for the various Open Stack protocols.I've recently hit a common roadblock with a couple of the libraries, and wanted to solicit some feedback from the community.
Fetching Go Sub-Packages on Static Sites - Will Norris
willnorris.com/2015/go-get-subpackages-nginx/
Fetching Go Sub-Packages on Static
Sites
. February 20, 2015 by Will Norris. One of my favorite things about Go is that there is no central repository for third-party libraries and code. Instead, import paths resemble URLs and the go get command can fetch packages from wherever it is that they are hosted. There is built-in support for popular ...
Forcing SSL on WordPress.org
willnorris.com/2014/forcing-ssl-on-wordpress-org/
So it seems that wordpress.org now serves traffic over SSL, and will soon be switching to SSL only.In the comments on the above article, Andrew Nacin said: Yeah, all of WordPress.org will be 100% forced SSL soon. For WordPress, I suspect that this was largely a pragmatic decision to take advantage of SPDY, but I'll take it!
Supporting WebFinger with Static Files and Nginx - Will Norris
willnorris.com/2014/webfinger-with-static-files-nginx/
So, my final nginx configuration for supporting WebFinger is: My first location block is an exact match for the well-known WebFinger path. Within that block, I first enforce that only GET and HEAD requests are accepted, all others receive a 405 response. This isn't required by the spec, but seems like a good idea.
Using HSTS with HTTP requests - willnorris.com
willnorris.com/2014/using-hsts-with-http-requests/
At IndieWebCamp this last weekend, Ryan Barrett noted that he serves both secure and non-secure traffic on snarfed.org, and that instead of redirecting non-secure URLs to their secure equivalents, he sends an HSTS header for all content. That way, browsers that understand HSTS will eventually start switching over to the secure version of his
site
.
A self-hosted alternative to Jetpack's Photon service - Will Norris
willnorris.com/2014/a-self-hosted-alternative-to-jetpacks-photon-service/
A self-hosted alternative to Jetpack's Photon service. Like many people, I've long had a bit of a love/hate relationship with Jetpack, the WordPress plugin from Automattic that adds a slew of features like pretty photo galleries, WordPress.com stats, automatic sharing to Google+ and Twitter, etc. A lot of these are incredibly useful and ...
Go, REST APIs, and Pointers - Will Norris
willnorris.com/2014/go-rest-apis-and-pointers/
Go, REST APIs, and Pointers. May 27, 2014 by Will Norris. One of the more interesting design challenges with go-github (and subsequently the one that results in the most questions) is the use of pointers for most all of the fields in our structs that are marshaled and passed to the GitHub API. After a fair amount of trial and error, I settled ...
Adding rel="me" to WordPress Social Menus
willnorris.com/2014/wordpress-social-menus-rel-me/
Update: As Kaspars points out in the comments below, it is indeed possible to set the rel value on menu links directly from within WordPress. I just had the option hidden for some reason. So definitely implement a Social menu location in any themes you're working on, and just ignore my code snippet below.
Keeping Up - Will Norris
willnorris.com/2014/keeping-up/
I've spent this week trying to keep up with all that's been happening in the Indie Web the last few months. Inspired by Tantek's additions this week, I've now implemented fragmentions (), with similar styling to what Tantek is using.I spent my birthday writing a go webmention library and client, and this post is my first attempt at POSSEing using brid.gy.
Proxying webmentions with nginx
willnorris.com/2014/proxying-webmentions-with-nginx/
Update 2023: I now use the Caddy instead of nginx, and have an equivalent Caddy snippet here. In my ever-continuing attempt to indiewebify my new static website, I wanted to share what I came up with for receiving webmentions.Being a static
site
, I have to use some kind of webmention sidecar to process and store the mentions themselves.
Mount drives in WSL
willnorris.com/til/wsl/drive-mount/
2023-10-27T00:00:00.0000000
Mount drives in WSL. technique makes it trivial to access Google Drive from within WSL. $ sudo mkdir /mnt/d $ sudo mount -t drvfs D: /mnt/d The new [Google Drive for Desktop] mounts to `G:` by default, so the above technique makes it trivial to access Google Drive from within WSL.
Directed Identity vs Identifier Select - Will Norris
willnorris.com/2009/openid-directed-identity-identifier-select/
I initially started writing this post a couple months ago in response to the common misuse of the term "directed identity" I was seeing in the OpenID community. After reading Dirk Balfanz's guest post Users vs.
Java OpenID Library - Configuration and Custom Messages
willnorris.com/2009/java-openid-library-configuration-and-custom-messages/
I previously described how message handling works in the Internet2 OpenID library, and how each OpenID message type requires a half dozen or so classes to handle everything. While this may seem like overkill to some, one of the nice things about this separation of logic is that it makes it quite simple to provide custom implementations of specific kinds of messages.
Feedback