Automated Business Logic

If you are working with Hibernate this might be interesting for your. Automated Business Logic (ABL) is a Library which helps you to manage your Business Logic. It handles Cross Cutting Concerns and Multi Table Views. You just need to add a couple Annotations to your code. Take a look tot this demo here:

http://www.automatedbusinesslogic.com/live-demo

It just takes a couple minutes.

And here is ready to go Maven2 Archetype for ABL + Hibernate.

http://www.automatedbusinesslogic.com/maven-demo

You can follow ABL @VersionEye to get notifed about new releases.

http://versioneye.com/package/com~autobizlogic~abl–autobizlogic

Filter for VersionEye

Yesterday we launched again a new Feature. The Filter for languages. After a search on the landing page you get the search results on the next page. Here you can now use the filter to hide libraries form languages you are not interested in.

Bad Gateway with NGinx & Unicorn

I am using NGinx as proxy to load balance the traffic. Behind Nginx their are some unicorn servers. On Friday I did some changes on the server and I realized that I am always running into a Bad Gateway error. The way from Nginx to unicorn worked. But the way back not really.

I googled for it and I found out that the problem is the buffer size on NGinx. After setting the buffer sizes up like this here, it worked fine for me.

proxy_buffer_size   128k;
proxy_buffers   4 256k;
proxy_busy_buffers_size   256k;

You have to add this to your default.conf file in “/etc/nginx/conf”.

How well does Twitter scale?

I know Twitter has a lot of traffic but I am curious how well their architecture does scale. I am getting many times something like this here

That is annoying.

I am using Twitter and Google+, too. And for me it seems that Facebook and Google are doing a better Job with scaling.

 

Java Driver for Firebase

I just started a new Project @ GitHub, called jfirebase. That is basically a Java Wrapper for the REST API of Firebase. Clone the git repo and build the package with Maven2 / Maven3 like this:

mvn -Dmaven.test.skip=true package

There are Unit Tests for the project but If you want to run the test cases you have to add your firebase channel to the test classes.

You can install the JAR file with this command into your local Maven Repository:

mvn -Dmaven.test.skip=true install

The Driver contains basically 5 methods to interact with Firebase.

  • boolean write(Map<String, String> map)
  • Reader read(String uri)
  • boolean delete(String uri)
  • void setChannel(String channel)
  • String setKey(String key)

Here is an example for writing data to Firebase.

Map data = new HashMap();
data.put("firstname", "Robert");
data.put("lastname", "Reiz");
IDriver driver = new Driver();
driver.setChannel("http://YOUR_CHANNEL_AT_FIREBASE");
driver.write(data);

Your channel would be something like: “http://demo.firebase.com/myprojectname&#8221;.

OK. Here is an example for reading data.

IDriver driver = new Driver();
driver.setChannel("http://demo.firebase.com/SampleChat/");
Reader reader = driver.read("users/jack");
try{
   ObjectMapper mapper = new ObjectMapper();
   User user = mapper.readValue(reader, User.class);
   System.out.println(user.getName());
} catch (Exception ex){
   ex.printStackTrace();
}

The “read” method returns a “java.io.Reader”. With that you can do what you want. I am using here the jackson-core-lgpl JSON Mapper to map the JSON String from Firebase to my Java class User.

The delete method is pretty straight forward:

IDriver driver = new Driver();
driver.setChannel("http://demo.firebase.com/SampleChat/");
boolean deleted = driver.delete("user/jack");

Let me know if you have questions.

Conversion Rate Optimization by removing the intro video

I am working full time on a pretty cool project, called VersionEye. We just launched a couple weeks ago and we are still playing around with the landing page. I want to share this very interesting fact, we found out about the user behavior.

When we launched a couple weeks ago, the landing page looked completely different. There was a short 50 second intro video on the top of the landing page. The Video is still on YouTube, if you want to take a look: VersionEye Intro Video

5 Guys worked nearly 1 month on this Video. We put a lot of work and time into it. After 3 weeks I realized that nearly nobody is watching the video. The people just scrolled down the page and nearly nobody clicked the play button.

