From 89ef42896c8ab1b157a4fef8d35bd4099f466142 Mon Sep 17 00:00:00 2001 From: James Martin Date: Wed, 17 May 2023 19:25:37 -0700 Subject: [PATCH] Updated site to match current live version. --- Gemfile.lock | 63 ++--- LICENSE | 661 ----------------------------------------------- LICENSE.txt | 14 + README.md | 11 +- _config.yml | 7 +- index.html | 22 -- key.asc | 21 ++ resume/index.pdf | Bin 43871 -> 0 bytes resume/index.tex | 67 ----- robots.txt | 4 +- 10 files changed, 78 insertions(+), 792 deletions(-) delete mode 100644 LICENSE create mode 100644 LICENSE.txt create mode 100644 key.asc delete mode 100644 resume/index.pdf delete mode 100644 resume/index.tex diff --git a/Gemfile.lock b/Gemfile.lock index 514eaf2..454b264 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,67 +1,72 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.7.0) - public_suffix (>= 2.0.2, < 5.0) + addressable (2.8.4) + public_suffix (>= 2.0.2, < 6.0) colorator (1.1.0) - concurrent-ruby (1.1.8) - em-websocket (0.5.2) + concurrent-ruby (1.2.2) + em-websocket (0.5.3) eventmachine (>= 0.12.9) - http_parser.rb (~> 0.6.0) + http_parser.rb (~> 0) eventmachine (1.2.7) - ffi (1.15.0) + ffi (1.15.5) forwardable-extended (2.6.0) - http_parser.rb (0.6.0) - i18n (1.8.9) + google-protobuf (3.23.1) + http_parser.rb (0.8.0) + i18n (1.13.0) concurrent-ruby (~> 1.0) - jekyll (4.2.0) + jekyll (4.3.2) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) i18n (~> 1.0) - jekyll-sass-converter (~> 2.0) + jekyll-sass-converter (>= 2.0, < 4.0) jekyll-watch (~> 2.0) - kramdown (~> 2.3) + kramdown (~> 2.3, >= 2.3.1) kramdown-parser-gfm (~> 1.0) liquid (~> 4.0) - mercenary (~> 0.4.0) + mercenary (>= 0.3.6, < 0.5) pathutil (~> 0.9) - rouge (~> 3.0) + rouge (>= 3.0, < 5.0) safe_yaml (~> 1.0) - terminal-table (~> 2.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) jekyll-last-modified-at (1.3.0) jekyll (>= 3.7, < 5.0) posix-spawn (~> 0.3.9) - jekyll-sass-converter (2.1.0) - sassc (> 2.0.1, < 3.0) + jekyll-sass-converter (3.0.0) + sass-embedded (~> 1.54) jekyll-sitemap (1.4.0) jekyll (>= 3.7, < 5.0) jekyll-watch (2.2.1) listen (~> 3.0) - kramdown (2.3.1) + kramdown (2.4.0) rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) - liquid (4.0.3) - listen (3.4.1) + liquid (4.0.4) + listen (3.8.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.4.0) pathutil (0.16.2) forwardable-extended (~> 2.6) posix-spawn (0.3.15) - public_suffix (4.0.6) - rb-fsevent (0.10.4) + public_suffix (5.0.1) + rake (13.0.6) + rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) - rexml (3.2.4) - rouge (3.26.0) + rexml (3.2.5) + rouge (4.1.1) safe_yaml (1.0.5) - sassc (2.4.0) - ffi (~> 1.9) - terminal-table (2.0.0) - unicode-display_width (~> 1.1, >= 1.1.1) - unicode-display_width (1.7.0) + sass-embedded (1.62.1) + google-protobuf (~> 3.21) + rake (>= 10.0.0) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + unicode-display_width (2.4.2) + webrick (1.8.1) PLATFORMS ruby @@ -71,4 +76,4 @@ DEPENDENCIES jekyll-sitemap BUNDLED WITH - 2.1.4 + 2.4.13 diff --git a/LICENSE b/LICENSE deleted file mode 100644 index dbbe355..0000000 --- a/LICENSE +++ /dev/null @@ -1,661 +0,0 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU Affero General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published - by the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU AGPL, see -. diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..04fd056 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,14 @@ +BSD Zero Clause License + +Copyright (c) 2017-2023 James T. Martin + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/README.md b/README.md index 1af5b27..6b13bd0 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -# jamestmartin.me -This is the source code for my personal website, [jamestmartin.me](https://jamestmartin.me). +# jtm.dev +This is the source code for my personal website, [jtm.dev](https://jtm.dev). ## Installation This project is built using [Jekyll](https://jekyllrb.com/), a static site generator. To install this website, you must first [install Jekyll](https://jekyllrb.com/docs/installation/). -Next, install all necessary modules with `bundle exec`. +Next, install all necessary modules with `bundle install`. To build the site, run `bundle exec jekyll build`. To rebuild the site continuously as updates are made, @@ -18,6 +18,5 @@ To work on the site without installing full web server, use `bundle exec jekyll ## Code Conventions All of my code is valid HTML5 and CSS3 according to [WHATWG standards](https://html.spec.whatwg.org) -I follow the [Google HTML/CSS Style Guide](https://google.github.io/styleguide/htmlcssguide.html). -Google recommends dropping optional tags wherever possible; -I know how to write valid XHTML polyglot as well, but choose not to as per the style guide. +I follow the [Google HTML/CSS Style Guide](https://google.github.io/styleguide/htmlcssguide.html); +Google recommends dropping optional tags wherever possible. diff --git a/_config.yml b/_config.yml index e2e856e..b4869d8 100644 --- a/_config.yml +++ b/_config.yml @@ -1,8 +1,5 @@ -url: "https://jamestmartin.me" +url: "https://jtm.dev" plugins: - jekyll-last-modified-at - jekyll-sitemap -exclude: - - resume/*.aux - - resume/*.log - - resume/*.out +exclude: [] diff --git a/index.html b/index.html index c66c76a..3830d7d 100644 --- a/index.html +++ b/index.html @@ -4,37 +4,15 @@ title: James T. Martin permalink: / ---

