Thursday, November 22, 2007

ShoppingList

Well it's been quite a long time since I last posted on this blog. There is numerous reasons behind that, first the fact that I left the US and moved back in France once I finished my internship there. Related is the fact that I am now working in an IT services company (Atos Origin) in France.

Anyway, during this long writing break I bought a Windows Mobile 6 Smartphone and started having fun programming apps for it.

I thought you might be interested in an application I developed a couple of months ago. I built it to suit a need I had of an app to track what I need to shop for and what I already shopped.

Rationale

ShoppingList1With Shopping List you can create a list of items you need to buy. You then go to your favorite grocery store, as you take your items from the shelves you check these items on your cell. The great thing is that you need a single hand to do that. Therefore you have one hand free to pick up your stuff. You can even enter the actual price of the items. You will be warned if any of these items is more expensive that a potential maximum price you might have set before hand. The actual price of your basket is computed during your shopping as well.

ShoppingList1_priceYou may also disable the price feature, either because you don't care how much stuff cost or because you are using Shopping List to track other kind of list of items.

 

 

 

 

Technologies

The current version of Shopping List targets the .Net compact Framework 1.1 (a possible new version would target the .Net compact framework 2.0) to ensure a maximum compatibility. Therefore it should run smoothly on any Smartphone running Smartphone 2003 to Windows Mobile 6.

