vrijdag, februari 23, 2007

 

First Second Life experience

TIP: If you want to be hip these months, throw in the words 'second life' in your conversations. Adidas sells virtual shoes on SL. Last week my company IBM hosted one of the largest events ever on their island, the Global Innovation meeting. This week a major radio station Q Music organises its first Q parties in Second Life, including avatars of all major DJs. As a result Second Life is all over the radio all of the time and new Belgian SL accounts are booming. Many people I talk to don't want a second life because they lack the time to live their first live properly. A newspaper article two weeks ago mentions that like in real life, SL is all about sex and money. You even need to buy genitals to have sex in SL :-)

So I had to give it a try. (Not the genitals, the general SL experience)
In this post I'll tell you about my first experiences. In a later post I'll cover some pro/cons on usage of virtual worlds such as Second Life for educational purposes.
Your first SL encounter should take you about 4 hours.

How to get started?

1. Go to www.secondlife.com and register. Your first account is free. You can select your SL first name, but your last names comes from a predefined list. Take some time to select a good name because it is your unique identifier in your Second Life and cannot be changed. Select some basic characteristics of your avatar such as male/female and basic body shape. Don't spend too much time on this now, you can change everything later. For the free account, don't give our your paypal or VISA details. You will also be asked for e-mail and other details and you need to agree to Second Life's code of conduct. For example, virtual harrassment or violence is not OK in public places. And you can't discriminate in SL because somebodies bits are old, fat, buggy or blue.

2. On the same site, download the Second Life client program to your machine and run the installation program. You need to have Quicktime installed too because SL sounds and video come via QuickTime technology. To run SL properly you want to have 1 GB of RAM memory and a good graphics card in your computer. If you have a firewall enabled make sure the SL is granted access to the network.

3. Now for your first almost-second-life experience: launch the SL client on your computer, and log on. All first time users are automatically 'teleported' to Orientation Island. This is not Second Life yet. Your avatar will be visible (sometimes first naked, but your clothes come on in seconds, don't worry) between 4 gates where you will learn basic SL skills such as communication, moving around (including flying lessons!), changing your appearance, paying, etc. Use the up and down arrow keys to move around and find out how to use the SL program. Follow the signs. When you are done you can click a board to go the another island: help island.

4. After Orientation Island, you are teleported to another almost-second-life place: Help Island. Move around and learn. Be sure to visit the store where you can get all things for free! I got me a free house (but no land because that costs), tshirt and salsa moves :-) .

5. When you are ready to move to the real Second Life, follow the link (green beamer) on Help Island to teleport you to Second Life. Have fun. You might go to Time Square. I did. It was deserted.