1 Week ago I removed the video from the landing page. And in the last days the numbers of page views tripled. We have now 3 times more page views and the users are staying in average 3 times longer (10 min) on the page then before.

Is that not interesting? I am very surprised. I didn’t expected that.

Sorry for my not perfect English. I am from Germany.

Posted in Uncategorized | 1 Reply

Projects @ VersionEye

I am working currently on VersionEye. That is a service for Software Developers to keep track of Software Libraries. You can check it out here http://versioneye.com.

2 Weeks ago I released a new feature. The Project feature. As a VersionEye user you can create a project by uploading your project file (pom.xml, Gemfile, requirements.txt). If your project file is publicly available you can just put in the URL to your project file.

VersionEye is parsing the project file and creates a project out of it.

In the Project Detail View VersionEye shows you all your dependencies. Outdated dependencies are marked with a red background.

VersionEye shows you the version you are using and the current version of the lib. in green. In that way you can immediately see which of your dependencies you could update.

Right now that works for Java Maven pom.xml files, Ruby Gemfiles and Python pip requirement files. Support for Node.JS is on my ToDo list.

I am planing also a closer integration with GitHub. In that way you could give VersionEye access to your private Repositories and VersionEye could check your project file every day. As soon something is outdated you will receive a E-Mail.

I am always looking for Feedback and improvements. :-)

VersionEye @ Firebase launch party

Yesterday I wen to the Firebase launch party. Firebase is a new awesome Start-Up here from SF. They offer a cloud storage for JSON Objects and a real time synchronisation for HTML Applications.  Check out their site: http://firebase.com/

I just met the Co-Founders accidentally at a Hackathon @ SOMA, a couple weeks ago. I implemented a new Feature for VersionEye, at the Hackathon, in less then 1 hour with Firebase. It is really easy to use and it just works.

Over 200 people attended to the Firebase launch party. It was really full packed.

They invited some other companies who build Features or Products based on Firebase. VersionEye was one of them. I got a own table their I could present VersionEye.

Thank you for that, to the awesome Firebase Team.

Python MeetUp – How Web Frameworks interprets the URL – Python 3

On Wednesday I went to the Python MeetUp in San Francisco. The topic was

Learn about logging, how web framework interprets the URL, and Python 3

Here is the MeetUp Event for that: http://www.meetup.com/sfpython/events/58588062/

The event was hosted by Yelp.com. They have a pretty cool office, with a big kitchen and lot of Pizza …

and beer. The iPad shows you how full your cap is :-)

They have a kicker

and a table tennis in the office.

And a good view to SOMA

We heared 2 talks at this evening. The last one was about Python 3.

I am not a Python guy. But I am interested in Python. I just switchen over from Java to Ruby. Why not learn Python, too :-)

The first talk was about how Web Frameworks are working. Ben Bangert talked about Dispatcher in general and showed also some Python code.

For me as outsider Python looks very similar to Ruby. But I saw also some stuff I know from Java. For example Annotations. That looks in Python exactly the same as in Java.

Maybe I should give it a try and learn Python.

Eatdifferent

Well. I am getting older. 31 I am now! Maybe it is time to eat mor healthy :-) Something like this here:

Chicken Pesto with Salat and black tea. My meal 2 hours ago. I am tracking my meals now at eatdifferent.com. That is a cool project to keep track of your meals. There is also a mobile app out for that.

Every time before I start my meal I take a picture through the eatdifferent app and so it gets uploaded to the eatdifferent server. In the web app I can see what I have eaten the week. And when I see a lot of Pizza I feel bed, afterwords :-)

So, it helps me a little bit to eat more healthy. Check it out!

HTML5 – Viewports with PPK

Last Friday I went to the HTML5 MeetUp in San Francisco. It was hosted by Adobe. They have a pretty cool and huge office. The top was “Viewports with PPK”. PPK is the twitter name of Peter Paul Koch. He is internationally-known mobile guru from Amsterdam.

He is a funny guy. It is always funny to listen him.

