Does your code smells?

Programming is like my life. Being in the game since i was a little kid, it’s like programming languages are my native languages. Writing good code matters a lot to me.

Being able to write clean code may not seem so important but hazardous situations will occur if you don’t. In the long run, smelly code will make your project maintenance slow. At the end, it is possible, that you abandon it and start over. That is a disaster. And you should not allowed it.

I read a book past week. Reading this book, it was something i had to do loooong time before. Written at 2008, by the father of Good Code, Martin Fowler, it opened my eyes for sure. So many principles i haven’t even thought about it.

Clean Code by Martin Fowler

Clean Code by Martin Fowler

Here’s an example. All this time, i have been writing code, almost 50% of it were comments. I thought this is the way other programmers will understand me.  Martin Fowler flipped it over. “The proper use of comments is to compensate our self’s for our failure to express our self’s.” he said.

Now, i am not going to write a book review. It’s not something i am good at. I will put some of my favorites notes i kept from the book while reading it.

Take a look.

About Clean Code.

Spending time keeping your code clean, is not just cost effective. It’s a matter of survival”

 

“The only way to make the deadline, the only way to go fast is to keep the code as clean as possible.”

 About Functions:

Functions should be small. Even smaller than that. And do only one thing.

 

One level per abstraction in each function.

 

Always prefer exceptions than error codes.

 

Duplication may be the root all evil in software.

About Comments

Comments are bad.

 

The proper use of comments is to compensate our self’s for our failure to express our self’s.

 

Comments are not maintainable.

 

Think twice before you write them.

About Code Formatting

Think of a well written newspaper article. You read it vertically. At the top you expect a headline to tell you what the story is all about and allows you to decide whether is something you want to read. The first paragraph is a synopsis of the whole story. As you continue downwards, the details increase until you have all the dates, the names, etc. We would like source code to be like that.

 

Now this is not just it. This book is a treasure for every programmer. If i got your attention give it a try.

What’s your favorite notes and rules about writing clean code?

 

If you like this article, take a look on a similar i have wrote on @medium and follow me on twitter.

Advertisements

Composer hangs while installing/updating dependencies

A common dis-functionality of Composer is that when it just hangs while installing or updating dependencies. Especially when using heavy packages like these of Symfony, Composer is going to run hard.

This issue is not new, and while there is been some discussion about it i still encounter issues running on a generally old machine with 4GB ram and a Core2Duo CPU.

Whilst i tried all of the suggested solution i ended up discovering that the problem is when you use the wildcard(*) for choosing the vendor package version.

Prefer using the latest version of the package you want instead of the wildcard(*) the next time you encounter the same problem.

Instead of writing


...

"require": {

    "monolog/monolog":"1.*"

}

...

write


...

"require": {

    "monolog/monolog":"1.10.0"

}

...

 

You can also try cleaning your Composer cache which is located at %APPDATA%/local/composer/ on Windows and using –-prefer-dist flag which tries to download a zip file of the package whenever one is available.

Last but not least, use –vvv flag for a more verbose output of the Composer and –profile displaying some hardware information at the end.

My first OSCON

Here’s a female experience on a technical conference. Makes me sad.

anontechlady

I attended OSCON 2014, which happens to be my very first OSCON and O’Reilly conference.

The experience was a bit bittersweet. I will start off with the good: The sessions were awesome and the speakers were very nice and knowledgeable. The food was good and plentiful, and the after-parties were fun. I did manage to make a couple friends there.

Now, the bad. It was rather hard to make any friends there or get a decent conversation going with the regular attendees. In fact, I felt rather ostracized and was downright harassed. Here are a few examples:

Almost every attendee I have talked to, the conversation would start out like this:

“Hey, [my name], what do you do at [company name on my badge]?”

I would explain what I do and/or what my company does, then:

“Great. Do you have a BF? Are you looking?”

I would either say yes…

View original post 438 more words

Multiple PHP versions on Wampserver

Having an easy way to switch PHP version is indeed a neat feature. Wampserver makes it easy for developers (like me!!) who works on Windows. Here’s how.

First if you haven’t update your WAMP installation for a while here’s a chance to do it. Keep a backup of your configuration files and your database, then remove WAMP from Programs and Features. Download the latest WAMP and install it. Then restore you backups. Now you should have the latest build of Apache/PHP/Mysql.

