My GSOC 2015 Presentation

Google Summer of Code 2015 logo


Although a little bit late, I am posting the Google Summer of Code presentation I gave at my university on the 9th of March, as part of University of Athens FOSS team. Link to my GSOC 2015 presentation.

For this year’s event we’re a few days away from the announcement of the accepted students!

This year, although there are less mentoring organizations, there are some great entries, and only to name a few, FreeBSD, Debian Project, Git, GitHub, Kodi (Former XMBC), Ruby on Rails, and many more with great project ideas! 🙂

GitHub Project Pages Automatic Generator

Image of GitHub Mascot - Octocat

Hello all,

Meet GitHub’s mascot Octobi Wan Catnobi pictured above (original here).
Hope you all are familiar with GitHub! 🙂

On to the topic now,
I’ve recently used the GitHub Project Pages automatic generator.

Hold on a sec, what’s the GitHub Project Pages – you may ask
GitHub allows you to create simple websites, for presenting your projects!

And what about that automatic generator you’ve mentioned?
The automatic project page generator is a really great tool, that generates the static website for your projects (you can import your README as content), select among some predefined templates, and even enter your google-analytics tracking ID, to check how’s the page doing!
Yes, GitHub helps you do that does that for you!

Tell me more!
These are the instructions to enable the page generator.

What this basically do, is that it creates a new branch in your git repository, called gh-pages, which contains the files for the static website.
This is the initial file structure of the newly-created-branch:
Screenshot of the gh-pages branch file structure

What you might need to edit, would be the index.html, the stylesheets.css and lastly the main.js, so that you create something to your liking.

As you’ll see in the contents of the params.json where this is mentioned: DO NOT delete this file, as it’s used internally (also contains, amongst others, your google-analytics code).

You can learn more about GitHub Pages here and here!
Additionally, this is the GitHub pages website with even more details.

How does the outcome look?
Here’s a link to my Doubly Linked List API project page, which was generated using the tool!
I’ve only changed the colors and the sprites to match the color style at my personal website.

Doubly Linked List API in C

Happy New Year to all,

I’m posting to share an update to my Doubly Linked List API (or shorter, DLL-API) in C.

First things first, if you haven’t visited my personal website (here) (where I’ve listed some of my projects), I have implemented a Doubly Linked List API in C, that can be obviously used with any datatype, as long as a specific set of functions is provided (copy, allocate, etc.).

I’ve updated the API to version 2.1 and among the updates, one that is important, is the implementation of iterator functionality.

Here’s the brief changelog from the README:


1. Added support for iterators (look below for more info)
2. Changed ugly dllistptr to a more [user and C]-friendly naming convention, that is list_t (important)
3. Renamed the API files to a more C-like naming convention, like this: doubly_linked_list_adt.c/h
4. Updated demo to include some of the iterator functionality
5. This version was extensively tested with a multithreaded project, that used the list with about 10 datatypes
6. Added a copy-constructor-like method to copy lists
7. Binary search to access find the associated element in the list of iterators
8. In big programs, compile with -O2 or -O3 to see the magic

This API was heavily used in a reverse search engine project with many many lists, and has proved to be solid!

You can find the Doubly Linked List API here!

If there are any suggestions or issues with the API, don’t hesitate to submit a pull request or an issue!

Terminal productivity boost (some Bash aliases)

Hello again,

It’s been a long time since I’ve posted, but it’s been a really busy period..

An icon representing a terminal prompt
Terminal prompt

On to the topic, using a feature such as aliases in a terminal, certainly makes you do things faster.
(To get an intro to aliases and a guide on how to save them permanently, read this)

So I’ve gathered some of mine and uploaded them at Github as a bash-aliases repo.

Here are some:


Append them over to your ~/.bash_aliases file

Read More

GNU/Linux SSH login script for my university’s linux-lab

This is a post regarding an ssh login script I wrote, for the GNU/Linux machines at the linux-Lab of my department. More about the script here.

Πρόσθεσα δυναμικό έλεγχο των linux machines. Με wget κατεβάζω το html αρχείο και έπειτα διατρέχω τα linux_machines και δοκιμάζω ssh.
Στο τέλος, διαγράφονται τα αρχεία των linux_machines, για να γίνει επανέλεγχος κάθε φορά.

Έγραψα ένα scriptaki για automated ssh login στα linux μηχανήματα της σχολής.
Είναι καλό να ακολουθήσετε πρώτα τις οδηγίες για passwordless ssh connection που βρίσκονται εδώ ώστε να μην χρειάζεται κάθε φορά να πληκτρολογείτε τον κωδικό σας για κάθε μηχάνημα.


Προσπαθούσα να συνδεθώ στη σχολή μέσω ssh και απέτυχε σε 2 μηχανήματα (ήταν down νομίζω τα συγκεκριμένα linux) οπότε σκέφτηκα να φτιάξω ένα scriptaki που θα κάνει το polling για μένα.

Τρόπος λειτουργίας: 

Ουσιαστικά αρχίζει δοκιμάζοντας ssh σύνδεση από το linux01 και φθάνει μέχρι το linux29 (όπως φαίνεται εδώ (current state των linux machines) ).
Αν η σύνδεση είναι επιτυχής, μόλις γίνει το exit από τον remote host σταματάει και το script, αλλιώς συνεχίζει μέχρι να έχει hit ή να φθάσει στο linux29.

Μπορεί να διακοπεί με Ctrl + c.

Read More

Performing SSH login without typing your password (via ssh-keygen & ssh-copy-id)

We all know SSH and have used it to connect to remote hosts.

The annoying thing about it (when using it frequently) is that you have to enter your password each time.

If you want to bypass that, as I wanted, keep reading..

  1. Firstly, on your local machine type this:  ssh-keygen
  2. You will be prompted to “Enter file in which to save the key
    just hit [enter].If you don’t want to assign a pass phrase (press [enter] key twice). It will create 2 files in ~/.ssh directory as follows:

    • ~/.ssh/id_rsa : identification (private) key
    • ~/.ssh/ : public key


  3. Now we want to secure copy the public key to the remote host.
    We’ll do that with ssh-copy-id:
    ssh-copy-id -i ~/.ssh/ user@remote-host
  4. Finally, you are able to login to the remote host using ssh username@remote-host without typing your password.

Run your own scripts from any directory when using terminal

We all know that scripts are a very handy way to get repetitive jobs done quicker (and much more).

Now, let’s suppose you have a script located at /path/to/dir directory.
Each time you need to run the script you would:

  1. Open a terminal
  2. change dir to /path/to/dir and then
  3. run your script using “./myscript” notation
  4. Or (a “faster” alternative) writing “/path/to/dir/myscript” to execute it

It might doesn’t look that much to do, but when you’re using it frequently, it can save time to just open a terminal and type “myscript” to run it.

Read More

Create permanent aliases at Ubuntu

A very handy and time-saving facility when using the terminal, is to use alias for any command that you use most of the time.

For example, at my system I have these aliases:

  • c == clear (also, a great keyboard shortcut exists: Ctrl + L)
  • e == exit
  • ls == ls -l –color=auto (flags explained below)

So if I want to clear the screen I only type “c”, hit enter…

Read More


All content provided on this website is for informational purposes only.
The owner of this blog makes no representations as to the accuracy or completeness of any information on this site or found by following any link on this site.
The owner will not be liable for any errors or omissions in this information nor for the availability of this information.
The owner will not be liable for any losses, injuries, or damages from the display or use of this information.
These terms and conditions of use are subject to change at anytime and without notice.