Ok, so if you haven’t been watching my activity on GitHub you might have missed this, and as such I feel it deserves a full on blog post. Recently, having joined Netflix, I started using some of their libraries, as to be expected. One of the things that I used pretty much from day one here, was the Genie library. To quote from Genie’s page on GitHub:
Genie is a federated job execution engine developed by Netflix. Genie provides REST-ful APIs to run a variety of big data jobs like Hadoop, Pig, Hive, Presto, Sqoop and more. It also provides APIs for managing many distributed processing cluster configurations and the commands and applications which run on them.
As you can probably figure out from the above, I’m using Genie for querying some of our Hive datastores. And in doing so, I’m using the Genie client code which Netflix provides with this package — available in Github: https://github.com/Netflix/genie/tree/develop/genie-client
However, having looked at the sample code they provided I realised this can be actually improved. I spoke with the folks here who are looking after the Genie project and it transpired quickly that indeed the client library is in need of some lovin’. So I set off and put together a pull request (https://github.com/Netflix/genie/pull/116). This has now been merged into the main trunk however I think it needs a bit of attention as I’ve seen code presented in this project used elsewhere which can be improved based on the changes I put together in that pull request. This blog post will walk you quickly through these changes — if you are using pieces of code from the client’s code in GitHub, it might be worth reviewing your code and see if my changes can be applied in your project too.
I have started using recently Gradle, which I have to confess I actually find to be a bliss compared to Maven. Maybe because I prefer a Groovy-based syntax for build configuration, rather than Maven’s XML-based configuration file. Or maybe because I feel somehow the Gradle peeps have made the tool a bit easier to use than Maven. Or maybe because the integration with IDE’s seems to be cleaner. And I could probably go on, but you get the idea: after the initial playing with this, I’m digging it
And while using Gradle, here at Netflix, one of the things I started looking at is how to add a bit more automated defect detection to our code base in Ads Engineering, in order to improve our code quality. Of course, for those of you who are familiar with code coverage tools and the likes, Checkstyle, FindBugs and so on springs to mind. And all of these tools have (rather nice!) Gradle plugins — which makes this task a bit of a breeze!
I wrote before about how bad occasionally mobile advertising gets nowadays (see this blog post here). That was about 6 months ago — and I was hoping things started to change in the meanwhile. (After all, in the Valley we hear a lot about how quickly the world changes, right? :D) Well, it appears not — some companies are still stuck in the silly mentality of using in-app advertising to just annoy the hell out of the user until they buy some premium service. And today I had just encounter another case of really really bad advertising.
This one is extremely bad because it’s not just nagware where you get shoved advertising in your face at each step until you pay for a premium service. (And by the way, that in itself makes a really bad case for advertising because it is actually stating upfront to user that “look, we know advertising doesn’t work — soooo not true by the way! — and we don’t really value it either but we know you hate it and we’ll keep shoving it in your face not because we hope you might be interested in the products we advertise, but because we hope you will get so annoyed with it to buy our premium service and get rid of it”. In other words, advertising is not used to trigger user interest in other products or services, but instead just to annoy the s#@$t out of the user.) No, in this particular case advertising actually prevents the user from using the application!
This is another speech I’ve given at Valley Toastmasters and it’s part of the Competent Communicator manual, project #10: “Inspire Your Audience”.
(The speech is actually based on a Ted talk given by Terry Moore titled “Why is ‘x’ the unknown” and you can watch it here: http://www.ted.com/talks/terry_moore_why_is_x_the_unknown )
As a reminder, the objectives of this project are:
With that in mind, here’s the speech I delivered.
As you might know by now, I’ve adjusted a bit my career recently. My core experience is a techie in the online advertising world — and as of recently I’ve moved into an adjacent segment: digital marketing. It sounds like a drastic move, but to be honest, when you look closely, it’s actually the same thing, but from the other side of the fence (and to be honest at a much smaller scale).
The advertising world deals with ad views, impressions, clicks, conversions, visitor profiling… and the digital marketing world deals with the same: any digital marketer is constantly looking at conversions, page views, call-to-actions, landing pages, profiling visitors, lead nurturing (which is very similar to visitor scoring we’re applying in advertising) and so on.
In fact, back in the day when I was in Cognitive Match, the original idea of the business was exactly that: to take ownership of the whole sales funnel. (Sadly a few things went wrong somewhere at the top and we had to ahem pivot a bit…)