Start Your Own Open Source Project using SourceForge

pdfIt’s interesting what one can find when cleaning up an old laptop before dumping it :) Old photos that I’ve long forgotten of (some embarrassing ones too, omg the haircuts I supported throughout the time! :D), snippets of code back from the day when technology X was just coming out of its stables and I was trying my hand at it (again, some of them rather embarrassing as they never really took off, so in hindsight that was just a waste of time) … and in the case of yours truly, also snippets of blog articles and ideas that I was working on ages ago which again never saw the daylight. In this particular case, I came across a blog article that I nearly finished back in the day but never quite finished — and then other projects captured my attention so I buried this in the hard disk and left it to rot :)

This particular article I think surfaced in the early days of my aws-version-mgmt project on SourceForge (what happened to them? It’s all github and bitbucket nowadays..) — and as the work was progressing on that and I was looking for volunteers to lend me a hand at this open-source project, it occurred to me that some other open source folks might benefit from my experiences and learnings from this so I put together this (rather long) article. Since it’s quite long, I’m going to attach it here as a PDF — feel free to download it and spread it — however, just to save you some time and help you decide if this is something worth your attention, I’m including below some snippets from the article.

Read the rest of Start Your Own Open Source Project using SourceForge

Product Idea — Uber in Hotels?

Uber_Logo_Black_Background_smallI stumbled upon this potential idea recently, when one of my friends from Romania was over here for a conference. His company was paying for his trip expenses and they put him up in a hotel in Redwood City as it turns out. As you do when you travel, you try and connect with old colleagues and friends who are in the area — so he wanted to come and visit me. Due to work commitments we decided to meet during the week in the evening and he said he’d come over and stay the night. We exchanged addresses and agreed on times etc and then the evening came when he was supposed to turn up. His taxi dropped him to my door as expected but as the conversation started to flow he confessed that the taxi ride was a bit difficult to organize: he had to talk to the concierge who had to look around for local taxi companies (apparently they still exist in the Valley :) ) and then talk to a few (some rather exorbitant as I understand) and finally booked him a taxi. Then the on-board system wouldn’t take his Romanian credit card so they had to go to a cash point and used his (Romanian again) debit card to draw cash and pay the driver. Throw in this a call he got from his Romanian bank in the middle of it all — as they were trying to ensure this wasn’t a fraud — and you got a painful experience.

Read the rest of Product Idea — Uber in Hotels?

Snow in Romania, Jan/2016

Here’s what my hometown Constanta looks like under the snow:

Read the rest of Snow in Romania, Jan/2016

Jenkins CI Trick to Prevent Task from Triggering Itself on SCM Commit

jenkins_logoI’ve come across this recently working on a project in Netflix and thought worth sharing.

The project I was dealing with packages some JavaScript code which, before deployment, needed to be minified. We have set up our Jenkins task such that it polls Git for changes in the master branch and when the changes are found it starts the Jenkins pipeline. This is based on the fact that we all work in a development branch and deploy our stuff in test environments — and finally when all the testing is good we merge into master and from there deploy in production. By the time we deploy to production though, we have to minify the JavaScript source code (to lesser the pressure on bandwidth and increase the speed of our application.)

As such, at this point, we want to “process” the JavaScript resources and generate minified versions of them — which then get pushed into our production environment.

As a side note, since we use Gradle, we decided to go with Eric Wendelin‘s gradle plugin gradle-js-plugin. This allows us to take our original source file abc.js and generate an abc.min.js in the same directory. Now, we want to keep a copy of the minified version in Git so we can investigate if any issues come up. As such, after we run the minification we need to commit back abc.min.js (which should be the only file changed at this stage!) into git — and of course push the commit set back to git.

Read the rest of Jenkins CI Trick to Prevent Task from Triggering Itself on SCM Commit

Of Java Streams … Again!

JAX London LogoI just went again through this JAX London write-up (read more here: http://www.infoq.com/news/2015/10/jax-london-2015-round-up) and thought it was worth some more thoughts from me.

As you might recall, I have touched before on the subject of Java 8 streams in this blog post back in Sep/2014. The thing that puzzled me back then was the fact that using a streams-based implementation for small things (such as searching for an item in an array in that case) rendered quite a huge difference in speed — in this particular case, my measurements, while not precisely accurate, showed still that streams implementation was about 6 times slower than the sequential standard implementation. I can even take on the argument that my experience with streams in Java at the time was not quite there and as such code could be re-organized and optimized but even so one stream-efficient coder would still only get the stream-based code to perform close to the sequential implementation!

Read the rest of Of Java Streams … Again!

Convenience Factory Methods for Collections in Java 9

DukeTubbingSmallLooking the other day through the JDK Enhancements Proposals (aka “JEP“) I came across JEP-269: “Convenience Factory Methods for Collections”. Oh hello, where have you been all these previous JDK releases? :) It seems finally the Java world has woken up to what other JVM languages (and not only!) have been offering for a while: an easy way to declare and initialize a collection.

According to the JEP summary, this JEP aims to:

Define library APIs to make it convenient to create instances of collections and maps with small numbers of elements, so as to ease the pain of not having collection literals in the Java programming language.

That sounds cool — I dig :) To be honest, one of the reasons why I turned my attention to Groovy language in the first place was that it made such things so easy:

def set = ['1', '2', '3'] as Set

or

def list = ['x', 'y', 'z']

or

def map = ['a':1, 'b':2]

Tell me you don’t prefer this to the Java equivalent:

Set<String> set = new HashSet<String>();
set.add( '1');
set.add('2');
set.add('3');

Read the rest of Convenience Factory Methods for Collections in Java 9

Christmas Tree 2015

Christmas in the Park — San Jose

And check out also the neigbours’ giant decorations! :)

 

Remember the Time

Does anyone remember a company called Borland? Or am I showing my age too much? :)

Spotted the other day, at a team event with my Netflix colleagues, in Mountain View.

The Cars (Not The Streets!) of San Francisco, California