Capstone W1 D3: Beep Beep!

Day 2 was my birthday and pretty much all I did was add a reset button.

But Day 3 I’m trying to figure out sound! I want my timers to have sounds when the switch.

I found this great example with sounds built into the blog post: Beep Boop! Announcing “use-sound” A React Hook for Sound Effects.

I got a sound working when a timer ends. And I also set upper and lower limits for the timer. None of the timers can go above 60 or below 1.

I also did some other code clean up and spent a bunch of time updating and ranking my user stories by priority.

Ada Capstone Week 1 Day 1: Let’s Do This!

Even getting started with React has been an adventure so far. I went to upload my basic files after creating the app with npx create-react-app and immediately got a message asking if I wanted to ignore node_modules. My immediate reaction was, why would I ignore what I just created? But some quick google-foo told me that node_module can be installed with npm install if anyone clones my repo. Whew.

Note: I WILL need to check in the modules when I want to deploy, but I’m not deploying through GitHub pages, so I’m set.

I started by making a break and work component, with each having a state where I can add and subtract by clicking a button.

Because the default time will be seconds, but I want to more easily format time/minute/seconds, I am using moment.js. I installed it with yarn add moment and then added it in the relevant files with the default format of:

import moment from 'moment';

moment().format();

But then when I wanted to add a countdown component, I realized I needed the state to be in the app.js file, so moved it in order to let countdown access it.

And in order to dispay the time in MM:SS format, I needed another moment.js addition: yarn add moment-duration-format

The really exciting thing about day 1 was that not only did I get a version with buttons and timers that actually WORK, but I also got it published live on S3!

Deploying a static React app to S3 was easy and only took me about 5 minutes. I do imagine it will be a bit more complicated when I want to set it up with a custom domain…

Ada Capstone Day 5: Baby Steps Are Better Than No Steps

Today was a distracted day with other random things, but I did get a bit of research and practice done. I finished the relevant parts of the Chalice Quickstart Tutorial and I came back to a tutorial I started reading on Day 1: Building a serverless React app using AWS Lambda, DynamoDB, and an API Gateway. Unfortunately, I ran into errors when I got to the part where the Lambda and DynamoDB need to talk to each other, through API Gateway. It definitely demonstrated for me how much easier Chalice makes creating a Lambda.

My big accomplishment: I’m finding space to take a break, and knowing that I’ve accomplished a bunch.
My big challenge: The next two days are set to be busy with social stuff and errands.

Plan for tomorrow (and the rest of the week)I’m going to start another tutorial for DynamoDb, even if I only get a half hour tomorrow, and a half hour the next day, that’s still an hour more of experience and knowledge than if I don’t work on it at all. I’ll likely do a half day of work Saturday, and a whole day Sunday.

Ada Capstone Day 4: Productive Procrastination

I watched about 1/4 of the video from freeCodeCamp.org: Learn Python – Full Course for Beginners [Tutorial]. I felt pretty good when I could watch it on double speed and realized how much of it I really already knew, it’s really just some specific syntax things, but otherwise it’s very similar to Ruby. Hooray for knowing things!

PS – I thought the video was a great intro, particularly for a new developer, and python seems like a great language to start with.

I spent a bunch of time today procrastinating by doing other random tasks like creating a twitter account with the name of my capstone project, finding quotes to use in my database, paying for a WordPress account to update the theme of this blog and publish it to thenora.rocks, and organizing the plethora of too many chrome tabs and windows I’d accumulated. (I highly recommend a Chrome extension called Tabs Outliner. It’s a simple but awesome tool.)

The main reason I was procrastinating was Chalice and creating APIs with Lambda all felt really overwhelming to me. Hard things can lead to procrastination, but I caught myself and refocused on just getting started. I decided a YouTube tutorial felt more approachable to me today than a written one, so I started with Building an API with AWS Chalice (Part 1). Oh my goodness. To quote myself after my first technical interview: “It was not as scary and terrifying as I thought it would be.” So much of the challenge is often just getting started.

Making an API with Chalice *REALLY* is super easy.

I progressed on to learning about error messaging, having different functions for different methods within the same view, and some more basic use cases for Chalice. Mostly I was working off of the Chalice REST API Tutorial.

