Thinking on hiring me?

Please read

Fernando Guillén

a Freelance Web Developer

cabecera decorativa

software development as an artistic expression

Archive for the ‘programando’ Category

Jueves, Julio 26th, 2012

Can we come to an agreement?

There were days where JS, CSS and Ruby programmers where each other sat in different tables and in each table we were using different naming convention and it was not a problem.

Well, times have changed, and now there is not three tables any more, we have put the three tables side by side building an only one web developer table, but we still keep the three different naming convention. Which is very damaging for our flabby brain.

I’m moving my text editor from the CSS file to the JS file and back to the Ruby one, and I have to say that my tab changing is very much faster than my mental change. If naming things wasn’t hard enough now we have to switch continuously between formats.

  • CSS: variable-name (hyphen case?)
  • JS: variableName (lower camel case)
  • Ruby: variable_name (snake case)

And when I start seeing things like this:

    $( ".time-ini" ).html( this.timeIni ) ;

I feel very nervous. So please let’s come to an agreement, what about a non-binding poll for starting:

Let’s move CSS, JS and Ruby naming convention to

  
pollcode.com free polls 

I’ll really would like seeing someone with community authority telling something about this.

Note: I know the variable-name option is not possible in JS neither in Ruby but I keep it in the poll for consistence with the article.

Note2: Also I know that the CSS attributes will remain variable-name style, and there is not much we can do about this.

Lunes, Septiembre 5th, 2011

Work in progress (ode to my pet-projects)

murmur

I have been standing aside of new clients and projects for the whole summer, there have been two great reasons for this decision. One: I wanted to enjoy the summer, and two: I needed time for my own projects, or better said: my own projects need time from me.

When I’m working for a client I’m really concentrate on which I’m responsible of. I focus very deep in my client needs and I offer the 100% of me to the project I’m being payed for.

If I want to work on my pet-projects I have to free myself. I have to clean my TODO list and open a clean period, without deadlines or external responsibilities.

My pet-projects periods are very important for me. They are one of the reasons I am very grateful of this skills of me that I have become in a profession.

Spending time working in my pet-projects not only makes me feel fulfilled, it also makes me be a better professional. They feed my passion, and keep me alert, they are very hard exercises those push me to my limits.

So, which are these so important pet-projects?, this is a summarized list of all the ‘on developing‘ projects I’m working on.

Vitreous

Vitreous

“The transparent personal website manager”

The first in the list because is the one where I have placed more energy lately.

Vitreous has been born to revolutionize the personal website and portfolio manager systems environment.

Focused in users with a very minimal web experience, print designers, photographers, writers, any kind of content producers, who wants to have a personal (and customizable) website but feel so lazy to deal with the actual available options.

Vitreous is a transparent personal website management. You have not to login in any where, you have not to upload files using webforms, you just have to copy files into your local hard disk, organize them into folders and Vitreous will do the magic.

We are currently in beta version, we are accepting beta testers and we have already some examples to show.

There have been multiple fights to achieve the actual status of the development. The Dropbox API is not as complete as we would desire, defining a versatile metadata system using files has been a complex work, to offer a secure full access to the templates has needed ingenuity and good programming, implement a solid and reliable stand-alone design render engine has turned indispensable.

BookySitter

BookySitter

“The market place for the independent publishers”

This is the oldest still ‘on development’ project I have in my pocket. I have been working on it for the last three years, not very actively of course.

The independent publishers have a lot of difficulties to reach the final readers, there are multiple reasons for this, the most important is the difficult of the distribution.

BookySitter tries to offer a solution for this, offering a possibility to the independent publisher to create his own online book shop, easy, simple and customizable. With small but useful functionalities especially focused in the small publisher needs like bookshops management.

But this is only one side of BookySitter, in the other side BookySitter wants to be a market place for the independent publications, where any reader interested in books made from the heart and not from the pocket can find a reliable catalog.

So what we have is a multi store system with independent and common catalogs. Full customizable templates. Multi-shopping-cart system.

We are still in a very green development status but we have already a shop in production: escrito a lapiz’s shop

We are also open for beta testers. Any independent publishers who is interested in open an online store can talk with us, we will offer our service and support by free.

The Kids Art Gallery

The Kids Art Gallery

“A gallery that respects and assesses the artistic power that have the most creative creatures on the world”

This is the project closest to my heart.

The Kids Art Gallery is an online multi-gallery for children paintings.

This is a very personal initiative with no any profit purpose underneath.

I want to build an online reference for the producers and the lovers (as I am) of this kind of art. I want to build a pleasant interface to navigate and appreciate in every detail children art sample.