He explained the Viewports. The history and how it works on different devices. I have known before what the Viewport is but I learned a lot from him. He has a lot of background knowledge. And he knows how to teach/present it in a funny way, so that it is not boring.

Here is the link to the MeetUp event with all the comments:

http://www.sfhtml5.org/events/53237372/

Maven2 Archetypes – Yes or No ?

A good friend of my is working on a cool project. A plugin for the Hibernate Persistence Framework. I am helping out with testing. And a couple days ago we had this discussion about how to get started with a project. I recommended to offer a Maven2 Archetype.

I asked Max if I can publish his E-Mail on my blog and take the conversation public. And here is his E-Mail:

———–

Hi Robert,
further thoughts on the Maven archetype idea. Having played with it, it doesn’t really seem practical because we don’t know what framework our users will be using. We could conceivably come up with an archetype for Grails, one for Spring, one for ZK, etc…
What we have done is Mavenize the basic demo so you can just download it and run it with mvn tomcat:run. That makes the zip file just 97k, which is nice. This is also true for the Grails demo.
I think it makes sense to make the tutorial a Maven project, but I don’t really see the value of making it an archetype. People will not want to create new projects based on this particular project — which uses plain old JSP. They’ll just get the basic project and fiddle with it while following the tutorial.
Your thoughts would be appreciated.
Thanks,
– Max

Parse User Group / Package Manager in general and for Object-C

Last week Steffen Frost invited me to hold a speech at the Parse User Group. Parse is a mobile App Platform for Developers.  With parse the mobile developer don’t have to care about the server logic. He just have to use the Parse SDK. This SDK is handling seamless the communication with the parse backend. That is a pretty awesome solution.

We talked about keeping the versions current. Here is the MeetUp group:

http://www.meetup.com/parseusers/events/57471352/

12 people attended on MeetUp.com. We met in a coffee shop in SOMA close to the Market Street.

I presented VersionEye.com and hold a speech about Repository and Package Manager.

Some languages like Java, Ruby, Python and Node.JS have a package manager system. That helps a lot. In the Java World you can use Maven2 or Ivy. The Ruby guys are using RubyGems and the Python community is using PIP. And the Node.JS has NPM.

But most other languages don’t have a package manager. That means the software packages are spread out in the internet. The programmers have to download software artifacts with the browser and copy and paste it to the project. That is so much 1995!

We also talked about holding packages on GitHub as tagged version. But GitHub is a source control management tool, not a package manager. One important feature / constraint of a package manager is that a package that was uploaded one time can never ever be deleted or changed anymore! That is on GitHub not the case!

I like GitHub a lot, but I think to use it as a package manager is the wrong way.

We talked also about package manager for Object-C / iOS. CocoaPods is a package manager for Object-C. Unfortunately nobody didn’t know it at the Parse User group. I like the approach of CocoaPods. The only think I don’t like is that it is just using GitHub hosted files. I think a package manager should always be separated from SCM. But their can be a close integration.

We ended in a open discussion. The Parse guys told me they will take a look to CocoaPods and we will meet again and discuss how to improve the life of Object-C Developers. :-)

Uploading Artifacts to the central maven repository

Do you ever tried to upload an artifact to the central maven repository server? No? Well, that is not fun! The maven guys are pretty serious!

OK. If you want to upload something you “just” have to read this tutorial here:

http://maven.apache.org/guides/mini/guide-central-repository-upload.html

AND this super long tutorial here:

https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide

On maven.apache.org they tell you that the most easiest way to upload something is over sonatype. You just have to create a user in their JIRA bug tracking tool and open a ticket! *LOL* Are you serious? Publishing software by opening a ticket in a bug tracking tool? Really? Reaaaaalllllyyyyyyyy?

Are you fu**ing kidding me?

And the best part is, that your ticket will be handled in just 2 business days. Wow.

No wonder that every company and even small open source teams are setting up their own Maven2 Repository.

To publish a open source project in RubyGems.org took me less than 5 min and it was published immediately. And I don’t know one single Ruby coder which is managing his own RubyGems Server.