[Random Thoughts] Happy new year!


Happy New Year!

Hello and happy new year to all,

I wanted to sum up my year:

4000+ visitors in blog,
5200+ views in blog,
12 new posts in blog,
3+ projects completed,
1 new job,
New friends, new colleagues…


Happy new year!

Random Thoughts: Generation Y and Job Hopping

Nowadays I hear a lot complains about my generation: Generation Y. People say it is hard to keep us happy. We become upset quickly, we expect too much etc. etc. So in this post I will try to focus on this topic with an internal view.


Let’s look at the “generations” closer. Scientist divided human race to generations, they’re separated by birth years and every group has common thought and behavior which differs from other generations.


When we check the generation list of western world (America, Europe) from Wikipedia we can see the list below:

  • Lost Generation (1883 – 1900): Who fought in WWI.
  • Greatest Generation (1901 – 1924): Who fought in WWII.
  • Silent Generation (1925 – 1942): Who fought in Korean and Vietnam wars.
  • Baby Boomers (1943 – 1960): Generation born after WWII is finished.
  • Generation X (1960 – 1980)
  • Generation Y (1980 – 2000)
  • Generation Z (2001 – …)

Last three generation does not have any distinctive historic event, they only have date intervals given by demographers. But I will write some common behaviors for these three generations depending on my observations in my home country, Turkey.

Generation in Workforce
Generations in Workforce

Generation X members are mostly have a stable professional life. Most wanted jobs are civil servant, branch manager in a bank or officer in army. They are hardworking in the sense of body power. For sure they are not lazy but they afraid of changes. They’ve seen military interventions in 70’s and 80’s. So they want a guaranteed lifestyle. They start to work in somewhere and usually get retired from the same organization.

Generation Y is the main topic of this post so I will have a detailed text below about them and their professional life.

Generation Z members are still in high school or in college. They were born into technology. They are mostly lazy because of “smart” devices. They are getting less social and more connected day by day. I wonder about their professional lives.

So, what Generation Y wants?

Generation Y is more free then Generation X. It is certain that we have much more possibility and opportunity than Generation X. We were born when there were homeworks done by help of encyclopedias, then we evolve with technology. First come the PCs and then internet connection. And our lives became easier and faster. That’s why we value and love the technology.

Members of Generation Y have an innovative and entrepreneurial soul. Early members of Generation Y earned some easy money using and developing technology. So late comers believed that it is easy to get rich and famous. And that’s what they wanted; become rich and famous easily.

Wishlist of Generation Y
Wishlist of Generation Y

But we’re raised by Generation X. We’ve raised with the belief of guaranteed standards is best thing in our lives. Entrepreneurship is a risk, and taking risks is stupidity. But at the same time we want money and fame. So we became the generation of white collars. We believed, partly guaranteed life standards, money and fame can be achieved by working in enterprise companies. That was true until a certain point in Turkey.

After crisis in 1999 and 2011 enterprise world renewed their budgets with strict ones. And to me, it is the point where they lost the Generation Y.

Why Generation Y changes job quickly?

Because we are not as stable as Generation X members. They’re determined. When we see that we cannot go any further in the organization we are in, we decide to quit simply for a better one but Generation X waits patiently even until their retirement.

Should I stay or should I go?
Should I stay or should I go?

I will give examples from my short professional life. It is short but it has enough job changes to use. It has been a little more than three years and I am in my fourth organization. Let’s have a look why I quit from every single one:

  1. Part-time ETL developer in Turkcell Technology, I was waiting for a full time position, but since the budget was cut it was a low possibility to find a full time position inside. My manager was asking for me to wait but I was already graduated and wanted a serious job with a stable paycheck to pay my rent and other expenses. (13 months)
  2. Java developer in OBSS, OBSS is really one of the best places for a consultant to work. But I wanted to become an expert in data warehouses, ETL and data mining so I changed my job when I got acceptance from Oracle Consulting (2 months)
  3. Associate Consultant in Oracle Turkey Consulting, It was absolutely a dream job and a dream company for me until I became a part of it. It seems like it is the best source that I can learn DW/ETL so I made a sacrifice from my paycheck (it was a mistake I admit.) and I accepted a lower paycheck then my job in OBSS. I thought I am going to learn so many new things, I will become an expert in DW and Oracle. Unfortunately reality is not like that, I was alone in customer location, there were no seniors to ask questions when I lost in code. I began to feel I am not going any better and also I was losing money since the salary was not a competitive one. I decided to quit and start to search for consulting firms, where they pay you more money but no training. I was thinking to save money to pay for my own trainings to improve myself. Then I found my next job. (15 months)
  4. BI & DW Specialist in MAKEIT Software & Consulting, finally the job I love and a competitive enough salary to give me a life standard, and company also encourages me to improve myself. Encourages me to present in events, prepare training materials for new-grad employees, give challenging projects and enough support when I feel lost. (9 months and counting up)