The intention is not only build an online gallery but also a place of understanding and comment this contents, inviting psychologists, fathers and children to comment and write about the works of art.

Currently we are working in the design and the user experience where we have a lot to improve.

In this moment we are accepting new artists so if you know any one please ask me for an invitation code.

Sitoi

“The trade fair stalls manager”

One of the few projects with a very clear business model.

Sitoi is a for rental spaces online manager. Is focused in street markets, trade fairs, parkings, … any situation where there is an space divided in for rental portions.

This project is still in the conceptualize state, but this is the most important part of it. We have defined a very fast, easy and versatile way to publish online spaces for renting.

We are now working in the user interface.

ScrapStats

“Data is every where”

When you are not the owner of the data is difficult to follow up and make monitoring of the changes.

ScrapStats allows you to monitor the changes of any data that is accessible for a browser.

With a very simple system based in html scrapping you can register as many data monitors as you need, ScrapStats will take an snap-shot of the data periodically and offer you alerts and charts of the evolution.

We are in alpha status of this project, there is already an operative prototype but we need to improve the user interface.

Space Suckers Chronicles

Space Suckers Chronicles

“You can introduce this space ship where it fits!”

Building a multi-user-text-based-game has been always a murmur in my head. Born as a RMU exercise it is now one of the projects I’m working on.

in S2C you can build space-ships, mines, colonize planets and confront your fleets with the other players ones. Every thing happens in real time, and in a persistent way so even if you are not in front in the computer your fleets and planets are still there living their own lifes.

There is not graphics animation or any other representation of this parallel world rather than the text info you are feeded with.

“It runs on the world’s most powerful graphics chip, imagination.” – Dc. Sheldon Cooper

This project is in alpha version, there is a prototype already working implemented in a three layers infrastructure:

  • The logic
  • The server
  • The client

It is an Open Source initiative.

Now that you know all my ‘on development’ pet-projects you can join me to push any of them that you feel interested in. Just give me a shout and tell me why you are interested and how you can help. Currently my bigger weakness and bottleneck is in the user interfaces development.

Viernes, Julio 1st, 2011

I don’t like end customers

This is not a flash thinking. I have not just waked up angry with something and I just have taken this decision. It has been something cooking very slow.

I remember three years ago talking with one of my respected colleagues about our freelance way of life. I was defending the experience of working with end customer, taking the project from the beginning when it is only an abstract idea, extracting to the customer all the info the project needs, to become one abstract idea in reality, teaching your contracting how to build an internet project is and what it needs.

He was in the other side: he preferred to not deal with all of this.

He had just more experience than me. The time has placed me in the same opinion.

Now I’m starting to generalize so please don’t take offense of my words at least you feel recognized on them.

The history is common and it starts like this: A new email contact achieves to my inbox, someone was looking for a freelance web developer and arrived to this web site and decided to contact me. This history has never had a happy end. Just a waste of time on my side.

These are the mistakes this customer is gonna make:

  • He doesn’t believe there is a relation between quality and price. He thinks all professionals are the same, they just have to find the cheapest one.
  • He is not calculating property the amount of resources that an internet entrepreneurship needs to wake up. He thinks that finding a programmer is enough, no idea about user experience, information architecture, graphics and design, marketing, market studies, usability, SEO, maintenance, servers, customer attention, business model, investors, legal implications, …
  • He overrates his idea. He thinks he has a million dollar idea, but he even hasn’t studied the other players, the competitors. He thinks his idea is the most important part of the project when the reality is that it is worthless without a good development in every sense of the word. He thinks he has the idea very good defined but it is just an abstraction with not definition or analysis at all.
  • He wants it all. Every stupid functionality is indispensable. Not possibility to discern between necessary and desirable. Not possibility to define a first iteration with a basic functionality. Negation of the nature of an internet project: it will ask what it needs, you just don’t know yet.
  • He is not gonna take any responsibility. He thinks his only function in this adventure is to push with the budgets and the timings. He doesn’t accept he has to work, he has to offer answers, solutions, cover no technical tasks, … and do it fast. I need him to be a companion, a partner.
  • He is not gonna take any risk. Really? you are starting up a supposedly great business and you have reserved 1.500 euros to do it real?. This is less than the vegetable store on the corner pays for rent. This is very related with the previous point: one of the biggest responsibilities he is gonna avoid is the obtaining of money. He says he has not to much money and I should understand this issue. What he is telling me is that he just failed in one of his most important responsibilities: the money supply.
  • He doesn’t sell it self. He just writes an email with petitions (usually a budget). He just says he has a great idea and he is expecting me to convince him that I’m the right professional he needs. He doesn’t say anything about him, about his experience in internet entrepreneurship, why should I accept to work with him?, which are his references?.
  • He doesn’t understand his own business model. I know better than him which the possibilities are, even which of them are possible better for his business proposition. I feel scared with his ideas. This is one of the most frustrating situations. He has lost his leadership. He is not an inspiration for me.
  • He asks me for my programming skills and what he is really asking me is to be his CEO. He wants me to build the team, to manage it, to resolve any issue, to be a technical and business consulter. And if for any reason the project doesn’t success like it was supposed to, he will want me to be the responsible.
  • He wants a fixed budget, even if the idea is properly defined and documented (what is unlikely) is literally impossible to know which are gonna be the final needs of the project, or the issues we are gonna find, or the specification modifications we will should face up.

