I have just uploaded a single file to github which computes cosine similarity of two files. Cosine similarity is a widely used similarity measure of two texts. This simple code computes cosine similarity of two text files given as parameters. To use this, php-cli (PHP command line interpreter) must be working. The output is written to the STDOUT. I have made the cosine similarity code work in PHP. I have not implemented all of the code. The code is developed using the ideas and piece of codes in various web sites. I used this code in identification of topics of a microblog post set which was introduced in this post. Usage: php computeCosine.php file1 file2

The most common function used in Ethereum application development is the Keccak256 hashing. Keccak256 is used for Ethereum message signing, obtaining the wallet address given a public key, determining smart contract address and determining the function selector of smart contract to be provided as data in transactions given a function prototype (like in ABI encoding). I have looked around and could not find a useful implementation for this. They are either unfinished like this one or too complicated to use like this one, or this one.
All I need is a simple keccak256() function that returns keccak-256 of a hex encoded string. So I decided to do it for myself. I looked around a bit and found a clear C program in this page. All I need is to make this code work in PHP. Luckily PHP has a mechanism to extent its functionality. I followed the guide here. Then I obtained a working keccak256 function.
In this github page, I published the codes to be used by anyone interested.
Before installation, PHP developer files must be installed. To install keccak256() functionality:
  • git clone https://github.com/RnDevelover/Keccak256PHP.git
  • cd Keccak256PHP
  • phpize
  • ./configure --enable-keccak256
  • make
  • copy modules/keccak256.so to your php extension directory.
  • enable extension by adding extension=keccak256.so to your php.ini
$a="cc"; // Hex encoded string. All characters are [0-9a-fA-F].
echo $hash; // Hex encoded hash.

This function returns a string of hex encoded 256 bit data (64 characters where each two character indicates one byte).
Our previous study extracts human readable topics given a set of microblog posts. Based on the idea of identifying the topics of a crowd of microblog users, we have recently came up with semantically representing microblog topics for machine consumption. Source code of the prototype is published. To install topic identification approach in a linux machine follow the following steps.
  • Install R
  • Make sure that Rscript is running
  • Install php-cli (Php command line interface) version>5
  • Make sure that php-curl is installed
  • Make sure that shell_exec is working in PHP-cli
  • Obtain a TagMe API key
  • Download the SBounTI package and extract it in an empty directory
  • Edit cfg/config.php according to need (such as base urls of resources that will be produced and the TagMe API key)
  • Obtain a microblog post dataset about 5 thousand posts, either
    • in a file format of short texts in each line
    • or in a raw file retrieved from Twitter streaming API
  • Issue command:
    • ./sbounti <filename> "<dataset_name>" "<start_date>" "<end_date>"
      for the text file
    • ./sbounti <filename> "<dataset_name>"
      for the raw Twitter streaming API file
    Where <filename> is the file name of the file that has short messages, <dataset_name> that is used in the explanations of the resources expressed in OWL, <start_date> and <end_date> are valid start and end date-times of the post set in the format as in example: Wed Sep 21 11:01:56 +0300 2016.
  • The produced OWL file contents are written to STDOUT. So, you may want to redirect the output to a file using "> filename.owl" at the end of the command.
  • If you have questions please contact Ahmet Yildirim
I have got to know Kömür(COAL)  Port years ago during my first diving experiences... Do not let the name fool you, it is actually a tiny fisherman's bay. To reach this tiny fisherman's bay, you have to cross a steep mountainous terrain.

A charming, unspoiled fishing port nestled at the foot of lush hills right on the Saroz Gulf in the Aegean Sea, Kömür is visited by only a few scuba divers, campers and fishers.
It takes around 30-40 minutes from the intersection of the main road to the road to Fındıklı village.
Reaching Kömür presents good views for campers and two very pretty beaches.

While you are looking the top of the mountain on the valley, you realize that structuring is very limited in here,  only a few fisherman shelters. An important feature of this paradise is that it has a tremendous submarine life. This is why Kömür is one of the most important diving sites of Saroz. You can scuba-dive here and return home with beautiful diving experiences. For many divers, Kömür is like an old friend, one they visit every year. Because the water is clear, shallow, and diving entrance is easy. It has tremendous diversity of underwater creatures.

Unfortunately, nowadays Kömür has become highly popular. Especially in summer. Overcrowding is becoming a major issue in this tiny seacoast. So, I suggest you to visit this place during spring and fall.

Camping in this beautiful resort is a completely different experience. Especially if you catch a moment outside the season, it is possible to open your tent's door towards the sea and wake up with epic morning.

There are so many moments I went to the Kömür. But I want to talk about the camp especially in October we had in Kömür. After peak season, the port becomes silent. Only a few fisherman comes. Crowds turn back to city centers. So, Kömür turns to a perfect weekend city break. It is a privilege to be here with friends at such times. We were together, away from city mess, feeling calm and relax. After you load your camping staff, 4-5 hours trip from Istanbul to reach here, being in this atmosphere with your friends feels you lucky.

Our campfire not only provides us warmth, but also is an opportunity to know each other deeply. We enjoy talking while sitting around the fire. To develop a strong connection with nature, campfire is also important component of camping areas. To get rid of searching for wood, and having usable pieces for campfire, we prefer to buy our woods from wood shops of which a few remains in the city center. Every wood that came out of the wood bag makes the night cheerful. We become happy as the sparks scatter in the air. Our voice mixes with the sound of waves and this turns into a harmonious symphony. We feel like time goes by so fast when we were enjoying this atmosphere.

