My name is Juri Strumpflohner and this is my technical blog. I'm a software architect, .Net, Android, Web and Java dev, TDD and best practices promoter and martial arts practitioner.

Recent Posts Subscribe

Dear reader of Juri's TechBlog,
I moved my blog to a new domain and a new hosting solution as well. I'm now blogging on juristr.com.

Yahoo! Pipes

Yahoo recently launched a service called "pipes". Pipes are known from the Unix and Linux world, used in the shell to do for instance filtering etc...

Their new service seems to be very interesting. They have created a nice workbench for creating, editing and debugging created pipes. There are some predefined operators which allow for example you to easily merge, truncate or filter out content of rss feeds.

Each pipe that does some operation upon an RSS feed, will again have an output in XML (RSS) format. In this way the output of created pipes can directly be used by other applications and programmers don't have to write additional code for manipulating the feeds such that they meet their needs.

What can also be noticed is that Yahoo! starts to emerge more in the area of AJAX interfaces as Google already does heavily.

Google New York Office

This article describes the new Google NY Office, opened about 4 month ago.
Their work environment and condition sound a little futuristic...

"..., the floor plan evolved to include approximately four micro kitchens equipped with snacks, a game room, idea boards, a lecture hall, two cafes, majestic ten foot tall windows, and conference rooms named for New York City landmarks, such as Belvedere Castle and Rockefeller Center,..."

"The primary colors of Google’s logo are reflected throughout the office where every day of the week Google makes life colorful for its employees. Tuesday afternoons, employees enjoy tea and in the evenings relax with Yoga. On Wednesdays, they exercise with pilates. By Thursday the office is ready to celebrate with TGIF- Thank God It’s Almost Friday- with different teams sponsoring themes, most recently the audio team coordinated karaoke. [...]
And those are just the designated days—everyday, employees can head into Game Room, converted from the Port Authority’s old loading dock, to play ping pong, Air Guitar, foosball, and pool or enjoy a relaxing massage in a chair."
If that's really the situation there..... *jealousy* :)

Managing your tasks

Using so-called "task-lists" or "todo-lists" for keeping track of the things one has to do, becomes more and more popular. Many Google Calendar users for instance request for such a feature to be implemented directly inside it. Till now the Google Calendar team did not react to this requests at all, however according to this article there are pieces of code inside the Calendar script that indicate a possible implementation of such a feature.
I personally must admit that I like todo lists too. They are useful, especially when organizing my little programming projects, since you can break down your work and - if you manage the list properly - you won't forget or miss anything. The problem is to find the appropriate software that matches ones needs. I'm in search more for todo-tools that go in the direction of project management. There are a lot of professional tools (MS Project,...), however mostly they are too detailed for little home-made software projects. There is a lot of stuff available on the web (also Open source projects), but many of them are complicated to configure or to work with them. At first in my eyes such applications must find a balance between the amount of implemented features that make up the "completeness" of such an application and the easiness of usage.
The features that make a task-managing application useful are things like sharing or collaboration (both could be solved via a web-based apps), prioritization, assignment of categories (bugs, improvement,...) etc. Voo2doo is an example of such a web-based todo-list that includes many of the before listed features. I currently use it for my Code Notebook project and it works fine. The advantage that it clearly has is that it is web-based and in this way accessible from everywhere and so also easy to publish on a website. Beside Voo2doo I tried out also Google's Project hosting service. If you want to create an open source project this is for sure beside Sourceforge one of the best solutions, since you have everything in one place, from a project homepage, download area and wiki to a separate svn repository. And there they actually have included some kind of task or todo-list. It is an issue tracking system which is not only for developers of the project, but is thought also as a place where users can add feedback or bug-reports. It is fully customizable and prepared text templates help users to report bugs such that they are better understandable for the developers.
However what I'm currently using is a desktop-application called "ToDo list". I use it since a couple of days now and have not explored all of its features yet, but it seems to be great. It includes the basic features like ordering for categories, assigning priorities etc..but also more advanced features such as time-tracking, assigning of costs, breaking down task into several subtasks and so on. It really seems to be complete in the sense of features and easy to use at the same time. It is worth to give it a try.

Smiley-support for blog-entries

I like it to add smileys to my posts, since I find they make it much more personally. On my old homepage I put smileys by simply inserting the according IMG HTML tag and

function getElementsByClassName(class_name){
var all_obj,ret_obj=new Array(),j=0,teststr;
if(document.all)all_obj=document.all;
else if(document.getElementsByTagName && !document.all)all_obj=document.getElementsByTagName("*");
for(i=0;i<all_obj.length;i++){
if(all_obj[i].className.indexOf(class_name)!=-1){
teststr=","+all_obj[i].className.split(" ").join(",")+",";
if(teststr.indexOf(","+class_name+",")!=-1){
ret_obj[j]=all_obj[i];
j++;
}
}
}
return ret_obj;
}

Having understood these things, the script itself is no more difficult. The logic of the script is basically to search in the regions with a certain classname for the socalled "smiley patterns" and to replace them with the according IMG HTML code. So a first version of the script could look as follows:
<script type="text/javascript">
//<![CDATA[
function createSmilies(){
var post = getElementsByClassName("post-body");
post.innerHTML = post.innerHTML.replace(/\s:\)/, ' <img src="http://i158.photobucket.com/albums/t90/kito85/smilies/smile.gif" class="smilie"/> ');
}

