├── .gitignore ├── README.md ├── contents ├── info.json └── press.json ├── css ├── main.css └── popup.css ├── favicons ├── android-chrome-144x144.png ├── android-chrome-192x192.png ├── android-chrome-36x36.png ├── android-chrome-48x48.png ├── android-chrome-72x72.png ├── android-chrome-96x96.png ├── apple-touch-icon-114x114.png ├── apple-touch-icon-120x120.png ├── apple-touch-icon-144x144.png ├── apple-touch-icon-152x152.png ├── apple-touch-icon-180x180.png ├── apple-touch-icon-57x57.png ├── apple-touch-icon-60x60.png ├── apple-touch-icon-72x72.png ├── apple-touch-icon-76x76.png ├── apple-touch-icon-precomposed.png ├── apple-touch-icon.png ├── browserconfig.xml ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon-96x96.png ├── favicon.ico ├── manifest.json ├── mstile-144x144.png ├── mstile-150x150.png ├── mstile-310x150.png ├── mstile-310x310.png ├── mstile-70x70.png └── safari-pinned-tab.svg ├── icons.svg ├── img └── casssquare.jpg ├── index.html └── js ├── content.js └── popup.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | content.compiled.js 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [cassidoo.co](http://cassidoo.co) 2 | ============== 3 | 4 | My personal website, version 4! Build from scratch using the awesome power of 5 | SVGs, ES6, the Fetch API, and of course HTML and CSS. 6 | 7 | ## How it's built 8 | 9 | ### SVGs 10 | Thanks to some great SVG logos found online, I combined the `path`s of all of them 11 | into one larger SVG file. Pulling from that file in the HTML was pretty 12 | straightforward, you only have to use the `id` of the `path` to stick it in! 13 | 14 | ```html 15 | 16 | ``` 17 | 18 | And styling them was pretty easy, using the `fill` and `filter` properties. 19 | 20 | ### ES6 + the Fetch API 21 | I really wanted to check out template literals and the Fetch API to populate the 22 | content of the site. So, all of the "about me" style text was built with both! 23 | 24 | I made a couple easily editable JSON files to make maintaining information about 25 | me and what I'm doing super simple. You can check those out for yourself in the 26 | `contents` folder. To get them into the HTML, I pulled the information from 27 | them with `fetch`, and then shoved the variables into a template literal string! 28 | 29 | It was pretty straightforward, because template literals can have expressions in 30 | the string. So, for example, there's a line on my website that mentions my 31 | hobbies. I randomly pick one and put it in the string like this: 32 | 33 | ```js 34 | In addition to ${info.hobbies[Math.floor(Math.random()*info.hobbies.length)]}, 35 | one of my favorite things to do is... 36 | ``` 37 | 38 | ### The Design 39 | One thing that I had wanted to really mess with was CSS filters and gradients. 40 | So, I did just that! You'll notice that the background of the website is 41 | constantly changing color. That's done exclusively with CSS. The background of 42 | the site is just a gradient blown up: 43 | 44 | ``` 45 | background: linear-gradient(316deg, #ffdf79, #ed747f, #e371d4, #8d5993, #9771e3); 46 | background-size: 600% 600%; 47 | ``` 48 | 49 | And to get the color to change around, I just shift the gradient over time. 50 | 51 | ``` 52 | animation: gradientShift 18s ease infinite; 53 | 54 | ... 55 | 56 | @keyframes gradientShift { 57 | 0%{background-position:24% 0;} 58 | 50%{background-position:77% 100%;} 59 | 100%{background-position:24% 0;} 60 | } 61 | ``` 62 | 63 | In terms of the transitions between states when someone wants to read my "about" 64 | section, that needed a touch of JavaScript to make it happen. The effect is 65 | done with all CSS, when a `blur` class is added on the click event. 66 | 67 | The really interesting thing that I ran into is that even though adding a blur 68 | to SVGs is super simple (literally just `filter: blur(20px);`), making text 69 | blurry is a whole other animal. You actually have to make the text transparent, 70 | and then make a `text-shadow` for the blur. It's only a couple lines, but it's 71 | weird: 72 | 73 | ``` 74 | color: transparent; 75 | text-shadow: 0 0 40px rgba(255,255,255,.4); 76 | ``` 77 | 78 | There's a few little `:hover` events I threw in there to make the site more fun, 79 | like the spinning of the close button and the shift upward of the icons. Those 80 | were just for fun and again, all in CSS. 81 | 82 | ## Future stuff? 83 | Now that the core part of the site is done and public, I plan on adding some 84 | Easter eggs! The plan is to hide a bunch of things in key commands and maybe 85 | some mouse movements, if I can figure it out. 86 | 87 | If you find a bug or issue on the site, please make an Issue or email me! 88 | 89 | Thanks for reading! 90 | -------------------------------------------------------------------------------- /contents/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "title": "Software Engineer & Developer Evangelist", 4 | "companies": { 5 | "fulltime": [ 6 | "Clarifai", 7 | "Venmo" 8 | ], 9 | "intern": [ 10 | "Intuit", 11 | "Microsoft", 12 | "The National Center for Women & IT", 13 | "General Mills", 14 | "Priority 5" 15 | ] 16 | }, 17 | "city": "New York City", 18 | "school": "Iowa State University", 19 | "grad": "May 2014", 20 | "major": "Computer Science", 21 | "hobbies": [ 22 | "playing guitar", 23 | "singing karaoke", 24 | "lip sync battles", 25 | "playing Mario Kart", 26 | "playing Minecraft", 27 | "coding", 28 | "blogging", 29 | "drawing & doodling" 30 | ] 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /contents/press.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "url": "http://gadgetgoals.com/interviews/cassidy-williams", 5 | "title": "Cassidy Williams Promotes Solidarity for Women in Tech" 6 | }, 7 | { 8 | "url": "http://thesurge.com/stories/day-life-developer-evangelist-cassidy-williams", 9 | "title": "The Surge: Because She's A Girl, Some People Just Assume She Can't Code" 10 | }, 11 | { 12 | "url": "http://www.mitracreative.com/iamcp-tristate-wit-bring-daughter-wit-event-microsoft-new-york-photos", 13 | "title": "Cassidy Williams at the 'Bring your Daugher' Women in Tech event at Microsoft New York" 14 | }, 15 | { 16 | "url": "http://www.geekwire.com/2015/dubhacks-remote-cat-feeders-disease-detectors-and-other-inventions-at-this-caffeine-fueled-24-hour-university-hackathon/", 17 | "title": "DubHacks: Remote cat feeders, disease detectors and other inventions at this 24-hour caffeine-fueled university hackathon" 18 | }, 19 | 20 | { 21 | "url": "http://www.outsideoftheclassroom.com/how-cassidy-williams-landed-tech-jobs-at-clarifai-venmo-intuit-microsoft-general-mills/", 22 | "title": "How Cassidy Williams Landed Tech Jobs At Clarifai, Venmo, Intuit, Microsoft, & General Mills" 23 | }, 24 | 25 | { 26 | "url": "http://www.femtechleaders.com/north-america/cassidy-williams-2/", 27 | "title": "FemTech Leaders #FinTechWoman Feature" 28 | }, 29 | 30 | { 31 | "url": "http://www.businessinsider.com/10-stars-under-35-in-enterprise-tech-2015-9", 32 | "title": "10 enterprise rock stars under age 35" 33 | }, 34 | 35 | { 36 | "url": "https://lists.linkedin.com/2015/next-wave/enterprise-tech/cassidy-williams", 37 | "title": "LinkedIn Next Wave 2015: Top 10 Professionals in Enterprise Tech" 38 | }, 39 | 40 | { 41 | "url": "http://www.mydomaine.com/leaders-career-books", 42 | "title": "8 Leaders Share the Books That Changed Their Careers" 43 | }, 44 | 45 | { 46 | "url": "https://www.betterment.com/resources/inside-betterment/women-who-code-an-engineering-qa-with-venmo/", 47 | "title": "Women Who Code: An Engineering Q&A with Venmo" 48 | }, 49 | 50 | { 51 | "url": "http://www.bloomberg.com/news/videos/2015-07-20/paypal-s-multi-front-attack-on-the-mobile-market", 52 | "title": "PayPal's Multi-Front Attack on the Mobile Market" 53 | }, 54 | 55 | { 56 | "url": "http://blog.fogcreek.com/dev-life-interview-with-cassidy-williams/", 57 | "title": "dev.life – Interview with Cassidy Williams" 58 | }, 59 | 60 | { 61 | "url": "http://news.mlh.io/we-asked-hackers-what-makes-an-ideal-hackathon-06-12-2015", 62 | "title": "We asked hackers what makes an ideal hackathon" 63 | }, 64 | 65 | { 66 | "url": "http://www.swift.com/about_swift/shownews?param_dcr=news.data/en/swift_com/2015/Innotribe_Power_Women_Fintech.xml", 67 | "title": "Power Women in FinTech Index" 68 | }, 69 | 70 | { 71 | "url": "http://www.blinkblink.cc/blogpost/2015/5/27/interview-with-technology-maven-cassidy-williams", 72 | "title": "Interview with Technology Maven Cassidy Williams" 73 | }, 74 | 75 | { 76 | "url": "http://techcrunch.com/2015/05/03/split-lets-you-split-the-bill-fairly-not-equally/", 77 | "title": "Split Lets You Split The Bill Fairly, Not Equally" 78 | }, 79 | 80 | { 81 | "url": "https://www.linkedin.com/pulse/women-who-work-qa-cassidy-williams-from-venmo-christina-smedley", 82 | "title": "Women Who Work: Q&A with Cassidy Williams from Venmo" 83 | }, 84 | 85 | { 86 | "url": "http://technical.ly/brooklyn/2015/02/13/meet-cassidy-williams-venmos-23-year-old-developer-evangelist/", 87 | "title": "Meet Cassidy Williams, Venmo’s 23-year-old developer evangelist" 88 | }, 89 | 90 | { 91 | "url": "http://hackathon.posthaven.com/cassidy-williams-is-a-venmo-dev-evangelist-and-hackathon-enthusiast", 92 | "title": "Hackathon Maven: Cassidy Williams is a Venmo dev evangelist and hackathon enthusiast" 93 | }, 94 | 95 | { 96 | "url": "http://www.inc.com/zoe-henry/4-succesful-women-in-tech-combatting-sexism.html", 97 | "title": "4 Successful Women in Tech on Combating Industry Sexism" 98 | }, 99 | 100 | { 101 | "url": "http://news.microsoft.com/features/big-dream-brings-big-inspiration-to-computer-science-education-week/", 102 | "title": "‘Big Dream’ brings big inspiration to Computer Science Education Week" 103 | }, 104 | 105 | { 106 | "url": "http://paigelsheffield.wordpress.com/2014/10/26/cassidy-williams-success-in-stem/", 107 | "title": "Cassidy Williams: Success in STEM" 108 | }, 109 | 110 | { 111 | "url": "http://www.glamour.com/inspired/2014/09/top-new-women-leaders-in-technology/33", 112 | "title": "35 Women Under 35 Who Are Changing the Tech Industry" 113 | }, 114 | 115 | { 116 | "url": "http://scienceblogs.com/usasciencefestival/2014/09/24/cassidy-williams-an-emerging-computer-scientist-with-a-desire-to-inspire-more-women-in-stem/", 117 | "title": "Meet Nifty Fifty Speaker Cassidy Williams" 118 | }, 119 | 120 | { 121 | "url": "http://www.usasciencefestival.org/component/k2/item/1169-ms_cassidy.html", 122 | "title": "Cassidy Williams: An Emerging Computer Scientist with a Desire to Inspire More Women in STEM" 123 | }, 124 | 125 | { 126 | "url": "http://www.usatoday.com/story/tech/2014/09/16/women-in-tech-documentary-diversity-microsoft/15677915/", 127 | "title": "New documentary follows Big Dream of girls in tech" 128 | }, 129 | 130 | { 131 | "url": "http://www.futureinsights.com/home/cassidy-williams-is-a-rising-star-at-fowa-js-boston.html", 132 | "title": "Cassidy Williams is a Rising Star at FOWA (.js) Boston" 133 | }, 134 | 135 | { 136 | "url": "http://blogs.technet.com/b/next/archive/2014/04/25/hackathons-generate-solutions-opportunities-and-support-for-women-in-computer-science.aspx#.U1-mQPldWSo", 137 | "title": "Hackathons generate solutions, opportunities and support for women in computer science" 138 | }, 139 | 140 | { 141 | "url": "http://www.iowastatedaily.com/news/article_f08f0130-b91e-11e3-86c8-0019bb2963f4.html", 142 | "title": "ISU students win Money Game Jam, have financial fun" 143 | }, 144 | 145 | { 146 | "url": "http://whotv.com/2014/04/01/winning-idea-isu-students-do-hackathon/", 147 | "title": "Winning Idea: ISU Students do a hackathon" 148 | }, 149 | 150 | { 151 | "url": "http://tedxtalks.ted.com/video/Growing-up-in-STEM-as-a-girl-Ca", 152 | "title": "Growing up in STEM - as a girl: Cassidy Williams at TEDxDesMoinesWomen" 153 | }, 154 | 155 | { 156 | "url": "http://www.cupofleadership.com/the-daily-cup/2014/1/24/from-me-to-we", 157 | "title": "From 'Me' to 'We'" 158 | }, 159 | 160 | { 161 | "url": "http://www.forbes.com/sites/quora/2014/01/21/why-dont-more-women-go-to-hackathons/", 162 | "title": "Forbes - Why Don't More Women Go To Hackathons?" 163 | }, 164 | 165 | { 166 | "url": "http://www.dailyherald.com/article/20131226/news/712269952/", 167 | "title": "Chicago Suburban Standouts 2013" 168 | }, 169 | 170 | { 171 | "url": "http://www.washingtonpost.com/blogs/innovations/wp/2013/12/09/the-childhood-toys-that-inspired-female-engineers-and-scientists/", 172 | "title": "The childhood toys that inspired female engineers and scientists" 173 | }, 174 | 175 | { 176 | "url": "http://www.iastate.edu/stories/2013/11/twins", 177 | "title": "Adventure is in their genes (Iowa State Homepage cover story)" 178 | }, 179 | 180 | { 181 | "url": "http://www.deseretnews.com/article/865591365/Why-more-girls-should-study-computer-science.html?pg=all", 182 | "title": "Code secrets: The real reasons why girls need to become computer geeks" 183 | }, 184 | 185 | { 186 | "url": "http://www.informit.com/articles/article.aspx?p=2159655", 187 | "title": "How My Love of Programming Took Me to Microsoft, the White House, a Mile-High Hackathon, and My Dream Job: A Student's Story" 188 | }, 189 | 190 | { 191 | "url": "http://www.iowastatedaily.com/news/article_32a0ac24-28b3-11e3-a9c2-001a4bcf887a.html", 192 | "title": "ISU senior takes flight for social change in STEM fields" 193 | }, 194 | 195 | { 196 | "url": "http://www.dailyherald.com/article/20130918/news/709189699/", 197 | "title": "Suburban wiz wants to lead women into tech world" 198 | }, 199 | 200 | { 201 | "url": "http://issuu.com/iowastate-liberalarts-sciences/docs/link_2013/1?e=1512885/3521774", 202 | "title": "Link Magazine, Spring 2013" 203 | }, 204 | 205 | { 206 | "url": "http://www.las.iastate.edu/computer-science-majors-ideas-take-flight-on-british-airways-ungrounded/", 207 | "title": "Computer science major's ideas take flight on British Airways' UnGrounded" 208 | }, 209 | 210 | { 211 | "url": "http://network.intuit.com/2013/06/24/plane-innovations/", 212 | "title": "Brains on a Plane: Innovation at 30,000 Feet" 213 | }, 214 | 215 | { 216 | "url": "http://www.contracostatimes.com/breaking-news/ci_23447687/silicon-valley-stars-take-off-flight-london-change", 217 | "title": "Silicon Valley stars take off on British Airways 'UnGrounded' flight to London 'to change the world'" 218 | }, 219 | 220 | { 221 | "url": "http://nationbuilder.com/ungrounded_landed_in_london", 222 | "title": "UnGrounded in London, encouraging women in STEM" 223 | }, 224 | 225 | { 226 | "url": "http://www.ncwit.org/news/young-women-ncwit-aspirations-computing-program-invited-join-british-airways%E2%80%99-ungrounded-flight", 227 | "title": "Young Women from NCWIT Aspirations in Computing Program Invited To Join British Airways' UnGrounded Flight" 228 | }, 229 | 230 | { 231 | "url": "http://www.mysuburbanlife.com/2013/05/24/a-package-deal-downers-grove-sisters-fly-high-in-tech-industry/a2a4b82/", 232 | "title": "'A package deal': Downers Grove sisters fly high in tech industry" 233 | }, 234 | 235 | { 236 | "url": "http://www.iowastatedaily.com/news/article_4ba74962-b37e-11e2-83ea-001a4bcf887a.html", 237 | "title": "ISU student to join flight for social change" 238 | }, 239 | 240 | { 241 | "url": "http://www.news.iastate.edu/news/2013/05/01/williamsungrounded", 242 | "title": "Iowa State computer science student selected for Innovation Lab in the Sky flight" 243 | }, 244 | 245 | { 246 | "url": "http://www.women2.com/5-girl-coders-under-21-to-watch/", 247 | "title": "5 Girl Coders Under 21 To Watch" 248 | }, 249 | 250 | { 251 | "url": "http://cra.org/resources/crn-archive-view-detail/expanding_the_pipeline/?utm_source=Computing+Research+News&utm_campaign=53f53260e7-March_2013_CRN&utm_medium=email", 252 | "title": "Growing the Tech Talent Pool: NCWIT Aspirations in Computing Program Scales Up" 253 | }, 254 | 255 | { 256 | "url": "http://www.cs.iastate.edu/files/page/files/AtansoffToday_Spring2013.pdf", 257 | "title": "Atanasoff Today Cover" 258 | }, 259 | 260 | { 261 | "url": "http://www.las.iastate.edu/iowa-states-williams-sisters-share-their-computer-science-experiences-at-white-house-tech-summit/", 262 | "title": "Iowa State's Williams sisters share their computer science experiences at White House tech summit" 263 | }, 264 | 265 | { 266 | "url": "http://www.iowastatedaily.com/news/article_10795dd6-6fad-11e2-aa21-001a4bcf887a.html", 267 | "title": "The Williams sisters head to the White House" 268 | }, 269 | 270 | { 271 | "url": "http://www.cs.iastate.edu/cassidy-and-camryn-williams-featured-microsoft-researchncwit-promotional-video", 272 | "title": "Cassidy and Camryn Williams Featured in Microsoft Research/NCWIT Promotional Video" 273 | }, 274 | 275 | { 276 | "url": "http://research.microsoft.com/apps/video/default.aspx?id=179475", 277 | "title": "Get Inspired by Aspiration Award Winners" 278 | } 279 | ] 280 | } 281 | -------------------------------------------------------------------------------- /css/main.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | height: 100%; 3 | margin: 0; 4 | padding: 0; 5 | } 6 | 7 | body { 8 | background-color: #9771e3; 9 | color: #fff; 10 | font-family: 'Source Sans Pro', 'Helvetica', 'Arial', sans-serif; 11 | overflow: hidden; 12 | } 13 | 14 | ::selection { 15 | background-color: #9771e3; 16 | color: #ffdf79; 17 | text-shadow: none; 18 | } 19 | ::-moz-selection { 20 | background-color: #9771e3; 21 | color: #ffdf79; 22 | } 23 | 24 | h1 { 25 | font-family: 'Raleway', 'Helvetica', 'Arial', sans-serif; 26 | font-size: 8em; 27 | font-weight: 800; 28 | line-height: .8em; 29 | margin: 0; 30 | -webkit-margin-after: 0; 31 | -webkit-margin-before: 0; 32 | } 33 | 34 | h2 { 35 | font-size: 1.8em; 36 | font-weight: 300; 37 | margin: 5px 0; 38 | } 39 | 40 | h1, h2 { 41 | text-shadow: rgba(0, 0, 0, .2) 0 2px 3px; 42 | } 43 | 44 | a { 45 | color: white; 46 | } 47 | 48 | .container { 49 | background: linear-gradient(316deg, #ffdf79, #ed747f, #e371d4, #8d5993, #9771e3); 50 | background-size: 600% 600%; 51 | display: flex; 52 | align-items: center; 53 | flex-direction: column; 54 | height: 100%; 55 | justify-content: center; 56 | position: relative; 57 | 58 | -webkit-animation: gradientShift 18s ease infinite; 59 | -moz-animation: gradientShift 18s ease infinite; 60 | animation: gradientShift 18s ease infinite; 61 | } 62 | 63 | .header { 64 | max-width: 600px; 65 | } 66 | 67 | .icons { 68 | display: flex; 69 | align-items: flex-start; 70 | flex-wrap: wrap; 71 | justify-content: flex-start; 72 | } 73 | 74 | .icons svg { 75 | fill: #fff; 76 | -webkit-filter: drop-shadow(0px 2px 2px rgba(0,0,0,.1)); 77 | -moz-filter: drop-shadow(0px 2px 2px rgba(0,0,0,.1)); 78 | filter: drop-shadow(0px 2px 2px rgba(0,0,0,.1)); 79 | margin: 10px; 80 | width: 50px; 81 | 82 | -webkit-tap-highlight-color: rgba(255,255,255,.1); 83 | } 84 | 85 | .icons svg:hover { 86 | cursor: pointer; 87 | 88 | -ms-transform: translate(0px,-10px); 89 | -moz-transform: translate(0px,-10px); 90 | -webkit-transform: translate(0px,-10px); 91 | transform: translate(0px,-10px); 92 | -webkit-transition: transform .5s; 93 | transition: transform .5s; 94 | } 95 | 96 | .content { 97 | display: none; 98 | max-width: 600px; 99 | } 100 | 101 | @media(max-width: 768px) { 102 | h1 { 103 | font-size: 5em; 104 | } 105 | h2 { 106 | font-size: 1em; 107 | margin: 15px 0; 108 | } 109 | a { 110 | text-decoration: none; 111 | } 112 | .container { 113 | padding: 20px; 114 | text-align: center; 115 | } 116 | .content, .header { 117 | max-width: 100%; 118 | } 119 | .icons { 120 | justify-content: center; 121 | } 122 | .icons svg { 123 | width: 80px; 124 | } 125 | .icons svg:hover { 126 | transform: none; 127 | } 128 | } 129 | 130 | @media(max-width: 768px) { 131 | .ellipsis { 132 | display: none; 133 | } 134 | } 135 | 136 | /* animations */ 137 | @-webkit-keyframes gradientShift { 138 | 0%{background-position:24% 0;} 139 | 50%{background-position:77% 100%;} 140 | 100%{background-position:24% 0;} 141 | } 142 | @-moz-keyframes gradientShift { 143 | 0%{background-position:24% 0;} 144 | 50%{background-position:77% 100%;} 145 | 100%{background-position:24% 0;} 146 | } 147 | @keyframes gradientShift { 148 | 0%{background-position:24% 0;} 149 | 50%{background-position:77% 100%;} 150 | 100%{background-position:24% 0;} 151 | } 152 | -------------------------------------------------------------------------------- /css/popup.css: -------------------------------------------------------------------------------- 1 | .blur .content { 2 | display: block; 3 | position: absolute; 4 | top: -20px; 5 | left: 50%; 6 | height: 100%; 7 | 8 | letter-spacing: .05em; 9 | font-weight: 300; 10 | text-align: justify; 11 | transform: translate(-50%, 0%); 12 | white-space: pre-wrap; 13 | z-index: 100; 14 | 15 | -webkit-animation: fadeInFromNone 1s ease-out; 16 | -moz-animation: fadeInFromNone 1s ease-out; 17 | animation: fadeInFromNone 1s ease-out; 18 | } 19 | 20 | .blur .content .close { 21 | text-align: center; 22 | width: 100%; 23 | height: 60px; 24 | } 25 | 26 | .blur .content svg { 27 | fill: #fff; 28 | width: 60px; 29 | } 30 | 31 | .blur .content svg:hover { 32 | cursor: pointer; 33 | 34 | -webkit-animation: spin .5s linear; 35 | -moz-animation: spin .5s linear; 36 | animation: spin .5s linear; 37 | } 38 | 39 | .about { 40 | height: 70%; 41 | padding: 0 15px 0 0; 42 | overflow-y: auto; 43 | text-shadow: 1px 1px 1px rgba(0,0,0,.3); 44 | } 45 | 46 | .about a:hover { 47 | background-color: rgba(62,31,125,.2); 48 | } 49 | 50 | .about.shrink { 51 | -webkit-animation: shrink .5s ease-out; 52 | -moz-animation: shrink .5s ease-out; 53 | animation: shrink .5s ease-out; 54 | } 55 | 56 | .blur .header { 57 | z-index: 0; 58 | } 59 | 60 | .blur h1, .blur h2 { 61 | color: transparent; 62 | text-shadow: 0 0 40px rgba(255,255,255,.4); 63 | 64 | transition: text-shadow .5s; 65 | transition: color .5s; 66 | } 67 | 68 | .blur .icons svg { 69 | fill: rgba(255,255,255,.5); 70 | -webkit-filter: blur(20px); 71 | -moz-filter: blur(20px); 72 | filter: blur(20px); 73 | margin: 10px; 74 | width: 60px; 75 | 76 | transition: filter .5s; 77 | } 78 | 79 | /* custom scrollbar */ 80 | ::-webkit-scrollbar { 81 | width: 10px; 82 | background-color: rgba(62,31,125,0); 83 | -webkit-border-radius: 100px; 84 | } 85 | ::-webkit-scrollbar:hover { 86 | background-color: rgba(0,0,0,0.09); 87 | } 88 | ::-webkit-scrollbar-thumb:vertical { 89 | background: linear-gradient(316deg, rgba(62,31,125,.2), rgba(0,0,0,.2)); 90 | -webkit-border-radius: 100px; 91 | background-clip: padding-box; 92 | border: 2px solid rgba(0,0,0,0); 93 | min-height: 10px; 94 | } 95 | ::-webkit-scrollbar-thumb:vertical:active { 96 | background: rgba(62,31,125,0.3); 97 | -webkit-border-radius: 100px; 98 | } 99 | 100 | /* animations */ 101 | @-moz-keyframes shrink { 102 | 0% {height: 70%; opacity: 1;} 103 | 100% {height: 0; opacity: 0;} 104 | } 105 | @-webkit-keyframes shrink { 106 | 0% {height: 70%; opacity: 1;} 107 | 100% {height: 0; opacity: 0;} 108 | } 109 | @keyframes shrink { 110 | 0% {height: 70%; opacity: 1;} 111 | 100% {height: 0; opacity: 0;} 112 | } 113 | 114 | @-moz-keyframes spin { 115 | 100% {-moz-transform: rotate(90deg); transform:rotate(90deg);} 116 | } 117 | @-webkit-keyframes spin { 118 | 100% {-webkit-transform: rotate(90deg); transform:rotate(90deg);} 119 | } 120 | @keyframes spin { 121 | 100% {transform:rotate(90deg);} 122 | } 123 | 124 | @-webkit-keyframes fadeInFromNone { 125 | 0% {display: none; opacity: 0;} 126 | 1% {display: block; opacity: 0;} 127 | 100% {display: block;opacity: 1;} 128 | } 129 | @-moz-keyframes fadeInFromNone { 130 | 0% {display: none; opacity: 0;} 131 | 1% {display: block; opacity: 0;} 132 | 100% {display: block;opacity: 1;} 133 | } 134 | @keyframes fadeInFromNone { 135 | 0% {display: none; opacity: 0;} 136 | 1% {display: block; opacity: 0;} 137 | 100% {display: block;opacity: 1;} 138 | } 139 | -------------------------------------------------------------------------------- /favicons/android-chrome-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/android-chrome-144x144.png -------------------------------------------------------------------------------- /favicons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/android-chrome-192x192.png -------------------------------------------------------------------------------- /favicons/android-chrome-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/android-chrome-36x36.png -------------------------------------------------------------------------------- /favicons/android-chrome-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/android-chrome-48x48.png -------------------------------------------------------------------------------- /favicons/android-chrome-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/android-chrome-72x72.png -------------------------------------------------------------------------------- /favicons/android-chrome-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/android-chrome-96x96.png -------------------------------------------------------------------------------- /favicons/apple-touch-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/apple-touch-icon-114x114.png -------------------------------------------------------------------------------- /favicons/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /favicons/apple-touch-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/apple-touch-icon-144x144.png -------------------------------------------------------------------------------- /favicons/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /favicons/apple-touch-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/apple-touch-icon-180x180.png -------------------------------------------------------------------------------- /favicons/apple-touch-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/apple-touch-icon-57x57.png -------------------------------------------------------------------------------- /favicons/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /favicons/apple-touch-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/apple-touch-icon-72x72.png -------------------------------------------------------------------------------- /favicons/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /favicons/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/apple-touch-icon-precomposed.png -------------------------------------------------------------------------------- /favicons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/apple-touch-icon.png -------------------------------------------------------------------------------- /favicons/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | #da532c 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /favicons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/favicon-16x16.png -------------------------------------------------------------------------------- /favicons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/favicon-32x32.png -------------------------------------------------------------------------------- /favicons/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/favicon-96x96.png -------------------------------------------------------------------------------- /favicons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/favicon.ico -------------------------------------------------------------------------------- /favicons/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cassidoo.co", 3 | "icons": [ 4 | { 5 | "src": "\/favicons\/android-chrome-36x36.png", 6 | "sizes": "36x36", 7 | "type": "image\/png", 8 | "density": 0.75 9 | }, 10 | { 11 | "src": "\/favicons\/android-chrome-48x48.png", 12 | "sizes": "48x48", 13 | "type": "image\/png", 14 | "density": 1 15 | }, 16 | { 17 | "src": "\/favicons\/android-chrome-72x72.png", 18 | "sizes": "72x72", 19 | "type": "image\/png", 20 | "density": 1.5 21 | }, 22 | { 23 | "src": "\/favicons\/android-chrome-96x96.png", 24 | "sizes": "96x96", 25 | "type": "image\/png", 26 | "density": 2 27 | }, 28 | { 29 | "src": "\/favicons\/android-chrome-144x144.png", 30 | "sizes": "144x144", 31 | "type": "image\/png", 32 | "density": 3 33 | }, 34 | { 35 | "src": "\/favicons\/android-chrome-192x192.png", 36 | "sizes": "192x192", 37 | "type": "image\/png", 38 | "density": 4 39 | } 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /favicons/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/mstile-144x144.png -------------------------------------------------------------------------------- /favicons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/mstile-150x150.png -------------------------------------------------------------------------------- /favicons/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/mstile-310x150.png -------------------------------------------------------------------------------- /favicons/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/mstile-310x310.png -------------------------------------------------------------------------------- /favicons/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/favicons/mstile-70x70.png -------------------------------------------------------------------------------- /favicons/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | 10 | 12 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 20 | 21 | 22 | 28 | 32 | 36 | 41 | 42 | -------------------------------------------------------------------------------- /img/casssquare.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cassidoo/cassidoo-v4/80e34edb5cdc4b3cdda08b95275b907c2cc16ba6/img/casssquare.jpg -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Cassidy Williams 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 |
52 |
53 |

Cassidy Williams

54 |

Software Engineer & Developer Evangelist

55 | 79 |
80 |
81 |
82 | 83 |
84 |
85 |
86 |
87 |
88 |
89 |
Want to read more? Contact me or dig into the code yourself.
90 |
91 |
92 |
93 | 94 | 95 | -------------------------------------------------------------------------------- /js/content.js: -------------------------------------------------------------------------------- 1 | // build headers for requests 2 | function buildHeader() { 3 | var head = new Headers(); 4 | head.append('pragma', 'no-cache'); 5 | head.append('cache-control', 'no-cache'); 6 | 7 | var init = { 8 | method: 'GET', 9 | headers: head, 10 | }; 11 | return init; 12 | } 13 | 14 | // pull infomation about me 15 | function pullInfo() { 16 | return fetch('contents/info.json', buildHeader()).then(function(response) { 17 | return response.json(); 18 | }); 19 | } 20 | 21 | // get variable values for About section 22 | function infoVars() { 23 | var info = {}; 24 | 25 | pullInfo().then(function(r) { 26 | var x = r.data; 27 | info.title = x.title; 28 | info.company = x.companies.fulltime[0]; 29 | info.fulltime = x.companies.fulltime.slice(1); 30 | info.intern = x.companies.intern; 31 | info.city = x.city; 32 | info.school = x.school; 33 | info.grad = x.grad; 34 | info.major = x.major; 35 | info.hobbies = x.hobbies; 36 | }) 37 | .then(function() { 38 | intro(info); 39 | }); 40 | } 41 | 42 | // pull press links 43 | function pullPress() { 44 | return fetch('contents/press.json', buildHeader()).then(function(response) { 45 | return response.json(); 46 | }); 47 | } 48 | 49 | // first 5 press articles 50 | function pressVars() { 51 | var recent = []; 52 | 53 | pullPress().then(function(r) { 54 | for (var i = 0; i < 5; i++) { 55 | recent[i] = r.data[i]; 56 | } 57 | }) 58 | .then(function() { 59 | press(recent); 60 | }); 61 | } 62 | 63 | function formListString(arr) { 64 | if (arr.length > 1) { 65 | return arr.slice(0, -2).join(', ') + ', and ' + arr.slice(-1); 66 | } else { 67 | return arr; 68 | } 69 | } 70 | 71 | // generate info section 72 | function intro(info) { 73 | var content = document.getElementById('content'); 74 | var fulltime = formListString(info.fulltime); 75 | var intern = formListString(info.intern); 76 | 77 | console.log(info); 78 | 79 | content.innerHTML = `Hi, my name is Cassidy Williams (if you couldn't figure that out already) and I am a ${info.title} at ${info.company} in ${info.city}! 80 | 81 | I started my voyage into coding when I was an 8th grader in the suburbs of Chicago, and I've been loving it ever since. I'm primarily interested in front-end development, but hey, it's always fun to try other things too. You can see my projects on my GitHub profile. 82 | 83 | I joined ${info.company} in August 2015, where I'm working on building developer evangelism in the organization from the ground up. I'm also doing some front-end engineering work, as their first female engineer! At the hackathons we've attended so far, we're consistently one of the top APIs used (if not the top) every single time, which is very exciting. 84 | 85 | Previously, I was at ${fulltime}, and before that, I graduated from ${info.school} in ${info.grad} with my degree in ${info.major}. While there, I interned at ${intern}. Since moving to NYC, I've had the honor of working with various organizations, such as Hacker Fund as their Director of Outreach, and I've been included as one of Glamour Magazine's 35 Women Under 35 Who Are Changing the Tech Industry and LinkedIn's top 10 Professionals 35 & Under in Enterprise Tech. I've also had the pleasure of working with Microsoft on the Big Dream documentary and the U.S.A. Science and Engineering Festival with their Nifty Fifty program to encourage more students to participate in STEM. 86 | 87 | In addition to ${info.hobbies[Math.floor(Math.random()*info.hobbies.length)]}, one of my favorite things to do is help people be successful, whether it means mentoring them at a hackathon, editing their resume, or giving a talk. Check out my Getting a Gig guide or my blog to learn more about that. If you want. You don't have to. I'm not your mother. 88 | 89 | If you have any questions about me or you just want to send me a joke, take a look at any of my profiles listed on this site. If you want Clarifai to sponsor an event of yours, please email me at work. 90 | Thanks for reading this far. In exchange for your seemingly undying loyalty, here is a joke: Why are mountains so funny? Because they're hill areas.`; 91 | } 92 | 93 | // generate press section 94 | function press(articles) { 95 | var press = document.getElementById('press'); 96 | press.innerHTML = `
Recent news with me:
`; 101 | } 102 | 103 | // generate all content 104 | function generateContent() { 105 | infoVars(); 106 | pressVars(); 107 | } 108 | -------------------------------------------------------------------------------- /js/popup.js: -------------------------------------------------------------------------------- 1 | function popupToggle() { 2 | [].forEach.call(document.getElementsByClassName('container'), function(x) { 3 | if (!x.classList.contains('blur')) { 4 | generateContent(); 5 | } 6 | x.classList.toggle('blur'); 7 | }); 8 | } 9 | 10 | function closePopup() { 11 | var aboutClass = document.getElementById('about').classList; 12 | aboutClass.toggle('shrink'); 13 | window.setTimeout(function() { 14 | aboutClass.toggle('shrink'); 15 | popupToggle(); 16 | }, 500); 17 | } 18 | --------------------------------------------------------------------------------