diff --git a/src/index.md b/src/index.md index 8a60028..538a3f5 100644 --- a/src/index.md +++ b/src/index.md @@ -6,20 +6,18 @@ title: Home # {{ title }} Hello! I'm Kayce. Welcome to my website. I live in San Francisco. I'm married -to [Gabi](https://gabjoart.com). We have a little dog named Cheese. I work on -[Pigweed](https://pigweed.dev) and [Fuchsia](https://fuchsia.dev) as a -technical writer. +to [Gabi](https://gabjoart.com). We have a little dog named Cheese. + +## Work + +My career is technical writing. I've been doing it for more than 10 years now. +I currently work on [Pigweed](https://pigweed.dev). + +* [Portfolio](/portfolio/) ## Blog * [Proper Full Moon songs](/blog/moon/) * [You (maybe?) have thousands of ancestors from the 1600s](/blog/ancestors/) -* [Vim cheatsheet](/blog/vim/) * [Why I'm taking a sabbatical](/blog/sabbatical/) - -## Favorites - -My favorite... - -* [Words (and phrases)](/favorites/words/) -* [Lyrics](/favorites/lyrics/) +* [My favorite words](/favorites/words/) diff --git a/src/portfolio.md b/src/portfolio.md new file mode 100644 index 0000000..73f2765 --- /dev/null +++ b/src/portfolio.md @@ -0,0 +1,519 @@ +--- +layout: base.njk +title: Portfolio +--- + +# {{title}} + +This is a comprehensive, roughly chronological list of everything I've created as a technical +writer. + +

Talks