function getElementsByClassName(class_name){
var all_obj,ret_obj=new Array(),j=0,teststr;
if(document.all)all_obj=document.all;
else if(document.getElementsByTagName && !document.all)all_obj=document.getElementsByTagName("*");
for(i=0;i<all_obj.length;i++){
if(all_obj[i].className.indexOf(class_name)!=-1){
teststr=","+all_obj[i].className.split(" ").join(",")+",";
if(teststr.indexOf(","+class_name+",")!=-1){
ret_obj[j]=all_obj[i];
j++;
}
}
}
return ret_obj;
}
//]]>
</script>

To access the HTML code of the region, the property innerHTML is used. The replace() function takes two parameters. The first one is a regular expression and the second parameter is the string which replaces the string in the html-code that matches the regular expression. The problem with the above version of the script is that it doesn't take into consideration the possibility that there may be several regions that have the same classname associated. Therefore the code has to be changed as follows:
<script type="text/javascript">
//<![CDATA[
function createSmilies(){
var post = getElementsByClassName("post-body");
for(var i=0;i<post.length;i++){
post[i].innerHTML = post[i].innerHTML.replace(/\s:\)/, ' <img src="http://www2.blogger.com/..." class="smilie" /> ');
...
}
}

function getElementsByClassName(class_name){
...
}
//]]>
</script>

In this way the code iterates over all regions with the given classname.

Usage
You can download a working sample here and modify it according to your needs.
Tip: You have to host your smiley images somewhere. I currently host it on Photobucket. If you have a Google account you may also think to put them on your Google Page.

GMail Mail Fetcher available!

I personally use Gmail very intensively. This is not only because of its big storage capacity of (2,800 MB and growing) since now also other mail providers offer such amounts or even bigger ones, but mainly because of its intelligent way of organizing mails, because of the great handling of spams and especially for its fast response time due to its Ajax roots. At home I have only an ISDN connection to the internet which makes it very annoying when you have to wait till Hotmail loads all the graphics stuff till it finally lets you read your mails.

Already for a longer time there exists the feature of sending mails from inside Gmail using for instance your Yahoo! or Hotmail address.
So I was used to forward emails from my other accounts directly to Gmail since it is simply easier to handle and keep track of all the mails there. The problem with forwarding is that your address of the forwarded account is shown as sender and not the real person that sent you the mail. So I stopped forwarding...
Already at that time the idea of a POP3 fetcher inside Gmail came me in mind and I spontaneously send a feature suggestion to the Gmail team on their predefined website.
Probably due to requests also from many other users, some month later I found an entry of such a feature in the Gmail Help, however it was available only for a limited amount of users. Today I tried it out and I can ensure that it works for Italy now :D . You just have to go to your Settings (inside Gmail) and then open the tab "Accounts". If you see there the section "Get mail from other accounts", then you can access the feature.

According to a post entry to this blog GMail should now also be available to the public in Middle East and Africa, Brazil, Australia, Russia and Japan. I personally didn't try it out now, but someone at Google must have released the notice of going public to early...
1st Screenshot


some days later...

Seeing my work in action

Yesterday after moving my old website to this blogger account, I surfed on the Internet without searching anything specifc. But then I discovered the website of Study-board which is actually using an old Google Map script I wrote half a year ago. At that time I wrote the script basically to play a little around with the Google Maps API, mainly because of curiosity of how the API works.
In the meantime I successfully finished a project for the Internet Technologies II course at the University which was havily based on the Google Map API and therefore - as soon as time allows me - I'm thinking of extending my inital old Google Map script. This came me in mind also because I saw that my script is not really that suitable for the way it is used on the Study-board website. The script, but more specifically the actual layout of producing the output of the XML file was mainly designed for a few entries. The problem is that Study-board uses the script for showing all their members, and therefore, the current way the script produces its output causes the website to extremely enlarge in height just to show all the cities contained in the XML file.
However, as soon as I will modify the script, I will post the result here on this blog with a detailed explanation.

Take your notes with Evernote!


EverNote is a tool that lets you manage notes created on your computer. You can create different types of notes, from basic text-notes, handwritten ink-notes to several types of to-do and shopping. It also includes an extension for Firefox and Internet Explorer to directly and notes from there or to save a complete website.

Another thing that is supported is source code pasting. So in some sense it is similar to my Code Notebook.
The difference is that I considered Code Notebook (as also the name says) explicitly as a source-code storing unit. Storing source-codes in EverNote is simply based on formatting. A simple text-node template is created with a special formatting such as using the Courier New as source-code font.

Anyway there are nice features I could implement in Code Notebook. Currently I am thinking to
put some kind of Todo-list, bookmarking and maybe an option to store not only source-codes but to store other notes where one would have
better formatting options.

Moving to a new home...

The step is done... :)

After Blogger left its beta phase, I entertained the idea of moving my current webpage hosted at lycos to a blogger account. This came me in mind also because for half a year now I mainly use my page as a blog. The problem is that the page is completely static with the exception of some JavaScript which runs on it. "Posting" means manually editing the HTML code and for letting readers subscribe to it, I wrote a little Java application, that creates a rss-file out of my posts by parsing HTML code. All in all a fairly complicated process. But on the other side you are very flexible since you can add pages and remove them as you like...

Therefore - also because I finally got some free days after finishing the exams at the university - I started to move the layout of my (old) my page to my new created Blogger-account and I must say that I managed quite well. Clearly there are still some delicacies which I will have to change, but I'm quite satisfied with the appearence of the blog and also with the functionalities of Blogger.

To not completely give up my old page, this blog here is tightly linked with it...So for instance I still have the download section, or the "my progs" section and of course my projects there. I also put all the old posts in some kind of archive which you find here.