Sunday, December 07, 2008

The votes are in...

.. And the results are good! Hello Group won the Adobe MAX Award they were nominated for!

The rich internet application MyHome won the award in the "envision" category. Read more about it on Hello's web site: http://www.hellogroup.com/max2008/

Congratulations to the team behind it - nice work :-)

Tuesday, November 25, 2008

Hello Adobe MAX

So stuff is happening. The Adobe MAX tour has started, and some good news has already come from it:

Hello has submitted a project to the Adobe MAX Awards 2008 and it has made it to the finals! The project is called "MyHome" (MinBolig) and has been developed in collaboration with the Danish Electricity Savings Trust (Elsparefonden).
You can vote for it, and make it win. Wouldn't it be cool to have a Danish project win the European Adobe MAX Awards. Vote here:
https://www.adobemaxsubmission.com/viewer/?projectid=96&location=EMEA

Oh, and Hello has already won a MAX Award for Best Enterprise Application, with Nasdaq:
http://max.adobe.com/blog/2008/11/max-awards-2008-nasdaq-market-replay.html

Thursday, October 09, 2008

Exciting new videos

In the last few weeks, a lot of new videos have been posted to Channel9, Microsofts portal for spreading the word about new software...

A lot of the posts are from the JAOO conference, which was held here in Denmark not too long ago. And just like last year, I've seen almost all the videos, and found the pretty cool. It seems like a lot of the videos are about programming languages and/or parallelism, and the evolution in those fields - very intriguing!

Maybe JAOO is a conference I should attend next year.

Anyway, check it out at http://channel9.msdn.com

Tuesday, September 30, 2008

I'm online again!

I recently moved to a new apartment (in beautiful Frederiksberg) and have thus been without Internet for a couple of days - you know how it goes.

Then yesterday I received a letter from my ISP saying my Internet connection was switched on and that I could start using it. I didn't have time to try it then, and haven't until now. There were problems, however. The ISP (ComX) has a website where all "clients" to your Internet should be entered with their MAC address. I did that with my AirPort Express, using the MAC address that Airport Utility would show me, bu that didn't work. After reading a few forums and thinking and swearing, the solution was to use the right MAC address. Not meaning I "misspelled" the address, but apparently wireless routers have two MAC addresses - one for WAN and one for LAN. The one I saw in AirPort Utility was the LAN one, and the ISP wanted the WAN one...

But it works now!!!

Thursday, September 25, 2008

The group finally says hello!

After having been officially merged for a couple of months, Hello Group (formerly HelloWeb, HelloGroup, HelloBrand etc...) has released a web site!

Be sure to check it out here:

www.hellogroup.com

I find it pretty neat! I'm in one of the videos - see if you can spot me :-)

If you don't already know it, I do a lot of work for Hello Group, and I'm proud to say that I've been doing some of the finishing touches on the site. I've developed a new plugin for the site - which is running on the Wordpress blogging engine.

Saturday, September 06, 2008

Auto XML sorted

I've been fighting a bug for some hours now bug have finally found the solution!

Here's the deal: I've developed a tool to import the contents of some files into a database. Furthermore there is a UI for CRUD'ing the now database content. The problem was, that when I imported from more than 10 files (don't know why this exact number, it's purely empirical) the data would show up pretty strange. It should have a format like this:

1 (count: 34)
3 (count: 54)
2 (count: 20)

But instead it was showing:

1 (count: 1)
2 (count: 1)
1( count: 1)
1 (count: 1)
3 (count:1)
... etc.

Weird!

At first I was looking at the import tool - I must have made an error somewhere, but no. The solution was to sort the data! The stored procedure selecting the data uses FOR XML AUTO to generate a hierachical structure, and somehow that twisted the data. But after adding "ORDER BY ColumnName" to the SQL it comes out right!

I don't understand why yet - and can't find any other posts regarding the same topic....

Monday, May 05, 2008

Arghh - Java 1.6

Not that I'm a huge Java fan, but I'm getting somewhat tired of not having the newest update.

Okay, here's the deal. I run Mac OSX on my trusted MacBook Pro (core duo) which i bought in the summer of 2006. That means it's not even two years old, but already software is being released which my Mac cannot run! By that I mean of course the Java 1.6 SE update, build by Apple. They have only released the update for 64-bit machines and mine is 32-bit !!!

I'm not even sure whats in Java 1.6, besides some improved performance, but I've experienced a few programs and applets that I couldn't use, as they required 1.6...

Goddamn it.


And my SuperDrive won't read DVD's anymore.. Maybe I should just get a new Mac...

Monday, April 14, 2008

ASP.NET Login isn't persistent

I've had a problem with the System.Web.UI.WebControls.Login control on a web application. ASP.NET creates a cookie for the login, which is supposed to be psersistent if the "RememberMe" checkbox is selected. The problem is, however, that if you restart your computer, the cookie is deleted, and you have to login again... I decided to investigate, and found that this is caused by the application pool on the webserver recycling from time to time, and hereby generating a new machine key for the application.

