Pages

Thursday, October 30, 2008

Team Foundation Best Practices

An issue came up at work setting up the new Team Foundation structure. Now we are looking at best practices on how to set up the project structure.

An article on continuous integration has a couple of useful advice. There is the TFS Guide available on Codeplex. Martin Fowler's has an article on Continuous Integration available here.
 

The conclusion for Team Project structure is to use one Team Project for all the related projects. Otherwise, there are issues with build scripts, workspace mappings, etc.

JavaScript Menu

Simple JavaScript DropDown Menu with timeout effect v2.0 « Scripts and Tricks « JavaScript DHTML Tutorials

I implemented the JavaScript menu from this page on my Finance Pages. Since countries started piling up, I moved them under a separate menu.

The only drawback of this option is that the menu has to be left-aligned with float:left. That way the drop-down menu can appear at the right spot. Otherwise, if the menu is centered, the drop-down appears at the far left and looks ridiculous.

I removed most of the (unnecessary) formatting from the related style sheets because I had the styling taken care of already. All I needed was the JavaScript and the mechanism of displaying the drop-down sub menu.

Wednesday, October 29, 2008

Mesh Bug/Feature - Web Folders

Alright, I'm on the track to figure out what is going on when a folder is converted to web site using Microsoft Expression Web and the option "Manage the web site using hidden metadata files" in site settings is turned on.
Apart from creating _wti subfolders and desktop.ini within the web site, the folder / web site also gets attribute S (system) and attribute A (archive) is removed.
I used to think that _wti or desktop.ini have some role in the same folder disappearing from mesh shared folder. Now I'm more likely to think it is the attribute of the folder that is the key. I have manually removed the S attribute and restored A attribute (not that the last one should matter). The folder remains visible in Mesh. The desktop.ini and _wti subfolders are not replicated, which is good because I don't need them replicated anyway. The _wti folders are hidden and I believe this is the reason they do not appear on Mesh.
The files get synchronized alright.

So, removing S attribute from a folder, after setting it as a web folder in Expression Web, makes it visible in Mesh again!
Now I finally can share all the web folders under one mesh folder.

Appspot.com Hosting - Finance Site

I've created another application at appspot.com. Actually, it is not a typical application but a web site. The only thing that needs to be set up are app.yaml and the main .py file for the site.
In the app.yaml I use the following handlers:

- url: /(.*\.(html|htm|css|jgp|gif|png))
  static_files: static/\1
  upload: static/(.*\.(html|htm|css|jgp|gif|png))
 
- url: /.*
  script: alensfinance.py

This allows all the static files to be stored in the /static sub folder but appear as if they are in the root to the visitor. For example, the following link - http://alensfinance.appspot.com/aus_stockmarket.htm - appears to be in the root of the alensfinance.appspot.com site but it is actually placed in the /static folder. So the static folder contains everything an ordinary root for the site would.
The physical root folder contains alensfinance.py file which simply handles the http://alensfinance.appspot.com URL and redirects it to the index.html in the static folder. Simple and effective.

The problem now is that Mesh has a bug which prevents the web sites stored in subfolders of a Mesh folder to be replicated. :S

Tuesday, October 28, 2008

110MB Sites down

This morning I was checking the charts online and my sites at 110mb simply disappeared. Later I checked and nothing changed. Could not even log in to the control panel for the sites.
This was something new after years of getting used to 100% uptime with Google hosting. I did expect some downtime but, still, this was a bit of a shock. Makes me wonder if it is worth it to switch hosting providers.

Thursday, October 23, 2008

Debug Stored Procedures with Visual Studio

How to debug stored procedures in Visual Studio .NET

Stored procedures on SQL Server can be debugged with Visual Studio. Simply find a stored procedure in Server Explorer and select either Run Stored Procedure or Step Into Stored Procedure option on right-click.

Tuesday, October 21, 2008

Submit your site to web search engines

If you want your web site to be indexed by main search engines, submit it at the following URLs:

Google search

Yahoo search

Redirect from old to a new web site

There are several ways to handle this issue, generally.

First is permanent redirect. It is achieved by adding the line

Redirect 301 http://<newwebsiteurl>.com