But you also need a previous version of PHP. What about it? Well it’s easy. Download the version you need from here. Create a folder under [WAMP_FOLDER]/bin/php/ with the name ‘php’ and the version you have just downloaded and extract the contents of the zip file there. There it should have another folder which is the current PHP version of WAMP.

Now we need a last thing for the WAMP server to recognize this install. Copy from the default PHP version’s folder three files:

  • php.ini
  • phpForApache.ini
  • wampserver.conf

and paste them on the folder you have just created. Change the ‘extension_dir’ setting from the first two files and open the third and make any appropriate changes.

Terminate WAMP and run it again, not just restart it’s services. And there you have it. Multiple PHP versions in just a click. Sweet right?

Multiple PHP versions on Wampserver

Multiple PHP versions on Wampserver

 

 

 

 

 

 

 

 

UPDATE (20/09/2014) : Remember to download the Thread Safe version of PHP. Here’s a brief explanation on what’s the difference.

 

 

Μην ξεχάσετε τις λεπτομέρειες…

Με αφορμή  το καινούριο προφίλ της νεοσύστατης( αναγεννημένης μάλλον και μάλιστα μέσα απο τις στάχτες της) δημόσιας τηλεόρασης που βλέπετε εδώ, θα προσπαθήσω να κάνω μερικά σχόλια, όσον αφόρα την σχεδίαση αλλά και την υλοποιήση του έργου αυτού. Φένεται ένα καλό παράδειγμα για να θίξω μερικά φλέγον θέματα της κατασκευής web εφαρμογών εν έτη 2013.

Αρχικά, οι χρωματισμοί των διάφορων block κειμένου, χρήζουν άμεσης αναδιακόσμησης. Υπάρχουν τρεις διαφορετικοί χρωματισμοί, σε όλο το πλάτος της ιστοσελίδας για πάνω απο 10 διαφορετικά είδη κειμένου, όπως Τίτλοι, Βασικό Κείμενο, Πληροφορίες Αρθρογράφου, Σημαντικές Ειδήσεις, Μενού Κεντρικό(Επάνω) και πατώματος(footer).

snapshot2

Ο επισκέπτης δεν μπορεί να διακρίνει τους τίτλους, τις συνόψεις, ποιές είναι σημαντικές και ποιες λιγότερο.

Θεωρώ την διαμόρφωση του κειμένου απαράδεκτη. Η ανάγνωση γίνεται κουραστική και δύσκολη. (Ωχ με την πρεσβυωπία σου ρε Μάνα! 😦 )Το περιεχόμενο στο διαδίκτυο θα πρέπει να καθρεφτίζει την παραδοσιακή ανάγνωση στο χαρτί. Δηστυχώς, η απουσίας βασικών κανόνων τυπογραφίας γίνετε αισθητή. Ακόμη και στην περίπτωση του copy-paste, κατι τέτοιο μυρίζομαι εδώ, θα μπορούσε η παρουσίαση να υλοποιείται μέσα απο CSS και να μην χρειάζετε ο αρθρογράφος να βάζει indentation κι άλλα τέτοια.

snapshot3

Συγχαίρω την προσπάθεια για την κατασκευή του responsive template. Όμως, ένα απο τα κλειδιά του responsive design είναι η πλοήγηση του επισκέπτη. Το hover state σε mobile συσκευές δεν υφίσταται. Γι’αυτο θα πρέπει να παίρνονται μέτρα για την κατάλληλη παρουσίαση των μενού σε τέτοιες συσκευές.

Κάνοντας tap στον σύνδεσμο Ειδήσεις αντί για εμφάνιση του μενού θα ξανα-φορτώσει η σελίδα.

Κάνοντας tap στον σύνδεσμο Ειδήσεις αντί για εμφάνιση του μενού θα ξανα-φορτώσει η σελίδα.

Τέλος, load time. Ξαφνιάστηκα απο την απουσία διάφορων widget που κυριαρχούν σε άλλα παρόμοια site (Facebook social plugins, Twitter, κλπ τα οποία αν δεν ενσωματωθούν σωστά, σε μια σελίδα, τρώνε πολύτιμο bandwith και γίνεται αισθητό στον τελικό χρήστη), σε αυτό λείπουν, εξού και η απόδοση. Μια ματιά όμως στην διαδικασίας φόρτωσης θα μας δείξει άλλα.