Looking through my experience, I can say Generation Y aims something and when it feels things are not working, it changes strategy to reach its aim.

My aim is to become an expert in DW, ETL and Data Mining as I said. So I always took the steps which is better in my path to my aim. I worked with an AceD (Mr. Gürcan Orhan) and tried to learn as much as I can while I was a part-time, the for a better future I felt I need to move to Oracle and I did, there I saw I am not going anywhere and I changed tracks for the destination. There is only one thing that did not change through these three years, I kept working hard to learn new things and improve myself, in every free time I made demos with new tools, I wrote blog posts, I prepared presentations, I read others blogs and presentations.


To sum up I can say, Generation Y members have an aim, which is a guaranteed life standard and fame. And they will change the path they walk when they fell they cannot get any closer to their aim. For Generation Y work life is not aim of the life, it is just a tool to reach to their aim. It is like a long flight to destination we may need to change planes on the way.

From graduation to life aim.


Thanks for reading and please share your thoughts in comment section.

You can also find this post on LinkedIn.

Sources for images:

Android : MAKEIT Rehber Project


Last night I developed a new Android application for inhouse use of my company. Since we are a small company which aims to get bigger, our population keeps growing. This brings some problems with it. For example, some older employees don’t know about newcomers and their contact information.

One day I needed to call a new employee and I realised I don’t have her contact information. And before that point I was not aware of situation. Then I decided to make a phonebook that reads information from a shared file on internet, which our HR will update when somebody joins or leaves the company. So every employee would have every other’s contact information.

This is how MAKEIT Rehber was born. – Rehber means phonebook in Turkish. – Yesterday night I developed the first version of application, where the contact info was hardcoded, then added reading a remote file, then I added sending SMS or Whatsapp messages directly and lastly I added my own open source library : tellal to send notifications through MAKEIT Rehber. This notifications can be just new version notifications or something about company.

There is still some development to do. But it has more than enough abilities now.

Below you can find a screenshot.



Thanks for reading, please do not hesitate to ask your questions or comment on my posts in the comment area you can find below.

Have a nice day.

ODI 12c: Setting up Standalone Agent

Warning! This post is written by using ODI 12.1.2, in version ODI 12.1.3 there are changes in agent setup. A post about ODI 12.1.3 will be written soon.

Hello all,

In this post I am going to tell you how you can set up a standalone agent for ODI 12c. Oracle provided a new tool for configuring our ODI 12c setup elements, such as WLS, Console, Agent, RAC. But to use this configuration manager you will need to create some schemas for OPSS, AUDIT, AUDIT VIEWER and luckily we have RCU for this task, you may do it manual also. But I prefer automation and I will describe in this post how you do it with RCU.

Important! Notice that even if you have a database which can work with ODI 12c, it can be unsuitable with RCU. I faced this problem, I had Oracle for my ODI repository but RCU needed a newer version, so I installed ODI 12c database.

Remember! The paths I will give in this post are absolute paths for my installations, your path may change depending on where you have installed ODI 12c.

Shortly we are going to do

  1. Create required repository and schemas by using RCU
  2. Create a domain to run agent by using Configuration Manager
  3. Define physical agent on ODI Studio
  4. Run agent
  5. Test it from ODI Studio

1. Creating necessary schemas


You will find RCU tool in /home/oracle/Oracle/Middleware/Oracle_Home/oracle_common/bin for Linux OS and C:OracleMiddlewareOracle_Homeoracle_commonbin for Windows OS. File name is RCU.cmd or RCU.sh depending on OS. Start the RCU, select “Create Repository” and continue.


