Friday, September 23, 2016

So... We Have a Probe Orbiting Jupiter...

And this took so long because... ? Be forewarned, there is much factual information in this post but it's a rant.

First of all I am thrilled we're orbiting Jupiter, but come on NASA... we just sent a probe out beyond Pluto, an extensive Jupiter expedition should have been done YEARS ago. I get it that all space discovery is expensive, and Jupiter is really far away, but as a species we are REALLY behind right now. I also know the argument "let's focus on fixing this planet before we go someplace else", but if we don't get off our asses and start doing some serious exploration, we're not going to have any idea where to go, even!

I have always been a space and astronomy nut. Something about a science where there is the possibility of discovering something brand new that's never been seen before is fascinating to me. We also discover something new virtually EVERY time we explore anything... so why aren't we exploring more stuff? New Horizons flew past Pluto in ONE DAY, and do have any idea all the science we were able to do in <24 hours? It's insane! And we're STILL discovering stuff, just today scientists determined that because of the shape and behavior of the informally-named Sputnik Planum there's most likely a 100KM DEEP OCEAN ON PLUTO. What?!?

There are 8 planets in our solar system, did you know the last time we were up close with two of them (Uranus and Neptune) were 1986 and 1989 respectively? Why is that? One of them is tilted completely sideways unlike ANY other planet in our solar system, and the other one has the fastest sustained winds (2000+ mph) we've ever seen and we don't know why. Is this not interesting to us as a species? It's 2016, I figured by now we would at least have probes orbiting all the planets.

Part of the problem is all the planning necessary to launch one of these things. Unfortunately we haven't really developed an assembly line process for building long-distance space probes. As a result, by the time one of our probes visits the places we haven't been to, the technology is on the brink of obsolete. It took 10 years for New Horizons to get to Pluto... it was launched in 2006. Do you remember what sort of digital camera you had in 2006? Pretty sure the megapixels were still in the single digits... most people were still on Windows XP listening to music on our iPod classics... crazy right? And it's that level of technology sophistication that's on a spacecraft hurtling through the outer reaches of our solar system.

It's this type of problem that makes me confident we're doomed as a species. In 2015, the US spent $601 Billion on defense. The NASA budget you ask? $17 billion. Yep, the budget to build and develop sooper-cool jets and explody bombs in this country is 34 times larger than budget for understanding how and why we're here. One final thought on this, the development of the new F-35 fighter plane build by Lockheed Martin cost the US taxpayers $1.5 trillion dollars. Yes, trillion with a T. The cost of sending a probe 4 billion miles from earth and capturing tons of priceless scientific data? 700 million. mic drop 

Tuesday, September 20, 2016

The SE Spectrum (A philosophical quandary)

Sales Engineering is a fence, I've always said it. On the one side, you have the sales side of the job... The other obviously engineering. Every SE I've ever worked with falls on one side or the other, but never all the way in one direction, and that's the way it's supposed to be. Inherent in being a SE is you can't be a Tea or Green Party candidate, you have to fall somewhere in the middle (otherwise you' d just be a sales person or an engineer).

The good news is there's no right or wrong way to be a SE. Some of the best SEs I've known are more backend-focused and fall very far on the engineering side of the spectrum. Others, (like many of my mentors) love being on the phone with customers and are more on the sales side. It all depends on what you want in your career. I find that that most of the "architect" level SEs are further on the engineering side and a majority of the "evangelist" type SEs are more on the sales side. The key is to figure out what you want and start making decisions to help you head further in that direction. Most of you that are younger in the game probably aren't quite sure what you want yet. I can tell you that early in my career I flip-flopped quite a bit with my decision.

Many of you know my first gig was in a vulnerability assessment company, which in the beginning gave me topical access to network infrastructure data and I could do basic scans and tell network engineers what patches they needed to apply. It wasn't exactly lighsaber duels, but as I learned the SE craft it was the perfect amount of technical for me to practice my technique and build confidence. Then one day that company bought an open-source penetration testing tool, and I was gobsmacked. All of a sudden I had access to something that could do really cool shit. Rather than telling someone they needed a Microsoft hotfix or something, I could break into vulnerable machines and screenshot their desktop! Huzzah! 