Late at night, we spend our time under the sky with millions of shining stars. At this point, because of limited construction, you are not affected by city light pollution. So, when the sky turns black, Milky Way Galaxy is nothing less than magical.

Last but not least, I advise that lie down with your sleeping bag on the beach, try to find a moment which everybody sleeps and sky is crystal clear. Enjoy the loneliness.

Here I am  with another Turkish traditional  recipe! Pumpkin Börek (pastry).  It's full with feta cheese and pumpkin mixture and garnished black cumin. You will love these crispy böreks which are made with paper thin pastry called Yufka. These cigar shaped rolls with cheese and pumpkin is very popular in my hometown. Traditionally the rolls are baked  in the oven; the result was very delicious with a bonus of being healthy.


500 gr pumpkin puree

Small sugar/pie pumpkins provide the most flavorful additions to any baked dish or baked good and are great as a soup. These  are more tender and less stringy than the larger variety. Sugar pumpkins also have firm, sweet flesh compared to their big ones. Heat the olive oil, and sauté the onions and garlic until softened.
Halve the pumpkin, de-seed, place halves face down in a big pan with approx 2-3 water glass of  water but I prefer using homemade beef broth instead of water and added 1 water glass of milk. Finally add black pepper.  Cook over low heat until all the ingredients  are softened. Scrape out the pumpkin “meat” and then mash or puree as needed with mixer.

6 fresh yufka sheets

350 gr feta cheese, crumbled

1 egg
Salt and  black pepper to taste
½ glass olive oil
1 glass milk
1 teaspoon black sesame


1 glass milk
1/4 glass olive oil
1 egg
Mix the olive oil, milk and egg in a bowl.


Preheat oven to 200C
Mash together the cheese and pumpkin. Season with salt and pepper.  However, if the feta cheese is already salty, you may wish not to add salt.

Layer the first layer of yufka  on flat dry surface  and brush with glaze which is  mix the olive oil, milk and egg.

Continue this for one another layers

Fold over the pastry from each side to seal in the mixture and then roll up like a cigar.

Wet the end of each pastry roll with water to seal. Grease the tray with a little olive oil. Brush the pastries with olive oil and egg mixture.

Sprinkle with black sesame seeds and bake until they are golden brown, about 25 – 30 minutes.

Zucchini with olive oil is one of my favorite dishes in Turkish cuisine. Dishes with olive oil have their own place in my mom's recipes. I am from Mersin which is a port on the Mediterranean coast of southern Turkey. So, my mom’s  recipes are  an authentic Mediterranean experience.

When the name of a dish ends with “with olive oil”, it means that “olive oil” is not used just for describing the type of oil in such dishes, but it is more like cooking and serving methods.
This dishes can be served cold or hot, but mostly in my hometown cold is preferred.


  • 5 medium zucchini, finely chopped
  • 2 medium onion,finely chopped, cut into 1/2" squares 
  • 3 garlic cloves, finely chopped
  • 1 medium size carrot

  • 1 medium capia pepper, finely chopped

  • 4 ripe tomatoes cut in small chunks
  • 3 tablespoon olive oil
  • 1 teaspoon ground black pepper 
  • 5 teaspoon tomato paste
  • 3 teaspoon pepper paste
  • dill (in small quantities)


Heat the olive oil, and sauté the onions and garlic until softened.

Add tomato and pepper paste over onion and garlic.

Add the carrots and continue sautéing. 

Add the zucchini, finely chopped and continue sautéing.

Add the capia pepper , finely chopped and continue sautéing.

Finally add ,tomatoes,  salt, black pepper, small amount of dill  and water if using, cook over low heat until all the vegetables are softened.

Cook over low heat until all the vegetables are softened. Take off the heat and let cool completely. 

 Serve with small amount of uncooked dill.
I am doing experiments with tweets. For each tweet or each set of tweets, several APIs need to be called trough http protocol. This takes time. I often repeat the same experiment, which means issuing the same http request over and over again. Each request takes at least half a second. Considering a million tweets, one experiment takes half million seconds which makes over 5 days. And, this is the case for only one request per tweet.

In order to overcome this, I cache requests and responses. I made a library for php. Below I will be giving the codes. The library issues curl. But before issuing curl, if cache option is set, it first check if there is a cached content for this request. If there is, it simply returns the cache content. Otherwise, it requests the content over the network, and caches it for further requests.

Caching is done by saving the response to a file named by the md5 of the request url. Since the number of files in the cache directory is too high, I applied a two level strong mechanism which gets first two chracters of the md5 hash and saves the file in the directory named with those two chracters. This reduces the number of files in one directory, enabling a two level look-up in the file system.

Below is the simple code. It, for sure, needs further improvement but, for now, it works for me.

function curl_get($url, $cache=false)
                return file_get_contents($md5filename);
$defaults = array();
@$defaults[CURLOPT_URL] = $url;
@$defaults[CURLOPT_HEADER] = 0;
@$defaults[CURLOPT_TIMEOUT] = 0;
$ch = curl_init();
curl_setopt_array($ch, $defaults);
if( ! $result = curl_exec($ch))
        $retry = 0;
        while($retry < 10){
            $result = curl_exec($ch);
return $result;

function getFileName($infix,$data)


return __DIR__."/../caches/$infix/".$md;

Previous Post Older Posts Home