Proficiency – Crossing the No Man’s Land Between Training and Experience

“You can’t go to the moon because you’ve never been there.” – Some genius

I was updating my resume the other day and it occurred to me that most resume formats tend to focus on training (education + certifications) and work experience.  Whether it’s job experience or your credit score,  people with opportunities are going to ask where you’ve been before and why they should make a bet on you.   It seems like including your training and experience represent well tread ground, but how would you include other important qualifications that demonstrate your suitability for an opportunity?

What is Proficiency?

Examples abound in the IT field.  Do you contribute to open source?  Have you ever participated in a hackathon or other collaborative project?  Do you volunteer at a non-profit where you’re donating your skills?  Do you tinker in your spare time?  How do you represent these things to those with opportunities you want to pursue?  The term I tend to use for that is ‘Proficiency’

How to Achieve Proficiency

“I teach this shit, I didn’t say I know how to do it.” – Good Will Hunting

So, you’ve spent some valuable hours learning a new language, earning a new certification or finishing your degree.   Any of these is a substantial investment in yourself, but not necessarily enough to make you a successful candidate.  When I earned my very first certification (the CompTIA A+), I was answering phones for my day job.  In order to get my shot at a paying gig, I had to spend time experimenting at home and learning from peers who already had their foot in the door.  This was basically a DIY internship but it set up a path to my first paying job in IT.

Once I’d fully embraced the field as a professional, it was important to continue to grow and learn within the field.  It’s true that IT knowledge becomes obsolete at an alarming rate as new technologies are introduced or refined.   The various sections of your resume will be a record of these evolutionary iterations of yourself over time.

How to Demonstrate Proficiency

“Oh! And it’s scented! I think it gives it a little something extra, don’t you think?” – Elle Woods

For me, I’ve got the typical Education and Professional Experience sections listed.  However, I’ve added Skills & Specializations (this is where specific languages or frameworks can go), Certifications (industry certifications that are appropriate to the role) and Special Qualifications (my speaking engagements and body of writing).

Anything you put on a resume is something you’ll need to be able to talk about immediately in any stage of your interviewing process, whether it’s for paid work or otherwise.  Your mileage may vary, of course.   I think the key takeaway here is to own the format and representation of your skill set.   This can (and should) include things you did in your spare time as they represent investments you’ve made in yourself that didn’t necessarily involve a classroom or a paycheck.  With the right opportunity, it might even be more important as it’s a living record of your passion for your trade.

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

Building an App for ServiceNow

ServiceNow kind of has a thing for the letter ‘S’.  Is the thing you just downloaded or built a Scoped app?  Is it a Share app?  Is it a Store app?  It could be all or none of these things.

What is a Scoped app?

A Scoped Application is a distinct module or application within the ServiceNow platform consisting of one or more features.  The idea is that the functionality of the app is distinct enough that it shouldn’t be tightly coupled to one of the existing modules in ServiceNow or tightly coupled to the Global scope.  Any admin can create a new application via ServiceNow Studio.

My Lex Integration experiment was a scoped app, but not a store or share app.  My ServiceNow Cookbook describes how to integrate a scoped app with Github so that it can be easily shared with others.  It’s a great way to connect with other developers with similar interests and to bounce ideas off each other.

What is a Share app?

If you think your scoped app is ready for publication, you can begin the process of sharing it to the ServiceNow Share portal.  The portal has gone through some recent changes and has definitely matured in terms of content and activity.

While everything on Share is in varying stages of development and maturity, everything published there is free.  This is definitely good for new ServiceNow users that are just ramping up on the platform and don’t want to retread a lot of ground re-solving solved problems.  The trade-off is that, like most community supported or open-source code, things available on the Share portal are ‘use at your own risk’ with no guarantee of support, present or otherwise.

What is a Store app?

If you think your scoped app is ready for primetime, you can begin the process of publishing your app on the ServiceNow Store.  This is a premium portal where official Technical Partners of ServiceNow can get their apps certified and endorsed on the ServiceNow platform.  Apps on the Store can be either free or paid, but they benefit from additional endorsement and official support from the publisher and the ServiceNow brand.

Why should you want to build one?

