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
Go, REST APIs, and Pointers - Will Norris
willnorris.com/2014/go-rest-apis-and-pointers/
Go
, REST APIs, and Pointers. 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 on the approach that I'm ...
Accessing go links across tailnets - willnorris.com
willnorris.com/2023/golinks-across-tailnets/
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.
willnorris.com
willnorris.com
Accessing go links across tailnets Nov 2, 2023. 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. Tailscale devices with a custom domain Nov 1, 2023
Fetching Go Sub-Packages on Static Sites - Will Norris
willnorris.com/2015/go-get-subpackages-nginx/
Fetching Go Sub-Packages on Static
Sites
. 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 services like GitHub and Bitbucket ...
Go Packages
willnorris.com/go/
Go
Packages. timestamp command line tool for working with timestamps httpexec Execute a specified command via HTTP request gifresize Simple package for transforming animated GIFs gum Personal short URL resolver imageproxy Caching image proxy server microformats work in progress newbase60
Testing in go-github
willnorris.com/2013/testing-in-go-github/
Using
Go's
httptest package. Within
Go
, there are a couple of ways you can perform the above tests. One approach is to create a custom http.RoundTripper implementation that inspects the request and returns a known response. In this case, no actual HTTP request is ever sent anywhere; the RoundTripper intercepts it and just checks for expected ...
Caddy snippets for static sites
willnorris.com/2023/caddy-snippets/
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.
One step forward, two steps back - Will Norris
willnorris.com/2014/one-step-forward-two-steps-back/
They are now powered by a new short URL resolver I wrote called Gum (it's sorta like Hum, but ported to
Go
). Gum is a pretty good example of how I expect to continue building my
site
- static content (whether generated by Jekyll or something similar) with a few small Go servers hiding behind certain URLs powering limited dynamic content or ...
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.
Mount drives in WSL
willnorris.com/til/wsl/drive-mount/
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.
Accessing a Developing Application
willnorris.com/2005/accessing-a-developing-application/
This isn't a very involved tip, but I could have really saved my butt a few weeks ago when I couldn't get an updated version of hedmaster deployed, just hours before it was scheduled to go live. This explains how to make a WebObjects application on your development mac temporarily available to outside users, either for testing or a very ...
Tailscale at the Pinewood Derby - Will Norris
willnorris.com/2023/tailscale-pinewood-derby/
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 ...
A self-hosted alternative to Jetpack's Photon service - Will Norris
willnorris.com/2014/a-self-hosted-alternative-to-jetpacks-photon-service/
The final result is just a few hundred lines of Go code, utilizing gregjones/httpcache together with peterbourgon/diskv for caching remote images on disk, and disintegration/imaging for basic image manipulation like resizing and rotation. All options are specified in the URL path, mimicking the format that resize.ly uses, and it supports ...
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.
Tailscale devices with a custom domain
willnorris.com/2023/tailscale-custom-domain/
What I found was coredns-tailscale, a plugin for coredns that effectively maps Tailscale device names onto a custom domain. The coredns-tailscale project has been around for about a year, and I later discovered that it had been mentioned in the Tailscale newsletter from October 2022 . I guess I either missed seeing it or just wasn't looking ...
Challenges in changing my OpenID - willnorris.com
willnorris.com/2008/challenges-in-changing-my-openid/
The problem is that if I go ahead and setup a 301 redirect (as mentioned above), then it breaks my ability to use will.norris.name as an OpenID (see #4 under OpenID Normalization). So I want Google and other visitors to see a permanent redirect to
willnorris.com
, but I don't want to break my ability to use will.norris.name as an OpenID.
Email Etiquette: Replying to Mailing Lists - Will Norris
willnorris.com/2008/email-etiquette-replying-to-mailing-lists/
Most email clients support the idea of "threaded messages"… that is, the client can group together individual email messages that are part of the same conversation, or "thread". This is a particularly useful feature on mailing lists where multiple conversations are happening at the same time. For example, the following screenshot of the OpenID General Discussion list shows two ...
The Open Stack (in PHP)
willnorris.com/2009/the-open-stack-in-php/
A couple of months or so ago, I made a conscious shift in my focus with the DiSo Project. Instead of continuing to concentrate on some of the higher level deliverables like WordPress plugins, I decided it was time to step back and evaluate where the development community (specifically the PHP development community) is with the Open Stack.
Java OpenID Library Design - Message Handling - Will Norris
willnorris.com/2009/java-openid-library-design-message-handling/
This past June I contracted with Internet2 to work on adding OpenID support to the Shibboleth Identity Provider. I had actually started to work on this over a year prior while working at USC. At the time there were (and still are) two primary OpenID libraries in Java, Verisign's JOID, and Sxip's OpenID4Java.I spent a fair amount of time looking at both libraries, but ultimately decided ...
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.
hCard is not a provisioning engine (for private data)
willnorris.com/2007/hcard-is-not-a-provisioning-engine-for-private-data/
Last week I wrote about how hCard is much more appropriate than OpenID for the provisioning use-case and Chris continued that discussion, questioning why we need SREG and Attribute Exchange when hCard works just fine.. So the question is, when OpenID is clearly a player in the future and part of that promise is about making things easier, more consistent and more citizen-centric, why would we ...
WordPress Plugin Pet Peeve #3: Not being extensible
willnorris.com/2009/wordpress-plugin-pet-peeve-3-not-being-extensible/
So this is one that is incredibly easy to implement, and yet goes a really long way in keeping people happy with your plugin. The very reason that WordPress has a plugin API is because they know that different people want different things from their blog. Some people are satisfied with just the core functionality that WordPress provides, but most people want a little more.
Feedback