Fill all the spaces for the database you want to connect, be sure to enter full service name. In screenshot you will see it is filled as “orcl122” but full service name is “orcl122.localdomain”. I took the screenshot a bit early. Don’t let it trick you.


You will need to select schemas for RCU to create, Oracle Platform Security Services, Audit Services, Audit Services Viewer must be selected. When you check Audit Services, Audit Services Viewer and Audit Services Append will be checked automatically. Also in this step you can choose RCU to create Master and Work Repository for you. Since I have already created my repositories long ago I will skip it.


Set passwords for schemas that are going to be created. I will choose to set same password for every schema.


Set tablespace for schemas. If you leave it default, RCU will name them with a prefix which is set on third step. If tablespaces does not exist RCU will create them for you.


Now RCU will show you a summary of settings, check the list if it seem fine click on “Create”. It will take some time to create schemas, tablespaces, tables then it will show you a report. And you are ready to close RCU and continue with Configuration Manager.

2. Creating Domain for Agent with Configuration Manager

Conf Man
Conf Man

Start Configuration Manager, you can find it in /home/oracle/Oracle/Middleware/Oracle_Home/oracle_common/common/bin on Linux OS and in C:OracleMiddlewareOracle_Homeoracle_commoncommonbin in Windows OS. File name is config.sh or config.cmd depending on OS. Select “Create a new domain” and select where you want to put domain’s files. I will leave it as it is.

Conf Man
Conf Man

Next page is Template Selection page, we will need to check “Oracle Data Integrator – Standalone Collocated Agent” and when you check this option there will be two more options checked automatically.

Conf Man
Conf Man

Next step will want you to create a login for WLS. Password should be at least eight characters, including at least one letter and one number.

Conf Man
Conf Man

Select Domain Mode and JDK, I will leave them default.

Conf Man
Conf Man

Now we will select RCU Data option, since we created necessary schemas with RCU. Enter connection information for the database schema where RCU worked on before. Then click on “Get RCU Configuration” and wait for Configuration Manager to read from database. Then click “Next” when it is available.

Conf Man
Conf Man

Enter all passwords and schemas we have created before. Also you will need to fill database connection information again.

Conf Man
Conf Man

Configuration Manager will check for connections if they are working.

Conf Man
Conf Man

Now we need to select components which we are going to need, In this case we will only select “System Components” and “Deployments and Services” and continue.

Conf Man
Conf Man

Set name for the agent I will use OracleDemoAgent for this demo.

Conf Man

Next select the component from dropdown list, which we have created one step ago. Set listener information you can leave port as 21910 it is default for configuration manager. Fill in supervisor user information. And continue, for this demo we will leave settings default on other steps then click on “Create” on last step.

Conf Man
Conf Man

Creation will take sometime after that click on “Next” and “Finish” and we are almost ready to run the agent.

3. Defining Physical Agent in ODI Studio

Run ODI Studio, and login to repository, where you have Topology rights. We will need this rights to create agents.


Go to Topology tab, in Physical Architecture accordion, right click on “Agents” and click on “New Agent” a new window will appear on right panel.


Name the agent as the same name as we selected in Configuration Manager for the Agent component. When we try to run agent, it will search for its name in Master Repository so names should match exactly. Set the port as you set in Configuration Manager. Save the agent.

4. Start up the agent

Open a terminal/command line window and go to the domain folder that you have created. Under this folder you will find bin folder. For me this folders path is /home/oracle/Oracle/Middleware/Oracle_Home/user_projects/domains/demo_domain/bin in Linux OS or C:OracleMiddlewareOracle_Homeuser_projectsdomainsdemo_domainbin in Windows OS. Run the command agent with NAME parameter as following, or as you can see in screenshot.  agent -NAME=OracleDemoAgent

Command Line
Command Line

Agent will start to rise up, it will connect to Master Repository, check for its name, read other configurations and start the service and listener. When agent is fully started, command line will seem like screenshot below.

Command Line
Command Line

5. Test the agent from ODI Studio

