rendezvous with cassidoo

Archive

🤘"If you expect your friends to be perfect, you won’t have any friends." - Bob Parsons

Hey team!

Welcome back! Sorry I missed out on sending this out last week. If I'm being honest, I totally forgot and went to bed early. Oops. 🙃 Anyway, onward!     My goodness friends, it was a crazy week of news. It really made me think about the capacity of humans to take bad news. I don't know if there's been any studies on the subject (I couldn't find any), but we're at a point in history where we're absorbing more news and information than ever before. It's easy to feel overwhelmed and small when you're so bombarded by . That being said, here are some of the things I've been grateful for during the past week for giving me a mental break: - Incredibles 2 + Ocean's 8, both really fun movies I genuinely enjoyed - The Great British Baking Show, basically a show chock full of wholesome memes - Fortnite, my latest game obsession - CodePen Challenges, it's so fun both coding and seeing what people have made - /r/MechanicalKeyboards, my home - The Steam Summer Sale, fun for the brain, bad for the wallet   Last time, I had you return a pair whose product is closest to a number, given an array and said number. !  I'm excited about this week's question, it's funky (and one that someone was given recently ): Example: waterTrap([2,0,2]) > 2 Structure is like this: {3, 0, 0, 2, 0, 4}) >10 Structure is like this: (We can trap 6 units of water between 3 and 2, 1 unit on top of bar 2, and 3 units between 2  and 4)     How do you think the unthinkable? With an itheberg.   That's all for now, folks! Hope you have a great week. Be safe, make good choices, and wash your hands.
#61
June 24, 2018
Read more

💠 "In the midst of chaos, there is also opportunity." - Sun Tzu

Hey friends!

I hope you had a great week! Let's get scootin.
 

Web links of the week

date-fns
Learn to build your own desktop chat app with React and Electron, one step at a time
ml5.js: Friendly Machine Learning for the Web
The React is “just” JavaScript Myth​
React Application Manager
 

Something that interested me this week

Phew, this past week was super busy for me! I was in 4 different states last week for 2 conferences, a wedding, and visiting some friends.
While doing all this traveling, I thought about how much a flight actually costs an airline. Between employing the staff that cleans and secures the plane, to the flight attendants, to the pilots themselves, as well as the cleaning and fuel costs, plus probably some kind of rent situation with airports... it was fascinating to think about. I found a Quora answer on the subject that was helpful, but didn't really cite any sources. The next thing I found that quenched my curiosity thirst was this PDF of a general cost breakdown.
Long story short: airlines make BANK. My last flight had 37 rows in it, with 6 people across each row, so 222 people. Let's say we (on average) all paid $250 per ticket, that's $55,500. For a flight that costs less than $4000 per hour for about a 3 or 4 hour flight, that is a pretty sweet margin. You learn something new everyday!
 

Interview question of the week

A bunch of you did the question for reversing a queue this week! Emma emailed me her solution:
static public LinkedList<Integer> reverseQueue(LinkedList<Integer> forward) {
    LinkedList<Integer> backward = new LinkedList<Integer>();
    return reverseQueueRecursive(forward, backward);
}

// recursive helper method
static public LinkedList<Integer> reverseQueueRecursive(LinkedList<Integer> forward, LinkedList<Integer> backward) {
    if (forward.peekLast() == null) {
        return backward;
    } else {
        backward.add(forward.pollLast());
        return reverseQueueRecursive(forward, backward);
    }
}

Meanwhile, these lovely folks tweeted theirs!

This week’s problem:

Given an unsorted integer array arr and an integer n, return a pair of numbers (from arr) whose product is closest to n.

Example:
closestProduct([5,3,8,2,7], 42);
> [5, 8]
 


#60
June 11, 2018
Read more

🎴"How we spend our days is, of course, how we spend our lives." - Annie Dillard

Hi friends!

We're back. I hope you had a great week!     I'm pretty stressed out right now, I admit! I have some really big projects and events coming up this next week, plus I'll be traveling (when I send my next letter, I will have been in 4 different states in 4 days), plus I have a friend's wedding to attend. Yikes! For stress relief, I've been taking breaks by watching the Great British Bake-Off on Netflix. My word, that show is wonderful! The hosts are so funny, the judges are fair, and the events in the show are exciting but not too tense. I really love it so far. It's also great for writing code (or this newsletter) without having to worry about specific plot points. I highly recommend it if you need a break.   Last week, I had you write a function that returns the sum of 1*1! + 2*2! + ... + n*n! given n. Here's my solution to the problem! function factSum(n) {   return _factorialize(n+1) - 1; } // My helper function that returns a factorial: function _factorialize(num) {   if (num < 0) return -1;   else if (num === 0) return 1;   else {       return (num * _factorialize(num - 1));   } } This week's question:     My husband gives me alphabet soup all the time, claiming I love it, but I don't. He's just putting words in my mouth!   Thanks for reading, friends! Have a great week. Be safe, make good choices, and keep your shoulders back.
#59
June 3, 2018
Read more

🥥 "I’d rather live with a good question than a bad answer." - Aryeh Frimer

Hey friends!

I was traveling a lot this past week (3 states in 6 days!) and I didn't have time to write this last time. So, this week is PACKED with HARD-HITTING jokes and links and stuff.     Phew, so glad to be getting this out the door. I have had such a crazy couple of weeks with family in town, big projects at work, and traveling. That being said, I hope you had a great couple of weeks and (if you celebrate it) a very happy Memorial Day! In terms of what I've been interested in... I recently discovered the . It's a completely mechanical calculator from the World War II era, which is fascinating to me! They're super expensive online, so I'll have to just read schematics or something to learn more about it. My next project I'd like to build is some kind of mechanical calculator, even if it's just basic addition or something. I'm fascinated with how little machines like that work. Plus, with today's technology, I might have to try 3D printing some parts!   I didn't do the last letter's question, and none of you did either. Oops. Hope you can figure it out! This week's question:     A couple jokes for you this time! I got my husband a "get better soon" card. He's not sick or anything, I just think he could be better. Have you ever tried blindfolded archery? You don't know what you're missing!   Thanks again for reading friends! Until next time! Be safe, make good choices, and use sunscreen.
#58
May 28, 2018
Read more

❄️"Life is a tragedy when seen in close-up, but a comedy in a long-shot." - Charlie Chaplin

Hey friends!

Hope you had a great week. And to all you moms out there, I hope you had a great Mother's Day!     I've been watching the show Friends for the first time over the past few weeks. It's been fun seeing so many references that I never really understood before, and how styles changed over the years. And how their not having cell phones really caused a lot of problems. :) I'm almost done, only a couple seasons left!   Last week, I had you implement a data structure and some functions for the board game Monopoly. Hope you enjoyed that one! Example: > charAt(5) > a > "fish".contains("i") > true     What did Batman say to Robin before they got in the car? "Get in the car"   That's all folks! Be safe, make good choices, and watch out for birds.
#57
May 13, 2018
Read more

🎾"You're smart too late and old too soon." - Mike Tyson

HELLO!

So so sorry this is late this week. I've been super busy with work last week and this week and have had very little time to myself! That being said: It's surfin' time.     This past week, my sister and I started a new Twitch show called ! Every Tuesday at 11am PT, we'll be working through building an Alexa skill ~live~ on Twitch. It's very silly but we have a good time doing it. Plus, every stream is recorded so if it's not saved on Twitch (I know the platform deletes some videos over time), we'll stick it on YouTube or something somewhere to save it forever. And hey, because this newsletter is late, that means you get to watch the show TODAY if you catch it! Please come say hi!   Last week I had you take an array and sort it with a stack. This week's question:     Today my husband asked me, "could I have my book mark?" and I broke into tears. He still doesn't know my name is Cassidy.   Phew, we made it! Sorry again about the tardiness. Have a great week! Be safe, make good choices, and say please & thank you.
#56
May 7, 2018
Read more

⛑ "Opinion is the medium between knowledge and ignorance." - Plato

Howdy friends!

It's that time of the week.
A day late.
Oops.
Onward!
 

Web links of the week

Writing WebAssembly by Hand
Gooact: React in 160 lines of JavaScript
Halftone video effect
How To Create An Audio/Video Recording App With React Native: An In-Depth Tutorial​
 

Something that interested me this week

I saw the Avengers: Infinity War movie this weekend. I won't spoil it. But all I have to say:
  • I'm mad it's not the last movie
  • It could have used more Shuri
  • It was a lot of context switching
  • Marvel is a marketing genius

Interview question of the week

#55
April 30, 2018
Read more

🐬"Wherever you are, be there totally." - Eckhart Tolle

Hello friends!

You made it. Thank goodness. Let's move.     This week I went through some fun typography tutorials. I thought was particularly fun. I used the techniques described in the article in Photoshop instead of Illustrator, which was interesting to figure out. I didn't know what to do with the pretty words I was suddenly able to make, so I made with one of the things I made! I'm all about passive income, even if it's just a few cents here and there. It adds up! I'm hoping these tutorials (among others) will help me make new fun things for people, while I learn more in the process.   Nobody did last week's question of counting palindromes in a sentence! I unfortunately didn't have time to solve it myself, but I found for your perusal. This week's question:     Why is "dark" spelled with a "k" and not a "c"? Because you can't see in the dark!   That's all for this week, folks! Have a good one. Be safe, make good choices, and don't be afraid to be emotional.
#54
April 22, 2018
Read more

