Quick update

So, I'll do a quick update. I've got a new laptop, which is neat. Specially because my previous one was really bad (Pentium M chips really suck). I've got a Lenovo b50-70 with an core i5 processor and 4gb of RAM, despite having some issues with the realtek card ( which i solved compiling the lwfinger rtl wifi driver ) everything works really good. I also installed the tlp package to optimize my (Fedora 20) system. I'm happy because this lappy is really quiet, lightweight and it doesn't overheat. It's also really fast despite not having a SSD (yet).

Just as I post I used AirDroid because I was too lazy to actually get the damn cable ( just came back from the gym on a hot day) it seems like a cool app. It also makes me feel like someone is watching my phone... oh well, I guess those are the perks of living connected nowadays.

Yesterday I watched Social Network, and despite several of my friends telling me it sucked I found it that it's a really great movie. In fact I understand that it's not appealing to non-programmers, but if you are into web development YOU SHOULD check it out!

Now I'm watching JOBS, it's the week of the biographical movies with actors that don't look at all like the guy.


How composer made me love PHP again

I've been working with php for almost 8 years now (geez, I feel old) and kinda getting bored of it, for most of these years the php work has been a mix of tedious bug fixing, and lousy software design limiting experience. When this happens in your career there is one clear message: "You are getting rusty and must get out of your comfort-zone". So last year I've been learning new stuff both inside and outside the PHP world. One of the jewels and must have for ANY PHP project nowadays is Composer.

Composer is basically like bundle, but for PHP. It allows to manage dependencies on your project, autoload classes and more. I think a tutorial here would be redundant since the main site is well documented so I just wanted to drop this recomendation for future potential readers and PHP learners.

Composer takes php development to a new level, allowing us to manage our project more efficiently and keeping more sanity in what in other time was a huge waste of time and boilerplate code to setup your favourite framework and use your preferred libraries.


Post picture " 4.IX Orchestra Sinfonica Nazionale della Rai" by MITO SettembreMusica under license CC-by 2.0

On pomodoro, SSD and something something gnome

I'm starting to apply the Pomodoro Technique , thanks to this handy Gnome extension at least until I get one of those fancy real pomodoros (which I find really cool). Note that the author no longer support the extension at gnome.org, but you have to download it from github neverteless the extension still works and it's what I'm using until I can actually spend some time getting the extension from github.


