About Me

It's me, Arif N. In this blog I'll write about my adventure related to computer, programming, and anything that I found interesting. I wish you a happy reading.. :D

Category: Computer

Howdy,

When I was in my college, I tried to implement Web Map Service (WMS) and Web Feature Service (WFS) as a foundation for a distributed Geographical Information Systems (or better known as GIS). My academic advisor at that time told me that this idea is not entirely new, but there are still a lot of people didn’t know about it yet. So with this topic as my thesis, he wished that one day people will know about this technology.

The implementation that I made was quite simple actually. But let me tell you the complete story. At first, I was thinking about develop a geographical operation that can be operated via web service in the clouds. After some weeks of analyzing and gathering informations, I found out that this work could be really hard and time consuming. I didn’t have background in geography–I’m a computer science student–and I didn’t have much time before the next graduation. Finally, I just created a spatial data repository and make it accessible across the network using GeoServer,an Open Source implementation of WMS and WFS. I, then, created a simple web application to pull the spatial data and display it to the browser. I also provided a simple data update feature, utilizing one of the feature of WFS. I used OpenLayers to create the application. It’s really simple actually.

computers
In my graduate study, right now, I want to try something entirely different. I want to explore MapReduce, a programming model for processing a large scale of data in a distributed environment. I heard about this model from some mailing lists and websites, surprised that the paper [pdf], the lecture notes and videos are easy to get. So, for the time being, I decided to do some experiments in order to learn something about it.

It’s still a plan in my head actually. I never talked about it to my thesis advisor (because I have none yet). But I can predict some problems that I will be dealing with if I do this research plan. They are:

  • The case. I don’t have any idea about the case that I should solve with this research. My college’s advisor told me about doing something in bioinformatics like genome assembling. I think I will cosider it. But I’m open for an idea.
  • The machine and its network. The lab are always busy with the other graduate student. Fortunately, one friend of mine told me that there is another place that I can use in the campus to do experiments. But I should create a permission letter first. Okay, I’ll do it.

In the mean time, I’ll focus myself to learn about MapReduce. Maybe I’ll post something about it in this blog. If you have a suggestion about what should I do with this programming model, let me know. I’d be really glad to hear it.


Credits:

EDSAC pictures, copyrighted Computer Laboratory, University of Cambridge, licensed under the Creative Commons Attribution 2.0 Generic license.

My schedule for this semester was out. Differ from the time table I usually got in my old college, this schedule was arranged by the subject instead of by the day. I needed some adjustments in how to read the schedule but so far, I’m doing fine. The only things that not going well was about the schedule itself.

It is a fact that the schedule at the first week might dissatisfied some people involved. The chance of clash on schedule is pretty high. There were a lot of people involved though. So the first week is usually a mediation term. In the next coming week, the schedule will be re-arranged to meet everyone’s need.

Learn more ...

Howdy.

Not so long ago, I created a GUI for data storage using Java and of course JDBC. I followed a tutorial about how to insert database records to the database table. The tutorial said that before we’re inserting new record to the database, we should generate unique key as record identity. The generation process handled by Java code. The tutorial use System.currentTimeMilis() function to create the key. So, the code will be look like this:

//set new id
Number time = System.currentTimeMillis();
Integer id = (time.intValue()/10000);

The generated key then being inserted to the database.

As you may realized, database systems usually have their own key generation technique. For example AUTO_INCREMENT attribute in MySQL. I followed the tutorial and sure it works. But, I tried database-generation key, and it works too. So, why we should bother generate our own keys?

The O’Reilly Java Author gave an explanation about that. They said:

However, using the supported key generation tools of your database of choice presents several problems:

  • Every database engine handles key generation differently. Thus, it is difficult to build a truly portable JDBC application that uses proprietary key generation schemes.
  • Until JDBC 3.0, a Java application had no clear way of finding out which keys were generated on an insert.
  • Automated key generation wreaks havoc with EJBs.

I got the point that the application should be portable. Who knows that someday we’ll migrating from one database systems to another? So the database generation key will be hard to control. 

Another detailed answer came from Scott Selikoff. He wrote a complete article about database key generation and gave an example:

Now, let’s say a user is in the process of creating a new record in your system. For each user record, you also have a set of postal addresses. For example, Bob may be purchasing items on NewEgg and have a home address and a work address. Furthermore, Bob enters his two addresses at the time he creates his account, so the application server receives the information to create all 3 records at once. In such a situation, you would normally have 3 records: 1 user record for Bob and 2 address records. You could add the address info in the user table, although then you have to restrict the number of addresses Bob can have and/or have a user table with a lot of extra columns.

Inserting Bob into the user table is straight forward enough, but there is a problem when you go to insert users into the address table, namely that you need Bob’s newly generated User Id in order to insert any records into the address table. After all, you can’t insert addresses without being connected to a specific user, lest chaos ensue in your data management system.

The problems will arise in complex database relationship. As we don’t know the generated key, we couldn’t set the foreign key of corresponding tables. I didn’t realize this because the GUI I made was using a simple database design. Maybe with no table relation at all.

So, I got my question answered. Do you have another answer for my question? Feel free to share.

Finally, my Ubuntu shipping has arrived yesterday. Without waiting, I installed this OS to my machine. You know, open source OS like Linux, depends on its repositories in the clouds. So, I figured it out how to connect via my DSL internet connection using this distribution. This is how I do it:

  1. Turn on your modem and plug in your LAN Cable from modem to your ethernet device.
  2. Right click your Network Manager Applet (located on top right of your Ubuntu desktop) and click on Edit Connection.
  3. Pick the DSL tab and Click on the Add button.
  4. A window will appear, and on the DSL tab enter your username, service name, and password.

    I’m on Indonesia, and using Telkom Speedy service. So this is my configuration:
    Connection Name: Speedy
    Username: myusername@telkom.net
    Service: speedy
    Password: myspeedypassword

  5. Click OK when you’re done, and exit the Network Manager.
  6. Next, left clik on the Network Manager Applet and click on connection name we configured on previous step. In my case, the connection name was Speedy.
  7. Wait until they connecting to the server, and when it’s done, there you go,, you’ve been connected.

Go ahead and try it. I’m waiting for your comment.

Really, when campus’s license now gone, I was thinking about finding some alternatives. There were two OS that caught my attention.

The first one: Ubuntu. Who doesn’t know this the DistroWatch’s most-popular-linux-distribution? It’s simple, easy to use, and has great repositories. I’ve been using this OS for almost two years now, and it’s just get better on every new version released. Because of my bandwidth limitation, I ordered a copy of it last month. It hasn’t arrive yet (since I write this).

The second OS that made me curious was OpenSolaris. It has unique features like ZFS and Time Slider. I really want to try it. Even it still young, it’s already a worthy opponent of Ubuntu. I’ve ordered a copy too, but same as Ubuntu, it hasn’t arrived yet.

I think I’ll just be patient and wait. Hope they will come soon..