The solution: Generate a static machine key and put it in your web.config.
I found the answer here: http://forums.asp.net/p/947381/1147268.aspx.

See this resource for creating a machine key: http://aspnetresources.com/tools/keycreator.aspx.


Another problem bites the dust!


UPDATE: Well it doesn't seem to be that simple after all. The login still isn't persisten :-(

Wednesday, February 20, 2008

Web 2.0 in a nutshell

I recently saw a presentation from Adobe, in which they had an interesting slide. It's essentially a list of mappings between web 1.0 and web 2.0 concepts and applications. For you out there who need a short intro to web 2.0 or you who just want to know the buzz-words, look no further:


Web 2.0 concepts

Sunday, February 17, 2008

Someone finally did it

In my previous post I joked about mankind and innovation
regarding the USBWine device. This post, however, is dead serious but still pretty amazing.

Some guys have created an "assistant that lets you focus on what you're doing, and not how you do it" as they define it themselves.

What is it? The guys at Humanized had a problem: "Computers are hard to use!". A lot of the task you perform at your computer every day, is in no way optimized for productivity. The goal for "Enso", as the product is called, is to remove these productivity barriers.

Many people have said this, but these guys have actually done it. Whatch the demo here: http://www.humanized.com/enso_demo.php

Unfortunately it doesn't work on Mac :-(

Thursday, February 14, 2008

Mankind at the top of innovation

Well, we've finally reached the top. The max potential of the human brain. The best we can be!

What I'm talking about? Presenting: USBWine - the product that finally makes computers truly productive...


Sunday, February 10, 2008

An Internet star is born

Once in a while, someone comes along and shows the world some wierd talent, skill, creativitiy, or just plain old stupidity. A lot of these 15-minutes of fame has been awarded through YouTube and American Idol, and another one has seen the light!

This time it's Renaldo Lapuz, performing "We're brothers forever" - an original composition dedicated to the Idol judge Simon Cowell.

I don't want to try and describe the performance, but I will point out, that I've never seen the judges on American Idol dance before ;-)

Thursday, February 07, 2008

HTML in the previous

The HTML generated by Contribute, as mentioned in an earlier post, seems to be pretty clean. In the referenced post it consists of <p>, <ul>, <li>, and <a>...

It does, however, insert a <div> in the beginning with the attribute:

xmlns="http://www.w3.org/1999/xhtml"

But that ain't too bad :-)

Contributing to the blog

Lately I've found some new inspiration in Adobe's Creative Suite 3. I've been toying around with Flash, Photoshop, Illustrator, Fireworks, InDesign, Dreamweaver, Flex and today: Contribute.

More specifically I'm writing this post from inside Contribute :-)

Contribute is an application build to help webmasters, blog owners and the like to keep their website and/or blog updated.

So far, here are some of my thoughts:

  • The editor seems nice - better than NeoOffice for the Mac anyay. It has some well built "Insert link" and "Insert image" dialogs! I'll get back and comment on the HTML it generates when this is posted
  • A well needed change from the web based interface og Blogger (which works great, but is a bit boring)
  • The price tag on the software, I think, will scare off some people. With $169 for a single license, I wouldn't go buy it. I guess people who spend every day maintaining websites may find it reasonable
  • The blogging feature is pretty cool. Contribute seems to integrate well into your chosen blogging system. It supports Blogger, WordPress and Typepad out of the box, and other blog servers through the MetaWebblog API
  • With my system (Blogger) I'm writing the post in-context (screenshot here)
  • I can save a post for finalizing later, as with Bloggers interface. In Contribute there is a list of unpublished posts/pages so you can easily find them again
  • As nice as the above sounds, I'm still not convinced when it comes to "normal" websites. I just don't see Contribute replacing real Content Management Systems any time soon. Too many features are missing (user management, extensibility etc.)

Those were some initial ponderings. I will probably get back about CS3 soon ;-)

Friday, January 04, 2008

Something I should NOT be doing...

Okay, so I'm currently studying for a couple of exams at CBS and therefore spend too much time everything else than studying.

But some good has come of it. The other day I saw this video someone forwarded to me on Facebook, and I went to Youtube looking for more from the same authors. The guys who make them are called "The Whitest Kids U Know" and I've listed my favourite ones below:

Well, I shouldn't be spending time writing this post, so back to the books it is...

Sunday, December 30, 2007

Word + Blogger + HTML = Bad idea!

