<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Brian Wigginton</title>
    <link>/</link>
    <description>Recent content on Brian Wigginton</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 21 Apr 2025 12:11:26 -0500</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>spacetraders.io client</title>
      <link>/projects/spacetraders/</link>
      <pubDate>Mon, 21 Apr 2025 12:11:26 -0500</pubDate>
      
      <guid>/projects/spacetraders/</guid>
      <description>spacetraders.io has been an on-and-off obsession of mine for years. Every time I return, it pulls me into a months-long spiral of automation and systems tinkering. It’s one of the most satisfying playgrounds for exploration, creativity, and code-driven strategy I’ve found. Through this game I&amp;rsquo;ve gotten to play with
good coding design API rate limiting mitigation object oriented-like modeling behavior trees/GOAP for coding ship behavior and mission execution 2d game programming with ebitengine djikstra&amp;rsquo;s algorithm for efficient waypoint navigation Unlike most games, there’s no flashy client, no install button, no graphical interface at all.</description>
    </item>
    
    <item>
      <title>reMarkable 2 Tablet</title>
      <link>/posts/2024-01-19-remarkable/</link>
      <pubDate>Fri, 19 Jan 2024 10:29:20 -0600</pubDate>
      
      <guid>/posts/2024-01-19-remarkable/</guid>
      <description>For about a year now I&amp;rsquo;ve had a reMarkable 2 e-ink tablet, and I have to say I love it! For me, it&amp;rsquo;s the perfect replacement for paper notebooks and bullet journals. I wanted to share my thoughts and pro-tips on how I use it.
From Analog to Digital I&amp;rsquo;m a big fan of taking analog notes on paper. The tactile experience of pen on paper helps me to remember things better than if I typed them down.</description>
    </item>
    
    <item>
      <title>OS Business Models</title>
      <link>/notebook/opensource-biz-model/</link>
      <pubDate>Fri, 29 Sep 2023 09:09:44 -0500</pubDate>
      
      <guid>/notebook/opensource-biz-model/</guid>
      <description>Notes from Open Source does not win by being cheaper by Anh-Tho Chuong.
profit is important even for open source projects to grow: it enabled hiring, running services and sustaining product development. don&amp;rsquo;t cater to the people looking for the cheapest option. They typically will just run your free/self hosted version. big companies don&amp;rsquo;t have an issue with SaaS as another line item, but you will have to earn a right to their budget and as long as you aren&amp;rsquo;t a top 3 line item, contract negotiation is not going to be a huge challenge.</description>
    </item>
    
    <item>
      <title>Building a Second Brain</title>
      <link>/notebook/second-brain/</link>
      <pubDate>Sat, 09 Sep 2023 14:43:36 -0500</pubDate>
      
      <guid>/notebook/second-brain/</guid>
      <description>Summary Notes from &amp;ldquo;Building a Second Brain&amp;rdquo; by Tiago Forte.
Lean towards creating through expressing knowledge rather than collecting information which isn&amp;rsquo;t put to use. By creating (expressing through distillment) content you will gain a better understanding of it.
Use a currators perspective. This is similar to the cultivation mentality for Zettelkastens.
Favorite Quotes creativity is always a remix of exisiting parts.
Engineer Luck by cultivating the second brain.</description>
    </item>
    
    <item>
      <title>Gestalt Visual Principles</title>
      <link>/notebook/gestalt/</link>
      <pubDate>Sat, 02 Sep 2023 06:39:07 -0500</pubDate>
      
      <guid>/notebook/gestalt/</guid>
      <description>Gestalt Psychology from germany in 1912, researched how we perceive pattern, form and organization. We can use these patterns in our designs, layout, and visualizations to guide the brain to make immediate inferences about data.
proximity similarity enclosure closure continuity connection </description>
    </item>
    
    <item>
      <title>Hacking in Color</title>
      <link>/posts/2023-08-31-hacking-in-color/</link>
      <pubDate>Thu, 31 Aug 2023 18:02:01 -0600</pubDate>
      
      <guid>/posts/2023-08-31-hacking-in-color/</guid>
      <description>Lately, I&amp;rsquo;ve been reading about information design and one area that I think is especially interesting is how best to use color to convey information.
Which reminded me of a time when adding a little color to a problem made all the difference.
At DEFCON 30 I participated in the Mayhem Industries CTF. One of the challenges was to find a flag given a file full of seemingly random bytes. file returned nothing.</description>
    </item>
    
    <item>
      <title>Information Dashboard Design</title>
      <link>/notebook/dashboards/</link>
      <pubDate>Wed, 30 Aug 2023 18:49:57 -0600</pubDate>
      
      <guid>/notebook/dashboards/</guid>
      <description>A dashboard is a visual display of the most important information needed to achieve one or more objectives, consolidated and arranged on a single screen so the information can be monitored at a glance.
&amp;ndash; Few, Stephen (2013) Information Dashboard Design (pp 26) Analytics Press
Purpose Visual display Important information To achieve objective(s) On a single screen At a glance What they are not for data exploration/analysis portals or scorecards reports to look up specific facts Dashboards are not for keeping up with information.</description>
    </item>
    
    <item>
      <title>Colormaps</title>
      <link>/notebook/colormaps/</link>
      <pubDate>Tue, 22 Aug 2023 18:02:01 -0600</pubDate>
      
      <guid>/notebook/colormaps/</guid>
      <description>A poorly chosen colormap between values and colors can fool the human eyes to, e.g., pick out non-existing features, or to hide important features.
https://github.com/liamedeiros/ehtplot/blob/docs/docs/COLORMAPS.ipynb Considerations Accessibility/CVD Perceptual Uniformity Printing in B/W 3d surfaces and light shading Accessibility/CVD Some colormaps (rainbow colormaps in particular) do not scale well for people with CVD (color blindness).
Perceptual Uniformity the lightness of the color in an image is a fair representation of its scalar values</description>
    </item>
    
    <item>
      <title>Procedural Terrain Generation</title>
      <link>/projects/terrain/</link>
      <pubDate>Sun, 13 Aug 2023 12:02:01 -0600</pubDate>
      
      <guid>/projects/terrain/</guid>
      <description>Noise Let&amp;rsquo;s start out with noise. You&amp;rsquo;ve probably seen noise on your tv, when you&amp;rsquo;ve tuned to a channel that doesn&amp;rsquo;t have a signal.
This sort of noise isn&amp;rsquo;t great for creating organic visuals. We need something that&amp;rsquo;s random in its vectors over time, but not random from data point to data point. Sort of like the gentle rise and fall of a stock price over many years.
To generate natural looking rises and dips, we need to use a specialized random noise generator.</description>
    </item>
    
    <item>
      <title>Robot Personality</title>
      <link>/projects/robotic-expression/</link>
      <pubDate>Mon, 26 Dec 2022 12:02:01 -0600</pubDate>
      
      <guid>/projects/robotic-expression/</guid>
      <description>ANKI Cozmo/Vector I personally think that Anki&amp;rsquo;s Cozmo was an absolutely incredible feat in both mechanical engineering and creative design. Specifically, I found it amazing the lengths the company went through to build out Cozmo&amp;rsquo;s personality. First, they hired some amazingly talented designers and animators from the likes of Pixar to help bring life to Cozmo’s personality. Then, borrowing from the world of psychology, they leveraged research around the big 5 personality traits.</description>
    </item>
    
    <item>
      <title>Homelab: Hot Aisle Temp Sensor and Dashboard</title>
      <link>/posts/2022-11-23-homelab-temp-sensor/</link>
      <pubDate>Wed, 23 Nov 2022 22:02:01 -0600</pubDate>
      
      <guid>/posts/2022-11-23-homelab-temp-sensor/</guid>
      <description>Today I decided to blow the dust off an unused WeMos D1 Mini (ESP8266 ESP-12F) and BMP280 tmep sensor to build a Hot Aisle Temperature Grafana Dashboard for my Homelab closet. In a Data Center, racks alternate between hot and cold aisles for better ventilation. In our house, it&amp;rsquo;s also known as &amp;ldquo;the back of the closet&amp;rdquo;.
Turns out, this closet actually runs pretty hot. With the door closed, temps can get close to 100°F, which is probably a bit too warm for the equipment.</description>
    </item>
    
    <item>
      <title>Tailscale: Homelab VPN Access</title>
      <link>/posts/2022-11-21-tailscale-homelab-vpn-access/</link>
      <pubDate>Mon, 21 Nov 2022 22:28:24 -0600</pubDate>
      
      <guid>/posts/2022-11-21-tailscale-homelab-vpn-access/</guid>
      <description>This is how I setup a remote access VPN to my Homelab via Tailscale. This uses Tailscale&amp;rsquo;s Subnet routers and traffic relay nodes, so you don&amp;rsquo;t have to install the Tailscale Client on each and every machine in your lab in order to connect to it.
Route Advertising I have a Linux VM in my Homelab that&amp;rsquo;s running the Tailscale client as an Exit Node. I also want this machine to provide routing to the rest of my lab.</description>
    </item>
    
    <item>
      <title>Antisiphon Flash CTF #3 2022 Writeup</title>
      <link>/posts/2022-09-18-antisiphon-22-ctf/</link>
      <pubDate>Sun, 18 Sep 2022 13:12:09 -0500</pubDate>
      
      <guid>/posts/2022-09-18-antisiphon-22-ctf/</guid>
      <description>Unfortunately I didn&amp;rsquo;t make it through all these challenges, but I did want to share my answers to the one&amp;rsquo;s I did complete, share my thought process, and initial thoughts on the challenges I didn&amp;rsquo;t get.
Dauntless Defacement (Forensics) We are given a PCAP file. Open this in wireshark and start tracing TCP messages. Eventually you&amp;rsquo;ll find the message where the attacker was playing with one of the dns lookup endpoints.</description>
    </item>
    
    <item>
      <title>Tailscale: Homelab Exit Node</title>
      <link>/posts/2022-08-30-tailscale-homelab-exitnode/</link>
      <pubDate>Tue, 30 Aug 2022 23:03:14 -0500</pubDate>
      
      <guid>/posts/2022-08-30-tailscale-homelab-exitnode/</guid>
      <description>While at DEFCON 30 this year, I used my PIA vpn subscription. A lot.
But it would have been great to be able to click a button and connect back to my house to gain access to some services, and also use that as a secure tunnel to the open internet. Well I think I&amp;rsquo;ve finally got a great solution going using Tailscale.
Tailscale is a VPN service that makes the devices and applications you own accessible anywhere in the world, securely and effortlessly.</description>
    </item>
    
    <item>
      <title>DEFCON 30</title>
      <link>/posts/defcon30/</link>
      <pubDate>Mon, 15 Aug 2022 22:02:01 -0600</pubDate>
      
      <guid>/posts/defcon30/</guid>
      <description>I was finally able to make it out to DEFCON, which has been on my bucket list for a loooong time. Thank you runZero for covering travel and badge fees for this trip, it was a blast!
Highlights The Badge Social Engineering Village Incredible what some people are able to do with a phone and some pre-compiled research.
Mayhem Industries - Oil Rig CTF A group of us from runZero decided to take a stab at the Mayhem Industries, Oil Rig CTF.</description>
    </item>
    
    <item>
      <title>Stock Market Dashboard with Vue.js</title>
      <link>/projects/vue3-stocks/</link>
      <pubDate>Wed, 22 Jun 2022 12:02:01 -0600</pubDate>
      
      <guid>/projects/vue3-stocks/</guid>
      <description>Overview I built this to both help visualize market data and play with the vue3 composition api and deployment using Docker on AWS&amp;rsquo;s App Runner and Container Registry services. Unfortunately, in May 2023, Yahoo Finance disabled anonymous usage of most of their useful api endpoints which broke this app.
Gallery A green day on wallstreet showing the top 100 stocks by market sectors A mixed day on wallstreet showing the top 100 stocks by market sectors Visualizing P/E market data for the SP500 Visualizing Volume data for the SP500 using the Helix color scheme.</description>
    </item>
    
    <item>
      <title>HTB: Pandora Writeup</title>
      <link>/posts/2022-05-01-htb-pandora/</link>
      <pubDate>Sun, 01 May 2022 21:38:58 -0500</pubDate>
      
      <guid>/posts/2022-05-01-htb-pandora/</guid>
      <description>Overview Writeup for the Pandora machine on hackthebox.com. I tried to format this document as a journal of sorts, documenting progress, thoughts and discoveries as I uncovered them.
This challenge took me a few days, and I got stuck more than a few times along the way. I cheated by reading some other writeups to get unstuck. Don&amp;rsquo;t get discouraged, this was fun and challenging. The goal is to learn!</description>
    </item>
    
    <item>
      <title>Kitty Terminal</title>
      <link>/posts/2022-04-14-kitty-mac-config/</link>
      <pubDate>Thu, 14 Apr 2022 15:09:28 -0500</pubDate>
      
      <guid>/posts/2022-04-14-kitty-mac-config/</guid>
      <description>My good friend Ryan Gibbons introduced me to Kitty, an alternative terminal application. As a long time iterm2 user, I&amp;rsquo;ve come to love some of the features it provides, specifically, vertical split panes, quake like dropdown access, and other customizations.