I became so enamored with this tool, I decided I wanted to make it my core competency. I studied it, developed an entire demo and trial process for it, I even designed marketing material and a presentation cadence for trade shows. It was awesome... Until I got my paycheck. In my exuberance for this new product I had completely overlooked the fact that the average sale price of my new toy was $16k a pop, vs close to $100k for the VA solution. Don't get me wrong, the time I spent was definitely worth it. Because of the time I spent with the new product I increased my technical chops 10-fold, got face-time with some far more technical folks, and was able to attend some far more interesting conferences.

I was at an inflection point with my career. I could continue down the technical path and potentially get really good with the new product and enjoy the new and interesting world that came with it... Or I could go back to the other side and help out my bank account. I spoke with my friends and colleagues about it, and my mentor at the time gave me some advice that impacts my career decisions to this day. He told me:

"Ask yourself, what it is about this new product that has you so enamored? Is it the new product and technology, or is it learning something new and developing a new process around it?"

It was then I realized I had my first point of reference on the SE spectrum... And it was on the sales side of the divide. I thought the new product was cool, but what I really enjoyed was the ability to analyze the market, figure out the audience, and develop a new way to engineer the sale. The big divining rod I gained from this experience was:

Don't let any one product dictate your direction as a SE.

We all work for labels, and unless you plan on staying at one company for the rest of your life, it bodes well not to focus all of your energies on one particular product. Widgets will come and go... Figure out your relative place on the spectrum and hone your craft.

Wednesday, September 14, 2016

The Benefits of Promoting Your Brand as a SE

First-off, you can probably find 10,000 shit posts about this same topic written by some douchey self-proclaimed "E-Marketing" guru or something, but that's not the image you want to portray if you want to maintain your level of respect as a Sales Engineer. One of the biggest challenges in anyone's professional career is to get noticed for the right reasons and not look like an attention whore. This challenge is exacerbated substantially when you happen to be an introvert and have an inherent phobia of associating your online personas with your professional image.

But lo, all is not lost. For in the infinite scale and grandeur of the internet we have been anointed exquisite gifts that, if used properly, can work as if they were specifically designed for technical introverts like myself. I use these gifts, but I had to be teach myself through trial and error over a number of years how to do it properly. Here are some of the things I've learned:

LinkedIn
On of the most obvious first steps is to set up a LinkedIn account. I know it's played out and most of the posts have become months-old memes and shitty "brain-teasers", but it's still the best reference anyone has for getting your professional profile. Make sure you create a custom URL for profile. Sounds corny but it makes things easier to put in email signatures and business cards. 

When it comes to LI, there are a few commonly overlooked things that can make you stand out. For me, I've had more compliments on my Summary than anything else (don't be afraid to plagiarize). In the "Experience" section, make sure you put a little blurb about what you actually do at that company rather than just the company tagline. Feel free to put personal accomplishments in there, but don't make it look like a huge deal unless it actually is. Nobody gives a shit that you got your CISSP so... put it in there, but don't be a dick about it. 

Lastly, on the topic of things that nobody gives a shit about... nobody cares where you went to high school so leave it out. In my experience if I didn't actually know the person in high school, the connection wasn't strong enough anyways. If that's the angle you're trying to work in a deal, you're probably not going to close that deal. Think about it.

UPDATE: One very cool thing about LI that I learned recently is it is WAY MORE ephemeral then most people think... far more than any other social media. I have started testing out tweets in LI before I actually put them on twitter. If you post something to LI, you'll get nearly instant feedback on it, but it will also fall down the queue so fast that if it turns out to be a shitty post it's gone before you know it. You can also delete the post and it's almost like it never existed. Unlike twitter and FB, people don't have LI posts under a microscope so you can get away with testing the waters a bit. 

Twitter
Next, set up a twitter feed and start following the insiders in your industry... just google it, trust me. Put your twitter handle in your LI profile. Job hunters that are worth their salt that are looking at your LI profile are going to look at your twitter feed. I treat my LI profile as something I could easily show my grandma and my twitter feed as only being shared with my friends and people who think I'm interesting. Try and tweet relevant stuff... retweets are good too but if you do, at least tag an opinion to the retweet. You will make or break your twitter persona with the use of relevant content. Try using something like feedly and following a ton of RSS feeds relevant to your field and write posts on interesting stories you find. You can also use something like tweetdeck and create lists to keep up to date. Also try and respond to tweets with something insightful. If the person you're tweeting at retweets your tweet, that's instant publicity and confirmation that you have something to say.