A quick post-post: The previous post was written in Microsoft Word 2007, and published through the same. I spent more time fixing layout errors and HTML stuff than writing :-(

How to make the compiler do your work

Before Christmas I spent a few weeks on a school project in computer science. The choice of technology was up to us, and I naturally took the safe path of .NET and C#. I used Visual Studio 2008 as IDE, as it had just come out, and I wanted to try it out. I also wanted to test C# 3.0, which the new IDE of course facilitated. Later I came to think that my team and I wanted to have the solution running on a web server, so the examiners would be able to see the actual prototype working. As I didn't have any options for running the prototype on a .NET 3.5 server, I had no choice but to make the solution .NET 3.0 compatible. This is no big thing in Visual Studio 2008 – you just change the target framework and recompile. Naturally a lot of compiler errors emerged. But to my surprise, they were all related to references to .NET 3.5 specific assemblies, and not my actual code! This got me thinking, and investigating.

I used "simple properties", which is an easier way of writing simple properties with no get/set logic, other than setting a backing field's value or returning it, a lot. When you write them in C#, it looks like this:

Simple properties

What happens when above is built is that the compiler generates the get_Id() and set_Id(int value) methods as before, but then also generates a backing field that reverse engineered looks something like this:

Backing field

The funny thing is the naming of the generated field. Note the < and > symbols; they are used in order to avoid C# code accessing the field! If I try to get access to the field from a C# method, I will get a compiler error, as < and > are not allowed in the context.

The full property will look like this after being compiled:

Compiled property


I never thought of this, but as all the features of C# 3.0 are "syntactic sugar" changing the target framework while keeping the C# 3.0 compiler, I can have all the features, even though everything is compiled to C# 2.0! Great!

Oh, and by the way: Note the [CompilerGenerated] attribute. I want all of my compiled code to have that!

Wednesday, October 24, 2007

The web, and what will happen to it

I've received a comment on a previous post, and when I began answering it, I found that I might as well make it a full post.

NewsBlaze says that in reality there is a large majority of surfers on the web that is using Internet Explorer. And by looking at statistics, he's right.

What I was hinting at was more a researchers stand – trying to acknowledge the present, but focus more on how to improve the state of things. As we all know the number of devices that enables us to be online has increased dramatically, and continues to do so. Judging by the massive awareness and demand for these devices, and my own experiences, there has been a huge demand for some sort of hardware, other than a computer, that could run “advanced” applications such as e-mail clients and calendars. And the need for syncronization between all theses devices is growing with the change.
But then comes the notion of the “never-ending-network”©, meaning we can be online everywhere. If everywhere we are, we are able to connect to some sort of network, or in another way be online, what do we need apps and sync for? Shouldn't we rather use web apps to provide us with the information we need? If (when) we get to this point, it's essential that every web site/application displays and behaves the same across all devices, computers, projectors and event printable medias.
Implementing the above is quite a challenge, but I'm sure there will be soend a lot of time on it in the future. Especially now that Adobe is working on this new range of breathtaking application frameworks engines, including Flash (ActionScript 3.0), Flex, LiveCycle and AIR (Adobe Integrated Runtime). And now that Microsoft has joined the battle for RIA's (Rich Internet Applications) with the release of Silverlight. And now the comming of Web 3.0 is being discussed. I sincerely hope that the above mentioned technologies will mature over the next couple of years, and then take over! By saying they need to mature, I mean that they still have a lot of issues, regarding the very topic of this post – clean website structure/markup – which need to be solved. But that is another post, maybe some oher day...


Anyway, NewsBlaze, I hope you can follow my chain of thought. I'm a firm believer that we will see a situation similar to my “never-ending-network”© theory, and just want to start thinking about it, and having other people thinking about it.

Friday, September 28, 2007

Javascript repository

I've decided to document and share the standard javascript functions, I use for my web development.
I've only just decided it, so for now there are only a few files ready - but the repository will gradually expand...

You can find it here:
http://www.blizan.com/repository/javascript/

Friday, September 07, 2007

How did I not see that?

I had a nice experience today. I have been developing a website that uses the native ASP.NET 2.0 provider model. To save time I've just installed the default provider implementations for the MembershipProvider and RoleProvider and am using them.

So now I am in the process of creating an administration-system for the entire website, including the providers, and found myself having an insane bug/error. I had two users in my database, myself and a test person (Hans Hansen). When I updated the users everything was fine, unless I wanted to change the users' roles. If I was editing my own user it worked. If I wanted to edit Hans Hansen, however, the app crashed. The error message was something like: "Cannot update user name ''" (empty user name).

Now, I am pretty sure the user name isn't empty, so I began debugging. After about 2 hours of hopeless looking through code (even the ASP.NET provider stored procedures!), and plenty of theories about the origin of the error (including one or two angry thoughts to Microsoft), I developed a theory. What if the user name was required to be minimum 3 chars? Hans Hansens ("hh") was only two, but my own ("mgj") was three, and for the latter everything worked! Well, I changed "hh" to "hah", and suddenly everything worked! So now I'm thinking, that Microsoft is behind the error, and begin looking quite deeply into their stored procedures looking for the unwanted feature.

After another hour down there, I coincidentally passed the [aspnet_UsersInRoles] table, and lost my jaw. I had finally found the problem. In the aspnet_UsersInRoles table, a previous test user had not been deleted. And he happened to have the same username as Hans Hansen ("hh").

So, in the words of Sting, "I hate to say it, but it's probably me"


Note to self: Make sure test environment isn't corrupted, before pointing fingers!