diff --git a/Gemfile.lock b/Gemfile.lock index fa53772..777392a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,119 +1,273 @@ GEM remote: https://rubygems.org/ specs: - activesupport (4.2.6) - i18n (~> 0.7) - json (~> 1.7, >= 1.7.7) + activesupport (6.0.4.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) - addressable (2.4.0) + zeitwerk (~> 2.2, >= 2.2.2) + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) coffee-script (2.4.1) coffee-script-source execjs - coffee-script-source (1.10.0) - colorator (0.1) - ethon (0.9.0) - ffi (>= 1.3.0) - execjs (2.7.0) - faraday (0.9.2) + coffee-script-source (1.11.1) + colorator (1.1.0) + commonmarker (0.17.13) + ruby-enum (~> 0.5) + concurrent-ruby (1.1.9) + dnsruby (1.61.7) + simpleidn (~> 0.1) + em-websocket (0.5.2) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + ethon (0.14.0) + ffi (>= 1.15.0) + eventmachine (1.2.7) + execjs (2.8.1) + faraday (1.8.0) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0.1) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.1) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) multipart-post (>= 1.2, < 3) - ffi (1.9.10) - gemoji (2.1.0) - github-pages (80) - github-pages-health-check (= 1.1.0) - jekyll (= 3.1.6) - jekyll-coffeescript (= 1.0.1) - jekyll-feed (= 0.5.1) - jekyll-gist (= 1.4.0) - jekyll-github-metadata (= 1.11.1) - jekyll-mentions (= 1.1.2) + ruby2_keywords (>= 0.0.4) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + ffi (1.15.4) + forwardable-extended (2.6.0) + gemoji (3.0.1) + github-pages (219) + github-pages-health-check (= 1.17.7) + jekyll (= 3.9.0) + jekyll-avatar (= 0.7.0) + jekyll-coffeescript (= 1.1.1) + jekyll-commonmark-ghpages (= 0.1.6) + jekyll-default-layout (= 0.1.4) + jekyll-feed (= 0.15.1) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.13.0) + jekyll-mentions (= 1.6.0) + jekyll-optional-front-matter (= 0.3.2) jekyll-paginate (= 1.1.0) - jekyll-redirect-from (= 0.10.0) - jekyll-sass-converter (= 1.3.0) - jekyll-seo-tag (= 1.4.0) - jekyll-sitemap (= 0.10.0) - jemoji (= 0.6.2) - kramdown (= 1.10.0) - liquid (= 3.0.6) - listen (= 3.0.6) + jekyll-readme-index (= 0.3.0) + jekyll-redirect-from (= 0.16.0) + jekyll-relative-links (= 0.6.1) + jekyll-remote-theme (= 0.4.3) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.7.1) + jekyll-sitemap (= 1.4.0) + jekyll-swiss (= 1.0.0) + jekyll-theme-architect (= 0.2.0) + jekyll-theme-cayman (= 0.2.0) + jekyll-theme-dinky (= 0.2.0) + jekyll-theme-hacker (= 0.2.0) + jekyll-theme-leap-day (= 0.2.0) + jekyll-theme-merlot (= 0.2.0) + jekyll-theme-midnight (= 0.2.0) + jekyll-theme-minimal (= 0.2.0) + jekyll-theme-modernist (= 0.2.0) + jekyll-theme-primer (= 0.6.0) + jekyll-theme-slate (= 0.2.0) + jekyll-theme-tactile (= 0.2.0) + jekyll-theme-time-machine (= 0.2.0) + jekyll-titles-from-headings (= 0.5.3) + jemoji (= 0.12.0) + kramdown (= 2.3.1) + kramdown-parser-gfm (= 1.1.0) + liquid (= 4.0.3) mercenary (~> 0.3) - rouge (= 1.10.1) + minima (= 2.5.1) + nokogiri (>= 1.10.4, < 2.0) + rouge (= 3.26.0) terminal-table (~> 1.4) - github-pages-health-check (1.1.0) + github-pages-health-check (1.17.7) addressable (~> 2.3) - net-dns (~> 0.8) + dnsruby (~> 1.60) octokit (~> 4.0) - public_suffix (~> 1.4) - typhoeus (~> 0.7) - html-pipeline (2.4.1) - activesupport (>= 2, < 5) + public_suffix (>= 3.0, < 5.0) + typhoeus (~> 1.3) + html-pipeline (2.14.0) + activesupport (>= 2) nokogiri (>= 1.4) - i18n (0.7.0) - jekyll (3.1.6) - colorator (~> 0.1) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.9.0) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 1.1) - kramdown (~> 1.3) - liquid (~> 3.0) + jekyll-watch (~> 2.0) + kramdown (>= 1.17, < 3) + liquid (~> 4.0) mercenary (~> 0.3.3) - rouge (~> 1.7) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) safe_yaml (~> 1.0) - jekyll-coffeescript (1.0.1) + jekyll-avatar (0.7.0) + jekyll (>= 3.0, < 5.0) + jekyll-coffeescript (1.1.1) coffee-script (~> 2.2) - jekyll-feed (0.5.1) - jekyll-gist (1.4.0) + coffee-script-source (~> 1.11.1) + jekyll-commonmark (1.3.1) + commonmarker (~> 0.14) + jekyll (>= 3.7, < 5.0) + jekyll-commonmark-ghpages (0.1.6) + commonmarker (~> 0.17.6) + jekyll-commonmark (~> 1.2) + rouge (>= 2.0, < 4.0) + jekyll-default-layout (0.1.4) + jekyll (~> 3.0) + jekyll-feed (0.15.1) + jekyll (>= 3.7, < 5.0) + jekyll-gist (1.5.0) octokit (~> 4.2) - jekyll-github-metadata (1.11.1) - octokit (~> 4.0) - jekyll-mentions (1.1.2) + jekyll-github-metadata (2.13.0) + jekyll (>= 3.4, < 5.0) + octokit (~> 4.0, != 4.4.0) + jekyll-mentions (1.6.0) html-pipeline (~> 2.3) - jekyll (~> 3.0) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) jekyll-paginate (1.1.0) - jekyll-redirect-from (0.10.0) - jekyll (>= 2.0) - jekyll-sass-converter (1.3.0) - sass (~> 3.2) - jekyll-seo-tag (1.4.0) - jekyll (~> 3.0) - jekyll-sitemap (0.10.0) - jekyll-watch (1.4.0) - listen (~> 3.0, < 3.1) - jemoji (0.6.2) - gemoji (~> 2.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.3) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) + rubyzip (>= 1.3.0, < 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.7.1) + jekyll (>= 3.8, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-swiss (1.0.0) + jekyll-theme-architect (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.6.0) + jekyll (> 3.5, < 5.0) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.3) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + jemoji (0.12.0) + gemoji (~> 3.0) html-pipeline (~> 2.2) - jekyll (>= 3.0) - json (1.8.3) - kramdown (1.10.0) - liquid (3.0.6) - listen (3.0.6) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9.7) + jekyll (>= 3.0, < 5.0) + kramdown (2.3.1) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.3) + listen (3.7.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) - mini_portile2 (2.0.0) - minitest (5.9.0) - multipart-post (2.0.0) - net-dns (0.8.0) - nokogiri (1.6.7.2) - mini_portile2 (~> 2.0.0.rc2) - octokit (4.3.0) - sawyer (~> 0.7.0, >= 0.5.3) - public_suffix (1.5.3) - rb-fsevent (0.9.7) - rb-inotify (0.9.7) - ffi (>= 0.5.0) - rouge (1.10.1) - safe_yaml (1.0.4) - sass (3.4.22) - sawyer (0.7.0) - addressable (>= 2.3.5, < 2.5) - faraday (~> 0.8, < 0.10) - terminal-table (1.5.2) - thread_safe (0.3.5) - typhoeus (0.8.0) - ethon (>= 0.8.0) - tzinfo (1.2.2) + mini_portile2 (2.6.1) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.14.4) + multipart-post (2.1.1) + nokogiri (1.12.4) + mini_portile2 (~> 2.6.1) + racc (~> 1.4) + octokit (4.21.0) + faraday (>= 0.9) + sawyer (~> 0.8.0, >= 0.5.3) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (4.0.6) + racc (1.5.2) + rb-fsevent (0.11.0) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.5) + rouge (3.26.0) + ruby-enum (0.9.0) + i18n + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + safe_yaml (1.0.5) + sass (3.7.4) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.8.2) + addressable (>= 2.3.5) + faraday (> 0.8, < 2.0) + simpleidn (0.2.1) + unf (~> 0.1.4) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thread_safe (0.3.6) + typhoeus (1.4.0) + ethon (>= 0.9.0) + tzinfo (1.2.9) thread_safe (~> 0.1) + unf (0.1.4) + unf_ext + unf_ext (0.0.8) + unicode-display_width (1.8.0) + zeitwerk (2.4.2) PLATFORMS ruby @@ -122,4 +276,4 @@ DEPENDENCIES github-pages BUNDLED WITH - 1.12.4 + 2.1.4 diff --git a/_config.yml b/_config.yml index cf8f88c..83f295c 100644 --- a/_config.yml +++ b/_config.yml @@ -8,12 +8,10 @@ # Site settings title: Justin Jeffress email: justin.jeffress@gmail.com -description: > - 日本に憧れているアメリカ人です。2年間横浜に住み、東京で1年間働いた経験があります。 - American who admires Japan. Lived in Yokohama for 2 years and worked in Tokyo for 1 year. +description: I love to tinker with software and share my knowledge with others in the pursuit enriching people's lives. baseurl: "" # the subpath of your site, e.g. /blog url: "http://sleepydeveloper.github.io" # the base hostname & protocol for your site -twitter_username: sleepydeveloper +x_username: sleepydeveloper github_username: sleepydeveloper # Build settings diff --git a/_data/blog-posts.yml b/_data/blog-posts.yml new file mode 100644 index 0000000..80604c5 --- /dev/null +++ b/_data/blog-posts.yml @@ -0,0 +1,110 @@ +- title: "New Alexa Skills Training Course: How to Design for In-Skill Purchasing" + url: https://developer.amazon.com/en-US/blogs/alexa/post/555d00d6-66b4-4f0b-8974-2021cd9a1630/alexa-skill-teardown-decoding-dialog-management-with-pet-matc + publication_date: 2018/01/12 + description: When building conversational user interfaces, it's important to think about continued engagement and high-quality interactions. During a recent webinar on advanced voice design techniques, we shared some best practices for applying advanced features like dialog management, entity resolution, and memory to enable customers to engage in multi-turn conversations with Alexa skills. + +- title: "Alexa Skill Teardown: Understanding Entity Resolution with the Pet Match Skill" + url: https://developer.amazon.com/en-US/blogs/alexa/post/cfbd2f5e-c72f-4b03-8040-8628bbca204c/alexa-skill-teardown-understanding-entity-resolution-with-pet-matc + publication_date: 2018/01/16 + description: Today, we'll focus on Entity Resolution, which enables you to add synonyms to your slot values and validate that a user actually said one of them. The Alexa service will then handle resolving the synonyms to your slot values. This simplifies your code since you don't have to write any code to match the synonym that user said to your slot value. + +- title: "Updated Tutorial: Enable Multi-Turn Dialog with Decision Tree Sample Skill" + url: https://developer.amazon.com/en-US/blogs/alexa/post/5b0efd02-0ed0-42d5-b922-5ee594d30a38/new-alexa-skills-kit-template-build-an-alexa-decision-tree-skil + publication_date: 2018/01/23 + description: As you create more Alexa skills, you can add advanced features to deliver a more conversational experience to your users. We recently updated the decision tree sample skill to use dialog management and entity resolution. Previously the skill asked a set of yes/no questions. Depending upon the answer, Alexa would ask a follow-up question. Once the user answered the last question, the skill would recommend a vocation to the user. + +- title: Taking Control of the Dialog Management State Machine + url: https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2018/03/taking-control-of-the-dialog-management-state-machine + publication_date: 2018/03/16 + description: Dialog management is a great way to collect the set of required slots that your intent needs to perform a task for your customers, since it greatly reduces the necessary coding required to reprompt for missing slot values. + +- title: Using Dialog Management to Capture A and B or C Slots + url: https://developer.amazon.com/en-US/blogs/alexa/post/44dd83f4-4842-40c5-91f8-3868b9f4608c/using-dialog-management-to-capture-a-and-b-or-c-slot + publication_date: 2018/03/23 + description: During Alexa Dev Days, my colleagues and I have been leading a voice design workshop that focuses on voice-first experience design and leans on dialog management to simplify collecting a set of required slots that an intent needs to perform its task for the user. + +- title: How to Enable Alexa to Switch Context Mid-Conversation with Dialog Management + url: https://developer.amazon.com/en-US/blogs/alexa/post/d8579cd6-9109-42b2-ada6-df017fc1dee5/how-to-handle-different-intent-requests-with-dialog-managemen + publication_date: 2018/03/29 + description: When you have a natural conversation with another person, you might find the conversation can take different directions. Therefore, the context of the conversation can change quite rapidly. With dialog management, you can ensure your skill is able to handle context switching. + +- title: Using Yes/No Intents with Dialog Management + url: https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2018/04/using-yes-no-intents-with-dialog-management + publication_date: 2018/04/06 + description: The AMAZON.YesIntent and AMAZON.NoIntent are useful for handling a “yes” or “no” utterance while improving dialog accuracy and creating more natural voice-first experiences. + +- title: Eliciting Slots Dynamically with Dialog Management + url: https://developer.amazon.com/en-US/blogs/alexa/post/5fe7565a-9547-4e03-be36-6c62ed356d57/dynamically-elicit-slots-during-dialog-management-based-on-previously-given-slot-value + publication_date: 2018/04/12 + description: At Alexa Dev Days, my colleagues and I lead a voice design workshop that focuses on voice-first experiences and shows how to capture a set of slot values through a turn-by-turn conversation with a user. I was recently asked, "I'm making a skill that recommends products. Can I change the question that Alexa asks to fill my slot(s) and can I make an optional slot required?" + +- title: "Build Advanced Alexa Skills: Confirm What Customers Want with Dialog Management" + url: https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2018/05/build-advanced-alexa-skills-confirm-what-customers-want-with-dialog-management + publication_date: 2018/05/10 + description: When your skill performs a task for the customer that requires information from them, it's a best practice to confirm you have the information you need before performing the task. + +- title: Use the New Fallback Intent to Respond Gracefully to Unexpected Customer Requests + url: https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2018/07/use-the-new-fallback-intent-to-respond-gracefully-to-unexpected-customer-requests + publication_date: 2018/07/12 + description: The new AMAZON.FallbackIntent in the Alexa Skills Kit (ASK) built-in library helps you handle unexpected utterances, or when a customer says something that doesn't map to any intents in your skill. + +- title: Advanced Skill Building with Dialog Management + url: https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/guide/Dialog-Management-Guide.pdf + publication_date: 2018/08/01 + description: Conversations are dynamic, moving between topics and ideas fluidly. Through voice, we are able to converse with technology, which is far more engaging than clicking buttons on a screen. To create truly engaging conversational voice experiences, you’ll need to incorporate flexibility and responsiveness in your Alexa skills. Your skills should be able to handle variations of conversation, conditional collection of data, and switching context mid-conversation without losing track of what's being said. + +- title: "Building Conversational Alexa Skills: How to Dynamically Elicit Slots Based on a Previous Answer Using Dialog Management" + url: https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2018/11/building-conversational-alexa-skills-how-to-dynamically-elicit-slots-based-on-a-previous-answer-using-dialog-management + publication_date: 2018/11/02 + description: Over the past few months, I've spent a lot of time deep diving into dialog management and sharing what I've learned with the Alexa developer community. + +- title: Use Intent Chaining to Enter Dialog Management from a Different Intent + url: https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2019/03/intent-chaining-for-alexa-skill + publication_date: 2019/03/01 + description: It's no secret that dialog management is one of my favorite features in the Alexa Skills Kit. I've spent countless hours experimenting with it. + + +- title: インテントチェーンを使って別のインテントのダイアログを管理する + url: https://developer.amazon.com/en-US/blogs/alexa/post/b3939b11-5cef-4598-b2f9-c7ad904e1692/understanding-intent-chainin + publication_date: 2019/04/02 + description: 実は、ダイアログ管理は私のお気に入りのAlexa Skills Kit機能の1つです。長い時間をかけていろいろな実験をしてきました。スキルの質を高めるコンテキスト切り替え(英語)や柔軟な条件付け(英語)といった便利なテクニックは、こうして開発できたのです。中には、Alexaイベントや@SleepyDeveloperを通して開発者から頂いた質問にインスパイアされたものもあります。Alexa Skills Kitチームでは日々、ダイアログ管理に新しい機能を追加し、更新を行っています。どれもユーザーとのやり取りを向上させるすばらしい機能ばかりです。今日はその中から、インテントチェーンをご紹介します。 + +- title: 6 Dialog Management Resources to Build Advanced Alexa Skills + url: https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2019/03/intent-chaining-for-alexa-skill + publication_date: 2019/04/19 + description: Conversations are not scripted. When you ask someone a question, the person may or may not provide all of the information that was asked. They may even provide more. When designing your Alexa skill, it’s important to start with this conversation in mind. In an Alexa skill, a dialog with the user is a conversation with multiple turns in which Alexa asks questions and the user responds with the answers. + +- title: "New Alexa Skills Training Course: Build an Engaging Alexa Skill with Cake Time" + url: https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2019/05/new-alexa-skills-training-course-build-your-first-alexa-skill-with-cake-time + publication_date: 2019/05/17 + description: "We're excited to introduce our new self-paced skill-building course called Cake Time: Build an Engaging Alexa Skill." + +- title: "Alexa Skill Recipe Update: Making HTTP Requests to Get Data from an External API Using the ASK Software Development Kit for Node.js Version 2" + url: https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2019/05/alexa-skill-recipe-update-making-http-requests-to-get-data-from-an-external-api-using-the-ask-software-development-kit-for-node-js-version-2 + publication_date: 2019/05/23 + description: I love interacting with the Alexa developer community. Your thirst for knowledge constantly challenges me to experiment and dive deep into many voice-related topics. + +- title: "Getting Started with the Cake Time Course: Designing the Voice User Interface (VUI) for Your Alexa Skill" + url: https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2019/06/getting-started-with-the-cake-time-course-designing-the-voice-user-interface-vui-for-your-alexa-skill + publication_date: 2019/06/04 + description: Great voice design is the foundation for an engaging Alexa skill, which is why it is the starting point for the Cake Time course. + +- title: "Getting Started with the Cake Time Course: Using Auto-Delegation to Collect Slots Turn by Turn" + url: https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2019/06/getting-started-with-the-cake-time-course-using-auto-delegation-to-collect-slots-turn-by-turn + publication_date: 2019/06/10 + description: Unlike a Hollywood movie, real conversations are not scripted. There are many factors that can affect conversation such as the number of participants, time of day, mood, amount of caffeine consumed, and so on. + +- title: "Getting Started with the Cake Time Course: Adding Memory to the Cake Time Skill to Remember the Customer's Birthday" + url: https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2019/06/getting-started-with-the-cake-time-course-adding-memory-to-the-cake-time-skill-to-remember-the-customer-s-birthday + publication_date: 2019/06/15 + description: In my previous post on designing the Cake Time skill, I did a deep dive on situational design. Instead of a flow chart, my colleague and I focused on the conversation and used situational design. + +- title: "Getting Started with Cake Time: Using the Alexa Settings API to Look Up the Device Time Zone" + url: https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2019/07/getting-started-with-cake-time-using-the-alexa-settings-api-to-look-up-the-device-time-zone + publication_date: 2019/07/02 + description: In my previous post on adding memory to cake time, I walked through the process of adding memory to the Cake Time skill so your skill can remember your customer's birthday. + +- title: "New Alexa Skills Training Course: How to Design for In-Skill Purchasing" + url: https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2019/10/new-alexa-skills-training-course-how-to-design-for-in-skill-purchasing + publication_date: 2019/10/16 + description: In order to effectively monetize your Alexa skills, you need to design an experience that inspires your customers to continue using your skill over and over. While a portion of the experience depends on the technical implementation (code, information architecture, APIs, etc.) it can only go as far as your voice interaction design. So we created a design-focused course to help you design a skill with in-skill purchasing. You’ll learn what makes great premium content, when to make offers, how to write offers, how to handle transitions to and from the Amazon Purchase flow, and how to provide access to purchases. diff --git a/_data/code-projects.yml b/_data/code-projects.yml new file mode 100644 index 0000000..bc9ccbe --- /dev/null +++ b/_data/code-projects.yml @@ -0,0 +1,27 @@ +- title: Build an Engaging Alexa Skill + url: https://github.com/alexa-samples/skill-sample-nodejs-first-skill + description: I built this sample skill for the Build an Engaging Alexa Skill tutorial. I collaborated with Alexa Skills Marketing to built the Alexa Skill Builder onboarding email campagin around this tutorial. Starting with introducing the core fundamentals, utterances, slots, and intents, the tutorial introduces the API building blocks necessary to collect slots, recall user input, and reduce cognitive load by proactively using Alexa features. The skill and tutorial are modular, which enables learners to skip what they already know and dive right into the concepts they wish to learn. + +- title: Build An Alexa Pet Match Skill + url: https://github.com/alexa-samples/skill-sample-nodejs-petmatch + description: I created this sample skill to demonstrate how to use Dialog Managment to collect slots in order to recommend a dog based on a set of preferences. Development of this skill lead me to dive deep into multi-turn dialog voice user interface design and implementation. I went on to become the mutli-turn dialog domain lead. + +- title: Tutorial Build Multi-turn Skills with Alexa Conversations + url: https://github.com/alexa-samples/skill-sample-nodejs-alexa-conversations-pet-match + description: Alexa Conversations fundamentally changed the way to develop Alexa Skills. Alexa Conversations uses a set of sample utterances to build and train an AI/ML model to automatically handle slot elicitation during conversation. To demonstrate the differences between Alexa Conversations and Dialog Management to build a multi-turn skill, I recreated the Pet Match skill with Alexa Conversations. This project became the basis for the compare and contrast session at re:Invent 2019. + +- title: Sample Skill - Sauce Boss + url: https://github.com/alexa-labs/skill-sample-nodejs-sauce-boss + description: This skill debuted at re:Invent 2018 to supplment a modular workshop designed to teach developers how to build skills with Alexa Presentation Language for screen enabled Alexa Devices like the Echo Show. Developers who attended the workshop received early access to the APL beta which had just been announced. + +- title: My Cactus Simulation Alexa Game + url: https://github.com/alexa-samples/skill-sample-nodejs-web-api-my-cactus + description: I created this project with Alexa User Interface Designer, Allison Atwell and Alexa Gaming domain lead Joe Muoio to demonstrate how to design and build an Alexa game skill with a professional team. Allison prepared a set of design assets. Live on twitch, I implemented the VUI and core game engine logic and Joe Muoio implemented the web API game experience. Upon completion, Allison, Joe and I did a 12-episode series where we dove deep into the process we took to build the skill. + +- title: Build An Alexa Meal Recommendation Skill + url: https://github.com/alexa-samples/skill-sample-nodejs-the-foodie + description: The Foodie served as the sample skill to supplment the Designing for Conversation workshop, which we debuted at VoiceSummit 2018. The workshop taught developers how to design and build an Alexa Skill. It was a our first time builidng a modular tutorial outside of readme files, complete with shorts video clips to demonstrate the dont's of voice user interface design. The clips were very well received and were used to create social media ads to promote the tutorial. With a score of 4.7 out of 5, the workshop was the highest rated workshop at VoiceSummit. + +- title: Introduction to AI/ML Programming + url: https://github.com/fbsamples/mit-dl-workshop + description: At Meta my colleague Suraj and I collaborated on this workshop with professors at MIT to create and pilot an introduction to AI/ML programming with PyTorch. The workshop teaches the fundametnals of AI/ML. This modular workshop was to be our foundation to build a series of modular tutorials, so they could be combined as needed to tailor a workshop based upon audience needs. This was to serve our "meetup in a box" initiative to expand our team's advocacy reach beyond our team. diff --git a/_data/education-and-accolades.yml b/_data/education-and-accolades.yml new file mode 100644 index 0000000..0fe4474 --- /dev/null +++ b/_data/education-and-accolades.yml @@ -0,0 +1,15 @@ +- institution: AWS Certified Alexa Skill Builder - Specialty + degree: AWS Certified Alexa Skill Builder - Specialty + year: January 2019 + +- institution: Kanken Level 3 (Japanese Kanji Proficiency Test) + degree: Only has a 44.5% pass rate among native Japanese test takers. + year: November 2016 + +- institution: Stanford University's Inter-Center University, Yokohama, Japan + degree: Completion of Intensive Japanese Program + year: June 2012 + +- institution: California State University, Northridge + degree: Bachelor's Degree of Computer Science with honors + year: June 2006 diff --git a/_data/executive-summary.yml b/_data/executive-summary.yml new file mode 100644 index 0000000..7ed6f54 --- /dev/null +++ b/_data/executive-summary.yml @@ -0,0 +1 @@ +executive_summary: Senior Developer Advocate with experience in driving strategic planning, content creation and community outreach. Proven track record in project management and solution architecture at Amazon. Skilled in building teams, influencing product roadmaps and improving customer experiences. \ No newline at end of file diff --git a/_data/side-projects.yml b/_data/side-projects.yml new file mode 100644 index 0000000..4663b89 --- /dev/null +++ b/_data/side-projects.yml @@ -0,0 +1,31 @@ +- type: position + company: Little Tokyo Kaiwa Club + location: Los Angeles, CA + title: Co-founder and Organizer + duration: March 2016 - July 2017 + technologies: meetup.com, ruby, ruby on rails, javascript, jquery + description: I Co-founded a Japanese-English language exchange group in Little Tokyo. I prepared Japanese and English lessons and taught the attendees how to speak Japanese and English. I also built a rails app to track attendance and other information. + +- title: Ad Poster + type: coding_project + link: https://github.com/SleepyDeveloper/ad_poster + technologies: Ruby, JSON, Selenium, Watir, Dotenv + description: Automatically posts advertisements for Kaiwa Club and other Japanese Meetup groups to a popular advertising site using Selenium and Watir. Ad content is configured via a json file. Adheres to 12-factor application principles by using dotenv to manage login credentials. + +- title: JMDict + type: coding_project + link: https://github.com/SleepyDeveloper/jmdict + technologies: Ruby, XML, JSON, Nokogiri, Trollop + description: A set of tools to aid my Japanese studies. Using the JMDict project's open source Multilingual Japanese Dictionary, I created a database and a set of tools to create flashcards and practice problems. Some of the code is available on github. + +- title: Glossary + type: coding_project + link: + technologies: Ruby, Ruby on Rails, Postgresql, Trollop + description: A rails app with a database based on the JMDict Project. Provides a gem with tools that automate looking up lists of vocabulary words for the Kanken. Generates TSV files to create flashcards for an iOS app that I use to study Kanji. + +- title: SleepyDeveloper Tutorials + type: coding_project + link: https://github.com/sleepydeveloper/tutorials + technologies: github, youtube, iMovie, quicktime, node.js, aws, lambda + description: A development focused tutorial channel on youtube.com. It's a one man operation. I create the tutorials, narration script, screen capture, video edits, annotations, etc. diff --git a/_data/tutorials.yml b/_data/tutorials.yml new file mode 100644 index 0000000..d0eb0c3 --- /dev/null +++ b/_data/tutorials.yml @@ -0,0 +1,15 @@ +- name: Designing for Conversation + url: https://web.archive.org/web/20190206132752/https://developer.amazon.com/ask-resources/guided/conversational-design-workshop/#/ + description: "Archived on Wayback Machine: Follow along as we dive into the design methods we recommend you use to develop engaging conversational voice user interfaces (VUI). In this course you'll follow the process we used to design “The Foodie” skill for Alexa — imagining and analyzing user interactions through a series of exercises aimed at exposing and designing around the nuances of human conversation." + +- name: Build an Engaging Alexa Skill + url: https://developer.amazon.com/en-US/docs/alexa/workshops/build-an-engaging-skill/get-started/index.html + description: Start building quickly with our beginner tutorial. You'll get hands-on, step-by-step experience creating your first custom Alexa skill. + +- name: How to Design for In-Skill Purchasing + url: https://developer.amazon.com/en-US/alexa/alexa-skills-kit/get-deeper/tutorials-code-samples/design-for-in-skill-purchasing + description: Learn best practices for selling premium content in your skill. + +- name: Build Multi-turn Skills with Alexa Conversations + url: https://developer.amazon.com/en-US/docs/alexa/workshops/build-multi-turn-skills/get-started/index.html + description: Learn how to build a skill using machine learning with Alexa Conversations. diff --git a/_data/video-works.yml b/_data/video-works.yml new file mode 100644 index 0000000..89b4ebc --- /dev/null +++ b/_data/video-works.yml @@ -0,0 +1,293 @@ +- title: "PyTorch Community Voices: Interview with Refik Anadol Studio (Full Video)" + url: https://www.youtube.com/watch?v=Fv9XW22us9E + thumbnail: https://i.ytimg.com/vi/Fv9XW22us9E/hqdefault.jpg + publication_date: 2022/11/14 + description: Art & AI/ML collaborate in creative ways, like how the Refik Anadol Studio is powered by PyTorch. Watch this full interview of Refik and Christian B. talking with Developer Advocates Suraj Subramanian and Justin Jeffress about how the Studio uses PyTorch to turn data into pigments + platform: YouTube + +- title: "第15回Alexa道場:米国スキル開発最前線" + url: https://www.youtube.com/watch?v=Er4YpC0RkyA + thumbnail: https://i.ytimg.com/vi/Er4YpC0RkyA/hqdefault.jpg + publication_date: 2018/10/11 + description: 米国からエバンジェリストを招いて、米国で人気のスキルや最新の機能など、Alexaスキルの最新開発事情をお届けします。 + platform: YouTube + +- title: "AWS re:Invent 2019: How developers can build natural, extensible voice conversations (ALX201-R2)" + url: https://www.youtube.com/watch?v=zgFBfQF1Ijw + thumbnail: https://i.ytimg.com/vi/zgFBfQF1Ijw/hqdefault.jpg + publication_date: 2019/12/10 + description: The AI-driven dialog manager Alexa Conversations allows you to build Alexa skills that can gracefully handle nonlinear, unpredictable, human conversations. This session provides an overview of dialog management on Alexa and walks you through how to use Alexa Conversations to create flexible, multi-turn experiences for use cases like buying tickets, making recommendations, ordering transportation or food, and making reservations. + platform: YouTube + +- title: Interacting With a Simple Hello World Alexa Skill + url: https://www.youtube.com/watch?v=cakcsuzS2DY + thumbnail: https://i.ytimg.com/vi/cakcsuzS2DY/hqdefault.jpg + publication_date: 2019/05/14 + description: This video illustrates what happens when a user interacts with a simple Hello World Alexa skill. + platform: YouTube + +- title: Overfilling Fail + url: https://www.youtube.com/watch?v=Gr59BrDWnIE + thumbnail: https://i.ytimg.com/vi/Gr59BrDWnIE/hqdefault.jpg + publication_date: 2018/07/11 + description: This video illustrates what it looks like when one conversational partner fails to parse information provided all at once. + platform: YouTube + +- title: Underfilling Fail + url: https://www.youtube.com/watch?v=cn308bvNBq4 + thumbnail: https://i.ytimg.com/vi/cn308bvNBq4/hqdefault.jpg + publication_date: 2018/07/11 + description: This video illustrates what it looks like when one conversational partner fails to recognize they already have the answer they need from context. + platform: YouTube + +- title: Conditional Flexibility + url: https://www.youtube.com/watch?v=gBExTNrGgMQ + thumbnail: https://i.ytimg.com/vi/gBExTNrGgMQ/hqdefault.jpg + publication_date: 2018/07/11 + description: This video illustrates what it looks like when one conversational partner asks for information they technically already have. + platform: YouTube + +- title: Cognitive Load Fail + url: https://www.youtube.com/watch?v=8CMeYuPK8cM + thumbnail: https://i.ytimg.com/vi/8CMeYuPK8cM/hqdefault.jpg + publication_date: 2018/07/11 + description: This video illustrates what it looks like when one conversational partner expects too much of another. + platform: YouTube + +- title: Context Switching Fail + url: https://www.youtube.com/watch?v=pUdZhAri9Nk + thumbnail: https://i.ytimg.com/vi/pUdZhAri9Nk/hqdefault.jpg + publication_date: 2018/07/11 + description: This video illustrates what it looks like when one conversational partner fails to switch context between different intentions. + platform: YouTube + +- title: Advanced Conversational Design workshop with Justin Jeffress at VOICE18 + url: https://www.youtube.com/watch?v=UTOX8SSt72w + thumbnail: https://i.ytimg.com/vi/UTOX8SSt72w/hqdefault.jpg + publication_date: 2018/07/26 + description: This is a live cast of a workshop titled Advanced Conversational Design with Dialog Manager that was lead by Alexa Evangelist Justin Jeffress @SleepyDeveloper at the 2018 Voice Summit. + platform: YouTube + +- title: 想定よりも少ない情報を言われた場合の失敗例 + url: https://www.youtube.com/watch?v=fzppyy8Rmdw + thumbnail: https://i.ytimg.com/vi/fzppyy8Rmdw/hqdefault.jpg + publication_date: 2018/10/11 + description: このビデオでは、聞き手が要求している情報に対して、話し手が認識できなかった(必要な情報を言ってくれなかった)場合に起こる失敗例を実演しています。 + platform: YouTube + +- title: コンテキスト切り替えの失敗 + url: https://www.youtube.com/watch?v=xw9PfQ91OPU + thumbnail: https://i.ytimg.com/vi/xw9PfQ91OPU/hqdefault.jpg + publication_date: 2018/10/11 + description: このビデオでは、会話している二人の一方が、異なるインテントへのコンテキスト切り替えがうまくできていない様子を実演しています。 + platform: YouTube + +- title: 認知負荷が重すぎる失敗 + url: https://www.youtube.com/watch?v=0oYVrGx75Mg + thumbnail: https://i.ytimg.com/vi/0oYVrGx75Mg/hqdefault.jpg + publication_date: 2018/10/11 + description: このビデオでは、会話している二人の一方が多くの情報を求めすぎている様子を実演しています。 + platform: YouTube + +- title: 条件に応じた柔軟な対応の不足 + url: https://www.youtube.com/watch?v=Xb-CFHalh90 + thumbnail: https://i.ytimg.com/vi/Xb-CFHalh90/hqdefault.jpg + publication_date: 2018/10/11 + description: このビデオは、会話している二人の一方が、二人が既に持っているはずの情報を再び尋ねた場合、または既に得られた情報から導き出されるはずの情報を繰り返し聞き返した場合に起きる問題を実演しています。 + platform: YouTube + +- title: 想定よりも多くの情報を言われた場合の失敗例 + url: https://www.youtube.com/watch?v=zyeOmFfjQsk + thumbnail: https://i.ytimg.com/vi/zyeOmFfjQsk/hqdefault.jpg + publication_date: 2018/10/11 + description: このビデオでは、会話の相手が聞き手が想定するよりも多くの情報を一度に言われた場合に起こる失敗例を実演しています。 + platform: YouTube + +- title: 確認が少なすぎる失敗 + url: https://www.youtube.com/watch?v=p0KP8aveFLA + thumbnail: https://i.ytimg.com/vi/p0KP8aveFLA/hqdefault.jpg + publication_date: 2018/12/13 + description: このビデオでは、ユーザーから受け取った情報の確認が少なすぎるため、ユーザーに不安を抱かせる失敗例を実演しています。 + platform: YouTube + +- title: 前回の会話の内容を記憶していない失敗 + url: https://www.youtube.com/watch?v=52SUq0_1WhY + thumbnail: https://i.ytimg.com/vi/52SUq0_1WhY/hqdefault.jpg + publication_date: 2018/12/13 + description: 前回の会話の内容を記憶していないため、何度も同じことをユーザーに聞いてしまう失敗例を実演しています。 + platform: YouTube + +- title: 確認時に混乱してしまう失敗 + url: https://www.youtube.com/watch?v=cY3R1SpU_dM + thumbnail: https://i.ytimg.com/vi/cY3R1SpU_dM/hqdefault.jpg + publication_date: 2018/12/13 + description: 受け取った個別の情報は正しくても、確認時に情報を整理できず混乱してしまった失敗例を実演しています。 + platform: YouTube + +- title: 確認が多すぎる失敗 + url: https://www.youtube.com/watch?v=CWKIpuc-Itg + thumbnail: https://i.ytimg.com/vi/CWKIpuc-Itg/hqdefault.jpg + publication_date: 2018/12/13 + description: + platform: YouTube + +- title: ユーザーへの問いかけ方の失敗 + url: https://www.youtube.com/watch?v=Wt3oaS9j3gk + thumbnail: https://i.ytimg.com/vi/Wt3oaS9j3gk/hqdefault.jpg + publication_date: 2018/12/13 + description: このビデオでは、ユーザーに問いかける際の話し方の失敗例を示しています。このケースでは「和食、中華、洋食のどれにしますか?」と聞けば、「和食にします」と答えてくれるでしょう。 + platform: YouTube + +- title: "Designing In-skill Purchasing: Persistent Salesman" + url: https://www.youtube.com/watch?v=VNtNbrvg6UU + thumbnail: https://i.ytimg.com/vi/VNtNbrvg6UU/hqdefault.jpg + publication_date: 2019/09/03 + description: Justin, role-playing as Alexa, demonstrates what it sounds like when a skill delivers upsell messages a little too persistently. Can you count the number of times Justin tries to sell Alison something? + platform: YouTube + +- title: "Designing In-skill Purchasing: Strong value proposition" + url: https://www.youtube.com/watch?v=Qkhh7sfWj9Y + thumbnail: https://i.ytimg.com/vi/Qkhh7sfWj9Y/hqdefault.jpg + publication_date: 2019/09/04 + description: Justin, role-playing as Alexa, demonstrates an upsell with a strong, clear value proposition. Justin gives Alison enough information about what her purchase includes without being too wordy. + platform: YouTube + +- title: "Designing In-skill Purchasing: DO NOT overwhelm with choices" + url: https://www.youtube.com/watch?v=Zcp9cOWooZM + thumbnail: https://i.ytimg.com/vi/Zcp9cOWooZM/hqdefault.jpg + publication_date: 2019/09/04 + description: Justin, role-playing as Alexa, demonstrates what upsells might sound like when they attempt to offer too many purchases in one message. By the time Justin is done speaking, can you recall what the first in-skill purchase he offered Alison was? + platform: YouTube + +- title: "Designing In-skill Purchasing: DO keep it simple" + url: https://www.youtube.com/watch?v=JbB8lCKKa94 + thumbnail: https://i.ytimg.com/vi/JbB8lCKKa94/hqdefault.jpg + publication_date: 2019/09/04 + description: Justin, role-playing as Alexa, demonstrates how simple and concise an in-skill upsell message can be when it offers only one product. + platform: YouTube + +- title: "Designing In-skill Purchasing: DO NOT bait and switch" + url: https://www.youtube.com/watch?v=CcjygNnVneQ + thumbnail: https://i.ytimg.com/vi/CcjygNnVneQ/hqdefault.jpg + publication_date: 2019/09/04 + description: Justin, role-playing as Alexa, demonstrates how disappointing it is when a skill offers something to a customer, but then tells them they must pay for it after they express interest in it. Did you also think Alison would be getting more trivia right away when she said "yes"? + platform: YouTube + +- title: "Designing In-skill Purchasing: Upsells, DO sell one relevant product" + url: https://www.youtube.com/watch?v=Su4gyTle6P8 + thumbnail: https://i.ytimg.com/vi/Su4gyTle6P8/hqdefault.jpg + publication_date: 2019/09/04 + description: "Justin, role-playing as Alexa, demonstrates what happens when a skill offers one in-skill purchase that is of the most relevance to the customer at a given time. Alison just finished playing a sports-themed daily game with a great score: How likely is she to purchase more content related to sports?" + platform: YouTube + +- title: "Designing In-skill Purchasing: DO NOT leave landmines" + url: https://www.youtube.com/watch?v=y7U6h8K3jK8 + thumbnail: https://i.ytimg.com/vi/y7U6h8K3jK8/hqdefault.jpg + publication_date: 2019/09/04 + description: Justin, role-playing as Alexa, demonstrates a "landmine experience" in a skill. Justin offers Alison a list of options, but Alison doesn't know which selections will result in an upsell message. + platform: YouTube + +- title: "Designing In-skill Purchasing: Upsells, DO NOT use threats or negative consequences" + url: https://www.youtube.com/watch?v=gmhqiqvuVOs + thumbnail: https://i.ytimg.com/vi/gmhqiqvuVOs/hqdefault.jpg + publication_date: 2019/09/04 + description: Justin, role-playing as Alexa, demonstrates how poorly an upsell that uses threats or negative consequences is likely to be received by a listener. Justin threatens Alison with a drop in rank to sell a pack of hints. How likely are you to respond to such threats? + platform: YouTube + +- title: "Designing In-skill Purchasing: Handling transitions, A happy path" + url: https://www.youtube.com/watch?v=drU_E-uDcFI + thumbnail: https://i.ytimg.com/vi/drU_E-uDcFI/hqdefault.jpg + publication_date: 2019/09/04 + description: Justin, role-playing as Alexa, demonstrates a seamless transition from in-skill upsell to Amazon purchase flow and back to the skill. + platform: YouTube + +- title: "Designing In-skill Purchasing: DO NOT make the customer dig for their purchases" + url: https://www.youtube.com/watch?v=OFCU-Sbh9zI + thumbnail: https://i.ytimg.com/vi/OFCU-Sbh9zI/hqdefault.jpg + publication_date: 2019/09/04 + description: Justin, role-playing as Alexa, demonstrates a skill that makes the customer work too hard to hear about what they've purchased. What if Alison had purchased 20 packs? She'll be there all day listening to Justin list them. + platform: YouTube + +- title: "Designing In-skill Purchasing: DO make it easy to find purchases" + url: https://www.youtube.com/watch?v=nr5XZZoeUoQ + thumbnail: https://i.ytimg.com/vi/nr5XZZoeUoQ/hqdefault.jpg + publication_date: 2019/09/04 + description: Justin, role-playing as Alexa, demonstrates a scenario where a skill offers the customer their most recent purchase first, and then offers several more options at a time when the customer declines. + platform: YouTube + +- title: "Designing In-skill Purchasing: DO NOT spend a consumable without permission" + url: https://www.youtube.com/watch?v=32y3ZazHNEU + thumbnail: https://i.ytimg.com/vi/32y3ZazHNEU/hqdefault.jpg + publication_date: 2019/09/04 + description: Justin, role-playing as Alexa, demonstrates how frustrating it is when a skill spends a consumable item that the customer paid for, without asking permission. How likely is Alison to trust that her purchases will be saved for exactly when she wants to use them in the future? Do you think she'll want to buy hints again? + platform: YouTube + +- title: "Designing In-skill Purchasing: DO ask for permission to spend a consumable" + url: https://www.youtube.com/watch?v=WRwykcVlxRY + thumbnail: https://i.ytimg.com/vi/WRwykcVlxRY/hqdefault.jpg + publication_date: 2019/09/04 + description: Justin, role-playing as Alexa, demonstrates how a skill might collect permission from a customer to spend a consumable. Justin is transparent with Alison about how many free and paid hints Alison has left, and asks explicitly for permission to spend a hint when Alison asks about them. + platform: YouTube + +- title: "re:Invent 2019 - Design an Alexa skill with in-skill purchasing" + url: https://www.twitch.tv/videos/543329179?filter=all&sort=time + thumbnail: https://static-cdn.jtvnw.net/cf_vods/d2nvs31859zcd8/844ebf28a60e3e621eb1_amazonalexa_32111041705_7179970786//thumb/thumb543329179-240x180.jpg + publication_date: 2020/01/28 + description: Justin, role-playing as Alexa, demonstrates how a skill might collect permission from a customer to spend a consumable. Justin is transparent with Alison about how many free and paid hints Alison has left, and asks explicitly for permission to spend a hint when Alison asks about them. + platform: Twitch + +- title: "Highlight: Design an Alexa Skill with In-Skill Purchasing with Alison Atwell Justin Jeffress" + url: https://www.twitch.tv/videos/510733821?filter=all&sort=time + thumbnail: https://static-cdn.jtvnw.net/cf_vods/d2nvs31859zcd8/1a4ba5a9a501fc209e5a_amazonalexa_71783617877_2467301192//thumb/thumb510733821-240x180.jpg + publication_date: 2019/11/20 + description: + platform: Twitch + +- title: "Highlight: In-Skill Purchasing Design with Alison Atwell Justin Jeffress" + url: https://www.twitch.tv/videos/510731578?filter=all&sort=time + thumbnail: https://static-cdn.jtvnw.net/cf_vods/d2nvs31859zcd8/cb509dc0b1df04fae7db_amazonalexa_47707446673_2885116801//thumb/thumb510731578-240x180.jpg + publication_date: 2019/11/20 + description: + platform: Twitch + +- title: "Voice-first Design: My Cactus with Alison Atwell and Justin Jeffress Episode 7" + url: https://www.twitch.tv/videos/823268971?collection=S81yydlkRBY-Pw + thumbnail: https://static-cdn.jtvnw.net/cf_vods/d2nvs31859zcd8/b5c081e082f2c0dd2185_amazonalexa_40785565854_1606931962//thumb/thumb0-240x180.jpg + publication_date: 2020/12/02 + description: + platform: Twitch + +- title: "Voice-first Design: My Cactus with Alison Atwell and Justin Jeffress Episode 8" + url: https://www.twitch.tv/videos/825511166?collection=S81yydlkRBY-Pw + thumbnail: https://static-cdn.jtvnw.net/cf_vods/d2nvs31859zcd8/4013d4fd5a8113de180c_amazonalexa_40813592766_1607106555//thumb/thumb0-240x180.jpg + publication_date: 2020/12/04 + description: + platform: Twitch + +- title: "Voice-first Design: My Cactus with Alison Atwell and Justin Jeffress Episode 9" + url: https://www.twitch.tv/videos/831262255?collection=S81yydlkRBY-Pw + thumbnail: https://static-cdn.jtvnw.net/cf_vods/d2nvs31859zcd8/b15cf65dbdcde511af9f_amazonalexa_40885759006_1607536852//thumb/thumb0-240x180.jpg + publication_date: 2020/12/09 + description: + platform: Twitch + +- title: "Voice-first Design: My Cactus with Alison Atwell and Justin Jeffress Episode 10" + url: https://www.twitch.tv/videos/833688320?collection=S81yydlkRBY-Pw + thumbnail: https://static-cdn.jtvnw.net/cf_vods/d2nvs31859zcd8/5359259bdc81a80481af_amazonalexa_40915881630_1607709620//thumb/thumb0-240x180.jpg + publication_date: 2020/12/11 + description: + platform: Twitch + +- title: "Voice-first Design: My Cactus with Alison Atwell, Joe Muoio, and Justin Jeffress Episode 11" + url: https://www.twitch.tv/videos/839522451?collection=S81yydlkRBY-Pw + thumbnail: https://static-cdn.jtvnw.net/cf_vods/d2nvs31859zcd8/d9faffaf1dd1abb0a754_amazonalexa_40976263006_1608141541//thumb/thumb0-240x180.jpg + publication_date: 2020/12/16 + description: + platform: Twitch + +- title: "Voice-first Design: Let's Play My Cactus with Justin, Joe Muoio and Alison Episode 12" + url: https://www.twitch.tv/videos/841792511?collection=S81yydlkRBY-Pw + thumbnail: https://static-cdn.jtvnw.net/cf_vods/d2nvs31859zcd8/67bb4324629207888e54_amazonalexa_40998323166_1608314459//thumb/thumb0-240x180.jpg + publication_date: 2020/12/18 + description: + platform: Twitch diff --git a/_data/work-experience.yml b/_data/work-experience.yml new file mode 100644 index 0000000..c0536a9 --- /dev/null +++ b/_data/work-experience.yml @@ -0,0 +1,118 @@ +- company: Meta + title: Senior Developer Advocate + location: Seattle, Washington + duration: July 2022 - June 2023 + description: + - Led a team of 2 developer advocates supporting PyTorch initiatives. + - Drove strategic planning, content creation, public speaking, community outreach, and demand generation. + - Tripled advocacy reach by equipping and partnering with external community organizers. + - "Reached developers at scale through PyTorch 2.0 launch initiatives: live-stream and on-demand." + - Collaborated with external partners to create, launch, and evaluate 2 workshops with an average 4.7/5 rating. + - Established a content pipeline, and marketing promotion plan for feature releases. + technologies: + +- company: Amazon + title: Technical Project Manger + location: Seattle, Washington + duration: January 2022 - June 2022 + description: + - Supported the Alexa Science Team's goal to pilot and launch flagship Alexa Skills with external partners. + - Worked closely with the Business Development team to identify 30 potential partners. + - Defined the scoring rubric to determine pitch prioritization and pitched 15 partners in one-month. + - Led pitch meetings and coordinated with marketing and legal to secure partners. + - Established a catalog of potential partners for future projects. Directed a two-person team responsible for creating flagship partner skills in-house. + - Defined requirements and updated stakeholders weekly on progress. + + technologies: + +- company: Amazon + title: Senior Solutions Architect + location: Seattle, Washington + duration: January 2021 - December 2021 + description: + - Worked with 3 video partners to integrate Alexa into TV sets. + - Helped partners remove bottlenecks, adopt new features, and improve customer experience. + - Identified the root cause of a major session timeout, worked with partner to fix it, reducing lag 90%. + - Shared partner feedback with the product team to influence priorities and roadmap. + - Streamlined certification testing, increasing throughput, productivity, while reducing product delays. + - Mentored and prepared 5 colleagues to deliver presentations for Alexa Live. + technologies: + +- company: Amazon + title: Senior Developer Advocate + location: Seattle, Washington + duration: July 2017 - December 2020 + description: + - Authored 30 blogs, 4 training courses, and a white paper, generating thousands of engagement minutes. + - Published 5 Alexa sample skill projects on GitHub earning 1000s of stars and forks. + - Recruited and led the team, behind the AWS Alexa Skill Builders training course. + - Hosted 20 hackathons, driving feature adoption and leading to the publication of 100s of innovative skills. + - Delivered 100 talks and workshops, onboarding over 150k developers. Used third-party tools to rank feature requests, leading to the option of 5 community-driven features. + - Mentored and educated two new hires and guided them through their first projects. + - Worked with global teams to establish a localization strategy increasing productivity 70%. + - Gave five presentations in Japanese at Alexa events in Tokyo and Osaka + technologies: + +- company: Zoe Media Group + title: Senior Software Developer + location: Los Angeles, California + duration: April 2017 - July 2017 + description: + - Unified four services under single sign-on, reducing confusion, cutting support requests and boosting engagement. + - Built automation tools to aggregate and report sales revenue to stakeholders. + - Integrated Amazon Pay across all e-commerce platforms, increasing revenue streams 3x. + - Fixed a subscription bug and collaborated with billing to recover revenue. + technologies: + +- company: Booktrope + title: Senior Web Architect + location: Los Angeles, California + duration: September 2013 - May 2016 + description: + - Led Booktrope's R&D, developing and testing 90% of the software. + - Interviewed and mentored new hires, and implemented pair programming for onboarding. + - Built a system to track book rankings, optimize cover design, marketing, and author recruitment. + - Developed pricing automation for eBooks, streamlining promotions and contractual pricing. + technologies: + +- company: CrossLanguage + title: Japanese-English Dictionary Manager + location: Tokyo, Japan + duration: September 2012-May 2013 + description: + - Communicated exclusively in Japanese as the sole American employee. + - Maintained an improved Japanese-English translation engine's rules. + - Automated translation tasks, boosting team efficiency through tool creation. + - Instructed colleagues on automation tools for better workflow. + technologies: + +- company: CrossLanguage + title: Japanese-English Dictionary Intern + location: Tokyo, Japan + duration: June 2012-August 2012 + description: + - Hired as an unpaid intern due to visa limits, completing the hiring process in half the time. + - Added 3,000+ words to the Japanese-English dictionary in record time. + - Built a web spider in 1.5 days, originally scheduled for two weeks. + technologies: + +- company: CrownPeak + title: Senior Developer + location: Los Angeles, CA + duration: March 2009-August 2011 + description: + - Led the new C# API development project. + - Created tools to analyze template code and maintain API documentation, enhancing workflow. + - Bridged communication between Engineering and Production for API enhancements. + - Educated Production to use the new API and made improvements based on feedback. + technologies: + +- company: CrownPeak + title: Associate Web Application Engineer + location: Los Angeles, CA + duration: September 2006-February 2009 + description: + - Managed client projects, solving CMS, SEO, Data Architecture, backend and front end issues. + - Developed a widely adopted AJAX event calendar. + - Owned API documentation, updating missing functions, improving internal docs alongside Engineering. + technologies: diff --git a/_includes/footer.html b/_includes/footer.html index 72239f1..dd0b7f0 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -14,17 +14,15 @@
+ {% include icon-gmail.html %} +
++ {% include icon-x.html %} sleepydeveloper + +
++ {% include icon-linkedin.html %} +
+ + {% if checkArray[0] != '' %} ++ {% include icon-pdf.html %} + Download Resume +
+ {% else %} ++ {% include icon-pdf.html %} + 履歴書 + +
++ {% include icon-pdf.html %} + 職務経歴書 +
+ {% endif %} + +{{ include.executive_summary }}
\ No newline at end of file diff --git a/_resume/side-projects.html b/_resume/side-projects.html new file mode 100644 index 0000000..a702e63 --- /dev/null +++ b/_resume/side-projects.html @@ -0,0 +1,12 @@ +{{ tutorial.description }}
++ This list of blog posts I wrote during my time at Amazon Alexa is mostly complete. When we updated + blogging software, a few of my posts went missing from my + author index page. + I continue to update this page as I track the missing posts down. +
+{{ blog_post.description }}
++Below you will find the code projects I created during my tenure at Amazon and Meta. +
+{{ code_project.description }}
+Ruby, Ruby on Rails, Postgresql, Heroku, Javascript, HTML
-- Automated the laborious process of changing book prices across all - sales platforms, Amazon, iBooks, Nookpress and GooglePlay. Built a queue - based on parse.com which the price changer used to determine which books - to change and when. Built a user facing tool that allowed for scheduling - price changes of their books to coincide with sales promotions. It - accounts for Amazon's strict rules that their price be the lowest and - would wait to raise the price on Amazon until the price had been confirmed - raised on all other platforms. Built an iPhone app for the management - team to track the queue and to see which books were scheduled for - price promotion. Throughout the life of the price changer it has - succesfully performed 8,600 price change operations. -
- Sales Tracking -- Auotmated sales tracking across all online sales partners. Saved the data - in a parse.com table and made the data available to the users in the form - of various bar charts so they can track their daily sales. -
- Stats Tracking -- Created tools to hourly track various meta data for all published books - across all sales channels such as current price, number of reviews, - average star rating, and sales ranking. This information proved vital - to the marketing team to determine which books should be used in - promotions. The hourly price and sales ranking were made available to - users via a chart so they could track their sales ranking throughout - the day. -
- Hellosign -- Saved the company thousands of dollars by automating the contract signing - process. Using the Hellosign api, when a user joins a project, they - are automatically sent a digital contract which they must sign in order - to begin working on the project. Built flexibly so if a new contract - type was required to be signed, it would only require booktrope staff - to create a new contract type via the UI. To date the system has served - 3456 signing requests resulting in many hours saved of manual work. -
- Teamtrope -- Internal workflow app to collect work product of creative teams. Included - a parallel workflow mechanism to allow the author to collaborate with - proofreaders and editors while working with the cover designer and - marketing manager to design the cover of the book. -
-- Included many tools to help the team track the sales and ranking of their - books as well as schedule price change promotions and much more. The - workflow system was used to publish over 970 books. -
-- The app was built on rails and hosted on heroku. The html was based on - twitter's bootstrap framework and relied on a variety of industry standard - gems such as, devise, omniauth, rescue, friendly_id, wisper, and paperclip. - Assets are hosted on amazon s3. -
-- Built a text alignment tool that uses statistical and dictionary matches - to analyze Japanese and English text and determine which Japanese - sentence correpsonds to which English Sentence as well as which words - are translations of each other. The tool was able to determine within - a high degree of accuracy which words were translations even if they - didn't exist in its dictionary. -
- Japanese Patent Office -- Worked with the Japanese patent office to provide machine translations - of thousands of Japanese and Chinese patent applications into English. - The provided data was over 500GBs of text and images. Built perl and - bash scripts to extract the data from XML and SGML files, normalize it, - determine if eligible for translation, and send it to the translation - pipeline. Addressed edge conditions and built regression tests for - SGML documents that didn't follow specifications. Wrote a script to - bundle the translated data with its corresponding images and burn the - data to DVDs. -
-- Hired as an intern on a fast track to become a full time employee. - Added 3,000 technical words to the English translation dictionary that - the translation engine uses to translate Japanese into English. Was - given two weeks to develop a spider in perl that crawled Wikipedia's - artisans index page and harvested data from the English, Korean, - Cantonese and Mandarin pages of each artisan. Learned how to write - regular expressions that matched Hiragana, Katakana, Kanji, and Hangul. - Completed the project in a day and a half. -
-- Tasked with building a new API in C# for the CMS, built a tool to - analyze the frequency of use of API functions to determine which APIs - were used most and which ones were used at all. This data was used - to determine what to implement first and what not to bring over. -
-- Provided insight to the team on how the professional services was - using the old VBScript API to implement CMS integrations which - proved vital to building not just an API in a different language but - addressing many of the previous API's flaws as well as making it easier - to use. -
-- Worked with the professional services team to implement a new client - CMS implementation using the new C# API to ensure that the new technology - was suited for wide release and adoption as the de facto API for all - new projects. -
-- Automated the process of documenting the source code to automatically - generate api documentation. Used Sandcastle to turn the documentation - into a online manpage. -
- Google Web Site Optimizer -- Collaborated with Google to implement Google Website Optimizer into - the CMS core. This allowed clients to easily create A/B and - Multivariate testing. -
-- Used the CrownPeak proprietary API to integrate clients websites into - the CMS. Consulted with clients about SEO, and front-end features for - their sites. -
- AJAX Calendar -- Built an AJAX events calendar for a client that became the de facto - calendaring system for all clients. The calendar is still in use today - by many of CrownPeak's clients. -
- API Documention -- Maintained the API Documentation after being bothered that many of the - functions that were used daily by CrownPeak developers were not - documented anywhere. Collaborated with Engineering to ensure that - APIs that weren't meant to be used by professional services were not - documented and marked for removal from the API. -
- Mentor -- Mentored new developers and trained them to use the CrownPeak API through - Pair-programming and general issue triage. -
-- Junior High School Graduate Level Knowledge of Kanji including 1,607 - characters. Only has a 44.5% pass rate among native Japanese test takers. -
-- Co-founded a Japanese and English language exchange group. - - Built a - rails app to track attendence, and visualize the weekly ratio of - Native Japanese and Non-native Japanese speakers. Create marketing - material and adjust tactics based on the weekly ratio in order to - preserve a near 1:1 ratio of Native Japanese to Non-native Japanese - speakers. -
-- Create English and Japanese lesson plans. Lead the meetup group and Introduce - the Japanese and English lesson plan at the start of each meetup. - Break attendees into groups based on the ratio of native Japanese and - non-native Japanese speakers. -
-- Created a LINE group to keep members up to date on the latest info - regarding the group. Upload the weekly lesson plan to LINE notes. - Address grammar questions regarding Japanese and English rasied in - the LINE group. -
-- I manage posting advertisments to a third party site for two Japanese - meetup groups in the Los Angeles area where the information in the - advertisment is pretty much always the same except for the date when the - meetup will take place, so I created a tool that automates posting the - ads. -
-
- Used Selenium and Watir to login
- automatically and post an adverstisement for Kaiwa Club. The contents of
- the ad are defined by a JSON file. The account_name:
- field determines which credential shim is loaded via dotenv.
- The path to the shim is also set in the environment
- variables.
-
- Created a ruby gem to handle the - JMDict Project - files. The full JMDict XML file is too big for Nokogiri to load in a - reasonable amount of time. The Gem features a tool for splitting the XML - file into files with 1000 entries. The gem can also convert the XML file - into JSON and Objects that represent the various JMDict Objects. -
-- A rails app with a model based on the JMDict Project. The - underlying database engine is Postgresql. -
-- A set of ruby scripts that directly connect to the glossary app's - database to look up lists of words and create TSV files for an iOS - flashcards app that I use to study for the Kanken - (Japanese Webpage). -
-- Email addresses have been obfuscated to prevent email harvesters from wreaking - havoc. -
-+ Below are the tutorials I built during my tenure at Amazon. Designing for Conversation + was the first time I collaborated with an Instructional Designer. It was later localized into Japanese. +
++ Here's a sampling of video moments captured throughout my career. From quirky one-minute shorts + demonstrating what not to do to 1-hour long technical deep dives showing my versitility as a + storyteller, and educator. I wrote and directed the shorts that I don't appear in. I'm most proud + of my appearance on the Alexa Dojo, where + I was able to use my Japanese skills. +
+