My big accomplishment: I am now blogging at thenora.rocks and have a more up-to-date theme for the blog. (This wasn’t really a priority, but thus productive procrastination.)
My big challenge: Getting started on unknown things is scary sometimes.

Plan for tomorrow: More Chalice! And starting on some DynamoDB, maybe with Chalice? Also need to schedule a meeting with my tutor to talk about PynamoDB, because there aren’t very many tutorials out there and the documentation doesn’t give much in the way of step-by-step tutorials.

Ada Capstone Day 3: Two Steps Forward, Three Steps Back

I picked back up with the Prerequisite: Setting up your environment tutorial from yesterday and virtual env. After filtering through a few other related tutorials about installing / updating python on MacOS, I found The Hitchhikers Guide to Python and Installing Python 3 on Mac OS X which led me to the next step of Pipenv & Virtual Environments. I still wasn’t able to get the virtualenv working, but I WAS able to get pipenv and until I can get help from someone else, it seems like they’re comparable and I can keep moving forward.

One thing I’ve learned on my journey to becoming a software engineer is that sometimes it’s not about finding *THE* solution, but just *A* solution.

But no, pipenv isn’t working… Back to the terrible command not found paired with the Requirement already satisfied when I try to install. It’s the same issue I was having with virtualenv.

I hit enough of a roadblock here that I needed to ask for help. After about an hour an instructor was able to hop on a call and troubleshoot with me. We came to the conclusion that it was a path issue and we updated my .bash_profile to add the location of the files that were responding with already satisfied. I tested it at the base root location, and pipenv worked! Yay! I thanked the instructor and logged off for a while.

And then I came back to it a few hours later and changed director to my working folder… and same issue as when I started. ARGH.

And then I realized it was because I was in my React folder and I needed to make a new project folder.

And back and forth from about a half dozen more rollercoasters of “Ah ha!” to “Oh no…”

Eventually, 2 minutes short of midnight and after many small mistakes, I was able to finish the Building Serverless Applications using AWS Chalice tutorial. Once I got through the dev env setup, it ended up being a pretty quick project. But it didn’t deal with any APIs or working with DynamoDB.

It was worth doing, but not exactly relevant to my project.

My big accomplishment: I finished my first capstone-related tutorial!
My big challenge: I had so many hiccups during the dev env setup that I was *this* close to bailing on Python and Chalice.

Plan for tomorrow: Learn a little bit about basic python and start an API-related Chalice tutorial.


Ada Capstone Day 2: Rabbit Holes & Dev Environment Frustrations

Today I spent hours finding different tutorials, adding them to my Evernote notebook, adding related Trello tasks, and spiraling down rabbit holes of related technologies.

[ A brief summary of hours of random spirals of rabbit hole research ] Do I need a CDN? Wait, what’s a CDN? Oh, I’m not going to have a lot of global traffic so I’m probably OK without one. What about AppSync? No? Seems like an alternate approach to API, different than my tech stack plans. A Certificate Manager? Seems like it might be a good idea…

Eventually, I finally started a tutorial. Well, a combination of tutorials…

I found a Medium article Building a serverless React app using AWS Lambda, DynamoDB, and an API Gateway, but I want to use Chalice, a python microframework instead of the API Gateway. So I found Building Serverless Applications using AWS Chalice on codementor.io to create . And finally, I want to deploy my React on S3, so back to Medium for Deploy ReactJS App with S3 Static Hosting.

I started down the first tutorial and build created my first DynamoDB table. [ Self high-five! ] But, the next step was creating a Lambda function, and I knew I wanted to use Chalice with Lamda, so I switched to the second tutorial.

I made an S3 bucket! [ Another self high-five! ] Then it wanted me to install Chalice and Boto3. But that used pip. And assumed I had Python installed. Another tutorial I’d found had what looked like a solid list for Prerequisite: Setting up your environment. I started following it but decided to download the latest version of Python. But then python --version was still showing the old version. Some googling suggested that it was an alias issue, and python3 had installed but if I wanted python to use that version, I needed to replace python3 alias with python… Ok. Done. Version works! Then the next step was to check the pip version… Command not found. Hmm… Dr. Google suggested pip3 may have been installed with python3. Ok, it seems like I could use the same alias update… but this is getting me suspicious something isn’t going right… [ As you can tell by my overuse in ellipses in the preceding sentences. ]