After the orientation I explored the IBM islands. IBM has created 4 public islands that are all one after another. The Almaden island is public, so teleport there. They have a great orientation section as well that repeats some of the stuff in the general orientation, but also extra information such as how to sit, take and move objects, view yourself from another camera angle and talk on different channels. After that I took the train for a tour of the IBM islands. Somehow I managed to fall of the train :-). The picture shows my virtual me (Bert Handrick) at the LotusSphere conference building where the first virtual LotusSphere conference was held last january together with the real one in Orlando. (If I had a choice I'd prefer Orlando in my first life anyway :-) )

That wraps up my first encounters on Second Life. As in first life I don't like driving around so luckily one can fly in SL :-).
I regret there is no sound in Second Life, all chatting is through typing. When you are typing, so is your avatar, which is a funny sight.
You will often be alone in Second Life, because it is a big place with only 20000 people in the world simultaneously. So as in FL, you need to find out where to go when. And you probably need some Linden Dollars (the Second Life currency) too.

Labels: ,


zaterdag, februari 10, 2007

 

Curriki - a wiki for education

The most popular wiki is ofcourse wikipedia. I stumbled upon another wiki for educational content: curriki.com . There is not much content yet, but it is a good initiative. It is not the first project trying to share teaching content. I'm wondering if it will work. I don't know why but there is something going wrong with the whole content sharing for learning. It doesn't seem to happen. As always many takers, few to no givers. Why does everyone keep sitting on their lessons? Is making learning content something to personal to share? Is it something you only want to share with your direct colleagues and not with the world? Do teachers fear the reactions of their peers? Is it too much trouble to share? Is it more trouble than it is worth? Please teachers of this world, enlighten me...

Labels:


 

ASP.NET: Multilingual site

I've been going back and forth on whether I want to build a multilingual site. It is just so much more work. In the end, I decided to make the complete site capable of handling multiple languages. It will make a better, more accessible project on one hand, but take a lot more time on the other hand to complete it.
My reasoning is that especially anything that touches learning should be as close as possible to the learner, and preferably in his or her own language. One of the barriers to e-learning today is still the lack of non-English content for many topics.

DECISION: about2findout.com will be capable of handling multiple languages. During the beta, I will develop for English and Dutch only. Later on other languages might or might not be added, but at least the project will never have to be rewritten to support other languages in the future.




So how did I do it? First, start with a video tutorial here. Then read this article.

Q: What are locales and cultures? What is Culture and UICulture? A: A browser uses a specific notation to identify the language and regional settings to use. For example nl means Dutch, en means English, fr means French. That just identifies the language. That is not enough to localise an application, because some settings such as date format and currency depend also on the specific place. That is called 'locale' and has two extra characters. So nl-BE for example is Dutch in Belgium, en-US is English/United States and fr-FR is French in France. Users can set their language preferences in their browsers (for IE: Internet Options and Languages button). In ASP.NET you can let the application automatically take the language of the browser preference by specifying the globalisation "auto" tab in the web.config file for UICulture and Culture properties. And you can manually overwrite the language settings with the InitialiseCulture method of a page.

The Culture and UICulture settings are stored in the Profile (see one of the previous posts). I also have a language selection menu at the top of the master page, created with a DrowDownExtender control from the Ajax Control Toolkit.

Labels:


vrijdag, februari 09, 2007

 

ASP.NET: Basic security

The internet is a fine place. But of course there is also 'the dark side of the internet'. I am not a security specialist, and I realise my site might be vulnerable to attacks or exploits. But that doesn't mean I can't get the basics right and go for a reasonable level of security. I want to mention some examples used in the footer of each page during the beta. There is a box to add additional comments to each page. The box is accessible both to anonymous users and registered users. I'm taking this approach because I want the site to be as useful as possible without having to log in or register. God knows I hate having to register every time myself. Personally I rarely contribute to sites if I first need to register and/or login. But then I leave the site open to all sorts of spam of course...

There are two things I want to protect: 1) avoid robots or spambots to enter text and 2) avoid people entering harmful text. There are ways to insert javascript, HTML or SQL code in a text box that can be used to get control over the application, or corrupt it.

Security should be enabled both on the client side and on the server side. Client side stuff is mostly to make it more comfortable for the user and prohibit entering faulty information. But it can always be circumvented by someone with the right skills, so you equally need some checks on the server side.

Client side:
The text box uses the FilteredTextBoxExtender from the Ajax Control Toolkit. Only 'safe' characters can be entered. For example the < and &gt or % or @ characters are not allowed and cannot be typed in the box.
Secondly, your text is only submitted if the CAPTCHA control code is the right one. I've blogged about the CAPTCHA control before. The purpose is to ensure only humans can enter text, not machines or bots. I've adapted the rendering of the CAPTCHA control from the codeproject.com site so it also displays in a row.

Server side:
On the server side I'm using the free Anti-Cross Site Scripting Library 1.5 to encode the text so potentially harmful characters are 'neutralised'. You can download the library here. Then you need to add a reference to your project (right-click in solution explorer and select Add Reference) by browsing to the AntiXssLibrary.dll file. To use it to encode potentially harmful input before rendering it to the screen use AntiXss.HtmlEncode or one of the other encoders. There is a good tutorial describing the risks, analysis and usage of the tool on the MSDN site.

Labels:


donderdag, februari 08, 2007

 

ASP.NET: Master Pages

