diff --git a/404.html b/404.html
new file mode 100644
index 0000000..086a5c9
--- /dev/null
+++ b/404.html
@@ -0,0 +1,25 @@
+---
+permalink: /404.html
+layout: default
+---
+
+
+
+
+
404
+
+
Page not found :(
+
The requested page could not be found.
+
diff --git a/Gemfile b/Gemfile
index 3aec09b..06b044b 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,7 +1,36 @@
-source 'https://rubygems.org'
+source "https://rubygems.org"
+# Hello! This is where you manage which Jekyll version is used to run.
+# When you want to use a different version, change it below, save the
+# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
+#
+# bundle exec jekyll serve
+#
+# This will help ensure the proper Jekyll version is running.
+# Happy Jekylling!
+## gem "jekyll", "~> 4.3.3"
+# This is the default theme for new Jekyll sites. You may change this to anything you like.
+## gem "minima", "~> 2.5"
+gem "just-the-docs"
+# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
+# uncomment the line below. To upgrade, run `bundle update github-pages`.
+gem "github-pages", group: :jekyll_plugins
+# If you have any plugins, put them here!
+group :jekyll_plugins do
+ gem "jekyll-feed", "~> 0.12"
+end
-gem "jekyll", "~> 4.3.3" # installed by `gem jekyll`
-# gem "webrick" # required when using Ruby >= 3 and Jekyll <= 4.2.2
+# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
+# and associated library.
+platforms :mingw, :x64_mingw, :mswin, :jruby do
+ gem "tzinfo", ">= 1", "< 3"
+ gem "tzinfo-data"
+end
-gem "just-the-docs", "0.7.0" # pinned to the current release
-# gem "just-the-docs" # always download the latest release
+# Performance-booster for watching directories on Windows
+gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
+
+# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
+# do not have a Java counterpart.
+gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
+
+gem "webrick", "~> 1.8"
diff --git a/Gemfile.lock b/Gemfile.lock
index 5912780..a567ff1 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,51 +1,218 @@
GEM
remote: https://rubygems.org/
specs:
+ activesupport (7.1.2)
+ base64
+ bigdecimal
+ concurrent-ruby (~> 1.0, >= 1.0.2)
+ connection_pool (>= 2.2.5)
+ drb
+ i18n (>= 1.6, < 2)
+ minitest (>= 5.1)
+ mutex_m
+ tzinfo (~> 2.0)
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
+ base64 (0.2.0)
+ bigdecimal (3.1.5)
+ coffee-script (2.4.1)
+ coffee-script-source
+ execjs
+ coffee-script-source (1.11.1)
colorator (1.1.0)
+ commonmarker (0.23.10)
concurrent-ruby (1.2.2)
+ connection_pool (2.4.1)
+ dnsruby (1.70.0)
+ simpleidn (~> 0.2.1)
+ drb (2.2.0)
+ ruby2_keywords
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
+ ethon (0.16.0)
+ ffi (>= 1.15.0)
eventmachine (1.2.7)
+ execjs (2.9.1)
+ faraday (2.8.1)
+ base64
+ faraday-net_http (>= 2.0, < 3.1)
+ ruby2_keywords (>= 0.0.4)
+ faraday-net_http (3.0.2)
ffi (1.16.3)
forwardable-extended (2.6.0)
- google-protobuf (3.25.1-arm64-darwin)
- google-protobuf (3.25.1-x86_64-linux)
+ gemoji (3.0.1)
+ github-pages (228)
+ github-pages-health-check (= 1.17.9)
+ jekyll (= 3.9.3)
+ jekyll-avatar (= 0.7.0)
+ jekyll-coffeescript (= 1.1.1)
+ jekyll-commonmark-ghpages (= 0.4.0)
+ jekyll-default-layout (= 0.1.4)
+ jekyll-feed (= 0.15.1)
+ jekyll-gist (= 1.5.0)
+ jekyll-github-metadata (= 2.13.0)
+ jekyll-include-cache (= 0.2.1)
+ jekyll-mentions (= 1.6.0)
+ jekyll-optional-front-matter (= 0.3.2)
+ jekyll-paginate (= 1.1.0)
+ jekyll-readme-index (= 0.3.0)
+ jekyll-redirect-from (= 0.16.0)
+ jekyll-relative-links (= 0.6.1)
+ jekyll-remote-theme (= 0.4.3)
+ jekyll-sass-converter (= 1.5.2)
+ jekyll-seo-tag (= 2.8.0)
+ jekyll-sitemap (= 1.4.0)
+ jekyll-swiss (= 1.0.0)
+ jekyll-theme-architect (= 0.2.0)
+ jekyll-theme-cayman (= 0.2.0)
+ jekyll-theme-dinky (= 0.2.0)
+ jekyll-theme-hacker (= 0.2.0)
+ jekyll-theme-leap-day (= 0.2.0)
+ jekyll-theme-merlot (= 0.2.0)
+ jekyll-theme-midnight (= 0.2.0)
+ jekyll-theme-minimal (= 0.2.0)
+ jekyll-theme-modernist (= 0.2.0)
+ jekyll-theme-primer (= 0.6.0)
+ jekyll-theme-slate (= 0.2.0)
+ jekyll-theme-tactile (= 0.2.0)
+ jekyll-theme-time-machine (= 0.2.0)
+ jekyll-titles-from-headings (= 0.5.3)
+ jemoji (= 0.12.0)
+ kramdown (= 2.3.2)
+ kramdown-parser-gfm (= 1.1.0)
+ liquid (= 4.0.4)
+ mercenary (~> 0.3)
+ minima (= 2.5.1)
+ nokogiri (>= 1.13.6, < 2.0)
+ rouge (= 3.26.0)
+ terminal-table (~> 1.4)
+ github-pages-health-check (1.17.9)
+ addressable (~> 2.3)
+ dnsruby (~> 1.60)
+ octokit (~> 4.0)
+ public_suffix (>= 3.0, < 5.0)
+ typhoeus (~> 1.3)
+ html-pipeline (2.14.3)
+ activesupport (>= 2)
+ nokogiri (>= 1.4)
http_parser.rb (0.8.0)
i18n (1.14.1)
concurrent-ruby (~> 1.0)
- jekyll (4.3.3)
+ jekyll (3.9.3)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
- i18n (~> 1.0)
- jekyll-sass-converter (>= 2.0, < 4.0)
+ i18n (>= 0.7, < 2)
+ jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
- kramdown (~> 2.3, >= 2.3.1)
- kramdown-parser-gfm (~> 1.0)
+ kramdown (>= 1.17, < 3)
liquid (~> 4.0)
- mercenary (>= 0.3.6, < 0.5)
+ mercenary (~> 0.3.3)
pathutil (~> 0.9)
- rouge (>= 3.0, < 5.0)
+ rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
- terminal-table (>= 1.8, < 4.0)
- webrick (~> 1.7)
+ jekyll-avatar (0.7.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-coffeescript (1.1.1)
+ coffee-script (~> 2.2)
+ coffee-script-source (~> 1.11.1)
+ jekyll-commonmark (1.4.0)
+ commonmarker (~> 0.22)
+ jekyll-commonmark-ghpages (0.4.0)
+ commonmarker (~> 0.23.7)
+ jekyll (~> 3.9.0)
+ jekyll-commonmark (~> 1.4.0)
+ rouge (>= 2.0, < 5.0)
+ jekyll-default-layout (0.1.4)
+ jekyll (~> 3.0)
+ jekyll-feed (0.15.1)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-gist (1.5.0)
+ octokit (~> 4.2)
+ jekyll-github-metadata (2.13.0)
+ jekyll (>= 3.4, < 5.0)
+ octokit (~> 4.0, != 4.4.0)
jekyll-include-cache (0.2.1)
jekyll (>= 3.7, < 5.0)
- jekyll-sass-converter (3.0.0)
- sass-embedded (~> 1.54)
+ jekyll-mentions (1.6.0)
+ html-pipeline (~> 2.3)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-optional-front-matter (0.3.2)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-paginate (1.1.0)
+ jekyll-readme-index (0.3.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-redirect-from (0.16.0)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-relative-links (0.6.1)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-remote-theme (0.4.3)
+ addressable (~> 2.0)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
+ rubyzip (>= 1.3.0, < 3.0)
+ jekyll-sass-converter (1.5.2)
+ sass (~> 3.4)
jekyll-seo-tag (2.8.0)
jekyll (>= 3.8, < 5.0)
+ jekyll-sitemap (1.4.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-swiss (1.0.0)
+ jekyll-theme-architect (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-cayman (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-dinky (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-hacker (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-leap-day (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-merlot (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-midnight (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-minimal (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-modernist (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-primer (0.6.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-github-metadata (~> 2.9)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-slate (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-tactile (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-time-machine (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-titles-from-headings (0.5.3)
+ jekyll (>= 3.3, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
+ jemoji (0.12.0)
+ gemoji (~> 3.0)
+ html-pipeline (~> 2.2)
+ jekyll (>= 3.0, < 5.0)
just-the-docs (0.7.0)
jekyll (>= 3.8.5)
jekyll-include-cache
jekyll-seo-tag (>= 2.0)
rake (>= 12.3.1)
- kramdown (2.4.0)
+ kramdown (2.3.2)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
@@ -53,33 +220,76 @@ GEM
listen (3.8.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
- mercenary (0.4.0)
+ mercenary (0.3.6)
+ mini_portile2 (2.8.5)
+ minima (2.5.1)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-feed (~> 0.9)
+ jekyll-seo-tag (~> 2.1)
+ minitest (5.20.0)
+ mutex_m (0.2.0)
+ nokogiri (1.16.0)
+ mini_portile2 (~> 2.8.2)
+ racc (~> 1.4)
+ nokogiri (1.16.0-arm64-darwin)
+ racc (~> 1.4)
+ nokogiri (1.16.0-x86_64-darwin)
+ racc (~> 1.4)
+ nokogiri (1.16.0-x86_64-linux)
+ racc (~> 1.4)
+ octokit (4.25.1)
+ faraday (>= 1, < 3)
+ sawyer (~> 0.9)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
- public_suffix (5.0.4)
- rake (13.0.6)
+ public_suffix (4.0.7)
+ racc (1.7.3)
+ rake (13.1.0)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.6)
- rouge (4.2.0)
+ rouge (3.26.0)
+ ruby2_keywords (0.0.5)
+ rubyzip (2.3.2)
safe_yaml (1.0.5)
- sass-embedded (1.69.5-arm64-darwin)
- google-protobuf (~> 3.23)
- sass-embedded (1.69.5-x86_64-linux-gnu)
- google-protobuf (~> 3.23)
- terminal-table (3.0.2)
- unicode-display_width (>= 1.1.1, < 3)
- unicode-display_width (2.5.0)
+ sass (3.7.4)
+ sass-listen (~> 4.0.0)
+ sass-listen (4.0.0)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ sawyer (0.9.2)
+ addressable (>= 2.3.5)
+ faraday (>= 0.17.3, < 3)
+ simpleidn (0.2.1)
+ unf (~> 0.1.4)
+ terminal-table (1.8.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ typhoeus (1.4.1)
+ ethon (>= 0.9.0)
+ tzinfo (2.0.6)
+ concurrent-ruby (~> 1.0)
+ unf (0.1.4)
+ unf_ext
+ unf_ext (0.0.9.1)
+ unicode-display_width (1.8.0)
webrick (1.8.1)
PLATFORMS
- arm64-darwin-23
+ arm64-darwin
+ ruby
+ x86_64-darwin
x86_64-linux
DEPENDENCIES
- jekyll (~> 4.3.3)
- just-the-docs (= 0.7.0)
+ github-pages
+ http_parser.rb (~> 0.6.0)
+ jekyll-feed (~> 0.12)
+ just-the-docs
+ tzinfo (>= 1, < 3)
+ tzinfo-data
+ wdm (~> 0.1.1)
+ webrick (~> 1.8)
BUNDLED WITH
- 2.3.26
+ 2.5.4
diff --git a/_config.yml b/_config.yml
index faa6eaa..f048de5 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1,8 +1,60 @@
-title: Just the Docs Template
-description: A starter template for a Jeykll site using the Just the Docs theme!
+# Welcome to Jekyll!
+#
+# This config file is meant for settings that affect your whole blog, values
+# which you are expected to set up once and rarely edit after that. If you find
+# yourself editing this file very often, consider using Jekyll's data files
+# feature for the data you need to update frequently.
+#
+# For technical reasons, this file is *NOT* reloaded automatically when you use
+# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
+#
+# If you need help with YAML syntax, here are some quick references for you:
+# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
+# https://learnxinyminutes.com/docs/yaml/
+#
+# Site settings
+# These are used to personalize your new site. If you look in the HTML files,
+# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
+# You can create any custom variable you would like, and they will be accessible
+# in the templates via {{ site.myvariable }}.
+
+title: John D. Corbett
+email: corbett@pictographer.com
+description: >- # this means to ignore newlines until "baseurl:"
+ Resume and portfolio for John D. Corbett, Rust software developer.
+baseurl: "" # the subpath of your site, e.g. /blog
+url: "" # the base hostname & protocol for your site, e.g. http://example.com
+github_username: pictographer
+
+# Build settings
+## theme: minima
+## remote_theme: "just-the-docs/just-the-docs"
theme: just-the-docs
+plugins:
+ - jekyll-feed
+
+# Exclude from processing.
+# The following items will not be processed, by default.
+# Any item listed under the `exclude:` key here will be automatically added to
+# the internal "default list".
+#
+# Excluded items can be processed by explicitly listing the directories or
+# their entries' file path in the `include:` list.
+#
+# exclude:
+# - .sass-cache/
+# - .jekyll-cache/
+# - gemfiles/
+# - Gemfile
+# - Gemfile.lock
+# - node_modules/
+# - vendor/bundle/
+# - vendor/cache/
+# - vendor/gems/
+# - vendor/ruby/
-url: https://just-the-docs.github.io
+# Set a path/url to a logo that will be displayed instead of the title
+logo: "assets/images/op-sphere1024.png"
-aux_links:
- Template Repository: https://github.com/just-the-docs/just-the-docs-template
+# Set a path/url to a favicon that will be displayed by the browser
+favicon_ico: "/assets/images/favicon.ico"
diff --git a/_posts/2024-01-04-welcome-to-jekyll.markdown b/_posts/2024-01-04-welcome-to-jekyll.markdown
new file mode 100644
index 0000000..33f669a
--- /dev/null
+++ b/_posts/2024-01-04-welcome-to-jekyll.markdown
@@ -0,0 +1,29 @@
+---
+layout: post
+title: "Welcome to Jekyll!"
+date: 2024-01-04 15:52:36 -0800
+categories: jekyll update
+---
+You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
+
+Jekyll requires blog post files to be named according to the following format:
+
+`YEAR-MONTH-DAY-title.MARKUP`
+
+Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
+
+Jekyll also offers powerful support for code snippets:
+
+{% highlight ruby %}
+def print_hi(name)
+ puts "Hi, #{name}"
+end
+print_hi('Tom')
+#=> prints 'Hi, Tom' to STDOUT.
+{% endhighlight %}
+
+Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
+
+[jekyll-docs]: https://jekyllrb.com/docs/home
+[jekyll-gh]: https://github.com/jekyll/jekyll
+[jekyll-talk]: https://talk.jekyllrb.com/
diff --git a/about.markdown b/about.markdown
new file mode 100644
index 0000000..d24c521
--- /dev/null
+++ b/about.markdown
@@ -0,0 +1,9 @@
+---
+layout: page
+title: About
+permalink: /about/
+---
+
+This is the resume and portfolio of John D. Corbett, Rust software developer.
+
+[LinkedIn profile](https://www.linkedin.com/in/johndcorbett/)
\ No newline at end of file
diff --git a/assets/images/favicon.ico b/assets/images/favicon.ico
new file mode 100644
index 0000000..a6503b2
Binary files /dev/null and b/assets/images/favicon.ico differ
diff --git a/assets/images/op-sphere1024.png b/assets/images/op-sphere1024.png
new file mode 100644
index 0000000..30b706f
Binary files /dev/null and b/assets/images/op-sphere1024.png differ
diff --git a/index.markdown b/index.markdown
new file mode 100644
index 0000000..8fa0a3d
--- /dev/null
+++ b/index.markdown
@@ -0,0 +1,56 @@
+---
+# Feel free to add content and custom Front Matter to this file.
+# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
+
+layout: home
+---
+
+The Pictographer's Shop is the virutal workshop of John
+D. Corbett. I’m primarily a software developer, but I have several
+professional interests adjacent to software development including
+graphic arts, marketing, management, electronics, and technical
+writing.
+
+Here you'll find my
+
+- [Resume](/resume.markdown)
+- [Open source projects](https://github.com/pictographer)
+- [Portfolio](/portfolio.markdown)
+- [Patents](/patents.markdown)
+- [Tutorials](/tutorials.markdown)
+
+Early in my career, I was drawn to the most exciting technology and
+didn't think too much about other aspects of the workplace such as
+company culture or work practices, with the exception of skill
+acquisition. I'm still driven to make things work, but I recognize
+that the collaborators are more important than the domain. I’m
+interested in finding people to work with whose values align with
+mine. Briefly,
+
+- We seek work that is beneficial, not merely lucrative
+- We choose correctness over haste
+
+I'm seeking a software development position in any of the following
+
+- Engineering
+- Science
+- Architecture
+- Education
+- Design
+
+Preferably in Rust, ideally open source, but I'm open to various tool
+stacks and business models.
+
+I'm happy to lead a team and mentor co-workers. Although I've had some
+proud successes as a manager, I'm still new at it.
+
+I've got a high tolerance for working without interaction, but I
+prefer to have at least one active collaborator and leadership willing
+and able to provide meaningful guidance.
+
+I have a solid track record as a creative software developer. I have
+ten patents, including one foundational patent in user interface
+development and a pretty wild patent for verifying integrated circuits
+using their electromagnetic emanations. My verbal skills enable me to
+facilitate creative conversations. I've often been the originator of
+new applications and libraries.
\ No newline at end of file
diff --git a/patents.markdown b/patents.markdown
new file mode 100644
index 0000000..76bd8be
--- /dev/null
+++ b/patents.markdown
@@ -0,0 +1,181 @@
+---
+layout: page
+title: Patents
+permalink: /patents/
+---
+
+# Patent Portfolio of John D. Corbett
+
+Patents help protect corporations by raising the barriers to entry for
+would-be competitors and by providing a defense against accusations of
+intellectual property infringement. Over the years, I've had the
+pleasure of authoring or co-authoring ten patents. Although most of
+them are in the area of Electronic Design Automation, that's because
+Xilinx was particularly supportive of inventors and I spent over a
+decade there. My first and one of my best is in the area of user
+interface development.
+
+Patents are written using a particular style and jargon. I've
+attempted to describe my patents here in plain language, so even if
+you're not a specialist, the gist of each should make sense.
+
+
+## Electromagnetic Verification of Integrated Circuits
+[US 10107855 · Issued Oct 23, 2018](https://patents.justia.com/patent/10107855)
+
+One aspect of securing cryptographic equipment is detecting when
+tampering has occurred such as a part substitution during
+manufacturing. Another aspect is preventing sensitive information from
+leaking via side-channels such as changes in power consumption or
+radio emanation.
+
+It occurred to me that recording radio emanations near an integrated
+circuit (IC) could be used as a baseline to detect future
+tampering. The emanation could be turned into a digital fingerprint
+specific to the IC and the computation it was performing. If at some
+later time, the IC was replaced with a counterfeit, a second
+measurement would differ from the first revealing this. This technique
+could be used to reduce supply chain risks.
+
+
+## Method and circuits for superclocking
+[US 9436786 · Issued Sep 6, 2016](https://patents.justia.com/patent/9436786)
+
+In modern integrated circuits, heat dissipation is often the limiting
+factor on performance. As we move to ever smaller transistors, the
+amount of so-called "dark silicon" that cannot be used due to thermal
+constraints increases. The gist of this invention is to spread the
+heat around the IC by moving computations among redundant functional
+units. Before one part of the IC overheats, the computation is
+transferred to another cooler part, thus enabling the IC to run
+faster than it would if limited by the single hotest region of the
+IC.
+
+## Prioritized detection of memory corruption
+[US 8522091 · Issued Aug 27, 2013](https://patents.justia.com/patent/8522091)
+
+A field-programmable gate array (FPGA) is general purpose integrated
+circuit that are configured to perform a specific computation by
+setting control registers and defining signal paths between functional
+units. The configuration is a binary sequence called a bitstream. The
+bitstream is read into the device sequentially and subsequently
+resides in the configuration memory of the FPGA.
+
+For applications requiring high reliability, it is important to
+monitor and correct application memory and configuration memory
+because cosmic rays or high energy protons can cause memory cells to
+flip at random thus changing the circuit or changing the state of the
+circuit.
+
+The process of correcting configuration memory is commonly performed
+in a repeated sequential scan with each configuration memory element
+being repaired at the same rate as the others. However, with analysis,
+it is possible to learn which elements of configuration memory are
+more likely to result in malfunction if randomly flipped. The gist of
+this invention is to scan the more critical configuration memory
+elements at higher frequency than the rest to reduce the risk that a
+random memory flip will affect an ongoing computation.
+
+## Reducing susceptibility of circuit designs to single event upsets
+[US 8065644 · Issued Nov 22, 2011](https://patents.justia.com/patent/8065644)
+
+My first role at Xilinx was to take over maintenance of a design tool
+for FPGA application developers working on satellite applications. The
+tool was used to add triple modular redundancy to a given design. When
+it was not practical to triplicate the entire design, the designer
+would selectively triplicate portions of the design.
+
+Using fault injection, it was possible to discover which parts of a
+design were most likely to fail in the presence of a fault.
+
+Combining these two ideas would allow the design mitigation choices to
+be automated.
+
+## Isolation verification for implementing modular redundancy within programmable integrated circuits
+[US 8065642 · Issued Nov 18, 2011](https://patents.justia.com/patent/8065642)
+
+When using modular redundancy to improve reliability, it is important
+to minimize or eliminate single points of failure that corrupt
+multiple redundant modules. Most of my career at Xilinx worked on
+design verification tools that would analyze and report portions of a
+design that could potentially allow a single fault to corrupt multiple
+modules. The gist of this patent is to use isolation verification
+methodology to assess the robustness of modular redundancy.
+
+## Isolation Verification within Integrated Circuits
+[US 7949974 · Issued May 24, 2011](https://patents.google.com/patent/US7949974)
+
+After WWII, cryptographic equipment in the US and the UK was not
+permitted to have information from multiple levels of classification
+in a single circuit. This simplifies the analysis of ways information
+might unintentionally leak from one part of the system to another.
+
+As integrated circuits grew, this restriction became increasingly
+onerous. I was part of a team that collaborated with US and UK
+intelligence agencies to modernize the requirements for cryptographic
+equipment. My contribution was to create analysis tools that would
+show the specific extent to which modules within a single FPGA
+integrated circuit were isolated from each other.
+
+This patent describes how we analyzed the designs. There were two
+approaches. The first was to search for routes between modules that
+could be constructed by assuming a given number of faults could
+occur. The second method used the tile-based layout of the FPGA to
+examine a barrier of inactive tiles between modules.
+
+## Methods for automatically generating fault mitigation strategies for electronic system designs
+[US 7930662 · Issued Apr 19, 2011](https://patents.justia.com/patent/7930662)
+
+There are several techniques for mitigating faults including modular
+redundancy, error correcting codes, temporal redundancy, etc. This
+patent emphasizes selection among various mitigation techniques as a
+way to automate fault mitigation in a circuit design.
+
+## Verifying design isolation using bitstreams
+[US 7797651 · Issued Sep 14, 2010]/patents.justia.com/patent/7797651)
+
+Xilinx had tools for generating and combining partial FPGA
+configuration bitstreams where each bitstream would contain one or more
+modules. Xilinx also had tools for injecting faults in the
+configuration memory resulting from a bitstream and mapping the fault
+location to a specific circuit element. The gist of this patent was to
+treat bitstreams as sets of components and intersect the sets to find
+common elements representing potential single points of failure.
+
+## Generic transfer of exclusive rights
+[US 6161121 · Issued Dec 12, 2000](https://patents.justia.com/patent/6161121)
+
+This patent describes a protocol for a transfer of digital access via
+an automated escrow agent. My contribution was to propose blinding the
+escrow agent to the digital assets being transferred.
+
+## Interactive method of developing software interfaces
+[US 5041992 · Issued Aug 20, 1991](https://patents.justia.com/patent/5041992)
+
+Nowadays we take for granted computer graphic computer displays with a
+pointing device (typically a mouse or touchpad) and graphic objects on
+the display that can be clicked, selected, and dragged with the
+pointing device. When this patent was written, these ideas were
+new. The prevailing paradigm for building graphical interfaces was to
+write program code to draw on the display, to read the pointing
+device, and to update the display based on the users actions with the
+pointing device, and the keyboard.
+
+My group was developing direct manipulation interfaces that relied on
+selecting and dragging graphical objects around the display. I
+realized we could save time if instead of building each interface from
+new program code, we had an graphical tool for building graphical
+interfaces and an interpreter for running the interface. A drawing
+program was integrated into a generalize system for dragging graphic
+objects around the display. A graphic object could have an associated
+map labeling various parts of the object for specialized interaction
+such as buttons or connection points. The program code associated with
+a clicking on a part of the object could be accessed for editing by
+holding a modifier key while clicking it, so the programmer would not
+even need to know the name of the part in advance. We build a direct
+manipulation user interface for building direct manipulation user
+interfaces.
+
+Later, Apple HyperCard, NeXT Interface Builder, Microsoft Visual Basic
+and others would implement similar ideas.
+
diff --git a/portfolio.markdown b/portfolio.markdown
new file mode 100644
index 0000000..f18093c
--- /dev/null
+++ b/portfolio.markdown
@@ -0,0 +1,11 @@
+---
+layout: page
+title: Portfolio
+permalink: /portfolio/
+---
+
+Tagged Base64
+
+Tide Disco
+
+Gimp Tutorial
diff --git a/resume.markdown b/resume.markdown
new file mode 100644
index 0000000..229a398
--- /dev/null
+++ b/resume.markdown
@@ -0,0 +1,9 @@
+---
+layout: page
+title: Resume
+permalink: /resume/
+---
+
+# John D. Corbett, Rust Software Developer
+
+Been writing Rust for a few years.