alex

alex

Hello, I am Alex a software developer currently established in the north of Spain. At the moment I am studying communications engineering here in Spain, a career centered in software development and communications signals. I have been working on website development for many years now, you can see my portfolio in my main website.

Home page: http://urbanoalvarez.es

Posts by alex

Urbano’s Blog redesign

1

Well, after a while with this new design I felt the urge to redesign the whole thing. I am not changing the style, I'm quite comfortable with this idea of header / sidebar / footer style and I won't try to reinvent the wheel...

I will still go into "Grunge" kind of artwork and style, but it will be much more visual and colorful than the current. The header and footer won't be liquid, and the center will be liquid only up to 1000px, to avoid problems with huge Macs or things like that.
Here is a preview of the design (Already coded):

Urbano's Blog redesign preview

If you have any suggestions/comments I would love to hear them, thanks!
:)

Easy JavaScript Matrix

0

JavaScript MatrixA very cool way to display stuff on a website, is using a Matrix style. It is also quite common amongst hackers, and most of the people who have hacked a site for the sole purpose of proving they can like to display their hacker name in the index file, sometimes using JavaScript matrix style.

Well, here a way to do it:

All you have to do is copy and paste the following javascript code into your website:

 
var rows=21;
var speed=3;
var reveal=3;
var effectalign="default";
 
var w3c=document.getElementById && !window.opera;;
var ie45=document.all && !window.opera;
var ma_tab, matemp, ma_bod, ma_row, x, y, columns, ma_txt, ma_cho;
var m_coch=new Array();
var m_copo=new Array();
window.onload=function() {
   if (!w3c && !ie45) return
  var matrix=(w3c)?document.getElementById("matrix"):document.all["matrix"];
  ma_txt=(w3c)?matrix.firstChild.nodeValue:matrix.innerHTML;
  ma_txt=" "+ma_txt+" ";
  columns=ma_txt.length;
  if (w3c) {
    while (matrix.childNodes.length) matrix.removeChild(matrix.childNodes[0]);
    ma_tab=document.createElement("table");
    ma_tab.setAttribute("border", 0);
    ma_tab.setAttribute("align", effectalign);
    ma_tab.style.backgroundColor="#000000";
    ma_bod=document.createElement("tbody");
    for (x=0; x<rows ; x++) {
      ma_row=document.createElement("tr");
      for (y=0; y
<columns; y++) {
        matemp=document.createElement("td");
        matemp.setAttribute("id", "Mx"+x+"y"+y);
        matemp.className="matrix";
        matemp.appendChild(document.createTextNode(String.fromCharCode(160)));
        ma_row.appendChild(matemp);
      }
      ma_bod.appendChild(ma_row);
    }
    ma_tab.appendChild(ma_bod);
    matrix.appendChild(ma_tab);
  } else {
    ma_tab='<ta'+'ble align="'+effectalign+'" border="0" style="background-color:#000000">';
    for (var x=0; x</rows><rows ; x++) {
      ma_tab+='<t'+'r>';
      for (var y=0; y
<columns ; y++) {
        ma_tab+='<t'+'d class="matrix" id="Mx'+x+'y'+y+'">&nbsp;';
      }
      ma_tab+='';
    }
    ma_tab+='';
    matrix.innerHTML=ma_tab;
  }
  ma_cho=ma_txt;
  for (x=0; x</columns>
<columns ; x++) {
    ma_cho+=String.fromCharCode(32+Math.floor(Math.random()*94));
    m_copo[x]=0;
  }
  ma_bod=setInterval("mytricks()", speed);
}
 