Well, when I build apps, libraries or other code bases, I’m usually just experimenting.  But building useful things that other people want is a proven path towards improving your value as a developer and a partner for users of the platform.  Sharing interesting things that you’re working on is a way to connect with others and create opportunities to share with larger audiences.  It can also open up new business relationships or revenue streams as you develop skills and create products worth paying for.

How do you get started? 

Any member of the ServiceNow Developer program can create or contribute to projects on the Share platform.  Here’s a link to the FAQ.  If you or your practice is interested in publishing on the Store, information on how to get involved is available here.

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

hack.summit() 2018 – A Look Back

Another excellent hack.summit() has come and gone. This time around, the conference had an overarching theme on blockchain technologies, specifically cryptocurrencies. Since I’m not a block chain developer, I found myself googling terms from time to time as the field is very jargony. Still, I feel like I came away with a better understanding of what all the buzz has been about and look forward to learning more.

Here’s a sampling of the sessions I attended:

Opening remarks, introducing hack.summit() – Ed Roman – Like most keynotes, this was an overview of the conference in general and the blockchain theme. Also a reminder that it’s intended to be technical and the intended audience is developers or other creators. Also, some general information of how to navigate the interface and what to expect during these three days.

What is Byzantine Fault Tolerance? – Leemon Baird – This session starts off with a classic logic problem called the Byzantine Generals Problem. Essentially, how do you coordinate consensus in a distributed system with delays in messaging and suspicion of maliciousness or compromised communication. The presenter walked us through several stages of solving this piece by piece and how complexities have been added over time to resolve man in the middle and other attempts to interfere with trusted communications.

De-centralized Exchange Panel – Alan Curtis and John Piotrowski – This session was an open token exchange discussion on centralized exchanges versus decentralized exchanges. Mostly, there were points raised about the trade-offs between outsourcing some security management tasks such as handling keys to a centralized exchange versus maintaining agility and independence without committing to such a system. I’ve always been interested in the trading field and so much of blockchain is currently focused on monetization before application. While trading isn’t the only application of blockchain, you owe it yourself to understand the current primary driver for innovation in this space.

Engineering an Algorithmic Central Bank – Nader Al-Naji – A session specifically talking about the benefits of Bitcoin decentralization via Basis. Basis purports to offer a system that sources external pricing on itself, referenced to a fiat currency like the dollar. However, it can also key to things like commodities to trend values and control the supply of tokens, much like how the Consumer Price Index works. This results in Basis auto-adjusting much like how the Federal Reserve moderates the money supply to ensure currency instability doesn’t result in over-contraction or inflationary disruptions.

Liquidity, Regulation, and Exchanges – Tammy Camp and Sean Bennett – A compsci and datasci heavy session focusing on the blockchain technology itself. For example, how having a complete dataset of all transaction history built in is hugely advantageous for utilizing transactional systems. Also some caution about how this is still such a new technology that the regulatory landscape isn’t quite clear and that allows the legal market to seek rent in the cryptocurrency space. Some discussion about how by using Stronghold as their anchor/bank/brokerage, depositors grant rights to Stronghold to execute trades on Stellar on their behalf. Currently, in order to access a decentralized exchange, you need a point of access or ‘on-ramp’.

Parity Technologies Presentation – Jutta Steiner – Founder and CEO of Parity – Parity is intended to be a framework or platform for developing blockchain tools and technologies. In this session there was discussion around how in looking at the computing side of blockchain, the various chains and tools and their work product end up comprising a larger computing structure with its own emergent properties. Also, in attempting to make the technology more accessable, Parity is incorporating a vision of improving UX/UI for their toolset.

Building software in a fast-changing ecosystem – Antonio Salazar Cardozo – Technical Lead – Keep Network – I was really looking forward to this session but it got a bit of a late start. Some common sense reminders about how to deal with continuous delivery at a breakneck pace. The session motto was ‘Use Your Pockets’ which refers to the presenters experiences as a young builder and literally means to put your hands in your pockets and think for a second before making a change you can’t unmake. Basically, a nice riff on ‘Measure twice, cut once.’ I’ll need to go back and watch the entire session.

Speaking of, in case you missed a particular session or day of activities, the content is available freely for review. As for me, I’m looking forward to delving more into this space as time permits.