Now we have the agent up and running, also we have a definition for it in our Master Repository and a GUI in ODI Studio. It’s time to test if ODI Studio can connect to agent service. Go to Topology tab and open the agent we have created. There you will see a button written “Test” click on it. If everything is right until here you should see the screen below.

Test Agent
Test Agent


We have completed everything now. Agent is up and ready to run your jobs on databases for you.

Thanks for reading and please do not hesitate to write your comments or ask questions in section below.




ODI 12c: After TROUG BI/DW SIG Day 2014

It has been about one week since TROUG BI/DW SIG Day. And I just found some time to write about the event.

First there was ODI, OGG, EDQ and Exadata Integration presentation by Gurcan Orhan, it was a really helpful and compact presentation. Architectural designs, tips and tricks about these tools and general information about them was the content of this presentation.

Then we had a session about Graphical Data Mining on Financial Data, this was a bit boring and out of the concept actually. It has an acamedic perspective and presentation of a tool about graphical data mining. And unfortunately they ran out of time and had an overtimed session about 15 minutes, which caused my session to start late.

Third, session is mine, it was just before the lunch break, and unfortunately I had to start late. So it went real quick and I was excited since it was my first presentation in this area. I believe I forgot some of the key points I had to say. You can find the presentation below.

After lunch break we had series of very useful sessions. Starting with Hadoop & DWH by Ersin İhsan Ünkar, which replied some false myths about hadoop, and show a road map about Hadoop in DWH. Also some use cases about where to position Hadoop in enterprise DWH projects.

Sessions continued with Compression In Hadoop by Selahattin Güngörmüş. In my opinion this is the most useful session. He talked about compression algorithms, how to use them in Hadoop environment, pros and cons of compressing files in Hadoop.

Last session was about Analytic Functions for DWH by Emrah Mete. He talked about some useful functions, which most of the DWH developers use I believe. But it was nice to see most used and most useful functions all together in one session.

At the end it was a nice and useful day for DWH developers, there were really nice presentations. Thanks TROUG for the organization and also giving me chance to speak at such a nice event.


Hello all,

On 3rd April 2014 TROUG is organizing BI/DW SIG Day at İTÜ Arı3 Teknokent. You can have detailed information on : http://www.troug.org/?p=684 and you can register for the event on eventbrite : https://www.eventbrite.com/e/troug-bidw-sig-meeting-tickets-10986690487

I willl be there as a speaker, my session will be about Requirements, Installation and New Features of ODI 12c, hope to see you there.

My presentation will be up in this post on 3rd evening. 
You can reach presentation by this link.

Mark your calendars, register for event and have a nice day.

Hadoop: After the big data hackathon

So yesterday we’ve completed a challenge. After uninterrupted coding for around 19 hours, I got some sleep.

First thing is first, I have to admit that I did not get any prize. I couldn’t make it to top three in this hackathon. I completed only 7 of the 9 challenges. If I may give you some statistics,

149 Developer signed up for code challenge on Eventbrite
87 of the came to the hackathon
After midnight we were around 20 left
Only 16 of developers submitted at least one solution (I submitted 7 so I think myself as a good developer)

Now I want to talk about challenges:

There were 9 challenges everyone require to process a little more than 100GB of data, 1TB in total. Except for the second challenge every challenge had a Twitter JSON data, second had an fixed length file. Every challenge had a 150MB sample data to try on.

Challenges were:

1- Counting the tweets grouped by country codes. And output should be ordered by country codes.
2- Every record was an 16 byte array, 8 byte for key and 8 byte for value. Challenge is to sum values grouped by keys. Output should be ordered by keys. But the real challenge was to read this type of file. Developers had to implement their own InputFormat and RecordReader.
3- It was about counting the unique users.
4- Counting tweets from giving language. Parameter should be given as input.
5- Finding the MAX and MIN user id.
6- Finding the person with the max popularity score, which is calculated as if A mentions B and A has X tweets and Y follower B gets X*Y points.
7- Finding the user with MAX and MIN score, which is calculated as if A tweets it gets -1 score and if A gets mentioned it gets +1 score.
8 – Counting all the tweets.
9 – Finding the person which has a maximum number of first and second degree connections, based on mentions.

I could not submit second and nineth challenges. And as I look the challenges now I saw that I misunderstood third one (blame the sleepless night).