I think I have realized that the desirable end customer, the one that knows the domain, who knows the value (and the price) of the quality, who respects me as a professional, who takes risks to stand up his idea, who has the experience to offer justified and well analyzed ideas, who understands his responsibilities, the one that is a really leader and an inspiration, who really believe on his project, he is not calling you in his own name, will be the start-up he has just created to wrap the project who will call you.

This is why my really preferred end customer, which officially are not really end customer, are the Start-Ups.

Miércoles, Septiembre 29th, 2010

The Programmer Time Quanta

Different kinds of work have different time quanta. Someone proofreading a manuscript could probably be interrupted every fifteen minutes with little loss of productivity. But the time quantum for hacking is very long: it might take an hour just to load a problem into your head. So the cost of having someone from personnel call you about a form you forgot to fill out can be huge.

This is why hackers give you such a baleful stare as they turn from their screen to answer your question. Inside their heads a giant house of cards is tottering.

The mere possibility of being interrupted deters hackers from starting hard projects. This is why they tend to work late at night, and why it’s next to impossible to write great software in a cubicle (except late at night).

Paul Graham in How to Make Wealth.

…Reading Paul Graham I feel someone gets me on.

Lunes, Septiembre 13th, 2010

Vitreous: a Transparent Portfolio Manager

VitriousWhen one friend asked to me for install for her a copy of Indexhibit on my server I was wasting a bunch of mails trying to understand why she wanted this creepy and unusable portfolio manager. One of her arguments was: because one friend told me that it is a ‘transparent portofolio manager’, at this moment I thought: ‘alright so it has to be something that runs on your computer and synchs your portfolio contents from your local hard drive to the online application’.

That was awsome, but this wasn’t what Indexhibit is.

Since this moment I was looking for the moment to develop by my self the kind of ‘transparent portfolio manager’ I was thinking on.

The result is still inside of my fingers but for the moment I have an experimental version ready to work: Vitreous.

Vitreous is a simple Ruby + Sinatra + Dropbox API application that looks on your Dropbox online folder and builds a simple web site with collections and items.

Using simple tricks you can: short the collections and the items, add a description text for each item, configuring home image and description.You can manage your portfolio just creating folders on your local hard disk and adding images to them. Dropbox and Vitreous will do the rest.

The next step is to build a multi user application so you will be able to open a Vitreous Portfolio just introducing your Dropbox Api Credentials on an online form. Multiple portfolios for unique user, template system, auto cache refresh,

…(I am still a few angry with the Dropbox API… I hope they will move forward soon).

Miércoles, Agosto 25th, 2010

Ruby: DummyDropbox, mocking the Dropbox API calls.

Dummy Dropbox

Playing with the Dropbox API for an another experimental pet-project I needed to test how my mini-application was responding to different Dropbox contents. On the beginning I was configuring a real Dropbox account for testing but this was not agile and flexible. So this is because I decided to mock the dropbox ruby gem and this is because DummyDropbox has been born.

The working is simple: you point the gem to a local folder, all the dropbox API calls will think that this local folder is a real Dropbox account.

Example:

require 'dummy_dropbox'
DropboxDummy.root_path = "#{File.dirname(__FILE__)}/test/fixtures/dropbox"
session = Dropbox::Session.new('key', 'secret')
assert_equal(
  File.read( "#{File.dirname(__FILE__)}/test/fixtures/dropbox/file1.txt" ),
  session.download( '/file1.txt' ) 
)

Wondering if this could be helpful for someone.

Martes, Agosto 3rd, 2010

Ruby: FibberMailman, mocking the Net::POP3.start

 

 

 

Fibber MailmanLately I’m involved on projects that do a very intensive use of email accounts as input of information.