Master pages are a way in ASP.NET 2.0 to have a common design, header and footer for all your pages. It is a nice concept, and very popular amongst 'newbies' such as myself it would seem. Anyway, I created a master page for about2findout.com. The basics on master pages can be seen in this excellent video tutorial.

My master page has methods to visualise the five categories of pages: findout (pink), explain (green), helping hand (yellow) and community (blue). It also has a method to display a warning, informational, error, security or confirmation message. At the bottom of the master page is a section to add comment such as bugs or suggestions to any page. This will be used to capture feedback during the beta testing phase.





Q: How can you access the methods and properties of the master page?
A: If you want the Master property to be available, with IntelliSense, just add a < @MasterType VirtualPath= &gt statement to the .aspx page. Once that is done, use the Master object as you would use any other object.

Q: Can master pages work with AJAX?
A: Sure. Just remember you should have only one ScriptManager object per page. In my case I also needed Ajax on the master page, so that is where I included it. The alternative approach is to have a ScriptManager control on every derived page, but not on the master itself.

Q: How about master pages and translation/localisation?
A: To override the locale (language) settings you should normally override the InitialiseCulture() event of the page. This will not work for a master page as this is technically not a page but a user control. So you need to override the method on the 'real' pages, not on the master. Of course, that is a lot of duplication. So I made a base class that all my pages inherit from.

Labels:


woensdag, februari 07, 2007

 

ASP.NET : Profile

ASP.NET 2.0 has a 'profile' feature. I use it to store user preferences for both anonymous and registered visitors such as language preference and last page visited. Learn more about how to use them here.

Q: What is a profile and how is it used?
A: A profile is a set of values that ASP.NET will automatically store in its membership database. You define the values in the web.config file. If you need it to be available for anonymous users, you also need to add a section "anonymousIdentification". You can use the Profile object on your ASP.NET pages to access the properties, for example Profile.Culture in this case.








Q: How is this different from using the session object?

A: The usage is similar. But anything you store in the Session object is lost when the session is done. Whatever is stored in the Profile object will be remembered next time the user visits your site. So that is the base decision criterium: if you need to remember settings like language, add them to the profile. If it are temporary values stored during one visit, use Session.

Q: Why doesn't the Profile object work anymore with Visual Studio 2005 SP1 'Web Application Project'?
A: I spend a few hours figuring this out. If you will do like in the tutorial video in a new project, you might get compilation errors on the Profile object, and you will notice the IntelliSense on it doesn't work. The reason is that since SP1 there is a new kind of project for web applications. Most tutorials and books will be about the 'Web Site Project'. But some things change when you create the newly available 'Web Application Project'. For one, the Profile object doesn't get generated automatically anymore. Scott Guthrie explains it all in his blog. You can download a free program here, called ASP.NET Web Profile Generator. Install it. Then, in the solution explorer right-click the web.config file and select 'Generate Web Profile'. This will generate a new class WebProfile.cs. Now the Profile object works again. Yes!
I don't know if it is related, but I do get a timeout error on the Profile every time I run my application for the first time after starting Visual Studio 2005. After that it works fine. If that is the only problem, I can live with it.

PS: The App_Code folder also doesn't exist anymore in Web Application Projects. Datasets for example can be stored just as normal classes anywhere.

Labels:


dinsdag, februari 06, 2007

 

Batch image resize tool

During my recent programming, I needed a tool to resize all the 'flag' images I have for language selection. Many tools can resize an image, that is not a problem. But I did not want to open 50 files an manually resize them.

So, if you are ever in the same kind of situation, I can recommend you the free Multiple Image Resizer . NET tool on http://www.multipleimageresizer.net/.

maandag, februari 05, 2007

 

ASP.NET: getting started with Ajax

It's here and it's free. Formely known as 'the Atlas project', Microsoft released the 1.0 version of their free ASP.NET Ajax add-on end of January. All you need to get started is on the ajax.asp.net site. AJAX essentially will allow you to build richer client interfaces for the web. For example, it will allow you to only update a part of a page instead of remaking the whole page for every single click.