😬"The risk of a wrong decision is preferable to the terror of indecision." - Maimonides

Hello friends!

Another week, another . Hope you had a good one, and if you didn't, I hope this next one is better! Apologies for sending this so late.     As some of you know, I really enjoy playing the . This week I made a pull request that was merged to the website that I play on, ! The front-end for the website is all open source (, they even have an API for you to make go bots easily), so it's being improved fairly regularly. The pull request I made was a super small (as in, one line of code), but it legitimately made me enjoy the site more. Whenever you open the site and you have a slower internet connection, the "loading" message on your game appears, and the shadow for that message was the color #888888, which is a light-ish gray and not the color of a normal shadow. I always thought it was ugly but didn't really think much of it, until I realized the site was open source. My pull request made the shadows are a soothing rgba(0, 0, 0, 0.26), AKA, a semi-transparent black color, and was merged in the next day! Now, whenever I get on the site and see that loading message, I get to see my pretty shadow, and I love it. It's the little things! I guess the lesson here is that even small changes can make an impact. :)   Got some great replies to last week's question about removing numbers greater than n in a list! is a link to a solution. :) This week's question: Examples: > "Hannah eats an evil olive in her Honda Civic" > 3 > "Flee to me, remote elf!" > 1   It's a mechanical keyboard week!   I once cut down a tree just by looking at it. It's true, I saw it with my own eyes.   Alright friends, that's all for now. Be safe, make good choices, and compliment someone today.
#53
April 16, 2018
Read more

😴 "A diamond is a piece of coal that stuck to the job." - Michael Larsen

Hey friends!

Hope you had a great week, and this one is even better. Speaking of this week, if you want in on my Scrabble keycaps I designed, , and if you want the full Scrabble keyboard,  left!     This was a fairly busy week for me! , did a lot at work, and also learned a fun new game that a friend gave us for our wedding this past winter. The game is called and it's basically an escape room built with cards. It was a blast to play, while stressful. It's one of the more cleverly designed games I've played in a while, and I highly recommend it! I also played several games of Settlers of Catan this weekend. I did not win. I don't want to talk about it.   Last week, I asked you to tally the number of land masses in a matrix of 0s and 1s! submitted ! Nice work, Andrew! This week's question:     What's it called when the blood bank makes a spelling error? A type-O!   And that's all for now, friends! Thanks for reading. If you'd like to support the stuff I'm doing, I've got , , and an inbox looking for jokes. As always, be safe, make good choices, and look up from your screen now to rest your eyes.
#52
April 8, 2018
Read more

🐥"Live as if you were to die tomorrow. Learn as if you were to live forever." - Mahatma Gandhi

Happy Easter, friends!

And if you don't celebrate Easter, happy Sunday! :)     This was a busy week! Some of the things that happened: - Went to the meetup - Talked about keyboards on - Performed at with the Seattle Video Game Orchestra - Watched Crazy Ex-Girlfriend Live - Practiced with my friend's electric guitar band - Coded on some secret things - Launched a group buy for a - Tweeted crap And thus, I have nothing more to say here. I am tired. Onward!   Last week I had you reverse the diagonals in an n*n array. ! This week's question: Example: [ [0,1,1,1], [0,0,0,1] [1,0.1.0] [0,0,1,1] ] > 3 bodies of land Bonus points: Do this without allocating extra memory!     A man goes to a funeral and asks the widow, "Mind if I say a word?" She says: "Please do." The man clears his throat and says: "Plethora." The widow replies: "Thank you, that means a lot."   That's all for now, folks! Be safe, make good choices, and stay humble.
#51
April 1, 2018
Read more

🥝"It's easier to fool people than to convince them that they have been fooled" - Mark Twain

'Ello, friends!

Welcome back. I was a little slow to send out the letter this week due to, well, life happening. Onward!     I started playing this week. It is SO FUN. It's exactly what I would want in a game inspired by the Hunger Games. 100 players are dropped on an island, and a "storm" surrounding the island gets smaller and smaller so all players are slowly forced into the middle to battle it out. Last person standing wins. I'm not that good at it yet (I've been in the top 25 about half the time and top 10 maybe a quarter of the time... getting there!), but it's been really fun trying different strategies and just learning little nuances of the game. I would love for more melee options for when you haven't found a weapon but want a fair fight. Maybe in later editions. :) Anyway, if you are ready to procrastinate on cleaning your room this week, check it out! It's free and pretty darn fun.   Last week, I had you write a program for a laundromat. I got a fun response from ! Thought it was a really clever use case. :) This week's question: Example: diagreverse({1, 2, 3,                      4, 5, 6,                      7, 8, 9}) > {9, 2, 7,     4, 5, 6,     3, 8, 1} Bonus: Do it for all types, not just integers. Double Bonus: Determine a way to do something similar for a matrix of n*m elements.     One of the awesome readers of this, Gaby, sent this one to me last week. I love it! What kind of car does an egg drive? A yolkswagon!   That's it this time, friends! Thanks for reading. If you'd like to support the stuff I'm doing, I've got , , and an inbox looking for jokes. As always, be safe, make good choices, and restart your computer regularly.
#50
March 25, 2018
Read more

🥁"If you want to lift yourself up, lift up someone else." - Booker T. Washington

Hello!

Phew, it's been a crazy week for me, but I'm glad we both got through. Let's go!     If I haven't spammed your Twitter feed enough this week about it, I'll tell you again: I released a project this week that I've been working on for AGES! It's a , officially licensed by Hasbro! Also, if you already have a board lying around that needs some flavor. The caps are actually selling better than the board bundle, which is exciting! This project has definitely had its ups and downs and I'm so glad it's finally out there for people to see. I first designed it after having a dream about typing on a Scrabble board. I mocked it up and played with the colors for a while, and then realized that if I ever wanted the design to see the light of day, I had to get permission to use it. And thus began the cold-calling. I emailed and messaged sooo many people on LinkedIn and elsewhere trying to find anyone that would hear me out, and finally got connected to an account executive who loved the idea! After getting him on board, I had to get someone who would help me manufacture it. Luckily, at a keyboard meetup last summer, I got connected to some of the folks at Massdrop who had told me that if I could get a license for my idea, they could help me bring it to life. And they did!! Massdrop has been awesome about helping me with the contracts with Hasbro, getting samples from the manufacturers, getting ~pretty~ mocked-up images of the keycaps, and they're going to help with distribution, too. It's been a lot of time and emailing and tweaking and hoping it'd work out, and it's so satisfying to see it finally get there. I won't tell you to buy it, but if you've got family or friends who like Scrabble, maybe this could be a great gift idea for them. ;)   Last week, I had you take in the coordinates of two rectangles and determine the area of their intersection! I got some fun answers from and  this time around. Keep 'em coming! This week's question: Bonus points: make a user interface on top of the program for someone to pick a machine and use it!   I'm celebrating keyboards this week. Here's some cool ones.   What's blue and doesn't weigh much? Light blue!   That's all for now, folks! Thanks for reading. If you'd like to support the stuff I'm doing, I've got , , and an inbox looking for jokes. As always, be safe, make good choices, and don't forget to floss!
#49
March 18, 2018
Read more

👂"Spiteful words can hurt your feelings but silence breaks your heart." - C.S. Lewis

Hey friends!

I hope you had a swell week. I know I did! Let's get scootin.     I admit this section took me a LONG time to write because I changed the topic so much. It was a pretty busy week, I got to see speak at SXSW, I have some family in town, and I have so many emails to reply to that I've just been avoiding my inbox like the plague! One thing though that I've been thinking about lately is passive income and monetization of projects. I'm trying to figure out the best avenues for doing that so I can have more freedom to dabble with projects and things that I enjoy that aren't necessarily free. So far my is doing well, but it's not so much that it can help out significantly with the bills. I am also working on a mechanical keyboard project with Massdrop right now that I'm hoping will 1) get more people to have better keyboards on their desks, and 2) will generate some income I can work with. Besides those things, pretty much everything I produce (side projects, this newsletter, tutorials, videos) I've been putting out for free. And I want to keep doing that, because I know what it's like to not be able (or even willing) to foot the bill for certain content. Plus, when you make things for free, there's a little more wiggle room in terms of accountability. If I had you paying for this newsletter, for example, I feel like I'd be bogged down with the responsibility of making it high quality purely for the sake of being paid rather than for the desire to provide good resources.  I have no idea what the solution is here. Is it donations, freemium content, a Patreon, or something else? If you have any suggestions at all, or examples of what you've done, I would love to hear them.   Last week I had you make a visualization of the International Space Station location. ! Color me impressed! This week's question: Example: > overlapArea([0,0,4,4], [2,2,4,4]) > 4     Batman: The Batmobile isn't starting! Robin: Why don't you check the battery? Batman: What's a tery?   That's all for now folks! Be safe, make good choices, and don't forget to stretch.
#48
March 11, 2018
Read more

📋 "Learning never exhausts the mind." - Leonardo da Vinci

Hi friends!