Next: virtualenv setup! Again, command not found. Dr. Google and I hung out for about another 45 minutes, but by this point it was about 12 am and I was super frustrated and decided just to be done with it until the next day.

My big accomplishment: I setup some things on AWS: My first DynamoDB table and S3 bucket!
My big challenge: I really didn’t expect to get stuck at the setup part of these tutorials…

Plan for tomorrow: Try again at the dev environment setup and then tutorial work.

Ada Capstone: Day 1

Yesterday marked the end of the classroom portion of the Ada Developers Academy for “lucky” cohort 13.

While today officially marks the start of a break week, for most of my 46 classmates it actually marks the start of a week of research, tutorials, and planning for our capstone projects.

By 9 am on Monday we must submit our tech stacks, and it’s the first time we’ve had choice in what technology we use. For me, I picked my project, platform, and front-end quickly. I’m going to make a motivational pomodoro-style timer to help people focus and be productive. I’m going to build it as a React website, with a Chrome extension. But I had no idea where to go with a back end, servers, databases, oh my!

Today’s research involves learning a lot about AWS products like DynamoDB

My big accomplishment: I bought a domain name!
My big challenge: Deciding where to start! There’s so much information out there. But I’m a kinesthetic learner, should I just start with a tutorial or two? Or do I start reading?

Work Samples Part 2

  1. Getting Engagement AND Clicks
    Part of the on-going struggle for Amazon marketing on Facebook was the conflict between clicks and engagement. Amazon often had great deals, but a jump drive goes on sale probably once a month. Fans would click through and buy, but seldom engage with the posts and engagement was key to reaching more of the audience. By referencing nostalgia for old floppy disks I was able to create an emotional connection for commodity-like USB flash drives.
    Deal of the Day: Transcend 32GB USB Flash Drive $19.99
  2. Understanding Your Audience
    Amazon Facebook fans tend to have a high degree of “social media snark” and would readily speak up when a message felt inauthentic to them. This held true even with giveaways of free things as part of our fan growth strategy. The more sweepstakes the company as a whole ran, the more fatigue and the less interest we saw. To counter this I designed giveaways that spoke directly to the audience. A heavy subset of our audience identified themselves as techies and geeks, so I designed a Halloween giveaway around the theme Pirates vs. Ninjas.
    Pirates vs. Ninjas Sweepstakes
  3. Recognize Community Content
    There was a struggle within Amazon to allow, let alone recognize and share community-created content. When a fun video created by some Amazon fans first popped up in my monitoring, I immediately began working with legal and management to find a way to share the fun with our fans. After building a case and justifying my request, I was successfully able to share with a little humility and reference for our most loyal Prime customers.
    Amazon Yesterday Shipping
  4. Create Community
    Outside of working with our customer service team to focus on the customers, it was an important part of my role to give people a chance to connect and feel appreciated by Amazon. While Amazon wanted social media to remain the brand and not a person representing the brand, it was important to still show the authentic side and excitement of the team. To recognize the moment when we reached 10 million fans we posted a spur-of-the-moment photo featuring references to some of our most popular posts.
    10 “Like” Salute to 10 Million Fans

Awesome Content Strategy 101: Editorial Calendars

Successful content strategy has three very important basic elements:

  • Content Audit
  • Style Guide
  • Editorial Calendar

For Part 1 of this three part series of posts, we will start by discussing editorial calendars.

An editorial calendar is a key component for any organization that creates content. When multiple people or departments are involved in the creation of content, it’s a necessity to save time, be more efficient, and avoid interdepartmental frustration.

A basic editorial content calendar should include content plans viewable by month and week with details 60-90 days in advance. An annual view should also be available at a high level.

Sources for content to add to an editorial calendar can come from both internal and external sources.

Internal

  • Track dates for new campaigns to launch/finish
  • Goals / Metrics

External

  • Relevant holidays, events, & days of interest
  • Publication and award deadlines
  • Industry events

 

You can create your editorial calendar in whatever format or content management system works best for you and your organization, but it should be able to be accessed by multiple people digitally.