Q: What are all those different downloads?
A: There are 3 downloads in total that are important.
Q: How to install the ASP.NET 2.0 Ajax Extensions?
A: Easy. Just download it here, and run the installation program. It will install the extentions on your hard disk (normally in the \Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025 folder). It will also install the extra controls in your Visual Studio 2005 toolbox, if installed. There is a good video on how to install the basic Ajax framework here. The major components are the ScriptManager and the UpdatePanel. You need to place one and only one ScriptManager control on every page you want to have Ajax functionality. And you use an UpdatePanel to mark a part of your page for partial updates. (Only what is in the UpdatePanel gets refreshed, the server doesn't need to waste its time on rebuilding the other parts of the page.)









Q: How to use the Ajax Control Toolkit?
A: There is a nice video describing the process here. You can download the toolkit from Codeplex. That is the place where you'll find the open source projects endorsed by Microsoft. There is a live preview site of all the controls in the toolkit on http://ajax.asp.net/ajaxtoolkit/. The toolkit does not have an installer. It comes as a .zip file, so you'll need to unzip it to your hard drive, for example also under the \Program Files\Microsoft ASP.NET\ folder. You will also need to manually add the controls to Visual Studio 2005. To do so, first make a new section in the toolbar: right-click and select 'Add new tab'. Give it any name, for example Ajax Toolkit. Then click right on that tab and select 'Choose Items...'.

















On the next dialog box, Browse to the \Ajax Toolkit\SampleWebSite\Bin\AjaxControlToolkit.dll file (or where you unzipped it). This will add all the controls to your toolbox.

Q: How do the toolkit controls work?
A: You need to understand they are not controls on their own. They are extenders that add Ajax functionality to existing controls. For example, the TextBoxWaterMarkExtender will add a watermark to a textbox control, such as below. When nothing is typed in the box, your message shows. For most of the controls, there are excellent free videos here. Watch a few and you will get the hang of it. Then start experimenting and be amazed!

Labels: ,


zondag, februari 04, 2007

 

ASP.NET: Multilingual site

I've been going back and forth on whether I want to build a multilingual site. It is just so much more work. In the end, I decided to make the complete site capable of handling multiple languages. It will make a better, more accessible project on one hand, but take a lot more time on the other hand to complete it.
My reasoning is that especially anything that touches learning should be as close as possible to the learner, and preferably in his or her own language. One of the barriers to e-learning today is still the lack of non-English content for many topics.

DECISION: about2findout.com will be capable of handling multiple languages. During the beta, I will develop for English and Dutch only. Later on other languages might or might not be added, but at least the project will never have to be rewritten to support other languages in the future.

Labels:


 

Started programming

It's been longer than usual since I posted to this blog. The reason-slash-excuse is that I've started programming. It's going slower than I expected, and I've decided to take my time to get it right. After all, there are no project timelines, budgets or livehood dependencies involved in about2findout.com.

I'm using ASP.NET as you know, and the recently released Ajax add-on to it. So far the experience with Ajax has been quite good. The ASP.NET 2.0 Ajax Extension are a free download on the ajax.asp.net page and were released on 23th of January. So in the two weekend plus some evenings since, I've only managed to program the master template for the site. Not much, but I need to get the basics right first. It reminded me on the time I was programming the InStap software for Multitaal. I was in Lund (Sweden) at the time as an Erasmus exchange student. During my spare time I programmed and sometimes it would be past midnight before I knew it. Sometimes I would go to sleep thinking about a problem, start up my computer in the morning and finding a fix in just a few minutes. Those were the days :-).

Anyway, I'm not a programmer, nor do I have the ambition to be one. Just want to learn enough to make my project happening and want to do it right. I'm not an expert in GUI design, security, database, etc but I want to have an acceptable solution in all these areas. There has been a glitch along every step of the way so far in my programming experience. The learning curve is steep, but I find great help especially on the asp.net page, the ajax.asp.net page, the code project site and the blog of Scott Guthrie, one of the creators of the .net framework.

In the next posts I will share some of the technical programming experience so far. Some things have costed me a few hours to figure out, so I want to spare you that. :-)

PS: There is nothing new on the site yet, the mockup will stay until I have enough to upload.

Labels: