Typos and Booleans and Mentoring – Oh my!

“Booleans are programmer’s original ‘fuck you’ to the English language.” – Me

It’s official, I’ve jumped the shark by quoting myself.  I’ll see myself out now..

Lately, I’ve had some flattering experiences lately with peers and aspiring programmers actually asking for my opinion.  Quite honestly, this is the one thing I find more rewarding than finding my own solutions to things.  Lending a little bit of confidence to someone experiencing some ‘analysis paralysis’ can help them get off the dime and act.

One story I like to tell quite often is about my son.  He was having trouble with some spelling homework that had a certain number of errors for him to find.  He’d found all but one and was getting extremely frustrated and emotional.  I helped him look it over and noticed the error and let him know that there was still one to find and that he wasn’t wasting his time.  It took him a bit longer, but he figured it out.   The fun part was telling him afterwards, “Dude, finding typos is like 95% of my job”

“Yes, you do.  You’ve just used a double negative” – Maurice Moss regarding education

Sanity checking isn’t just for syntax and booleans are my fucking nemesis.  When you get deep down into code that is essentially just counting polarity reversals, it’s easy to get lost.  I’ve got a friend going through some professional retraining and getting a bit flustered on some boolean puzzles for class.  Again, this is one of those situations where a second pair of eyes and some reassurance can provide that little bit of confidence to push forward.

“You actually watch that show?” – James Van Der Beek regarding Dawson’s Creek

When I started this blog, it was largely an experiment to dabble in some new technologies and try and share some of that dabbling with whoever cared to notice.  Actually getting feedback on my articles is flattering enough, but recently I had a peer share an interest in starting a professional blog in part due to being inspired by mine.  I got into development because I like building things that people use, but this had to be one of the most rewarding outcomes of the past couple of years of blogging.

“Every time I say ‘No.'” – Captain Sheridan on winning

As cliched as they are, movie/television quotes are kind of my thing.  Mental models (see: analogies) are great for encapsulating a dry and complicated situation into something relatable.  You can do this through anecdotes in your own experience or by referring to something common between you and your audience.  It works!

As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

So… I wrote a book…

Astinus

“I trotted down the street to my friend and mentor Paul Rink and told him the triumphant news. ‘Good for you,’ he said without looking up. ‘Start the next one tomorrow.'” – Steven Pressfield

In a recent post, I mentioned that I was working on a ‘major writing project,’ which I’m proud to say is finally complete.  It’s official.  As of this week, I am a published author!

A few months ago, I was approached by the folks over at Packt Publishing to update their ServiceNow Cookbook to a current edition.  Having always wanted to write a book, I jumped at the chance.

For those of you who haven’t used one, a technical cookbook is intended to be used much like a culinary cookbook.  This means you should be able to use it as a general reference and jump around between ‘recipes’ to complete specific tasks in the relevant language or framework.  While this book follows this format in general, there are some chapters that have an overarching progression in building up a specific feature.

You can pre-order the ServiceNow Cookbook or purchase a subscription to access the content at the following links.  Hope you enjoy it!

Packt Publishing

Amazon

As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Reading Summary – 2017

reading

“Always read something that will make you look good if you die in the middle of it.” – P.J. O’Rourke

Last year, I’d hoped I’d be able to double my reading list of 2016. Looks like I’ve managed to do that this year by purposefully setting aside time every day for reasing. I’m hoping to continue the trend but doubt I’ll see as much of an increase quantity-wise. One thing I did notice was a distinct increase in the number of fiction books. Here’s to choosing quality over quantity in the coming year.

Caliban’s War – Book 2 of The Expanse.  Neatly folds in the ground broken during the first book while keeping the overall arc of humanity on a plausible arc.

The Alchemist – My sister gifted me a personalized copy of this book, citing it as one of her favorites.  I’m going to agree that I believe the hype.  The book focuses on helping each of us discover our own ‘Personal Legend’  Basically a reminder to be what you must be.