James T Martin

- Contact me:

Yes, that's really it, for the moment. I'm quitting Discord and haven't picked a new chat service yet.

- - A few things I like:
    diff --git a/key.asc b/key.asc new file mode 100644 index 0000000..cb50695 --- /dev/null +++ b/key.asc @@ -0,0 +1,21 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mG8EXmFEkBMFK4EEACIDAwRYjQDxaRtT8rqc3z9GP5FFc/a42Wz/s1zbz5aIESVc +Sk5ORvOHpueg9BvZ97GJKvUWBR6zJF4y/trXZub4aEVO8V+OuRLsRehwK75kHNeh +V7DTJ1Uw8RxLVnVAFG2Cspy0IEphbWVzIFQuIE1hcnRpbiA8amFtZXNAanRtYXIu +bWU+iLAEExMJADgWIQTKMULUODyMkN0n9SvW+y+YkvmyJQUCXmFEkAIbAwULCQgH +AgYVCgkICwIEFgIDAQIeAQIXgAAKCRDW+y+YkvmyJUk1AX4pGU0Fz+baoNFyexLD +Plb9aksu/STiRwCAmNkmbg1PjFhNl7hsZvYDC69xjrR1+UgBfRYZZoxniuRUW2eX +1h7hIsDNADuAiof8ncmEAXH3V9/UJn82mWp3PjJmecceHh4MBrQcSmFtZXMgTWFy +dGluIDxqYW1lc0BqdG0uZGV2PoiwBBMTCQA4FiEEyjFC1Dg8jJDdJ/Ur1vsvmJL5 +siUFAmLeQJUCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQ1vsvmJL5siVn +rwF7BtlYlyEEoO1V5i2zRd9KcdKfUm0rmVKICXWl2aED9N17lv+k5PqkG8BlHpsq ++HGeAYCQdPw6w4keyDWZAUfM4JWgjwWwczM+oKySNGvcb+YIaex/d8Ezkz+PXiUR +DiTcGy24cwReYUSQEgUrgQQAIgMDBHO3OnYYReuBoq5olEenTCqQ43w/H9JyLsBy +4fJzxBWe4R7h6nWJZWnZE7dfzqntayQ3ktbMO+Ke5Z7nXEA41gLT/qT/qwrOPgaa +XsuEYYC2ToYfWm/iDyDgEuV158wKxAMBCQiImAQYEwkAIBYhBMoxQtQ4PIyQ3Sf1 +K9b7L5iS+bIlBQJeYUSQAhsMAAoJENb7L5iS+bIlMd0BgL7/iReIkBksC/DYuIdJ +c+Plkpgzcq9jPxfw/FvUqZsk4b5i+eIFdwQqvY2Jt5DCPAF/bQdMlncl4pbdfJDh +YArKu6HXAZS8Gi8QL7p9Ua3Kq66upXXn8SiH4DywL9FEpq7/ +=esBF +-----END PGP PUBLIC KEY BLOCK----- diff --git a/resume/index.pdf b/resume/index.pdf deleted file mode 100644 index 8394f5472b4366846602e40c3abc19da30859543..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43871 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.me} -\item[Discord] jamestmartin\#7117 -\item[Phone] \href{tel:+1-206-331-1994}{(206) 331-1994} (please text first so I know you're not spam) -\item[GitHub] \href{https://github.com/jamestmartin}{jamestmartin} -\item[Location] Renton, WA -\end{description} - -\subsection{Experience} -\subsubsection{\href{https://dad.gallery}{Do Art Daily}, volunteer Ruby on Rails developer \hfill 2020} -\begin{itemize} -\item Discovered and fixed multiple severe security bugs by creating an automated test suite. -%\item Fixed those bugs: site-wide code injection, change anyone's password, personal information leak. -\item Designed and implemented secure cross-site authentication API and HAL+JSON REST API. -\end{itemize} - -% Including the dates in the subsubsection title like this isn't necessarily semantic. -% I ought to come up with a better way. -\subsubsection{\href{https://proglangdesign.net}{Programming Language Design Community}, Administrator \& web developer \hfill 2018–2020} -\begin{itemize} -\item Led redesign of the website; used Jekyll to automate the generation of the community projects list. -\item Co-founded the Discord sub-community; moderated it and \href{https://reddit.com/r/ProgrammingLanguages}{/r/ProgrammingLanguages}. -\item Bridged the Discord and Freenode sub-communities via Matrix. -\end{itemize} - -\subsubsection{Hazen Robotics Club, Java developer \hfill 2017–2019} -\begin{itemize} -\item Mentored programming at the district summer robotics camp for 90 hours. -\item Taught club members how to use Java and Git. -\item Collaborated to build robot controller programs for FIRST competitions. -\end{itemize} - -{\tiny Childhood experience (2009–2016) omitted for relevence.} - -\subsection{Skills} -\begin{itemize} -\item Languages: Java 8+, Rust, GHC Haskell, Agda, HTML5/XHTML, TypeScript -\item Tools: Git, GitHub, formal verification, continuous integration, bug tracking, unit testing -\item Administration: Debian GNU/Linux, Nginx, TLS deployment (incl. DNS CAA, HSTS, Let's Encrypt) -\end{itemize} - - -\subsection{Education} -\subsubsection{Hazen High School \hfill 2015–2019} -\begin{itemize} -\item Got high (4-5/5) scores on 7 AP exams, including Computer Science (5) and Calculus AB (4). -\item Learned shop skills (woodworking, welding) and received OSHA 10 certification. -\item Member of marching, symphonic, and jazz bands; received Sousa award in 2019. -\end{itemize} -\end{document} diff --git a/robots.txt b/robots.txt index 761ca2c..d790b5a 100644 --- a/robots.txt +++ b/robots.txt @@ -1,4 +1,4 @@ User-agent: * Disallow: -Host: jamestmartin.me -Sitemap: https://jamestmartin.me/sitemap.xml +Host: jtm.dev +Sitemap: https://jtm.dev/sitemap.xml