Powered by Twitter Tools.

February 2006
M T W T F S S
« Jan   Mar »
 12345
6789101112
13141516171819
20212223242526
2728  
Chris Donnan

Create Your Badge

Chris Donnan : Programming – Brooklyn Style

software, trading, family, fun

1 C# and Java Generics …. Covariance ….

The Java case:

The C# case:

Painful – but generics are not covariant in either case – meaning ….

(Java – from above link)


(C# from above link)


I am getting into using generics for non-trivial circumstances now. I
am implementing generic classes – not just using the List<T>
stuff anymore. Now that I am getting down to it – as always – it is an
art :)

-Chris


You can leave a response, or trackback from your own site.



Pic of Shannon :)

My wife shannon – a photo from way back in the day :)


You can leave a response, or trackback from your own site.



Developing User Interfaces…..

Inspired by an article linked @ SlashDot

I got to thinking about developing software for end users, as I often do….

My current project is a desktop credit derivatives trading application that ~900 users globally use (not too many I realize – but enough to be interesting). When I 1st came on the project the 1st thing that struck me was how poorly designed the user interfaces was – it was NOT apparent how to use it at all. We did have the opportunity to work on that… I have spent the recent time working on a new ‘trade blotter’ and general UI application architecture. One of my primary goals is, and will continue to be – making the UI feel like home to the end users. Making the UI really support the habbits, quirks and needs of the end user in a way that is not just ’some fluff atop the “real” program’. The UI is the real program as far as a user goes. All the nice ‘backend processing’ in the world is great – 100% needed, but the UI is where you can get strong percieved wins from your end users.
Here are a few links for those folks that want to keep up on UI design practices and patterns. So many software developers consider the UI tier to be the fluff part that means the least. Unfortunately – the users (that pay for the development generally) think the opposite :)

welie.com
designinginterfaces.com (book site with refs)
Sari Laakso’s patterns
..newer Yahoo!s UI patterns site

I will also mention that after a few years of doing larger class desktop application/ smart client development – I have seen the same issues and constructs come up over and over. 2 frameworks abstract smart client/ rich client/ desktop applications extremely well.

The 1st is the latest Microsoft CAB (Composite UI Application Block). This specifies excellent abstractions for common rich client application needs. When I was going over the internals – again and again I found myself saying ‘yes – we did that too’ or ‘wow – we solved that issue differently – you guys did it better!’. I will also note the Infragistics 2006.1 works directly with the CAB. Excellent move on their behalf!

The other is the Eclipse RCP (Rich client platform). I have been really studying out the guts of eclipse – the RCP in particular (while reading – The Java Developer’s Guide to Eclipse, 2nd Edition). What an excellent set of APIs these folks have come up with. The plugin architecture and the notion of ‘contribution based extension’ are particularly excellent.

-Chris


You can leave a response, or trackback from your own site.



useful programming ‘quick references’ for several languages

useful programming ‘quick references’ for several languages….

If you jump into perl 1x per year – or the same for MFC, or the same for using VI, admin commands for solaris, and many more – this is for you :)

-Chris


You can leave a response, or trackback from your own site.



What this fellow calls the ‘Executable Internet’, and some mags…

More on what this fellow calls the Executable Internet.
This is along the lines of what I have been talking about in earlier
posts – Xaml and the beginning of the ‘computer as the browser’…

I also mentioned that I would post the mags/journals that I usually read:

MSDN Magazine

Linux Magazine

Visual Studio Magazine

JAVA DEVELOPER’S JOURNAL

Software Development

DDJ – Doctor Dobb’s Journal

C/C++ Users Journal

Evolutionary Computation – The MIT Press

IEEEComputer Magazine


You can leave a response, or trackback from your own site.



More reads….

Here is the latest reading list. I have had an interest in non- .net based clustering solutions. I have implemented some Grid stuff using Alchemi http://www.alchemi.net/ – but I want to extend into the linux HPC space now. The optimization work I have done in the past – as well as the machine learning would all benefit HUGE from cluster-ability.

As to Ruby on Rails. I just want to get the buz on Rails. I do not plan on doing any web work – esp with Rails – but I do like and use Ruby – so understanding the framework that is bringing Ruby to fame seems worthy.

Strong willed kids…. My 3.5 year old is awesome – really – brilliant, sweet, everything good. That being said – he pushes bounds to no end – so I got this book recommend to help my wife and I bear up and help him to have less conflict with us as I am sure he does not love that….

PS – I also ALWAYS am listening to something from http://www.audible.com and reading a few mags on the train – I will post audio books and mags soon.

I am an information input JUNKIE!!!

-Chris

Building Clustered Linux Systems

Agile Web Development with Rails : A Pragmatic Guide