The Phoenix Project – While technically a novel, it’s meant to be a case study in breaking down established paradigms in systems and making meaningful improvements.  Adds some people focused drama but still demonstrates real world examples of constraints.

Don’t Be A Jerk – An in-depth annotation of a book I’ve never read. While there was some humor, most of the meaning was opaque to me. If I ever read Shobogenzo, perhaps I’ll come back to this one.

Abbadon’s Gate – Book 3 of The Expanse. Continues to builds on the previous story while raising the scope and the stakes.

The Daily Stoic –  The Stoic version of a daily affirmations book.  I wouldn’t recommend going into this one expecting to read it cover to cover.  It’s better to read each daily entry and let the ideas breathe throughout the day.  I’ll be repeating the process this year.

Tinker Tailor Soldier Spy – I really wanted to like this book after seeing the movie. The language and pacing is dense and subtle with some teases and payoffs to keep the reader engaged. However, it’s not my definition of a page turner and I doubt I’ll be finishing the series

Rome, Inc – A humorous tongue-in-cheek recount of the rise and fall of Rome in the context of modern corporate culture

Lucifer – Book 1 – As I’ve stated before, I’m a big fan of Neil Gaiman. This is a spin-off of his masterpiece Sandman series that follows The Devil Himself post-retirement from his duties in Hell. Good read so far and I will be continuing the series.

Cibola Burn – Book 4 of The Expanse. Presents common human issues against hard proof of alien civilizations within the familiar setting of a frontier land rush.

The Handmaid’s Tale – A harrowing vision of what a Christian Theocracy might look like. Almost as if you took today’s puritanical tendencies, turned them up to 11, and gave them the force of law.

The Complete Software Developers Guide – Intended to be a reference guide for developers as opposed to be read cover to cover (although you certainly can). A great resource with great ideas for people looking to take the next step in their careers or even start down a new path

Rome’s Last Citizen – A biography of Cato the Younger, Stoic paragon and bitter enemy of Julius Caesar. Cato’s myth is cited as a catalyst for Rome’s adoption of Christianity as well as inspiration for the concepts of individual liberty and natural rights.

Snow Crash – A classic of the cyberpunk genre, being a delightful product of the optimism and futurism brought on by the inception of the World Wide Web. At once familiar reflection and alien satire of our ever accelerating culture.

Genghis Khan and the Making of the Modern World – Most Western education about the Mongol Empire depicts them as savage barbarians who pillaged and enslaved millions. While these depictions are largely true, they leave out the disruptive and transformative impact of the Mongol expansion and their legacy.

Nemesis Games – Book 5 of The Expanse. This is a return to form for this series as a page turner. Also, rather than investing in new characters, the author takes time to flesh out existing ones. Can’t wait to read more!

Blood of Elves – The first of The Witcher novels. I really wanted to like this one and it was great to see familiar characters and a bit of the lore that spawned the game series. However, the book violates the ‘Show, Don’t Tell’ principle for about 80-90% of it with lots of shouty dialog where you’re not quite sure who’s speaking or what they’re talking about and little to no action.

I’d love to hear any feedback on this list and invite you to share your own reviews or recommendations.  As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

On Death, Jumanji and Baader-Meinhof

“You get what anyone gets – You get a lifetime.” – Death – “The Sandman

Before I make you Google again, the Baader-Meinhof phenomenon is somewhat similar to a deja vu.  Except, instead of your brain tricking you into thinking you’d been somewhere before, it makes you aware of things that were always around you but you might not have noticed.  It’s something I enjoy pointing out to friends and family.

It’s a truism that people who work with machines (and the instructions that drive them) are a superstitious lot that tend to personify our creations.  Having muttered incantations and curses to no one in particular while chasing yet another bug, I’m no exception.  As such, I like to embrace these superstitions and the cool moments that follow from them.