Here&amp;rsquo;s how I moved to Kitty and hacked those same features.
Config TLDR: Here&amp;rsquo;s my config file, with comments removed for brevity.
font_family Hack font_size 13.0 enable_audio_bell no visual_bell_duration 0.</description>
    </item>
    
    <item>
      <title>CliftonStrengths</title>
      <link>/notebook/cliftonstrengths/</link>
      <pubDate>Mon, 24 Jan 2022 15:23:21 -0600</pubDate>
      
      <guid>/notebook/cliftonstrengths/</guid>
      <description>My personal results from the CliftonStrengths test I took back in 2014. That&amp;rsquo;s nearly 8 years ago! (I wonder how my results would match if I took the test today.) In some cases I think the results were pretty accrate and in some others I think it was way off.
1. Relator People who are especially talented in the Relator theme enjoy close relationships with others. They find deep satisfaction in working hard with friends to achieve a goal.</description>
    </item>
    
    <item>
      <title>Cocktail Genius</title>
      <link>/projects/cocktail-app/</link>
      <pubDate>Sat, 08 Jan 2022 15:14:47 -0600</pubDate>
      
      <guid>/projects/cocktail-app/</guid>
      <description>I thought it would be cool to have a Cocktail app that would recommend me cocktails based on my flavor preferences. So I built it. Uses vue.js, working on making it an installabled PWA or maybe a mobile app if people like it.
Here it is! ==&amp;gt; http://bar.bwiggs.com
Goals ✔ Pretty Cocktail List Cocktail database that I can filter based on what I have in my bar. Would love some categories such as classics, new age, tiki&amp;hellip; Collections based on Cocktail Codex categories?</description>
    </item>
    
    <item>
      <title>Generating Random Unique IDs</title>
      <link>/posts/2021-08-06-unique-id-generation/</link>
      <pubDate>Fri, 06 Aug 2021 21:59:30 -0500</pubDate>
      
      <guid>/posts/2021-08-06-unique-id-generation/</guid>
      <description>While looking at the Aftership API, I noticed their public tracking IDs looked interesting. Example h4qys6mtkkhnkkjvco35a017 This led me down a path of trying to understand what those values could be and how to make them on my own.
Considerations Do these IDs need to be sortable by time? roughly time sortable? Firebase uses a modified base64 alphabet so that sorting still works lexigraphically. and they do this on the client side!</description>
    </item>
    
    <item>
      <title>Plotting Big-O with gnuplot</title>
      <link>/posts/plotting-complexity-w-gnuplot/</link>
      <pubDate>Thu, 05 Aug 2021 14:42:21 -0500</pubDate>
      
      <guid>/posts/plotting-complexity-w-gnuplot/</guid>
      <description>Use gnuplot command to run a plt file and ouput a png file.
gnuplot bigo.plt # File: bigo.plt set title &amp;#34;Big-O Complexity Chart&amp;#34; set output &amp;#34;bigo.png&amp;#34; # output file name set term png # output as PNG set grid # show a grid set xlabel &amp;#34;Elements&amp;#34; set ylabel &amp;#34;Operations&amp;#34; set format xy &amp;#34;&amp;#34; # hide axis ranges set xrange [1:1000000000] set yrange [0:1000000000] set logscale xy # logarithmic scale for x and y set style line 1 lw 5 plot\ gamma(x+1) title &amp;#34;O(n!</description>
    </item>
    
    <item>
      <title>Hugo Chroma Syntax Highlighting Dark/Light Mode</title>
      <link>/posts/2021-08-03-hugo-syntax-highlight-dark-light/</link>
      <pubDate>Tue, 03 Aug 2021 14:39:23 -0500</pubDate>
      
      <guid>/posts/2021-08-03-hugo-syntax-highlight-dark-light/</guid>
      <description>I love a good dark mode theme, but in bright light settings sometimes I want something lighter. For my blog I strive to support both dark and light mode themes depending on the user&amp;rsquo;s settings.
Hugo uses Chroma for syntax highlighting. Since it renders the highlighted syntax at build time, it&amp;rsquo;s not immediately able to provide a dynamic dark/light style based on the user&amp;rsquo;s system settings. However, it is possible do this using media queries and css inlining.</description>
    </item>
    
    <item>
      <title>My Journey into Computing</title>
      <link>/posts/2021-08-02-my-computing-journey/</link>
      <pubDate>Mon, 02 Aug 2021 20:38:25 -0500</pubDate>
      
      <guid>/posts/2021-08-02-my-computing-journey/</guid>
      <description>First PC The first family computer we had was a 50MHz Gateway 2000. I remember waiting for it every day after school hoping the huge cow shipping boxes had arrived.
I copied the Lion King album and nearly filled the harddisk! This was around the time when Napster came out, which I was a fan of, but didn&amp;rsquo;t really know how to use it. I would play around on AOL, and download punters to see what those did.</description>
    </item>
    
    <item>
      <title>Linux Login with your face using Howdy</title>
      <link>/posts/2021-08-02-x1c6-facial-login/</link>
      <pubDate>Mon, 02 Aug 2021 15:32:26 -0500</pubDate>
      
      <guid>/posts/2021-08-02-x1c6-facial-login/</guid>
      <description>I&amp;rsquo;ve been using fingerprint authentication ever since I started using my X1 Carbon 6 laptop as my daily driver. However, when I&amp;rsquo;m hooked up to my external monitor/hub, reaching across my desk to login is annoying! Fortunately, there&amp;rsquo;s a great project called Howdy that providess &amp;ldquo;Windows Hello™ style facial authentication for Linux&amp;rdquo;.
This is how I setup Howdy on my X1 Carbon Gen 6 running Mint Linux Uma with multiple cameras.</description>
    </item>
    
    <item>
      <title>Custom X1 Carbon 6 BIOS Logo Image</title>
      <link>/posts/2021-08-01-x1c6-custom-bios-splash/</link>
      <pubDate>Sun, 01 Aug 2021 23:42:20 -0500</pubDate>
      
      <guid>/posts/2021-08-01-x1c6-custom-bios-splash/</guid>
      <description>Proceed at your own risk. There be dragons.
This article requires you to mess with your bios, which could lead to you having a bricked machine. Be careful!
I&amp;rsquo;ve spent a stupid amount of time trying to replace the default lenovo bios splash image on my x1 Carbon 6, and I still can&amp;rsquo;t get it to work! It does seem like there are at least a few others out there also struggling with this on reddit and on the lenovo forums.</description>
    </item>
    
    <item>
      <title>Cyberdefenders Hacked Challenge EWF Mounts</title>
      <link>/posts/2021-07-25-cyberdefenders-hacked/</link>
      <pubDate>Sun, 25 Jul 2021 03:35:24 -0500</pubDate>
      
      <guid>/posts/2021-07-25-cyberdefenders-hacked/</guid>
      <description>CyberDefenders is a training platform focused on the defensive side of cybersecurity, aiming to provide a place for blue teams to practice, validate the skills they have, and acquire the ones they need.
CyberDefenders provides a bunch of hands on practice challenges for people to test out their forensics chops. Each challenge has a downloadable disk image that you&amp;rsquo;ll need to mount locally in order to snoop aroud and answer the challenge questions.</description>
    </item>
    
    <item>
      <title>Linux GTK Stock Screener</title>
      <link>/projects/gtk-stocks/</link>
      <pubDate>Sat, 27 Feb 2021 00:00:00 -0500</pubDate>
      
      <guid>/projects/gtk-stocks/</guid>
      <description>Earlier this year, I was playing around with stock trading. I wanted a way to quickly pick stocks that were performing according to some Technical Analysis signal. During the great Texas Freeze and Power Crisis I began building my first linux desktop app using GJS, GTK3, Gnome Builder. Over the following weeks I kept adding features and it became a great little tool to monitor what was going on in the market.</description>
    </item>
    
    <item>
      <title>Linux Mint on Thinkpad x1 Carbon Gen 6</title>
      <link>/posts/2020-12-18-x1c6-linux/</link>
      <pubDate>Fri, 18 Dec 2020 22:07:45 -0600</pubDate>
      
      <guid>/posts/2020-12-18-x1c6-linux/</guid>
      <description>After futzing around with the x230 over the years, I finally decided it was time for an upgrade. I found a great deal on this X1C6 on reddit and decided to pull the trigger. Everything went smooth, but shipping took forever as the world was in the middle of a pandemic and the machine had to be shipped out of Canada.
So far I&amp;rsquo;m really happy with this machine! I&amp;rsquo;ll update this page as I make changes or workaround issues.</description>
    </item>
    
    <item>
      <title>Ubiquiti UDM Pro bypass 5268ac</title>
      <link>/posts/2020-11-30-pace-udmp-passthrough/</link>
      <pubDate>Mon, 30 Nov 2020 20:49:20 +0000</pubDate>
      
      <guid>/posts/2020-11-30-pace-udmp-passthrough/</guid>
      <description>I started experiencing issues after configuring my Pace 5268ac modem from ATT for DMZ+ mode to my Ubiquiti UDM Pro router.
Git Checkouts and pulls would hang at times Blocks NTP packets! Docker container downloads would hang. There are a few ways to bypass the ATT RG:
Plug in the RG and let it handle the cert negotiation. Spoof the RG mac address on the UDMP, unplug the RG and plug in the UDMP.</description>
    </item>
    
    <item>
      <title>OpenBSD 6.7 on a Thinkpad x230</title>
      <link>/posts/2020-07-25-openbsd/</link>
      <pubDate>Sat, 25 Jul 2020 21:15:14 -0500</pubDate>
      
      <guid>/posts/2020-07-25-openbsd/</guid>
      <description>Overview Since setting up my homelab, I&amp;rsquo;ve been able to reclaim my now idle Thinkpad x230. One thing that I have never done, is run BSD. So this page is all about my experience running OpenBSD 6.7 on the x230, and lesson I learned along the way.
Lessons Installation is FAST Like, real fast. I went from booting the installer to a login screen in around 10 minutes.
OpenBSD docs are awesome.</description>
    </item>
    
    <item>
      <title>Subnet Calculator with vue.js</title>
      <link>/projects/subnet-calc/</link>
      <pubDate>Mon, 25 Feb 2019 23:28:04 -0600</pubDate>
      
      <guid>/projects/subnet-calc/</guid>
      <description>A simple subnet calculator I built to gain familiarity with vue.js and IPv4 CIDR calculations.
https://bwiggs.github.io/subnet-calculator/</description>
    </item>
    
    <item>
      <title>Message Authentication Codes</title>
      <link>/posts/2019-02-02-message-authentication-codes/</link>
      <pubDate>Sat, 02 Feb 2019 23:11:45 -0600</pubDate>
      
      <guid>/posts/2019-02-02-message-authentication-codes/</guid>
      <description>If I send you a message, how can you be sure that the message is from me and the that message&amp;rsquo;s contents haven&amp;rsquo;t been altered? Phrased another way, how can you be sure that the message is authentic?
A message that is authentic guarantees:
Data Integrity: The message is unaltered. Someone didn&amp;rsquo;t tamper with the message as it was on its way to you. Sender Authenticity: The message is from someone you trust.</description>
    </item>
    
    <item>
      <title>WTFreon</title>
      <link>/posts/2018-09-13-freon/</link>
      <pubDate>Thu, 13 Sep 2018 08:20:00 -0500</pubDate>
      
      <guid>/posts/2018-09-13-freon/</guid>
      <description>Did you know &amp;ldquo;Freon&amp;rdquo; is being phased out?
I didn&amp;rsquo;t, I found out from my HVAC service technician. By January 1, 2020, it will be illegal for companies to produce or import Freon in the United States. Not believeing it at first, I decided to do some research.
TLDR: The refigerant (R-22) used in AC systems before 2010, will no longer be produced or imported starting on January 1, 2020. You&amp;rsquo;ll still be able to purchase R-22 to top off your system, but it will only come from R-22 recycling processes, meaning prices will be going up!</description>
    </item>
    
    <item>
      <title>cat without comments</title>
      <link>/posts/2018-08-31-cat-coments/</link>
      <pubDate>Fri, 31 Aug 2018 21:53:57 -0500</pubDate>
      
      <guid>/posts/2018-08-31-cat-coments/</guid>
      <description>Here&amp;rsquo;s how to print a file to stdout and remove all the comments vie the cli:
awk &amp;#39;!/^ *#/ &amp;amp;&amp;amp; NF&amp;#39; ~/.datadog-agent/datadog.yaml </description>
    </item>
    
    <item>
      <title>Golang 2 Draft Designs</title>
      <link>/posts/2018-08-30-golang-2-drafts/</link>
      <pubDate>Thu, 30 Aug 2018 08:40:33 -0500</pubDate>
      
      <guid>/posts/2018-08-30-golang-2-drafts/</guid>
      <description>Some exciting news came out of GopherCon 2018 this week, Go 2 Draft Designs! These draft designs are the first steps in defining how these new features might work in the future version of GoLang. The main purpose is to generate discussion within the community so the best possible solution to the problem is implemented.