function mytricks() {
  x=0;
  for (y=0; y<columns; y++) {
    x=x+(m_copo[y]==100);
    ma_row=m_copo[y]%100;
    if (ma_row && m_copo[y]&lt;100) {
      if (ma_row<rows+1) {
        if (w3c) {
          matemp=document.getElementById("Mx"+(ma_row-1)+"y"+y);
          matemp.firstChild.nodeValue=m_coch[y];
        }
        else {
          matemp=document.all["Mx"+(ma_row-1)+"y"+y];
          matemp.innerHTML=m_coch[y];
        }
        matemp.style.color="#33ff66";
        matemp.style.fontWeight="bold";
      }
      if (ma_row>1 && ma_row<rows +2) {
        matemp=(w3c)?document.getElementById("Mx"+(ma_row-2)+"y"+y):document.all["Mx"+(ma_row-2)+"y"+y];
        matemp.style.fontWeight="normal";
        matemp.style.color="#00ff00";
      }
      if (ma_row>2) {
          matemp=(w3c)?document.getElementById("Mx"+(ma_row-3)+"y"+y):document.all["Mx"+(ma_row-3)+"y"+y];
        matemp.style.color="#009900";
      }
      if (ma_row
<math .floor(rows/2)+1) m_copo[y]++;
      else if (ma_row==Math.floor(rows/2)+1 && m_coch[y]==ma_txt.charAt(y)) zoomer(y);
      else if (ma_row<rows+2) m_copo[y]++;
      else if (m_copo[y]&lt;100) m_copo[y]=0;
    }
    else if (Math.random()>0.9 && m_copo[y]&lt;100) {
      m_coch[y]=ma_cho.charAt(Math.floor(Math.random()*ma_cho.length));
      m_copo[y]++;
    }
  }
  if (x==columns) clearInterval(ma_bod);
}
 
function zoomer(ycol) {
  var mtmp, mtem, ytmp;
  if (m_copo[ycol]==Math.floor(rows/2)+1) {
    for (ytmp=0; ytmp<rows ; ytmp++) {
      if (w3c) {
        mtmp=document.getElementById("Mx"+ytmp+"y"+ycol);
        mtmp.firstChild.nodeValue=m_coch[ycol];
      }
      else {
        mtmp=document.all["Mx"+ytmp+"y"+ycol];
        mtmp.innerHTML=m_coch[ycol];
      }
      mtmp.style.color="#33ff66";
      mtmp.style.fontWeight="bold";
    }
    if (Math.random()<reveal) {
      mtmp=ma_cho.indexOf(ma_txt.charAt(ycol));
      ma_cho=ma_cho.substring(0, mtmp)+ma_cho.substring(mtmp+1, ma_cho.length);
    }
    if (Math.random()<reveal-1) ma_cho=ma_cho.substring(0, ma_cho.length-1);
    m_copo[ycol]+=199;
    setTimeout("zoomer("+ycol+")", speed);
  }
  else if (m_copo[ycol]>200) {
    if (w3c) {
      mtmp=document.getElementById("Mx"+(m_copo[ycol]-201)+"y"+ycol);
      mtem=document.getElementById("Mx"+(200+rows-m_copo[ycol]--)+"y"+ycol);
    }
    else {
      mtmp=document.all["Mx"+(m_copo[ycol]-201)+"y"+ycol];
      mtem=document.all["Mx"+(200+rows-m_copo[ycol]--)+"y"+ycol];
    }
    mtmp.style.fontWeight="normal";
    mtem.style.fontWeight="normal";
    setTimeout("zoomer("+ycol+")", speed);
  }
  else if (m_copo[ycol]==200) m_copo[ycol]=100+Math.floor(rows/2);
  if (m_copo[ycol]>100 && m_copo[ycol]&lt;200) {
    if (w3c) {
      mtmp=document.getElementById("Mx"+(m_copo[ycol]-101)+"y"+ycol);
      mtmp.firstChild.nodeValue=String.fromCharCode(160);
      mtem=document.getElementById("Mx"+(100+rows-m_copo[ycol]--)+"y"+ycol);
      mtem.firstChild.nodeValue=String.fromCharCode(160);
    }
    else {
      mtmp=document.all["Mx"+(m_copo[ycol]-101)+"y"+ycol];
      mtmp.innerHTML=String.fromCharCode(160);
      mtem=document.all["Mx"+(100+rows-m_copo[ycol]--)+"y"+ycol];
      mtem.innerHTML=String.fromCharCode(160);
    }
    setTimeout("zoomer("+ycol+")", speed);
  }
}
</rows></math>
 
</rows></columns></rows>

Now in the page, place a div with id matrix and whatever text you want to see appear...
For example:

 
<div id="matrix">Urbano's Blog</div>
 

