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.