to .htaccess file in the root folder of the web site. The web server will automatically redirect all requests to the new location properly. If one requests a certain page from the old site the web server will redirect to the same location in the new web site. This works great if you are simply moving the whole site and keeping the structure in place. But, this will not work with Googlepages.

Second approach is client-side redirect, using Meta tag. Using this tag you can redirect to a new location and specify the time after which redirection occurs. Example:
<meta http-equiv="refresh" content="5;url=http://newwebsite.com"> 

This will redirect client browser to the new web site after 5 seconds. Placing 0 instead of 5 will redirect immediately. One of the drawbacks of this method is that search engines will still keep the links to the old web site.  This tag has to be placed into <head> tag of the page, which is not accessible with Googlepages templates.


This issue can be worked around by adding the new URL to search engines.


Redirect pages at the old site can also contain a hard-coded link to the new site/pages so that the new links get indexed by search engines and that the users can reach the link manually in case their browser does not support meta redirect (refresh) tag.




Another way is to use JavaScript to redirect to another page. Placing the following code will work with browsers that support JavaScript. This option would probably have no effect on search engines but is the only one that works with pages on Googlepages.


Moving Site from Googlepages to a New Hosting Provider

I'm doing an experiment in moving a web site from Googlepages to another hosting provider. There are different issues coming up during process. Here I will write down the problems encountered and provide some solutions I come up with.
 
One of the first issues to appear is how to redirect old links and search engines to index that new site instead of the old one.
The approaches and solutions are covered in a separate post.
 
Another issue is how to deploy the new web site. FTP protocol gets blocked at certain locations which makes it difficult to deploy the changes to the web site. Googlepages offers (only) web access to files. That means the access is always available through a web browser. This is its drawback at the same time if you have FTP protocol enabled.
Fortunately, most providers nowadays offer some sort of HTTP access to files on the server. That means no automatic synchronization of files but you have to deploy each changed file manually.
Host “110mb” allows a nice feature where all the changed files can be uploaded as a zip file and then this zip file can be uncompressed on the server, effectively deploying all the changed files at once. This option also overwrites existing files as opposed to manually uploading single files, having to delete previous version before upload. Neat!
 
 

Monday, October 20, 2008

XML Tools for Visual Studio 2008

Some XML tools have been added with the SP1 for Visual Studio 2008 and dotNet Framework 3.5. Visual designer took a step back, though.

So, here are some free XML tools available as a Community Edition of Liquid XML Studio 2008: download here.

Liquid XML Studio is a fully featured graphical development environment for XML Schema (XSD) and XML documents.

Graphical XML Schema (XSD) Editor
Plug-In for Microsoft Visual Studio 2005 & 2008

XML Editor, XML Validation, XML Formatting
Infer XSD From XML

Generate HTML Docs From XSD
Generate Sample XML From XSD

XPath Expression Builder
Web Service Browser & Method Invocation

To see the differences between the Community and the paid edition click here.

XML Validator

XML Schema Validator

Here is a practical online XML schema/document validator. It contains two text boxes. One accepts the XML document content and the other XSD schema content. Clicking a button will validate the XML against XSD schema and tell you if the validation is successful. If not, it will display the error stating what is wrong with the document.
Very useful tool.

Saturday, October 18, 2008

110mb Web Hosting

Alen Siljak's Homepage

I have just copied my web site to 110MB web hosting provider. This is a free hosting provider with good reviews. Offers 5GB of web space, 300GB of monthly traffic. They do not place ads on your web site and do not prevent you from placing your own.
Your site gets a subdomain of 110.com domain. Available access is via FTP (the easiest option for site upload) and web. Web access is even easier than the one offered on Googlepages.

In order to test this hosting provider, I have posted a request for publishing to Project Wonderful. Some free hosting providers are not allowed as publishers there. To find out what those are is a bit of a pain at the moment.

Friday, October 17, 2008

Use Single Keyboard and Mouse for Multiple Computers

Business Spectator - WEEKEND READ: PC essentials
Synergy

This app has one narrow purpose: It lets you control multiple computers with a single keyboard and mouse. Say you occasionally run your laptop next to your desktop—move your mouse to the edge of your desktop screen, and suddenly the pointer shows up on your laptop screen. It's like magic—especially since it works between platforms (you can move your mouse from your Mac to your PC).