A little late this week. I was working late on a keyboard project last night and got too sleepy to finish. Oops. But here we are!     This week I finally did something that I've been wanting to do for a while: I learned about 3D modeling! Back in November I wrote here that it was my goal to learn more about it by the end of the year. I missed the mark there, but I'm really excited to have the skill under my belt! I ended up going with Autodesk Inventor. I know Blender is free and there's a lot of good options out there, but after experimenting a bit, it worked the best for me. I finished up a Udemy class to learn the basics and got experimenting, and have really enjoyed it. What will I model, you ask? My first thing that I've been working on for HOURS this weekend (I actually am taking a break from it to type up this week's letter) is a mechanical keyboard case! I've mentioned it in a few livestreams and tweets here and there, but I'm working on a project with Massdrop to get a custom keyboard in your hands hopefully by the summer or fall. I won't say more just yet, but I am PUMPED!   Last week, I had y'all find whether two strings had a common substring with each other! , complete with Spanglish comments.  This week's question:   It's International Women's Day this week! So have some articles about cool women. ...and a keyboard. Just a little one though.   I got this (great) one from one of my readers, Sumaiya! What is a functional programmer’s favorite animal? A lamb, duh!   That's all, folks! Have a great week. Be safe, make good choices, and try to do a pushup.
#47
March 5, 2018
Read more

🐸 "I survived because the fire inside me burned brighter than the fire around me." - Joshua Graham

Hey friends!

You made it to the end of the week! Woo hoo!      This week I was mostly consumed with work, Twitter (got to 10k followers 🎈), the Hamilton soundtrack, and looking into buying a euphonium. In terms of the euphonium: , it turns out! It's a big low brass instrument! I put a link in the section below about it. It's bigger than a trumpet and it's smaller than a tuba. It has a really, really pretty sound. I used the play euphonium way back in the day (as in, middle school and high school) and really enjoyed it, but have never owned one. Amazon has a bunch of brass bands that I've been thinking about joining, and there's been some parts in the Seattle Video Game Orchestra (where I play trumpet) that call for a euphonium that seem pretty neat. We'll see if I get one. I've mostly been scouring eBay for good deals. Fingers crossed!      you answered the question this past week! My favorite submission I admit though wasn't a solution at all: Tom Bredemeier ended up ! Totally brightened my day! Now, onto this week! Bonus: Return the common substring(s). Bonus x2: Do the original question plus the first bonus in less than O(n^2) time!     Two women are drinking in a bar. They pull out the sandwiches their husbands had lovingly prepared and get ready to chow down. The bartender comes over and says "you can't eat your own food in here." So they swapped sandwiches.   That's it folks, until next time. Be safe, make good choices, and eat a sandwich.
#46
February 25, 2018
Read more

👺 "The further a society drifts from the truth, the more it will hate those that speak it." - George Orwell

Hey friends!

Another week has gone by! I hope you enjoyed yours. Let's get crackin.     This weekend was one of the most entertainment-filled weekends I've ever had! On Saturday, my husband Joe and I went to see Hamilton in Seattle. It was absolutely FANTASTIC. Totally deserving of all the hype it's been receiving. I admit, at first I wasn't totally sold on the rapping, but it quickly grew on me. Joe and I both walked out of the theater with tears in our eyes due to the amazing story and characters. I've been reading and watching videos about Alexander and Eliza Hamilton (and several other characters) since then, and I can pretty much guarantee I'll be listening to the soundtrack for a LONG time. And then tonight, we went and saw Black Panther! That was probably one of the best superhero movies I've seen. The last one I saw in theaters was Wonder Woman, so between the two, I'm pretty set on superhero movies for a long time. The acting in that movie was flawless and the story was completely engaging. Plus I have a newfound girl crush on Letitia Wright now. This was another one deserving of all the hype.   Got some answers to this past week's question directly in my inbox, which was so nice to see. If you'd like me to feature your answer, please stick it in a tweet or a gist so I can credit you! That being said, to last week's question! This week's question: Example: > minimumDiff([130, 5, 20, 9]) > 4     I got this awesome joke from ! What part of the chicken has the most feathers? The outside part!   That's all folks! Hope you have a great week. Be safe, make good choices, and carry a pencil with you.
#45
February 18, 2018
Read more

😘"Curiosity will conquer fear even more than bravery will." - James Stephens

Hello friends!

Phew. I had a SUPER busy time at my first week on the job at Amazon. I'm really excited about it though. I was nervous for my first large company after graduation, but so far, so good!     I mentioned it above and I'm saying it again: it was my first week at Amazon this week! I had tons of onboarding and meetings, but it was really fun. I really didn't know what to expect this week. At my previous roles, there's been a little bit of mystery attached to starting (how to set up my computer, who I should know first, how I should start), and here, it feels like it's just so... taken care of. Large companies are definitely large for a reason: they have their crap together. Because everything was so clear-cut from the beginning, I could get right into meetings and contributing faster than I have at any job before. Now, I'm also older and wiser than I was when I first started out, so I do take that into consideration, but still. I really see the value of switching between small companies and large companies. The really solid practices I've learned just in one week would have been so valuable at the places where I've been before. And, the variety of experience that comes with a small company has been valuable for me to provide a perspective in meetings. Good food for thought. And now, onto week two!   Last week I had you reverse a stack with recursion!  had I recommend you check out. This week's question:     I have 5 eyes, 3 legs and 6 arms, what am I? A liar.   That's it friends! Be safe, make good choices, and send me jokes.
#44
February 11, 2018
Read more

😲 "Nobody realizes that some people expend tremendous energy merely to be normal." - Albert Camus

Hello friends!

I hope you had a great week. I had a week off in between jobs, which was fun, but I'm ready to be done. Also for you Super Bowl watchers out there: Go Eagles!     Today I officially started my new job at Amazon! Thank you so much to those who sent such kind notes about the role, I really appreciate it. This past week, I was fairly productive. I answered at least 200 emails, started making a table, took a class at church, coded a bunch, had a playdate with some of the moms in the neighborhood (I love cute babies), watched all of The Good Place (great show), and my husband and I went on a fun mini-vacation in where we ate tons of seafood and played board games together. I've really loved having a fairly relaxing week. That being said, I'm really excited to get back to work.  I can only be alone for so long before I get cabin fever!   Last week, I had you print out a Fibonacci triangle. someone wrote. Here's this week's problem!     What do you call an exploding monkey? A baboom!   Thanks for reading, friends. Have a great week. Be safe, make good choices, and wear your retainer.
#43
February 5, 2018
Read more

🍁 "Never hate your enemies. It affects your judgment." - Mario Puzo

Hi there!

Hope you all had a lovely weekend. I sure did! Let's boogie.
 

Web links of the week

Should you use CSS or JavaScript for web animations?
The building blocks of Web Workers + 5 cases when you should use them
How to build your own React boilerplate
Learning Elm From A Drum Sequencer
 

Something that interested me this week

This past Friday was my last day at L4 Digital! It was very bittersweet leaving the company. I really liked working there (and playing with the Glowforge, heh).

I'm officially off to Amazon! I start next week and I'm going to be leading developer voice programs there. I'm not entirely sure what it'll all consist of, but from what I know now, it's a role that'll be a combo of developing, dev evangelism, and technical program management. I'm really excited about it. I can't wait to show developers some of the awesome things they can make with Alexa, and help guide decisions around where the SDK will go. Plus, I'm going to get to work with my sister, which I'm extra pumped about!
 

Interview question of the week

We had some fun responses to our rope-cutting question last week!

Given the value of n number of lines, print the Fibonacci triangle.
> fibtri(4)
>
1 
1 2 
3 5 8 
13 21 34 55

Cool things from around the internet

Chimera split keyboard
This Affordable Prefab in Spain Only Took 5 Hours to Assemble
MIT’s New Ink Can Make 3D Printed Objects Change Color
Droughts, storms and global demand tests America’s love affair with avocado​
 

#42
January 29, 2018
Read more

🍄 "How soon 'not now' becomes 'never'!" - Martin Luther

Hello friends!

I hope you had a good week. I had a productive one myself. Let's get reading!
 

Web links of the week

A Guide to Building a React Component for npm
Manta
Instagram.css
The Ultimate Guide to JavaScript Frameworks
 

Something that interested me this week

My office got a Glowforge (that they ordered YEARS ago on Kickstarter and it finally came!) and I have been going absolutely ham on it. I've been making all sorts of things, like fun boxes, keychains, keyboard cases, and even board game pieces.  I have almost burnt down my office (twice) in the process, but it's been so fun!!  I've been learning more and more about laser cutting, materials to cut, and even just remembering some of the math of shapes to put things together.  It feels like the future, honestly. You can think of something, draw it out or type it, and with a push of a button you suddenly have this physical object that you can use. It's very much like building software, in a way, making something out of nothing. I definitely recommend trying out a laser cutter, if you have access to one!
 

Interview question of the week

Last week, I threw y'all a little bit of a softball and asked you to determine if there was a rectangle given 4 integers representing the lengths of each side.

This is an quality problem. If all four sides are the same length, or there are equal pairs, you have a rectangle. One of you folks came up with another interesting idea, too. 
function isRectangle(a, b, c, d) {
  if (a === b && a === c && a === d && c === d && b === c && b === d) 
    return true;
  else if (a === b && c === d)
    return true;
  else if (a === d && c === b)
    return true;
  else if (a === c && d === b)
    return true;
  else
    return false;
}


This week’s question:
Let’s say that you have a bunch of ropes of various lengths, and you want all of them to be the same length. You have to find the shortest one, and cut all of the ropes to be that length.
Given an int array of rope lengths, return a new array of how much each rope should be cut.


Example:
> ropeCuts([2,2,5,1,6])
> [1,1,4,0,5]
 


#41
January 21, 2018
Read more

🗺 "If you are giving best at your work, then you must have confidence in it." - Krishnendu Pramanick

Hi friends!

I hope you had a great week. I personally had a pretty productive one and I think I need a vacation. Heh. Onwards!     Yesterday was the 4th semi-annual Seattle Mechanical Keyboard meetup! It was such a fun time. We got to experiment with and test out boards that people built and customized, which was a blast. They also had an artisan keycap sculpting station, hand-wiring workshops, keyboard trivia, raffles, a photobooth (pics out soon) and of course, fun people. I brought a bunch of keyboards (my boards as well as some friends !) and did some trading with people. It's a nerdy hobby, but man, I love mechanical keyboards. I built a new one last night (I streamed the last part of it ), and I can't wait to make more. I highly recommend the hobby for anyone wanting to make something with their hands that's both beautiful and functional.   I'll admit, I didn't write a solution to last week's question, so I have nothing for ya. Hope you did it and liked it anyway! I'll do better, I promise. Sometimes life gets in the way. Anyway! This week's question: For example: > makesRectangle(1,2,1,2) > true > makesRectangle(5,6,7,8) > false Extra credit: Write this function for different shapes, like hexagon or triangle!   In honor of the mechanical keyboard meetup I went to yesterday, enjoy these beautiful keyboards.   A book just fell on my head. I’ve only got my shelf to blame.   That's all folks! Be safe, make good choices, and see you next time.
#40
January 14, 2018
Read more

💊 "From even the greatest of horrors, irony is seldom absent." - H.P. Lovecraft

G'day friends!

You survived the first week of the new year! Hope your resolutions are staying string. :)
 