+ +* [Improving Response Rates](https://youtu.be/d_ZXFqG39hc). My lightning talk + from Write The Docs 2018 (Portland). I discuss using experimentation and + the scientific method to improve engagement on "was this page helpful?" + widgets. + +

Open source contributions

+ +

Docusaurus

+ +* [Clarified the usage of `slug`](https://github.com/facebook/docusaurus/pull/6926) + +

Corrily (August 2021)

+ +[corrilybefore]: https://drive.google.com/drive/folders/190k32-cnDdD054VjeTYPYU89i5JF9Cgu?usp=sharing + +I helped Corrily with their docs for a little less than 1 month. I worked 21 hours +per week. I also created a sample app for them. Here is how the docs looked +[before][corrilybefore] I worked with the team. + +* [Homepage](http://web.archive.org/web/20220215040848/https://docs.corrily.com/) + ([PDF](https://drive.google.com/file/d/1918XardFBOkTasTCAmQ6yEt3nIjQLANo/view?usp=sharing)) +* Basics + * [Quickstart guide](http://web.archive.org/web/20220215041000/https://docs.corrily.com/docs/quickstart-guide) + ([PDF](https://drive.google.com/file/d/17tI-Z9G__I30h8kdVlNl9WcXZdSG-BgC/view?usp=sharing)) + * [Setup](http://web.archive.org/web/20220215041326/https://docs.corrily.com/docs/setup) + ([PDF](https://drive.google.com/file/d/10vcQaC7HxlwMaifabNsrBTfXaDWYuDi4/view?usp=sharing)) +* Users + * [User IDs](http://web.archive.org/web/20220215041429/https://docs.corrily.com/docs/user-ids) + ([PDF](https://drive.google.com/file/d/1m1PQLNegWhVK5kWyBRxr1y0guJjQZWHB/view?usp=sharing)) + * [User characteristics](http://web.archive.org/web/20220215041508/https://docs.corrily.com/docs/user-characteristics) + ([PDF](https://drive.google.com/file/d/1RempdsNG1dQMDa2rLqrhruUFeyQSXC0A/view?usp=sharing)) +* Pricing + * [Price optimization overview](http://web.archive.org/web/20220215041553/https://docs.corrily.com/docs/price-optimization-overview) + ([PDF](https://drive.google.com/file/d/1OvIvdU__zSolrvAW3xjPl-7PMZbGrApt/view?usp=sharing)) + * [Pricing page integration guide](http://web.archive.org/web/20220215041807/https://docs.corrily.com/docs/pricing-page-integration-guide) + ([PDF](https://drive.google.com/file/d/1v1iN8j8znpMbD6jdFbUBfJLaDEyEg_e4/view?usp=sharing)) + * [Calculate price API examples](http://web.archive.org/web/20220215041643/https://docs.corrily.com/docs/calculate-price-api-examples) + ([PDF](https://drive.google.com/file/d/1pLuOexI2Rsv0R4AH5KNwl-_PI8Fnw5s3/view?usp=sharing)) +* Payment gateways + * [Payment gateway overview](http://web.archive.org/web/20220215041730/https://docs.corrily.com/docs/payment-gateway-overview) + ([PDF](https://drive.google.com/file/d/13p4BycHpHXjr-vIFj7ie6ztMEB7zk-El/view?usp=sharing)) + * [Payment gateway integration guide](http://web.archive.org/web/20220215041937/https://docs.corrily.com/docs/payment-gateway-integration-guide) + ([PDF](https://drive.google.com/file/d/1k2pmhsE7qFBeL1WqgVvaQjADlrqloTZ6/view?usp=sharing)) + * [Sample app guide](http://web.archive.org/web/20220215042020/https://docs.corrily.com/docs/sample-app-guide) + ([PDF](https://drive.google.com/file/d/16zJBPsgX7EQq-w_Vnaj6pEbrpf_k-Xto/view?usp=sharing)) + * [Sample app source code](https://github.com/kaycebasques/corrily) +* API reference + * [Calculate price](http://web.archive.org/web/20220215042730/https://docs.corrily.com/reference/calculate-price) + ([PDF](https://drive.google.com/file/d/1JMZSc4Waoocorgr08rvFs4OdwFsCNLkQ/view?usp=sharing)) + * [Calculate price response](https://drive.google.com/file/d/1NGTDwKy8Ytt9Sk5ikweX-HYcE3Cq7ym0/view?usp=sharing) + * [Set user characteristics](http://web.archive.org/web/20220215052230/https://docs.corrily.com/reference/set-user-characteristics) + ([PDF](https://drive.google.com/file/d/1PKonNJNqYXQ_04IktLnlbxIp7DMS4TW8/view?usp=sharing)) + * [Create subscription](http://web.archive.org/web/20220215052645/https://docs.corrily.com/reference/create-subscription) + ([PDF](https://drive.google.com/file/d/1-oEV1mJ1o8nsB_D5pFEF7SvSQocJvQ_x/view?usp=sharing)) + * [Get subscription](http://web.archive.org/web/20220215053029/https://docs.corrily.com/reference/get-subscription) + ([PDF](https://drive.google.com/file/d/1paQKYCb_zk9nv2ND3R-lDFwN6e890e4x/view?usp=sharing)) + * [Update subscription](http://web.archive.org/web/20220215053119/https://docs.corrily.com/reference/update-subscription) + ([PDF](https://drive.google.com/file/d/1VJV7tzfH5MdIw8gFlVBSjGKZQGK2rRVG/view?usp=sharing)) + * [Delete subscription](http://web.archive.org/web/20220215053540/https://docs.corrily.com/reference/delete-subscription) + ([PDF](https://drive.google.com/file/d/1p349WM57VnpGq2HxnVVQBZRSB3MBVi-Q/view?usp=sharing)) + * [Create charge](http://web.archive.org/web/20220215053647/https://docs.corrily.com/reference/create-charge) + ([PDF](https://drive.google.com/file/d/1-RrF4gnGYaFVRw7S0icsKLrj0PS_zX1R/view?usp=sharing)) + * [Get charge](http://web.archive.org/web/20220215053734/https://docs.corrily.com/reference/get-charge) + ([PDF](https://drive.google.com/file/d/1fXcoE1Z0qCH8GY9GpCYQkBM9W8b8Tr_9/view?usp=sharing)) + * [Update charge](http://web.archive.org/web/20220215053859/https://docs.corrily.com/reference/update-charge) + ([PDF](https://drive.google.com/file/d/1aeGpFnB4Hxr3jiZWGyNS96XHLPU7HWGb/view?usp=sharing)) + * [Delete charge](http://web.archive.org/web/20220215053934/https://docs.corrily.com/reference/delete-charge) + ([PDF](https://drive.google.com/file/d/14NmnVE7PA9psxH1vzehZx70D_UzNFXy_/view?usp=sharing)) + +

Google (2015 to 2021)

+ +

Tools

+ +* [docs-migration-tool](https://github.com/kaycebasques/docs-migration-tool). + A tool that I wrote to automate most of the migration from the old + developer.chrome.com site to the new one. The old site used templated HTML, + whereas we wanted Markdown on the new one. I used Puppeteer to scrape the + old site's HTML content and convert it to Markdown. The tool also did + lots of normalization transformations on the content. +* [chrome-devrel-review-bot](https://github.com/GoogleChromeLabs/chrome-devrel-review-bot). + A GitHub bot that did automated content quality reviews on https://web.dev + pull requests. + +

Push notifications

+ +Note: I was the sole author on the latest iteration of these documents. +If you see 2 or more authors, it means I based the content off of earlier +work that other people had created. + +* [Overview](https://web.dev/push-notifications-overview/) + ([PDF](https://drive.google.com/file/d/1y11BEQ1XHMlYhsA5YADPEYTlv-gR9IU6/view?usp=sharing)) +* [Codelab: Build a push notification server](https://web.dev/push-notifications-server-codelab/) + ([PDF](https://drive.google.com/file/d/1GsEcquutN-ZCrT4Hfg513z_EcOj9JAJZ/view?usp=sharing)) + * [Example application source code](https://glitch.com/edit/#!/push-notifications-client-codelab-complete) +* [Codelab: Build a push notification client](https://web.dev/push-notifications-client-codelab/) + ([PDF](https://drive.google.com/file/d/19F-cb4A5bmXIhCZllMNsTQ70Iigg0cpu/view?usp=sharing)) + * [Example application source code](https://glitch.com/edit/#!/push-notifications-server-codelab-complete) + +

Chrome DevTools

+ +Overviews: + +* [Homepage](https://developers.google.com/web/tools/chrome-devtools/) + ([PDF](https://drive.google.com/open?id=1R81GvwWAT8YI9-gt1QsouqtC_rKp3z4I)) +* [Sources Panel Overview](https://developers.google.com/web/tools/chrome-devtools/sources) + ([PDF](https://drive.google.com/open?id=1DM7tB6yIsvPzpcdRGKwNTaXNyWdpml5X)) + +Tutorials: + +* [Console Tutorial](https://developers.google.com/web/tools/chrome-devtools/console/get-started) + ([PDF](https://drive.google.com/open?id=1ar_luoCdGmAW1xLChemWAJSzw3u5jLu4)) +* [Workspaces Tutorial](https://developers.google.com/web/tools/chrome-devtools/workspaces/) + ([PDF](https://drive.google.com/open?id=14K9h6zT5_TUEkbhJLyg5O5U3v06dK6AY)) +* [Network Tutorial](https://developers.google.com/web/tools/chrome-devtools/network/) + ([PDF](https://drive.google.com/open?id=1JrPfy1CPWmwYAkSL4D3gZAOyIRK3NMh3)) +* [JavaScript Debugging Tutorial](https://developers.google.com/web/tools/chrome-devtools/javascript/) + ([PDF](https://drive.google.com/open?id=11Z_zKIvpCwbo1nR8vYe4pMqRMu6tNimp)) + * [Video](https://youtu.be/H0XScE08hy8) +* [Page Load Optimization Tutorial](https://developers.google.com/web/tools/chrome-devtools/speed/get-started) + ([PDF](https://drive.google.com/open?id=1KOuKLDHRpEzCgt4v9Oy127U4cDcIfdTT)) +* [Get Started With Analyzing Runtime Performance](https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/) + ([PDF](https://drive.google.com/open?id=1lFigToZxH70-CietwDoxnNULFqfNzK4X)) +* [CSS Tutorial](https://developers.google.com/web/tools/chrome-devtools/css/) + ([PDF](https://drive.google.com/open?id=1jppvggX8It1wSji2kD8dae38rJFM4HaQ)) + +Guides: + +* [Using DevTools Features Without Opening DevTools](https://developers.google.com/web/updates/2018/01/devtools-without-devtools) + ([PDF](https://drive.google.com/open?id=1jnOdmWEECF9zhUX_Z0VCoeMze9eh7qdf)) +* [Override The User Agent String](https://developers.google.com/web/tools/chrome-devtools/device-mode/override-user-agent) + ([PDF](https://drive.google.com/open?id=17qRDNAqsyKtvQt6v_ghfHDP8gZOIo-Sn)) +* [Track Which Element Has Focus](https://developers.google.com/web/tools/chrome-devtools/accessibility/focus) + ([PDF](https://drive.google.com/open?id=1BvEOhDHyjFZCu9hSrJorLraHsX7V2KEs)) +* [Simulate Mobile Devices](https://developers.google.com/web/tools/chrome-devtools/device-mode/) + ([PDF](https://drive.google.com/open?id=12gx6hn5S1-ehJ2oBKI5PbjUbe9XOUdrX)) +* [Remote Debug Android Devices](https://developers.google.com/web/tools/chrome-devtools/javascript/reference) + ([PDF](https://drive.google.com/open?id=1ABashLW83ePbaMJY4ZM23iZlc3IbkKCx)) +* [Simulate Device Orientation](https://developers.google.com/web/tools/chrome-devtools/device-mode/orientation) + ([PDF](https://drive.google.com/open?id=1mzQ-VCoW7-DVNQJfEKGwy1YA3RPoxt5J) +* [Override Geolocation](https://developers.google.com/web/tools/chrome-devtools/device-mode/geolocation) + ([PDF](https://drive.google.com/open?id=1yt0mO9ncSYfUPcEyddBdcGj9W4vWKL_Y)) +* [Run Snippets](https://developers.google.com/web/tools/chrome-devtools/snippets) + ([PDF](https://drive.google.com/open?id=1Snd8xaS_lcXFRsNzEuWswpXPLPp_LPnG)) +* [Breakpoints Guide](https://developers.google.com/web/tools/chrome-devtools/javascript/breakpoints) + ([PDF](https://drive.google.com/open?id=1Nnww0xyStk3iTieQXmNseV8BB50udB5V)) +* [Blackbox Chrome Extension Scripts](https://developers.google.com/web/tools/chrome-devtools/javascript/guides/blackbox-chrome-extension-scripts) + ([PDF](https://drive.google.com/open?id=1887JgobFHI3fMP-HfJR_jVjWrLkRpGC0)) +* [Disable JavaScript With Chrome DevTools](https://developers.google.com/web/tools/chrome-devtools/javascript/disable) + ([PDF](https://drive.google.com/open?id=1yfOq0Hqp6RdLQGnajMUi5o8Lm9h0axF-)) +* [Force Print Preview Mode](https://developers.google.com/web/tools/chrome-devtools/css/print-preview) + ([PDF](https://drive.google.com/open?id=14cDHkklijOBCtpERe2DRTot0f9lG8N6j)) + +References: + +* [Keyboard Shortcuts Reference](https://developers.google.com/web/tools/chrome-devtools/shortcuts) + ([PDF](https://drive.google.com/open?id=1cWnhi8NWVMy7weuFCvC4ie9eyHzBzeII)) +* [Accessibility Reference](https://developers.google.com/web/tools/chrome-devtools/accessibility/reference) + ([PDF](https://drive.google.com/open?id=1trGT-8yp5sGToQ4M2z476yjctSyeWoYk)) +* [JavaScript Debugging Reference](https://developers.google.com/web/tools/chrome-devtools/javascript/reference) + ([PDF](https://drive.google.com/open?id=1ppmSf81Wjefj1RQOGlSDKnQhyusYyN1k)) +* [Performance Analysis Reference](https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/reference) + ([PDF](https://drive.google.com/open?id=1jrJuqWfpQLvraiDXY5o0CuND7I74qWO6)) +* [CSS Reference](https://developers.google.com/web/tools/chrome-devtools/css/reference) + ([PDF](https://drive.google.com/open?id=1zz2UpFLe8RZn2YOeWsyHXPEO1QezI87T)) + +Release Notes: + +* [Chrome 80](https://developers.google.com/web/updates/2019/12/devtools) + ([PDF](https://drive.google.com/open?id=1PzrEGYZCMTifnwcQWSWHl3Y3pzQNfs6t)) +* [Chrome 79](https://developers.google.com/web/updates/2019/10/devtools) + ([PDF](https://drive.google.com/open?id=16joZvEbqWy_QfVMonGLfb-Eb49OnuZ5X), [Video](https://youtu.be/kobvF5cs6xY)) +* [Chrome 78](https://developers.google.com/web/updates/2019/09/devtools) + ([PDF](https://drive.google.com/open?id=1nBgwShipPbbI1AfF2g4LB14AQl_PGHEr), [Video](https://youtu.be/VNkctDLYP6o)) +* [Chrome 77](https://developers.google.com/web/updates/2019/07/devtools) + ([PDF](https://drive.google.com/open?id=1fD71MKtEGW1HLIcnpy5bt88Lf8b8u2SA), [Video](https://youtu.be/R8KzoMoKhnM)) +* [Chrome 76](https://developers.google.com/web/updates/2019/05/devtools) + ([PDF](https://drive.google.com/open?id=1jMtPIQ2MAii9EbZ9SYPr2NbL0uyJyVZ9), [Video](https://youtu.be/GLUB2yzk0ZQ)) +* [Chrome 75](https://developers.google.com/web/updates/2019/04/devtools) + ([PDF](https://drive.google.com/open?id=1XOVOffzjA3bTGM_Rbn9UlZkUvrEpGwQE), [Video](https://youtu.be/6zKPwOMFsa4)) +* [Chrome 74](https://developers.google.com/web/updates/2019/03/devtools) + ([PDF](https://drive.google.com/open?id=16F68a5mGmZ459BTV-ymUZEmkkz8jWEqH), [Video](https://youtu.be/I14fXc7sXdU)) +* [Chrome 73](https://developers.google.com/web/updates/2019/01/devtools) + ([PDF](https://drive.google.com/open?id=1VQxzO1RXwcfLl8l9GWl-TfQdUJBkbMYr), [Video](https://youtu.be/uddZX9ZK6wY)) +* [Chrome 72](https://developers.google.com/web/updates/2018/11/devtools) + ([PDF](https://drive.google.com/open?id=11eu3lsqVKOxBffBaDGjqviYyVXjbyFWQ), [Video](https://youtu.be/XVJxlEdB230)) +* [Chrome 71](https://developers.google.com/web/updates/2018/10/devtools) + ([PDF](https://drive.google.com/open?id=12U3142-39bOFz_BQz7bhMH7IH2u0ADcg), [Video](https://youtu.be/fJxFZO8OEEs)) +* [Chrome 70](https://developers.google.com/web/updates/2018/08/devtools) + ([PDF](https://drive.google.com/open?id=1hZTiqjXv8mTDoMNx_UjywoqLYz3T1ntd), [Video](https://youtu.be/LJq8vg8ktdQ)) +* [Chrome 68](https://developers.google.com/web/updates/2018/05/devtools) + ([PDF](https://drive.google.com/open?id=1EzoyXWwrZZIf_A7sccEGRGfhe94Tj9dG), [Video](https://youtu.be/br4JZ5qz_20)) +* [Chrome 67](https://developers.google.com/web/updates/2018/04/devtools) + ([PDF](https://drive.google.com/open?id=16uvdTklspIOqwoLCOUL2AI0XTHKyqHTJ), [Video](https://youtu.be/4EdPq9Nw6uI)) +* [Chrome 66](https://developers.google.com/web/updates/2018/02/devtools) + ([PDF](https://drive.google.com/open?id=141u__9FBBMuPq5ZiDA6UqkUTjF-wAoY7), [Video](https://youtu.be/eaYXFTJVewA)) +* [Chrome 65](https://developers.google.com/web/updates/2018/01/devtools) + ([PDF](https://drive.google.com/open?id=1sWhQmnKsaC1r5VpFVmslv4nTPn9A0hsR), [Video](https://youtu.be/D1pV7ermy6w)) +* [Chrome 64](https://developers.google.com/web/updates/2017/11/devtools-release-notes) + ([PDF](https://drive.google.com/open?id=1BT4kSCjTc7wTN5rcNRGpH2mhE5wT6l6g), [Video](https://youtu.be/90wNAn05Cf4)) +* [Chrome 63](https://developers.google.com/web/updates/2017/10/devtools-release-notes) + ([PDF](https://drive.google.com/open?id=1pFHFkWI7LTj1ltfiN5soFbHSHrUESJRC), [Video](https://youtu.be/Eyw_mwbABIQ)) +* [Chrome 62](https://developers.google.com/web/updates/2017/08/devtools-release-notes) + ([PDF](https://drive.google.com/open?id=1jPzeSP6le5qk9NyFe-iHgRprNeaQ-Mlg), [Video](https://youtu.be/eD4fiqjaxHw)) +* [Chrome 61](https://developers.google.com/web/updates/2017/07/devtools-release-notes) + ([PDF](https://drive.google.com/open?id=1Z8KuFwx_s_ZmDPHIQIAK-WRX9yNMl0Jh), [Video](https://youtu.be/Lscb4SL58X4)) +* [Chrome 60](https://developers.google.com/web/updates/2017/05/devtools-release-notes) + ([PDF](https://drive.google.com/open?id=1OO-XWvHXSGNswf7_bwEv17Ks0s8Mjmg0), [Video](https://youtu.be/Qnmb2YhkQmQ)) +* [Chrome 59](https://developers.google.com/web/updates/2017/04/devtools-release-notes) + ([PDF](https://drive.google.com/open?id=1udgL98NFbiPdq2srE03ki6qUFwSdhC5T), [Video](https://youtu.be/4mx1m7UbBR0)) +* [Chrome 58](https://developers.google.com/web/updates/2017/03/devtools-release-notes) + ([PDF](https://drive.google.com/open?id=1NvicyVyAqUFlojh3oS2fOQUYLdCA0EyZ)) + +

Workbox

+ +* [Workfox For NPM Scripts Tutorial](https://developers.google.com/web/tools/workbox/guides/codelabs/npm-script) + ([PDF](https://drive.google.com/open?id=1YW_VjqsUznsBzz6C1bInJ8JBwESap_8E)) +* [Workbox For Webpack Tutorial](https://developers.google.com/web/tools/workbox/guides/codelabs/webpack) + ([PDF](https://drive.google.com/open?id=1m8V1f9PCe5SdLo3MEzL5izM_qfIctrsw)) +* [Workbox For Gulp Tutorial](https://developers.google.com/web/tools/workbox/guides/codelabs/gulp) + ([PDF](https://drive.google.com/open?id=18oG5KFRW_CjkbQjfUQNiAP-56HxCrMpa)) + +

Security

+ +* [Why HTTPS Matters](https://developers.google.com/web/fundamentals/security/encrypt-in-transit/why-https) + ([PDF](https://drive.google.com/open?id=1LpOZi81vA-UptUDUELpK9iOMdd7IJ9rE)) + +

Lighthouse

+ +* [Critical Request Chains](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains) + ([PDF](https://drive.google.com/open?id=1zkQNI-KaJQoSw_jkiNyrHviyqesq0es7)) +* [Defer Unused CSS](https://developers.google.com/web/tools/lighthouse/audits/unused-css) + ([PDF](https://drive.google.com/open?id=1fwmJSrfH5Z8ujPBzJx_zddU0bQvfFk1J)) +* [Enable Text Compression](https://developers.google.com/web/tools/lighthouse/audits/text-compression) + ([PDF](https://drive.google.com/open?id=1SbvmawemhNJWkFOoPENi5y3jiNuHhkws)) +* [Estimated Input Latency](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency) + ([PDF](https://drive.google.com/open?id=1VyG9xFjFveGtN9LAj-kCxVNRYQwbmDZU)) +* [First Contentful Paint](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint) + ([PDF](https://drive.google.com/open?id=1PH1-uu3VmCq0fuS-gakLqvE500OtqszO)) +* [First CPU Idle](https://developers.google.com/web/tools/lighthouse/audits/first-cpu-idle) + ([PDF](https://drive.google.com/open?id=1Iah03q3kUFnzaFgPKdfl6fIIw3zKyDa6)) +* [First Meaningful Paint](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint) + ([PDF](https://drive.google.com/open?id=1aFmMcSWoQga9wNlc9gXCd5r98CUpE0ct)) +* [Avoids Enormous Network Payloads](https://developers.google.com/web/tools/lighthouse/audits/network-payloads) + ([PDF](https://drive.google.com/open?id=1V65wkr_BPrYbBiwwj2FXj9LpiW2aBgnM)) +* [Has Multiple Page Redirects](https://developers.google.com/web/tools/lighthouse/audits/redirects) + ([PDF](https://drive.google.com/open?id=1ElMUc3Pa5IpXnT6Y8ZgkRw-a1041ERA_)) +* [JavaScript Bootup Time Is Too High](https://developers.google.com/web/tools/lighthouse/audits/bootup) + ([PDF](https://drive.google.com/open?id=1qTg81lZBL8NIwwZs7BZM51UvbwhHu41J)) +* [Keep Server Response Times Low](https://developers.google.com/web/tools/lighthouse/audits/ttfb) + ([PDF](https://drive.google.com/open?id=1hfixZM2okAL9AEre8vjQZ_Fj_ovOvGEB)) +* [Minify CSS](https://developers.google.com/web/tools/lighthouse/audits/minify-css) + ([PDF](https://drive.google.com/open?id=1LUXDCFWibW5flZhgKBXo3RM2s-lRDWU4)) +* [Offscreen Images](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images) + ([PDF](https://drive.google.com/open?id=1YKxXW1Ha97bJ43wvIwM7Sao4Fp-N5vqo)) +* [Optimize Images](https://developers.google.com/web/tools/lighthouse/audits/optimize-images) + ([PDF](https://drive.google.com/open?id=1z4OB-SmdmPl6arC8HyoYS9VAomXa6-f_)) +* [Properly Size Images](https://developers.google.com/web/tools/lighthouse/audits/oversized-images) + ([PDF](https://drive.google.com/open?id=11a-ewk9Hl4BDFURNKc7Wb16OP4k92LiQ)) +* [Speed Index](https://developers.google.com/web/tools/lighthouse/audits/speed-index) + ([PDF](https://drive.google.com/open?id=1nswwe4dMXiSI00-X_2kuD_0ROugM_LOB)) +* [Preload Key Requests](https://developers.google.com/web/tools/lighthouse/audits/preload) + ([PDF](https://drive.google.com/open?id=1eyJ9eLF6iIKcIZKp1EIA6vUsemO7YqoT)) +* [Serve Images In Next-Gen Formats](https://developers.google.com/web/tools/lighthouse/audits/webp) + ([PDF](https://drive.google.com/open?id=1HxsX5ojNdwTUPekxwCJtNAUBtYSzSqYk)) +* [Time To Interactive](https://developers.google.com/web/tools/lighthouse/audits/time-to-interactive) + ([PDF](https://drive.google.com/open?id=1Lfb20mnQejp1qeUQOk30kj5nViTox4PM)) +* [Optimize Images](https://developers.google.com/web/tools/lighthouse/audits/optimize-images) + ([PDF](https://drive.google.com/open?id=1z4OB-SmdmPl6arC8HyoYS9VAomXa6-f_)) +* [User Timing Marks And Measures](https://developers.google.com/web/tools/lighthouse/audits/user-timing) + ([PDF](https://drive.google.com/open?id=1bnVK77K6pYqU3CyTpPicIPUd9cUt5nLi)) +* [Excessive DOM Size](https://developers.google.com/web/tools/lighthouse/audits/dom-size) + ([PDF](https://drive.google.com/open?id=1SmRrCvqYMQuQ2laMtL_i5o0U529SkmjZ)) +* [Cache Policy](https://developers.google.com/web/tools/lighthouse/audits/cache-policy) + ([PDF](https://drive.google.com/open?id=1HdIYAUNp3exDwIou7oElSNu0Op29SnFg)) +* [Address Bar Matches Brand Colors](https://developers.google.com/web/tools/lighthouse/audits/address-bar) + ([PDF](https://drive.google.com/open?id=1bA7epztkvPtIfumNqol0cmMHzzckIqgb)) +* [Contains Content When JavaScript Is Not Available](https://developers.google.com/web/tools/lighthouse/audits/no-js) + ([PDF](https://drive.google.com/open?id=1GxfrO1ViYBs0ORxSkZtQDy1ZnrswjQvJ)) +* [Has A Viewport Meta Tag](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag) + ([PDF](https://drive.google.com/open?id=1ol4aaigBVshtE7i5XB8kL8jlyQjnkvbj)) +* [Page Load Is Fast Enough On Mobile](https://developers.google.com/web/tools/lighthouse/audits/fast-3g) + ([PDF](https://drive.google.com/open?id=1eKlwlJS1n4_U8mlrmaKYmjqIBBtR4XW-)) +* [Redirects HTTP Traffic To HTTPS](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https) + ([PDF](https://drive.google.com/open?id=10obQhwUQVpshmZwtZLssiEJ8nDBTxrpZ)) +* [Uses HTTPS](https://developers.google.com/web/tools/lighthouse/audits/https) + ([PDF](https://drive.google.com/open?id=1pQH9vn_XsBWLtg89K-buUL2HN7k2xlf7)) +* [Avoids Application Cache](https://developers.google.com/web/tools/lighthouse/audits/appcache) + ([PDF](https://drive.google.com/open?id=1XJt5XddjB8Q4zJ14jWRQvWry4z6uSWtq)) +* [Avoids console.time()](https://developers.google.com/web/tools/lighthouse/audits/console-time) + ([PDF](https://drive.google.com/open?id=1LryW5L8jfCBLevz7ZSSp924wZ5ouZ4xA)) +* [Avoids Date.now()](https://developers.google.com/web/tools/lighthouse/audits/date-now) + ([PDF](https://drive.google.com/open?id=1QctGS3WiRfLZZPYdjXdlQcHGade71Evx)) +* [Avoids document.write()](https://developers.google.com/web/tools/lighthouse/audits/document-write) + ([PDF](https://drive.google.com/open?id=1loHaew_SxkdRjWJ4hQx7-VnQ3I9KIRVw)) +* [Avoids Mutation Events](https://developers.google.com/web/tools/lighthouse/audits/mutation-events) + ([PDF](https://drive.google.com/open?id=1KDRXGW_NT6gC34v073t8zxJQPwOQyaiq)) +* [Avoids Old CSS Flexbox](https://developers.google.com/web/tools/lighthouse/audits/old-flexbox) + ([PDF](https://drive.google.com/open?id=1oDShYgv7pKVRv3w30HsOetID_emxZQh1)) +* [Avoids Requesting Geolocation Permissions On Page Load](https://developers.google.com/web/tools/lighthouse/audits/geolocation-on-load) + ([PDF](https://drive.google.com/open?id=1q7_FL3cbsTilQj3A-zbYLm8MO-NclwYl)) +* [Avoids Requesting Notification Permissions On Page Load](https://developers.google.com/web/tools/lighthouse/audits/notifications-on-load) + ([PDF](https://drive.google.com/open?id=1FnZH72wey-JhehbpaLOos8Pl32ByBtKD)) +* [Displays Images With Incorrect Aspect Ratios](https://developers.google.com/web/tools/lighthouse/audits/aspect-ratio) + ([PDF](https://drive.google.com/open?id=1E-jnJwaYVFZFkf14HWMXPEvF2U0t7ATC)) +* [Includes Libraries With Known Vulnerabilities](https://developers.google.com/web/tools/lighthouse/audits/vulnerabilities) + ([PDF](https://drive.google.com/open?id=1zQfh739_L6jN2s-_uEvfU62r9WgNAteo)) +* [Links To Cross-Origin Destinations Are Unsafe](https://developers.google.com/web/tools/lighthouse/audits/noopener) + ([PDF](https://drive.google.com/open?id=1A9VPPnFvzJHQqNccqEPMvpXPACTHp7Pf)) +* [Prevents Users From Pasting Into Password Fields](https://developers.google.com/web/tools/lighthouse/audits/password-pasting) + ([PDF](https://drive.google.com/open?id=1xBW4Z6a8M9ws1XMfDrzxFmTlLEbSGxXU)) +* [Some Insecure Resources Can Be Upgraded To HTTPS](https://developers.google.com/web/tools/lighthouse/audits/mixed-content) + ([PDF](https://drive.google.com/open?id=1Aiit1SKRjB1pStwSx03MzdyLoe0wmzg3)) +* [Uses HTTP/2](https://developers.google.com/web/tools/lighthouse/audits/http2) + ([PDF](https://drive.google.com/open?id=1KX_c2GHDS7UcxInnMzCBxNrvYmG5Xr1j)) +* [Uses Passive Event Listeners](https://developers.google.com/web/tools/lighthouse/audits/passive-event-listeners) + ([PDF](https://drive.google.com/open?id=1Gr8BCJapuFe2Gw3G6NwSmiajlm_tGmf9)) +* [Document Does Not Have A Meta Description](https://developers.google.com/web/tools/lighthouse/audits/description) + ([PDF](https://drive.google.com/open?id=1xQcL7l7ymyaWhpJCXIkmPKURJF9XMdA-)) +* [Document Doesn't Have A Title Element](https://developers.google.com/web/tools/lighthouse/audits/title) + ([PDF](https://drive.google.com/open?id=19ZXkJkpeIQpelj9d_YtBMZWWFH3p8oW3)) +* [Document Doesn't Have A Valid hreflang](https://developers.google.com/web/tools/lighthouse/audits/hreflang) + ([PDF](https://drive.google.com/open?id=12eHUutuIg3tOyrFa9rOCZWI7eqpGj6Oi)) +* [Document Doesn't Have A Valid rel=canonical](https://developers.google.com/web/tools/lighthouse/audits/canonical) + ([PDF](https://drive.google.com/open?id=1QoscYDqu_pCja_9nCCCIDQl_9TkMG5GX)) +* [Document Doesn't Use Legible Font Sizes](https://developers.google.com/web/tools/lighthouse/audits/font-sizes) + ([PDF](https://drive.google.com/open?id=1qBEjG9etqyJxOq13tE7vpbtLcMdi-PWR)) +* [Document Uses Plugins](https://developers.google.com/web/tools/lighthouse/audits/plugins) + ([PDF](https://drive.google.com/open?id=1AYVKf7mwSMv7D8UgR1UGa96L5fEVsRmj)) +* [Links Do Not Have Descriptive Text](https://developers.google.com/web/tools/lighthouse/audits/descriptive-link-text) + ([PDF](https://drive.google.com/open?id=1Dg7obsH7WmDzszZGwoj8xadomzMQXjrr)) +* [Page Is Blocked From Indexing](https://developers.google.com/web/tools/lighthouse/audits/indexing) + ([PDF](https://drive.google.com/open?id=1rUu8uAN_UggBgbBCUWmfeqrsjAonnaqo)) +* [robots.txt Is Not Valid](https://developers.google.com/web/tools/lighthouse/audits/robots) + ([PDF](https://drive.google.com/open?id=1Oq9BDd_GlnXszfRJRJanDQS_fRU6-onj)) +* [Tap Targets Are Not Sized Appropriately](https://developers.google.com/web/tools/lighthouse/audits/tap-targets) + ([PDF](https://drive.google.com/open?id=1edJzohW6pB4wI3D4WOm7Gwfq4AxBaNNp)) + +

Quantified Code (2014)

+ +Quantified Code was a Berlin-based startup. Their main product was an automated code analysis tool for +Python codebases. I wrote over 100 guides for their companion site, [The Little Book Of +Python Anti-Patterns](https://docs.quantifiedcode.com/python-anti-patterns/). The purpose of the +companion site was to share their knowledge of Python best practices while also driving +traffic to their automated product. E.g. their sales pitch was "rather than trying to remember all +of these best practices, we have an automated tool that can do it for you." Subject matter experts at +Quantified Code gave me a list of topics to write about. If I recall correctly, each topic only had a +one-line description. I researched and drafted each guide myself. The subject matter +experts reviewed my guides. + +
+ We were completely happy with Kayce's work. He was a great, professional communicator and he knows how 
+            to manage and deliver projects. He wrote about 100 technical articles for us. Especially, as the 
+            programming language he was writing about, was new to him, we were impressed by the quality and the 
+            thoroughness of his investigations. Also, Kayce should flexibility when we were busy and had to pause the 
+            assignment for a bit. Fully recommended. Happy to work with him again. +
+ Figure 1. The review that the Quantified Code people left me. +
+
+ +Note that the list below is not complete. It looks like some of the guides were deleted over time. +See [my commit history](https://github.com/quantifiedcode/python-anti-patterns/search?q=committer%3Akaycebasques&type=Commits) +for the full list of contributions. + +* [Method has no argument](https://docs.quantifiedcode.com/python-anti-patterns/correctness/method_has_no_argument.html) + ([PDF](https://drive.google.com/open?id=1Nfg-Eqsu1O7YYG_3i6uxVipW9JCua9qD)) +* [Explicit return in \_\_init\_\_](https://docs.quantifiedcode.com/python-anti-patterns/correctness/explicit_return_in_init.html) + ([PDF](https://drive.google.com/open?id=1UWA1yNuuX7YBurf9o3DtnTD-5vL2Jv25)) +* [Method could be a function](https://docs.quantifiedcode.com/python-anti-patterns/correctness/method_could_be_a_function.html) + ([PDF](https://drive.google.com/open?id=1UIz2gMHNeA6wkpdSDKFqGAYZLx3N9dIN)) +* [\_\_exit\_\_ must accept 3 arguments](https://docs.quantifiedcode.com/python-anti-patterns/correctness/exit_must_accept_three_arguments.html) + ([PDF](https://drive.google.com/open?id=1JgWBhH4Lblc9AehEQbp-3c9EdwPH9vOW)) +* [Use of exec](https://docs.quantifiedcode.com/python-anti-patterns/security/use_of_exec.html) + ([PDF](https://drive.google.com/open?id=1_0iRvuMTPMNxsT6RPo6un7DuZsq5HdL6)) +* [Using the global statement](https://docs.quantifiedcode.com/python-anti-patterns/maintainability/using_the_global_statement.html) + ([PDF](https://drive.google.com/open?id=1dZ-t5As43zFmZkBvohYkuDPfJMqfoOL9) +* [Indentation contains mixed spaces and tabs](https://docs.quantifiedcode.com/python-anti-patterns/correctness/indentation_contains_mixed_spaces_and_tabs.html) + ([PDF](https://drive.google.com/open?id=1taBBpGCFxgxH3EscyVJvsYhpZxJweTZN)) +* [Comparison to none](https://docs.quantifiedcode.com/python-anti-patterns/readability/comparison_to_none.html) + ([PDF](https://drive.google.com/open?id=1HDdEq7JjaqauS19Awy94hKvvckP8AyWc)) +* [Comparison to true](https://docs.quantifiedcode.com/python-anti-patterns/readability/comparison_to_true.html) + ([PDF](https://drive.google.com/open?id=1MmYXDk4g71zD2nVy2AM3UfTCo4RaGWRj)) +* [Test for object identity should be is not](https://docs.quantifiedcode.com/python-anti-patterns/readability/test_for_object_identity_should_be_is_not.html) + ([PDF](https://drive.google.com/open?id=1XrIAheqnIxndqf9FYHMrw-iMIgaQJjhU)) +* [Do not compare types, use isinstance](https://docs.quantifiedcode.com/python-anti-patterns/readability/do_not_compare_types_use_isinstance.html) + ([PDF](https://drive.google.com/open?id=1daZqZEDJzU6bUNhzikU0pppw__Y4pO18)) +* [Indentation contains tabs](https://docs.quantifiedcode.com/python-anti-patterns/correctness/indentation_contains_tabs.html) + ([PDF](https://drive.google.com/open?id=1v8YVwik6ogd2Ra3uTZiUNW7wVlVBcnAm)) +* [Assigning lambda to a variable](https://docs.quantifiedcode.com/python-anti-patterns/correctness/assigning_a_lambda_to_a_variable.html) + ([PDF](https://drive.google.com/open?id=1Jyzf5XkdM0F9G9UfwdOKvjViAD-ROKSE)) +* [Using wildcard imports](https://docs.quantifiedcode.com/python-anti-patterns/maintainability/from_module_import_all_used.html) + ([PDF](https://drive.google.com/open?id=1pJKbIQqdwqD2AosQMlkSHH-usDTE0_Q-)) +* [Future import is not the first statement](https://docs.quantifiedcode.com/python-anti-patterns/correctness/future_import_is_not_the_first_statement.html) + ([PDF](https://drive.google.com/open?id=1sjkEcNvrwVcmuw5yeV10dlEto4l0P9XY)) +* [Bad except clauses order](https://docs.quantifiedcode.com/python-anti-patterns/correctness/bad_except_clauses_order.html) + ([PDF](https://drive.google.com/open?id=1DA3hraB1AH2oUG7hdQO3vB2Nl2VaQOz-)) +* [Bad first argument given to super](https://docs.quantifiedcode.com/python-anti-patterns/correctness/bad_first_argument_given_to_super.html) + ([PDF](https://drive.google.com/open?id=1wz2KTq9gikvbexUOu3vOhhqIbF6QbOU5)) +* [Missing argument to super](https://docs.quantifiedcode.com/python-anti-patterns/correctness/missing_argument_to_super.html) + ([PDF](https://drive.google.com/open?id=1gavKC1kCxw6TTlKtW8G8038QIqWHSso2)) +* [Access to a protected member](https://docs.quantifiedcode.com/python-anti-patterns/correctness/accessing_a_protected_member_from_outside_the_class.html) + ([PDF](https://drive.google.com/open?id=19ALIM0z8B516i8jiAGh6OSXyuXAbrD3V)) +* [else clause on loop without a break statement](https://docs.quantifiedcode.com/python-anti-patterns/correctness/else_clause_on_loop_without_a_break_statement.html) + ([PDF](https://drive.google.com/open?id=1UwkQzvh52MG7bBCj7cVBsopHcJrV5PHB)) +* [Using an unpythonic loop](https://docs.quantifiedcode.com/python-anti-patterns/readability/using_an_unpythonic_loop.html) + ([PDF](https://drive.google.com/open?id=1MTaFe1rO6Pn9_0g8rpUSBHFwOllhlvTk)) +* [Returning more than one variable type from function call](https://docs.quantifiedcode.com/python-anti-patterns/maintainability/returning_more_than_one_variable_type_from_function_call.html) + ([PDF](https://drive.google.com/open?id=1OHE2Tded-xjfbB1eicHeEuyME2fF81o-)) +* [Not using items to iterate over a dictionary](https://docs.quantifiedcode.com/python-anti-patterns/readability/not_using_items_to_iterate_over_a_dictionary.html) + ([PDF](https://drive.google.com/open?id=1TJOgVoOSVn8PJJ-Im5SeWCw0simP41Ru)) +* [Not using zip to iterate over a pair of lists](https://docs.quantifiedcode.com/python-anti-patterns/readability/not_using_zip_to_iterate_over_a_pair_of_lists.html) + ([PDF](https://drive.google.com/open?id=16NaJYdr2WxBhYUdt7hwsCiy0FUcqo_mk)) +* [Using key in list to check if key is contained in list](https://docs.quantifiedcode.com/python-anti-patterns/performance/using_key_in_list_to_check_if_key_is_contained_in_a_list.html) + ([PDF](https://drive.google.com/open?id=16tU1iVn8ZLxMAZf8bCU83Pl98UXcfbiw)) +* [Not using else in a loop](https://docs.quantifiedcode.com/python-anti-patterns/correctness/not_using_else_in_a_loop.html) + ([PDF](https://drive.google.com/open?id=1xrvagdaxhBLQk-LJq5aaY0IopqlXR-lE)) +* [Not using setdefault to initialize a dictionary](https://docs.quantifiedcode.com/python-anti-patterns/correctness/not_using_setdefault_to_initialize_a_dictionary.html) + ([PDF](https://drive.google.com/open?id=1ZYlOuXR3rNdGi-bWvT0YVdl1sS9hjFKx)) +* [Not using get to return a default value from a dictionary](https://docs.quantifiedcode.com/python-anti-patterns/correctness/not_using_get_to_return_a_default_value_from_a_dictionary.html) + ([PDF](https://drive.google.com/open?id=1dx0UaNxbH6OZJE_E2roYzM4EIEptdN51)) +* [Using map or filter where list comprehension is possible](https://docs.quantifiedcode.com/python-anti-patterns/readability/using_map_or_filter_where_list_comprehension_is_possible.html) + ([PDF](https://drive.google.com/open?id=1Wv0aO2MTEUalfZ6g6u3n_izfZryZ7tGP)) +* [Not using defaultdict](https://docs.quantifiedcode.com/python-anti-patterns/correctness/not_using_defaultdict.html) + ([PDF](https://drive.google.com/open?id=11n0EbpQiQMaxTEJmPl3tg7xUQPUq250L)) +* [Not using named tuples when returning more than one value](https://docs.quantifiedcode.com/python-anti-patterns/readability/not_using_named_tuples_when_returning_more_than_one_value.html) + ([PDF](https://drive.google.com/open?id=1M2Aw0rdznXAWu8SfMqvnGkfNSWk7yuDi)) +* [Not using explicit unpacking](https://docs.quantifiedcode.com/python-anti-patterns/correctness/not_using_explicit_unpacking.html) + ([PDF](https://drive.google.com/open?id=1wWvQZ3hxFzHUYRKIIgoQ055TLPChCQlY)) +* [Not using unpacking for updating multiple values at once](https://docs.quantifiedcode.com/python-anti-patterns/readability/not_using_unpacking_for_updating_multiple_values_at_once.html) + ([PDF](https://drive.google.com/open?id=1rI4oTcYq_9-AiWqiFnN4MgnVmMqoWGXL)) +* [Not using with to open files](https://docs.quantifiedcode.com/python-anti-patterns/maintainability/not_using_with_to_open_files.html) + ([PDF](https://drive.google.com/open?id=1lYiSxyWPwezEJ84axpxmofGsAdRq-td0)) +* [Asking for permission instead of forgiveness when working with files](https://docs.quantifiedcode.com/python-anti-patterns/readability/asking_for_permission_instead_of_forgiveness_when_working_with_files.html) + ([PDF](https://drive.google.com/open?id=1nG6-5-TKcmKVkzxQlMz5NudscYuQMVZl)) +* [Not using a dict comprehension](https://docs.quantifiedcode.com/python-anti-patterns/readability/not_using_a_dict_comprehension.html) + ([PDF](https://drive.google.com/open?id=1ZpI4MdTzUwhR0jgFqS8k5nyC1SLbC-5f)) +* [Putting type information in a variable](https://docs.quantifiedcode.com/python-anti-patterns/readability/putting_type_information_in_a_variable_name.html) + ([PDF](https://drive.google.com/open?id=14LfFsqxG6DMD6xK9prXIFECpA_IT9eER)) +* [Implementing Java-style setters and getters](https://docs.quantifiedcode.com/python-anti-patterns/correctness/implementing_java-style_getters_and_setters.html) + ([PDF](https://drive.google.com/open?id=1wNzSZN-TgaWrwwEsE17fyNJDBIhyOnGW)) + +

Arrayent (2012 to 2015)

+ +Arrayent was an internet of things startup. I was the sole technical writer in the company. +This was my first full-time technical writing job. I wrote developer documentation for an embedded API +as well as a REST API, in addition to end-user documentation for a couple of web applications. +I even hacked together a custom XSLT stylesheet to convert our Doxygen-generated reference +documentation to more reasonable HTML. I also migrated the company's documentation from Microsoft +Word to a website. I used Sphinx to generate the site and stored the source code on BitBucket. I deployed +the site to Heroku. I don't think I set up an automated deployment system because running the command to deploy to +Heroku was trivial. In addition to managing all of our customer-facing documentation I also +managed our SDKs, which we sent out to prospective customers. + +Embedded Developer Docs: + +* [WICED DevKit Tutorial](http://developer.arrayent.com/dev-kits/cypress-devkit/) + ([PDF](https://drive.google.com/open?id=12S_2ujHFbu7D-3OOXyIaTES1RwIuIHYI)) +* [Marvell DevKit Tutorial](http://developer.arrayent.com/dev-kits/marvell-devkit/) + ([PDF](https://drive.google.com/open?id=1Fwa7Uh3TGsn_nedGxMLNo_3OzN0pdkn8)) +* [FAQ](http://developer.arrayent.com/platform-2/platform-faq/) + ([PDF](https://drive.google.com/open?id=1ypxX21m6wbSxkFzNSW34BLqPcwV7R4jE)) +* [Firmware Developers Guide](http://developer.arrayent.com/embedded-guides/developers-guide/) + ([PDF](https://drive.google.com/open?id=1a8xvqNLRLGOxfyWBnRLx7W1y3noTshRL)) +* [Embedded API Reference](http://developer.arrayent.com/developer-apis/aca-api/) + ([PDF](https://drive.google.com/open?id=1NHbWxOwI_RGL95WuD0rMs5foVHRzm5C-)) +* [ACA Datasheet](http://developer.arrayent.com/embedded-guides/embedded-datasheet/) + ([PDF](https://drive.google.com/open?id=1nSdJIvHWPoKnGd2gtTcPVf0uzg0NE9BZ)) +* [Data Types Reference](http://developer.arrayent.com/developer-guides/data-types-reference/) + ([PDF](https://drive.google.com/open?id=14MgK0dS1Of99ocOlkvGNN3EPgiWzbqtl)) +* [Device Types Guide](http://developer.arrayent.com/embedded-guides/device-types-guide/) + ([PDF](https://drive.google.com/open?id=1mUE8mh7mPKNa2Q9AaUfYxT_M7oN-ME9E)) +* [Troubleshooting Guide](http://developer.arrayent.com/embedded-guides/troubleshooting-guide/) + ([PDF](https://drive.google.com/open?id=1zI_BvDWSPxkJU0nGGcobbgMyUO8QWkRR)) + +Web Developer Docs: + +* [Regular Alerts Guide](http://developer.arrayent.com/developer-guides/alert-guides/regular-alerts-guide/) + ([PDF](https://drive.google.com/open?id=1uP5kY_naM_d3o12oeC9MnRsyF8FFO3TD)) +* [Push Notification Alerts Guide](http://developer.arrayent.com/developer-guides/alert-guides/push-notification-alerts-guide/) + ([PDF](https://drive.google.com/open?id=1jI1Qeiy0-38qFtS6PR7yGkdCanEPpF9Q)) +* [SMS Alerts Guide](http://developer.arrayent.com/developer-guides/alert-guides/sms-alerts-guide/) + ([PDF](https://drive.google.com/open?id=1rwD3tV3yZqHRTXdHiMTNfSF2v_EeIIT2)) +* [Regular Expressions Alerts Guide](http://developer.arrayent.com/developer-guides/alert-guides/regular-expressions-alerts-guide/) + ([PDF](https://drive.google.com/open?id=13cL573veqzRqDlpgA3abdbU41vLnWyZ6)) +* [Scheduled Alerts Guide](http://developer.arrayent.com/developer-guides/alert-guides/scheduled-alerts-guide/) + ([PDF](https://drive.google.com/open?id=1LtpBbpH3Tm7kMJabZ9C-gG71jyg49lwU)) +* [Web Service API Guide](http://developer.arrayent.com/developer-guides/developers-guide-web-services/) + ([PDF](https://drive.google.com/open?id=1yZWuARTRtPqgEZY0YngXdZvmqfNyrZE0)) +* [System API Reference](http://developer.arrayent.com/developer-apis/acc-apis/acc-system-operations/) + ([PDF](https://drive.google.com/open?id=1Xiue26dRHTZajIewivaxXU7owOSV0F1C)) +* [End User API Reference](http://developer.arrayent.com/developer-apis/acc-apis/acc-customer-operations/) + ([PDF](https://drive.google.com/open?id=1SmcaeDaWGsxzAVfXdsCR7YY95-cgdr-R)) +* [Anonymous API Reference](http://developer.arrayent.com/developer-apis/acc-apis/anonymous-operations/) + ([PDF](https://drive.google.com/open?id=1yhZupH_NbyhaCFc_p80sNwmHc57udQSm)) +* [API Codes Reference](http://developer.arrayent.com/developer-apis/acc-apis/arrayent-connect-api-codes-and-messages/) + ([PDF](https://drive.google.com/open?id=1DG4NhOA6-yRN40cFT2nHPeifUQ7gTHND)) + +Web App User Docs: + +* [Configurator Guide](http://developer.arrayent.com/developer-guides/web-applications/configurator-app/) + ([PDF](https://drive.google.com/open?id=1FfNmiAsZVs0ke5Euyt-wQcz3PAXehMfX)) +* [Customer Support App Guide](http://developer.arrayent.com/developer-guides/web-applications/customer-support-tool-app/) + ([PDF](https://drive.google.com/open?id=14mq_9THKM1CSPE8EPzAGuDm9tjW8Ojtw)) +* [Utility App Guide](http://developer.arrayent.com/developer-guides/web-applications/utility-app/) + ([PDF](https://drive.google.com/open?id=1-4yr0aQyQiQwhOAotYlUezJ5nef8sjNb))