Here's a software I'd like to have linked here so I can find it in that awkward moment a need arises for such a thing. This is one of those life savers that one doesn't care about until one needs them. Use the same keyboard and mouse for multiple computers. Very neat if you use them. Totally useless if not. But, sooner or later, such situations occur.

Thursday, October 16, 2008

BlogThis for Firefox 3.0

Blog This for Firefox 3.0 « whateverblog.

Windows Live Writer has a plugin that adds a context menu option to create a blog post using Writer and pass the current page title and selected text (usually) from Firefox. Nice feature if you need to post a link to the page you are viewing.

At the link above are the instructions on how to make BlogThis plugin to work with (latest) Firefox 3.0 beta. As usual, it is just necessary to update the max. supported version in the install.rdf file.

PortableApps - Application Virtualisation

PortableApps.com - Portable software for USB drives

Another interesting project in the world of virtualisation. These apps were compiled so that they run from a single folder and therefore can be moved around on a flash drive, for example. The application list is limited but includes a few necessary applications.

This is one of the approaches to the problem of having too many computers around. :)

Wednesday, October 15, 2008

Windows Live Writer

Alright, I've downloaded and installed Windows Live Writer. It seems a nice application. The first con I'm noticing is that I can't find a way to edit previous posts.

The other functionality is very attractive. Web preview and blog styles allow you to see how the post will look like when posted to the blog. Blog's visual style is downloaded to your computer so blog posts can be previewed while being written.

It allows to add/set categories and publishing time. I wonder what time this post will get. Usually, when posting from ScribeFire, the post times are received from the server and those are from some U.S. time zone. This often means that I'm having troubles finding earlier posts because, for example, this morning posts (Australian time) are posted with yesterday night's date and time.
Writer has a handy option to set the post time to current time at the computer used for posting. But, this still gets translated into server time. Well, at least its consistent. :)

There appear to be many plugins. Some come installed with the application. These are basic ones, like Insert Picture, Insert Table, etc. Very practical. There are many more at the plugins site.

Anyway, I installed this application for offline editing and posting. Editing, so far, seems hard if not impossible. I have to go through the options once again.
And, to test the offline functionality, I will publish this post and see how the offline functionality works for the posts published through Writer itself.

***

Post published through Writer show up in the list of Recently Posted items. Still, this is only a list with titles. When selected, the post will be retrieved from the web, not from an offline cache.
There are also drafts, so that posts do not have to be published immediately but saved for publishing later.

And, yes, editing older posts works well. Now, I'd like to see how I can edit all the posts in the blog. Also, working with comments would be nice but that might be something more appropriate for a blog reader.

Well, after going through the options, I'm very pleased with the capabilities of the software. Older posts are available through standard File->Open operation. The posts are retrieved from the blog and the number of last post titles to retrieve can be set up to 500. Opening "Recent Posts" allows retrieving any item (All). This means if Writer is used for posting, all the posts should be retrievable for editing. Too bad an individual post can not be open by providing a URL or in some other way.
Nonetheless, the ability to edit older posts works well for simulating web pages because edits replace number of new posts. I actually prefer this option.

Well, so far, I very much prefer Writer to other posting solutions. The drawback might be only if I'm posting while away from my computer. But that should not be a problem. Still need to see where the settings are kept and if they can be synchronized. Not that it is important, though.

Tuesday, October 14, 2008

Offline Blog Content

Searching for a tool that can store blog content offline results in some interesting findings.

Microsoft has Windows Live Writer, a free tool for post generation offline. Web page here, and additional plugins here.

Writer zone page, link to beta version.
 
Here is a Blog This add-on for Firefox. The add-on opens Writer for publishing a blog post with the URL and other details from the page being viewed in the browser. The template is fully customizable. The plugin does not work with Firefox 3 yet.
 
Codeplex hosts a project that contains the plugins for Writer.

Moving Site to Blog 2

Playing with moving site content to a blog format. Some useful finding and insights come up during the process. These were hard to imagine until one actually faces their results.

I also just tried Google Sites. It is an interesting project. The solution could work for many small web sites. It provides a framework for many standardized web items. Similar to blog functionality. I assume the online content will soon become something in between blogs, wikis, file storage, collaboration, etc. Just like the Sites is doing. What I'm missing there is some more customization.
So, the following are the issues I met so far, after only 15 minutes of trying to migrate content from a web page to a blog format.

