середа, 21 листопада 2012 р.

Project management: communications in distributed team

During my working experience I had working on several projects in distributed team or I had just communication with customer. The first type of collaboration is typical for out-staffing and some kind of product companies (do you remember "Rework"?), the second type is typical for outsourcing companies and some kind of product companies.

As you know the one of the most important factors in distributed team is communication. Communication is really important for team in general, and the main challenge of communications in distributed teams is a question: how to organize high-quality communication inside distributed team? The friendship in a team is important, how can we reach it in a distributed team?

субота, 17 листопада 2012 р.

Fix microphone problem in Ubuntu

I'm using Ubuntu/Kubuntu on a Dell laptop, and it doesn't seem to recognize my headset's microphone. What can I do?

It was the question that was worried me for a last week. Actually, my microphone stopped working suddenly on the previous weekends. And my microphone didn't work in Skype nor Gtalk, it was awful!
I was looking for solution for a several hours and found it just a seconds ago! Hopefully  it was described here http://preprocess.me/skype-microphone-does-not-work-on-ubuntu-heres-a-fix for Ubuntu (Ideal works under Kubuntu too)

Just main steps (to me in the future):

  1. Run alsamixer
  2. Go to Capture devices
  3. Select capture device (I had two) and highlight it; then pres space to enable - you capture device must be highlighted in Red "Capture" label

понеділок, 12 листопада 2012 р.

Helping Java build friendship with Common Lisp

When I was 3rd year student I had functional programming and AI classes where we studied Common Lisp programming language. At the end of AI course I had coursework: write program to calculate differential expression, something like f(x) = x*x then f'(x)=2*x. It was pretty simple to do in Lisp...

As business layer was implemented in Lisp I decided to create user interface in Java. I had to use Swing, because JavaFX didn't exist at this time. So, I guess I started hate Swing from this time...
But here I'd like to show how you can execute Common Lisp from Java (from my personal experience with code sample and some other options). So, how to use Lisp from Java?

неділя, 11 листопада 2012 р.

Push existing source code to GitHub

There are a lot of advice about that, but the most of them don't work. I found one that really works:

  1. Create the remote repository, and get the URL such asgit://github.com/youruser/somename.git
    If your local GIT repo is already set up, skips steps 2 and 3

  2. Locally, at the root directory of your source, git init
  3. Locally, add and commit what you want in your initial repo (for everything, git add . git commit -m 'initial commit comment')

  4. to attach your remote repo with the name 'origin' (like cloning would do)
    git remote add origin [URL From Step 1]
  5. to push up your master branch (change master to something else for a different branch):
    git push origin master

понеділок, 5 листопада 2012 р.

Build fast distributed cache with GoogleGuava

There is a set of application that required distributed cache to work. The classic example is a several front-end servers that share one distributed cache or database engine. And usually you have to sent request each time when you want to get data. 
Depends on your data, the most of request can be used by small part of keys. I mean, for example you have 1M diferent key-value pairs, but you processed usually only 1,000 of them. So, 1% of data makes 99% of requests by keys as on the image:

пʼятниця, 2 листопада 2012 р.

What u must know about EclipseLink ORM

A year ago I worked with EclipseLink ORM on the project where we're working with Oracle DBMS. I had a strong experience with Hibernate before that.
So, I want to share my experience and compare EclipseLink and Hibernate. Comparison EclipseLink and Hibernate as ORM framweworks for Oracle
Well, I don't like ORM in general, but it often required by management or so on... and in this case, if you have vendor lock in, and this vendor is Oracle, you have to think about EclipseLink as a perfect alternative to Hibernate.

Let's start
EclipseLinks is beter because... It's choosend by Sun Microsystems as standard JPA 2 implementation. It's a better support, bugs are fixed much more quickly; let's look at statistic (as for July 26, 2011):
NameNumber of bugsNumber of blockersThe oldest blocker
EclipseLink 15304/Jun/2010

It's Oracle-oriented additions which are incredible useful if you create Oracle oriented s/w and want to have all power of oracle in your orm.
The most important Oracle features in EclipseLink are:
1) Built-in Oracle hints support
Hints are important for sql optimization in Oracle and with EclipseLink you can add them through API. Also, EclipseLink will be automatically insert Hints if needs and their usage is clear for orm

2) Hierarchical Queries Support 
PL/SQL has a useful featurs as Hierarchical Queries which can help you a lot if you work with hierarchical structures intensive. So, you don't need to write native sql anymore, just use API

3) Oracle Flashback Transaction Query
 Historical queries during transaction available just from ORM

4) Stored Procedures/Functions Support
Well, Hibernate/JPA also have it. However, in EclipseLink you can use another way (JPA way is still available) with StoredFunctionCall class and related API. In others words, you can build stored procedure/function dynamical invocation. I guess, it is the easiest way to call SP from your java code

Next cool feature is Report Queries that means you can build queries with "reporting" possibilities (AVG, SUM, ROLL UP) with API instead of writing native SQL.

Summarize topic, I can recommend EclipseLink as a perfect ORM for Oracle lock-in project, because a lot of features will be available in this case. However you must keep in mind Hibernate has a lot of own features (versioning, shards, search, etc) and you must to think about your project requirements and pick up the most convenience tool.