This little experience started with a trip to see Jumanji (the remake/reboot) this past weekend.  Really fun movie and I do recommend it.  There’s an interesting message scene where the characters compare having a limited number of lives within the game world to the fact that we ‘really only have one life’ and the responsibility to spend it wisely.   This is something awfully deep for a recycled movie where the leads spend a lot of their time making dick jokes (literally).

Queue the next day where I’m idly citing the perky goth trope and am reminded immediately of Death of The Endless and her oft repeated benediction, cited above.  This character comes from a series frequently labelled as a masterpiece which has spawned entire universes from its base material.   It’s fascinating that one of its themes shared common space with a completely unrelated movie, at least in my head.

What does any of this mean?  Not much.  Just the mind making correlations where none really exist.  Still, I enjoy the small thrill of making these arbitrary connections where none were probably intended.  It’s not like anyone owns the idea of wise living or wasting time.  But it is a fun realization to feel both common and special in the same breath, with all of your decisions, experiences and time reduced to a single unit.

As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Happy 2018!

“Do you seriously think I’d explain my master stroke if there remained the slightest chance of you affecting its outcome? I did it thirty-five minutes ago.” – Adrian Veidt as Ozymandias

Not to disparage New Years posts, but it’s almost cliched how they’re all about renewal and hope for the upcoming year. When I made up my mind on what I was going to pursue this year, I made a commitment to get started immediately rather than wait until January 1st. Needless to say, I started a couple of weeks ago.

I’m sure my throngs of readers are distraught that I haven’t posted in a while. (Please be distraught!) The truth is, I’ve been working on a major writing project that’s taken up most of my spare cycles. It should release around March of this year, after which I’ll be back to boring the shit out of you on a more frequent basis.

As far as resolutions go, here’s where I’m at for this coming year:

  • Exercise Every Day
  • Write Every Day
  • Code every day

In that order 🙂 I’m proud to say I’ve stuck with this over the past couple of weeks and plan to continue throughout the year.

I invite all of you to share your own resolutions or plans for the coming year.  As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Thanks for looking in!

AWS Certified Developer – Wrap Up



“I hear you’ve got a saying: ‘Understanding is a three-edged sword.’ Well, we’ve got a saying too: ‘Put your money where your mouth is.'” – John Sheridan

Over the past few months, I’ve been taking prep courses and otherwise studying for the AWS Certified Developer exam.  The goal that I originally set was to have this finished by the end of summer.  While I’m a couple of weeks late, I’m proud to say that I passed!

I want to give an endorsement of A Cloud Guru’s coursework and practice exams in being crucial to my preparation and practice leading up to the exam.  While certifications are meant to essentially ratify existing knowledge, taking a timed and closed book exam can be very daunting for those of us who can generally check our phones if we’re not sure of specs or limits off the top of our head.

So, what’s next?  I’m not really sure other that to say that AWS and other cloud framework knowledge fits very well into the ServiceNow space with offerings like Discovery and Orchestration.  If there’s continued benefit from gaining knowledge in this space, then I’ll probably dive a little deeper.

Thanks to all for your support and encouragement during this journey.I invite you to share your own experiences and opinions on AWS certification or certifications in general.  As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Thanks for looking in!

Resources:

Integrating Amazon Lex with ServiceNow

In a recent post, I covered creating chatbots in AWS Lex and created a simple bot for ordering jellybeans.  As promised, I took my bot and integrated it into a custom page in ServiceNow’s Service Portal.  While I’ve worked on several integrations in this space before, this was my first time integrating an AWS service into ServiceNow.

In order to integrate Lex, I needed to provision the following:

  • A ServiceNow instance (Helsinki or later)
  • An AWS Account with a Lex Bot (Created during my previous experiment)
  • An AWS User with the AmazonLexRunBotsOnly policy assigned

With these components in place, it was time to decide on an architecture.  I needed a UI for users to chat with Lex, client-side code to handle the text and transact with Lex, and finally some server-side code to initialize parameters for the service layer that are stored in system properties.