Setting Limits with Your Strong-Willed Child


You can leave a response, or trackback from your own site.



Rich Internet Application – akin to my prior post…

Rich Internet Application post

Someone else talking about post-browser apps. He is more focused on talking about ’social networks’, ‘FOAF’, ‘Tagging’ and (_so_called_) Web 2.0-ish stuff. My point in refereing this is – the post-browser era is coming….

-CD


You can leave a response, or trackback from your own site.



Musings on Xaml, Expressions, Virtual Machines, OS’s, Computing Resources

Some free form thoughts:

For a long time – I have thought that
the web browser was interesting. It is a fairly primitive set of UI
components that you can declaratively ask to be rendered – via HTML/
CSS (for the most part). You also have the option of interactively programming to
the browser’s API – mostly in JavaScript. The powerful part was/ is
that you are sending text across the wire from 1 machine to the next
- declaring to the browser what to do…..

So – the issue is/
has been that the browser experience is not as ‘rich’ as a desktop
application … AJAX – SchmaeJax – I know… but it is not as rich -
period. Oh sure – there have been valiant efforts – Flash, Mozilla’s
XUL, etc – but in essence, but still – we are declaring our intent to
a web browser – an application of limited scope – inside a much more
complete operating system….

The next step is to do the much
same thing – send declarative intent – over the wire – BUT:

1)
To a richer rendering engine (the web browser in browser era)
2)
With a richer programmable API (the DOM API / browser API in browser
era)
3) With more robust programming language possibilities
(JavaScript in browser era)

So – we send declarative intent to
- the OS. This is accomplished with an extensible markup language
that can reach into more domains than HTML did/ can. HTML is a
limited domain markup language. One XML document can contain multiple
over-layed namespaces of information that can be consumed in
differently by different aspects of the interpreting application.

If the browser is just a subset of the
computer’s (OS’s) functionality that can have it’s behavior invoked/
declared, the end of that chain of logic is that the OS should just
allow it directly – the superset of functionality. With XAML -
Microsoft brings some of this to the table.

1)
richer rendering engine (the OS – WPF, Expressions stuff, GDI, etc. in the post-browser era)
2) richer programmable API (.Net framework in the post-browser era)
3) robust programming language possibilities
(C#, Vb.Net, etc.)

Granted -
security will need to be of central importance in this scenario -
where the OS can be so controlled- but that aside – this is the
logical step. I do not question this progression happening the
question is – what other vendor(s), OS’s, etc. will support this type
of idea? Maybe something like:

1)
richer rendering engine (Linux with some core rendering engine …. SVG based perhaps)

2) richer programmable API (KDE, QT, more abstraction of the raw Linux functionality from elsewhere)

3) robust programming language possibilities
(Java, Ruby, Something else…)

Interesting – I admit – these are fairly off the cuff thoughts, you never know what will happen.

What Microsoft is doing with
Expressions and that realm of stuff is also part of the next
generation of application development – breaking away from the
classic looking application. Flash is a beautiful looking thing in
browser world. It is still limited. An application with the full
power of your computer looking like a flash application could –
will be a lovely thing. Making 3d user interfaces will become real
soon. Making really animated – lush applications will be real soon.
In this space – an SVG player may come into play.

A Windows Virtual Machine?? I wonder if
at some point – computing resources (hard drives, memory, etc) will
be so commoditized that all OS’s will basically be able to simply
access a sort of grid of resources…. Then all “OS’s” will be
something like a virtual machine atop generic resources. They are
then just set of APIs for accessing truly common resources and
abstracting functionality into a software computer. The resources are
the same – the abstraction on top of them – the software is what
is worthy to developers. Java was a better abstraction of the
computer resources than C APIs (in my way of thinking) for
non-primitive operations. C# is even a slightly better set of
abstractions (delegates, events, etc are really better than Java –
I am sorry. I DO love Java – I am just being honest). Anyhow – it is
really not too far fetched to envision Windows or something from MS as
being a portable Virtual Machine that could run like a JVM etc….
anyhow………

Anyhow – I have rambled..
-Chris


You can leave a response, or trackback from your own site.



Mono build running in no time

Well – I was able to EASILY take the portable part of my optimzation and classification software – import the projects into the latest MonoDevelop (v0.9), add a reference to db4o – and it built immediately. There you have it c#/ .Net, Linux (Suse10) working just like that.

The intellisense looks nice and works well – Again – I am spoiled by IDEs like Visual Studio and Eclipse that offer real refactoring support etc (natively or via plug ins at least). Still – not bad. It is too bad that I will not be able to port over the LOTS of UI code. Infragistics, TeeChart, lots more will just not be easily run on a nix machine.


You can leave a response, or trackback from your own site.