Today is March 14th, 2017. I’ve been writing code all day – learning Angular2 – and I need a break, so I thought I’d thrown down some words…from the heart. It’s my favorite son’s birthday. It’s PIrate Day. And, it snowed today. Shiver me timbers!
What could all of these synchronistic events be conspiring to tell to us? I don’t know, but I do know Spring and Summer are just around the corner. And with Summer, comes crime and bad dudes named James. So lock up those bikes folks, and be careful out there.
This one goes out to my girl, ‘She Hulk’ Cindy, and my boy, the real ‘Money Maker’ Mike…
One of the big questions I’ve been asking myself lately is ‘Where do I go from here?’. Where do I try to take myself spiritually, financially, professionally as a father, boyfriend, and human being…I’m trying to have a longer-term outlook on my life as I get older so I at least try to plan to obtain certain long-term objectives as opposed to simply living in the here-and-now, which I guess is a good thing if you’re Buddhist. But I also believe in long-term planning. My life has been mostly a mess so far, at least as an adult. Lots of broken, messed up dreams and relationships. I’m thinking now that if I plan better, that if I have a longer-term outlook, I can set myself up for better success in the future. If I could just get my act together. Maybe. We’ll see. I think a big part of ‘success’ in life is asking yourself important, meaningful questions and trying to find answers to them. Put your brain to work on the problem statements, and daily meditate on the solutions. Find the solutions. Where do we go from here?
I’ve wanted to learn to make iOS Apps for some time, so I finally bit the bullet and bought a Mac Mini, downloaded Xcode, and started programming. I’m getting to the point where I want to deploy and test my app on my own iPhone (rather than run in a simulator), but in order to do that, you have to join the Apple Developer Program so you can appropriately sign and deploy your App to real iPhone and iPad hardware. And boy, what a pain joining this program is!
I should qualify this statement…I’ve joined the Apple Developer Program before as an individual. Everything went through ok then, but i never got around to actually building an App. This time, however, I decided to F.O.C.U.S – Follow One Course Until Success – and to actually build an App this time. And this time, I decided to join the Apple Developer Program as a Corporate Entity; you know, with designs of becoming a Billion Dollar Unicorn. Apple gets funny with Corporate Developer Registrations, seemingly. They require that you have a DUNS Number. Ok, whatever. I’m used to bureaucracy. I went and got me a DUNS Number. But for some reason, it took weeks (in reality, months) to associate a DUNS number with my Company in Apple land. Dun and Bradstreet told me to wait a few weeks, after updating some key email and phone number information, before trying to enroll in the Apple Developer Program again. So I waited…and waited…and I’m still waiting…
After waiting entirely too long, I tried to enroll again. This time, Apple complained that my credit card was being rejected. Really? Ok, so I tried another credit card. Rejected again. Really???? I logged in to both credit card accounts. Sure enough, successful charges from Apple on both for $99, but for some reason, Apple would still not let me enroll in their program:
At this point, I am quite flustrated. Of course I will press on, because I am committed to this project and to learning iOS development. But I never had this much problem getting an Android App out into the Google Play Store…I expect much more of Apple. This process should have been absolutely thoughtless and painless. But it’s a good reminder of how difficult and tenuous it is to build a company on top of another company’s technology.
EDIT (2/16/2017): I called Apple today and was unable to resolve the technical problem behind registering online, so I registered for the Developer Program over the phone this afternoon. Part of my urgency in getting this registration done was because I wanted a shot at attending WWDC2017 this year. Registration for WWDC2017 is by random selection to members of the Developer Program in good standing as of 2/16/2017 at 0530am PST. I registered online the evening of 2/15/2017, but it failed due to technical problems with the Apple website (my credit cards are fine). So I’m hoping I can still figure out a way to get in good standing for possible selection to WWDC2017.
When I was in 6th grade, I discovered one of my Dad’s records (what the heck is a ‘record’?) called ‘Switched-On Bach’. I gave it a listen and was ABSOLUTELY mesmerized. I had never heard anything like it! The album was full of J.S. Bach music played on a Moog Synthesizer by Wendy Carlos. According to Wikipedia, this album placed in the top 10 on the US Billboard 200 between 1969 and 1972! The combination of old school Classical Music being played on a high tech instrument like the Moog Synthesizer was a blissful combination to me.
Years later I fell in love with the movie, ‘Tron’. The Tron soundtrack was authored and played by my idle from the ‘Switched-On Bach’ days, Wendy Carlos. It was about this time (I was a freshman in High School), that I started to get what an awesome combination computers and music made.
Since then, I’ve tinkered with digital music. I’ve written a few goofy songs. I’ve tried my hand at producing a few songs on Garage Band. I’ve dreamed of becoming a DJ, even talked to a few DJs about how to go about it. But I’ve never pursued this passion much further than that. I’ve been called a ‘fart in a frying pan’ because I chase alot of different dreams. I do need a bit of focus in my life…Anyway, two years ago I took my girlfriend to U Street in DC once to try to get a feel for the DJ scene in Washington DC. The main DJ was Afrika Bambaattaa, one of my faves in High School. We had an awesome time, but the vibe wasn’t really what I was looking for. U Street is no Ushuaia.
Fast forward to 2016. Never mind how old I am now. Not important. This past November, I had the privilege of attending a Martin Garrix performance in Las Vegas with my girlfriend. We were blown away by the richness of the bass, the visual sensations, and the overall experience. The Martin Garrix performance was at the AWS re:Invent 2016 Cloud Conference at the re:Play party. I felt I had been reconnected with my childhood fascination with computers and music. It was SENSATIONAL!!!
Fast forward to today. Where is the EDM scene? Where are the best DJs in the world? Where can we go to hear them and experience the vibe? Turns out one of the best EDM DJ experiences in the world is in Boom, Brussels at Tomorrowland. So guess where we are going this July?!?!?! Headliners currently include most of my favorites, including Martin Garrix, Armin van Buuren, Afrojack, Kaskade, Steve Aoki, etc. I’m hoping that David Guetta, Dmitri Vegas and Like Mike are also there for the Weekend 2 performances – BE THERE OR BE SQUARE!! Tickets have already sold out. We are so stoked!!!!
If you are going to Boom this summer, drop me a line.
Building on the knowledge learned from my previous two blog posts on my following of the Wild Rydes AWS Serverless Computing Tutorials, ( Wild Rydes Part I and Part Deux), I decided to put some of that information to use in my own work at www.nautilustracker.com.
I’ve been working on some mobile apps and a back-end platform supporting my trans-Atlantic Ocean Rowing attempt last year with my girlfriend, Cindy. I’d like to turn some of the things I’ve developed thus far into a Software as a Service (SaaS) for other people to easily use on similar adventures. To that end, I wanted to quickly create a responsive website to put out some information about my future offerings, including the ability to allow interested parties to contact me by providing their email address and a contact message in a simple contact form.
Know Your Limitations. Build On the Shoulders of Giants
> aws s3 sync . s3://www.nautilustracker.com
I had previously registered my Domain Name (nautilustracker.com) with GoDaddy last year. Now I wanted to move the DNS Registrar to AWS. This turned out to be very easy. Once I followed the documented steps to move a domain to AWS, I only had to add an A Record to point to the domain to my S3 Bucket containing website artifacts. I will point this A Record to a CloudFront endpoint soon.
Lipstick On A Pig
Now that the landing page is up, there is a mountain of work to do. The next step is to get email working for my domain using AWS SES so I can use that domain email to register as an organization in the Apple iOS Developer Program.
I took my family to Paris, France for the 2016-2017 New Years Eve celebrations. We were essentially just there for the weekend, but it was a fabulous weekend – one that I will never forget. The sites and food were unforgettable. For New Year’s Eve, I treated my family to an 8 course French Meal and Wine/Champagne Pairing at the Hotel Raphael in Paris very close to the Champs-Elysées. My kids and I were definitely not used to fancy food such as this, but it was a beautiful and tasteful introduction to food as art (as opposed to American style ‘fast food’). Here’s a video of my dessert (thanks Alison ;):
In Paris, we were delighted to see the Eiffel Tower, The Arc De Triomphe, The Palace of Versailles, and to listen to Vivaldi’s Four Seasons, and other beautiful musical pieces, performed by a Chamber Orchestra at the Église de la Madeleine Roman Catholic Church. I left Paris with a profound appreciation for the art and beauty that abounds in this wonderful city, from her cuisine to her architecture, to her music and her people. The French seem to have a genetic disposition toward an aesthetic appreciation of life, which I find hard to come by in the United States. The french term, ‘Joi De Vivre,’ comes to mind when I reflect on our weekend trip to France.
According to Wikipedia: “It ‘can be a joy of conversation, joy of eating, joy of anything one might do… And joie de vivre may be seen as a joy of everything, a comprehensive joy, a philosophy of life, a Weltanschauung…'”
I happened to catch a Netflix Documentary this evening called “Chef’s Table, France,” Season I, which was a story about an amazing French Chef, Alain Passard. As I watched the story unfold about how Chef Passard became a Chef, identifying his career path as early as 14 years old, how he found a mentor and soon bought his mentor’s restaurant, which he named ‘Arpege’, I was completely drawn in by Chef Passard’s sense of life purpose, mastery and pursuit of excellence in his craft. It is not often you find or learn of someone who absolutely loves what they do for a living. I hung on his every word in this documentary and even took notes, hoping to graph some of his sense of aesthetics and Joi de Vivre into my own life and professional career. Here are some of Chef Alain Passard’s quotes and anecdotes I noted from the Netflix Documentary, ‘Chef’s Table, France’:
“When you close your eyes at night, what’s important? You’ve spent the day taking risks. You’ve made some people very happy.”
Chef Passard relates that what you create is just as important as how you create it, which he refers to as ‘Gestures’ or ‘Hand Gestures’. The way you move your hands to create something of value is important and takes hours and years and decades of practice. Chef Passard’s Grandmother was an amazing cook; his mother sewed and his father was a musician. His Grandfather was a sculptor who worked with wood. He learned the importance of hand gestures early in his life and applied them to his craft. He works bread dough like it’s fabric. He sews Duck and Chicken together to create a unique dish. With regards to the hand gesture, he says: “In cuisine, in music, in sculpture, in painting, it’s everything. Either we like the gesture, either we like the hand, or we do not. And this hand, if we want it to be more beautiful, we must work seven hours, eight hours, ten hours in the kitchen every day. This makes the hand more precise, and more elegant.” He goes on to say that a 14 year old does not have the precision of hand that a 30 year old cook has. He says, “I am never happier than when I put my fingers on a new gesture or a new flavor. It feels wonderful.”
“You really become a cook between 40 and 50 years old.”
Can the same not also be said about other professions as well?
When Chef Passard started his restaurant, Arpege, he says that the one and two star ratings came fairly easily, but the three star rating was very difficult to attain. Three Stars is the highest rating for a restaurant. Maintaining three stars is apparently extremely difficult to do, but Chef Passard’s mentality is to pursue higher and higher standards, never stopping or resting upon his current achievements. The search for excellence is never ending, but it’s something he loves. I was struck how there was no mention of the pursuit of money in this documentary, it was purely the pursuit of passion, excellence, and the art of food. In fact, there came a point in Chef Passard’s professional career where he was losing his passion for cooking meat, so he decided to take a year of introspection to find his passion again. He reinvented himself and his restaurant as primarily vegetarian while still maintaining their three star rating. He found a new hand. A new outlook.
“My only ambition is to love what I do more each day. Just the idea of a job well done. No outside projects, needs, or dreams. If this story exists today, it’s because I love my job more than anything.”
In my last blog post, I mentioned how I was working my way through @jpignata‘s excellent tutorial on GitHub on how to work with AWS Lambda Services, API Gateway, etc. I work through the tutorial when I have a few minutes to spare and am finding it quite enjoyable. AWS Lambda Services and the API Gateway are pretty fun and interesting to work with.
In Lab 3 of the tutorial we create an Admin Interface to allow authenticated users the ability to view the email addresses that have been added to the DynamoDB database. Admin Users are authenticated by the Admin Interface against a Cognito User Pool. This lab was pretty straight-forward as I did not fat-finger as any mistakes this time. However, I did take note of the following:
API Gateway URL Notes:
Make sure to ‘Deploy API’ after you make changes to your API Gateway. Many times I thought my configuration updates simply weren’t correct, when in fact I had simply forgotten to deploy the updates to ‘prod’.
Simply adding ‘Authorizers’ on your API Gateway is not sufficient for protecting the URL endpoint. You have to also add the Authorizer to the Method Request ‘Authorization’ of the URL endpoint. I found that my API endpoints were not protected until I remembered to do this step:
Lambda CI/CD Pipelines
As I am slowly working up to doing something more substantial with Lambda Services, I am curious how one might integrate Lambda Serverless Code into a CI/CD Pipeline. It seems you can use Gulp/Grunt with the gulp-awslambda plugin (https://www.npmjs.com/package/gulp-awslambda) to accomplish this. I need to to try this out.
What a great tutorial!! One more Lab to finish and I’ll hopefully be off building something real…
Some Randomness : ‘The Black Bear’
My girlfriend and I have been watching ‘Black Mirror’ on Netflix occasionally. Last night, we watched the ‘White Bear’ episode, which freaked me out, as most episodes do. But, it also made me think of one of my favorite Bagpipe Tunes, ‘The Black Bear’. Hear some renditions to make your cubicle-bound blood start pumping:
Paaaaaaaassssssss. In. Revieeeeeeeeeewwwwwwwwwwwwwwwwww!!!!!
I’ve been working through a tutorial I started in a session I took at AWS re:Invent 2016. I did not finish the tutorial in class so I started working on it again after getting home from the conference. The tutorial is on GitHub if you care to follow along.
The latest Firefox browser seems to give better clues about why things are not working in the Developer Console than Google Chrome. Using Google Chrome, I kept seeing an error like, “Missing Credentials In Config”, and was really confused what exactly that meant. I was following the tutorial exactly, as far as I could tell, so I could not discern whether this error was from a code change I made or an AWS configuration problem? Then I looked at my website in Firefox, using the Firefox Developer Console, and could see a little bit better what was going on.
Here’s my main error as seen in the Google Chrome Developer Console:
And here’s the same error as reported by Firefox Developer Console:
After further investigation..a day (or so) later…I discovered a simple typo in my DynamoDB Table Name:
The table name should have been ‘Wildrydes_Emails’. Seriously?!?! Yes, I’m an idiot (but one made of ‘Blue Steel’…). Once that was corrected, I was finally able to get my unauthenticated Cognito Role to access my DynamoDB Table.
There is still work to be done in this tutorial, and I’ll blog about any issues I overcome as I encounter them. My work is being hosted in my AWS account on Cloudfront, so feel free to check it out and submit your email to my DynamoDB database. Let’s get this startup rolling!
I recently read this article and listened to the 2015 AWS re:Invent session on the same. This discussion really resonated with me. I’m excited to try to automate everything, including infrastructure deployments, in my future development projects. I like the idea of using automated testing frameworks, such as serverspec, for testing infrastructure deployments.
On December 1st, 2016, I took and passed the AWS Certified Solutions Architect – Associate Exam. I took the exam at the AWS re:Invent Conference in Las Vegas, and by ‘passed’, I mean by the skin of my teeth! But to me, passing is all that matters and I achieved that objective. Here are some notes on how I prepared for this certification exam:
I tried to use AWS Services as much as possible. I signed up for a free for one year account and started deploying some small applications I had written to EC2. Initially, I ran MySQL on one of my EC2 instances, but when I discovered RDS, I learned that RDS is an easier and more cost effective approach to using an RDBMS in the cloud. Aurora and DynamoDB are some other excellent options for cloud-based databases.
I bought the Official Study Guide for this certification and started studying it and working through the exercises in the book about two months prior to my exam. As I am now done with this book, I am happy to mail it the first request for free as long as you agree to pay for shipping. I have marked my copy up pretty good, however, and I’ve circled all of the answers to the practice test questions in ink.
I paid $20 to take the AWS Practice Exam. I failed it with a 50% score and almost ended up re-scheduling the real exam. I decided, however, to double-down on my studying and to stick my original plan. This is one gamble of mine that actually paid off.
I attended the 2016 AWS re:Invent Conference in Las Vegas and participated in the Monday Night Hackathon. Here I quickly learned how to deploy REST services on AWS Lambda using the API Gateway service. I also learned a bit more about DynamoDB in the process. The Hackathon helped to focus my understanding of some services, and the re:Invent Conference helped to broaden my understanding of many others.
I took my certification exam on Wednesday Night of the conference at 8pm in the Venetian Hotel. I thought I would be the only one taking an exam at that time of night, but there were at least 15 other folks in the examination room with me.
Here are some of my associated exam expenses along the way:
The Official Study Guide on Amazon.com: $57
Scheduling the Certification Exam: $150
Practice Exam: $20
AWS re:Invent 2016 Conference: $1600
Travel and Lodging at Las Vegas (me, girlfriend and kids): $750
Estimated Exam Focused Time Investment: 2 months
Estimated Total Investment: $2,577
AWS re:Invent Conference
So was my investment in this certification worth it? One thing I learned at the re:Invent conference in Vegas is that if you want to win big, you have to bet big. I think this investment was a pretty big bet as far as certifications and technical focus are concerned. I don’t think attending the re:Invent conference was necessary in passing the certification exam, however, but I do think it was necessary in trying to accurately gauge the viability of the AWS Cloud Platform in the coming years. Participating in the Hackathon was a great way to get focused on approaches to deploying solutions to the AWS Cloud in a team environment. Attending the AWS re:Invent conference helped me to broaden my perception of the sheer breadth of AWS Cloud offerings, not to mention the insight I received in learning about some of the innovative ways companies are using AWS Cloud now. I witnessed over 30,000 conference participants, from all over the world, attending sessions from 8am to 8pm non-stop, learning as much as they could about the AWS platform. I, too, drank the cool-aid and truly believe AWS Cloud is a secure, cost effective, highly elastic, high performance platform for all types of software applications. And I don’t see any other cloud company as a close competitor to Amazon right now, nor may we ever. Amazon has built their Cloud Platform from lessons learned being the largest E-Commerce Platform in the world. I feel like I’ve made a safe bet.
AWS re:Play Party
Financial costs aside, the re:Play Party at the end of the AWS conference was truly amazing! There were drinks (lots of drinks), t-shirts, amazing, amazing food, retro video games, mechanical bull riding, foosball, etc. etc. I’m sure there was even more stuff, I just couldn’t take it all in. Then there was the headline performance by DJ Martin Garrix, which was radical. I took my girlfriend to the party and we had an amazing time. It was an amazing week in Las Vegas, which ended with a quick family jaunt to the Grand Canyon, but I’ll save that for another blog post.