For the UI, I created a new Portal, Page and Widget to host all of the above.   The Javascript SDK for AWS is included via a CDN link.  I would have preferred to keep this piece server side, but the current offerings for the SDK are limited to either client-side or server-side with Node.js, which isn’t available for now.

What was critical to keep server side were the application credentials for the service account itself.  There are several properties that must be gathered from your AWS configuration and added as system properties in the ServiceNow platform.

With all this in place, it was time to test!  First by sending a message to Lex to invoke the Intent for ordering a jelly bean:

Then to follow the same flow of the Intent, telling the bot what flavor I want:

And finally confirm my order:

Depending on how you’ve configured your bot, you can either have Lex return parameters to ServiceNow or to pass them forward to an AWS Lambda or other endpoint.  It’s easy to see the potential here for using Lex to drive another entry point for your Service Catalog or even things like Orchestration.

If you’d like to take a look at the app, I’ve got it on my GitHub here.  I’m interested in any feedback you have as well as anything to share on ServiceNow app development or AWS Lex.  As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Thanks for looking in!

AWS Certified Developer – Update

Since my last update, I’m proud to say that I’ve completed my course!  The major components of the second half of this course concerned Storage and Database implementations.  Here’s a brief rundown.

How is Storage handled on AWS?

The main storage offering on AWS is called S3.  This is basically bulk storage in AWS offered for a flat fee based on usage.  If you’d rather use a dynamic and shared storage that auto-scales, you’d set up a resource in Elastic File System.  The platform offers several different configurations based on availablity and performance expectations.   Versioning and replication of containers is supported.  Short and long term backups are covered by Glacier.  This is long term storage of snapshots of data at a lower fee, but binds you to a time commitment.  Those of us that have Disaster Recovery responsibilities can use this to implement Father->Grandfather backup strategies.

How are Databases implemented in AWS?

The conventional implementation of databases is by provisioning virtual DB instances.  You can choose your preferred framework, like MS-SQL or Oracle and then select the tier you need within that framework.   For the NoSQL crowd, there’s Dynamo DB which offers low latency databases for high traffic services and data analysis tools.  Certification note: The exam is mentioned by the course as being very heavy on Dynamo DB.  Calculating performance is a prominent item on the cert as you have a lot of fine tuning control with access. The key is to find that sweet spot where your bandwidth is sufficient without over provisioning.

While IAS, EC2 and S3 made up the lion’s share of the course, the remainder was short overviews of additional services such as:

  • Simple Queue Service + Simple Notification Service – Used as a clearinghouse to trigger shared events throughout your environments.
  • Simple Workflow Service – Used for management of back end processing in your API or Service Layer.
  • Cloud Formation – A framework for creating templates that provision predetermined purpose-built sets of AWS resources.
  • Elastic Beanstalk – Basically a wizard for provisioning auto-scaling application hosting environments that are immediately ready to run code.
  • Shared Responsibility Model – An overview of the demarcations between what integrity concerns the customer is responsible for as well as AWS.
  • Route 53 – More of an actual overview of DNS architecture rather than anything special about its AWS implementation.
  • Virtual Private Cloud (VPC) – This covers configuration of public and private zones of resources and defining rules for interoperation between them. Basically, taking everything we’ve learned and pulling it all together into something useful at the enterprise level. The analogy used for this is to think of a VPC as a logical data center.

Now that I’ve completed the course, it’s time to put my money where my mouth is and successfully pass the exam by the end of summer per my original commitment.  Wish me luck!

I’d love to hear any feedback on this post and invite you to share your own experiences and opinions on AWS, either your own projects or learning tracks. As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Thanks for looking in!

I Want To Look Good Naked


“Anti-wrinkle cream there may be, but anti-fat-bastard cream there is not.” – The Full Monty