The use of mail in an automatic process is always a pain in the ass because of the huge casuistic and also for the difficulty to test it.

Nothing we can do with the first problem but for the second one here is my propose of a very simple Ruby Gem to mock the Net::POP3.start petition so you can simulate the emails that a real POP3 petition could find:

FibberMailman the mock for the Net::POP3.start.

Just charge a bunch of raw mails in an strings array and send them to the FibberMailman.lie_to_me method like this:

require 'fibber_mailman'
 
raw_mails = [
  File.read( "/fixtures/mail1.raw_mail" ) ),
  File.read( "/fixtures/mail2.raw_mail" ) ),
]
 
FibberMailman.lie_to_me( raw_mails ) do
  <your code that uses the Net::POP3.start on any point>
end

Every petition to the Net::POP3.start method into the inside block will be feed with fake emails built from the raw mail strings.

 

Martes, Agosto 3rd, 2010

Lightning Talk about the OneOfZombies project

A few months ago I was on Krakow attending to the European Ruby Conference (aka EuRuKo).

There I had the opportunity to talk about one of my unfinished pet project OneOfZombies the Game.

Lunes, Mayo 24th, 2010

theKidsArtGallery, the most awesome virtual Art Brut gallery

theKidsArtGallery, virtual art gallery

I have always loved the kind of paintings made for people that suppose don’t know how to paint, the drawings full of colors with aggressive strokes and absolutely non pretentious motive.

After a while I realized that there is a name for this kind of paintings: Art Brut, drawings made for people without art knowledge, the outsiders. I don’t know why but this paintings send to me a lot of energy and always produce an smile on my face.

After visiting several Art Brut expositions I have found the real Art Brut artists: the kids. They are awesome, they produce the most wonderful Art Brut I have ever seen, and they do it with an incredible productivity.

My girlfriend’s nephew is one of them, I love every of his drawings, I thought that it will be a good idea to build him an small website for his drawings, not only to share them with acquaintances but also to let him know I’m very proud of his stuff.

After a few code lines written I realized that this was a multi kids’ art gallery will be a fucking good idea and this is because theKidsArtGallery has born.

I have found a bunch of pages that implements the same idea but in my opinion none of them have a good functionality.

theKidsArtGallery is a virtual gallery of paintings and drawings of children from around all countries and continents.

A gallery that respects and assesses the artistic power that have the most creative creatures on the world.

It also wants to be a place for appreciation and motivation for the children creativity.

If you have children, or any other young relative you will know that they produce a very big and uncontrollable amount of small pieces of art, theKidsArtGallery can be a good way to keep them organized and to share them.

The whole project is non-profit, I just wanted to make real a reference place for people with my same interest for the kids drawings.

The site is on continuous development, I didn’t find yet the functionality and the style I’m looking for, any suggestion on this fields will be welcome.

If you are interested on open a gallery for your small familiars or even for your old drawings when you was a child, please contact with me.

Domingo, Marzo 14th, 2010

Arduino: Phixter Visits, blinking a led each time your website receives a visit

 Arduino I’m in

PhixterVisits is a way to convert an user visit on your web site into a blinking led on your desktop.

I have received for my birthday present one of the most awesome presents a geek can received: an Arduino Workshop Kit.

The first experiment I did was, of course, a Hello World, and after that I build something I was feeling like doing for long time: blink a led when someone visits my website.

This is very useless thing, I know and I don’t care, I just think that when something happens on the web and it become in something real on my table this is kind of magic.

On the beginning was a very simple experiment and withing an afternoon I build an small Sinatra project that received requests with a numerical parameter, the Sinatra webapp sent a signal to an script on my computer through a socket, and my computer finally sent this numerical value to the Arduino that knew with led to blink on depending the value.

This was awesome, I could to hidden an ‘img’ html element on my website asking for an image that in fact was a request to the Sinatra webapp and then the rest worked by it self.

Finally I wanted to play a competition with my girlfriend, she has a very most popular website than mine is, and then I was thinking to do all this stuff much easier to configure so this is because PhixterVisits born.

PhixterVisits is composed for three layers:

Arduino Sketch and Circuit

This is the most simple layer. It is a simple Arduino sketch that opens a Serial connection with your computer waiting for numerical values from 1 to 11, on depending the value received the Arduino will send a signal to one of its digital output connections.

The circuit is also very simple as you can see on the ‘How to Install It’ section.

Local Server

The local server is also very simple but I’ve complicated it becoming what was a simple console script on a wxRuby desktop application so you can configure it and test it visually.

Web Service