Web links of the week

Stimulus: A modest JavaScript framework for the HTML you already have
Robust Client-Side JavaScript: A Developer's Guide
How JavaScript Works
Async + Await in 15 minutes
 

Something that interested me this week

This week was a busy one for me. I started watching Planet Earth II in the background while I typed away at emails. It's pretty awesome. I've decided that I'm going to make it my goal to keep my inbox at less than 40 emails consistently day-to-day. It's been working so far, but who knows how long this'll last. Emails take forever. I just realized that this is another one in your inbox. I'm a part of the problem.

...wow, this section was boring this time around. Heh. I'll get better. I hope you're staying warm this winter. :)
 

Interview question of the week

I got a TON of responses for last week's question!
Instead of writing my own solution, here are links to a few great ones. :)

This week's question:
Given an array of integers, find whether it’s possible to construct an integer using all the digits of the numbers in the array such that it would be divisible by n (where n is 1 <= n <= 9). If it's possible, return true, else return false.

Examples:
divisibleIntegers(n = 3, arr= [40, 50, 90])
> true // 945000 is divisible by 3
 

Cool things from around the internet

8 Bold Bathrooms That Don’t Back Away From Color
Bubblegum topre - BKE redux + kbdfans silencing rings
Oprah’s Golden Globes speech
 

#39
January 7, 2018
Read more

🎇 "The scariest moment is always just before you start." - Stephen King

Happy New Year!!

It's been a while since my last letter (took Christmas off, yolo). I hope you're doing splendidly and your 2018 is off to a good start.
 

Web links of the week

How to Build an Electronic Realtime Poll in 5 Steps
I just asked 23,000 developers what they think of JavaScript. Here's what I learned.
React State vs. Redux State: When and Why?
Docusaurus
Pantone Colors: 2000-2018
 

Something that interested me this week

Well, it's a new year! I'm personally pretty proud of a bunch of things I did this year.  It was a big year of changes, learning, and pushing out content!
  • Got married
  • Bought a house
  • Released todometer
  • Started this newsletter
  • Spoke at Twilio Signal
  • Spoke at DevRelCon Tokyo (visited Asia for the first time!)
  • Spoke at the Grace Hopper conference
  • Released my JavaScript and React Udemy course
  • Got to around ~10k ranking in Go
  • Had my first tweet with over 10k likes
  • Learned how to solder
  • Built a bunch of mechanical keyboards
  • Played through Last Of Us, Zelda: Breath of the Wild, and a bunch of Stardew Valley
  • Went outside on occasion (but for real, I think I hiked more this year than I have in my whole life)
  • Started rock climbing
  • Started to learn Korean (I can say blanket and sauna, what more do you need?)

Phew. What a year. I’m really proud of how much I worked on, and I’m hoping I can do even more fun things in 2018. Also, of course I’m looking forward to seeing what YOU build too. Tweet me if ever you want me to share something you’ve made, I’d love to spread the word!
 


#38
January 1, 2018
Read more

🌘 "Don't tell me the sky's the limit when there are footprints on the moon." - Paul Brandt

Hello friends!

I hope you had a great week. I personally had a cold this week, but it was a good way to kind of reset myself after a couple days of it. Let's get reading.
 

Web links of the week

Finally understand Redux by building your own Store
Getting started with PWA using Vue
Font-display
Calendar with CSS Grid
 

Something that interested me this week

I saw a cool video about how rubber bands are made this week. It was a cool video, but it started to make me think about more than just rubber bands. Everything we have ever touched was made by someone. I'm typing this while under a blanket that was designed by someone, I'm typing into an app that was built by someone, I have a show playing in the background that was made by hundreds of different people. I know it's probably silly to think about things like that, but it definitely helps put ideas (especially product-oriented ones) into perspective.
 

Interview question of the week

Last time, I had you sort a stack of integers from least to greatest using another stack.
Here's a solution to the problem:
public static Stack<Integer> sortstack(Stack<Integer> input) {
  Stack<Integer> tmpStack = new Stack<Integer>();
  while(!input.isEmpty()) {
    int tmp = input.pop();
    while(!tmpStack.isEmpty() && tmpStack.peek() > tmp) {
      input.push(tmpStack.pop());
    }
    tmpStack.push(tmp);
  }
  return tmpStack;
}
Here's this week's question!
Write a function that prints a Christmas (or just pine) tree with N rows.

Example:
> printTree(3)
​  *
  -
 ---
-----
 

Cool things from around the internet

Pumphouse Point: Rugged simplicity and unrefined comfort
2017: The Year of the Blob
@paint_mixings on Instagram
This battlestation with keyboard shelves
 

#37
December 17, 2017
Read more

🚿 "A witty saying proves nothing." - Voltaire

Hi friends!

Another week has come to a close. How fun. I hope your first full week of December was swell. Let's scoot!     I started playing Stardew Valley. I'm both so happy and also struggling not to play CONSTANTLY. If you don't know what it is, is a top-down pixel art role-playing-game (oh my) with farming, mining, social interactions, magic, and moooore. I think of it as a combination of Minecraft, the Sims, Pokémon, and Harvest Moon. Which is a lot. But it's so good. My favorite part of the game is definitely the pixel art. It was very well-thought out and the details of every single free and building is so intricately done. I looked into the game, and it turns out it was built by one person over a 4.5 year period! He did an a couple months ago which was a really fun read to hear a little "behind the scenes" of the game. If you're looking for something to play, I definitely recommend this one. It's on pretty much every modern platform you can think of, so don't be limited by console or OS!   Last week, I asked if you were given an array of numbers, how you'd a list of all pairs that add up to zero. Here's my solution to the problem: Here's this week's question!   I tell dad jokes but I have no kids. I’m a faux pa.   Thanks for reading friends, until next time! Be safe, make good choices, and get enough potassium.
#36
December 10, 2017
Read more

🦁 "The best preparation for tomorrow is doing your best today." - H. Jackson Brown, Jr.

Hello friends!