Image

(Εντάξει, ας εξαιρέσουμε τα χαμένα fonts.) Θέλω να σταθώ όμως στα μη συμπιεσμένα(minified) αρχεία js, css κι άλλα assets. Η σμίκρυνση των αρχείων κώδικα μπορεί να αποφέρει σημαντική βελτίωση στον μέσο χρόνο φόρτωσης της σελίδας μας. Γενικά, τα 3.17 δευτερόλεπτα είναι ένας υποφερτός χρόνος αναμονής(σε 24mbit γραμμή, σε 3G θα υπάρχει πρόβλημα), μόλις όμως αρχίζουν να πεφτουν widget-ακια που προείπα, δυστηχώς θα αυξηθεί επικίνδυνα. Γι’ αυτο προνοήστε απο τώρα.  Έρευνες έχουν δείξει πως ο μέσος χρόνος αναμονής έχει άμεσο αντίκτυπο στην επιστροφή του επισκέπτη στην ιστοσελίδα.. (Προσωπικά έχω κλείσει την ιστοσελίδα στο δεύτερο περίπου δευτερόλεπτο).

Υ.Γ:

Δημόσια Τηλεόραση - Hellenic Public Radio Television

Σερτσ Μανούλα μου θα πεί ‘ψάχνω’. Γκο θα πεί ‘φύγε’.

Σίγουρα, υπάρχουν κι άλλα που μπορείς πάντα να κάνεις για να βελτιώσεις μια παρουσίαση στο διαδίκτυο. Η συνεχής συντήρηση στις λεπτομερείες πιστεύω πως είναι το κλειδί.

Άλλες προτάσεις;

Bugsense και η… αμείλικτη αφοσίωση!

Bugsense και η… αμείλικτη αφοσίωση!

Η ελληνική start up σκηνή προσθέτει άλλο ενα βραβείο στο ενεργητικό της. Οι ιδρυτές της BugSense, εξηγούν σε απλά ελληνικά την πορεία τους μέχρι τώρα, την συνεργασία τους με τον αμερικανικό όμιλο Splunk, τους λόγους που τους εμποδίζουν να προχωρήσουν και να φτάσουν μέχρι και να κατακτήσουν την Αμερικάνικη αγορά αλλά και τους λογούς που η ελληνική νομοθεσία τους κρατάει κάτω. Αστείρευτες πηγές έμπνευσης…

Προσωπικά, αυτό που κράτησα είναι η φράση, του γνωστού “πειρατή” Steve Jobs:

Προσωπικά, προτιμώ να είμαι πειρατής, παρά να καταταγώ στο ναυτικό, όπως είπε κάποτε ο Steve Jobs.

Think different, λοιπόν και ένα μεγάλο `Εύγε!` στα παιδιά!

Here’s your chance to ask President Barosso

Here’s your chance to ask President Barosso

Google+ will host a hangout, main guest will be President of the European Comission José Manuel Barroso. Here’s your chance…

Is Europe really emerging from the financial crisis? What’s going to happen to Europe’s 5 million unemployed young people? Does the rise of euro-sceptic politics spell the end of the EU as we know it? Will Europe act on Syria? 

Simplicity is the key after all…

I was called to create a Facebook Page Application to take part on contests, while an Admin panel was necessary to manage those contests. When i first heard about it, i immediately thought to give a try a new PHP framework i was working on lately. It’s based on MVC principles.

So, the main idea was that i would keep separate Controllers, one to serve the Facebook app through Facebook’s iframe, that would answer only to POSTs, etc, etc; and one that would serve users wanting to access the Admin panel from anywhere.  I created separate Views on the Controller, that was serving the Facebook Page app, one that would determine if the user has liked our page or not, if the contest was currently drawed and would redirect the Facebook’s iframe on the appropriate View.

The idea was so simple, that ended up too complex. So complex that bugs out of nowhere jumped in.

The latest bug i worked on all day today was that due to too many redirects, i was doing, on the same controller, Safari and it’s ‘Blocking 3rd Party Cookies‘ policy wouldn’t allow to keep sessions, so i had to eliminate those redirects in order to create a persistent user experience.

Some times too much simplicity can drive you crazy…