A time-grouped summary of all blog posts I’ve written over the years. You can explore a more curated experience by going to the Writing page or browsing the tags.
2024
βοΈ 33 published posts
- Uncovering Anyone's True Google Workspace Email Address From An Alias (December 4)
- From Canada with Money - Watch Out for the Old-School Mail Scam (November 25)
- Beware Of Deceiving Authenticator Apps on Apple and Google Devices (November 22)
- Email Aliases Are Not A Security Measure (November 8)
- New Features For MSAL Python - Managed Identity and macOS Broker (October 18)
- Hawai'i (Big Island) Trip (October 18)
- The Math Of Getting To Hero Rank In Halo Infinite (October 10)
- Halo World Championship 2024 (October 7)
- OpenSpartan Workshop 1.0.10 (Thasan) Released (September 30)
- OpenSpartan Workshop 1.0.9 (Grunt) Released (September 26)
- Extracting Match Stats From Halo Infinite Film Files (September 15)
- The New Playlist Wait Time Analysis for Halo Infinite - Operation Fleetcom (September 7)
- Converting HEX Color To SolidColorBrush In WinUI 3 (August 12)
- Purchasing Items In The Halo Infinite Exchange Via The API (August 8)
- SeaFair 2024 - Air Show Photos (August 7)
- The Beauty Of Having A Pi-hole (August 2)
- Analyzing Wait Times for Halo Infinite - Anvil (July 31)
- PowerToys Awake Now Has Icons And Helpful Tooltips (July 30)
- OpenSpartan Workshop 1.0.8 (Slipspace) Is Launched (July 30)
- OpenSpartan Workshop 1.0.7 (Cylix) Is Now Available (July 11)
- Track Halo Infinite Wait Times with Open Source Datasets (July 8)
- Convert Gamertag To XUID (July 3)
- Tracking My Own Halo Infinite Stats With OpenSpartan Workshop (June 13)
- Creating Free Rich Automatic Captions In DaVinci Resolve (June 11)
- OpenSpartan Workshop 1.0.6 (Crucible) Ready for Download (June 8)
- Halo Infinite Career Ranks (May 8)
- Deep Dive Into Halo Infinite Operations API (May 7)
- A Look Under The Hood Of The Halo Infinite Exchange (May 1)
- Using The Windows Authentication Broker For Simpler User Logins With MSAL (April 15)
- OpenSpartan Workshop 1.0.3 (Escharum) Is Now Available (March 8)
- OpenSpartan Workshop 1.0.2 (Sangheili) Is Now Available (March 1)
- OpenSpartan Workshop 1.0.1 (Mantle) Is Now Available (February 29)
- Announcing OpenSpartan Workshop 1.0 (February 21)
2023
βοΈ 32 published posts
- Finding A Good Way To Track Halo Infinite Playlist Wait Times (December 28)
- UniFi, Or The Story Of Unnecessary Cloud Accounts (December 18)
- Sending Your MSAL Telemetry To Azure Application Insights (December 8)
- Identifying Your Halo Infinite Build GUID (December 8)
- Getting Your Halo Infinite Service Record Directly From The API (November 20)
- Peek Into Halo Infinite Playlist Weights - With The Halo Infinite API (November 3)
- We're Hiring A Senior Technical Program Manager (October 25)
- Testing Your Network Speed On macOS From The Terminal (October 24)
- Comments Are Dead - Long Live Comments (October 24)
- Halo World Championship 2023: The Year To See It (October 18)
- An In-Depth Overview Of The Halo Infinite Career Ranks (October 12)
- Halo Infinite Medal API Now Returns Infection, VIP, Extraction Medals (October 11)
- The List Of 50 (Somewhat) Secret Windows Tools & Tricks (October 10)
- What Others Tell You Is The Wrong Solution (October 5)
- OpenSpartan And The Quirks Of Halo Infinite API (September 14)
- Medals In OpenSpartan (July 28)
- Progress On OpenSpartan - Profile And Match Tracking (July 19)
- Building OpenSpartan (July 3)
- Collecting And Analyzing Halo Stats - With Azure, SQLite, Python, And GitHub (June 16)
- On AWS Shutting Down Open Source Documentation (June 6)
- Experimenting With Linux As A Daily Driver (May 31)
- A New PowerToys Awake Is Out (May 24)
- Solving The Funky 0x8007007B Windows Activation Error (May 15)
- Just Works For Me (April 28)
- Recipes For Product Failure: Obsess Over Competitors (April 10)
- Bulk Updates To Azure Blob Storage Cache Control Metadata (April 6)
- Visiting The Halo Museum (April 3)
- Docs As Part Of The Developer Experience For MSAL (March 28)
- Restricting Your Azure App Service Site To Specific Microsoft Accounts (March 22)
- Experimenting With Managed Identity In MSAL.NET (March 16)
- Principles Of Horrible API Documentation (February 14)
- Reading Azure Active Directory Recommendations From PowerShell (February 13)
2022
βοΈ 18 published posts
- Coming Back To Microsoft (November 28)
- Building The OpenSpartan Data Browser (November 21)
- How I Built A Custom Halo Infinite Data API With Netlify (October 10)
- Unlocking All Halo Infinite Content In Your Build (July 25)
- Enabling Hidden Maps And Game Modes In Halo Infinite (July 12)
- Reverse Engineering The Halo Infinite Rating And Favoriting API (July 10)
- Motherboard On The Wall (July 8)
- Upgrading My Mini Machine To GeForce RTX 3080 Ti (July 7)
- Parsing Bond Responses From The Halo Infinite API (May 25)
- Getting ArXiv Sanity Papers Via RSS (May 24)
- Trying Out The Steam Deck (April 29)
- Beating Halo Infinite On LASO (April 29)
- Windows Needs a Change in Priorities (March 19)
- Building My Own Deep Learning Rig (March 17)
- Getting Halo Infinite Match Stats With Official Halo API (January 27)
- Halo Infinite Web API Authentication (January 26)
- Discovering the Halo Infinite API (January 21)
- The Tradition Of Beating Halo On Legendary (January 3)
2021
βοΈ 25 published posts
- Tweaking Spotify For Podcasters Feature Flags (December 30)
- Netlify Analytics API (December 30)
- First Explorations of Twitter Verification API (December 29)
- Careers Are Not Marathons Or Sprints (December 27)
- Lies, Damn Lies, and Software You Rent (December 19)
- Hidden Xbox APIs: Backing Up Media Captures (December 10)
- Behind The Spotify Wrapped API Scenes (December 2)
- GitHub Issues Graph with Netlify and GraphQL (November 26)
- Using Netlify API Authentication for Static Site Builds (November 18)
- Setting A Blank New Tab on Microsoft Edge (November 15)
- Joining Netlify (October 23)
- Signing GitHub Commits With YubiKey (August 28)
- The Rise Of User-Hostile Software (August 23)
- Reverse Engineering The Stream Deck (July 29)
- Announcing PowerToys Awake To Caffeinate Your Windows PC (June 27)
- Unlocking My Spotify Podcast Data (May 23)
- How I Automated My Vaccine Appointment Search (May 16)
- Downloading Azure Media Services Videos With FFMPEG (March 4)
- Getting DeepSpeech To Run On Windows (February 26)
- Get GitHub User Contributions With GitHub Skyline API (February 17)
- Recoding Audio Data From Nest Camera (February 15)
- Running Scheduled Data Collection with Synology and Docker (February 11)
- Using Nikon D3100 As Webcam (February 4)
- Launching Windows Store Apps On Stream Deck (January 21)
- Hosting Your Own Notes On Synology NAS With Docker (January 19)
2020
βοΈ 27 published posts
- Freely Accessing Your Own Nest HD Camera Stream (December 30)
- Automatically Finding A Short Twitter Username (December 30)
- Unlocking My Air Data Through API Analysis (December 28)
- Building Evergreen Markdown Notes (December 24)
- I Launched A Personal Site Directory (December 6)
- Joining Microsoft Developer Relations (November 16)
- Caffeinate Windows With PowerShell (November 12)
- I Built A Desktop Computer (November 7)
- Generating Windows 10 Notifications With PowerShell (August 26)
- Honey, I Accidentally Became A Product Manager (August 1)
- Announcing MeetingShot (July 8)
- Configuring Key-Based SSH Access For Raspberry Pi (July 4)
- Chapter Two: Day One - Joining Amazon (May 4)
- End Of Chapter One: Leaving Microsoft (April 23)
- Building Your Own Twitter Analytics (April 13)
- Launching A Podcast (April 11)
- Push To Two Git Repos At Once (March 7)
- Give And Receive Feedback (February 29)
- How I Learn (February 17)
- Product Manager Skills (February 16)
- Instead Of MAX Use LAST_VALUE For Time-Based Data (February 15)
- Watch Out For Modulo And Hashes (January 28)
- 10 Years Of Blogging (January 27)
- Preventing Key Leaks In Git Commits (January 20)
- You Don't Need A Coding Bootcamp (January 12)
- Gadgets And Software Of The Past (January 10)
- Apple - Time To Fix Your Subscription Management (January 7)
2019
βοΈ 28 published posts
- Relentlessly Simplify (November 23)
- Basics Of Reddit Sentiment Analysis (November 14)
- One Line Python Documentation (November 7)
- Lessons In Building A Scalable Samples Experience (October 5)
- You Are In Sales (September 14)
- Updating GitHub Actions Workflows (August 18)
- Product Managers And Data: Cohort Analysis (August 17)
- Building A Centralized Samples Experience At Microsoft (July 31)
- Must-Haves On Your macOS Setup (July 7)
- Metrics For Product Managers (June 22)
- Leadership In An Individual Contributor Role (June 22)
- Automating PM Status Reporting (June 17)
- Growing As A Product Manager: Ideas (June 15)
- Building A Documentation CLI (June 8)
- Making 1:1s Worth Your Time (May 26)
- Process Is Not Replacement For Training And Tools (May 23)
- Failing Fast Does Not Mean Being Careless (May 4)
- You Too Should Be Data-proficient (April 24)
- Randomized (April 23)
- Fall In Love With The Problem, Not The Solution (April 19)
- Hosting Your Hugo Blog For Free (March 2)
- Building Java API Docs With DocFX (February 24)
- Quantitative And Qualitative Metrics (February 24)
- Tools Of The Trade For Product Managers (February 18)
- Getting Started As A Product Manager (February 3)
- Books To Read For Product Managers (February 2)
- Be A Mentor (January 21)
- Deploying A Personal Blog With GitHub Actions (January 11)
2018
βοΈ 24 published posts
- A Year In Review - 2018 Edition (December 27)
- Write GitHub Actions In PowerShell (December 12)
- Building Docs With GitHub Actions (December 7)
- On Feature Ownership (November 27)
- On Structured Content (October 9)
- On Focus (October 5)
- Talking Docs At Open Source Summit North America 2018 (September 23)
- Easy Docs For Node And Python (September 15)
- DIY Docs In The Cloud (June 29)
- Coffee And Docs: Intro To DocFX (June 28)
- 5 Things Learned Generating API Documentation (June 21)
- Helping People Work Efficiently While Remote (June 17)
- Summer Of Docs - Documenting .NET Libraries (June 1)
- Connect GitHub And VSTS With Azure Functions (May 28)
- Your Customers Do Not Know The Solution (March 18)
- Migrating UserVoice Ideas To GitHub (March 6)
- It Is Time To Ditch SMS 2-Factor Verification (February 24)
- New FoggyCam Release - Support For 2-Factor Auth And Python 3 (February 17)
- Tech Support Scam Site - Beware Of Jammed Safari (February 6)
- A Year With Apple Watch (January 26)
- Uploading Nest Camera Video To Azure Storage (January 13)
- Unlimited Storage For Your Nest Cam, With No Subscription (January 7)
- PSA - Do Not Make Your Nest Cam Public Just To Access The Stream (January 6)
- Tracking Instagram Hashtag Popularity (January 1)
2017
βοΈ 20 published posts
- Authenticating With Instagram Without The Browser (December 30)
- Pulling Ubnt Stats Locally (December 28)
- Productivity Tips - 2018 Edition (December 26)
- A Year In Review - 2017 Edition (December 18)
- Tis' The Season Of Stickers (December 6)
- Organizing iPhone Homescreen From A Mac (November 28)
- Visual Studio Code And docs.microsoft.com API Docs (November 25)
- Installing Windows 10 With A Large USB Drive (November 25)
- Azure Container Instances, Azure Functions & VSTS Builds (November 3)
- Visual Studio Team Services - Pull Request After Build (October 31)
- Intercepting iPhone Traffic On A Mac - A How-To Guide (September 27)
- 3 Years At Microsoft, Life Changes, And More (September 10)
- Validating Samples With Docker And Azure Container Registry (June 5)
- Building Docs For NuGet Packages With VSTS And GitHub Pages (May 27)
- Talking Self-Driving Cars, Docs And Community On MSDevShow (May 1)
- Get Ahead In A Wait List, Or How To Never Trust The Client (April 16)
- Easy Spec Reviews With GitHub & Bots (April 16)
- How We Build Documentation For .NET-Based SDKs (April 14)
- View Photos With Windows Photo Viewer on Windows 10 (January 8)
- 5 Reasons Why I Switched From Mint To A Spreadsheet (January 2)
2016
βοΈ 14 published posts
- Ubiquiti EdgeRouter As Level 2 Switch (November 7)
- Binding Dynamic Build Definitions To GitHub Repos (November 4)
- GIFs, Products And Superpowers (November 1)
- On Importance Of Documentation (October 30)
- Learn Cross-Platform Push Notifications (October 30)
- Getting Build Steps With Visual Studio Team Services .NET API (October 30)
- Converging Social App UI patterns (October 28)
- On Security, Exploratorium, and Phishing (October 25)
- Using Vossibility Stack To Track GitHub Community Contributions (October 24)
- Running Latest .NET Core On VSTS Hosted Build Agent (July 7)
- Intro To Azure Notification Hubs (June 7)
- Creating A Content Validation Bot For GitHub (June 7)
- Enabling Hidden Posts In Ghost Blog Instances (June 4)
- Serve Your WordPress Blog Via HTTPS On NameCheap (For Free) (May 30)
2015
βοΈ 6 published posts
- What Programming Language To Learn? It Does Not Matter (December 23)
- What Makes A PM A Great PM (December 22)
- Command Line And vso-agent (November 25)
- Release Of Hummingbird β Distribution List Converter (November 19)
- In Between Usage And Engagement (October 23)
- DubHacks 2015 (Or Why You Should Attend DubHacks 2016) (October 19)
2014
βοΈ 2 published posts
- Non-Store Windows Phone Apps: Integrate With The Settings Hub (March 16)
- To The Incoming (And Maybe Current) Computer Science Majors (March 3)
2013
βοΈ 16 published posts
- Using Azure Notification Hubs With Windows Phone (November 3)
- DI.FM In A New Dimension β Beem Plus 2.0 Is Out (October 2)
- EnTrance - A State Of Trance Podcast App On Windows Phone (September 27)
- My Summer As A Program Manager Intern At Microsoft (September 4)
- FileExplorer For Windows Phone β Test Feedback Needed (July 25)
- Beem Is Now Open-Source (July 24)
- New Week β New FileExplorer Release (July 2)
- Testing The Future (June 26)
- MissionControl - A Flexible API for Remote Device Control (May 13)
- Last.fm API For A Windows Phone App β Auth (May 13)
- Dynamic Lockscreen Changer For Windows Phone 8, Built With ASP.NET MVC And Azure Mobile Services (March 25)
- FallFury Is Now In The Windows Store (February 9)
- FallFury eBook Available (February 2)
- FallFury β Now Available On Channel9 Coding4Fun And CodePlex (January 27)
- Last.fm API For A Windows Phone App β Scrobbling A Track (January 19)
- Moving Beem From Static XML To Azure Mobile Services (January 18)
2012
βοΈ 12 published posts
- Careful With Deserialization On Windows Phone β Encoding Matters (December 30)
- Launching Windows Store Apps From Desktop (November 28)
- Adding SkyDrive Upload Support To Your Windows Phone App (November 18)
- URI Associations In Windows Phone 8 Outside Bing Vision (November 1)
- First Summer Working at Microsoft (August 13)
- Help Students With So.Cl Research (May 8)
- Getting Windows Phone Apps Back Into The Zune Desktop Client (April 25)
- The Beginnings Of Windows Phone Control Kit (April 8)
- Are You A Student In The US? Get A Free Windows Phone (April 6)
- Windows Phone: Samsung Diagnostics App Blocks GPRS Profile (March 27)
- Pushing The Limits Of Windows Phone With EmailComposeTask (March 24)
- Setting Up A Network Capture Box With Ubuntu And Wireshark (March 22)
2011
βοΈ 24 published posts
- Dell Venue Pro EM App - Version 1.12 (December 15)
- KinectoPhone β Kinect And Windows Phone Working Together (September 8)
- Unencrypted IMAP Connection Is A Bad Idea β Here's Why (August 25)
- Windows Phone 7 Guide β Unlock Apps In A Locked Emulator (August 7)
- New Windows Phone 7 Guide β Using Your Phone As A Storage Device (August 7)
- Ringtones From Existing Content On WP7 β Why Can't You Do That? (August 6)
- Access Blocklisted Apps In The Windows Phone Emulator (August 5)
- Windows Phone Falling - Might As Well Detect This With Your App (August 4)
- Windows Phone 7 Guide β Part 6 β ISETool (July 31)
- Interview With Soma Somasegar (July 29)
- Custom Accelerometer Motions For The Windows Phone Emulator (July 28)
- Blind Ambition β An ImagineCup Documentary (July 26)
- Coding4Fun Toolkit β Now With In-App Tiles (July 25)
- Team SIMPLEXβMIRA At ImagineCup 2011 (July 10)
- Dell Venue Pro β Working With The Native Layer (June 25)
- Kinect SDK β Resources For Developers (June 19)
- Windows Phone Emulator In Airplane Mode β Unintentionally (June 2)
- ImagineCup Wordwide Finalists Announced (USA) (May 24)
- Querying The Xbox Live Game Marketplace β From Anywhere (May 18)
- Trick Windows Phone OS Into Believing Your App Is The YouTube App (May 17)
- Dis-(And Re-)assembling The Default Windows Phone YouTube Library (May 11)
- A Better Sample For The Netduino ShieldStudio 4-digit Shield (April 30)
- Launch The Maps Application Inside The Windows Phone Emulator (April 24)
- Using The Zune Web API On Windows Phone 7 (April 7)
2010
βοΈ 16 published posts
- Windows Phone 7 β First Experiences With A Real Device (September 28)
- Windows Phone Emulator: Capturing Traffic (Fiddler Or WireShark) (September 19)
- Implementing Application Extensibility (May 10)
- WPF To Replace WinForms? (May 1)
- Visual Studio 2010 Is Here (April 12)
- Drawing The XYZ Axes in XNA (April 5)
- ImagineCup β Advanced To Round 2 (April 4)
- Facebook API From C# β Getting The List Of Friends (April 1)
- Making Of: Managed Plug-In For Snippet Manager (March 29)
- Going The C++ Way With Microsoft C And C++ Compiler And Notepad++ (February 27)
- Projects Published And Verified (February 12)
- Why Community Involvement For Developers Is Important (February 7)
- Using The Google Weather API β Pros And Cons So Far (February 3)
- Weather In The Taskbar (February 2)
- IconReference β Using Own Icons (January 24)
- Welcome To My Blog! (January 22)