I’d love to hear from any other attendees to share information and opinions about this year’s hack.summit(). If you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

hack.summit(“blockchain”) 2018

It’s that time again..

It will be my pleasure to once again attend hack.summit() next month. Hack.summit() is a bi-annual not-for-profit virtual conference bringing together IT experts, professionals and enthusiasts from around the globe. My previous experiences there have been very valuable both as a professional developer and as a technology hobbyist.

This year’s theme is blockchain, with headline speakers including technical founders of projects including ZCash, Ripple, Mt.Gox, Kadena, Stellar, DFINITY, Monero, Oasis Labs, Orchid, Bancor, Basis, and more. Previous years have attracted over 80,000 attendees, holding world records for both the largest developer conference and largest virtual conference in history. It’s kind of a big deal and worth the time, even if you choose to attend just a couple of sessions.

One cool addition this year is a global virtual hackathon, giving developers the opportunity to “hack for good”, with both the chance to win tokens donated from blockchain foundations, as well as help raise funds for charitable causes via sponsorship donations.

If any of you are interested, and I hope that you are, you can use the code *JBTECH* to redeem a free pass to hack.summit() for this year. One thing to bear in mind is that donations aren’t required, but are much appreciated. Should you choose to donate, the event will forward all proceeds to causes including Women Who Code, Black Girls Code, Free Code Camp, Electronic Frontier Foundation (EFF), Coder Dojo, Bridge Foundry and more.

If any of you are curious about (or may have attended) previous hack.summit() events or have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

“See” you there!

Knowledge 18 – A Look Back

Last year, I was privileged to attend and present at ServiceNow’s Knowledge 17 conference and was definitely looking forward to another opportunity.  Luckily, someone was asleep at wheel when screening presenters as I was invited back!

This was my first time presenting all on my own at Knowledge.  It’s a bit intimidating but also very rewarding.  If you’re interested in presenting, ServiceNow submits an open request for presenters leading up to the conference.  Some of the things to consider when building your presentation are as follows:

  • What will the attendees learn and why will they care?
  • What are the problems you faced?
  • What was the objective?
  • What was the solution?  How long did it take?
  • What did you learn?
As is common to conferences, there will be a keynote presentation to set the tone and share the overall theme.  This year brought a renewed focus on the user experience within the platform and not doing tech for tech’s sake.   Many promises of new features as well as a road map for our next six major releases.
 
Of course, we need to hit the ground running on our first day.  This had to be one of my favorite sessions and one of the most challenging.  The presenters took the hands-on experience of the workshop to the next level by having each of our instances visible from the stage as we walked through simulations of events and alerts.
 
Another very enlightening session walking attendees through creation of a custom CI Class and then building Discovery criteria to identify nodes fitting this new class and merging it into our CMDB.  A great primer for those of us who do any work in Service Mapping
 
This was a fun one focused on reimplementing ad-hoc Powershell and SSH activities in the Workflow Engine.  For anyone who does much scripting in Microsoft environments, having the ability to integrate your existing scripts into Orchestration activities is invaluable.
 
This keynote brought more substance to the promises of the first day’s session.  Much emphasis was placed on new mobile and user specific features as well as interpretation of user needs and virtualization of first responder sessions using AI and bots.  Some of the skits were a bit corny and stilted but the message was clear.  People shouldn’t dislike or be frustrated by their work tools.
 
This was a fun tutorial on one of my favorite tool sets for the platform.  Seriously, if you’re a ServiceNow developer, you should be using Xplore like yesterday.  Great inline tools that give an intelligent code completion feel to the global libraries available on the platform and might help you learn about a few things you weren’t even aware of.
 
This guy was a complete jerk and never should be allowed to present ever again…
 
…But seriously.. thanks to all who attended for asking great questions and making this a great experience for me.  It’s very rewarding to see this experiment through additional points of view.  I hope you got as much out of it as I did.
 
This was my only breakout session since I tend to favor the hands-on workshops.  Still, some great improvements are being promised for Discovery and Service Mapping to make it less opaque and more accessible to the layperson.  If you want to get the full value of an IT implementation of ServiceNow, something as fundamental as node discovery and aggregation should be as basic and straightforward as practical.
 