Here are the 3 drafted features:
Error Handling Error Values Generics! Error Handling In Go 2, the Go team wants to the way gophers write code to handle errors, specifically making it less verbose.</description>
    </item>
    
    <item>
      <title>We don&#39;t rise to the level of our expectations, we fall to the level of our training.</title>
      <link>/quotes/archilochus/</link>
      <pubDate>Thu, 23 Aug 2018 17:52:30 -0600</pubDate>
      
      <guid>/quotes/archilochus/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Far better is it to dare mighty things, to win glorious triumphs, even though checkered by failure... than to rank with those poor spirits who neither enjoy nor suffer much, because they live in a gray twilight that knows not victory nor defeat.</title>
      <link>/quotes/dare-mighty/</link>
      <pubDate>Thu, 23 Aug 2018 17:51:20 -0600</pubDate>
      
      <guid>/quotes/dare-mighty/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Humility is a knowledge of our weaknesses, confidence is a knowledge of our strengths, and ego is something dangerous with none of the former and a skewed sense of the latter.</title>
      <link>/quotes/humility/</link>
      <pubDate>Thu, 23 Aug 2018 17:43:37 -0600</pubDate>
      
      <guid>/quotes/humility/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Images Fast &amp; Cheap - Generating Low Quality Images with Imagemagick</title>
      <link>/posts/2018-02-10-low-quality-image-conversion/</link>
      <pubDate>Sat, 10 Feb 2018 22:46:58 -0600</pubDate>
      
      <guid>/posts/2018-02-10-low-quality-image-conversion/</guid>
      <description>I needed a way to generate low quality blurry images for use with progressively.js on this blog. The images need to be only a few 10k max. These images are just placeholders to be used until the larger one can be pulled in.
Imagemagick to the rescue! You can use the following commands to convert images into low quality ones.
# resive image.png to 800px wide and jpg format convert image.</description>
    </item>
    
    <item>
      <title>iptables Cheatsheet</title>
      <link>/posts/2018-02-10-iptables-cheatsheet/</link>
      <pubDate>Sat, 10 Feb 2018 01:30:02 -0600</pubDate>
      
      <guid>/posts/2018-02-10-iptables-cheatsheet/</guid>
      <description>Here&amp;rsquo;s a quick reference for configuring iptables firewall rules. I don&amp;rsquo;t use this enough to have it all memorized, so this post will hopefully come in useful for the next time I need to configure a firewall.
# show basic filters iptables -L # show filters with rules numbers an packet counts, using ips. iptables -nvL --line-numbers # zero out bytes in verbose listing iptables -Z # dump current rules in iptables-save format # (useful for formatting new rules) iptables -S # drop/reject all inbound packets by default iptables -P INPUT DROP iptables -P INPUT REJECT # add a rule to the end of a chain allow all http traffic iptables -A INPUT -p tcp --dport 80 -j ACCEPT # insert a rule into a chain # use the --line-numbers flag from above to get $RULE iptables -I INPUT $RULE -p tcp --dport 80 -j ACCEPT # allow all local traffic iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # delete a rule from a chain iptables -D INPUT $RULE # delete all rules from a chain iptables -F INPUT $RULE # delete all chains from the firewall table iptables -X # create a new chain called $CHAIN iptables -N $CHAIN # allowing incoming and established traffic iptables -I INPUT 1 -m state --state ESTABLISHED,RELATED -j ACCEPT # block an ip completely iptables -A INPUT -s X.</description>
    </item>
    
    <item>
      <title>go-nexrad</title>
      <link>/projects/go-nexrad/</link>
      <pubDate>Mon, 20 Nov 2017 20:15:16 -0600</pubDate>
      
      <guid>/projects/go-nexrad/</guid>
      <description>August 25, 2017, the weekend Hurricane Harvey hit Texas I was up all hours monitoring the storm and relevant news feeds.
One tool I found was Radarscope, a superb radar app that has both desktop and mobile applications. Curious as to how weather radar imaging worked, I decided to try and figure out how to render my own weather radar images.
Here&amp;rsquo;s a sample screenshot from Radarscope of Harvey showing multiple radar products.</description>
    </item>
    
    <item>
      <title>Quadtree Pixel Art</title>
      <link>/projects/quadtree-art/</link>
      <pubDate>Thu, 29 Jun 2017 21:28:14 -0600</pubDate>
      
      <guid>/projects/quadtree-art/</guid>
      <description>Quadtrees Quadtrees are a tree like data structure where each node has 0 or 4 children. Quads have a few use cases including collision detection, spatial indexing, and image processing. Wikipedia&amp;rsquo;s Quadtree entry has a decent overview. If you&amp;rsquo;re looking for a more interactive introduction, definitely check out Jim Kang&amp;rsquo;s - An interactive explanation of quadtrees.
See more of my sample images below
Generating Quadtree Art The basic idea is that you recursively divide an image into 4 quadrants.</description>
    </item>
    
    <item>
      <title>Postgres Insert row with only an auto increment column</title>
      <link>/2015/06/postgres-insert-row-with-only-an-auto-increment-column/</link>
      <pubDate>Wed, 03 Jun 2015 18:55:54 +0000</pubDate>
      
      <guid>/2015/06/postgres-insert-row-with-only-an-auto-increment-column/</guid>
      <description>How do you insert a record into a postgres table that has a single auto incrementing primary key field? There weren’t many hits on google with the solution, so hopefully this helps someone else:
INSERT INTO [table] (id) values (default); I originally tried using null and 0 as the values, but null throws a primary key constraint error and 0 actually gets inserted as 0.</description>
    </item>
    
    <item>
      <title>The Productivity Technique You’ve Been Missing</title>
      <link>/2015/03/the-productivity-technique-youve-been-missing/</link>
      <pubDate>Fri, 27 Mar 2015 01:59:50 +0000</pubDate>
      
      <guid>/2015/03/the-productivity-technique-youve-been-missing/</guid>
      <description>I’ve been crushing it. I’ve gotten more done in my spare time over the last few weeks than in the last few months.
If you’re anything like me, you’re easily distracted. Hacker News, Reddit, Twitter and Netflix all are available with fresh new content at any hour of the day. I can’t count how many hours I’ve lost consuming information that I rarely retained.
For the past month I’ve been using the Pomodoro Technique to focus on stuff I need to get done at work, as well as around the house.</description>
    </item>
    
    <item>
      <title>The fruit of your work grows on other people&#39;s trees.</title>
      <link>/quotes/fruit/</link>
      <pubDate>Mon, 02 Mar 2015 06:09:57 +0000</pubDate>
      
      <guid>/quotes/fruit/</guid>
      <description></description>
    </item>
    
    <item>
      <title>DalliError: No server available – Using Rails, AWS EC2 and Elasticache</title>
      <link>/2014/02/dallierror-no-server-available-using-rails-aws-ec2-and-elasticache/</link>
      <pubDate>Fri, 28 Feb 2014 23:08:31 +0000</pubDate>
      
      <guid>/2014/02/dallierror-no-server-available-using-rails-aws-ec2-and-elasticache/</guid>
      <description>We deployed our Rails application today and found that one of our AWS EC2 servers wasn’t able to connect to our Elasticache instance using the Ruby dalli gem.
DalliError: No server available Fortunately this isn’t a ruby/rails problem, it’s a permissions issue.
In order to allow an Amazon EC2 instance to access your cache cluster, you will need to grant the EC2 security group associated with the instance access to your cache security group.</description>
    </item>
    
    <item>
      <title>Setting Default HTTP Cache Headers in Rails</title>
      <link>/2013/10/setting-default-http-cache-headers-in-rails/</link>
      <pubDate>Fri, 25 Oct 2013 00:53:28 +0000</pubDate>
      
      <guid>/2013/10/setting-default-http-cache-headers-in-rails/</guid>
      <description>We’re working on putting our current product behind Amazon Cloudfront. With Cloudfront, if you don’t set a Cache-Control header with an expiry time, Cloudfront will cache the content for 24 hours by default. Instead of littering all my controller actions with cache settings, I wanted to add a default value then be able to override on and action by action basis.
First, here’s how you actually set a cache-control header. This would go in a controller action.</description>
    </item>
    
    <item>
      <title>jQuery’s Advanced Attribute Selectors</title>
      <link>/2013/10/jquerys-advanced-attribute-selectors/</link>
      <pubDate>Thu, 17 Oct 2013 07:43:57 +0000</pubDate>
      
      <guid>/2013/10/jquerys-advanced-attribute-selectors/</guid>
      <description>TIL that jQuery has some pretty cool attribute querying capability.