I also got a SSD and installed my fedora desktop ( can't wait for Workstation 21, looks really promising) and boy, everything is so fast.


I've been switching back and forth from Gnome, cinnamon and Mate, and I ended up with a combo I really like. I can't now live without the exposé-like effect and edge snapping ( latest currently offered by all of these desktops). But I still don't really like the new nautilus, I mean, the headerbar thing is good looking but not being able to see the free space on my disks in the statusbar annoys the hell out of me. So in the meantime I've replaced it with Nemo, the Cinnamon file manager which looks a little uglier, but it gets the work done and has a TON of additional features.

I was wondering if it wouldn't be cool to offer Nemo as a replacement for Nautilus, like an "advanced" alternative for power users, I'm sure that it will never happen given the current direction and interest of the Gnome project but one can always dream.

WP Cli makes wordpress management easy and fast

Today I met this little script for working with Wordpress and it has filled my day with true joy. This neat tool makes it easy to manage and update your wordpress websites and plugins, it even can scaffold content types ( which is easy but often can take some time of writing boilerplate code).


To install wp-cli just download it:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Then put in the system path or copy it to your /usr/local/bin

chmod +x wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wp

Then just run wp help to see what this little thing can do for you.

Back to the GNOME

I've been toying again with Gnome 3 and I must say that I'm now bought by it's cool concepts. It still had it's quirks and annoyances but mostly are gone with extensions. I must say that it runs way faster now and It's a great help  to my workflow.

There are some (IMHO) Must have extensions for the shell:

Application Menu

Well nothing much, returns our old and dear apps menu. Useful when you don't want to type for your app.

Frippery Move Clock

Ok the clock in the middle is really odd, I'm just used to look for top right to see the hour. ( I must say that I love the calendar applet of gnome 3, having my Google Calendar appointments there is an amazing thing to have).

Media player indicator

Control your media player from the panel, really neat, displays cover art and quite advanced controls.

Minimum Workspaces

This SHOULD REALLY BE THE DEFAULT BEHAVIOR. Having dynamic workspaces sucks because you have to open each window in a sequence if you want to always have your windows in the appropiate workspace( which for me is: wp1 {text editor, IM}, wp2: {browser, terminal}, wp3{ Mail Client, PRoductivity app or FTP}, wp4 {Music player}) but with this you have the best of both worlds, you can have your default set of WPs and just add a window to the new one when your really need a new workspace. Lovely

Places Menu

The GNOME must have a places menu, if it doesn't it isn't GNOME. 'nuff said.

Removable Drive menu

If your computer isn't a rock without any external ports and devices, then you must have this one.

Skype Integration

Ok so, both cinnamon and gnome just screwed up this and now this extension fixes it, not having notifications for skype it's a job-destroying feature if you rely on skype for serious communication. This extension takes it a step forward anyway and makes the skype status indicator a real integrated panel for controlling your skype account.

Window Overlay Icons

Just adds icons to the thumbnails in overlay mode, so you know which app you're dealing with.


In conclusion, GNOME 3 default behaviour is still alien to me, but extensions make it useful. It's still hard for me to get used at not having a taskbar but I've found out that allows me to focus more on the current app, and I'm juggling through apps a lot less. I'm still switching back and forth to Cinnamon which seem to have a more sane envirnoment with not that much tweaking. But I can appreciate the distraction-free environment that Gnome 3 aims for.

Creating your own Magento payment gateway module - Part I - Configuration Files

Activating our module

Creating a Magento module can be seen as a daunting task at first. But once you get the hang of  it you will understand a lot more of Magento itself and it will get easier and easier from there on.

The first thing we will do in order to create a module is creating a file located in /app/etc/modules called Example_Modulename.xml (where Example can be your company name, or just the name of your package of modules).

it's format will be quite simple:


<?xml version="1.0" encoding="UTF-8"?>

This file will simply tell magento that our module is active and will specify the codepool, which can be either community, local or core. The codepool is basically in which code folder our module will be, since we will be putting our files in /app/code/local we set it as "local"

More Configuration Files

Once our module is active, we can begin actually doing some stuff with it. Magento relies heavily on XML to override it's default parameters, classes, populating it's menues, and hooking up module helpers, blocks and much more. In this tutorial we will cover how to

We will now create the config.xml which contains the version information of the module, and defines a helper class ( which will only extend the basic Magento Helper class).

<?xml version="1.0" encoding="UTF-8"?>

We will place this file in the folder /app/code/local/Example/Modulename/etc/ , this folder will have all the files related to our module configuration. You will see that in Magento each module follows the MVC pattern and will define it's models, controllers and views like it's a mini application.

Now you must be getting a little bored, but the following configuration file is a little more exciting, system.xml will register it's own configuration values ( to be used in the process of hooking up the payment gateway ) in magento and it will allow a configuration form to be displayed in the appropiate section.

system.xml is to be placed in the same folder as config.xml

<?xml version="1.0"?>

                <stripe translate="label" module="stripe">
                                    <label>Example Payment Module</label>
                                <active translate="label">

                                <gateway_url translate="label">
                                    <label>Gateway URL</label>



Ok this one is a little more dense but it's easy to understand if you go step by step, here we are defining a new configuration group on the payment section of the configuration settings of magento.

Note that we are already defining it's visibility on each store scope, as well as the order it will appear on the configuration tab. We are also defining some fields,  the first "active" that we will use to let the user deactivate our module from the admin panel, note that we define a frontend_type (which means which widget we will display to the user) and a source model, which will tell magento how to populate the widget, in this case a convenient yes or no option is provided; the other field is more straightforward and we will use to store the API url of our payment gateway.

This should show our module on the appropiate configuration tab in magento admin.


We learned how to activate a Magento  module, we also learned how to insert a form in magento configuration interface that will be useful to store the needed configuration values for our module ( such as status and gateway url).

On the coming part of this tutorial we will see how to populate these forms with default values ( to make our clients work easier, and how to actually process the cart information and connect with our payment API

Welcome to my blog

a blog about web development and my life

But who is this guy anyways?

Well I'll talk a little about me.

My name is Juan Giménez Silva, I'm 27 years old and I'm a web developer from Argentina, I code in PHP, Javascript and HTML. I'm proficient in CSS as well. I love history books, music, comedy shows, movies and many other things that most people like.

I work for Best Web Design Company, that specializes in web design ( as can be seen in the name ).

The tools of my trade are a computer that runs Fedora Linux, an HTTP server and pretty much any open source software that can make my life easier. I like simple, well thought solutions rather than complicated stuff.

I use and develop plugins for Magento and Wordpress and I have knowledge in the usage of MVC frameworks such as Laravel, CodeIgniter and CakePHP.

So many things to be thankful

First of all thanks Laravel for the amazing framework, thanks Bootswatch for the cool themes for bootstrap and SubtlePatterns for the cool pattern background, TinyMCE which allows people who hate fiddling with html tags ( despite being web developers) to write without worrying too much.


Last but not least our amazing company Best Web Design Company for giving me a little space to put my blog into.

A new framework, a new blog

Hi everyone! Welcome to my blog, a space dedicated to web development, technology and operating systems.

This blog is my first step using the Laravel framework, which is one of many MVC frameworks out there. From first hand I can say that it's an incredible tool to build websites. Eventually I'll make the code of this blog available on github . Feel free to criticize, patch and make fun of my code in any way you want.

The blog will be updated both in articles and code, and will serve as a dev diary of my current projects.


Thank you for reading.