I spend quite a bit of time over at The Art Of Manliness.  Some great tips on health and style as well as a wealth of inspirational writing, mostly in the form of fanboying on Theodore Roosevelt.  In looking for my next big challenge, I’m drawing inspiration from this article on Rites of Passage.

Speaking of TR, I remember being interested in him from a very young age.  The main connection I made was that we both had asthma.  Not like I’d ever stack myself up beside TR.  Where he made a point of seeking out adversity and testing his shortcomings, I’d often take pride in taking the shortest and easiest path possible.  Sometimes this is a virtue, but not when it comes to taking care of the self.  As such, I need to settle a long standing debt.

As I’ve mentioned before, I’ve been at an unhealthy weight for my entire adult life (and longer).  Carrying around what is essentially another person has negatively impacted my activities and general quality of life as well as put me on multiple medications.  Rather than keep this as a ‘Someday’ kind of goal, it’s time to put together a plan and get to work.  By doing so, I intend to improve my own health, extend my life and improve my self-image and self-worth dramatically.

Here is my goal:

Success is : I record a weight of 178 or below on 7/27/2018
Failure is : I record a weight above 178 on 7/27/2018

Here’s my plan:

– Use LiveStrong – Record weight daily and keep a food diary
– I will keep my daily calorie intake 500 below my BMR
– I will supplement my calorie deficit by 500 a day with daily exercise
– The data for the above will be maintained publicly here as a widget

I’ve always known what was required but never really applied myself.  But if I follow this plan, I should be able to lose 100 pounds over the next year at a healthy 2 pound a week rate.  This is perfectly reasonable and attainable.

I’m inviting everyone to encourage me.  Even more so, I invite people to hinder me and try and fuck me up.  For my own health and well being, this may very well be the most difficult and the most important thing I’ve ever attempted.  Bring it on!

As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Thanks for looking in!

Chatbots w/Amazon Lex

Recently, I attended a learning event put on by a local developer group: DevICT, which is a community for local developers in Wichita, KS.  The topic was Amazon Lex, a chat platform that you use to build your own chat bots.  Then these bots can respond to either text or voice from users and do useful things based on the outcomes of those interactions.

Setting up Lex is pretty straightforward.  After logging in to your AWS Console, you can navigate to the Lex product and it brings up your list of bots and controls to create new ones.  Once you’ve created a new bot, you’ll need to define Intents and Slots.  To put this in programmer parlance, if you think of your bot as an API framework or class, you could define Intents as methods and Slots as arguments.

For my bot’s first Intent, I took inspiration from a recent trip to the Jelly Belly jelly bean factory in California.  (The tour is free and great for the short people: i.e. kiddos)  So, I created an Intent called ‘IWantAJellyBean’ and seeded some phrases that would prompt the bot to start asking questions to fill in all the Slots.  This is the bridge between plain language and something the API can understand and the platforms language processing can imply the correct intent based on what you say or type.

Next, for my Slot, I created a short list of flavors.  This essentially acts as a type for fulfillment of the Intent.  When the Intent is invoked, a prompt that you configure in the framework adds a prompt to the chat to gather additional information from the customer.

Once all the information is gathered via the chat, the bot prompts one more time to confirm fulfillment of the order.  The confirmation is defined by the developer and you can determine the outcome based on the customer’s response.  Then, you can choose to trigger an event based on what happens as a result of the chat.  You can even leverage an AWS Lambda to take the results of the chat and trigger downstream activity.

Next comes the fun part: Talking to your bot!  This is mostly a debugging step but I was really impressed by how I was able to just use voice to walk through the test.  It’s very easy to see the potential of this platform to automate interactions with individuals and trigger requests or other business logic in your infrastructure.

I want to thank the individuals at DevICT for a fun and interesting learning experience.  If you happen to be in the Wichita area, I would highly suggest stopping by for their events, which can be found on Meetup or Facebook.

I’m interested in your experiences with Lex and AWS in general.  As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Thanks for looking in!