Welcome back. We finally made it to December! Hope you're staying warm and cozy this season. Let's boogie.     This weekend was the 40th ! It's an online game jam (aka hackathon for games) that happens every 4 months. I started attempting to participate, but seeing as I haven't made a game before, it didn't go well and I backed out this time around. I'm going to work on learning more about game dev so I can participate in the future. That being said, I learned about a bunch of cool resources for game dev, like and and . Some of the submissions are coming in and they look amazing (). I really hope that something I make can in the future is half as good as some of these. Until then, I'll just be watching and learning!   Last week, I had you find a unique number in an unsorted array of duplicate numbers. There's a ton of different solutions to this problem! Some people were able to , and one guy wrote on his approach. My favorite answer (purely because it's really interesting) is , where you XOR all of the elements in the list, and the only element that isn't 0 as a result is the answer. This week's problem:     I just got a new bike for my husband. It was a good trade.   That's all for now, folks! Be safe, make good choices, and see you next time!
#35
December 3, 2017
Read more

🦃 "Whether you think you can, or you think you can't - you're right." - Henry Ford

Good morning, afternoon, or evening, whenever, or wherever you are!

I hope you had a great week. I personally was off visiting the new in-laws this week, and we had a pretty delicious Thanksgiving dinner. But alas, now it's back to the real world. Let's surf.     This week I decided to make a goal of learning how to 3D model more by the end of the year. My ultimate goal is to 3D print parts for board games and keyboards, but that might not be feasible for a little bit. My plans to practice are as follows: - Research softwares (currently leaning towards Blender because it's free, but Autodesk has free trials for their products so I might try that too) - Take an online class to learn the basic tools and shortcuts (I found a few on sale for Black Friday, so I nabbed some of those) - Try to recreate some existing pieces in board games I have (obviously going to start simple like coins, then hopefully work my way up to houses, animals, and maybe trays for the sets) - Design my own board game with pieces - Profit ...well, I probably won't profit. I think there was an Onion article once about someone taking years and years to make their own board game. That'll probably be me. Oh well. Anyway, hopefully I'll have something to show by the end of December!   Last week, I had you write a function that takes in text, and returns a 2D array where the larger array is broken up by sentences, and the inner arrays are broken up by words. Here's my solution: I got carried away with the regex after realizing that sentences can have numbers in them. So what this does is capture a punctuation mark, checks that a capital letter happens after it, and if so, it replaces it with a ~. Then I split the sentences based on the ~, and then split each of the words in the sentence by a space. Woo hoo! This week's question: Example input: [1,2,3,6,4,9,9,2,1,4,6] Example output: 3   I'm in a keyboard mood today. So all of these are keyboards. Deal with it.   Most people are shocked when they find out how bad I am as an electrician.   Alrighty friends! Hope this next week for you is a bundle of fun. Be safe, make good choices, and get ready for December!
#34
November 26, 2017
Read more

🌀 "Each moment has the potential to be special and memorable." - Steven Redhead

Hey friends!

I'm married! Ahhhh! Hope you all had a splendid week. I definitely did. Last weekend was the first week I didn't send out a letter since starting this newsletter thing, and it felt so wrong. But then again, I had a decent excuse.
Now let's get back at it, and let's get groovin.
 

Web links of the week

Seamless loop SVG stroke animations
js2flowchart
Essential Image Optimization
Integrating React and Vue Components in One Application
Frappé Charts​
 

Something that interested me this week

Phew, between my wedding and my Udemy course and a couple side projects, I have had 0 free time in the past couple months. It's weird being able to have the freedom to watch TV (just finished Stranger Things 2!) and just have a few nights of not doing anything super productive. I almost feel guilty about it. There was a good thread about this on Twitter the other day. Learning to be okay with not being productive all the time is something that has taken me a long time to grasp, and I'm still working on that.

All that being said, for those who don't feel like taking any nights off, coming up next week is the beginning of December, which means it's 24 Pull Requests season! If you don't know what that is, it's an initiative that's like an advent calendar of pull requests to benefit the open source community. Consider giving back to the tech community with your coding skills this season!
 

Interview question of the week

Last time, I had you write a function addg that adds from many invocations, until it sees an empty invocation.
Here's my solution!
function addg(a) {
  if(a === undefined) return a;
    return function g(b) {
      if(b !== undefined) {
        return addg(a+b);
      }
      return a;
    };
  }

This week's question: 

Write a program that takes in a text file of sentences, and returns a 2D array where the larger array is broken up by sentences, and the inner arrays are broken up by words.

For example, if the text file contents are:
I find fire to be dangerous and wild. It destroys all things in its wake. It can't be tamed. Like me.

The output would be:
[["I", "find", "fire", "to", "be", "dangerous", "and", "wild.",],
  ["It", "destroys", "all", "things", "in", "its", "wake."],
  ["It", "can't", "be", "tamed."],
  ["Like", "me."]] 
 

Cool things from around the internet

Learn Calligraphy with Augmented Reality
La Muna By Oppenheim Architecture
Foodles and Hand-Lettering: A Recipe For Brilliance
A mechanical calculator
 

#33
November 19, 2017
Read more

💥 "So shines a good deed in a weary world." - Willy Wonka

HELLO FRIENDS!

Sorry for the second week in a row sending this to you on a Monday. I've got that whole marriage thing happening next weekend, and I launched my Udemy course today!!
    I'm later than usual in sending this out because: 1) I'm getting married on Saturday! 2) I am launching my Udemy course on JavaScript and React TODAY! My time has been completely consumed with these two things, and I'm SO excited that this week is finally here. The link above gets you the course for free! But, there's a limited number of slots (a girl's gotta eat), so run fast! If you end up not getting a free one, you can still get it for $10 .  I promise I won't advertise my stuff too much. I know that's annoying. I'm just really excited about this one! If you do end up taking it, and let me know what you think!!   Last week, I had you write a multiply function in JavaScript which will produce the following outputs when invoked: console.log(mul(2)(3)(4)); // output: 24  console.log(mul(4)(3)(4)); // output: 48 Here's my solution: Here's a similar question for you this week:   Why has the world's fastest land animal never been married? Because he's a cheetah.   That's all for now friends! Be safe, make good choices, and enjoy the week!
#32
November 5, 2017
Read more

📮 "Treat everyone like they're you, living another life." - Joe Rogan

Hi friends!!

So sorry for the little delay in getting this into your inbox this week. I'm officially less than 2 weeks away from getting married, and it is CRAZY around here!
 

Web links of the week

6 myths of Progressive Web Apps
Launch a Rocketship
accessibilityjs
Tabbed interfaces
 

Something that interested me this week

This week, besides being all hands on deck for the wedding, I've been working super hard on finishing up a JavaScript and React class on Udemy! Anyone who's talked to me in person has been witnessing me slaving on this class for months now, and I'm so excited that it's almost done.

I'm planning on launching the course next week!! You, as my ever-loyal subscribers, will get first dibs on some free coupons for the class (I don't actually know how much it'll cost yet, I'm partnering with Udemy and they're determining the final price later this week). I do have an ask: if you have any newsletters, blogs, groups, or whatever to whom I can send some coupons (or even just plugs for the course), I would really appreciate it! I've been told that if I can get a lot of students before Black Friday, it'll be much easier to have some credibility on the site.

Making a class has been a lot harder than I expected. I first started planning the course back in March, and thought I'd get it done no problem by now. But, nothing's ever easy. After planning out the course title, target audience, marketing copy, and objectives, I had to actually draft out all of the topics and concepts I wanted to cover. Then, I had to put all of that in a spreadsheet, with estimated "lecture" lengths and segment descriptions. And after that, I had to outline all of the different lectures (of which there's almost 100 for this class, in varying lengths) and figure out which would be just slides, which would be code samples, and which would be "talking heads" (as in, you just seeing my head, talking). Once that planning was done, I started writing individual scripts for each video, filming each one, editing them, and uploading them to the Udemy site. I also have had to write quizzes and activities, and actually do each of them too so that students have the solutions on-hand as they learn. The filming and activities part has taken forEVER. Every time there's a loud noise outside I'd have to re-film, every time I stumbled on a sentence I'd have to go back and add X amount of editing time to that video... it's been a journey for sure. I definitely have a newfound appreciation for online teachers.

Anyway, that's been my big side project of the past several months (besides, you know, getting married), and I can't wait to launch it to you folks!
 

Interview question of the week

Last week, I had you take a given an integer array and two numbers x and y, print x numbers from the array, such that difference between any two pairs is divisible by y. If there were no x numbers, then you'd print -1.

I didn't have time to write my own solution for this one this week (see previous section for why), but here's a solution I found online for ya!

And here's this week's question!

Write a multiply function in JavaScript which will produce the following outputs when invoked:
console.log(mul(2)(3)(4)); // output: 24 
console.log(mul(4)(3)(4)); // output: 48
 

Cool things from around the internet

An Ode to the Number Pi
The Pyramid Case for Planck
Mozart Trumpet (Oboe) Concerto K. 314 I Allegro Perto
Ariel​: Furniture Design
 

#31
October 29, 2017
Read more

☎️ "Extraordinary claims require extraordinary evidence." - Carl Sagan

Hello friends!

Welcome back!  I hope your weekend was nice and relaxing, and even a little productive.
 

Web links of the week

ES2015+ cheatsheet
Grumbler: A template for writing distributable front-end javascript modules.
An imperative guide to forms in Vue.js
Creating Awesome SPAs With React
 

Something that interested me this week

This week I watched several awesome woodworking videos. Someday, I really want to work with wood and build furniture and decorations for myself.  Watching videos of artists and makers putting things together, whether it be pixel art, paintings, furniture, sculptures... it's satisfying to see, and inspiring.  Being in tech, which if you're reading this, you are aware, often makes you think in one mindset for long periods of time.  Seeing how others in completely different fields work is so good for just clearing your head or just having something you can learn from playing in the background.

Here's one of the videos I saw this week.  It's a long one, but it's amazing to see the effort that went into the project.
 

Interview question of the week

Last week, I had you write the psuedocode for an algorithm that determines if one of the numbers is present for more than half the list.

I ended up writing code for it because I kept questioning myself. Classic.
function majority(arr) {
var candidate = 0, // doesn't matter what this is initialized to
  count = 0,
  ret = 'none',
  arrSize = arr.length / 2;

arr.forEach((v) => { if (count === 0) { candidate = v; } if (candidate === v) { count += 1; } else { count = 0; } if (count >= arrSize) { ret = ‘majority is: ‘ + v; break; } });

return ret; }
I personally think I could do it in a more efficient way (since this is, worst case, O(n)), kind of like they’re mentioning here, but this is what I came up with so far. :)

On to this week’s question!

Given an integer array and two numbers x and y, print x numbers from the array, such that difference between any two pairs is divisible by y. If there are no x numbers, then print -1.

Example:

differencePair([1, 8, 4], 2, 3) 
> 1 4
#30
October 22, 2017
Read more

🚤 "Never mistake motion for action." - Ernest Hemingway

Good morning, afternoon, evening, whenever and wherever you might be!

Hope your week was splendid.  Mine was fairly busy, but I'm hoping for a more relaxed one soon!
 

Web links of the week

The end of Framework Churn
Service Worker Gotchas
The transformation of the transform
Setting up Webpack, Babel and React from scratch, revisited​
Web Audio Modem
 

Something that interested me this week

This week I gave a webinar on Vue.js with Shopify!  If you'd like to check it out, they posted it online.  In it, I talk about why Vue is great, and then live-code up a GitHub user search with Vue and the GitHub API!

Here's a link to the webinar, and because I got several questions about it, here's my vim setup. :) 
 

Interview question of the week

Last week, I had you build a queue in the language of your choice.  A few people sent me their implementations; here's one from Kyle Hodgetts in Go!

Here's my implementation in JavaScript:
function Queue() {
  this.q = [];

  this.peek = function() {
    return this.q[0];
  }

this.push = function(x) { this.q.push(x); }

this.pop = function () { var ret = this.q[0]; this.q.slice(1); return ret; } } Usage:

var t = new Queue()
t.push(4)
t.push(10)
t.peek()
> 4
t.pop()
> 4
t.peek()
> 10
#29
October 15, 2017
Read more

👛 "You only live once, but if you do it right, once is enough." - Mae West

Hello hello friends!

I hope your week was wonderful. I was at a conference this week (I'll talk about it below) and I'm still in recovery from all the talking and walking. Let's go!
 

Web links of the week

Weex: A framework for building mobile cross-platform UI
Integrating SVG into your site
Await and Async Explained with Diagrams and Examples
Vuera: React in Vue, Vue in React
ppipe: pipe values through functions
 

Something that interested me this week

This week I was at the Grace Hopper Celebration for Women in Computing, also known as GHC.  I've been to GHC several times before (back when it was only around 3,000 people), and this year the conference hit around 18,000 attendees!  There were some really interesting sessions, both technical and non-technical.  I very highly recommend watching the keynotes in your spare time.  They were inspiring, encouraging, and motivating.

I also gave a talk with some amazingly talented and hard-working ladies about differentiating yourself with a multidimensional career.  If you're wondering what that means, one of the big points that I want to emphasize is: if you're a parent, a hobbyist, a maker, or full of side projects and interests, those things are not just extracurriculars outside of your day job.  Those things are a part of you.  When you go into a workplace, define your whole self when you talk about what you bring to the table.  When your employers and co-workers see that your job isn't your life, it's a part of your life, then you can be more honest with them (and sometimes even with yourself) in the workplace, you can prioritize better for yourself, and you'll be happier overall.

Anyway, GHC was awesome this year.  I highly recommend it to both women and men in the tech industry.  Next year it'll be in Houston, so get ready!  :)
 

Interview question of the week

Here's my quick solution to last week's problem. If you remember the distance formula from high school, you probably had an easier time with this one!
function reachable(armLength, armOrigin, jointPosition, target) {
  let a = armOrigin[0] - target[0];
  let b = armOrigin[1] - target[1];
  let c = Math.sqrt(a*a + b*b);
  return c <= armLength;
}

I didn’t do the extra credit joint position part of the question because I was busy at the conference this week.  As you can see, without the extra credit, the jointPosition variable doesn’t matter as much. Hope you got it anyway!

This week’s question:

Implement a queue, with functions push(), pop(), and peek().
 


#28
October 8, 2017
Read more

🍗 "Don't wish it was easier, wish you were better." - Jim Rohn

Hello friends!

Hope your weekend has been splendid. I've been busy working on side projects this week (with at least half of them having deadlines at the same time), so it's been a little stressful, but good.  Let's surf!
 

Web links of the week

GitPoint app
How I Built My Own "React" in Two Days - and Why I Did It
Modern JavaScript Cheat Sheet
Get to know the Actor Model
nivo
 

Something that interested me this week

I was watching some game development live streams this week and learned about a concept called Inverse Kinematics. Long story short, it's to calculate positions in a joint system so that it will reach a certain goal. Outside of game development it's used a lot in robotics (a friend of mine mentioned working on a robot that grabbed certain objects using this algorithm).  Here's a cool article on the subject that has some helpful pseudocode and practice scenarios, and here's another with some great diagrams.
 

Interview question of the week

We had a few answers to last week's interview question. Here's how I did it!
function duplicate(arr,n) {
  return (arr.toString() + ',').repeat(n).split(',').slice(0,-1);
}

I’m pretty proud of this answer. It turns array arr into a string, adds a comma to the end (because in JavaScript, turning arrays into strings keeps the commas), uses the string repeat() function n times, converts the resulting string back into an array by splitting it with the commas as delimiters, and then removes the last element (which will be blank because of the trailing comma).  I love one-liners!

And here’s this week’s question:

Let’s do a (sort of) inverse kinematics question. Given an int armLength, int pair armOrigin, int jointPosition, and int pair target, return a boolean true if the target is reachable by the arm.

Example:

> reachable(15, [0,0], 5, [10,10])
> true
#27
September 30, 2017
Read more

🌶 "If you have a strong purpose in life, you don't have to be pushed. Your passion will drive you there." - Roy T. Bennett

Hey friends!

What a week, what a week. This weekend I saw the Zelda Symphony of the Goddesses and it was awesome. Hope you had great weekend plans too. And now, INTERNET!
 

Web links of the week

Relicensing React, Jest, Flow, and Immutable.js​
"The Notch" and CSS
A Guide To Virtual Reality For Web Developers
Setting up Vim for React development
Accessibility for developers: Building a frontend that everyone can use
Reactive Animations and CSS Variables
 

Something that interested me this week

For those of you who follow me on Twitter, you might know that I teach an HTML and CSS class (and soon JavaScript) at a local community center. Some coworkers and I (along with a couple other volunteers) got together to build this course, and it's been really rewarding being able to help a community that can really benefit from it.

This weekend, we held our first adult class! We had been teaching middle schoolers before, and it turned out their parents were also interested in the course too. It was fascinating noticing the differences between the two classes. Some were obvious, like how the adults paid attention SO MUCH BETTER than the kids, and some were surprising, like how much more quickly the kids were able to pick up the concepts compared to the adults. The adult class was definitely fun though, at the end they had a lot of practical questions like how to set up online shops, how to continue learning, resources at the library, and what tools are best for beginners.

We had a bunch of laptop donations from people around the country that made this class possible. Many people in the community don't have computers, and we were able to teach our entire class with the donated computers. Huge huge thanks to those out there that offered their help, it really made a difference! If you're interested in hosting a class yourself, I have a fairly large open-sourced HTML & CSS tutorial that we use as our "curriculum" and you should feel free to use it yourself!
 

Interview question of the week

Last week, I made a mistake in the solution for the problem (it should have been 44, not 45). Sorry about that to anyone who tried it out!

I also got a request for solutions to the previous week's problem. Ask and you shall receive!
function seatsInTheater(nCols, nRows, col, row) {
   var min = ((nCols - col + 1) * (nRows - row)) + (nCols - col);
   var o = col * (nRows - row) + (col - 1);
   if (o < min) min = o;
   return min;
}
This week's question:
Write a function duplicate that takes in an array arr and an int n, and returns an array that duplicates arr n times.

Example:
> duplicate([1,2,3,4,5], 2); // [1,2,3,4,5,1,2,3,4,5]
 

Cool things from around the internet

Zebra Boat: An electric boat with a classic look
Miami Nights keycap set
The Beautiful Relationship Between Physics and Jazz
A Greek Hotel Made For Families with Little Travelers​
 

#26
September 24, 2017
Read more

🐥 "Opportunities lie in the place where the complaints are." - Jack Ma

Hola friends!

Another week has passed. At last! Hope you enjoy the next one.
 

Web links of the week

Yes, That Web Project Should Be a PWA
Every programmer should know
Rythm.js: A javascript library that makes your page dance
innerself: A tiny view + state management solution using innerHTML
The zen of Just Writing CSS​
Quokka.js: Live Scratchpad for JavaScript
 

Something that interested me this week

This week, I discovered and competed in an event called Pundamonium, a monthly pun-making competition in Seattle! It was SO fun. There are 10 people competing, and each are given a topic and 15 minutes to create a pun-filled standup routine around that topic. Topics can be pretty much anything; my opponents had some like Star Trek, 90s music, and dinosaurs. Mine was "Australia", and I talked about how I "kangaroo" out of some bad habits, and a bunch of other "auss-ome" stuff. Then, for round 2, we had to pick a topic out of a hat and you had 30 seconds to come up with a routine around that. For that one, my topic was "fruit" and I talked about how Seattle is "bananas" and how a lot of people "tomato" the line when they come up and talk to you. And finally, in the last round, the top four punsters went head-to-head and had to pick a topic and say as many puns as they could back and forth until someone couldn't anymore. My topic for that one was "ocean" and I floundered a little bit, but it was still super fun.

After the show, I went on to watch some videos online and found a whole subculture of people who do pun competitions for prizes. This video was probably the most impressive I saw, where the punster did a whole politics routine and named every U.S. president IN ORDER as she went through it. Amazing.

I don't know if I'll do Pundamonium again (it was fun but VERY stressful trying to come up with enough jokes in time), but it was a blast and I definitely recommend checking it out if there's one in your area!
 

Interview question of the week

You are in a full movie theater, and need to use the bathroom. Write a function that will determine the minimum number of people you will bother by getting up to go to the bathroom (assuming the people in your row and everyone behind your row as you stand up and walk will be annoyed with you), given your seat row and column, and the number of rows and columns in the theater.

For example, when numCols = 16, numRows = 11, myCol = 5 and myRow = 3:
> seatsInTheater(numCols, numRows, myCol, myRow)
> 45
 

Cool things from around the internet

Empathy Is a Clock That Ticks in the Consciousness of Another: The Science of How Our Social Interactions Shape Our Experience of Time​
AtF Spark Font
Dasher/Dancer keycap set
This Modular Eco-Hotel Room Is Poised to Drop Into Nearly Any Setting​
 

#25
September 17, 2017
Read more

🚂 "If you want to lift yourself up, lift up someone else." - Booker T. Washington

Hey friends!

I hope you're all staying safe with the insane weather out there. Please avoid floods and fires, fam.     This was such a busy week for me, personally, but luckily I got to take a little break and see some fun tech at the this morning. My favorite talk was a live-coding one about , and it definitely motivated me to mess more with Vue. So, that being said, I'll keep this short today so you can get cracking on the interview question below. I'm pretty proud of it. Onward!   Example input: Extra credit: Make an app out of it!     I really love playing chess with elderly people in the park. It's just really hard to find thirty-two of them willing to do it.   There you have it, friends! Be safe, make good choices, and sit up straight.
#24
September 9, 2017
Read more

🛍 "Let me never fall into the vulgar mistake of dreaming that I am persecuted whenever I am contradicted." - Ralph Waldo Emerson

G'day friends!

Hope you all had a great week. I had a busy one. Let's surf.     I've been trying to find focusing music this week as it's been a busy one. Usually I try a lot of classical music to concentrate, but the band nerd in me ends up conducting like a fool. A fool, I tell you! Anyway. I've found some fun music that has really helped me, and thought you might enjoy it: Anyway, that's what I listened to this week! I'd love recommendations if you send me a shout on Twitter.        What do we want?! Low flying airplane noises! When do we want them?! NNNNEEEOOOOOWWWWWWW   It's been fun friends, have a great week. Be safe, make good choices, and be nice.
#23
September 4, 2017
Read more

🌾 "Hard work beats talent when talent fails to work hard." - Tim Notke

Heeeellllooooo friends!

Hope you're having a good week. Mine was busy, which is better than boring. Let's get scootin.
 

Web links of the week

How to create a Neural Network in JavaScript in only 30 lines of code
The What and Why of Redux
Typical JavaScript interview exercises (explained)
How My 10-Year-Old Learned Javascript
 

Something that interested me this week

This week, I wrote a tweet that got pretty popular (before tell me how to quit vim: I know how to quit vim)!
As my phone started to rapidly die from the notifications, I started looking into how to find out what made the tweet so popular (besides my amazing sense of humor).

First of all, I found out that Twitter Analytics is free and pretty easy, which was a pleasant surprise.  It seems more geared towards businesses, but it's fun to see the number of impressions you make over time (my tweet pushed me to over a million for the past month!) and the amount of engagement around each tweet.  I also learned, fun fact, you're limited to making 1,000 tweets per day (which is a LOT of tweeting, so I doubt that'd be an issue for anyone).  Anyway, after hunting around for tools, I struggled to find out which retweets pushed it out to the most people.  Twitonomy was helpful, but only showed the most recent 100 retweeters on their free plan.  TweetStats was also interesting, but mostly just showed graphs of who you reply to most often (that's what I found most tools to do).  In the end, just from scrolling on the tweet itself, I did see that Tim Pope, SwiftOnSecurity, Stack Overflow, and the GIMP retweeted it, but that's probably as far as I'll get (without paying for a business tool, which really, I don't need).  Anyway.  On with the show!
 

Interview question of the week

Write a function that takes in an integer n that prints a ”spiral” of n × n numbers, using constant space (no arrays allowed).

For example, here’s what the spiral looks like for n = 10:
99   98   97   96   95   94   93   92   91   90
64   63   62   61   60   59   58   57   56   89
65   36   35   34   33   32   31   30   55   88
66   37   16   15   14   13   12   29   54   87
67   38   17    4    3    2   11   28   53   86
68   39   18    5    0    1   10   27   52   85
69   40   19    6    7    8    9   26   51   84
70   41   20   21   22   23   24   25   50   83
71   42   43   44   45   46   47   48   49   82
72   73   74   75   76   77   78   79   80   81
 

Cool things from around the internet

Do We All See the Man Holding an iPhone in This 1937 Painting?
Duck BlackBird with GMK 9009, GMK Muted 3A/3C kit and Duck Block
What a Physicist Sees When She Looks at a Fancy Gown
Biography of Katherine Johnson, who turned 99 this week
 

#22
August 27, 2017
Read more

📼 "Without memory, there would be no civilization, no society, no future." - Elie Wiesel

Good morning, afternoon, or evening, whenever and wherever you are!

It was a tough week in the world. I hope you're taking care of yourself and others. Let's boogie.
 

Web links of the week

10 guidelines to improve your web accessibility
Hot and Sticky: The Process
Web fonts: when you need them, when you don’t
Web Maker: A blazing fast & offline web playground in your browser
Using ES2017 Async Functions​
 

Something that interested me this week

This week was such a tough one with the horrifying events in Charlottesville and Barcelona.  I rewrote this section of the newsletter at least 9 times trying to come up with the right words to say (I upped the count in this sentence every time). Racism is bad. Nazis are bad. Terrorism is bad. Call it out and reject it when you see it, or see people sympathizing with it. Be strong and care for one another.

Unrelated, when I was looking for music videos to code to this week, I discovered this one, and thought you might enjoy it.
 

Interview question of the week

Change or add only one character in the following snippet so that the program prints * exactly 20 times. There are at least 3 solutions to this problem.
    int main()
    {
         int i, n = 20;
         for (i = 0; i < n; i--)
             printf("*");
         getchar();
         return 0;
    }​
 

Cool things from around the internet

ErgoWing mechanical keyboard build log
Split70: an Ergonomic Split Keyboard
When Exactly Will the Eclipse Happen?
Coming Soon’s handmade infographics
 

#21
August 18, 2017
Read more

🔮 "You must always be willing to work without applause." - Ernest Hemingway

Howdy partners!

Welcome back. I hope this upcoming weekend is a productive one for you. Or, if you need a break, do that. Play some Zelda. Eat some ice cream. Enjoy the sun. Code indoors. Follow your dreams.   veryone should have the opportunity to be technical if they want to. Everyone can contribute technically, and maybe even surprise you with some ideas you hadn't heard before. Because the industry is so biased at times, events and opportunities targeting minority groups in the field are made so that people can have a community and a chance that they might not otherwise have. I encourage you to accept this, and welcome people into this wacky field of ours. Don't question why I didn't also direct the previous paragraph at you, too. If someone tells you a negative experience they've had that is likely due to the way they look, don't shut it down and invalidate by saying, "oh they were just a jerk" or something. Don't get defensive. Listen, look out for behavior like that, and help shut that behavior down. And thank you in advance. That's a lot of words. Let's get back to our regularly scheduled jazz.       Why can't a nose be 12 inches long? Because then it would be a foot.  
#20
August 10, 2017
Read more

👾 "He who laughs at himself, never runs out of things to laugh at." - Epictetus

Hola friends!

Hope your weekend has gone splendidly, and this next week is great too. I personally checked out the Seattle Art Fair this weekend and saw a lot of cool, beautiful things. Let's surf!

 

Web links of the week

How To Build A GitHub Search UI in 60 Minutes
ueno. starter kit. universally.​
Fiber: An interactive UI Kit by Framer. 
Terminal in React
Understanding Service Workers
 

Something that interested me this week

This week I built and worked on a few things that I'm proud of!
  • Introduction to Go class: As some of you know, I love the game Go! I wanted more people to play with and have been toying with making online classes (plenty of coding ones to follow, of course!), and BAM this happened. The link here gives you free access to the class (Skillshare is like Netflix for classes), check it out! I'd love any positive reviews or shares too, if you can find it in your pretty little heart.
  • CSS Pickle: I'm back to working on making small fun projects with CSS based on Dribbble designs! This time around I made this happy little pickle in CSS. Making the background patterns and the bumps was a lot of trial and error, but I had fun with it!
  • todometer version 1.0.4: Finally fixed some bugs I'm happy to be rid of in my open source app, todometer! If you're looking for a to-do list app on your desktop, take a look!

Interview question of the week

#19
August 6, 2017
Read more

🏔 "I can accept failure, everyone fails at something. But I cannot accept not trying." - Michael Jordan

Ohisashiburi!

What on earth is that word there? Well, it's Japanese for "long time no see." Why am I attempting to use Japanese when I clearly know nothing about it? Because I'm writing this from Tokyo! Wow! Amazing! Let's go!
 

Web links of the week

A Quick Practical Example of JavaScript’s Reduce Function
Moon: Yet another JS library, based on Vue
React.js: The Hard Parts
Here’s what you get for free with a Progressive Web App
 

Something that interested me this week

So, as you can imagine, Japan is interesting. I've not been here very long, and there's some observations I've made that were surprising and fascinating (some of these might seem like common sense to some of you):
  • The transportation system is both amazingly efficient and SUPER clean. Like, coming from living in NYC for a couple years, I thought that the transit system there was solid. And it is, but Tokyo's makes it look (and smell) like ancient times.
  • Skinny jeans aren't a thing here. At least, not for women. I saw maybe 3 or 4 men with skinny jeans, but besides that, nobody wore them. I saw people wear very light and loose clothes and they very rarely stray from that (with the exception of blazers on professionals).
  • All public signage is multi-lingual. It was pretty great navigating everything, because they listed almost everything in Japanese, Chinese, Korean, and English.
  • The tech scene is not very community-oriented (yet). At DevRelCon Tokyo (where I was speaking, why I'm here), several professionals explained that tech conferences are almost always on the weekends (and paid, not free) because companies don't really value "extracurricular" events, even if they're work related. They're definitely working on that, though.
  • Nobody seems to walk their dogs. At least not publicly. Throughout the entire trip I saw 0 dogs walking outside. There were a couple stray cats, but besides that, I saw no animals in general.

Anyway, Japan was great. I’ll definitely be back, someday!
 


#18
July 30, 2017
Read more

🚨 "I find that the harder I work, the more luck I seem to have." - Thomas Jefferson

Hello hello helllllllooooo!

I hope you are all having an absolutely delightful weekend. And if you aren't, I hope this helps that, even a little bit. Let's get smashing!           I burned my Hawaiian pizza today. Should've cooked it on aloha temperature.   There you have it. Have a great week everyone, be safe, make good choices, and watch out for bears.
#17
July 23, 2017
Read more

🚗 "If opportunity doesn't knock, build a door." - Milton Berle

Hello friends!

Welcome back. Hope you all had a lovely week and are ready for a lovely weekend. And if you didn't, I hope it gets better.

Let's do the tech tango and dance ourselves on down to web world!
 

Web links of the week

Generating images in JavaScript without the Canvas API
Bundle Buddy: A tool to identify bundle duplication

A beginner’s guide to making Progressive Web Apps​
React Pattern: Extract Child Components to Avoid Binding
 

Something that interested me this week

Let's be real, the thing that interested me the most this week was an AMAZING slice of key lime pie that I got at the grocery store. It's probably the best key lime pie I've ever had. It's from a really small company called Cyrus O'Leary's Pies (their website uses both Flash and MapQuest... maybe I can offer to fix their website in exchange for pies). I love pie. I love that Pi day is a day where you can eat pie AND celebrate math. I'm thinking that I'll probably have just a bunch of pies at my wedding instead of a wedding cake.

Anyway. That's what interested be this week. Only hard-hitting content here, people!
 

Interview question of the week

Write a function that will take in a number from the Fibonacci sequence, and prints a golden spiral based on that number.

For example:
> spiral(5)
 |¯¯¯¯¯
 | ¯|
 |__|

> spiral(2) // 2 is weird because it appears twice in the sequence. Handle this however you want. ¯| __|​  


Cool things from around the internet

#16
July 14, 2017
Read more

🎯 "I'd rather regret the things I’ve done than regret the things I haven't done." - Lucille Ball

Happy (end of) weekend everyone!  Hope this next one is smooth sailing.

Until we get back to work, let's boogie.   Do you have a blog post or article you want in next week's newsletter? Just reply to this email with it and I'll check it out! :)   This week I started learning about 3D printing (my office has a free 3D printer for us to use), and it was like drinking from the fire hose.  There was SO MUCH to learn! So firstly, you have to give the machine a 3D model to print, obviously.  There's out there with free models, or you can make your own.  I tried my hand at making my own with (which is free, which I obviously prefer, but still a little limited in its options) and stuck it in the printer. But, the first attempt failed.  There's a LOT you have to do to set up a 3D printer properly (shout out to companies like that take out that part of the process).  You have to handle the actual size of the print, the printing height of each layer of plastic, the supports that are also printed for your model (to be cut off later), the shape of said supports, the amount of heat for said supports (if they're too hot when you print them, then they're stuck to your model and hard to take off... ran into that problem too), the printing speed, the types of printing plastic... and moooore.  Thank goodness some of my coworkers know their stuff, so I've got a lot to learn from them and with some trial and error.  That being said, if you have access to a 3D printer, I definitely recommend trying it out!  It's fun being able to solve problems and improve situations you have with a little bit of creativity and math.  Or just make silly things, like this that I printed. :)   A reader for the interview question last week, and it looks awesome! Great work Joey! Note: Try to not use a loop in this one!     A pregnant woman is hit by a car. She's sent into a coma for 1 year. She wakes up, no longer pregnant, and yells, "Doctor! Doctor! Where is my baby?!" The doctor replies, "Calm down, your babies are fine. You had twins! A girl and a boy. We gave them to your brother to watch while you were in the hospital." She says, "My brother? No! That guy is a moron! Why would you do that?" "I am sorry ma'am, we had no choice. There was nobody else. He also took the liberty of naming them." "Oh no," she says, "What did he name my daughter?" "He named her Denise," says the doctor. "Oh, well that's not so bad. What did he name my son?" "He named him Denephew."   There ya have it folks, hope you have a delightful week ahead of you. Be safe, make good choices, and follow your dreams.
#15
July 9, 2017
Read more

🍎 "If you don't like something, change it. If you can't change it, change your attitude." - Maya Angelou

Hi friends <3

I've got some fun things to share with you this week. And for those wondering, . Let's go!     This week I flew to visit family, and it got me to really think about how airlines work.  A lot has to go into it, from scheduling, to ticket sales (pricing and the actual sales), to managing flight attendants and cleanup crews and pilots, to the ability to fly out of certain airports... the more I thought about it the more impressed I was with the (somewhat) smooth process that we take advantage of and don't really notice unless something goes wrong.  I looked up airlines on , as well as .  I also read the amazing book to get some insight, which if you haven't read it, it's so impressive.  Anyway.  Something something ?     Extra credit: build it.     A 13 year old weasel walks into a bar and approaches the counter. The bartender immediately notices the underage weasel. “Sir, you look extremely young. I can’t serve you even a single beer.” “Oh c’mon. You can’t just slide me one?” “Can’t and will not serve to anyone under age.” “Fine. Well what other things do you have?” “Well for non-alcoholics I have tap water and bottled water, I have coffee, and I have pop. Which would you like?” “Pop.” Goes the weasel.   For all you Americans out there, have a very happy 4th of July. For everyone else, hope you enjoy that day too. Be safe, make good choices, and eat some fruit, it's good for you.
#14
June 30, 2017
Read more

🌷 "To make others less happy is a crime. To make ourselves unhappy is where all crime starts" - Roger Ebert

Gooooooooood day to you!

After a long week, it's time for another rendezdous with cassidoo.  Let's get tootin.
 

Web links of the week

I miss React and so pretty much all of these are React this time around. Enjoy!

Debate: VueJS vs. ReactJS​
How Pure CSS Images Helped Me Understand React Components
Maddy, a functional object operations library
How to use Webpack’s new “magic comment” feature with React Universal Component + SSR
How to Make a Simple Twitter Clone with React Native​
 

Something that interested me this week

This week was a really busy week for me. Lots of deadlines, lots of stuff to do in general. Two people this week asked me, "you seem busy, do you love your job?"

Reflecting on this, I am happy. I love being busy and getting to work on a bunch of different projects (as stressful as it can be sometimes) in and outside of work. And because I do a lot of client work, I sometimes love my job. 😉

I think what's more important though than loving your job is the ability a job gives you to love and do the things (people, activities, hobbies, projects) you want to love and do.  What I love about my job is that I have the work/life balance and the opportunity to do side projects, practice instruments, play games, and just enjoy my life outside of work (which sounds like common sense, but it's not something I did before this current company).  I definitely acknowledge that I am privileged in this regard and not everyone gets the option to have this freedom of choice.
That being said, if anyone out there runs a tech company or has the ability to give employees more time to themselves, I can honestly say that I think I am more productive at work now because I am not working all the time. Consider promoting that to your teams!

As a related note, big congratulations to my company, L4 Digital, on being named in the top 10 of Washington's 100 best companies to work for. They deserve it!
 

Interview question of the week

Write a function that takes in a string and reverses all the vowels in the string.

Example:
> reverseVowels("I love burritos")
> "o livu berrotIs"
 

Cool things from around the internet

Before the internet
Is The Morgan Aero 8 The Most Underrated British Sports Car?
The Interactive Way to Go
4K Minimal Keyboard Wallpapers
Fun with fidget spinners and super strong magnets
 

#13
June 23, 2017
Read more

☀️ “Start where you are. Use what you have. Do what you can.” - Arthur Ashe

Hello, hello!

I hope you all had a swell week and have an amazing weekend going. I know what I'm doing. Let's go!   This week I was a  machine. I used it to validate dates, emails, and a few other strings in an app I'm building. I started looking into different ways where I could get better at building my own expressions. had a lot of built-in cheatsheets and input to test on, and was great for building, saving, and sharing expressions. But, my favorite site by far was this . I found myself reminiscing about computer science homework (never thought I'd say that, ever) doing all the different puzzles and remembering combinations. Regex is something that I think a lot of us ~technical folk~ generally understand, but always have room to understand    For help:     I got in trouble with the police the other day at the ATM for shoving an old person over. I don't understand why though, she did ask me to check her balance.   That's all folks! Have a good one, be safe, make good choices, and enjoy some cake.
#12
June 16, 2017
Read more
  Newer archives
 
Older archives
GitHub Website LinkedIn