Wednesday, August 5, 2009

Code Generation Popup

One feature I always wanted to have is the code generation pop up. I'm currently working on the refactoring part of MonoDevelop and I take the chance implementing the code generation popup.
This is a real time saver, if you know how to use it.
What can it do for you ? It can:
  • Create constructors and initialize members
  • Create properties
  • Create event OnXXX methods
  • Create ToString() method
  • Create Equals & HashCode
See the Quick Code Generation entry in the mono develop wiki for more details on that feature.

Wednesday, July 29, 2009

Twitter

I've now created a twitter account. I'll post there more up to date infos what I'm currently developing. My username there is mikrueger.

Thursday, July 9, 2009

Refactoring, refactoring, refactoring

I'm in the process improving the refactoring in MonoDevelop.

I hope that refactoring in MonoDevelop will be in a good shape 'really soon' (maybe in 1-2 months). I've looked at other tools eclipse, netbeans, intellij and michael hutchinson pointed me to some VS.NET plugins that add refactoring to VS.NET.

I've created a new refactoring plug in and have thrown any refactoring stuff in there, we've a basic refactoring infrastructure. The refactoring system is based on single changes. That means that refactorings generate a list of replacement operations which the user can view in a preview dialog (mostly the same as eclipse). However this preview dialog doesn't make sense for very small inline refactorings - they can be done without any dialog.

Now I'm improving the infrastructure by writing some small refactorings. I first thought writing extract method is enough. But that isn't the case, other refactorings need different stuff. Therefore I'll implement some more. Wanna help ?

I try to get my wife on board to help out with refactorings. She helped me to improve the refactoring infrastructure quite a bit (but the infrastructure needs some evolvement before I can write it down). And she tries to implement some refactorings. It's really helpful to have someone which I can see working with mono develop. Some of the more advanced mono develop editing features alienate users ... that's something I need to think over.
The features are really cool but are unpredictable for developers who don't know them.

I was a bit lazy with writing new features in the last few weeks, but I think that adding some refactorins is worth introducing a ton of new bugs. The other IDEs offer a wide range of refactorings that I found really useful - stay tuned for some cool refactorings the next few weeks.

Wednesday, September 3, 2008

Hack week project

This hack week I choosed to do an ansi art viewing tool. Called M-Draw.

Back in the 90' I had an own bbs system running and ansi art was used for the menus. There were some ansi art groups like ACiD or iCE who made an art out of textmode drawings.

I made an tool to load and convert different formats. During the years many formats were invented. I tried to make load/save routines for all these formats.
During the hack week I had support for following formats:
  • ANSI - this is the standard format
  • AVATAR - this is a format for making the images very small
  • PCBoard - this format was used by a BBS system (link)
  • BIN - standard binary format (just like saving the screen buffer memory to a file)
  • ASCII - plain, colorless format
First I tried to make a console application (with editing capabilities).
But this was more complicated than excepted and I switched to a GTK interface (without editing capabilities).
The GUI is able to load & save all formats above.

It is possible to view and edit the meta data information (SAUCE) of the files. One of the nice things is that it's possible to load fonts from TheDraw. TheDraw was one of the most widespread ansi creating tools and it made a format for ANSI art fonts. No other editor was able to load&use the proprietary TheDraw font files.
In the 90' I re-engineered the TheDraw font routines and now I've rewritten them in C#.

Still to do:
  • Adding more formats: X-Bin and Wildcat! BBS (these two are not really important)
  • Support for animation
  • Adding editing capabilities
One of the problems with the console gui was that the old ansi files require the old dos font and the linux fonts are a bit different. Using a custom gtk widget and an old dos font file is much easier and looks better than using the linux console directly. The widget could be extended with zooming support, but for now it does it's job.

Saturday, March 1, 2008

Background story

I'm the creator of the SharpDevelop IDE which I started out of curiosity at 2000 where Visual Studio was not available.
I've begun my C# experience with the first released PDC version of C#. I always wanted to write a full featured IDE myself. I've written small editors (in Pascal and C) before, not only text also hex editors and ANSI drawing tools.
The official release date of the first version I've used myself and gave to other people is 9/11/2000 (the birthday of my mother, has nothing to do with the precognition of a terrorist attack). I invested much time in this project, delayed my university degree several years - but I had much fun.

For the record:
SharpDevelop was my first Windows Application. I always used to be a C/C++ unix (before that DOS/Pascal) programmer. I've developed Java applications during my computer sience study. But I came to C# because it was better than Java (in my opinion, I don't want do offend the Java fans, Java is great).

... After the first half year of developing SharpDevelop I got kind support from Austria. Christoph Wille wrote me that he want to sponsor the project. He became the SharpDevelop "team" leader. The team consisted mostly: Me (programmer), Bernhard Spuida (documentation, he invented the names like codon), Christian Holm (testing) and Andrea Paatz (my girlfriend, she helped on various places with code and much mutch patience).
Some time later Markus Palme joined the team, a very talented programmer which began to contribute VB.NET stuff. I left the project in 2005 after #Develop 1.1->2.0 was more or less completed (80%). At this time Daniel Grunwald joined #Develop development.
I really wrote much code at that time and needed a break. I started to play World of Warcraft and overplayed it a 'little' ...
At that time I lost a bit the believe in SharpDevelop. I thought with the free VS.NET versions there would be no room for a free IDE on windows - I thought that no cost was THE reason for the SharpDevelop user base on Windows for the Windows developers, fortunately I was wrong. At my univerity I got not very positive feedback on SharpDevelop, in fact they more or less ignored it, I couldn't use SharpDevelop for my diploma thesis.
During that time I managed to finish my diploma in computer science (it's something like the master degree for you us people). Because I found no SharpDevelop supporter at my university I had to find a different project for my diploma: I wrote a small 2D RPG multi player computer game engine and editor for Windows CE.

After finishing I looked out for something different - I began to work at a small closed source software company in the Berlin region (I didn't think about working for Novell at this time). It was very interesting. I've worked on a different development environment (no code development) - at this time I wrote a nice WPF forms designer. I got a development contract for 6 months, at the end I wrote to Miguel, if I can work for Novell and he said yes. The company didn't want to let me go (It was a very cool company, but Novell is cool too), but I had made my decision.

I joined MonoDevelop in April 2007 and I first needed to set up MonoDevelop for Linux development.
At the beginning it was very difficult, MonoDevelop run only for about 2 minutes without crash on my computer - I wasn't used to mono and linux development at this time. And I found it all very difficult to work with it. (Maybe thats one reason why we spend a half year for bug fixing)
But after struggling for a while I became used to it. I needed to learn linux/gtk# development and to integrate in the mono team, but I've manged it ^^ and can do full time work on MonoDevelop now.