There are a lot of variables to play with, like speed, timing, columns, rows... But the basics are there... Hope you find this interesting ;)

Google chrome

6

Google ChromeWell, it was time for web-giant Google to jump the gap between being the world leader in providing web-based services to actually providing... the web.

Today Google launched the Beta version of Google Chrome, which will be the revolutionary browser nowadays, as Google claims. But what makes it so great? Well, Google announced in a very entertaining comic-book that it was going to provide a solution to every single problem in today's browsers, but is it true?

I am actually writing this post from Google Chrome, to test it out, and I have to say that it is impressive, fast, smart... and a very long list of good things, although it is not as intuitive as I would like it to be. We are used to browsers like Firefox, Safari... and others that share a basic layout and style that Chrome has overthrown completely. Suddenly there are no "File", "Edit", "View" and all the usual windows tabs, there are almost no configuration options, but there is simplicity and ease instead, which combined find the perfect balance.

The main drawback though is the lack of Extensions or plugins. I miss Stumbling Upon the web, my Firebug, and other small things that add up to a lot... Although I guess It'll be just a matter of time until they develop the extension system and main developers prepare the "Chrome" version of the add-ons.

My rating, if I was faced from a 0-10 choice would be around a 7. But the lack of plugins will never allow it for more. Maybe a normal user will find it perfect, but a developer and a user that spends hours a day watching for new stuff all over the web needs more than "The basics".

What do you think?

Measuring the quality of your blog

0

Although there are a lot of online resources to measure the wuality of your blog, like Blog Juice, Website grader (The bottom of the resports is dedicated to blog) and others like Technorati Authority, all of this services focus on popularity and sometimes SEO aspects.

Taking into account that all a blog is about is people reading your content, the best way to measure your site's quality is to use Google Analytics and check the time spent per visit, and the time spent per page. This way if you see 90% of the visits spend less that 10 seconds on your page, who cares if your traffic is 10k, your blog does not have quality. It may be the design, the content, something that is making the users leave even before they had time to know what it was about.

Time spent on the site, Google analytics graph

As you can see in the image, you have an average, a daily basis, and a visual graph displaying the variations. An ideal time would the one it takes the user to read the article and maybe post a comment. Most users will take about a minute to do all that. If your average is under a minute, then you must do something, go through the stats, page by page, and check how much time they spend on each page, that gives you an insight of what's happening.
Also check the main exiting pages (Which will usually be the same ones they entered) and sometimes you'll see a particular page being exited too much, it is usually because of the article title, an egaging title will keep your visitors on the site, at least long enough to determine whether your article is interesting or not.

Something that is usually a great way of keeping your users on the site is putting an image always on each article. It gives a visual representation of what the article is about, and as you know, an image is always understood faster than a whole paragraph.
Another great way to help the reader know what the article is about is highlighting important words. It helps the user know where to look when skimming through the article.

Follow this simple tips and you'll increase the time users spend on your blog, which hopefully will mean that they will start to read your articles from start to end!

Create cool default avatars

0

If you are designing a website where users can register and have avatars, and you want them to have those cool "Human shape" avatars as default, well, here is how to do them ;)

This are some avatars I've created for my websites:

Avatars

How to do this

I recommend using a small size, 100x100 is best for me, although any size will do. Chose two colors that will suit your design, I usually chose a lighter color for the bg of the avatar and a dark one (The same as the font color will do) for the inner shape.

So go ahead and fill in the bg of our avatar with the bg color. Now its time to get that shape. You could draw yours, although I don't recommend this, there are enough resources in Internet to have to create another.
I used a free PNG icon gallery in ArubaMaps. I really like it, it has some good quality, big PNG icons.
Go to the category Creatures, and search for people's faces.
Of course you can use anything else other that faces, but I guess I like the look of the human shape as avatar.

Now you can simply drag and drop the image in Photoshop, copy it and paste into the document, press Control+Click over the layer thumbnail to select its contents, and fill with the darker color in a layer above. Then delete the layer containing the image and position your shape.
You can improve this by using some fades and stuff like that, but that is up to you.

Avatars
alex's RSS Feed
Go to Top