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
1Well, 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):
If you have any suggestions/comments I would love to hear them, thanks!
Easy JavaScript Matrix
0
A 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+'"> '; } 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]<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]<100) m_copo[y]=0; } else if (Math.random()>0.9 && m_copo[y]<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]<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
Well, 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?