I knew you could select element by attributes by simple adding them with brackets:
$(&#39;a[rel]&#39;) And that you can also match against content inside the attributes.
$(&#39;a[rel=&#34;nofollow&#34;]&#39;) $(&#39;a[rel!=&#34;nofollow&#34;]&#39;) But this is where is gets cool. You’re not just limited to equal or not equal. You can also provide other operators for more advanced matching scenarios:
$(&#39;a[rel|=&#34;nofollow&#34;]&#39;) // prefix search: &#34;nofollow-&#34; $(&#39;a[rel*=&#34;</description>
    </item>
    
    <item>
      <title>Array-like objects in JavaScript</title>
      <link>/2013/09/array-like-objects-in-javascript/</link>
      <pubDate>Sun, 29 Sep 2013 16:13:52 +0000</pubDate>
      
      <guid>/2013/09/array-like-objects-in-javascript/</guid>
      <description>I learned something interesting in John Resig’s book Secrets of the JavaScript Ninja. How could you add Array like properties to your objects? At first thought, or at least my first thought, I would add an array to the object and then just use it internally as a collection, or maybe set the prototype to Array.prototype.
However, John points out a much simpler way. You can simply use Array’s prototype methods on your object using call.</description>
    </item>
    
    <item>
      <title>The Art of Electronics – International Edition</title>
      <link>/2013/09/the-art-of-electronics-international-edition/</link>
      <pubDate>Sat, 28 Sep 2013 00:26:26 +0000</pubDate>
      
      <guid>/2013/09/the-art-of-electronics-international-edition/</guid>
      <description>I’ver recently begun diving into Electronics and Circuitry and wanted to pick up a book to become more acquainted with the concepts.
The internet seems to be an agreement that “The Art of Electronics (2nd Edition)” by Paul Horowitz and Winfield Hill is the authoritative book on the subject, but a brand new hardcover copy from Amazon will set you back close to $100 USD. I found a lot of overseas booksellers on EBAY who claimed to have the same book for around $30.</description>
    </item>
    
    <item>
      <title>RSpec AssetNotPrecompiledError</title>
      <link>/2013/09/rspec-assetnotprecompilederror/</link>
      <pubDate>Wed, 25 Sep 2013 20:04:21 +0000</pubDate>
      
      <guid>/2013/09/rspec-assetnotprecompilederror/</guid>
      <description>I was writing a spec for a method that used a built-in Rails helper method, image_path. Now my method worked on my development environment, but did not work when my tests ran, and instead threw a:
Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError: path/to/asset.png isn&#39;t precompiled Solution It took me more than a few minutes to remember that I needed to change a setting in the test.rb envoronment file.
# change config.assets.compile = false # to config.</description>
    </item>
    
    <item>
      <title>Autotest Repeatedly Runs</title>
      <link>/2013/09/autotest-repeatedly-runs/</link>
      <pubDate>Wed, 25 Sep 2013 19:11:12 +0000</pubDate>
      
      <guid>/2013/09/autotest-repeatedly-runs/</guid>
      <description>While using the autotest gem on a project, I found that my tests would run regardless of if a file was saved or not. After some googling, Steve Walker pointed me in the right direction.
Turns out, rcov and the test.log file were being updated after each test causing autotest to trigger again. The fix was to add the following to the .autotest file within my project, ignoring certain files.</description>
    </item>
    
    <item>
      <title>Stubbing the request object with RSpec</title>
      <link>/2013/09/stubbing-the-request-object-with-rspec/</link>
      <pubDate>Tue, 24 Sep 2013 23:59:06 +0000</pubDate>
      
      <guid>/2013/09/stubbing-the-request-object-with-rspec/</guid>
      <description>I have some decorator logic that needs to generate a url using the request object. However, when running specs a request object isn’t created, so you have to stub one out.
The key was to use any_instance on the decorator to ensure all instances received the stub. Here’s the code I came up with:
describe &#39;ArticleDecorator&#39; describe &#39;#opengraph_image_url&#39; do it &#39;should provide the default image as a fallback&#39; do request = stub(host: &#39;local.</description>
    </item>
    
    <item>
      <title>Slides: Leadership Without Management: Scaling Organizations by Scaling Engineers</title>
      <link>/2013/09/slides-leadership-without-management-scaling-organizations-by-scaling-engineers/</link>
      <pubDate>Mon, 16 Sep 2013 05:36:40 +0000</pubDate>
      
      <guid>/2013/09/slides-leadership-without-management-scaling-organizations-by-scaling-engineers/</guid>
      <description>Lot’s of great stuff in this terrific set of slides by Bryan Cantrill at Joyent presenting how to scale up your engineering teams without bringing in a bunch of extraneous process and middle management.
I’ve always had questions on what the best way to build engineering teams is. Bryan seems to hit the nail on the head with his deck. Some of my favorite quotes:
“Hierarchical titles are not uplifting, they’re corrosive”</description>
    </item>
    
    <item>
      <title>Security Engineering: A Guide to Building Distributed Dependable Systems</title>
      <link>/2013/09/security-engineering-a-guide-to-distributed-dependable-systems/</link>
      <pubDate>Wed, 11 Sep 2013 04:39:04 +0000</pubDate>
      
      <guid>/2013/09/security-engineering-a-guide-to-distributed-dependable-systems/</guid>
      <description>Ross Anderson has released the Second Edition of his book Security Engineering: A Guide to Building Distributed Dependable Systems and it&amp;rsquo;s free to read online, each chapter is released seperately in PDF format.
Here’s the chapter list from the Table of Contents:
What is Security Engineering Usability and Psychology Protocols Access Control Cryptography Distributed Systems Economics Multilevel Security Multilateral Security Banking and Bookkeeping Physical Protection Monitoring and Metering Nuclear Command and Control Security Printing and Seals Biometrics Physical Tamper Resistance Emission Security API Security Electronic and Information Warfare Telecom System Security Network Attack and Defence Copyright and DRM The Bleeding Edge Terror, Justice and Freedom Managing the Development of Secure Systems System Evaluation and Assurance Conclusions </description>
    </item>
    
    <item>
      <title>Share localhost with SSH &amp; Apache</title>
      <link>/2012/10/share-localhost-with-ssh-apache/</link>
      <pubDate>Tue, 23 Oct 2012 07:11:34 +0000</pubDate>
      
      <guid>/2012/10/share-localhost-with-ssh-apache/</guid>
      <description>There&amp;rsquo;s been a lot of services released lately that aim to assist developers share their local development environments over the internet. localtunnel, showoff.io and pagekite come to mind, just to name a few. However, you can roll your own forwarding service if you have SSH access to a server running Apache fairly easily.
The Big Picture First, setup a webserver to listen for connections to demo.example.com. When a user connects to the webserver, it will attempt to proxy their request to port 1337 (demo.</description>
    </item>
    
    <item>
      <title>npm jshint – command not found after install</title>
      <link>/2012/10/npm-jshint-command-not-found/</link>
      <pubDate>Sun, 21 Oct 2012 05:06:27 +0000</pubDate>
      
      <guid>/2012/10/npm-jshint-command-not-found/</guid>
      <description>I was getting a new machine up and running and decided to play with zsh. Later that evening I was going to write some JavaScript and wanted to lint my code with the handy jshint tool. So I installed it with NPM:
$ npm install jshint -g And was then greeted with a command not found error:
$ jshint zsh: correct jslint to slit [nyae]? n zsh: command not found: jslint Turns out I needed to add the npm bin directory to my PATH, as it didn’t get added there automatically since I installed zsh after node/npm.</description>
    </item>
    
    <item>
      <title>Jenkins &amp; JSHint – Integrating with Checkstyles and Violations</title>
      <link>/2012/10/jenkins-jshint-integrating-with-checkstyles-and-violations/</link>
      <pubDate>Fri, 05 Oct 2012 01:41:40 +0000</pubDate>
      
      <guid>/2012/10/jenkins-jshint-integrating-with-checkstyles-and-violations/</guid>
      <description>Prerequisite You need to have some form of jshint installed on your server. Instructions of how to do that are out of scope for this post, and should be able to be easily found on the internet. I used the version that installed with npm.
Jenkins Build Tasks This is a very simple setup that uses 2 Build &amp;gt; Execute Shell tasks. In the first shell task I created the checkstyle output:</description>
    </item>
    
    <item>
      <title>SVN Remove &amp; Ignore Causing Tree Conflict</title>
      <link>/2012/09/svn-remove-ignore-causing-tree-conflict/</link>
      <pubDate>Mon, 10 Sep 2012 18:27:35 +0000</pubDate>
      
      <guid>/2012/09/svn-remove-ignore-causing-tree-conflict/</guid>
      <description>We has some files that were being tracked in SVN that we needed to be untracked and ignored, specifically a web.config file, which was being dynamically generated. We removed and ignored the file in a feature branch. We then merged the feature branch into trunk. Then ran svn update on our servers, which caused a tree conflict.
After some googling, the resolution was the following command on the server:
svn resolve --accept working -R .</description>
    </item>
    
    <item>
      <title>Filename Cache Busting with CakePHP</title>
      <link>/2012/07/filename-cache-busting-with-cakephp/</link>
      <pubDate>Thu, 19 Jul 2012 02:38:14 +0000</pubDate>
      
      <guid>/2012/07/filename-cache-busting-with-cakephp/</guid>
      <description>This assumes you’re using CakePHP 2.x
CakePHP let’s you use timestamp based cache busting on your assets by enabling Asset.timestamp in your core.php file. By enabling this and using the builtin HtmlHelper::css and HtmlHelper::script methods, your assets will have a timestamp appended to them as a query string. For example:
/app.js?123456789 However, older squid proxies will not cache anything that has a query string, thus preventing your files from being cached.</description>
    </item>
    
    <item>
      <title>Content Switching with HAProxy</title>
      <link>/2012/04/content-switching-with-haproxy/</link>
      <pubDate>Mon, 09 Apr 2012 16:08:07 +0000</pubDate>
      
      <guid>/2012/04/content-switching-with-haproxy/</guid>
      <description>Content Switching Content-switching is an OSI layer 7 application switching technique, which in lamans terms means that it has access to the HTTP requests and responses of your application. By inspecting each request and response, it make decision on where to send those requests and how to handle responses.
HAProxy is an open source load balancing tool that also has the ability to implement content switching.
Proxies &amp;amp; Reverse Proxies You might be familiar with a Proxy, which is basically something that sits between the client and the server.</description>
    </item>
    
    <item>
      <title>Web.config User Specific appSettings</title>
      <link>/2012/03/web-config-user-specific-appsettings/</link>
      <pubDate>Tue, 20 Mar 2012 21:27:51 +0000</pubDate>
      
      <guid>/2012/03/web-config-user-specific-appsettings/</guid>
      <description>On an MVC.NET project at work, we came across the need to be able to override the web.config’s appSettings uniquely on each of our local environments. Turns out there’s a very easy way to do just that inside the web.config file.
Just add the file attribute to the node in your web.config, and add a local.config file to the project root.
&amp;lt;!-- WEB.CONFIG --&amp;gt; &amp;lt;configuration&amp;gt; ... &amp;lt;appSettings file=&#34;local.config&#34;&amp;gt; ... &amp;lt;/appSettings&amp;gt; .</description>
    </item>
    
    <item>
      <title>Ubuntu 11.10 Blank Screen with underline after boot with VMWare Fusion</title>
      <link>/2012/03/ubuntu-11-10-blank-screen-with-underline-after-boot-with-vmware-fusion/</link>
      <pubDate>Mon, 19 Mar 2012 04:36:23 +0000</pubDate>
      
      <guid>/2012/03/ubuntu-11-10-blank-screen-with-underline-after-boot-with-vmware-fusion/</guid>
      <description>After installing the latest version of Ubuntu Server with VMWare Fusion, I wasn’t able to get to a terminal. The machine would boot and then just give me a blank line with a single underscore. Turns out all I needed to do was switch from TTY7.
CMD + OPT + CTL + [F1 - F7]</description>
    </item>
    
    <item>
      <title>Django Fixtures: JSON Formatting</title>
      <link>/2012/01/django-json-fixtures/</link>
      <pubDate>Mon, 09 Jan 2012 04:25:41 +0000</pubDate>
      
      <guid>/2012/01/django-json-fixtures/</guid>
      <description>Came across an issue with Django Fixtures using the JSON format. Here was my fixture:
{ &#34;pk&#34;: 1, &#34;model&#34;: &#34;core.wine&#34;, &#34;fields&#34;: { &#34;name&#34;: &#34;Juan Gil&#34;, &#34;vintage&#34;: 2009 } } Here’s the error I was getting:
Problem installing fixture &#39;.../core/fixtures/initial_data.json&#39;: Traceback (most recent call last): File &#34;.../python2.6/site-packages/django/core/management/commands/loaddata.py&#34;, line 169, in handle for obj in objects: File &#34;...python2.6/site-packages/django/core/serializers/json.py&#34;, line 35, in Deserializer for obj in PythonDeserializer(simplejson.load(stream), **options): File &#34;...python2.6/site-packages/django/core/serializers/python.py&#34;, line 84, in Deserializer Model = _get_model(d[&#34;</description>
    </item>
    
    <item>
      <title>JavaScript Closures</title>
      <link>/2011/12/javascript-closures/</link>
      <pubDate>Tue, 27 Dec 2011 01:12:19 +0000</pubDate>
      
      <guid>/2011/12/javascript-closures/</guid>
      <description>Javascript closures can be confusing at first. They’re not, and hopefully this analogy will help drive home the concept.
A Man’s Secret – An Analogy
A man possess a secret book, which he cannot let anyone else know about. He decides the only way to keep the book truly secret is to memorize the entire thing and then bury the book so no one can find it. Later in his years he bears a son.</description>
    </item>
    
    <item>
      <title>AccountManager getAuthToken() authTokenType param</title>
      <link>/2011/04/accountmanager-getauthtoken-authtokentype-param/</link>
      <pubDate>Thu, 28 Apr 2011 08:40:20 +0000</pubDate>
      
      <guid>/2011/04/accountmanager-getauthtoken-authtokentype-param/</guid>
      <description>In trying to connect to a Google api using the builtin AccountManager API for android, I could not figure out what values to use for the authTokenType. Then, finally, I found this link…
http://code.google.com/apis/gdata/faq.html#clientlogin</description>
    </item>
    
    <item>
      <title>Javascript’s new Operator</title>
      <link>/2011/01/javascripts-new-operator/</link>
      <pubDate>Sun, 23 Jan 2011 17:54:58 +0000</pubDate>
      
      <guid>/2011/01/javascripts-new-operator/</guid>
      <description>What is it and how can you use it to create new objects from constructor functions?
What’s a constructor function. There’s really no such thing as a constructor function. There are just functions, that’s it, no different than any other function, except that you the programmer has made it so that it initializes a keyword called this with methods and properties. Here’s the constructor function we will use for the rest of this post.</description>
    </item>
    
    <item>
      <title>LAMP Stack Optimizations for Small Servers</title>
      <link>/2011/01/lamp-stack-optimizations-for-small-servers/</link>
      <pubDate>Fri, 21 Jan 2011 07:07:22 +0000</pubDate>
      
      <guid>/2011/01/lamp-stack-optimizations-for-small-servers/</guid>
      <description>This WordPress blog is running on a 256MB Slicehost VPS. Here are the settings I have in place to keep Apache and MySQL responsive. Without these settings, the server would often come to a grinding hault and SSH interactions would become very slow and sometimes hang.
Apache – httpd.conf – mpm_prefork_module Settings
`
&lt;IfModule mpm_prefork_module&gt; StartServers 2 MinSpareServers 2 MaxSpareServers 4 MaxClients 50 MaxRequestsPerChild 500 &lt;/IfModule&gt; ` I found that I saved a bunch of memory just by using less apache processes.</description>
    </item>
    
    <item>
      <title>2010 Development Toolbox</title>
      <link>/2010/11/my-development-toolbox-2010/</link>
      <pubDate>Sat, 06 Nov 2010 09:02:12 +0000</pubDate>
      
      <guid>/2010/11/my-development-toolbox-2010/</guid>
      <description>Here is a quick run down of the tools and applications I user pretty much everyday. As of this time I’m doing a lot of frontend work as well as some backend PHP development.
Programming Browsers Safari – I use it for all my general development Firefox – Mostly great for tuning CSS and pixel pushing Google Chrome – Great for debugging and performance testing Textmate – texteditor open in Textmate – utility to put in your Finder that lets you quickly open files in Textmate project plugin – better project handling for Textmate Versions – Very clean SVN client Fluid – great to take web pages you always access and make them their own app.</description>
    </item>
    
    <item>
      <title>Gentoo Linux – Wallpapers</title>
      <link>/2010/02/gentoo-linux-wallpapers/</link>
      <pubDate>Tue, 16 Feb 2010 01:19:43 +0000</pubDate>
      
      <guid>/2010/02/gentoo-linux-wallpapers/</guid>
      <description>For those of you looking for my Gentoo Wallpapers, they can be found here.
1440x900 - Click for More Sizes </description>
    </item>
    
    <item>
      <title>Magento Sidebar Categories</title>
      <link>/2010/01/magento-sidebar-categories/</link>
      <pubDate>Mon, 18 Jan 2010 05:06:37 +0000</pubDate>
      
      <guid>/2010/01/magento-sidebar-categories/</guid>
      <description>The following will display a list of categories in your store in your right sidebar.
Layout Alter page.xml so that the default handle’s right block contains the following:
&amp;lt;block type=&#34;catalog/navigation&#34; name=&#34;category.listing&#34; template=&#34;catalog/navigation/categories.phtml&#34; /&amp;gt; My final right block looks as follows
&amp;lt;block type=&#34;core/text_list&#34; name=&#34;right&#34; as=&#34;right&#34;&amp;gt; &amp;lt;block type=&#34;catalog/navigation&#34; name=&#34;featured&#34; template=&#34;catalog/featured_random.phtml&#34; /&amp;gt; &amp;lt;block type=&#34;catalog/navigation&#34; name=&#34;category.listing&#34; template=&#34;catalog/navigation/categories.phtml&#34; /&amp;gt; &amp;lt;/block&amp;gt; Template Create the file template/catalog/navigation/categories.phtml and paste in the following
&amp;lt;div class=&#34;block block-layered-nav&#34;&amp;gt; &amp;lt;div class=&#34;block-title&#34;&amp;gt; &amp;lt;h2&amp;gt;Categories&amp;lt;/h2&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div class=&#34;</description>
    </item>
    
    <item>
      <title>Magento Sidebar Featured Products</title>
      <link>/2010/01/magento-featured-products-in-sidebar/</link>
      <pubDate>Mon, 18 Jan 2010 04:59:18 +0000</pubDate>
      
      <guid>/2010/01/magento-featured-products-in-sidebar/</guid>
      <description>This tutorial will explain how to add a featured product to the sidebar. In this example we will add the featured product to the right sidebar. The steps we will follow are as follows.
Create a new category in the magento admin area to contain our featured products. Add the block calls to the XML Layout Create the phtml template files to be referenced by the block Category Add a new category to your store to contain your featured products.</description>
    </item>
    
    <item>
      <title>Pragmatic Development</title>
      <link>/2010/01/pragmatic-development/</link>
      <pubDate>Fri, 15 Jan 2010 03:01:07 +0000</pubDate>
      
      <guid>/2010/01/pragmatic-development/</guid>
      <description>What does it mean to be a pragmatic programmer, or to program pragmatically? Generally speaking, acting pragmatically or being pragmatic means to act practically. Taking things for what they are, don’t make things more difficult then they have to be. Take these ideals and apply them to development and you can be a very efficient, very productive, pragmatic programmer.
Andy Hunt and David Thomas have written a terrific book on Pragmatic Programming.</description>
    </item>
    
    <item>
      <title>Interviewing Your Future Employer</title>
      <link>/2010/01/interview-questions-for-the-employer/</link>
      <pubDate>Wed, 06 Jan 2010 06:28:37 +0000</pubDate>
      
      <guid>/2010/01/interview-questions-for-the-employer/</guid>
      <description>Going through an interview can be a rather daunting experience, however this is a good time for a candidate to find out more in depth information about the company, it’s culture, processes and many other aspects that may not be immediately realized. This list should serve as a starting ground for job hunters looking to build a dialogue during their interview process.
I would first read through this list and break these up into categories that work for you.</description>
    </item>
    
    <item>
      <title>Subversion: Continuous Integration with a PHP Application</title>
      <link>/2009/10/subversion-continuous-integration-with-a-php-application/</link>
      <pubDate>Tue, 27 Oct 2009 21:13:32 +0000</pubDate>
      
      <guid>/2009/10/subversion-continuous-integration-with-a-php-application/</guid>
      <description>Abstract
This tutorial explains how to update a staging site whenever there is a commit to the SVN repository. This assumes basic knowledge of Subversion, Apache and C and that the staging site is running a working copy checked out from the repository.
**Problem &amp;amp; Solution
**
When working close with designers or other non-coders it’s often most productive to be able to make quick changes live to the box serving up the dev site, then to commit a change then update the server over and over.</description>
    </item>
    
    <item>
      <title>Subversion: Repository on Subdomain</title>
      <link>/2009/10/subversion-repository-on-subdomain/</link>
      <pubDate>Sat, 24 Oct 2009 18:54:00 +0000</pubDate>
      
      <guid>/2009/10/subversion-repository-on-subdomain/</guid>
      <description>This is a tutorial on how to setup a Subversion repository on a subdomain with Apache. This assumes you have Subversion and Apache already installed on your system.
Subversion Setup
First you need to create a repository somewhere in your file system. Then grant apache permissions on that directory.
svnadmin create /var/svn/repository&amp;lt;br /&amp;gt; sudo chown -R www-data:www-data /var/svn/repository
Controlling Access
Access to the repo via the web will be controlled by an htpasswd file located at /var/svn/svn-auth-file.</description>
    </item>
    
    <item>
      <title>Subversion: Commit Emails</title>
      <link>/2009/10/subversion-commit-emails/</link>
      <pubDate>Sat, 24 Oct 2009 16:29:46 +0000</pubDate>
      
      <guid>/2009/10/subversion-commit-emails/</guid>
      <description>This is a tutorial on how to setup Subversion to email a team when there is a commit to the repository.
Subversion Hooks
Hooks are what Subversion executes upon certain events. Within your SVN directory you should see the following items
README.txt conf dav db format hooks locks Go into the hooks directory and you will see a bunch of files ending in .tmpl. These are template scripts that are prebaked for you.</description>
    </item>
    
    <item>
      <title>Paperclip – Customizing Paths and URLs</title>
      <link>/2009/10/paperclip-customizing-paths-and-urls/</link>
      <pubDate>Mon, 19 Oct 2009 23:08:35 +0000</pubDate>
      
      <guid>/2009/10/paperclip-customizing-paths-and-urls/</guid>
      <description>To customize the paths and urls of paperclip objects in your rails app you need to modify both the :path and :url options for has_attached_file in your models. Here’s an example…
``
`
class SomeModel &lt; ActiveRecord::Base &amp;nbsp; has_attached_file :image_one, :path =&gt; &#34;public/system/:class/:id/:filename&#34;, :url =&gt; &#34;/system/:class/:id/:basename.:extension&#34; &amp;nbsp; has_attached_file :image_two, :path =&gt; &#34;public/system/:class/:id/:filename&#34;, :url =&gt; &#34;/system/:class/:id/:basename.:extension&#34; end ` By default Paperclip will store your files in /system/:attachment/:id/:style/:filename. By passing the :path and :url options to the has_attached_file method in your model you can change where the uploaded files will be stored as well as where they can be accessed.</description>
    </item>
    
    <item>
      <title>Ruby Script to Check Site Availability</title>
      <link>/2008/10/ruby-script-to-check-site-availability/</link>
      <pubDate>Tue, 07 Oct 2008 21:18:34 +0000</pubDate>
      
      <guid>/2008/10/ruby-script-to-check-site-availability/</guid>
      <description>Recently, I’ve been looking around for scripts to check the availability of websites I’m hosting, then email me a status message if there is anything I should be worrying about. There are many services out there, but none are free. Fortunately this kind of thing can be done with a little ruby script and cron job.
Requirements
SMTP server. Ruby 1.8.6 – This script uses core classes of Ruby and doesn’t require any rubygems Ability to add cron jobs to your machine Plan</description>
    </item>
    
    <item>
      <title>[TIP] Ruby GUI Applications and Empty Console Window</title>
      <link>/2008/08/tip-ruby-gui-applications-and-empty-console-window/</link>
      <pubDate>Wed, 06 Aug 2008 20:53:45 +0000</pubDate>
      
      <guid>/2008/08/tip-ruby-gui-applications-and-empty-console-window/</guid>
      <description>While writing a Ruby GUI app I kept seeing an empty console window. As it turns out there are two ruby executables that you can use to run your Ruby scripts: ruby, which is a CUI (Console User Interface) and rubyw, a GUI (Graphical User Interface) used to launch GUI Apps. Using rubyw will prevent that empty console from showing up. Hope this helps someone!
# rubyw myapp.rb
Edit – 8/7/08</description>
    </item>
    
    <item>
      <title>Strange Rendering of Fonts in Firefox 3</title>
      <link>/2008/06/strange-rendering-of-fonts-in-firefox-3/</link>
      <pubDate>Wed, 25 Jun 2008 03:40:18 +0000</pubDate>
      
      <guid>/2008/06/strange-rendering-of-fonts-in-firefox-3/</guid>
      <description>Firefox 3 was having some font rendering issues on my machine. Certain web sites were displaying a wierd bold looking font in place of the default font described in the CSS. After doing some searching around the internet I found out the issue.
Early in the year I had installed Adobe Type Manager and added a bunch of Helvetica Postscript Type-1 fonts. These were for some reason being used as Firefox’s default font.</description>
    </item>
    
    <item>
      <title>Learning a New Language</title>
      <link>/2008/01/learning-a-new-language/</link>
      <pubDate>Tue, 08 Jan 2008 20:10:53 +0000</pubDate>
      
      <guid>/2008/01/learning-a-new-language/</guid>
      <description>Larry O’Brien over at knowing.net has a great series called 15 Exercises to Know a Programming Language, It’s an older article but after going through parts 1-3, theres really nothing in there that changes often enough to warrant any kind of an update.
Part 1 gets you used to using some of the more basic features of a language including, calculations, the standard libraries, file i/o, GUI development, and debugging. Part 2 introduces some more advanced data structures, object oriented programming, idioms, memory issues, design patterns, and concurrency.</description>
    </item>
    
    <item>
      <title>Linux w/ Mac Scrolling</title>
      <link>/2007/08/linux-w-mac-scrolling/</link>
      <pubDate>Tue, 28 Aug 2007 05:38:06 +0000</pubDate>
      
      <guid>/2007/08/linux-w-mac-scrolling/</guid>
      <description>Is it possible to make it so that I laptop running synaptic drivers can make it so that you can scroll pages with two fingers on the pad?
Update: Thanks to okke in the comments, all you have to do is add a line to your xorg.conf file to enable 2 finger scrolling. There’s a wiki entry on the Gentoo Wiki about doing so.</description>
    </item>
    
    <item>
      <title></title>
      <link>/bookshelf/empty/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/bookshelf/empty/</guid>
      <description></description>
    </item>
    
    <item>
      <title>About Me</title>
      <link>/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/about/</guid>
      <description>I live in Austin, Texas with my wife Elisa and our two kids. I graduated from TCU, where I also played lacrosse, and I’ve carried that team-first mindset into my work ever since. When I’m not working, you’ll usually find me brewing strong coffee, chasing my kids around the yard, noodling on the guitar, or going down some rabbit hole — be it electronics, bike maintenance, or how to keep an aquarium alive without turning it into an algae farm.</description>
    </item>
    
    <item>
      <title>AWS S3 Multi-Tenancy</title>
      <link>/notebook/s3-multitennant/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/s3-multitennant/</guid>
      <description>Data Partitioning https://aws.amazon.com/blogs/apn/partitioning-and-isolating-multi-tenant-saas-data-with-amazon-s3/
Bucket per Tenant Amazon S3 has a default quota of 100 buckets and the hard quota of 1,000 buckets per AWS account.
&amp;ldquo;Folders&amp;rdquo; - Object Key Prefix-Per-Tenant Model Database-Mapped Tenant Objects Tenant Isolation Isolating SaaS Tenants with Dynamically Generated IAM Policies: AWS
Securing Tenant Objects with Encryption Keys Here, the focus is on how we can provide each tenant with a key that protects their data. In these scenarios, Amazon S3 can be used with the AWS Key Management Service (AWS KMS) to provide server-side encryption of S3 objects.</description>
    </item>
    
    <item>
      <title>Bayesian Statistics</title>
      <link>/notebook/bayesian-statistics/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/bayesian-statistics/</guid>
      <description>My notes on Bayesian Statistic. Still learning about this.
Frequentist versus Bayesian Methods Frequentist versus Bayesian Methods
In frequentist inference, probabilities are interpreted as long run frequencies. The goal is to create procedures with long run frequency guarantees.
In Bayesian inference, probabilities are interpreted as subjective degrees of belief. The goal is to state and analyze your beliefs.
Resources An Introduction to Bayesian Thinking - A Companion to the Statistics with R Course A whole gitbook available online.</description>
    </item>
    
    <item>
      <title>BEAM Robotics</title>
      <link>/notebook/beam/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/beam/</guid>
      <description>I love this area of Robotics, it&amp;rsquo;s so simple!
Checkout this Flickr Album on BEAM Helioforms robots. https://www.flickr.com/photos/fadetofuture/albums/72157623306190421/
Resources Essential JunkBots, Bugbots, and Bots on Wheels: Building Simple Robots With BEAM Technology: David Hrynkiw, Mark Tilden http://solarbotics.net/library.html - Tons of schematics, ideas and robots. Supplementary https://www.flickr.com/photos/fadetofuture/albums/72157623306190421/ - Beautiful BEAM robots with nice photography. </description>
    </item>
    
    <item>
      <title>Big 5 Personality Traits</title>
      <link>/notebook/big-5-personality/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/big-5-personality/</guid>
      <description>Also knows as the OCEAN model
openness to experience (inventive/curious vs. consistent/cautious) conscientiousness (efficient/organized vs. extravagant/careless) extraversion (outgoing/energetic vs. solitary/reserved) agreeableness (friendly/compassionate vs. critical/rational) neuroticism (sensitive/nervous vs. resilient/confident) ANKI Cozmo/Vector In terms of the big 5 personality traits, Vector is open to experience, and has moderate agreeableness (he can&amp;rsquo;t really sense emotion), but is not particularly extroverted. He isn&amp;rsquo;t neurotic, or conscientious. In many ways he lacks sufficient ability to sense and act on those other traits.</description>
    </item>
    
    <item>
      <title>Burnout</title>
      <link>/notebook/burnout/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/burnout/</guid>
      <description>Burnout is the shared responsibility of both the individual, the organization, and our work culture. We have increasingly become a burnout culture and it is salt on the wounds of so many people who are struggling to suggest that the problem is that they are not doing enough yoga.
https://index.medium.com/self-care-is-not-the-solution-for-burnout-6969bc0a2de6
I&amp;rsquo;ve had my share of burnout. These are my notes on the subject.
Unfinished Business That feeling of unfinished business at the end of the day can keep a hold of you all evening and keep you up at night.</description>
    </item>
    
    <item>
      <title>Business Growth</title>
      <link>/notebook/business-growth/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/business-growth/</guid>
      <description>Exponential Growth The term &amp;ldquo;exponential growth&amp;rdquo; ($2^x$) is mis-used to describe hyper-growth startups. What they really mean is quadratic growth ($x^2$), a very different mathematical curve.
https://longform.asmartbear.com/exponential-growth/index.html#hypergrowth-is-quadratic
Where else is it important to know the difference between quadratic and exponential curves? Well, for the programmer big-oh.</description>
    </item>
    
    <item>
      <title>Choice Architecture</title>
      <link>/notebook/choice-architecture/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/choice-architecture/</guid>
      <description>Choice Architecture is a fancy term some medical doctors came up with for &amp;ldquo;changing the environment to improve behavior&amp;rdquo;.
Changing behavior is hard so instead, change the environment.
Alex Boase originally introduced me to this idea while we were in College at TCU. The worst part about the college party is the cleanup. He showed me that if you were to host a party, instead of trying to train people to throw away their cups when they&amp;rsquo;re done, change the environment by putting trash cans everywhere.</description>
    </item>
    
    <item>
      <title>Comprehensive Data</title>
      <link>/notebook/comprehensive-data/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/comprehensive-data/</guid>
      <description> Without comprehensive data, you tend to get non-comprehensive predictions.
Rob Thomas, general manager for International Business Machines Corp.’s analytics business </description>
    </item>
    
    <item>
      <title>Computational Complexity</title>
      <link>/notebook/computational-complexity/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/computational-complexity/</guid>
      <description>Quick Start Complexity classes give us a way to group problems together based on how hard they are to solve.
Computational Complexity deals with Decision Problems.
Decision problems result in a YES or NO response. Is this array sorted? Is there a clique in this graph? Optimization problems concerned with finding the best answer to a particular input. Complexity and Good Games
Something cool to consider, how do Complexity Classes relate to good games?</description>
    </item>
    
    <item>
      <title>Data Architectural Patterns</title>
      <link>/notebook/data-patterns/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/data-patterns/</guid>
      <description>Data Fabric Data fabric is an architecture that facilitates the end-to-end integration of various data pipelines and cloud environments through the use of intelligent and automated systems. Over the last decade, developments within hybrid cloud, artificial intelligence, the internet of things (IoT), and edge computing have led to the exponential growth of big data, creating even more complexity for enterprises to manage. This has made the unification and governance of data environments an increasing priority as this growth has created significant challenges, such as data silos, security risks, and general bottlenecks to decision making.</description>
    </item>
    
    <item>
      <title>Data Democratization</title>
      <link>/notebook/data-democratization/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/data-democratization/</guid>
      <description>The ongoing process of enabling everybody in an organization, irrespective of their technical know-how, to work with data comfortably, to feel confident talking about it, and, as a result, make data-informed decisions and build customer experiences powered by data.
Data Organizational Roles So, the Scientists Do All The Work? No, not at all. If anything, engineers have a much more challenging and demanding role than they do in the standard model.</description>
    </item>
    
    <item>
      <title>Database Schema Patterns</title>
      <link>/notebook/database-design/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/database-design/</guid>
      <description>Database Design Patterns
Polymorphic Associations This applied to concepts like tags, likes, votes&amp;hellip; Think of actions you want to be able to apply to multiple models within your system. You want to comment on videos, and pictures, and chats. What are some ways to model this sort of relationship?
Postgres Strategies: https://stackoverflow.com/a/66126905
https://zenstack.dev/blog/polymorphism https://github.com/prisma/prisma/issues/1644
Primary Key Selection See Primary Keys</description>
    </item>
    
    <item>
      <title>Distributed Systems</title>
      <link>/notebook/distributed-systems/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/distributed-systems/</guid>
      <description>Why do we need distributed Systems? There are two main motivations for this:
To scale beyond a single machine — storing and processing data in multiple nodes. To increase availability — ensuring a database isn’t a single point of failure. These two goals are closely related. In general, scaling a system by increasing the number of machines negatively affects availability, since the probability of encountering failures increases statistically. Thus, achieving high availability is almost a prerequisite to scalability.</description>
    </item>
    
    <item>
      <title>Dynamic Programming &amp; Recursion</title>
      <link>/notebook/dp-recursion/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/dp-recursion/</guid>
      <description>Dynamic Programming The idea with dynamic programming is to trade time for space. This is only applicable if you have repeated subproblems. Instead of recomputing subproblems over and over, use space to save answers to subproblems so you can look them up later.
Dynamic programming combines the beast of both worlds.
Recursion Laws A recursive algorithm must have a base case. A recursive algorithm must change its state and move toward the base case.</description>
    </item>
    
    <item>
      <title>Engineering KPIs</title>
      <link>/notebook/engineering-kpis/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/engineering-kpis/</guid>
      <description>MT** MTBF: Mean time between failures MTTD: Mean time to detection MTTR: Mean time to repair/remediate/resolve/respond MTTA: Mean time to acknowledge MTTF: Mean time to failure Context Cyber Security MTTD: Mean time to detect Mean time to detect is an extremely common, yet important key performance indicator (KPI) in the IT incident management space. MTTD can be defined simply as the amount of time passed between the beginning of an IT incident and the discovery of the incident by your security team.</description>
    </item>
    
    <item>
      <title>Evolution of Naval Warfare</title>
      <link>/notebook/naval-warfare-evolution/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/naval-warfare-evolution/</guid>
      <description>Interesting to see the relationship between Naval Strategy and the move to distributed systems/microservices using commodity hardware.
Recent naval strategies emphasize distributed lethality, where various smaller and specialized ships work together, focusing on networking, communication, and flexibility.
The new vision of naval surface warfare that trades small numbers of very capable, high-value assets for large numbers of commoditized, simpler platforms that are more capable in the aggregate,” &amp;ldquo;the U.S. military has talked about the strategic importance of replacing ‘king’ and ‘queen’ pieces on the maritime chessboard with lots of ‘pawns.</description>
    </item>
    
    <item>
      <title>EVTP: Explorers, Villagers, Town Planners</title>
      <link>/notebook/evtp/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/evtp/</guid>
      <description> Explorers, villagers and town planners (EVTP) is a system for organising a company that is having to deal with constant change due to an evolving environment. It&amp;rsquo;s over 18 years old, it&amp;rsquo;s a small part of the concept of mapping and it has been used successfully in several companies, BUT it is a difficult path to follow.
Resources https://swardley.medium.com/how-to-organise-yourself-f36f084a611b </description>
    </item>
    
    <item>
      <title>Fates Beyond Traits</title>
      <link>/notebook/fates-traits/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/fates-traits/</guid>
      <description>People are more than the traits they have, they can drive their own fates.</description>
    </item>
    
    <item>
      <title>Game theory</title>
      <link>/notebook/game-theorey/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/game-theorey/</guid>
      <description>The intention of game theory is to produce optimal decision-making of independent and competing actors in a strategic setting.
Any time we have a situation with two or more players that involve known payouts or quantifiable consequences, we can use game theory to help determine the most likely outcomes.
History John von Neumann and economist Oskar Morgenstern in the 1940s.
Mathematician John Nash
Concepts The Nash Equilibrium Game Types zero-sum/non-zero-sum zero-sum: classic &amp;ldquo;games&amp;rdquo; where there is only one winner and one loser.</description>
    </item>
    
    <item>
      <title>German Tank Problem</title>
      <link>/notebook/german-tank-problem/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/german-tank-problem/</guid>
      <description>The German Tank Problem was the use of statistical analysis during WW2 to estimate how large the German tank force was during WW2. They did this by sampling serial numbers off captured enemy tanks, then cross referencing those serial number to known factory machinery production rates. The statistical estimate was that the German product 270 tank in February 1944, post war data collected from German logs showed that they actually produced 276.</description>
    </item>
    
    <item>
      <title>Golf</title>
      <link>/notebook/golf/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/golf/</guid>
      <description>Strokes Gained Putt for Dough? Not so much, SG shows us that getting off the Tee box into a position that can be capitalized is more valueable than sinking long putts. The chance of hitting a long putt is so small, that it&amp;rsquo;s very unlikely even for pros. You can gain more shots off the green than on the green. Most pro golfers are going to be 2 putting, so it&amp;rsquo;s hard to make a break out performance on the green.</description>
    </item>
    
    <item>
      <title>GraphQL</title>
      <link>/notebook/graphql/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/graphql/</guid>
      <description>Questions Principled GraphQL 10 keys to success From Principled GraphQL.
One-Graph Your company should have one unified graph, instead of multiple graphs created by each team.
Federated Implementation Though there is only one graph, the implementation of that graph should be federated across multiple teams.
Track the Schema in a Registry There should be a single source of truth for registering and tracking the graph.
Abstract, Demand-Oriented Schema The schema should act as an abstraction layer that provides flexibility to consumers while hiding service implementation details.</description>
    </item>
    
    <item>
      <title>Green Software</title>
      <link>/notebook/green-software/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/green-software/</guid>
      <description>As Software Engineers, how can we do our part to help with Climate Change? By writing more energy efficient software. There&amp;rsquo;s a couple of projects/organizations/groups pushing this concept.
Green Software Foundation Software Carbon Intensity (SCI) Specification - https://github.com/Green-Software-Foundation/software_carbon_intensity Patterns Catalog: https://patterns.greensoftware.foundation/catalog/ Awesome Green Software: https://github.com/Green-Software-Foundation/awesome-green-software Other Resources KDE Eco - https://eco.kde.org/ FOSS Energy Efficiency Project (FEEP) - https://invent.kde.org/teams/eco/feep Blauer Engel For FOSS (BE4FOSS) - &amp;ldquo;In 2020 the Umweltbundesamt (‘German Environment Agency’) released the award criteria for obtaining eco-certification with the Blauer Engel label for desktop software.</description>
    </item>
    
    <item>
      <title>Happiness</title>
      <link>/notebook/happiness/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/happiness/</guid>
      <description> Happy people approach life through the lens of agency and gratitude.
See also: Money and Happiness
What makes us happy? Empowerment and Humility feeds into Agency and Gratitude
Agency Freedom of choice/how we spend time Financial Stability Time Self Empowerment Gratitude Thought questions How does happiness work with Maslow Hierarchy of needs? How can money be leveraged to gain happiness? Resources https://medium.com/@kulwantsaluja/the-cornerstones-of-mental-health-agency-and-gratitude-28d64dc4a7d6 Videos Huberman Lab: Dr. Paul Conti: How to Understand &amp;amp; Assess Your Mental Health | Huberman Lab Guest Series | Youtube </description>
    </item>
    
    <item>
      <title>How Computers Work</title>
      <link>/notebook/how-computers-work/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/how-computers-work/</guid>
      <description>Where did computers come from? See Turing Machines
Overview Let&amp;rsquo;s breakdown how a computer actually works when running and compiling a program. I want to learn all the levels of abstraction that are involved in running a single computer operation.
Similar to the OSI model concept for networking applications. What&amp;rsquo;s a similar thought model for the CPU?
Software Software Application Algorithm Programming Language Assembly Machine Code ISA (Instruction Set Architecture) Hardware Digital Micro Architecture Gates/Registers Analog Devices (Transistors) Physics ISA (Instruction Set Architectures) Is ISA the same as Assembly?</description>
    </item>
    
    <item>
      <title>Idea Investment, not Idea Debt</title>
      <link>/notebook/idea-debt/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/idea-debt/</guid>
      <description>Invest in your ideas, don&amp;rsquo;t have a debt of ideas.</description>
    </item>
    
    <item>
      <title>JavaScript</title>
      <link>/notebook/node/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/node/</guid>
      <description>Trends A list of things I want to play with at some point.
Deno - next gen js runtime (built-in typescript support and more) https://deno.com/ Bun - another js runtime https://bun.sh/ Lit - Simple Fast Web Components Svelte Golden Module Rule JavaScript modules should only have single purpose default exports.
https://jaydenseric.com/blog/optimal-javascript-module-design</description>
    </item>
    
    <item>
      <title>Know Your Value</title>
      <link>/notebook/know-your-value/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/know-your-value/</guid>
      <description>In HFQ organizations the difference between an engineering make 7 figures and one making traditional 6 figures was that they knew their value to the company. If an engineer was working on an HFT algorithm that was going to generate massive profits for the company, you know they were going to extract as much value from a company as possible.
&amp;ndash; Flash Boys: A Wall Street Revolt - Michael Lewis</description>
    </item>
    
    <item>
      <title>LLM Prompts</title>
      <link>/notebook/llm-prompts/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/llm-prompts/</guid>
      <description>Topic Overviews Prompts to quickly get a high level overview of a topic to get a lay of the land before diving in.
Fictitious Table of Contents generate a hierarchical table of contents for a book about [TOPIC].
Visual Mind Map I want to learn about [TOPIC] to apply it to my business for business strategy. Can you create a text-based mind map that explains this topic in a visually structured way?</description>
    </item>
    
    <item>
      <title>Logical Fallacies</title>
      <link>/notebook/logical-fallacies/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/logical-fallacies/</guid>
      <description>A logical fallacy is a flaw in reasoning. Logical fallacies are like tricks or illusions of thought, and they&amp;rsquo;re often very sneakily used by politicians and the media to fool people. Don&amp;rsquo;t be fooled! This website has been designed to help you identify and call out dodgy logic wherever it may raise its ugly, incoherent head. Rollover the icons above and click for examples.
yourlogicalfallacyis.com
Ad Hominem Attacking the person making the argument rather than addressing the argument itself.</description>
    </item>
    
    <item>
      <title>Manager&#39;s Path</title>
      <link>/notebook/managers-path/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/managers-path/</guid>
      <description>Author Camille Fournier, got a job as Director of Engineering at Rent the Runway and grew the team over 4 years from being person 1 to CTO.
Ch1. Management 101 Lot&amp;rsquo;s of developers only experience managers who&amp;rsquo;s style is that of benign neglect
Benign Neglect
A policy or strategy of deliberately taking no action concerning an issue, challenging situation, or other problem in the belief that this course will ultimately result in the best outcome possible.</description>
    </item>
    
    <item>
      <title>Mental Health</title>
      <link>/notebook/mental-health/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/mental-health/</guid>
      <description>s## How do we develop Agency and Gratitude
Character Structure and Subconscious Defenses Innate fears?
fear confusion despair subconscious defenses spectrum: unconscious psychological responses to deal with our fears. The 3 most common:
Denial displacement: someone that seems to constantly be taking out their frustrations on others withdrawal Character structure: it&amp;rsquo;s what we use to interface with the world. Defense mechanisms applied to our experience of the world. Based on our fears and unconscious defense mechanisms.</description>
    </item>
    
    <item>
      <title>Money and Happiness</title>
      <link>/notebook/happy-money/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/happy-money/</guid>
      <description>Questions How should one think about money? What are alternative views to the traditional view of money as a transactional medium. (Money as energy). How can we best use money to make us more happy? Money/Time You&amp;rsquo;re not really paying for a cleaning service, you&amp;rsquo;re buying back that time you would spend cleaning your house yourself.
Time is the finite resource of your life, so trade money to free up your time.</description>
    </item>
    
    <item>
      <title>Moore, Dennard and Amdahl</title>
      <link>/notebook/moore-dennard-amdahl/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/moore-dennard-amdahl/</guid>
      <description>This is my reseach and writing about Moore, Dennard and Amdahls laws and how they effect computing and software engineering. Mostly, I just find this stuff interesting.
We don&amp;rsquo;t throw away computer because they&amp;rsquo;re slow anymore, we throw them out because they&amp;rsquo;re broken or don&amp;rsquo;t have a feature.
Moore&amp;rsquo;s Law the observation that the number of transistors in a dense integrated circuit (IC) doubles about every two years.
Dennard Scaling as transistors get smaller, their power density stays constant, so that the power use stays in proportion with area; both voltage and current scale (downward) with length.</description>
    </item>
    
    <item>
      <title>Normalization of Deviance</title>
      <link>/notebook/normalization-deviance/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/normalization-deviance/</guid>
      <description>&amp;ldquo;a long incubation period [before a final disaster] with early warning signs that were either misinterpreted, ignored or missed completely&amp;rdquo; &amp;ndash; Diane Vaughan
NASA normalized the deviances in performance of the tiles on the Columbia shuttle. They were performing fine for multiple trips, and the degradation during trips was noted but ignored as they never caused a problem, until it lead to a loss of life event.
Feels similar to software system degradation over time, where team members recognize noisy alerts, but become so used to them that they are normalized.</description>
    </item>
    
    <item>
      <title>On Habits</title>
      <link>/notebook/habits/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/habits/</guid>
      <description>Environment Most people think that building better habits or changing your actions is all about willpower or motivation. But the more I learn, the more I believe that the number one driver of better habits and behavior change is the Choice Architecture of your environment.
&amp;ndash;James Clear How to Stick With Good Habits Even When Your Willpower is Gone See choice architecture for more info on this.
Starting Small &amp;ldquo;People often think it&amp;rsquo;s weird to get hyped about reading one page or meditating for one minute or making one sales call.</description>
    </item>
    
    <item>
      <title>On Keeping Books</title>
      <link>/notebook/libraries/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/libraries/</guid>
      <description>I love books. I used to love going to Barnes and Noble as a kid and just perusing through the computer books isle. There was always something new and interesting to be exposed to. As I got older I started buy books all the time. During college, Ryan Gibbons and I would sometimes head over to nerdbooks.com&amp;rsquo;s warehouse in Richardson, TX. They had endless shelves of technology books! It was incredible.</description>
    </item>
    
    <item>
      <title>Open Source Intelligence (OSINT)</title>
      <link>/notebook/osint/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/osint/</guid>
      <description>OSINT or (Open Source Intelligence) is leveraging the use of open, public, free data sources to gather information. Ex: social media, satellite data, serial numbers, photos&amp;hellip;
Origination OSINT isn&amp;rsquo;t new, and originated back during WW2 when the Foreign Broadcast Monitoring Service (FBMS) was created in order to monitor and report on shortwave propaganda radio. Through several monitoring stations intelligence was gathered.
Examples German Tank Problem See German Tank problem.
WW2 Bombing Tactics and the price of oranges In ww2, the Allies would monitor radio programs for the price of oranges.</description>
    </item>
    
    <item>
      <title>OpenGL</title>
      <link>/notebook/opengl/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/opengl/</guid>
      <description>OpenGL / GLFW What is OpenGL exactly? What are all the different opengl versions? What do I need to know about them? What&amp;rsquo;s the different between GLFW and OpenGL? What is the support like on Apple Devices and how does it work with Apple Metal? Machines have hardware dependent opengl versions? Due to drivers? What are core vs compatibility profiles? Shaders What is a shader? Why is it called a Shader?</description>
    </item>
    
    <item>
      <title>Operational Analytics</title>
      <link>/notebook/analytics-operational/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/analytics-operational/</guid>
      <description>Operational Analytics Using operational analytics, you can review data in what’s known as Near Real-Time (NRT) as it enters your systems. This gives you immediate insights that can alert you to failures in your system before they escalate. Key Performance Indicators (KPIs) monitored during operational analytics are Mean Time to Detect (MTTD) and Mean Time to Respond (MTTR). MTTD is the time it takes from when a problem emerges to the time detection occurs.</description>
    </item>
    
    <item>
      <title>Paradigms vs Ecosystems</title>
      <link>/notebook/paradigms/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/paradigms/</guid>
      <description>React may be superior in ecosystem, or with feature coverage, but not so as a paradigm. These are three different concerns you should bear in mind when choosing a library/framework. You may need the ecosystem or some specific features, so paradigm may not be important. In other cases, you want to choose the library/framework with the most ergonomic paradigm. That means a good signal-to-noise ratio: each line of code contributes to delivering features, each line of code is “semantic” and reads like a specification.</description>
    </item>
    
    <item>
      <title>Parallelization is a Runtime Feature</title>
      <link>/notebook/runtime-parallelization/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/runtime-parallelization/</guid>
      <description>Parallelism is a runtime feature We code concurrently in the hope that it will be run in parallel. Parallelization can only be provided by the runtime.
Your biggest gains in parallelism will come from removing structural barriers. In the coffee example. The fist method was to lock an entire kitchen so that one coffee could be made at a time. Moving to indiviual machine locking (grinder, espresso, steamer) was the greatest way to add efficiency.</description>
    </item>
    
    <item>
      <title>Primary Keys</title>
      <link>/notebook/pk/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/pk/</guid>
      <description>What kind of Primary Key should you be using in your application?
Why Obfuscate? Using sequential ids can leak information about your applications.
Estimated counts - If all of your entities are auto incrementing a competitor could estimate how many users or how much content you have. This isn&amp;rsquo;t a huge deal and could be negated by setting an arbitrary initial auto increment value. Parameter Injection - If all of your urls are formatted /user/{userId} anyone can easily just change the id in the url.</description>
    </item>
    
    <item>
      <title>Progressive Web Applications</title>
      <link>/notebook/pwa/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/pwa/</guid>
      <description>SSL/Self Signed You have to use SSL and I believe the cert cannot be self signed, this makes getting up and running locally quickly for development a bit challenging.
Service Workers You have to have at least one service worker for most browsers. So simple apps might need some boilerplate that seems unecessary.
Manifest Files Icons IOS doesn&amp;rsquo;t honor the icons in the manifest file? Had to add the icon meta tags to index.</description>
    </item>
    
    <item>
      <title>Python Cheatsheet</title>
      <link>/notebook/python/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/python/</guid>
      <description>Resources The Hitchhikers Guide to Python Python Cheatsheet None (null) Checks # bad if x != None: pass # good if x is not None: pass Incremement / Decrement No support for pre/post increment operators like i++
i+=1 x-=1 Loops Assignment in loops Python 3.8 introduced
while x := Classes Private Variables Python does not support classic private variables. Use the _ convention to indicate that something is private.
class Person: __init__(self, name, ssn) -&amp;gt; None: self.</description>
    </item>
    
    <item>
      <title>Radar Mosaics</title>
      <link>/notebook/radar-mosaic/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/radar-mosaic/</guid>
      <description>Combining ground based meteorological radar data from multiple overlapping sites
The paper presents a model for combining meteorological radar data in overlapping regions, along with results from a short dual Doppler study of a convective event observed in the Po Valley region of northern Italy. To perform any kind of quantitative analysis between two overlapping radars, whether spaceborne or ground based, it is useful to adopt a common coordinate system on which to view the data.</description>
    </item>
    
    <item>
      <title>Radar Smoothing</title>
      <link>/notebook/radar-smoothing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/radar-smoothing/</guid>
      <description>Radars capture observations at different gate lengths, which are then processed into a final product that looks pixelated. How do we then take each &amp;ldquo;pixel&amp;rdquo; and create a smoothed radar product? Here&amp;rsquo;s an example of a source radar product and a smoothed version from GRLevelX.
GR3 uses bilinear interpolation
superres l2 &amp;hellip; bins have such a poor aspect ratio that even bilinear interpolation fails at reasonable ranges
https://stormtrack.org/community/threads/smoothing-of-radar-data.14895/ What Gr3 Does GR3 uses bilinear interpolation so the dbz at the center of a smoothed bin should be (almost) exactly the bin&amp;rsquo;s value.</description>
    </item>
    
    <item>
      <title>Rainbow Colormaps</title>
      <link>/notebook/rainbow-colormaps/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/rainbow-colormaps/</guid>
      <description>A poorly chosen colormap between values and colors can fool the human eyes to, e.g., pick out non-existing features, or to hide important features.
https://github.com/liamedeiros/ehtplot/blob/docs/docs/COLORMAPS.ipynb Common Implementations Jet Classic rainbow colormap gradient.
Turbo (Google) Google&amp;rsquo;s take on providing an alternative to Jet to improve detail and assessment at the expense of accuracy. Provides an interesting evaluation of tradeoffs and why sometimes a rainbow map is the right choice.
You probably don&amp;rsquo;t want to use a rainbow The use of every color can make it unclear what the important information is.</description>
    </item>
    
    <item>
      <title>Rating Systems</title>
      <link>/notebook/rating/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/rating/</guid>
      <description>Rating Ranking Scoring Matchmaking Matchmaking Algorithmic Ranking Rating Systems Considerations These are taking from the sports world, but can be generalized to work in other domains as well.
Home Advantage Strength of Schedule Quality of wins (margin of victory) in-game information (Examples include time of possession of the ball, individual statistics, and lead changes) team composition - are all teams created equally? Cold start - account for early season matches where there&amp;rsquo;s less data available Simple Win/Loss Simplistic.</description>
    </item>
    
    <item>
      <title>reMarkable 2</title>
      <link>/notebook/remarkable2/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/remarkable2/</guid>
      <description>See my 2024 post on the remarkable 2
Analog is Better Well for me anyway, but also for most people: https://www.frontiersin.org/articles/10.3389/fnbeh.2021.634158/full
A recent study by Kuniyoshi Sakai, titled Paper Notebooks vs. Mobile Devices: Brain Activation Differences During Memory Retrieval, actually showed higher retention and recall for subjects that used pen and paper versus a keyboard, or tablet and stylus.
Essential Resources awesome-reMarkable: Github PDF Templates Abstract github.com/sowcow/blank_slate_pdf - More of an experiment than something intuitive and useful, interesting none the less.</description>
    </item>
    
    <item>
      <title>Repairing</title>
      <link>/notebook/repairing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/repairing/</guid>
      <description>The Single Most Important Parenting Strategy | Becky Kennedy | TED
She has a parenting book that looks good too: https://www.goodinside.com/book/
All parents yell, no one knows what to do next.
Get good at repair.
What is repair? The act of going back to a moment of disconnection, taking responsibility for your behavior, and acknowledge the impact it had on another.
Hey. I keep thinking about what happened the other night.</description>
    </item>
    
    <item>
      <title>Risk Transfer</title>
      <link>/notebook/risk-transfer/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/risk-transfer/</guid>
      <description>Pay for someone else to take your risks. This is what the insurance industry is based on.
Consider creating a Wardley Map to identify risk that can be outsourced/shared through business contracts or alliances.</description>
    </item>
    
    <item>
      <title>Session Management</title>
      <link>/notebook/session-management/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/session-management/</guid>
      <description>Objective This document stands as a place for me to jot down notes and thoughts about session management. Common questions, and discussion points.
Should I use JWTs? How should I generate my own secure random tokens? How should I pass tokens between the client and server? Do I need to be able to invalidate a token? Why do I need to manage a session, what is it? Web Applications are stateless.</description>
    </item>
    
    <item>
      <title>Shape Coding</title>
      <link>/notebook/shape-coding/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/shape-coding/</guid>
      <description>Chapanis found that the controls for the [World War II Flying Fortress] Wing Flaps and Landing Gear looked exactly the same AND were positioned close to each other.
So close to each other in fact, that exhausted pilots approached the runway and flipped the switch for what they believed to be the landing gear, but instead flipped the wing flaps switch, slowing their descent and then grounding the plane.</description>
    </item>
    
    <item>
      <title>Shipping the Org Chart</title>
      <link>/notebook/shipping-org-charts/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/shipping-org-charts/</guid>
      <description>Shipping the org-chart is often a symptom of a leadership problem. When natural service boundaries exist, good leadership may choose to ship the org-chart, but too often extrinsic factors such as the arrangement of dev&amp;rsquo;s desks dictates the architecture.
https://news.ycombinator.com/item?id=16201355</description>
    </item>
    
    <item>
      <title>Software Estimation</title>
      <link>/notebook/software-estimation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/software-estimation/</guid>
      <description>3 Point Estimates For each component, come up with a Optimistic (O), Most Likely (M), and Pessimistic (P) estimate of time/effort. Average those times together to get a final estimate. You can use a simple average, or a weighted average, granting more weight to one of the scores.
Triangular distribution (Simple Average): $(O + M + P) / 3$ 3 Point Estimate (Weighted Average): $(O + 4M +P) / 6$ - most common, but you can also play with applying weights to the pessimistic score as well, ex: $(O + 4M + 2P) / 8$.</description>
    </item>
    
    <item>
      <title>Software Supply Chains Risk</title>
      <link>/notebook/sunflare/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/sunflare/</guid>
      <description>Attackers hacking the &amp;ldquo;path to production&amp;rdquo;
SUNBURST Orion Software Build system based on Teamcity was compromised. Found build agents and deployed malicious DLL. Initially snuck deadcode into a release. Once they were able to verify that their code made it into a release, they replaced that with code they wanted to run. No source code comprimise, used an injected DLL into the build agents. Discovered by Fireeye: writeup here
Software &amp;amp; Tools SLSA - Supply Chain Levels for Software artifacts Youtube: 8RT5bf6wEJk</description>
    </item>
    
    <item>
      <title>Sorting Averages</title>
      <link>/notebook/sorting-averages/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/sorting-averages/</guid>
      <description>What is the best way to sort items by average rating if many of the items have only a handful of ratings?
Product Star Ratings: Which product is better based on their star ratings, the one with 2 5 stars reviews, or the one with 800 5 stars, 300 4 stars and 82 1 stars? Player Win/Loss Rating: Who&amp;rsquo;s the better player given their win-loss record, Bob (1-0) or Jack (82-29)?</description>
    </item>
    
    <item>
      <title>Strategic Models</title>
      <link>/notebook/strategic-models/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/strategic-models/</guid>
      <description>Key Models Sources from keymodels.co and updated.
360 Degree Assessment The 4Ps of marketing The BCG growthshare matrix Managing work groups: Belbin team roles Blue ocean strategy Agile development Brainstorming The bullwhip effect Cognitive biases in decision making Customer lifetime value Decision trees Design thinking Disruptive innovation Emotional intelligence Ethnographic market research Five forces analysis Game theory: the prisoner’s dilemma Generic strategies Greiner’s growth model Just-in-time production Market orientation Matrix management The McKinsey 7S framework Change management: Kotter’s eight-step model Mintzberg’s managerial roles Motivation: Theory X and Theory Y Multichannel marketing Negotiating techniques: BATNA Net promoter score Pricing strategies: dynamic pricing Open innovation Corporate strategy: parenting advantage Stage/gate model for new product development Product life cycle Core competence and the resourcebased view Sensitivity analysis Scenario planning The service-profit chain The seven domains assessment model for entrepreneurs Six Sigma Corporate social responsibility: the triple bottom line The ambidextrous organisation Theory of constraints Total quality management Schein’s model of organisational culture Segmentation and personalised marketing Wardley Maps </description>
    </item>
    
    <item>
      <title>Technical Interviews</title>
      <link>/notebook/technical-interviews/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/technical-interviews/</guid>
      <description>The technical coding experience I think is an import filter for identifying someones coding chops that can&amp;rsquo;t be replaced. I usually get really positive feedback from how I conduct interviews for software engineers. Here are my thoughts on the subject.
Why I like coding interviews I used to think coding interviews were silly, and that technical discussion could replace that step in the interview process. But, after I had been on the other side of the table, I found that not only were there poor candidates out there, but there were some candidates who had very strong soft skills that masked their technical ability.</description>
    </item>
    
    <item>
      <title>The Inner Game of Tennis</title>
      <link>/notebook/tennis-ball/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/tennis-ball/</guid>
      <description>From the inner game of tennis: &amp;ldquo;Watch the seams of the tennis ball.&amp;rdquo; This will force you to focus more on what you&amp;rsquo;re trying to achieve.</description>
    </item>
    
    <item>
      <title>The Queen&#39;s Duck</title>
      <link>/notebook/queens-duck/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/queens-duck/</guid>
      <description>A feature added for no other reason than to draw management attention and be removed, thus avoiding unnecessary changes in other aspects of the product.
I don&amp;rsquo;t know if I actually invented this term or not, but I am certainly not the originator of the story that spawned it.
This started as a piece of Interplay corporate lore. It was well known that producers (a game industry position, roughly equivalent to PMs) had to make a change to everything that was done.</description>
    </item>
    
    <item>
      <title>Time is an Investment</title>
      <link>/notebook/time-investment/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/time-investment/</guid>
      <description>Time is an investment. Diversify your time!</description>
    </item>
    
    <item>
      <title>Turing Machines</title>
      <link>/notebook/turing-machines/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/turing-machines/</guid>
      <description>Historical Context Prior to 1936, there were no computers in the sense that we know them today. A &amp;ldquo;Computer&amp;rdquo; was a job title for people who could perform complex calculations by hand. Computing devices were limited, but there were mechanical and analog machines that could solve specific problems, but no general machines that could be programmed/configured to solve any problem. To solve a complex problem, you had to do it by hand or build a machanical device specific to your application.</description>
    </item>
    
    <item>
      <title>Turning Pro</title>
      <link>/notebook/turning-pro/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/turning-pro/</guid>
      <description>&amp;ldquo;Turning pro is a mindset. If we are struggling with fear. self-sabotage, procrastination, self doubt, etc., the problem is, we&amp;rsquo;re thinking like amateurs. Amateurs don&amp;rsquo;t show up. Amateurs crap out. Amateurs let adversity defeat them. The pro thinks differently: He shows up, he does his work, he keeps on truckin: no matter what&amp;rdquo;
The War of Art - Steven Pressfield
Beginner = ignorant simplicity Intermediate = functional complexity Advanced = profound simplicity</description>
    </item>
    
    <item>
      <title>Wardley Maps</title>
      <link>/notebook/wardley-maps/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/wardley-maps/</guid>
      <description>A Wardley map (created by Simon Wardley) (wikipedia entry) is a strategic model used to map how components/nodes within a system, map to user value and component evolution/commoditization. Value comes from the map when evolution is applied to nodes within the system to represent a transition from individual custom components to commoditized components. Playing with the motion of evolution of components, you can predict changes in strategy, market movements, future developments and even notice areas where different strategies may be needed for particular components.</description>
    </item>
    
    <item>
      <title>Weather Data</title>
      <link>/notebook/weather-data/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/weather-data/</guid>
      <description>Interesting weather data resources
Datasets NCEI Data Service API User Documentation https://www.ncei.noaa.gov/support/access-data-service-api-user-documentation NHC Active Storm JSON Feed Updated every 2 minutes, provides the same data available on the NHC website.
NHC Tropical Cyclone Status JSON File Reference https://www.nhc.noaa.gov/CurrentStorms.json Automated Tropical Cyclone Forecast (ATCF) Designed to assist forecasters with the process of making tropical cyclone forecasts.
https://ftp.nhc.noaa.gov/atcf/ https://ftp.nhc.noaa.gov/atcf/README ATCF Floater Images These floaters are fully automated and dependent upon input to the Automated Tropical Cyclone Forecast (ATCF) system, which is provided by the National Hurricane Center (NHC), Central Pacific Hurricane Center (CPHC) and the Joint Typhoon Warning Center (JTWC).</description>
    </item>
    
    <item>
      <title>Web3</title>
      <link>/notebook/web3/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/web3/</guid>
      <description>Web3 is the Decentralized Web based on blockchain concepts.
The term &amp;ldquo;Web3&amp;rdquo; was coined by Polkadot founder and Ethereum co-founder Gavin Wood in 2014, referring to a &amp;ldquo;decentralized online ecosystem based on blockchain.&amp;rdquo;[
DAOs Companies are run by DAOs. No CEOs/Presidents.
Polkadot, Substrate, Polygon Polkadot is a low level protocol to connect different blockchains.
Polygon: &amp;ldquo;Ethereum&amp;rsquo;s Internet of Blockchains&amp;rdquo;
Identity DID - Decentralized Identifier NFT - Non-fungible Tokens Proves ownership of a thing.</description>
    </item>
    
    <item>
      <title>Your Replacement</title>
      <link>/notebook/your-replacement/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/your-replacement/</guid>
      <description>Think if someone walked in the door at your company tomorrow who was going to replace you, what would they do? Would they be doing the things you know should have been done, or implement things you&amp;rsquo;ve been wanting to implement. Make a list of those things and start doing them.
I remember reading this from Marissa Mayer, then CEO of Yahoo.</description>
    </item>
    
    <item>
      <title>Zettelkasten</title>
      <link>/notebook/zettelkasten/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/notebook/zettelkasten/</guid>
      <description>A Zettelkasten is a note-taking and knowledge management method that originated from the German word for &amp;ldquo;slip box.&amp;rdquo; It was developed by sociologist Niklas Luhmann as a way to organize and connect ideas. In a Zettelkasten system, notes are taken on individual cards or slips of paper, each representing a single idea or concept. These notes are then interconnected through a system of numbering and linking.
The key principles of Zettelkasten include:</description>
    </item>
    
  </channel>
</rss>
