From 0cacd24becf86f37fccec94ff1c23414e562c53b Mon Sep 17 00:00:00 2001 From: Philip Johnson Date: Tue, 20 Feb 2024 06:18:15 -1000 Subject: [PATCH] Deploy website - based on e482ff51471ce164e68bf20bebbdbfb678ca0b34 --- 404.html | 4 ++-- assets/js/{4053cadc.fa4aaa4a.js => 4053cadc.e287b859.js} | 2 +- assets/js/{8c9540e9.e2533564.js => 8c9540e9.37eb3d12.js} | 2 +- ...{runtime~main.642ed02d.js => runtime~main.ee6d9c15.js} | 2 +- blog.html | 4 ++-- blog/2022/06/13/techfolios-2.html | 4 ++-- blog/archive.html | 4 ++-- blog/fullstack-presentation.html | 4 ++-- blog/ics-portfolios.html | 4 ++-- blog/initial-release.html | 4 ++-- blog/preview-release.html | 4 ++-- blog/release-1-1.html | 4 ++-- blog/syntax-highlighting-fix.html | 4 ++-- blog/tags.html | 4 ++-- blog/tags/bug.html | 4 ++-- blog/tags/presentation.html | 4 ++-- blog/tags/release.html | 4 ++-- blog/tags/workshop.html | 4 ++-- blog/techfolio-designer.html | 4 ++-- blog/workshops-2016.html | 4 ++-- docs/archive/developer-guide/manage-this-site.html | 4 ++-- docs/archive/developer-guide/markdown-features.html | 4 ++-- docs/archive/developer-guide/overview.html | 4 ++-- docs/archive/developer-guide/theme-customization.html | 4 ++-- docs/gallery.html | 4 ++-- docs/help.html | 4 ++-- docs/overview.html | 4 ++-- docs/quick-start/configure-bio-json.html | 4 ++-- docs/quick-start/configure-essays.html | 4 ++-- docs/quick-start/configure-projects.html | 4 ++-- docs/quick-start/configure-resume.html | 4 ++-- docs/quick-start/configure-theme.html | 4 ++-- docs/quick-start/initialization.html | 8 ++++---- docs/quick-start/next-steps.html | 4 ++-- docs/quick-start/overview.html | 4 ++-- docs/user-guide/anatomy-of-bio-json.html | 6 +++--- docs/user-guide/cloud-development.html | 4 ++-- docs/user-guide/customize-layout.html | 4 ++-- docs/user-guide/customize-theme.html | 4 ++-- docs/user-guide/drafts.html | 4 ++-- docs/user-guide/essay-and-project-tips.html | 4 ++-- docs/user-guide/formatting.html | 4 ++-- docs/user-guide/invalid-date-field.html | 4 ++-- docs/user-guide/local-development.html | 4 ++-- docs/user-guide/locale-problem.html | 4 ++-- docs/user-guide/missing-page.html | 4 ++-- docs/user-guide/overview.html | 4 ++-- docs/user-guide/project-and-essay-url.html | 4 ++-- docs/user-guide/tool-installation.html | 4 ++-- docs/user-guide/v2-migration.html | 4 ++-- index.html | 4 ++-- markdown-page.html | 4 ++-- 52 files changed, 104 insertions(+), 104 deletions(-) rename assets/js/{4053cadc.fa4aaa4a.js => 4053cadc.e287b859.js} (50%) rename assets/js/{8c9540e9.e2533564.js => 8c9540e9.37eb3d12.js} (88%) rename assets/js/{runtime~main.642ed02d.js => runtime~main.ee6d9c15.js} (98%) diff --git a/404.html b/404.html index ae23691..2b6b7bf 100644 --- a/404.html +++ b/404.html @@ -5,7 +5,7 @@ Page Not Found | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/assets/js/4053cadc.fa4aaa4a.js b/assets/js/4053cadc.e287b859.js similarity index 50% rename from assets/js/4053cadc.fa4aaa4a.js rename to assets/js/4053cadc.e287b859.js index 12993c0..e2fc9e6 100644 --- a/assets/js/4053cadc.fa4aaa4a.js +++ b/assets/js/4053cadc.e287b859.js @@ -1 +1 @@ -"use strict";(self.webpackChunktechfolios=self.webpackChunktechfolios||[]).push([[1056],{3905:(e,t,i)=>{i.d(t,{Zo:()=>p,kt:()=>m});var o=i(7294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,o)}return i}function r(e){for(var t=1;t=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var s=o.createContext({}),u=function(e){var t=o.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},p=function(e){var t=u(e.components);return o.createElement(s.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var i=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=u(i),d=n,m=c["".concat(s,".").concat(d)]||c[d]||h[d]||a;return i?o.createElement(m,r(r({ref:t},p),{},{components:i})):o.createElement(m,r({ref:t},p))}));function m(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=i.length,r=new Array(a);r[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,r[1]=l;for(var u=2;u{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>u});var o=i(7462),n=(i(7294),i(3905));const a={title:"Initialization"},r=void 0,l={unversionedId:"quick-start/initialization",id:"quick-start/initialization",title:"Initialization",description:"You only have to do the following initialization tasks when you are setting up your TechFolio for the very first time.",source:"@site/docs/quick-start/initialization.md",sourceDirName:"quick-start",slug:"/quick-start/initialization",permalink:"/docs/quick-start/initialization",draft:!1,tags:[],version:"current",frontMatter:{title:"Initialization"},sidebar:"publicSidebar",previous:{title:"Overview",permalink:"/docs/quick-start/overview"},next:{title:"Configure bio.json",permalink:"/docs/quick-start/configure-bio-json"}},s={},u=[{value:"Join GitHub",id:"join-github",level:2},{value:"Copy the template",id:"copy-the-template",level:2},{value:"Set workflow permissions to "Read and write"",id:"set-workflow-permissions-to-read-and-write",level:2},{value:"Select GitHub Actions for deployment",id:"select-github-actions-for-deployment",level:2},{value:"Configure _config.yml",id:"configure-_configyml",level:2},{value:"Monitor the build",id:"monitor-the-build",level:2},{value:"View your portfolio",id:"view-your-portfolio",level:2}],p={toc:u},c="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,o.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"You only have to do the following initialization tasks when you are setting up your TechFolio for the very first time. "),(0,n.kt)("h2",{id:"join-github"},"Join GitHub"),(0,n.kt)("p",null,"To get started with TechFolios using this Quick Start, all you need is an account at GitHub. You don't need to download any software or even know how to use git. Everything you need to do for this Quick Start can be done in a browser."),(0,n.kt)("p",null,"If you haven't already, ",(0,n.kt)("a",{parentName:"p",href:"https://help.github.com/articles/signing-up-for-a-new-github-account"},"sign up for GitHub")," and ",(0,n.kt)("a",{parentName:"p",href:"https://help.github.com/articles/verifying-your-email-address/"},"verify your email address"),". Choose your username wisely, as that will become part of the URL to your portfolio site."),(0,n.kt)("admonition",{title:"Username recommendations",type:"tip"},(0,n.kt)("p",{parentName:"admonition"},'Keep your username professional and close to your real name: "the3Gr8est" might seem super clever to you right now, but will be awkward and embarrassing to you during an interview next year. Restrict yourself to lowercase characters, numbers, and hyphens to make it simple to remember. Uppercase adds unnecessary confusion. Don\'t make your username location-specific: "philip-at-manoa" will be confusing if you move next year to San Francisco.')),(0,n.kt)("p",null,"If you decide your current GitHub username could use some improvement, it is very easy to ",(0,n.kt)("a",{parentName:"p",href:"https://help.github.com/articles/changing-your-github-username/"},"change your GitHub username")," to something more professional."),(0,n.kt)("p",null,"Before proceeding, ",(0,n.kt)("a",{parentName:"p",href:"http://github.com/login"},"login")," to your GitHub account."),(0,n.kt)("h2",{id:"copy-the-template"},"Copy the template"),(0,n.kt)("p",null,"In this step, you'll make your personal copy of the TechFolio template."),(0,n.kt)("admonition",{title:"Your screens may look a little different",type:"warning"},(0,n.kt)("p",{parentName:"admonition"},"GitHub makes changes to their user interface quite frequently. We try to keep these screenshots up to date, but your browser might display something slightly different. Let us know if things look ",(0,n.kt)("strong",{parentName:"p"},"really")," different.")),(0,n.kt)("p",null,"First, go to ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/techfolios/template"},"https://github.com/techfolios/template"),":"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(6800).Z,width:"2482",height:"1436"})),(0,n.kt)("p",null,"Click the ",(0,n.kt)("inlineCode",{parentName:"p"},"Use this template"),' button, then select "Create a new repository". (If you don\'t see the "Use this template" button, make sure you are signed in to GitHub.) Select your account as the "Owner", and specify the repository name as your account name plus ".github.io". It should look similar to this:'),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(6665).Z,width:"2426",height:"1964"})),(0,n.kt)("p",null,"Then press the ",(0,n.kt)("inlineCode",{parentName:"p"},"Create repository")," button. GitHub will make a new copy of the template in your account and display a page like this:"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(636).Z,width:"2232",height:"1906"})),(0,n.kt)("admonition",{title:"Verify your repository name",type:"warning"},(0,n.kt)("p",{parentName:"admonition"},'Make sure the repository name is correct. As you can see in this example, since my GitHub username is "philipmjohnson", the repository name must be "philipmjohnson.github.io". If the first part of the repository name does not match your GitHub username exactly, then you need to rename your repository right now to make it match. Click on the Settings link to rename your repo, it\'s easy to fix.')),(0,n.kt)("p",null,'Now let\'s fix the "About" section to link to your portfolio. Click on the gear icon next to the "About" label, which brings up a dialog box. Add "Professional Portfolio" as the description, add "',(0,n.kt)("a",{parentName:"p",href:"https://USERNAME.github.io%22"},'https://USERNAME.github.io"'),' (where USERNAME is your username) as the website, and (if you want) add "professional-portfolio" as a topic. The result should look like this:'),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(6021).Z,width:"2372",height:"1762"})),(0,n.kt)("p",null,"After saving the changes, you'll have a convenient link to your professional portfolio on the home page for this repo."),(0,n.kt)("h2",{id:"set-workflow-permissions-to-read-and-write"},'Set workflow permissions to "Read and write"'),(0,n.kt)("p",null,"Now click on the Settings tab near the top of the window, then Actions and General in the left sidebar to display the Actions permissions page:"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(5526).Z,width:"1200",height:"1384"})),(0,n.kt)("p",null,'Check that Workflow permissions is set to "Read and write permissions". If not, click the radio button and press "Save".'),(0,n.kt)("h2",{id:"select-github-actions-for-deployment"},"Select GitHub Actions for deployment"),(0,n.kt)("p",null,'Next, click on the Pages link in the left sidebar, and make sure the "GitHub Actions" is selected as the "Source" for Build and Deployment:'),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(597).Z,width:"2558",height:"2040"})),(0,n.kt)("h2",{id:"configure-_configyml"},"Configure ",(0,n.kt)("inlineCode",{parentName:"h2"},"_config.yml")),(0,n.kt)("p",null,"Now that your repository is set up, we can start editing the template files to make this professional portfolio your own."),(0,n.kt)("p",null,'Scroll down the repository home page until you find the file named "_config.yml", and click on it, which will bring up a page that looks like this:'),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(7193).Z,width:"2260",height:"1738"})),(0,n.kt)("p",null,"Click the pencil icon on the right hand side to edit the file:"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(2935).Z,width:"2260",height:"1738"})),(0,n.kt)("p",null,'The first section of the file, "Required Changes", contains the three lines you have to change.\nEdit ',(0,n.kt)("inlineCode",{parentName:"p"},"title:")," to specify your own name, edit ",(0,n.kt)("inlineCode",{parentName:"p"},"url:")," to specify your portfolio, and edit ",(0,n.kt)("inlineCode",{parentName:"p"},"baseurl:")," to be the empty string. When you're done editing, that section of _config.yml should look similar to this:"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(7486).Z,width:"2260",height:"1738"})),(0,n.kt)("p",null,'Click "Commit changes" to save these changes. (It will pop up a dialog box, just click "Commit Changes" again to confirm.)'),(0,n.kt)("h2",{id:"monitor-the-build"},"Monitor the build"),(0,n.kt)("p",null,"Every time you commit a change to your portfolio, GitHub will attempt to build and deploy your revised portfolio. It does this through a technology called ",(0,n.kt)("a",{parentName:"p",href:"https://docs.github.com/en/actions"},"GitHub Actions"),". In fact, GitHub is trying to build a new version of your portfolio right now. Let's watch."),(0,n.kt)("p",null,'First, click on the "Actions" label on the home page of your repository. That will take you to a page that looks like this:'),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(2160).Z,width:"2426",height:"1964"})),(0,n.kt)("p",null,'This page indicates that two GitHub Actions (i.e. "workflows") named "pages-build-deployment" have previously run and completed successfully (indicated by the green checkmarks). There is a workflow called "Jekyll Deploy" that is running right now (indicated by the yellow dot). GitHub labels this workflow execution instance using the commit message associated with the change to the repository that triggered the Action. In this case, it was "Update _config.yml".'),(0,n.kt)("admonition",{title:"Your action name may differ",type:"warning"},(0,n.kt)("p",{parentName:"admonition"},"GitHub occasionally changes the name of their build actions. ")),(0,n.kt)("p",null,'You can watch the build in more detail by clicking on the "Update _config.yml" line, which takes you to a page like this:'),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(4646).Z,width:"2426",height:"1964"})),(0,n.kt)("p",null,'Clicking on the "build_and_deploy" label takes you to a page that shows the actual progress through the build:'),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(747).Z,width:"2426",height:"1964"})),(0,n.kt)("p",null,"Finally, you can click on the arrow next to any build step and see what happened during it:"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(8395).Z,width:"2232",height:"1906"})),(0,n.kt)("p",null,"After a few minutes, the Jekyll Deploy workflow will complete and the Actions page will look like this:"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(7434).Z,width:"2426",height:"1856"})),(0,n.kt)("p",null,'Notice that there is a green checkmark beside the "Update _config.yml" workflow run, indicating that it has completed successfully.'),(0,n.kt)("admonition",{title:"Why monitor the build?",type:"info"},(0,n.kt)("p",{parentName:"admonition"},"There are two reasons it is useful to know how to monitor the build:"),(0,n.kt)("ol",{parentName:"admonition"},(0,n.kt)("li",{parentName:"ol"},"By monitoring the build, you'll know when your updated portfolio is ready to be viewed."),(0,n.kt)("li",{parentName:"ol"},"Monitoring the build lets you know if any errors occurred during the build.")),(0,n.kt)("p",{parentName:"admonition"},"Also, please note that the very first time you try to build your portfolio, it takes about five minutes, which is a long time! Don't worry, though: after this very first build, GitHub will cache the build artifacts and your future builds should take less than a minute to complete.")),(0,n.kt)("admonition",{title:"Oh no! My very first build failed!",type:"warning"},(0,n.kt)("p",{parentName:"admonition"},"Unfortunately, some users have reported that their first build failed with an error like this:"),(0,n.kt)("pre",{parentName:"admonition"},(0,n.kt)("code",{parentName:"pre"},"error: RPC failed; curl 55 Failed sending HTTP2 data\nfatal: the remote end hung up unexpectedly\nfatal: the remote end hung up unexpectedly\n")),(0,n.kt)("p",{parentName:"admonition"},"This is not your fault (or ours): it means that there was a network connection problem on GitHub's side that resulted in a timeout. In our experience, all you have to do is re-trigger the build one more time. (You can do this by editing the ",(0,n.kt)("inlineCode",{parentName:"p"},"_config.yml")," file and adding a space or newline, then committing the change). "),(0,n.kt)("p",{parentName:"admonition"},"The good news is that the files retrieved over the network for the first build are cached for the future, so it is unlikely you'll run into this particular error again upon subsequent builds of your portfolio.")),(0,n.kt)("h2",{id:"view-your-portfolio"},"View your portfolio"),(0,n.kt)("p",null,"Click the link to see your brand new professional portfolio:"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(9285).Z,width:"2232",height:"1906"})),(0,n.kt)("p",null,'Congratulations! The URL "',(0,n.kt)("a",{parentName:"p",href:"https://philipmjohnson.github.io%22"},'https://philipmjohnson.github.io"')," now shows the portfolio for... Molly Maluhia?"))}h.isMDXComponent=!0},6021:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/about-dialog-4c316d9b8931182cbd3c4f80b9fc900b.png"},5526:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/action-permissions-257697e4b90f46127e966cf28b037d6a.png"},2160:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/actions-page-26102115676e6ca08648f369c15abce6.png"},4646:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/actions-page2-61b4f6c4e261f76bdc2a8e6e9902d3c8.png"},747:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/actions-page3-ad0c8102a1bd05f99f2c15492a4af758.png"},8395:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/actions-page4-a3aa301956c2fb33989f7dede4f695f4.png"},7434:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/actions-page6-0b8c0c3c795e35cdfe6f152c384cff65.png"},2935:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/config-yml-edit1-323604dcc42fc4c5ffa9232c8aaa1813.png"},7486:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/config-yml-edit2-58b8764ed69327452ae38ccaf01e9fc3.png"},7193:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/config-yml-ce50af5f02e3bbb47f0d9a8426b1f466.png"},6665:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/create-repository-8a65531ac29fb8efecef9dbeb4f9a9f5.png"},9285:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/initial-portfolio-9580a327cbdc7f3ef3da26eed9351c07.png"},597:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/pages-build-and-deployment-14a0cec5ad6d07ebe21137f4b2583097.png"},636:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/template-copy-173308700e9e58287b0f03ec69c836ce.png"},6800:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/template-page-9371f1ec1dc932b87725b6c27b7b59a5.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunktechfolios=self.webpackChunktechfolios||[]).push([[1056],{3905:(e,t,i)=>{i.d(t,{Zo:()=>p,kt:()=>m});var o=i(7294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,o)}return i}function r(e){for(var t=1;t=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var s=o.createContext({}),u=function(e){var t=o.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},p=function(e){var t=u(e.components);return o.createElement(s.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var i=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=u(i),d=n,m=c["".concat(s,".").concat(d)]||c[d]||h[d]||a;return i?o.createElement(m,r(r({ref:t},p),{},{components:i})):o.createElement(m,r({ref:t},p))}));function m(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=i.length,r=new Array(a);r[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,r[1]=l;for(var u=2;u{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>u});var o=i(7462),n=(i(7294),i(3905));const a={title:"Initialization"},r=void 0,l={unversionedId:"quick-start/initialization",id:"quick-start/initialization",title:"Initialization",description:"You only have to do the following initialization tasks when you are setting up your TechFolio for the very first time.",source:"@site/docs/quick-start/initialization.md",sourceDirName:"quick-start",slug:"/quick-start/initialization",permalink:"/docs/quick-start/initialization",draft:!1,tags:[],version:"current",frontMatter:{title:"Initialization"},sidebar:"publicSidebar",previous:{title:"Overview",permalink:"/docs/quick-start/overview"},next:{title:"Configure bio.json",permalink:"/docs/quick-start/configure-bio-json"}},s={},u=[{value:"Join GitHub",id:"join-github",level:2},{value:"Copy the template",id:"copy-the-template",level:2},{value:"Set workflow permissions to "Read and write"",id:"set-workflow-permissions-to-read-and-write",level:2},{value:"Select GitHub Actions for deployment",id:"select-github-actions-for-deployment",level:2},{value:"Configure _config.yml",id:"configure-_configyml",level:2},{value:"Monitor the build",id:"monitor-the-build",level:2},{value:"View your portfolio",id:"view-your-portfolio",level:2}],p={toc:u},c="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,o.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"You only have to do the following initialization tasks when you are setting up your TechFolio for the very first time. "),(0,n.kt)("h2",{id:"join-github"},"Join GitHub"),(0,n.kt)("p",null,"To get started with TechFolios using this Quick Start, all you need is an account at GitHub. You don't need to download any software or even know how to use git. Everything you need to do for this Quick Start can be done in a browser."),(0,n.kt)("p",null,"If you haven't already, ",(0,n.kt)("a",{parentName:"p",href:"https://help.github.com/articles/signing-up-for-a-new-github-account"},"sign up for GitHub")," and ",(0,n.kt)("a",{parentName:"p",href:"https://help.github.com/articles/verifying-your-email-address/"},"verify your email address"),". Choose your username wisely, as that will become part of the URL to your portfolio site."),(0,n.kt)("admonition",{title:"Username recommendations",type:"tip"},(0,n.kt)("p",{parentName:"admonition"},'Keep your username professional and close to your real name: "the3Gr8est" might seem super clever to you right now, but will be awkward and embarrassing to you during an interview next year. Restrict yourself to lowercase characters, numbers, and hyphens to make it simple to remember. Uppercase adds unnecessary confusion. Don\'t make your username location-specific: "philip-at-manoa" will be confusing if you move next year to San Francisco.')),(0,n.kt)("p",null,"If you decide your current GitHub username could use some improvement, it is very easy to ",(0,n.kt)("a",{parentName:"p",href:"https://help.github.com/articles/changing-your-github-username/"},"change your GitHub username")," to something more professional."),(0,n.kt)("p",null,"Before proceeding, ",(0,n.kt)("a",{parentName:"p",href:"http://github.com/login"},"login")," to your GitHub account."),(0,n.kt)("h2",{id:"copy-the-template"},"Copy the template"),(0,n.kt)("p",null,"In this step, you'll make your personal copy of the TechFolio template."),(0,n.kt)("admonition",{title:"Your screens may look a little different",type:"warning"},(0,n.kt)("p",{parentName:"admonition"},"GitHub makes changes to their user interface quite frequently. We try to keep these screenshots up to date, but your browser might display something slightly different. Let us know if things look ",(0,n.kt)("strong",{parentName:"p"},"really")," different.")),(0,n.kt)("p",null,"First, go to ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/techfolios/template"},"https://github.com/techfolios/template"),":"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(6800).Z,width:"2482",height:"1436"})),(0,n.kt)("p",null,"Click the ",(0,n.kt)("inlineCode",{parentName:"p"},"Use this template"),' button, then select "Create a new repository". (If you don\'t see the "Use this template" button, make sure you are signed in to GitHub.) Select your account as the "Owner", and specify the repository name as your account name plus ".github.io". It should look similar to this:'),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(6665).Z,width:"2426",height:"1964"})),(0,n.kt)("p",null,"Then press the ",(0,n.kt)("inlineCode",{parentName:"p"},"Create repository")," button. GitHub will make a new copy of the template in your account and display a page like this:"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(636).Z,width:"2232",height:"1906"})),(0,n.kt)("admonition",{title:"Verify your repository name",type:"warning"},(0,n.kt)("p",{parentName:"admonition"},'Make sure the repository name is correct. As you can see in this example, since my GitHub username is "philipmjohnson", the repository name must be "philipmjohnson.github.io". If the first part of the repository name does not match your GitHub username exactly, then you need to rename your repository right now to make it match. Click on the Settings link to rename your repo, it\'s easy to fix.')),(0,n.kt)("p",null,'Now let\'s fix the "About" section to link to your portfolio. Click on the gear icon next to the "About" label, which brings up a dialog box. Add "Professional Portfolio" as the description, add "',(0,n.kt)("a",{parentName:"p",href:"https://USERNAME.github.io%22"},'https://USERNAME.github.io"'),' (where USERNAME is your username) as the website, and (if you want) add "professional-portfolio" as a topic. The result should look like this:'),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(6021).Z,width:"2372",height:"1762"})),(0,n.kt)("p",null,"After saving the changes, you'll have a convenient link to your professional portfolio on the home page for this repo."),(0,n.kt)("h2",{id:"set-workflow-permissions-to-read-and-write"},'Set workflow permissions to "Read and write"'),(0,n.kt)("p",null,"Now click on the Settings tab near the top of the window, then Actions and General in the left sidebar to display the Actions permissions page:"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(5526).Z,width:"1200",height:"1384"})),(0,n.kt)("p",null,'Check that Workflow permissions is set to "Read and write permissions". If not, click the radio button and press "Save". Also, make sure the box is checked for "Allow GitHub Actions to create and approve pull requests".'),(0,n.kt)("h2",{id:"select-github-actions-for-deployment"},"Select GitHub Actions for deployment"),(0,n.kt)("p",null,'Next, click on the Pages link in the left sidebar, and make sure the "GitHub Actions" is selected as the "Source" for Build and Deployment:'),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(597).Z,width:"2558",height:"2040"})),(0,n.kt)("h2",{id:"configure-_configyml"},"Configure ",(0,n.kt)("inlineCode",{parentName:"h2"},"_config.yml")),(0,n.kt)("p",null,"Now that your repository is set up, we can start editing the template files to make this professional portfolio your own."),(0,n.kt)("p",null,'Scroll down the repository home page until you find the file named "_config.yml", and click on it, which will bring up a page that looks like this:'),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(7193).Z,width:"2260",height:"1738"})),(0,n.kt)("p",null,"Click the pencil icon on the right hand side to edit the file:"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(2935).Z,width:"2260",height:"1738"})),(0,n.kt)("p",null,'The first section of the file, "Required Changes", contains the three lines you have to change.\nEdit ',(0,n.kt)("inlineCode",{parentName:"p"},"title:")," to specify your own name, edit ",(0,n.kt)("inlineCode",{parentName:"p"},"url:")," to specify your portfolio, and edit ",(0,n.kt)("inlineCode",{parentName:"p"},"baseurl:")," to be the empty string. When you're done editing, that section of _config.yml should look similar to this:"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(7486).Z,width:"2260",height:"1738"})),(0,n.kt)("p",null,'Click "Commit changes" to save these changes. (It will pop up a dialog box, just click "Commit Changes" again to confirm.)'),(0,n.kt)("h2",{id:"monitor-the-build"},"Monitor the build"),(0,n.kt)("p",null,"Every time you commit a change to your portfolio, GitHub will attempt to build and deploy your revised portfolio. It does this through a technology called ",(0,n.kt)("a",{parentName:"p",href:"https://docs.github.com/en/actions"},"GitHub Actions"),". In fact, GitHub is trying to build a new version of your portfolio right now. Let's watch."),(0,n.kt)("p",null,'First, click on the "Actions" label on the home page of your repository. That will take you to a page that looks like this:'),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(2160).Z,width:"2426",height:"1964"})),(0,n.kt)("p",null,'This page indicates that two GitHub Actions (i.e. "workflows") named "pages-build-deployment" have previously run and completed successfully (indicated by the green checkmarks). There is a workflow called "Jekyll Deploy" that is running right now (indicated by the yellow dot). GitHub labels this workflow execution instance using the commit message associated with the change to the repository that triggered the Action. In this case, it was "Update _config.yml".'),(0,n.kt)("admonition",{title:"Your action name may differ",type:"warning"},(0,n.kt)("p",{parentName:"admonition"},"GitHub occasionally changes the name of their build actions. ")),(0,n.kt)("p",null,'You can watch the build in more detail by clicking on the "Update _config.yml" line, which takes you to a page like this:'),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(4646).Z,width:"2426",height:"1964"})),(0,n.kt)("p",null,'Clicking on the "build_and_deploy" label takes you to a page that shows the actual progress through the build:'),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(747).Z,width:"2426",height:"1964"})),(0,n.kt)("p",null,"Finally, you can click on the arrow next to any build step and see what happened during it:"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(8395).Z,width:"2232",height:"1906"})),(0,n.kt)("p",null,"After a few minutes, the Jekyll Deploy workflow will complete and the Actions page will look like this:"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(7434).Z,width:"2426",height:"1856"})),(0,n.kt)("p",null,'Notice that there is a green checkmark beside the "Update _config.yml" workflow run, indicating that it has completed successfully.'),(0,n.kt)("admonition",{title:"Why monitor the build?",type:"info"},(0,n.kt)("p",{parentName:"admonition"},"There are two reasons it is useful to know how to monitor the build:"),(0,n.kt)("ol",{parentName:"admonition"},(0,n.kt)("li",{parentName:"ol"},"By monitoring the build, you'll know when your updated portfolio is ready to be viewed."),(0,n.kt)("li",{parentName:"ol"},"Monitoring the build lets you know if any errors occurred during the build.")),(0,n.kt)("p",{parentName:"admonition"},"Also, please note that the very first time you try to build your portfolio, it takes about five minutes, which is a long time! Don't worry, though: after this very first build, GitHub will cache the build artifacts and your future builds should take less than a minute to complete."),(0,n.kt)("p",{parentName:"admonition"},"Visiting your website might display the following text for a few minutes while the page is built:"),(0,n.kt)("pre",{parentName:"admonition"},(0,n.kt)("code",{parentName:"pre"},"--- title: Home layout: home --- {% include about/about.html %} {% include projects/projects.html limit=4 %} {% include essays/essays.html limit=6 %}\n"))),(0,n.kt)("admonition",{title:"Oh no! My very first build failed!",type:"warning"},(0,n.kt)("p",{parentName:"admonition"},"Unfortunately, some users have reported that their first build failed with an error like this:"),(0,n.kt)("pre",{parentName:"admonition"},(0,n.kt)("code",{parentName:"pre"},"error: RPC failed; curl 55 Failed sending HTTP2 data\nfatal: the remote end hung up unexpectedly\nfatal: the remote end hung up unexpectedly\n")),(0,n.kt)("p",{parentName:"admonition"},"This is not your fault (or ours): it means that there was a network connection problem on GitHub's side that resulted in a timeout. In our experience, all you have to do is re-trigger the build one more time. (You can do this by editing the ",(0,n.kt)("inlineCode",{parentName:"p"},"_config.yml")," file and adding a space or newline, then committing the change). "),(0,n.kt)("p",{parentName:"admonition"},"The good news is that the files retrieved over the network for the first build are cached for the future, so it is unlikely you'll run into this particular error again upon subsequent builds of your portfolio.")),(0,n.kt)("h2",{id:"view-your-portfolio"},"View your portfolio"),(0,n.kt)("p",null,"Click the link to see your brand new professional portfolio:"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(9285).Z,width:"2232",height:"1906"})),(0,n.kt)("p",null,'Congratulations! The URL "',(0,n.kt)("a",{parentName:"p",href:"https://philipmjohnson.github.io%22"},'https://philipmjohnson.github.io"')," now shows the portfolio for... Molly Maluhia?"))}h.isMDXComponent=!0},6021:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/about-dialog-4c316d9b8931182cbd3c4f80b9fc900b.png"},5526:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/action-permissions-257697e4b90f46127e966cf28b037d6a.png"},2160:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/actions-page-26102115676e6ca08648f369c15abce6.png"},4646:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/actions-page2-61b4f6c4e261f76bdc2a8e6e9902d3c8.png"},747:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/actions-page3-ad0c8102a1bd05f99f2c15492a4af758.png"},8395:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/actions-page4-a3aa301956c2fb33989f7dede4f695f4.png"},7434:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/actions-page6-0b8c0c3c795e35cdfe6f152c384cff65.png"},2935:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/config-yml-edit1-323604dcc42fc4c5ffa9232c8aaa1813.png"},7486:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/config-yml-edit2-58b8764ed69327452ae38ccaf01e9fc3.png"},7193:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/config-yml-ce50af5f02e3bbb47f0d9a8426b1f466.png"},6665:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/create-repository-8a65531ac29fb8efecef9dbeb4f9a9f5.png"},9285:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/initial-portfolio-9580a327cbdc7f3ef3da26eed9351c07.png"},597:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/pages-build-and-deployment-14a0cec5ad6d07ebe21137f4b2583097.png"},636:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/template-copy-173308700e9e58287b0f03ec69c836ce.png"},6800:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/template-page-9371f1ec1dc932b87725b6c27b7b59a5.png"}}]); \ No newline at end of file diff --git a/assets/js/8c9540e9.e2533564.js b/assets/js/8c9540e9.37eb3d12.js similarity index 88% rename from assets/js/8c9540e9.e2533564.js rename to assets/js/8c9540e9.37eb3d12.js index 2c35312..416fbd5 100644 --- a/assets/js/8c9540e9.e2533564.js +++ b/assets/js/8c9540e9.37eb3d12.js @@ -1 +1 @@ -"use strict";(self.webpackChunktechfolios=self.webpackChunktechfolios||[]).push([[9379],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var o=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),c=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,u=r(e,["components","mdxType","originalType","parentName"]),p=c(n),d=a,h=p["".concat(l,".").concat(d)]||p[d]||m[d]||i;return n?o.createElement(h,s(s({ref:t},u),{},{components:n})):o.createElement(h,s({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,s=new Array(i);s[0]=d;var r={};for(var l in t)hasOwnProperty.call(t,l)&&(r[l]=t[l]);r.originalType=e,r[p]="string"==typeof e?e:a,s[1]=r;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>i,metadata:()=>r,toc:()=>c});var o=n(7462),a=(n(7294),n(3905));const i={title:"Anatomy of bio.json"},s=void 0,r={unversionedId:"user-guide/anatomy-of-bio-json",id:"user-guide/anatomy-of-bio-json",title:"Anatomy of bio.json",description:"One of the trickier aspects of TechFolios is the bio.json file, because it has a fairly rigid syntax, and (b) if you create a syntax error in bio.json, the feedback from the resulting build failure is not very informative.",source:"@site/docs/user-guide/anatomy-of-bio-json.md",sourceDirName:"user-guide",slug:"/user-guide/anatomy-of-bio-json",permalink:"/docs/user-guide/anatomy-of-bio-json",draft:!1,tags:[],version:"current",frontMatter:{title:"Anatomy of bio.json"},sidebar:"publicSidebar",previous:{title:"Local development",permalink:"/docs/user-guide/local-development"},next:{title:"Format text, images, video",permalink:"/docs/user-guide/formatting"}},l={},c=[{value:"About JSON format",id:"about-json-format",level:2},{value:"Structure of bio.json",id:"structure-of-biojson",level:2},{value:"Basics section",id:"basics-section",level:3},{value:"Work section",id:"work-section",level:3},{value:"Education section",id:"education-section",level:3},{value:"Debugging bio.json",id:"debugging-biojson",level:2},{value:"Miscellaneous tips",id:"miscellaneous-tips",level:2}],u={toc:c},p="wrapper";function m(e){let{components:t,...i}=e;return(0,a.kt)(p,(0,o.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"One of the trickier aspects of TechFolios is the bio.json file, because it has a fairly rigid syntax, and (b) if you create a syntax error in bio.json, the feedback from the resulting build failure is not very informative."),(0,a.kt)("p",null,"Fortunately, it is quite easy to diagnose and fix bio.json problems. First, let's take a quick look at the format."),(0,a.kt)("h2",{id:"about-json-format"},"About JSON format"),(0,a.kt)("p",null,"If you haven't worked with JSON formatted files before, all you really need to understand for TechFolios is that the bio.json file is a combination of ",(0,a.kt)("inlineCode",{parentName:"p"},"objects")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"arrays"),". Objects are key-value pairs enclosed by curly braces, for example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "name" : "Philip Johnson",\n "address" : "1680 East-West Road"\n}\n')),(0,a.kt)("p",null,'This object has two keys ("name" and "address"), each with corresponding values ("Philip Johnson" and "1680 East-West Road"). There is always a colon between a key and its value.'),(0,a.kt)("admonition",{title:"Pesky commas",type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"Key-value pairs must end with a comma, except for the last key-value pair! This is one common syntax error in bio.json.")),(0,a.kt)("p",null,"The second construct creates lists of values, or arrays:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'[\n "blue",\n "red",\n "green"\n]\n')),(0,a.kt)("p",null,"The difference between objects and arrays is that arrays are defined using square brackets and consist of a list of elements separated by commas."),(0,a.kt)("admonition",{title:"Pesky commas, pt 2",type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"Array entries must also end with a comma, except for the last array entry! This is another common syntax error in bio.json.")),(0,a.kt)("p",null,"What makes JSON files interesting and useful is that you can combine objects and arrays. For example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "name" : "Philip Johnson",\n "address" : ["1680 East West Road", "Honolulu", "HI", "96822"] \n}\n')),(0,a.kt)("p",null,"Here we have an object where the value associated with the address key is an array."),(0,a.kt)("p",null,"A final comment: in JSON format, newlines and indentation are not significant. You could have the entire bio.json file on a single line and it would still be a legal file (although not very readable by humans). By convention, the bio.json file uses two space indentation."),(0,a.kt)("h2",{id:"structure-of-biojson"},"Structure of bio.json"),(0,a.kt)("p",null,"The bio.json file format is based on ",(0,a.kt)("a",{parentName:"p",href:"https://jsonresume.org/"},"JSONResume"),". Here is the top-level structure:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "basics" : { },\n "work" : [ { work object }, { work object }, ... ],\n "volunteer" : [ { volunteer object }, { volunteer object }, ... ],\n "education" : [ { education object }, { education object }, ... ],\n "awards" : [ { award object }, { award object }, ... ],\n "publications" : [ { publication object }, { publication object }, ... ],\n "skills" : [ { skill object }, { skill object }, ... ],\n "interests" : [ { interest object }, { interest object }, ... ],\n}\n')),(0,a.kt)("p",null,'It\'s really pretty easy: apart from the first section ("basics"), all of the remaining sections are simply arrays of objects, where each object has a structure appropriate for the section.'),(0,a.kt)("p",null,"Let's look at examples of each section."),(0,a.kt)("h3",{id:"basics-section"},"Basics section"),(0,a.kt)("p",null,'First, here\'s a sample value associated with the "basics" keyword:'),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "name": "Philip Johnson",\n "label": "Professor",\n "picture": "https://philipmjohnson.github.io/images/philip.jpg",\n "email": "johnson@hawaii.edu",\n "phone": "808-956-3489",\n "website": "https://philipmjohnson.github.io",\n "summary": "I am a Professor of Information and Computer Sciences at the University of Hawaii.",\n "location": {\n "address": "1680 East-West Rd, POST 307",\n "postalCode": "96822",\n "city": "Honolulu",\n "countryCode": "USA",\n "region": "Hawaii"\n },\n "profiles": [\n {\n "network": "github",\n "username": "philipmjohnson",\n "url": "http://github.com/philipmjohnson"\n },\n {\n "network": "linkedin",\n "username": "philipmjohnson",\n "url": "http://linkedin.com/in/philipmjohnson"\n }\n ]\n}\n')),(0,a.kt)("admonition",{title:"Did I say that commas are pesky?",type:"info"},(0,a.kt)("p",{parentName:"admonition"},'In the "profiles" section, each of the social network objects must be separated by a comma (since they are in an array). If you add a new social network object, make sure that a comma separates it from the previous and next object.')),(0,a.kt)("h3",{id:"work-section"},"Work section"),(0,a.kt)("p",null,'Here\'s an example of the value associated with the "work" keyword:'),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'[\n {\n "company": "University of Hawaii",\n "position": "Professor",\n "website": "http://www.ics.hawaii.edu/",\n "startDate": "1990-08-01",\n "endDate": "Present",\n "summary": "Department of Information and Computer Sciences",\n "highlights": [\n "Professor, 2001-present",\n "Associate Chair, 2010-2016",\n "Director, Collaborative Software Development Laboratory, 1990-present",\n "Associate Professor, 1995-2001",\n "Assistant Professor, 1990-1995"\n ]\n },\n {\n "company": "Open Power Quality",\n "position": "CEO",\n "website": "https://openpowerquality.com/",\n "startDate": "2013-01-01",\n "endDate": "Present",\n "summary": "Co-founder and leader of technical development",\n "highlights": [ ] \n }\n]\n')),(0,a.kt)("p",null,'Unlike the "basics" keyword whose value is an object, the value associated with the "work" keyword is an array.'),(0,a.kt)("p",null,"This array contains a list of objects, where each object has keys for company, position, website, etc."),(0,a.kt)("h3",{id:"education-section"},"Education section"),(0,a.kt)("p",null,'All of the remaining sections are pretty much like the work section: an array of objects whose keys are appropriate for the information being presented. For example, here\'s a sample value associated with the "education" keyword:'),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'[\n {\n "institution": "University of Massachusetts, Amherst, MA",\n "area": "Computer Science",\n "studyType": "Ph.D.",\n "endDate": "1990-08-01",\n "gpa": "",\n "courses": [\n ]\n },\n {\n "institution": "University of Massachusetts, Amherst, MA",\n "area": "Computer Science",\n "studyType": "M.S.",\n "endDate": "1985-06-01",\n "gpa": "",\n "courses": [\n ]\n }\n]\n')),(0,a.kt)("p",null,"Again, when editing this section, make sure the individual education objects are separated by commas."),(0,a.kt)("h2",{id:"debugging-biojson"},"Debugging bio.json"),(0,a.kt)("p",null,"OK, so let's say you edited bio.json in your browser, committed the file, and the build fails in the validate-bio-json-file task. What's wrong?"),(0,a.kt)("p",null,"The most likely answer is that you have somehow forgotten to add a comma or made some other simple syntax error in your bio.json file. Now the question is: how to track down the line(s) containing a problem?"),(0,a.kt)("p",null,"One simple way is to use an online tool such as ",(0,a.kt)("a",{parentName:"p",href:"https://jsonlint.com."},"https://jsonlint.com.")," Here's what it looks like when I run it against the template bio.json file:"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(8637).Z,width:"2492",height:"1954"})),(0,a.kt)("p",null,"If I edit the code to remove a comma, then the validator highlights the line with the error:"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(8700).Z,width:"2492",height:"2132"})),(0,a.kt)("h2",{id:"miscellaneous-tips"},"Miscellaneous tips"),(0,a.kt)("p",null,"Here are a few things we've discovered about bio.json while developing our portfolios:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"You cannot comment out lines in your bio.json file. It is fine to have empty arrays, for example. But if there is actual data that you do not want displayed, then you have to delete it.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"If you want to transmogrify your bio.json file into other formats, see ",(0,a.kt)("a",{parentName:"p",href:"http://please.hackmyresume.com/"},"Hack My Resume"),".")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"For heaven's sake, don't end up with a portfolio like ",(0,a.kt)("a",{parentName:"p",href:"https://medium.com/@_oren/every-single-web-portfolio-site-ever-8fad53534d46#.o82m6ejrr"},"this one"),"."))))}m.isMDXComponent=!0},8637:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/json-lint-1-19e6960db19e5abe30d7d98fcc1a8194.png"},8700:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/json-lint-2-7808370d999c52f2e9e0e32713dc0ff0.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunktechfolios=self.webpackChunktechfolios||[]).push([[9379],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var o=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),c=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,u=r(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,h=p["".concat(l,".").concat(m)]||p[m]||d[m]||i;return n?o.createElement(h,s(s({ref:t},u),{},{components:n})):o.createElement(h,s({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,s=new Array(i);s[0]=m;var r={};for(var l in t)hasOwnProperty.call(t,l)&&(r[l]=t[l]);r.originalType=e,r[p]="string"==typeof e?e:a,s[1]=r;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>i,metadata:()=>r,toc:()=>c});var o=n(7462),a=(n(7294),n(3905));const i={title:"Anatomy of bio.json"},s=void 0,r={unversionedId:"user-guide/anatomy-of-bio-json",id:"user-guide/anatomy-of-bio-json",title:"Anatomy of bio.json",description:"One of the trickier aspects of TechFolios is the bio.json file, because it has a fairly rigid syntax, and (b) if you create a syntax error in bio.json, the feedback from the resulting build failure is not very informative.",source:"@site/docs/user-guide/anatomy-of-bio-json.md",sourceDirName:"user-guide",slug:"/user-guide/anatomy-of-bio-json",permalink:"/docs/user-guide/anatomy-of-bio-json",draft:!1,tags:[],version:"current",frontMatter:{title:"Anatomy of bio.json"},sidebar:"publicSidebar",previous:{title:"Local development",permalink:"/docs/user-guide/local-development"},next:{title:"Format text, images, video",permalink:"/docs/user-guide/formatting"}},l={},c=[{value:"About JSON format",id:"about-json-format",level:2},{value:"Structure of bio.json",id:"structure-of-biojson",level:2},{value:"Basics section",id:"basics-section",level:3},{value:"Work section",id:"work-section",level:3},{value:"Education section",id:"education-section",level:3},{value:"Debugging bio.json",id:"debugging-biojson",level:2},{value:"Miscellaneous tips",id:"miscellaneous-tips",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...i}=e;return(0,a.kt)(p,(0,o.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"One of the trickier aspects of TechFolios is the bio.json file, because it has a fairly rigid syntax, and (b) if you create a syntax error in bio.json, the feedback from the resulting build failure is not very informative."),(0,a.kt)("p",null,"Fortunately, it is quite easy to diagnose and fix bio.json problems. First, let's take a quick look at the format."),(0,a.kt)("h2",{id:"about-json-format"},"About JSON format"),(0,a.kt)("p",null,"If you haven't worked with JSON formatted files before, all you really need to understand for TechFolios is that the bio.json file is a combination of ",(0,a.kt)("inlineCode",{parentName:"p"},"objects")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"arrays"),". Objects are key-value pairs enclosed by curly braces, for example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "name" : "Philip Johnson",\n "address" : "1680 East-West Road"\n}\n')),(0,a.kt)("p",null,'This object has two keys ("name" and "address"), each with corresponding values ("Philip Johnson" and "1680 East-West Road"). There is always a colon between a key and its value.'),(0,a.kt)("admonition",{title:"Pesky commas",type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"Key-value pairs must end with a comma, except for the last key-value pair! This is one common syntax error in bio.json.")),(0,a.kt)("p",null,"The second construct creates lists of values, or arrays:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'[\n "blue",\n "red",\n "green"\n]\n')),(0,a.kt)("p",null,"The difference between objects and arrays is that arrays are defined using square brackets and consist of a list of elements separated by commas."),(0,a.kt)("admonition",{title:"Pesky commas, pt 2",type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"Array entries must also end with a comma, except for the last array entry! This is another common syntax error in bio.json.")),(0,a.kt)("p",null,"What makes JSON files interesting and useful is that you can combine objects and arrays. For example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "name" : "Philip Johnson",\n "address" : ["1680 East West Road", "Honolulu", "HI", "96822"] \n}\n')),(0,a.kt)("p",null,"Here we have an object where the value associated with the address key is an array."),(0,a.kt)("p",null,"A final comment: in JSON format, newlines and indentation are not significant. You could have the entire bio.json file on a single line and it would still be a legal file (although not very readable by humans). By convention, the bio.json file uses two space indentation."),(0,a.kt)("h2",{id:"structure-of-biojson"},"Structure of bio.json"),(0,a.kt)("p",null,"The bio.json file format is based on ",(0,a.kt)("a",{parentName:"p",href:"https://jsonresume.org/"},"JSONResume"),". Here is the top-level structure:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "basics" : { },\n "work" : [ { work object }, { work object }, ... ],\n "volunteer" : [ { volunteer object }, { volunteer object }, ... ],\n "education" : [ { education object }, { education object }, ... ],\n "awards" : [ { award object }, { award object }, ... ],\n "publications" : [ { publication object }, { publication object }, ... ],\n "skills" : [ { skill object }, { skill object }, ... ],\n "interests" : [ { interest object }, { interest object }, ... ],\n}\n')),(0,a.kt)("p",null,'It\'s really pretty easy: apart from the first section ("basics"), all of the remaining sections are simply arrays of objects, where each object has a structure appropriate for the section.'),(0,a.kt)("p",null,"Let's look at examples of each section."),(0,a.kt)("h3",{id:"basics-section"},"Basics section"),(0,a.kt)("p",null,'First, here\'s a sample value associated with the "basics" keyword:'),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "name": "Philip Johnson",\n "label": "Professor",\n "picture": "https://philipmjohnson.github.io/images/philip.jpg",\n "email": "johnson@hawaii.edu",\n "phone": "808-956-3489",\n "website": "https://philipmjohnson.github.io",\n "summary": "I am a Professor of Information and Computer Sciences at the University of Hawaii.",\n "location": {\n "address": "1680 East-West Rd, POST 307",\n "postalCode": "96822",\n "city": "Honolulu",\n "countryCode": "USA",\n "region": "Hawaii"\n },\n "profiles": [\n {\n "network": "github",\n "username": "philipmjohnson",\n "url": "http://github.com/philipmjohnson"\n },\n {\n "network": "linkedin",\n "username": "philipmjohnson",\n "url": "http://linkedin.com/in/philipmjohnson"\n }\n ]\n}\n')),(0,a.kt)("admonition",{title:"Did I say that commas are pesky?",type:"info"},(0,a.kt)("p",{parentName:"admonition"},'In the "profiles" section, each of the social network objects must be separated by a comma (since they are in an array). If you add a new social network object, make sure that a comma separates it from the previous and next object.')),(0,a.kt)("h3",{id:"work-section"},"Work section"),(0,a.kt)("p",null,'Here\'s an example of the value associated with the "work" keyword:'),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'[\n {\n "company": "University of Hawaii",\n "position": "Professor",\n "website": "http://www.ics.hawaii.edu/",\n "startDate": "1990-08-01",\n "endDate": "Present",\n "summary": "Department of Information and Computer Sciences",\n "highlights": [\n "Professor, 2001-present",\n "Associate Chair, 2010-2016",\n "Director, Collaborative Software Development Laboratory, 1990-present",\n "Associate Professor, 1995-2001",\n "Assistant Professor, 1990-1995"\n ]\n },\n {\n "company": "Open Power Quality",\n "position": "CEO",\n "website": "https://openpowerquality.com/",\n "startDate": "2013-01-01",\n "endDate": "Present",\n "summary": "Co-founder and leader of technical development",\n "highlights": [ ] \n }\n]\n')),(0,a.kt)("p",null,'Unlike the "basics" keyword whose value is an object, the value associated with the "work" keyword is an array.'),(0,a.kt)("p",null,"This array contains a list of objects, where each object has keys for company, position, website, etc."),(0,a.kt)("h3",{id:"education-section"},"Education section"),(0,a.kt)("p",null,'All of the remaining sections are pretty much like the work section: an array of objects whose keys are appropriate for the information being presented. For example, here\'s a sample value associated with the "education" keyword:'),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'[\n {\n "institution": "University of Massachusetts, Amherst, MA",\n "area": "Computer Science",\n "studyType": "Ph.D.",\n "endDate": "1990-08-01",\n "gpa": "",\n "courses": [\n ]\n },\n {\n "institution": "University of Massachusetts, Amherst, MA",\n "area": "Computer Science",\n "studyType": "M.S.",\n "endDate": "1985-06-01",\n "gpa": "",\n "courses": [\n ]\n }\n]\n')),(0,a.kt)("p",null,"Again, when editing this section, make sure the individual education objects are separated by commas."),(0,a.kt)("h2",{id:"debugging-biojson"},"Debugging bio.json"),(0,a.kt)("p",null,"OK, so let's say you edited bio.json in your browser, committed the file, and the build fails in the validate-bio-json-file task. What's wrong?"),(0,a.kt)("p",null,"The most likely answer is that you have somehow forgotten to add a comma or made some other simple syntax error in your bio.json file. Now the question is: how to track down the line(s) containing a problem?"),(0,a.kt)("p",null,"One simple way is to use an online tool such as ",(0,a.kt)("a",{parentName:"p",href:"https://jsonlint.com."},"https://jsonlint.com.")," Here's what it looks like when I run it against the template bio.json file:"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(8637).Z,width:"2492",height:"1954"})),(0,a.kt)("p",null,"If I edit the code to remove a comma, then the validator highlights the line with the error:"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(8700).Z,width:"2492",height:"2132"})),(0,a.kt)("h2",{id:"miscellaneous-tips"},"Miscellaneous tips"),(0,a.kt)("p",null,"Here are a few things we've discovered about bio.json while developing our portfolios:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"You cannot comment out lines in your bio.json file. It is fine to have empty arrays, for example. But if there is actual data that you do not want displayed, then you have to delete it.")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"For heaven's sake, don't end up with a portfolio like ",(0,a.kt)("a",{parentName:"li",href:"https://medium.com/@_oren/every-single-web-portfolio-site-ever-8fad53534d46#.o82m6ejrr"},"this one"),".")))}d.isMDXComponent=!0},8637:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/json-lint-1-19e6960db19e5abe30d7d98fcc1a8194.png"},8700:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/json-lint-2-7808370d999c52f2e9e0e32713dc0ff0.png"}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.642ed02d.js b/assets/js/runtime~main.ee6d9c15.js similarity index 98% rename from assets/js/runtime~main.642ed02d.js rename to assets/js/runtime~main.ee6d9c15.js index 9ccc64a..494d191 100644 --- a/assets/js/runtime~main.642ed02d.js +++ b/assets/js/runtime~main.ee6d9c15.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,d,c,t={},r={};function b(e){var a=r[e];if(void 0!==a)return a.exports;var f=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(f.exports,f,f.exports,b),f.loaded=!0,f.exports}b.m=t,b.c=r,e=[],b.O=(a,f,d,c)=>{if(!f){var t=1/0;for(i=0;i=c)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(r=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[f,d,c]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var c=Object.create(null);b.r(c);var t={};a=a||[null,f({}),f([]),f(f)];for(var r=2&d&&e;"object"==typeof r&&!~a.indexOf(r);r=f(r))Object.getOwnPropertyNames(r).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,b.d(c,t),c},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({53:"935f2afb",193:"1e31dc8e",205:"83d480e9",533:"b2b675dd",640:"5b290cac",690:"4b10f861",896:"1529e9c7",1056:"4053cadc",1238:"e86c6eaa",1372:"1db64337",1477:"b2f554cd",1585:"2450005c",1610:"01f1ab6a",1713:"a7023ddc",2146:"989ed936",2535:"814f3328",2736:"4464097e",2749:"d3def08a",2968:"a868d790",3025:"d77c3a9d",3030:"d6e9d8e2",3085:"1f391b9e",3089:"a6aa9e1f",3142:"44963dd1",3184:"0d028272",3519:"f2930f15",3608:"9e4087bc",3737:"8da93d40",3753:"d06e7865",3859:"829ad76c",3981:"2f68f199",4013:"01a85c17",4195:"c4f5d8e4",4241:"32c9e580",4251:"eb8f7973",4310:"4f8daff2",4325:"f73d6f26",4451:"5fef6e31",4643:"ce6b2e59",4777:"def4c1b1",5091:"14dea474",5320:"e04645d7",5815:"4c7649fb",5826:"49491008",6103:"ccc49370",6185:"0a684d14",6214:"31368eba",6709:"c9334f31",6756:"6a1b1137",6828:"ac604baa",7031:"304a9b6f",7140:"ccb61812",7142:"cce2c3d3",7275:"6658404a",7414:"393be207",7438:"9c021584",7542:"3e6f14ef",7558:"960b39d2",7786:"383039d6",7874:"5a53baa4",7918:"17896441",7990:"e6691236",8511:"a9309055",8520:"98335cfd",8591:"ee9b4564",8593:"f0ab6f9e",8610:"6875c492",8993:"bce1e54f",9106:"666f490c",9379:"8c9540e9",9453:"3c72ff1d",9514:"1be78505",9866:"50bef4b9",9892:"5ce72743"}[e]||e)+"."+{53:"eb7816e5",193:"deaa446d",205:"6ff5518a",533:"7612d41d",640:"7a545935",690:"6993e19b",896:"2fe2b1d6",1056:"fa4aaa4a",1238:"c4734e4d",1372:"784cd189",1477:"2de32a6d",1506:"352403f3",1585:"74597681",1610:"b174b554",1713:"f045704d",2146:"37d4ed0c",2529:"1fe48cf1",2535:"d4f7229b",2736:"d2ba5bcc",2749:"6174cedd",2968:"72351d65",3025:"fbb32c89",3030:"629ba53b",3085:"033f963f",3089:"f3823e34",3142:"2b654bc9",3184:"7fdc0e9f",3519:"d9d0d1ed",3608:"0168ecd5",3737:"f6e6b56c",3753:"f9951527",3859:"180455b8",3981:"947d5b47",4013:"57dc615a",4195:"e1c5a673",4241:"f9c5c161",4251:"c84f5689",4310:"f81562e1",4325:"bc16a36f",4451:"fef5670a",4643:"bc27b247",4777:"14e2fa23",4972:"af4be787",5091:"29d094d2",5320:"bcc1756d",5815:"d58b1a02",5826:"557d3c25",6103:"f432be1d",6185:"ec5cb068",6214:"3c8705ca",6709:"3ca5dfed",6756:"426cf338",6828:"261723ae",7031:"35c92c7b",7140:"596250a8",7142:"dc1a0009",7275:"2b771eac",7414:"ab4aad86",7438:"973495fc",7542:"c005ff8b",7558:"3921c8e4",7786:"10937907",7874:"1a9db776",7918:"efdbaf3c",7990:"e52e983e",8511:"9a3f22d9",8520:"d704d14a",8591:"c77f53e7",8593:"d9353b00",8610:"63ad9e23",8993:"29ba4d62",9106:"0a38c0e6",9379:"e2533564",9453:"f88d46ed",9514:"f20a7c71",9866:"5ea1d740",9892:"adeeae9d"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},c="techfolios:",b.l=(e,a,f,t)=>{if(d[e])d[e].push(a);else{var r,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var c=d[e];if(delete d[e],r.parentNode&&r.parentNode.removeChild(r),c&&c.forEach((e=>e(f))),a)return a(f)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=u.bind(null,r.onerror),r.onload=u.bind(null,r.onload),o&&document.head.appendChild(r)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"7918",49491008:"5826","935f2afb":"53","1e31dc8e":"193","83d480e9":"205",b2b675dd:"533","5b290cac":"640","4b10f861":"690","1529e9c7":"896","4053cadc":"1056",e86c6eaa:"1238","1db64337":"1372",b2f554cd:"1477","2450005c":"1585","01f1ab6a":"1610",a7023ddc:"1713","989ed936":"2146","814f3328":"2535","4464097e":"2736",d3def08a:"2749",a868d790:"2968",d77c3a9d:"3025",d6e9d8e2:"3030","1f391b9e":"3085",a6aa9e1f:"3089","44963dd1":"3142","0d028272":"3184",f2930f15:"3519","9e4087bc":"3608","8da93d40":"3737",d06e7865:"3753","829ad76c":"3859","2f68f199":"3981","01a85c17":"4013",c4f5d8e4:"4195","32c9e580":"4241",eb8f7973:"4251","4f8daff2":"4310",f73d6f26:"4325","5fef6e31":"4451",ce6b2e59:"4643",def4c1b1:"4777","14dea474":"5091",e04645d7:"5320","4c7649fb":"5815",ccc49370:"6103","0a684d14":"6185","31368eba":"6214",c9334f31:"6709","6a1b1137":"6756",ac604baa:"6828","304a9b6f":"7031",ccb61812:"7140",cce2c3d3:"7142","6658404a":"7275","393be207":"7414","9c021584":"7438","3e6f14ef":"7542","960b39d2":"7558","383039d6":"7786","5a53baa4":"7874",e6691236:"7990",a9309055:"8511","98335cfd":"8520",ee9b4564:"8591",f0ab6f9e:"8593","6875c492":"8610",bce1e54f:"8993","666f490c":"9106","8c9540e9":"9379","3c72ff1d":"9453","1be78505":"9514","50bef4b9":"9866","5ce72743":"9892"}[e]||e,b.p+b.u(e)},(()=>{var e={1303:0,532:0};b.f.j=(a,f)=>{var d=b.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var c=new Promise(((f,c)=>d=e[a]=[f,c]));f.push(d[2]=c);var t=b.p+b.u(a),r=new Error;b.l(t,(f=>{if(b.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var c=f&&("load"===f.type?"missing":f.type),t=f&&f.target&&f.target.src;r.message="Loading chunk "+a+" failed.\n("+c+": "+t+")",r.name="ChunkLoadError",r.type=c,r.request=t,d[1](r)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var d,c,t=f[0],r=f[1],o=f[2],n=0;if(t.some((a=>0!==e[a]))){for(d in r)b.o(r,d)&&(b.m[d]=r[d]);if(o)var i=o(b)}for(a&&a(f);n{"use strict";var e,a,f,d,c,t={},r={};function b(e){var a=r[e];if(void 0!==a)return a.exports;var f=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(f.exports,f,f.exports,b),f.loaded=!0,f.exports}b.m=t,b.c=r,e=[],b.O=(a,f,d,c)=>{if(!f){var t=1/0;for(i=0;i=c)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(r=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[f,d,c]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var c=Object.create(null);b.r(c);var t={};a=a||[null,f({}),f([]),f(f)];for(var r=2&d&&e;"object"==typeof r&&!~a.indexOf(r);r=f(r))Object.getOwnPropertyNames(r).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,b.d(c,t),c},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({53:"935f2afb",193:"1e31dc8e",205:"83d480e9",533:"b2b675dd",640:"5b290cac",690:"4b10f861",896:"1529e9c7",1056:"4053cadc",1238:"e86c6eaa",1372:"1db64337",1477:"b2f554cd",1585:"2450005c",1610:"01f1ab6a",1713:"a7023ddc",2146:"989ed936",2535:"814f3328",2736:"4464097e",2749:"d3def08a",2968:"a868d790",3025:"d77c3a9d",3030:"d6e9d8e2",3085:"1f391b9e",3089:"a6aa9e1f",3142:"44963dd1",3184:"0d028272",3519:"f2930f15",3608:"9e4087bc",3737:"8da93d40",3753:"d06e7865",3859:"829ad76c",3981:"2f68f199",4013:"01a85c17",4195:"c4f5d8e4",4241:"32c9e580",4251:"eb8f7973",4310:"4f8daff2",4325:"f73d6f26",4451:"5fef6e31",4643:"ce6b2e59",4777:"def4c1b1",5091:"14dea474",5320:"e04645d7",5815:"4c7649fb",5826:"49491008",6103:"ccc49370",6185:"0a684d14",6214:"31368eba",6709:"c9334f31",6756:"6a1b1137",6828:"ac604baa",7031:"304a9b6f",7140:"ccb61812",7142:"cce2c3d3",7275:"6658404a",7414:"393be207",7438:"9c021584",7542:"3e6f14ef",7558:"960b39d2",7786:"383039d6",7874:"5a53baa4",7918:"17896441",7990:"e6691236",8511:"a9309055",8520:"98335cfd",8591:"ee9b4564",8593:"f0ab6f9e",8610:"6875c492",8993:"bce1e54f",9106:"666f490c",9379:"8c9540e9",9453:"3c72ff1d",9514:"1be78505",9866:"50bef4b9",9892:"5ce72743"}[e]||e)+"."+{53:"eb7816e5",193:"deaa446d",205:"6ff5518a",533:"7612d41d",640:"7a545935",690:"6993e19b",896:"2fe2b1d6",1056:"e287b859",1238:"c4734e4d",1372:"784cd189",1477:"2de32a6d",1506:"352403f3",1585:"74597681",1610:"b174b554",1713:"f045704d",2146:"37d4ed0c",2529:"1fe48cf1",2535:"d4f7229b",2736:"d2ba5bcc",2749:"6174cedd",2968:"72351d65",3025:"fbb32c89",3030:"629ba53b",3085:"033f963f",3089:"f3823e34",3142:"2b654bc9",3184:"7fdc0e9f",3519:"d9d0d1ed",3608:"0168ecd5",3737:"f6e6b56c",3753:"f9951527",3859:"180455b8",3981:"947d5b47",4013:"57dc615a",4195:"e1c5a673",4241:"f9c5c161",4251:"c84f5689",4310:"f81562e1",4325:"bc16a36f",4451:"fef5670a",4643:"bc27b247",4777:"14e2fa23",4972:"af4be787",5091:"29d094d2",5320:"bcc1756d",5815:"d58b1a02",5826:"557d3c25",6103:"f432be1d",6185:"ec5cb068",6214:"3c8705ca",6709:"3ca5dfed",6756:"426cf338",6828:"261723ae",7031:"35c92c7b",7140:"596250a8",7142:"dc1a0009",7275:"2b771eac",7414:"ab4aad86",7438:"973495fc",7542:"c005ff8b",7558:"3921c8e4",7786:"10937907",7874:"1a9db776",7918:"efdbaf3c",7990:"e52e983e",8511:"9a3f22d9",8520:"d704d14a",8591:"c77f53e7",8593:"d9353b00",8610:"63ad9e23",8993:"29ba4d62",9106:"0a38c0e6",9379:"37eb3d12",9453:"f88d46ed",9514:"f20a7c71",9866:"5ea1d740",9892:"adeeae9d"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},c="techfolios:",b.l=(e,a,f,t)=>{if(d[e])d[e].push(a);else{var r,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var c=d[e];if(delete d[e],r.parentNode&&r.parentNode.removeChild(r),c&&c.forEach((e=>e(f))),a)return a(f)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=u.bind(null,r.onerror),r.onload=u.bind(null,r.onload),o&&document.head.appendChild(r)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"7918",49491008:"5826","935f2afb":"53","1e31dc8e":"193","83d480e9":"205",b2b675dd:"533","5b290cac":"640","4b10f861":"690","1529e9c7":"896","4053cadc":"1056",e86c6eaa:"1238","1db64337":"1372",b2f554cd:"1477","2450005c":"1585","01f1ab6a":"1610",a7023ddc:"1713","989ed936":"2146","814f3328":"2535","4464097e":"2736",d3def08a:"2749",a868d790:"2968",d77c3a9d:"3025",d6e9d8e2:"3030","1f391b9e":"3085",a6aa9e1f:"3089","44963dd1":"3142","0d028272":"3184",f2930f15:"3519","9e4087bc":"3608","8da93d40":"3737",d06e7865:"3753","829ad76c":"3859","2f68f199":"3981","01a85c17":"4013",c4f5d8e4:"4195","32c9e580":"4241",eb8f7973:"4251","4f8daff2":"4310",f73d6f26:"4325","5fef6e31":"4451",ce6b2e59:"4643",def4c1b1:"4777","14dea474":"5091",e04645d7:"5320","4c7649fb":"5815",ccc49370:"6103","0a684d14":"6185","31368eba":"6214",c9334f31:"6709","6a1b1137":"6756",ac604baa:"6828","304a9b6f":"7031",ccb61812:"7140",cce2c3d3:"7142","6658404a":"7275","393be207":"7414","9c021584":"7438","3e6f14ef":"7542","960b39d2":"7558","383039d6":"7786","5a53baa4":"7874",e6691236:"7990",a9309055:"8511","98335cfd":"8520",ee9b4564:"8591",f0ab6f9e:"8593","6875c492":"8610",bce1e54f:"8993","666f490c":"9106","8c9540e9":"9379","3c72ff1d":"9453","1be78505":"9514","50bef4b9":"9866","5ce72743":"9892"}[e]||e,b.p+b.u(e)},(()=>{var e={1303:0,532:0};b.f.j=(a,f)=>{var d=b.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var c=new Promise(((f,c)=>d=e[a]=[f,c]));f.push(d[2]=c);var t=b.p+b.u(a),r=new Error;b.l(t,(f=>{if(b.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var c=f&&("load"===f.type?"missing":f.type),t=f&&f.target&&f.target.src;r.message="Loading chunk "+a+" failed.\n("+c+": "+t+")",r.name="ChunkLoadError",r.type=c,r.request=t,d[1](r)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var d,c,t=f[0],r=f[1],o=f[2],n=0;if(t.some((a=>0!==e[a]))){for(d in r)b.o(r,d)&&(b.m[d]=r[d]);if(o)var i=o(b)}for(a&&a(f);n Blog | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/2022/06/13/techfolios-2.html b/blog/2022/06/13/techfolios-2.html index e9c45ac..db17526 100644 --- a/blog/2022/06/13/techfolios-2.html +++ b/blog/2022/06/13/techfolios-2.html @@ -5,7 +5,7 @@ TechFolios 2 | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/archive.html b/blog/archive.html index 2bf3795..8501a17 100644 --- a/blog/archive.html +++ b/blog/archive.html @@ -5,7 +5,7 @@ Archive | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/fullstack-presentation.html b/blog/fullstack-presentation.html index f86be1c..15eaebe 100644 --- a/blog/fullstack-presentation.html +++ b/blog/fullstack-presentation.html @@ -5,7 +5,7 @@ Techfolios at FullStack Honolulu | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/ics-portfolios.html b/blog/ics-portfolios.html index 7d5a593..2f0c7d5 100644 --- a/blog/ics-portfolios.html +++ b/blog/ics-portfolios.html @@ -5,7 +5,7 @@ ICS Portfolios | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/initial-release.html b/blog/initial-release.html index 6c4175d..90a318a 100644 --- a/blog/initial-release.html +++ b/blog/initial-release.html @@ -5,7 +5,7 @@ Initial Release | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/preview-release.html b/blog/preview-release.html index b4ebce8..8c9b162 100644 --- a/blog/preview-release.html +++ b/blog/preview-release.html @@ -5,7 +5,7 @@ Preview Release | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/release-1-1.html b/blog/release-1-1.html index d8911d7..4c00811 100644 --- a/blog/release-1-1.html +++ b/blog/release-1-1.html @@ -5,7 +5,7 @@ Release 1.1 | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/syntax-highlighting-fix.html b/blog/syntax-highlighting-fix.html index 8529296..116f1b0 100644 --- a/blog/syntax-highlighting-fix.html +++ b/blog/syntax-highlighting-fix.html @@ -5,7 +5,7 @@ Syntax highlighting fix | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/tags.html b/blog/tags.html index b461a8e..289a1c0 100644 --- a/blog/tags.html +++ b/blog/tags.html @@ -5,7 +5,7 @@ Tags | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/tags/bug.html b/blog/tags/bug.html index 224c622..48898cb 100644 --- a/blog/tags/bug.html +++ b/blog/tags/bug.html @@ -5,7 +5,7 @@ One post tagged with "bug" | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/tags/presentation.html b/blog/tags/presentation.html index 1be4805..cb41af2 100644 --- a/blog/tags/presentation.html +++ b/blog/tags/presentation.html @@ -5,7 +5,7 @@ One post tagged with "presentation" | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/tags/release.html b/blog/tags/release.html index 74fbff1..679e6cf 100644 --- a/blog/tags/release.html +++ b/blog/tags/release.html @@ -5,7 +5,7 @@ 6 posts tagged with "release" | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/tags/workshop.html b/blog/tags/workshop.html index 8a614a6..e2b736a 100644 --- a/blog/tags/workshop.html +++ b/blog/tags/workshop.html @@ -5,7 +5,7 @@ One post tagged with "workshop" | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/techfolio-designer.html b/blog/techfolio-designer.html index 393632e..2673a7c 100644 --- a/blog/techfolio-designer.html +++ b/blog/techfolio-designer.html @@ -5,7 +5,7 @@ Techfolio Designer | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/blog/workshops-2016.html b/blog/workshops-2016.html index fafc8d7..369401e 100644 --- a/blog/workshops-2016.html +++ b/blog/workshops-2016.html @@ -5,7 +5,7 @@ TechFolio Workshops | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/archive/developer-guide/manage-this-site.html b/docs/archive/developer-guide/manage-this-site.html index ddbeef9..316061f 100644 --- a/docs/archive/developer-guide/manage-this-site.html +++ b/docs/archive/developer-guide/manage-this-site.html @@ -5,7 +5,7 @@ Manage this site | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/archive/developer-guide/markdown-features.html b/docs/archive/developer-guide/markdown-features.html index 31b18c1..7b9cf4a 100644 --- a/docs/archive/developer-guide/markdown-features.html +++ b/docs/archive/developer-guide/markdown-features.html @@ -5,7 +5,7 @@ Markdown Features | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/archive/developer-guide/overview.html b/docs/archive/developer-guide/overview.html index 06a9fe3..bca4180 100644 --- a/docs/archive/developer-guide/overview.html +++ b/docs/archive/developer-guide/overview.html @@ -5,7 +5,7 @@ Overview | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/archive/developer-guide/theme-customization.html b/docs/archive/developer-guide/theme-customization.html index 31aa537..654b679 100644 --- a/docs/archive/developer-guide/theme-customization.html +++ b/docs/archive/developer-guide/theme-customization.html @@ -5,7 +5,7 @@ Customizing Morea themes | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/gallery.html b/docs/gallery.html index c2657fc..4a1c05a 100644 --- a/docs/gallery.html +++ b/docs/gallery.html @@ -5,7 +5,7 @@ Gallery | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/help.html b/docs/help.html index 211661f..0a246e1 100644 --- a/docs/help.html +++ b/docs/help.html @@ -5,7 +5,7 @@ Help | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/overview.html b/docs/overview.html index 664c294..8429c72 100644 --- a/docs/overview.html +++ b/docs/overview.html @@ -5,7 +5,7 @@ Overview | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/quick-start/configure-bio-json.html b/docs/quick-start/configure-bio-json.html index 4fa003f..6e71dfe 100644 --- a/docs/quick-start/configure-bio-json.html +++ b/docs/quick-start/configure-bio-json.html @@ -5,7 +5,7 @@ Configure bio.json | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/quick-start/configure-essays.html b/docs/quick-start/configure-essays.html index 48dd3c0..867890a 100644 --- a/docs/quick-start/configure-essays.html +++ b/docs/quick-start/configure-essays.html @@ -5,7 +5,7 @@ Configure essays | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/quick-start/configure-projects.html b/docs/quick-start/configure-projects.html index b87806d..5305021 100644 --- a/docs/quick-start/configure-projects.html +++ b/docs/quick-start/configure-projects.html @@ -5,7 +5,7 @@ Configure projects | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/quick-start/configure-resume.html b/docs/quick-start/configure-resume.html index ca7197a..913c2f1 100644 --- a/docs/quick-start/configure-resume.html +++ b/docs/quick-start/configure-resume.html @@ -5,7 +5,7 @@ Configure resume | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/quick-start/configure-theme.html b/docs/quick-start/configure-theme.html index 6d7eb13..8b1d4d8 100644 --- a/docs/quick-start/configure-theme.html +++ b/docs/quick-start/configure-theme.html @@ -5,7 +5,7 @@ Configure theme | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/quick-start/initialization.html b/docs/quick-start/initialization.html index 2d29a50..3ef9de6 100644 --- a/docs/quick-start/initialization.html +++ b/docs/quick-start/initialization.html @@ -5,17 +5,17 @@ Initialization | TechFolios - +
-

Initialization

You only have to do the following initialization tasks when you are setting up your TechFolio for the very first time.

Join GitHub

To get started with TechFolios using this Quick Start, all you need is an account at GitHub. You don't need to download any software or even know how to use git. Everything you need to do for this Quick Start can be done in a browser.

If you haven't already, sign up for GitHub and verify your email address. Choose your username wisely, as that will become part of the URL to your portfolio site.

Username recommendations

Keep your username professional and close to your real name: "the3Gr8est" might seem super clever to you right now, but will be awkward and embarrassing to you during an interview next year. Restrict yourself to lowercase characters, numbers, and hyphens to make it simple to remember. Uppercase adds unnecessary confusion. Don't make your username location-specific: "philip-at-manoa" will be confusing if you move next year to San Francisco.

If you decide your current GitHub username could use some improvement, it is very easy to change your GitHub username to something more professional.

Before proceeding, login to your GitHub account.

Copy the template

In this step, you'll make your personal copy of the TechFolio template.

Your screens may look a little different

GitHub makes changes to their user interface quite frequently. We try to keep these screenshots up to date, but your browser might display something slightly different. Let us know if things look really different.

First, go to https://github.com/techfolios/template:

Click the Use this template button, then select "Create a new repository". (If you don't see the "Use this template" button, make sure you are signed in to GitHub.) Select your account as the "Owner", and specify the repository name as your account name plus ".github.io". It should look similar to this:

Then press the Create repository button. GitHub will make a new copy of the template in your account and display a page like this:

Verify your repository name

Make sure the repository name is correct. As you can see in this example, since my GitHub username is "philipmjohnson", the repository name must be "philipmjohnson.github.io". If the first part of the repository name does not match your GitHub username exactly, then you need to rename your repository right now to make it match. Click on the Settings link to rename your repo, it's easy to fix.

Now let's fix the "About" section to link to your portfolio. Click on the gear icon next to the "About" label, which brings up a dialog box. Add "Professional Portfolio" as the description, add "https://USERNAME.github.io" (where USERNAME is your username) as the website, and (if you want) add "professional-portfolio" as a topic. The result should look like this:

After saving the changes, you'll have a convenient link to your professional portfolio on the home page for this repo.

Set workflow permissions to "Read and write"

Now click on the Settings tab near the top of the window, then Actions and General in the left sidebar to display the Actions permissions page:

Check that Workflow permissions is set to "Read and write permissions". If not, click the radio button and press "Save".

Select GitHub Actions for deployment

Next, click on the Pages link in the left sidebar, and make sure the "GitHub Actions" is selected as the "Source" for Build and Deployment:

Configure _config.yml

Now that your repository is set up, we can start editing the template files to make this professional portfolio your own.

Scroll down the repository home page until you find the file named "_config.yml", and click on it, which will bring up a page that looks like this:

Click the pencil icon on the right hand side to edit the file:

The first section of the file, "Required Changes", contains the three lines you have to change. -Edit title: to specify your own name, edit url: to specify your portfolio, and edit baseurl: to be the empty string. When you're done editing, that section of _config.yml should look similar to this:

Click "Commit changes" to save these changes. (It will pop up a dialog box, just click "Commit Changes" again to confirm.)

Monitor the build

Every time you commit a change to your portfolio, GitHub will attempt to build and deploy your revised portfolio. It does this through a technology called GitHub Actions. In fact, GitHub is trying to build a new version of your portfolio right now. Let's watch.

First, click on the "Actions" label on the home page of your repository. That will take you to a page that looks like this:

This page indicates that two GitHub Actions (i.e. "workflows") named "pages-build-deployment" have previously run and completed successfully (indicated by the green checkmarks). There is a workflow called "Jekyll Deploy" that is running right now (indicated by the yellow dot). GitHub labels this workflow execution instance using the commit message associated with the change to the repository that triggered the Action. In this case, it was "Update _config.yml".

Your action name may differ

GitHub occasionally changes the name of their build actions.

You can watch the build in more detail by clicking on the "Update _config.yml" line, which takes you to a page like this:

Clicking on the "build_and_deploy" label takes you to a page that shows the actual progress through the build:

Finally, you can click on the arrow next to any build step and see what happened during it:

After a few minutes, the Jekyll Deploy workflow will complete and the Actions page will look like this:

Notice that there is a green checkmark beside the "Update _config.yml" workflow run, indicating that it has completed successfully.

Why monitor the build?

There are two reasons it is useful to know how to monitor the build:

  1. By monitoring the build, you'll know when your updated portfolio is ready to be viewed.
  2. Monitoring the build lets you know if any errors occurred during the build.

Also, please note that the very first time you try to build your portfolio, it takes about five minutes, which is a long time! Don't worry, though: after this very first build, GitHub will cache the build artifacts and your future builds should take less than a minute to complete.

Oh no! My very first build failed!

Unfortunately, some users have reported that their first build failed with an error like this:

error: RPC failed; curl 55 Failed sending HTTP2 data
fatal: the remote end hung up unexpectedly
fatal: the remote end hung up unexpectedly

This is not your fault (or ours): it means that there was a network connection problem on GitHub's side that resulted in a timeout. In our experience, all you have to do is re-trigger the build one more time. (You can do this by editing the _config.yml file and adding a space or newline, then committing the change).

The good news is that the files retrieved over the network for the first build are cached for the future, so it is unlikely you'll run into this particular error again upon subsequent builds of your portfolio.

View your portfolio

Click the link to see your brand new professional portfolio:

Congratulations! The URL "https://philipmjohnson.github.io" now shows the portfolio for... Molly Maluhia?

- + \ No newline at end of file diff --git a/docs/quick-start/overview.html b/docs/quick-start/overview.html index 5ed1b9f..72ea913 100644 --- a/docs/quick-start/overview.html +++ b/docs/quick-start/overview.html @@ -5,7 +5,7 @@ Overview | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/user-guide/anatomy-of-bio-json.html b/docs/user-guide/anatomy-of-bio-json.html index 1fe8b43..06b86b7 100644 --- a/docs/user-guide/anatomy-of-bio-json.html +++ b/docs/user-guide/anatomy-of-bio-json.html @@ -5,16 +5,16 @@ Anatomy of bio.json | TechFolios - +
-

Anatomy of bio.json

One of the trickier aspects of TechFolios is the bio.json file, because it has a fairly rigid syntax, and (b) if you create a syntax error in bio.json, the feedback from the resulting build failure is not very informative.

Fortunately, it is quite easy to diagnose and fix bio.json problems. First, let's take a quick look at the format.

About JSON format

If you haven't worked with JSON formatted files before, all you really need to understand for TechFolios is that the bio.json file is a combination of objects and arrays. Objects are key-value pairs enclosed by curly braces, for example:

{
"name" : "Philip Johnson",
"address" : "1680 East-West Road"
}

This object has two keys ("name" and "address"), each with corresponding values ("Philip Johnson" and "1680 East-West Road"). There is always a colon between a key and its value.

Pesky commas

Key-value pairs must end with a comma, except for the last key-value pair! This is one common syntax error in bio.json.

The second construct creates lists of values, or arrays:

[
"blue",
"red",
"green"
]

The difference between objects and arrays is that arrays are defined using square brackets and consist of a list of elements separated by commas.

Pesky commas, pt 2

Array entries must also end with a comma, except for the last array entry! This is another common syntax error in bio.json.

What makes JSON files interesting and useful is that you can combine objects and arrays. For example:

{
"name" : "Philip Johnson",
"address" : ["1680 East West Road", "Honolulu", "HI", "96822"]
}

Here we have an object where the value associated with the address key is an array.

A final comment: in JSON format, newlines and indentation are not significant. You could have the entire bio.json file on a single line and it would still be a legal file (although not very readable by humans). By convention, the bio.json file uses two space indentation.

Structure of bio.json

The bio.json file format is based on JSONResume. Here is the top-level structure:

{
"basics" : { <basic profile information> },
"work" : [ { work object }, { work object }, ... ],
"volunteer" : [ { volunteer object }, { volunteer object }, ... ],
"education" : [ { education object }, { education object }, ... ],
"awards" : [ { award object }, { award object }, ... ],
"publications" : [ { publication object }, { publication object }, ... ],
"skills" : [ { skill object }, { skill object }, ... ],
"interests" : [ { interest object }, { interest object }, ... ],
}

It's really pretty easy: apart from the first section ("basics"), all of the remaining sections are simply arrays of objects, where each object has a structure appropriate for the section.

Let's look at examples of each section.

Basics section

First, here's a sample value associated with the "basics" keyword:

{
"name": "Philip Johnson",
"label": "Professor",
"picture": "https://philipmjohnson.github.io/images/philip.jpg",
"email": "johnson@hawaii.edu",
"phone": "808-956-3489",
"website": "https://philipmjohnson.github.io",
"summary": "I am a Professor of Information and Computer Sciences at the University of Hawaii.",
"location": {
"address": "1680 East-West Rd, POST 307",
"postalCode": "96822",
"city": "Honolulu",
"countryCode": "USA",
"region": "Hawaii"
},
"profiles": [
{
"network": "github",
"username": "philipmjohnson",
"url": "http://github.com/philipmjohnson"
},
{
"network": "linkedin",
"username": "philipmjohnson",
"url": "http://linkedin.com/in/philipmjohnson"
}
]
}
Did I say that commas are pesky?

In the "profiles" section, each of the social network objects must be separated by a comma (since they are in an array). If you add a new social network object, make sure that a comma separates it from the previous and next object.

Work section

Here's an example of the value associated with the "work" keyword:

[
{
"company": "University of Hawaii",
"position": "Professor",
"website": "http://www.ics.hawaii.edu/",
"startDate": "1990-08-01",
"endDate": "Present",
"summary": "Department of Information and Computer Sciences",
"highlights": [
"Professor, 2001-present",
"Associate Chair, 2010-2016",
"Director, Collaborative Software Development Laboratory, 1990-present",
"Associate Professor, 1995-2001",
"Assistant Professor, 1990-1995"
]
},
{
"company": "Open Power Quality",
"position": "CEO",
"website": "https://openpowerquality.com/",
"startDate": "2013-01-01",
"endDate": "Present",
"summary": "Co-founder and leader of technical development",
"highlights": [ ]
}
]

Unlike the "basics" keyword whose value is an object, the value associated with the "work" keyword is an array.

This array contains a list of objects, where each object has keys for company, position, website, etc.

Education section

All of the remaining sections are pretty much like the work section: an array of objects whose keys are appropriate for the information being presented. For example, here's a sample value associated with the "education" keyword:

[
{
"institution": "University of Massachusetts, Amherst, MA",
"area": "Computer Science",
"studyType": "Ph.D.",
"endDate": "1990-08-01",
"gpa": "",
"courses": [
]
},
{
"institution": "University of Massachusetts, Amherst, MA",
"area": "Computer Science",
"studyType": "M.S.",
"endDate": "1985-06-01",
"gpa": "",
"courses": [
]
}
]

Again, when editing this section, make sure the individual education objects are separated by commas.

Debugging bio.json

OK, so let's say you edited bio.json in your browser, committed the file, and the build fails in the validate-bio-json-file task. What's wrong?

The most likely answer is that you have somehow forgotten to add a comma or made some other simple syntax error in your bio.json file. Now the question is: how to track down the line(s) containing a problem?

One simple way is to use an online tool such as https://jsonlint.com. Here's what it looks like when I run it against the template bio.json file:

If I edit the code to remove a comma, then the validator highlights the line with the error:

Miscellaneous tips

Here are a few things we've discovered about bio.json while developing our portfolios:

  • You cannot comment out lines in your bio.json file. It is fine to have empty arrays, for example. But if there is actual data that you do not want displayed, then you have to delete it.

  • If you want to transmogrify your bio.json file into other formats, see Hack My Resume.

  • For heaven's sake, don't end up with a portfolio like this one.

- + \ No newline at end of file diff --git a/docs/user-guide/customize-layout.html b/docs/user-guide/customize-layout.html index 56c0af2..b12fd04 100644 --- a/docs/user-guide/customize-layout.html +++ b/docs/user-guide/customize-layout.html @@ -5,7 +5,7 @@ Customize layout | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/user-guide/customize-theme.html b/docs/user-guide/customize-theme.html index 3cffe9f..415e854 100644 --- a/docs/user-guide/customize-theme.html +++ b/docs/user-guide/customize-theme.html @@ -5,7 +5,7 @@ Customize theme | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/user-guide/drafts.html b/docs/user-guide/drafts.html index 542d37f..de55e78 100644 --- a/docs/user-guide/drafts.html +++ b/docs/user-guide/drafts.html @@ -5,7 +5,7 @@ Drafts | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/user-guide/essay-and-project-tips.html b/docs/user-guide/essay-and-project-tips.html index 490d0b3..c72821a 100644 --- a/docs/user-guide/essay-and-project-tips.html +++ b/docs/user-guide/essay-and-project-tips.html @@ -5,7 +5,7 @@ Essay and Project Tips | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/user-guide/formatting.html b/docs/user-guide/formatting.html index 856b38b..3af42ee 100644 --- a/docs/user-guide/formatting.html +++ b/docs/user-guide/formatting.html @@ -5,7 +5,7 @@ Format text, images, video | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/user-guide/invalid-date-field.html b/docs/user-guide/invalid-date-field.html index 49b946d..658500b 100644 --- a/docs/user-guide/invalid-date-field.html +++ b/docs/user-guide/invalid-date-field.html @@ -5,7 +5,7 @@ Invalid Date Field | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/user-guide/local-development.html b/docs/user-guide/local-development.html index 957cae5..bb35330 100644 --- a/docs/user-guide/local-development.html +++ b/docs/user-guide/local-development.html @@ -5,7 +5,7 @@ Local development | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/user-guide/locale-problem.html b/docs/user-guide/locale-problem.html index 3ad8fff..af836fa 100644 --- a/docs/user-guide/locale-problem.html +++ b/docs/user-guide/locale-problem.html @@ -5,7 +5,7 @@ Error: Invalid US-ASCII character | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/user-guide/missing-page.html b/docs/user-guide/missing-page.html index eaecf5f..85da348 100644 --- a/docs/user-guide/missing-page.html +++ b/docs/user-guide/missing-page.html @@ -5,7 +5,7 @@ Missing pages | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/user-guide/overview.html b/docs/user-guide/overview.html index 23dbc38..c85ecd4 100644 --- a/docs/user-guide/overview.html +++ b/docs/user-guide/overview.html @@ -5,7 +5,7 @@ Overview | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/user-guide/project-and-essay-url.html b/docs/user-guide/project-and-essay-url.html index d87581a..bbec00a 100644 --- a/docs/user-guide/project-and-essay-url.html +++ b/docs/user-guide/project-and-essay-url.html @@ -5,7 +5,7 @@ Project and Essay URLs | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/user-guide/tool-installation.html b/docs/user-guide/tool-installation.html index 432e53b..02fe1b0 100644 --- a/docs/user-guide/tool-installation.html +++ b/docs/user-guide/tool-installation.html @@ -5,7 +5,7 @@ Tool installation | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/docs/user-guide/v2-migration.html b/docs/user-guide/v2-migration.html index faea3fd..622794c 100644 --- a/docs/user-guide/v2-migration.html +++ b/docs/user-guide/v2-migration.html @@ -5,7 +5,7 @@ V2 Migration | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/index.html b/index.html index 643b6c1..d18c60b 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ TechFolios | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file diff --git a/markdown-page.html b/markdown-page.html index 8ce5ecc..850d2e3 100644 --- a/markdown-page.html +++ b/markdown-page.html @@ -5,7 +5,7 @@ Markdown page example | TechFolios - + @@ -14,7 +14,7 @@ Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii - + \ No newline at end of file