Is a Rails application where you can register your self and configure what I call ‘Phixters’. The Phixters are composed by an ‘URL:Port’ address what is your local computer public ip and the port where the Local Server is listening. You configure a value for each Phixter. And finally you can copy a very small piece of html code that you have to paste on whatever place of your website you want.

This piece of html code is the one that hides the Web Service request on an image so when your user visitors are watching an image a signal was sent to the Web Service.

How To Install It

I suppose you have a few experience with Arduino, at less you have obtained to operate the ‘Hello World’ with Arduino.

The Arduino Layer

Download the Arduino Sketch and upload it to your Arduino controller.

Build the circuit as show in this draw.

Phixter Visits Arduino Sketch

On this draw and on all my tests there are only 6 leds but you can fill all the digital outputs with leds and they suppose to work. Put atention that the digital outputs 0 and 1 are not being used, that is because on the circuit there is printed ‘RX’ and ‘TX’ on this out puts and I didn’t want any serial communication interference (I really don’t know if this interference was going to happened).

For test it you can open the ‘Serial Monitor’ of your Arduino app and send numerical values like ‘1′ or ‘2′ or ‘6′, the corresponding leds should blink for while.

Local Server

Download the ‘Local Server’ wxRuby desktop application.

You must to have Ruby installed on your computer and also the ‘wxruby’ gem:

$ sudo gem install wxruby

Go to the directory you have uncompressed the ‘Phixter Visits Local Server’ app and run on console:

$ ruby wx_tcp_server.rb

Yo should see something like on this picture:

Phixter Visits Local Server off

You have to know the name of the USB port of your Arduino and replace the text box named ‘Arduino Serial Port’ with yours one.

Select a port where you want the Local Server listens, for example ‘20000′.

Push ‘listen’.

You should see something like this bellow:

Phixter Visits Local Server

If you want to test it you can push ’stop’ and play with the ‘Send test value’ buttons. If you click on these buttons a corresponding led should blink.

Press ‘listen’ again and let the Local Server listening.

The Web Service

Go to PhixterVisits, register your self and create a Phixter for your web site like this:

Phixter Visits Web Service create Phixter

On URL:Port you have to put the public IP of your computer (or whatever computer your Local Server is listing), the Port is the port you have said to Local Server to listen.

Look that I’m using the ‘no-ip.com’ service so I don’t have to take care of my non-static public IP.

You can create any number of Phixters you want, one of them could be for a different website, just take care you are using the correct ‘code’ of each one.

Very important also is that I’m not going to talk about how to configure the NAT of my home router. This is diferent on each router and is the same theory of ‘opening the ports’ for your emule. Although I’m not talking of this step, this step is very important and the Web Service won’t can talk with your Local Server if this is not well configured.

You can check the communication from your Phixter on the Web Server to your Local Server on your desktop computer by pushing the button ‘check’ as you see bellow:

Phixter Visits Web Service go to check

This will send a signal to the URL:Port configured on this Phixter sending the value indicated, if everything is connected and working a led will blink on your Arduino circuit and a Ok message will appear on the Web Server page.

The HTML code on your Web Site

Still on the Phixter Visits Web Site, go to the ‘code’ of your Phixter:

Phixter Visits Web Service go to code

Copy the code on the textarea:

Phixter Visits Web Service Phixter’s code

And paste it on some place on your web site, be intelligent here and don’t put it on a place that an image is not going to be loaded.

From now on each time your website is loaded this image will want to be loaded and a request will arrive to the Web Service which will send a signal to your Local Server which will send a signal to your Arduino which will make the corresponding led to blink.

What is next

The game now is to connect to the Arduino not leds but DC motors so when a signal arrive the motor will work for a while and then stop until the next signal arrive. The motor will move some kind of figure like a horse or something then the race can start.

Phixter Visits Horse Race

Also will be great not to depend on a computer to communicate with the Web Service, using a ethernet interface directly connected to Arduino could be great.

The Code

All the code of this project, even the the Phixter Visits Web Service is available on the Phixter Visits Github Repository.

Responsability

Play with this code and instructions on your own risk, I’m a very beginner on all of this Arduino stuff and some problems could happen to your loved kit.

License

You can do whatever you want with the code, attributions will be grateful.

Creative Commons License

Phixter Visits by Fernando Guillen is licensed under a Creative Commons Attribution 3.0 Unported License.

a Freelance Web Developer is proudly powered by WordPress
Entries (RSS) and Comments (RSS).

Creative Commons License
Fernando Guillen's blog by Fernando Guillen is licensed under a Creative Commons Attribution-NoDerivs 3.0 Unported License.