No Offline Storage

One of the reasons I created certain web sites was to keep the content on my computer and have it searchable. That way the posted content was available offline as well as online. Most of the initial stuff posted on the web was there for my own need. First, I created some text content for what I needed at the time or to keep for reference. Then I posted that online so that it is available for others or for me when away from my computer.
With blog format all the content becomes online-only. I'm yet to find a way to store those posts offline. ScribeFire or some other tool may help in that regard. ScribeFire does not appear to offer similar functionality so I may look for other blog posting software that would automatically keep a copy of all the posts offline, as well.

Navigation

This is a bit painful if the site is to have any kind of hierarchy or structure. Also, the look and feel of navigation buttons, or other forms of links, is very limited. Lack of CSS linking can't be made up by inline CSS. I'd love to have standardized links just like there is on my Finance Site (http://alensfinance.googlepages.com/).


Moving Content from Site to Blog?

I'm starting to wonder if moving all, or most, of my content from web site(s) to a blog would work. The step is not as easy as it seems.
The question requires analysis and direct comparison between positive and negative sides of either type of content hosting and presentation. I'll try to list, ad hoc, the advantages and disadvantages of both and compare them.
I'm interested in your comments, too.

One of the main reasons I would use blog over a typical web site is search. Blogs tend to be searched much more frequently than a typical web site. Also, moving web site around does not help in that regard. An important thing to note is that the web site is hosted at a free host. Some of the drawbacks come from that fact alone. There is no active content. In fact, with Google offering Appspot active hosting with Python, that element does not weigh so much today but I haven't had the time to use Python on the web site yet.

Another important point is that I love Project Wonderful. I love the idea behind it and find it fair for both advertisers and publishers. It is similar to Entrecard, another very nice concept. But, PW does not work well with free-hosted sites. That may change in the future but right now it doesn't.

So, against these two main reasons I'm trying to list advantages of a web site built with HTML, JavaScript, and CSS. Here are some of the initial thoughts:
- navigational links
- formatting
- standardized links, templates
- ?
Hm, I can't really add much more to it. And, all of the "advantages" are not really holding true.

Navigational Links

Navigational links, meaning that every page has its URL and is easily converted to bookmarks and saved on desktops or linked from other web sites and/or locations, works well for blogs, too. It is exactly the same or even better with blog posts. Plus, they get sorted by different elements - by posting date/time and tags.
In addition to that, blog posts allow comments as a direct way of communicating with the audience. Something I always missed on my html pages until recently, when I built a contact form using Python. That solution is not transparent in a way that the comments from readers are not visible to others. These can be extremely useful sometimes. I receive some very good comments on the topics I write about and people come with interesting ideas, views, solutions, links... Hm... I'm on the blog for this one.

Formatting

Formatting using CSS and having the whole page as a canvas is attractive. HTML pages can be customized with CSS, JavaScript, Java applets, Flash, embedded objects like music or video, etc. This can work well sometimes but also can be disastruous. Most of these can be embedded or adder to a blog post, anyway. So, unless there is some form of artistic expression, I'd say blog offers enough freedom for mixing different type of content.
There is CSS involved anyway in the creation of the blog but that links to the next point.

Standardized Links and Templates

By "standardized links" I mean links to pages, that appear on groups of pages. It can be achieved using templates and adding certain link elements to the template. Then it appears on all the pages built on this template. This can not easily be achieved with a blog.
I worked with so many different topics and my web site contains lots of different pages. I used different CSS styles for them to make them distinct from others. Also, the content was assembled over the years and styles changed, got updated, new ones were used for new things, etc. Just as it happens in real life.
So, templates would work with blog in case another blog site is started for each different topic. That's one solution.
Common links among different pages work in a bit different way. Each blog has a template that is used to set the look and feel of the blog site. All those template nowadays include different main sections displayed on the page. These sections can include link section as a pure HTML block and then this block can be set to contain links to some standardized posts/pages that lead further. This approach works well with setting a new blog site for each topic. In that way every site could have standardized links.

Updates

Another, quite important, issue is updating the content. Until recently, I was not even aware that blog post edits were so useful. I was aware of the feature but it was not readily available with the tools I was using to post and so I used it only rarely. Then I had to go to the blog site, find the post, select editing, fix the post and update it. But now, with an add-on for Firefox - ScribeFire, editing of previous posts gets incredibly easier. This tool shows the posts on the blog and allows easy editing of the posts. This puts blog posts at the same level to standard web sites. I'd say that updating content was the major advantage for HTML web sites. Obviously, not any more. It is such an insignificant issue now that both approacehes have this option. I got so used to editing posts that I even forgot to list the issue previously.

Active Content

Here I mean an engine behind the pages. Server processing, dynamically generated content, etc. Example would be ASP.Net, Python, PHP, and other server-side scripting/programming languages. Google offers free Python hosting and there are other providers offering other types of "active" hosting. This is something that is not readily available on a blog site. But, there might be workarounds. The workarounds depend on what is required for the dynamically generated content. The only real need I had before was the contact form and that is already handled by blog sites very well. Other content can be linked into posts, as stated previously, so the question remains on what the real usage would be for dynamic content. I assume, if there is a need for a dynamically generated content, these pages can be linked from the blog and kept at a separate, active hosted site. This question remains open while I find some real usage for active content. I mean, of course Facebook applications would not be built as blog sites. But it is hard for me to find other usage for active content. This is a consequence of using free hosting over years and getting burned whenever some site-specific features were used. I've changed so many different hosting environments, offering different abilities, different versions of PHP, different sets of options available that I gave up on most of those and kept it simple and clean with only the client-side scripting, if needed, and keeping even that to a minimum. HTML and CSS are still the core of my web pages. And these are beautifully handled by blog engines in a very simple and effective manner, eliminating the whole hosting and posting mess with ordinary web sites. With blogs, author can focus on content only.
Come to think of it, most of my content would be more appropriate to blog format that to web pages as I have them now. Especially the whole development section. That stuff gets outdated so quickly. There are new things emerging all the time. The whole content part gets rearranged over time that its cumbersome to maintain it as a web site. This is the very reason I very rarely update that portion of the web site these days. I prefer to post stuff to my IT blog and have it there, easily searchable, than to update my IT section of the web site.
What I could do is, maybe, to link different blog posts to a summary web page, that can be used as kind of Table of Contents or Index.

So, let me try to summarize these in a table, next to each other...



 Web SiteBlog
Project WonderfulDoesn't work
Works
EntrecardDoesn't workWorks

Search
custom providersWorks
Active
Content
availablen/a, maybe

Navigational Links (URL)
WorksWorks

Formatting (CSS)
Works part of template;
inline?
Common Links (site index)Works
workaround
Site TemplatesWorksWorks, predefined by provider
Content Update
Works
Works


Conclusion?

I don't see too many reasons to continue to use web site as opposed to blogs. Especially since Google discontinued the Pages project and is pushing with the Sites project. I still haven't migrated but, when the time comes, that might be a reason to move some web sites to a blog format instead of keeping them as web sites.
Another issue that prevents me from migrating right away is the shear amount of work required to move all the content to a new format. But, after listing the arguments pro and contra, I might pick one of the sites and start migrating the content slowly. I'm in no hurry. It could be an interesting project.

Saturday, October 11, 2008

YouTube in Stereo

YouTube - Dean Shredders Search Contest - Muris Varajic

A friend sent me the link to his guitar piece on YouTube.

http://au.youtube.com/watch?v=-3PqhuiGIZo
or http://au.youtube.com/watch?v=-DNfG5QBmm0

and, by adding &fmt=18 at the end, it calls the better quality version. The sound is stereo and the difference for the above pieces is astonishing.

Try

http://au.youtube.com/watch?v=-3PqhuiGIZo&fmt=18

or http://au.youtube.com/watch?v=-DNfG5QBmm0&fmt=18


Wednesday, October 08, 2008

Change Default Sound Card

A friend asked how to enable the new sound card in bios?! That sounded weird at first. Today, modern BIOSes have enough IRQs to accommodate all devices and, besides, most of the devices are integrated and there's no need to even go into BIOS.
It turns out that Windows did recognize the card. So, clearly no need to go into BIOS. It should be enough to change the default sound card that Windows uses. This is done in Windows XP by going to Control Panel -> Sound and Audio Options and selecting the sound card one wishes to be the default.
Besides this, at the link below there are a couple of programs that make this whole process easier. I haven't tried them but they appear pretty straightforward.

Easily Change or Switch the Default Audio Sound Output in Windows Vista and XP: Humsurfer - PaisaSurfer

Firefox Ultimate Optimizer

felipEx Weblog — Firefox Ultimate Optimizer v1.1

One of those things that makes you wonder how could you live without it. This program reduces Firefox's memory consumption to minimum. We all know how Firefox often can hog hundreds of Megabytes of RAM during usage. The Optimizer slashes that to less than 1MB.

The downside I've found of using it is that it keeps CPU activity at 2-3%. So, it is possible to start the program occasionally to lower Firefox RAM usage and then quit.

Sunday, October 05, 2008

The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.

I get the following error in Firefox 3.0.3 when trying to access Bloomberg.com

"The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression."

Clearing cache and cookies solves the problem! (Tools -> Clear Private Data; it is enough to select only cache and cookies)

Saturday, October 04, 2008

Serialize/Deserialize into a Session

C# & ASP.Net: Serialize/Deserialize objects

Here is a link to a page providing a sample code on how to serialize and deserialize an object into a string. I'm running into a situation where I need to store an object in a session and then continue using it at a later stage. The above code is clean and simple example on how to do most of it.

Model-View-Controller in ASP.Net

Implementing Model-View-Controller in ASP.NET

When I played with Python and Google App server it was apparent that the web and software development is moving in a direction where the software system are built on Model-View-Controller (MVC) pattern.
Recently after that I received a newsletter from Microsoft with a link to the MVC software development kit that makes it easier to use this pattern with ASP.Net.
My conclusion is that this pattern might become standard pretty soon and that probably in the next version of the .Net Framework and/or Visual Studio this would be the preferred way of building web applications.

Friday, October 03, 2008

Vista ReadyBoost & SuperFetch

Another one of those funny-sounding technologies that use a quite new concept and promise this and that. Well, to find out if they really work sometimes is enough just to browse the net and read the reviews.
From what I could find it seems that ReadyBoost is not really an option since the system already has 3GB of RAM.
This exercise went well and just saved me $40 on a new flash drive that I might have used to test ReadyBoost (and find it didn't have any visible effects on the system).

There is also another technology - SuperFetch. There is an interesting review on Tom's Hardware, explaining some background technologies, like caching, memory usage, etc. SuperFetch apparently works better than in pre-caching in WindowsXP. ReadyBoost is actually used as a cache storage for SuperFetch. This draws a conclusion that the improvements in performance are to be felt with commonly used programs. All the tests that just run common speed/throughput tests on a system would not see any performance improvement as SuperFetch had not had the time to analyze application usage during the test runs.
The real difference comes from separating the system drive, containing the swap file, and data files. These data files get cached in the flash drive, using ReadyBoost.
Test results mimicking standard computer usage, and not running any standardized performance tests, show there is significant improvement. But, on older systems, that were under stress by just installing Vista, anyway. On systems with 1GB of RAM or more, the results are not that dramatic. In practical terms, almost non-existent.

So, the conclusion? All these technologies are nice to have, of course. Stick to the specifications and use new operating systems on new hardware. Give them the recommended configuration or more and don't expect miracles. :)

Thursday, October 02, 2008

Free Streaming/Virtualization Product

Application Jukebox Lite Edition - Application Jukebox Lite Edition

Here's one free solution for application streaming or virtualization. I'm starting to look for such a solution that I could use to access not only data but applications from another computer.
Together with some tunneling solution, such as Hamachi, this would be a nice thing to have. Then it all comes down to infrastructure. All such applications would necessarily require more capacity from existing networks.

Wednesday, October 01, 2008

Free Home Design Software

Sweet Home 3D
Artifice DesignWorkshop Lite

Here's some free 3D home design software.

List  of free software and online home design tools.

Search for Song by Singing or Humming It

Search for Music Using Your Voice by Singing or Humming, View Music Videos, Join Fan Clubs, Share with Friends, Be Discovered and Much More For Free! - midomi.com

Here is a search engine that searches for songs based on the tune you hum or sing to it. I've been wondering about such a thing for a long time.
The negative side is that I already found the songs I wanted to find. :)