Using Event Management to Monitor Your ServiceNow Instance Health
This was a fun little session that introduced us to a front-to-back implementation of Event Management as it applies to monitoring the ServiceNow environment itself.  Might seem like a Catch-22 to have the watchman watch itself, but it’s honestly a scenario that gets overlooked when you think about critical applications and monitoring their health and availability.
 
Another fun hands-on experience, this time integrating event monitoring to an AWS environment.  This also covered the idea of anomalies and other ‘odd behavior’ on monitored nodes and the ability to configure monitoring thresholds based on deviations from a baseline instead of express limits.
 
Summary
This was a much shorter conference for me as I chose not to attend pre-conference training.  Still, those three days were filled with the requisite fire hose of information as well as meeting a few old friends and making a few new ones.  Can’t wait for next year!
 
I’d love to hear any feedback on this post, especially if you attended Knowledge 18 and would like to discuss your own experiences.  As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Quick Update – Knowledge 18

After having a great experience at ServiceNow’s global conference last year, I’ve made it a point to keep it on my radar.  I’m happy to announce that not only will I be attending again this year, but I’ll also be hosting my own presentation!

The session is entitled Integrating Service Portal With Amazon Lex and it’s based on a demonstration of Amazon Lex I attended with a local developer community in Wichita followed by some tinkering on my own time.  The result is an open source application which can be plugged in to an instance of ServiceNow with minimal effort.  Considering the ongoing move towards hosted solutions, this is something I hope implementers of ServiceNow will find useful.

If you happen to be attending Knowledge 18 and have an interest in AWS or integrations in general, I’d love to see you there!

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

 

Keeping Current

If you dislike change, you’re going to dislike irrelevance even more. – Gen. Eric Shinseki

One of the more common dilemmas in our trade is knowing what to focus on. It’s easy to get lost in the day to day and forget about the big picture of our careers and staying relevant in a constantly shifting landscape. No matter if you’re just starting out, or if you’ve been in the trade for a while, it’s important to always stop for a moment and ensure your actions line up with your overall career strategy.

It’s almost cliched for those just starting out to ask ‘What language should I learn?’ New developers want to ensure that what they’re learning is relevant and they aren’t wasting their time. This is a perfectly valid concern. However, I’m going put on my Mr. Miyagi hat and claim that the meta-knowledge you’re gaining while practicing is more important than the language you’re learning it in. Knowing how to break a larger problem down into smaller problems that code can solve is language agnostic. So is aggregating those smaller solutions into an overall design. Even better is learning how to troubleshoot and test your solutions before bringing them into production. Anticipate your customer’s needs, expect resistance and learn to persevere. All of this is more important than learning what’s hot and sexy.

For those of us that have been building and solving for a while, keeping relevant and sharpening the saw can become easy to neglect.  It’s hard to take a step back from project work with its pressures and deadlines to invest in some new knowledge.  If you’re fortunate, your employer will check in with you on training and goals within their organization.  If you’re not (or possibly self or unemployed), then it will fall upon you to invest in yourself regularly.  This must be done deliberately and in sufficient frequency to ensure you’re continuing to grow in your trade.  Some ideas to spend this effort might be to earn a certification, learn a new development paradigm or maybe even start a blog.

If after this, you’re still curious about what’s in demand, a resource I check every so often is the TIOBE Index.  The intent of this index is to cast a wide net over what code is being used in the wild and what people are releasing as far as learning courses and other content.   It’s not intended to make recommendations, but only to offer data or a heat map of ‘what’s out there?’  While rankings like these are about as scientific and individually predictive as measuring your BMI, it’s important to take them into account for the same reason.  Meaning, opinion makers, customers and potential employers pay attention to them.  Also, indexes that focus on language alone fail to account for higher level disciplines like testing and design.  As a ServiceNow specialist, most of my actual coding is done in Javascript, but that’s not necessarily where I’m adding most of my value to customers.  So, take the the popularity (and fads) of individual languages with a grain of salt when deciding what’s relevant to YOU.

So, what do I think is most relevant today?  Relevant in the next 5 years? 10?

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

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.

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!

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!