Facebook
EVERYBODY looks at Facebook: recruiters, managers, colleagues... your grandma... everyone. I did some serious research on how to lock it down, read this to get a decent headstart. The idea with Facebook is to keep it populated with enough static data so an anonymous person can at least see that you're a social person, but not enough to reveal anything too personal. I updated my Facebook profile like 3 years ago, haven't touched it since, and only post very occasionally if at all. 

It seems daunting in the beginning, but once you get the hang of this it's easy. I have a tendency to think and be creative in chunks... followed by long periods of flat-line brain activity. To combat this, when I have an epiphany or ten I write a bunch of tweets and schedule them, or start a bunch of blog posts and leave them unfinished for a later time when my brain is in tapioca-mode.







Wednesday, September 7, 2016

trying to be a coder

Historically I've been more on the sales side of sales engineering. My first gig I was a borderline demo-donkey for the first couple years, didn't ever even need to touch a terminal (or command prompt as it was at that time). As anyone will tell you, it's really easy to get in a comfort zone where you're the big fish in a small pond.

 In the spirit of not being the guy who isn't getting any better, I developed some strong relationships with the engineers at my company and dove headfirst into the world of coding (sort of). I've written "scripts" before to do specific tasks... that of course meaning I would come up with an idea, fail at writing the first function and then go bother my dev friends for help. Once the first function was working I would continue to repeat this process until the script was complete.

 One of my extremely intelligent colleagues developed a visualization tool called OpenGraphiti that can take any relational dataset formatted in JSON and graph it in 3d (this is a gross over-simplification and doesn't even come close to doing justice to just how amazing this thing is). It's a brilliant piece of software and it can do amazing things, but it's complicated to get running, putting it out of reach for most sales-leaning engineers like myself. So, as a public service, I decided to take a run at writing an install script for all the prerequisites.

Step 1: Figure out everything that needs to be installed.

This part was easy, it's all listed on the OG site. The challenge is you have to install things before you can install other things (yodawg) so I grouped them together accordingly to keep track.

Installers and Repositories:
git
brew

Core Components:
xcode (mac)
python

Packages:
requests
investigate
shodan
geoip2
networkx

Software:
opengraphiti
miner script

Other stuff:
datasets

Step 2: Decide what language to use to write the installer.

Since I am most familiar with bash I decided to use that.

Step 3: Write the script

This took a few tries to get working. Logic states that to install packages, you need package installers. And from previous experience, I know that in order to get any code at all to work on a mac, you need xcode. After much fettling, I learned that there's no easy (or fast) way to install xcode, so I just put some text at the beginning of the script to let people know that they need to have this first:

echo "Automated OpenGraphiti installer 1.0 created by mrbarrett"
echo "IMPORTANT: You must have xcode installed (mac) before running this script!"

Step 4: Test

This was the extent of the niceties in the script. Everything else was just a lump of brew installs and git-pulls. Worked great on my machine, sweet. Then, inevitably, we hit a roadblock. Of the 15 people I sent this to, 13 of them reported errors... fml.

After some more head-banging I figured it out. It was a mixture of not having Xcode installed (RTFM), not running Xcode before installing (RTFM) and having the wrong version of python installed (I found out later 2.7.10 isn't installed with brew, you need an old-fashioned download from python.org).

Eventually we got everyone installed... but not before me being "your company's computer guy" and physically sitting in front of everyone's machine individually and getting it running. The phrase "no good deed goes unpunished" comes to mind... Regardless, it was a good exercise. I continue to practice writing stuff and understand the basic structure but it's like any other skill... if you don't use it regularly you forget.

For the .000001% of you that are reading this because you're struggling getting OpenGraphiti installed, you can find my script here (it also grabs some baked datasets from my own personal git):

#!/bin/bash
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" &&
brew install git &&
brew install glew &&
brew install cmake &&
brew install pkgconfig &&
brew tap homebrew/versions && brew install glfw3 &&
pip install networkx &&
pip install pygeoip &&
mkdir ~/OG_Demo
(cd /home &&
git clone https://github.com/ThibaultReuille/graphiti.git --recursive ~/OG_Demo/graphiti &&
git clone https://github.com/ThibaultReuille/raindance.git --recursive ~/OG_Demo/raindance) &&
(cd ~/OG_Demo/raindance && make) &&
(cd ~/OG_Demo/graphiti && cmake . && make) &&
mkdir -p ~/OG_Demo/datasets
(cd /home &&
git clone https://github.com/mrbarrett/baked-graphs.git ~/OG_Demo/datasets)
echo "Done!"