Installation

  • extract the .zip file on your computer
  • copy the resulting folder wherever you want on your smartphone (it's in the root of my storage card on mine)

Usage

To use shopping list you need to launch if first (obviously) and then either:

  • Open an existing list (one is provided for example, it is named export.xml and bundled with the app) with MENU/FILE/LOAD.
  • Otherwise just start adding item with the MENU/ADD command.

As you will see you can delete/add/edit all the items even if the file was created on your computer.  

ShoppingList1_menuYou can save by using the MENU/FILE command.

Once you are in the store just change the item selected with UP/DOWN. Press the validate key (probably the biggest one on your keypad) to check the item. If you had entered a price beforehand (number on keypad)

License

You can use and distribute this software freely. If you want to get the sources, just drop me a line and I might send you those with a specific license (maybe GPL, I still got to think about that)

Future

I got tons of idea for a new version. The main improvement would be to specifically target the .Net compact framework 2.0. It would of course disrupt compatibility with older platforms but it would also allow for a better integrated application and easier programming for me.

Questions, bugs

If you have any questions, remarks or noticed a bug, you can drop me a line at info [ at ] jonathanroussel.com (replace the [ at ] with the At sign).

Download

Finally, you can download the zip file here

Friday, April 13, 2007

Disabling the ASP.Net ?WSDL command

When designing Web Services with the Microsoft ASP .Net technology the automatically generated WSDL file is accessible by adding the “?WSDL” command to the ASMX file URI. e.g : http://www.webservicemart.com/phone3t.asmx?WSDL

You might want to hide this wsdl file for a number of reasons:

  • To deploy a hand-written WSDL file and be sure that no one uses the automatically generated WSDL.
  • To hide the WSDL and thus limiting access to the people you have given a version of the WSDL file to. Therefore ensuring a very basic protection of sensitive data exposed by the Web Services.

Whatever your motivation is, several solutions are available to you. The easiest one is to add these lines in the web.config file :

<system.web>

<webServices>

<protocols>

<removename="Documentation"/>

</protocols>

</webServices>

</system.web>

By using this solution, the HTML documentation available when accessing a wsdl page (e.g : http://terraservice.net/TerraService.asmx) will no longer be accessible, same for the “?WSDL” command result. And this for every ASMX pages presents in the project.

If you want more control (hiding only some ASMX pages, hiding only “?WSDL” but not regular documentation, modifying HTML documentation, …) you might want to consult this article.

Wednesday, April 04, 2007

SOAP Headers supports

It's been a long time since I last posted a technical post. This post will deal with how the current Web Services framework deals with soap headers. More specifically, how does the .Net framework and Glassfish JAX-WS RI (J2EE ->JEE Reference Implementation) deals with those.

As it deals with a new subject in this blog (Web Services), let me first speak about the background before dwelling in the real subject.

Background

Today most Web Services uses the WSDL, UDDI and SOAP over HTTP protocols to work. WSDL is a xml based language to describe what a web services supports, SOAP is an xml based protocol designed to exchange messages, if possible compliant with the WSDL contract.

SOAP messages are composed of a body and header. The W3C recommended use is: data (payload) in the body and metadata (authentication, session ...) in the header.

Defining Soap header

IBM published a very interesting resource on how to define soap headers in the WSDL contracts. To put in a nutshell, there is two ways to define soap headers: either explicit or implicit.

Explicit, the headers are considered to be part of the input message of operations. The difference is made in the binding.

Implicit, the headers are defined in separate messages and are defined to be input of operations in the binding.

Current framework support

I have recently noticed that the support of both WSDL constructions greatly differ between the .Net and JEE RI frameworks.

I have defined two WSDL files, one with explicit soap headers, and the other with implicit header. I used the .Net framework wsdl.exe tool to create both client and server source stub/interface and I used the wsimport.exe tool (JEE RI) to do the same for the java platform.

While the .Net framework can handle both explicit and implicit construction, the JEE RI doesn’t add the headers when the WSDL defines implicitly the headers. Therefore, one has to manually add the headers parameters to every function.

A possible fix

If JEE RI doesn't support implicit construction, a possible fix would be to always add explicit headers.

Saddly, the .Net framework generated WSDL files defines implicit headers. Thus JEE RI won't be able to automatically consume .Net WSDL files.

My Conclusion

Despite all the works on both sides to improve JEE/.Net interoperability (WSIT, project Tango), and despite the WS-I work; consuming Web Services endpoints created in a language in the one might still be problematic when using soap headers.

Tuesday, April 03, 2007

Agile before it's time

Nowadays, more and more people seems interested in Agile and XP.

The basic idea is to split projects into a bunch a little projects with very short deadlines. Agile commonly emphasizes the downsizing of documentations (User Requirements, Functionnal specifications) and advocate more feedbacks from the final users/buyers. [From I got of a DotNetRocks podcast, you might want to read the transcript or listen to to the full podcast. Really interesting]

I recently found an intersting ressource, Jack W.Reeves talking about software development in the early 90s and already introducing some Agile concept before it even got a name. You will find this very interesting discussion at :

http://www.developerdotstar.com/mag/articles/reeves_design.html

Wednesday, March 21, 2007

Google IG now features theme

For those of you who use the personalized Google homepage (http://www.google.com/ig), you may have recently noticed a new feature:

The possibility to change the appearance of the page, it’s called “select a theme” and you can find it near the “add stuff” link. Previous solution was already available to modify the appearance of this page but they weren't always that functional. Some needed User script to be hosted by the browser; others messed up the page more than they customized it.

While this new feature is not a mandatory feature for a good homepage, I liked to have the opportunity anyway. Moreover the available themes change with your local weather, nice indeed. Here is a composite of the different picture I have had today.




There are 6 themes to start with, but I am sure Google will provide us with new one or allow users to create new one.

I noticed this new feature this morning, some may not have access to it yet (so said a friend of mine) I guess you will just have to be patient.

News

 

I haven't post anything in a while. To make it short, I am now doing an internship in the USA (Virginia USA). I should come back in Europe by August-September. I hope I'll be able to find a work in Finland or Sweden.

My current work is to develop a standard corporate web service development guideline. I spent a  lot of time dealing with web services interoperability (mostly, the WS-I effort and it's Basic Profile) and now I am dealing with the java J2EE web services stacks. Don't be surprised if many future posts on this blog deals with web services.

 

Last but not the least, I bought a domain name and developed a small personal web site http://jonathanroussel.com. It's not much but at least my name is enough to find me on the Internet.

Talking about this domain name, this blog is now accessible as a subdomain at http://blog.jonathanroussel.com.

Friday, January 05, 2007

Chat4Lan dotNet Client first release


Two fellow students and I have been working on a protocol, a dotNet client and a java Client designed to allow Instant Messaging on a LAN without any server being needed.

This very simple protocol uses UDP multicasting possibility for peer discovery. AES is also used for basic encryption of all text exchanged against eavesdropping.

The protocol is currently in version 2.0, and the dotNet client for this version is usable. Thus we have decided to release a version.

The binaries, source-code and documentations are available on sourceforge.net at:

http://sourceforge.net/projects/chat4lann/