Welcome to our continuing series of Code Project interviews in which we talk to developers about their backgrounds, projects, interests and pet peeves. In this installment we talk to Hal Rottenberg, who claims to not actually be a programmer. We’ll see about that…
Who are you?
My name is Hal Rottenberg, and I work as a Solutions Architect in the Technical Business Development department at Splunk. My job involves creating integrations between Splunk and our partners. I’ve been here for about a year and am loving the challenges.
What do you do?
At Splunk, we work with machine data. Machine data is the “exhaust” that’s created as all of the computing systems around us, whether it’s software or hardware, do the work that these systems were designed to do. Usually, this exhaust is in the form of logs written to disk or sent over the network. Common examples are the access logs created by Apache or IIS that describe visits to your website, or syslog events created by network devices that pinpoint when an attacker is attempting to penetrate your firewall.
But the cool thing about Splunk is that this data can be in any format and can come from any device. The job of Technical BD is to think up cool solutions that combine the machine data from, for example, Microsoft Exchange or Citrix Xen Desktop, with the analytic and reporting capabilities of Splunk, and turn that into a series of tables, graphs, charts, and dashboards.
The projects I’m working with lately involve getting data from Cisco’s UCS server platform using their XML API, turning that data into a format that’s easy to parse within Splunk, and then using the Splunk search processing language to answer questions that our customers will find valuable.
The funny thing about machine data is that you often don’t know how valuable the data is until you have it in one place and can quickly perform searches against it. For example, if you see an error code in a log file, you know you have a problem. But what if you have 200 servers? Or 40,000 virtual desktops?
It’s pretty cool to be able to type in that error code, and within seconds, see how often it is occurring, from which nodes, and then be able to drill down to see what events might have preceded the error.
And when you have multiple sources of data coming in from all of the pieces in a complex system, you can start to do some really cool stuff correlating data across all of the parts in a way that other products don’t really handle.
What is your development environment?
Well first of all I’ll mention that prior to working with Splunk, I had never used a Mac. They gave me a choice: Mac or PC. I decided to try something new to go along with the new job (I’ve been with Splunk a year now). I’ve been using Windows since version 3, and all of my working career I’ve been supporting Windows-based platforms, so this was not a lightly-made decision.
That said, I’ve always had a great respect for and decent working knowledge with Linux as a server. On the desktop, however, I felt that it was more of a plaything. Try out a new distro now and then, see what the FOSS guys are up to, and then go back to Windows and do my real work.
I’d heard good things however, that Apple had really done a great job of bringing a polished desktop UI experience to a kernel and OS base that was “Linux enough” that all of the cool devs were attracted to it and with a bit of cross-compilation, make their stuff run there, too, with minimal extra effort. I was interested in seeing what this produced, and hey, nothing wrong with running VMware Fusion with a Windows VM when I needed to run Windows apps.
So, the funny thing about all of this is that I’m a Microsoft MVP, and my award was given for my community efforts around the Windows PowerShell scripting language! Let me tell you: PowerShell don’t run on a Mac. And I’m actually a pretty crappy Bash scripter, and my Python-fu is still relatively new. As a result, I’m still not extremely comfortable with my Mac-based toolset.
My primary editor these days is Komodo, but I sometimes slide over to Subline Text 2 when working with longer XML documents where I find it a bit easier to navigate.
When in my Windows VM, it’s usually for working with PowerShell. I’m a huge rabid fan of the language because Microsoft really nailed some core design concepts such as high-level task-based actions (called “cmdlets”), its consistency and ease-of-use, and simply the fact that they have fully committed to it in such a way that all product groups at Microsoft and tons of third-party vendors are adding support for PowerShell in their products. No other glue for automation in the Windows ecosystem has ever had this level of support.
And it’s also a fine shell for just getting things done interactively. Need to remove a few hundred files that match a particular filename spec, are over a certain size, and were written between 30 and 60 days ago? That’s a one-liner in PowerShell.
When I’m working with PowerShell, I’m always in the PowerShell Integrated Script Editor (ISE) which Microsoft includes with the OS. The ISE doesn’t have everything that the best editors have, but it’s quick and light, has somewhat of an extensibility model (a bit immature, to be honest), and it doesn’t get in the way.
There are other better editors out there, and I’ve tried all of them. If I were on Windows full-time and working on single-platform products (unlike my current job), I would most likely be using something else. Most likely that would be Sapien’s PowerShell Studio which I have great respect for.
The future for me looks like Python and the Django framework, so that’s what I really need to get better at. A friend of mine is trying to convince me to grab PyCharm, but I haven’t gone there yet. Consider it next on the list to try.
Also, I’m seeing some of my peers doing some amazing things with D3. We are all about data visualization, so that makes a lot of sense to learn as well.
What is your coding pet peeve?
I like what Microsoft did with PowerShell. Always capitalize the first letter, mix it up with some camelCase when you need to. However, I’m finding that more of the things I touch are more case-sensitive than I’m used to (PowerShell is case-preserving, but case-insensitive), so I’m trying to “go low” and stay there so as to avoid confusion and the more stupid kinds of bugs.
I’m one of those guys that likes to hit the tab key, not the spacebar. I’d like to say that I’m not very anal about these sorts of discussions, but honestly that’s because I’m usually working on smaller one-man projects so I don’t often have to compromise with peers and their horrible lack of style. https://www.codeproject.com/script/Forums/Images/smiley_smile.gif
How did you get started programming?
What?! Who are you calling a programmer? Oh. Crap, I guess I am sort of sounding like one, aren’t I?
That’s pretty new to me, actually. Over the past fifteen years, I’ve always been in IT. I’m much more used to being the guy that answers the phone (OK, that was a long time ago), racks the server, deploys the VM, or architects a complex multi-tier system, than the guy that is creating something new in software.
My first computer was a Commodore 64, and I did dabble a tiny bit in BASIC, but really didn’t do much beyond typing in the examples from the computer mags at the time. I eventually got a PC, and was always a gamer.
I liked to take things apart and make them work differently, so hacking in the sense of peeking and poking into parts of memory that the developer did not intend me to do so was often fun. Modding games was also fun, so anytime you had a game with config files or save files that could be modified, I had to tweak it. It’s that learning by experimentation that has remained super valuable in my career to this day.
I had an Intro to C class in my first year at college, and I would really piss off the teacher (I hesitate to call her a professor) because I knew the material better than she did. But I never really went further with CompSci.
Around that time I learned about MUDs (Multi-User Dungeons), which I’ll explain for the kiddies: it’s like WoW, but no pictures. https://www.codeproject.com/script/Forums/Images/smiley_biggrin.gif
I spent a lot o time as a “wizard”, which in those terms meant I could use a programming language to create new worlds for others to explore and interact with. I think the one we used was called LPC, and it had a syntax similar to C, so fit in with what I was doing in class.
Even so, I never considered myself a programmer, and still don’t. I do make stuff. I do work with programmers. but my brain isn’t wired like most who actually wear that badge. I think it has something to do with one’s attention span. I have none. https://www.codeproject.com/script/Forums/Images/smiley_smile.gif I don’t stay up for late-night coding binges. I’m just as likely to be at a conference talking about what I do, or meeting with partners, than I am actually sitting down and coding.
Much love and respect for those who can just get stuff done and churn out thousands of lines of code, but that’s not me.
I’ve long been involved in online communities of all kinds. Usenet and IRC, to Twitter and Google+, plus everything else in between.
I used to be big into running forum-based communities. I have both led and attended the occasional in-person events like user groups and conventions of all kinds. I’ve had the pleasure of speaking at some of the largest IT conferences like VMWorld and Microsoft TechEd. But I think the most fun I’ve had was at a smaller conference called Codestock which is held yearly in Knoxville, TN.
I’ll say that the most important personal networking that I ever did was to attend a user group in Atlanta where the leader saw me as I came in the door and said “Hal, meet Jim. Jim, Hal wrote a book about PowerShell.” I started working for Jim a couple of weeks later. This was after I had just gotten laid off from my previous employer. Talk about timing.
What advice would you offer to an up-and-coming programmer?
I’ll just build on the community question and say get out there and meet your peers. There are events to suit your skills and interests, I guarantee it. And the best job is the one that you get through your personal network.
Sick and tired of your current job? Sitting at home unemployed? Get out of the house and meet people. You can throw a stick and hit someone who does what you do, and might even be better at it. The worst case is that you’ll learn something new.
Build your skills. Always read. Try new things. Create things and publish them. My last two jobs I didn’t even interview. The hiring managers were able to see my work just by searching for my name. Sure, it took time to build that up, but man, it was worth it.
I love my current job, but things happen man, and you have to be prepared for that next gig because nobody else can or should help you get there.