Thursday, September 30, 2004

BorCon Jacket Winners

Dale gave away some nice leather jackets to some lucky BorCon attendees. The only person who's name I know is Robert Love. If you know any of these people post a comment with the image file name and their name, maybe a link to their blog / home page too. I also have much larger versions of these pictures if you want a picture of yourself.

RobertsJacket.JPG
Robert Love
IMAG0043.JPG
IMAG0043
IMAG0033.JPG
IMAG0033
IMAG0034.JPG
IMAG0034
IMAG0035.JPG
IMAG0035
IMAG0036.JPG
IMAG0036
IMAG0037.JPG
IMAG0037
IMAG0038.JPG
IMAG0038
IMAG0039.JPG
IMAG0039
IMAG0040.JPG
IMAG0040
IMAG0041.JPG
IMAG0041
IMAG0042.JPG
IMAG0042

More BorCon Photos

Here is the T-Shirt and Hat that they were giving away.  These aren't the default ones everyone gets, you had to be lucky.  Although I saw Nick with two hats on at one point.  The shirt wasn't very colorfast.

At The Tech Museum they had this robot that would spell things out in blocks.  Some people tried to get it to spell dirty words, which it wouldn't do.  Someone else had it write "C IS DEAD JIM" on the left, while I had it write "DIAMONDBACK" on the right.  It is pretty fun to watch.

Here is a picture of Danny Thorpe during the Meet the Team session.  He was signing Diamondback CD's.

Finally this is the picture of Robert Love with Dale after Robert won a jacket at Meet the Team.  I think he had to guess the code name for JBuilder 1.

BorCon 2004 T-Shirt

I really like the logo on the T-Shirts this year. Same theme, but they made the icons look cooler, and they are popping out at you. "Unleash the Power" is a cool slogan too.

Wednesday, September 29, 2004

Delphi Informant Complete Works CD

Delphi Informant is publishing one last complete works CD for 2004. While it may have gotten pretty then towards the end, it was a good 10 years. There is nothing wrong with having a concise magazine - More to read and less to skip.

Features
  • 10 years of articles - Delphi 1 through 8
  • Full text and source code from every article
  • Searchable
  • Bonus unpublished articles

All that for $49.99 with free shipping. You can pre-order now.

Firefox / Mozilla / Thunderbird Extensions How-To

Found a page with links providing How-To's on extension development for the Mozilla family of browsers. It uses XML and JavaScript stored in a JAR file. When I saw the JAR files I just assumed it was Java. A JAR file is just a ZIP file that has been renamed and that contains a manifest.

Wednesday, September 22, 2004

Borland the Arms Dealer

Last year at BorCon Borland was trying to position themselves as Switzerland. They wanted to be neutral in the platform wars between Java, .NET and Win32. They weren't going to take sides, and they would be there for you irregardless of which battle you are fighting.

This year I didn't hear much talk about Switzerland. Although it wasn't actually said, I kind of get the impression Borland is more of an arms dealer. They sell weapons, tools and supplies to both sides.

Monday, September 20, 2004

TeamB in the Santa Cruz Sentinal

Anders has some pictures taken by a photographer from the Santa Cruz Sentinal. Nice group photo, as well as one of just Anders and Nick Hodges. Now we need someone to put a name to each of the faces, a guide to TeamB of sorts.

Sunday, September 19, 2004

Great Information on Mono

I stumbled on this post in the Agile Hacker Blog about Mono. It has links two three articles by Charlie Calvert about Mono from the BDN as well as many others.

Too Much Information and not Enough Brain Cells

As I try to go through and post all the BorCon notes and photos that I didn't get posted from the conference I am also looking through everyone else's BorCon blogs, as well as the papers on some of the other sessions I was not able to attend. Talk about information overload! It will take me at least until next years BorCon to absorb it all.

Please let me know if there are others that I am not listing

Refactoring with Jim Cooper

cover Jim Cooper of Tabdee and Falafel Software presented Introduction to Refactoring. Jim is a great speaker. It is understandable why his More Design Patterns in Delphi was so full. If you want to know more about refactoring, then get Martain Fowler's Refactoring: Improving the Design of Existing Code

Refactoring is changing code after it already works. It is a series of small steps to minimize bugs. Should use unit tests to verify you don't break it. Refactoring does not change the behavior or add new features.

Code is not for computers to read, it is for programmers to read. Most programs spend 90% of their time in maintenance mode - refactoring makes code easier to maintain. Since the code is easier to read, bugs are easier to find. In the long term it is faster, short term it will take longer. Reduces chaos in long-lived code. Fowler formalizes and names the best practices of refactoring.

Opportunities for Refactoring

  • When adding functionality - makes adding new features easier, but keep refactoring separate from changes.
  • When fixing a bug
  • During a code review
  • Refactoring does take time though
    • May need to sneak it past managers at first
  • Eventually you will refactor as you go and will not be separating it.

Points to Note

  • Refactoring is typically based on OO
  • More atomic then patterns, but may use patterns
  • Most don't concern interfaces, but some may work with them
  • Many refactorings include other refactorings, or one is required before the other can be applied.
  • Some are opposites (extract method, inline method)

Thoughts on Refactoring: Most successful applications spend most of their time in maintenance mode, where you are fixing minor bugs or making other minor changes. If the application has been properly refactored then these small changes take very little time. Otherwise these changes are very expensive. Refactoring pays for itself in the long run if your application has any sort of life span. Refactoring doesn't mean the code was written wrong to begin with either.

Welcome Keynote and Reception

The welcome keynote opened with a rock concert theme. Mostly just a welcome out. Dale renewed his personal and Borland's commitment to the developer and writing code. "It's all about the code" was his mantra for the evening.

This is a picture from right before the keynote began. These are the same photos I used earlier, but they came out much better this time. Christine Ellis is right in the middle with the 2 screens behind the large logo, and then the large screens to either side of the stage.

Dale commented that more companies were standardizing on Borland's tools. Borland tools were involved in sending the rover to mars.

There was a really interesting presentation on the future of software metrics. They took real Star Team data and represented it in interesting ways. They used video morphs of David I, that varied from a devil to an angel, based on the measurement of change requests and code check-ins. They used midi music based on code metrics for submitted code changes. Project status was displayed with ambient orbs. There were a number of the creative ways of looking at development team data.

I actually got a chance to visit with David I. later in the computer lab. He said that the demo actually used real data from Star Team, and the representations were actually based on this real data. Only the user interface was flash. They are going to have parts of it on display in the computer lab, and maybe a write-up on BDN.

Visiting with David I. was a real treat. He is a very intelligent individual, and he takes software development and application life cycle management very seriously. I had heard a lot of comments from him up on stage, and read his "Sip from the Firehose" column, but when you sit down together after a long day around midnight you can tell the conversation is very candid. He is 100% in what he says up on stage and in his commitment to software developers. Borland has a great asset in him.

A panoramic shot of the whole reception hall. To the left we have the casino tables. Then some food (it was everywhere, and pretty good even), a dance floor with a live band and video games (lots of them, everywhere!)

Immediately following the keynote was the opening reception. There was plenty of good food, Casino gambling for door prizes, and dance band (that was rather loud), dancing, and drink coupons. I took some photos and mingled a little bit. I talked to Marco Cantu, Malcom Groves, Dr. Bob, Christine Ellis, Robert Love and Dale Fuller. Not that I expect any of them to remember me.

In my brief visit with Dale he mentioned that most likely there wouldn't be a new Kylix release unless something changed. As we all know things could change tomorrow. He said there just really was very little demand for it, which is unfortunate, it is a good product. It is good to know that if and when things do change on the Linux platform, Borland will have a development tool that can be updated quite quickly.

In the immediate future, if you want to use a Borland tool to develop on Linux you actually have a few other options. I think C++Builder X could be used to target Linux, although the IDE would not run on it. Also JBuilder should run on and target Linux (since it supports a JVM). I don't use either of those tools, so I am not sure on the details. Now with Mono 1.0 release you can use Delphi 8, C# Builder and soon Diamondback to target the Linux platform, just don't use the Delphi SysUtils unit (someone needs to make a safe version of SysUtils to target Mono.)

Delphi 9 - A Rose by Any Other Name

I was wondering what the name of the next Delphi would be. Delphi 9, or maybe something else. Many companies are naming their products after a year. Sometimes this year is the year the product was released, or shortly after, other times it is way far in the future. The new version of JBuilder is JBuilder 2005, and Diamondback has a lot of features from JBuilder. Then I noticed Serge's post to a Diamondback sneak peak. He pointed out the naming in the URL:

http://info.borland.com/media/shockwave/Delphi2005/d2005sneak.html

It looks like it will be called Delphi 2005. Makes sense. They release a new version every year anyway.

Creating Custom ASP.NET Components with Nick Hodges

Nick Hodges of Lemanix (The #1 Borland Partner in Minnesota) is covering ASP.NET component building. He will be using Diamondback and Delphi.

First a couple panoramic shots:

This one is from the back of the room. On the left you can see the boom camera they used in the keynotes and general sessions. On the right is one of the many stationary cameras.

This one is from up front where I ended up sitting. Notice the tables they had set up this year is most all the halls. It made taking notes very nice.

UPDATE: These photos are from Nick's ASP.NET Development Strategies, not Creating Custom ASP.NET components. Same speaker, different location and time. This pictures don't do Nick justice. He looked like a rock star up there. When he finished his session they turned on the lights and the lightening video behind him.

Topics to be covered:

  • Why build controls?
  • User Controls
  • Rendering
  • Web Controls
  • Persistence in Properties
  • Block Types
    • Div
    • Span
    • P (Paragraph)
  • Postback Management
  • Lifecycle of a control
  • Client-side Javascripting
  • Composite Controls
    • A control made of multiple controls
  • Complex Properties
  • Inner Properties
  • State Management of Complex Properties
  • Template Controls
  • HTTP Handlers

User Controls

User Controls are "page chunks" that just provide a portion of the page. Typically they contain common headers, footers, etc. Need to have the "*.ascx" extension. Behind the HTML there is also code-behind code.

Server Controls

They abstract the browser so the correct code is rendered for the current client. They encapsulate features and behavior and maintain state. Server Controls are configurable at design-time like components. Server controls are easier to share then user controls.

System.Web.UI.Control is the base class to descend from. Must have a parameter-less constructor. All properties must have get_ and set_ assessors.

Any HTML you want to output must be outputted in the Render method. Simply place the control in an assembly (or package) and install it into the IDE. It is worth noting that the control does not by default have any style support.

For a web control you override RenderContents method. The Render method handles the block tags (P, SPAN, DIV, etc.)

Composite Controls

Composite controls are controls that contain multiple child-controls. This is different then User Controls because all the controls are generated in code with no visual design. Must implement INamingContainer (with no methods) to indicate that it will name all child controls based on the name of the parent control to prevent collision with other controls on the page. All assessors must call EnsureChildContols before accessing the properties of the child controls. Composite controls must override render for customer rendering. If Render is not overridden then the child controls are streamed out one after the other. When overriding Render you can call AddAttributesToRender passing the Writer to automatically render the attributes of the parent control.

The Writer is an HTMLTextWriter class to facilitate the construction of HTML. Internally it uses StringBuilders and understands the concepts of opening and closing tags by calling RenderBeginTag and RenderEndTag. If you want to add attributes then you call AddAttributes before you call RenderBeginTag. To Render a child control call the RenderControl method of the child control, passing in the writer.

Test Driven Development with Charlie Calvert

Charlie Calvert presented a preconference tutorial on Test Driven Development.

You can get to the presentation, code and notes by visiting www.elvenware.com. This is a subset of the information available there along with some of my impressions and interpretations.

Unit Testing is not tied to any methodology, but it works well with a number of agile methodologies. Related technologies include Patterns, UML and especially Refactoring. In fact you shouldn't refactor unless your code is well covered by unit tests.

A side effect of complete unit tests is they provide a specification and documentation for the project. If the tests are all created first then they provide the specification and measurement of progress on the project. When the tests pass then the requirements are complete, and the tests document the routines. Programmers would rather write and read code instead of specifications and documentation, so if a unit test, being code, provides documentation and specifications then the programmers are more likely to create documentation and use specifications. If the tests pass, and they are well designed, then they provide current documentation.

During the development process unit tests provide rapid feedback since you can run your tests early and often. This can let you know if your changes break another part of the program. It can also provide feedback to the users.

Creating the test first - that exercises only what is needed - and then a stub for the method (resulting in a test failure), then only adding the

  1. Create the tests first
    1. Only tests the required features of the method
    2. One test per method is the preferred way
    3. There may be multiple checks on the results after the one test per method
  2. Create an empty stub for the method
  3. Run the tests and it fails the new ones
  4. Add only the code necessary to meet the requirements of the test
  5. Run the tests again
    • If it fails then correct the method and rerun the tests
    • If it passes then continue - don't add other unexercised and unrequired features
  6. Refactor
  7. Re-test

Reasons not to Use Unit Tests

Assuming you already have reasons to use it. Don't read these reasons unless you already have reasons to use unit tests. Don't let these reasons talk you out of if completely, but just so you have your eyes wide open before going in, and also are willing do what it takes.

  • It requires a lot of work as you write one or more test per method, class and procedure in your project. You should be prepared for the upfront time commitment and realize that they payoff will come later.
  • It will radically change the way you write code and the way you do your projects. Testing through-out development instead of at the end.
  • May cause a conflict with managers and co-workers if they don't understand the reasoning behind using unit tests.
  • Unit tests should be easy, flexible and simple, and at first you may not yet know how to do them correctly.
  • They are not a silver bullet. If the code is really bad, or the project is very poorly designed then unit tests will not necessarily fix it.

Unit Testing

Setup and Teardown is run before and after each test method. Tests should be discrete and independent so the order of the tests doesn't matter.

Tests should be named Test* or otherwise meet a specific syntax as expected by the framework.

Automate your tests to run as a console application, then grep the results for failures. Or some other automation where you will be notified of a failure. Tests should run during the night and multiple times during the day.

Philosophy

Four variables

  • Cost
  • Time
  • Quality
  • Scope

Let your users / management pick 3 items. The 4th one is the flexible and the developers set the level on.

XP

Unit testing is required for the other features of XP. Everything should be tested. You will write the test first, then the code. The tests should run multiple times per day.

Refactoring is the process of improving existing code. Refactor code to make it simpler and more flexible and reduce the costs of change. You need unit tests before you refactor. Refactoring is about improving design without adding new features.

Keep code as simple as possible. Never write more code than the minimum you need to make it work. Start out with the assumption there is a simple solution. If it is complex then break it into smaller pieces.

90% is easy and 10% is hard. Try leaving this difficult part out based on the concept that it will result in a more stable program in much less time for less money. If there is a choice between coding for a contingency now and doing the minimum then just do the minimum now.

With unit testing and refactoring then dealing with these possible future issues (the last, expensive 10%) can be done in the future at a much lower cost. You may never need that last 10% so you have saved the time and money. If you do need to add it later then you only pay the cost when you need it. Expect change and know that it will come, so you really cannot plan ahead (adding features for the future). Do it simply today and keep it so you can easily change it tomorrow. Make little tiny changes, iterative development, release often

Code that is easy to test is easy to use. It should be encapsulated and uncoupled.

What's New in Delphi with Allen Bauer

Allen Bauer, Borland's Principle Architect, presented What's New in Delphi. I took a three panoramic shots of his session:

This is from my seat in the back row. Robert Love is sitting right next to me, but I cleverly cut him out so his head wouldn't takeover the entire photo.

I took this picture while standing up at the back of the room. In this one you can see the top of Robert's laptop screen, and a ghost image of half of the back of his head. I didn't cut him out so well this time.

Again stadning in the back, but this time with the zoom turned on. The guy in the blue shirt laying on the floor to the left is none other then Nick Hodges. Being on the advisory board must be hard work.


And here are my session notes:

Mostly covering IDE features since that is what Allen Bauer spends most of his time working on.

A full house in a double wide meeting room (the biggest they have next to the main hall), and this session is going to be repeated.

Galileo is a multiple personality IDE. Diamondback has DelphiWin32, Delphi.NET and C# in this single IDE. Diamondback is still a little "out there" on the roadmap. It is not pending release.

Debugging

  • Win32 & .NET debuggers working simultaneously.
  • Debugging .NET code hosted in a Win32 process.
  • AppDomain support in the Module view for managed apps (App Domains show up in the module panes and in the scope browser pane.)
    • Switch between C#, Delphi Win32, Delphi.NET during same development session.
  • Sorting in the modules view
  • Exception notification dialog enhancements
    • Break / Continue buttons
    • Ignore exception type checkbox
    • .net exceptions now show the exception message on dialog
  • Breakpoint view
    • Supports in-place editing
    • Check box to quickly enable / disable breakpoint
    • Toolbar
  • "Log call stack" breakpoint action
  • Multiple debuggers
  • Debugger registration
  • Betted IIS connection
  • Cassini webserver support (still)

Refactoring

  • Rename
    • Renames all occurrences of a symbol, entire scope
    • Will rename occurrences in a Delphi and C# assembly at the same time, if one references the other
      • So if a C# assembly declares a symbol and a Delphi assembly uses the C# assembly then it will rename it all occurrences of a symbol that is shared between the two.
    • This is not a regular text search and replace
    • Does not effect comments
    • If an unrelated symbol has the same name it is not renamed
    • Looks at descendent classes
      • Will alert about possible conflicts
  • Extract method
    • Create a method out of a selected block of code
  • Extract Resource String (Delphi only)
  • Sync Edit
    • Edit all occurrences of identifiers within a selected block of code.
    • Specifically for local scope editing, does not take scope or unselected code into consideration. Not a replacement for rename.
  • Find unit or namespace
  • Declare Field
  • Declare Variable
  • C# & Delphi (Win32 & .NET)

VCL Designer

  • Choose between embedded or floating designer
  • Also has docked and undocked views
  • Improved drag and drop design support.

Lots of cross product pollination between JBuilder and Delphi

Greatly enhanced tool pallet by Corbin Dunn.

If you rename a unit identifier (in any of a number of places) it corrects the name everywhere.

History file lets you compare and backup from multiple history backups

Makes heavy use of community tools - AQTime, Virtual TreeView, etc.

Saturday, September 18, 2004

Chrome

Thanks to Mike Pence on TDAG for this link to Chrome. I had actually seen it previously, but it didn't sink in what it was.

Chrome is an independant implementation of Object Pascal for .NET, with many features from other langauges as well as completely new ones. The main downside is that it is for use inside the Visual Studio .NET IDE.

Friday, September 17, 2004

.NET Languages

Brian Ritchie has a great list of .NET Languages. It looks like it is regularly updated, and as far as I can tell is fairly complete. There are links for more information on each langauge.

Wednesday, September 15, 2004

Design Patterns

Jim Cooper from Falafel has a Design Patterns session right now. I was running a little late and it was completely filled up when I got there. Like sardines. I guess I will catch his paper. I went to his refactoring session and it was really good, and packed, so I should have planned ahead. He is a good speaker.

Outside

One thing about staying at the Hilton or Marriot is they are physically attached to the conference center. This is the first time I have been outside since I got here on Friday. The weather is rather nice here. I will try to find time to post more updates later. I have had a hard time getting to the lab.

Monday, September 13, 2004

Meet the Delphi team

Those last few posts were from the meet the Delphi team meeting. After everyone left I did a count of the chairs and there was at least 300 people. It is hard to get an accurate head count since there were a lot of people standing and sitting on the floor.

Diamondback Preview

They just announced that all attendies will receive a preview copy of Diamondback. I know that after using it I will not be able to use any other development tool again.

Spirit of Delphi

Nick Hodges won this year's spirit of Delphi award. Congatulations Nick!

For those who do not know, Nick is a member of Team B and also on the BorCon advisory board. He has been fairly "famous" in the Delphi community and newsgroups for a quite some time. Clay Shannon has an interview with him on BDN, along with a better picture.

Kylix community project

They just announced the Kylix community project. Teaming up between Borland and community leaders to keep CLX up to date.

More Photos

I was up really late last night putting some BorCon photos together. There are photos from the opening keynote and some from the opeing reception, specifically of the desert table. I also have more panoramas and individual photos, but I'll need more time to post those later.

Wireless

The wireless has gone out on my laptop, so the live posting is limited to my ux50

Diamondback and JBuilder 2005

JBuilder 2005
Calibur RM (Requirements Management) intgrated client, integrated refactoring that communicates with all developers. Built in support for security audits on the code from fortify - could be run automatically.

Delphi Diamondback
Built in unit testing support. Supports both NUnit and DUnit. Greater functionality for building tests then previously available. Plus many, many new features.

It looks like alll the productivity features previously available in JBuilder are now in Diamondback. Looks like features are being added to both at the same time.

Sunday, September 12, 2004

BorCon Day 1 Panorama

Had some fun with my camera. Using Panorama Factory by Smoke City Software I stitched some photos together for a few panoramic shots. Unfortunately this is the unregistered version so there is a watermark urging you to purchase the full version right in the middle of the images. There is an older, limited freeware version also available. I am sure I will either be redoing them in the freeware version or purchasing this program eventually. It is pretty cool. I just used my Sony UX-50, with it's 640x480 camera, and it was pretty dark for most of them, so the quality isn't great. Click on the thumbnail for a big version.

This first photo is from the Opening Keynote, right before it began. You can see the stage with the huge BorCon logo and two screens on it, then the two screens to either side. Standing in the middle is Christine Ellis.

This next image is from the opening reception. It was rather dark, but you can see the casino tables, food tables, arcade games and band stage. Fun, fun for everyone, and I am in the lab posting this instead of at the party.

This final image is where I am right now: the computer lab. Not too many people here. HP sponsored the computer lab this year, so there are some pretty nice machines.

These came out pretty good so hopefully I will be able to get more!

UPDATE: David I suggested Photo Stitch that came with my Digital Camera. I had forgotton about it. I'll put the new panoramas up soon.

VB in Diamondback

This wasn't demonstrated, but it appears that you can use Diamondback to compile vb.net applications as well. It doesn't have a personality for for vb.net so you cannot create vb.net applications, but you should be able to edit and compile an existing application. I don't know if it is going to support visual form design, but I doubt it will.

I am curious what would be involved to create and install your own personallity into the IDE. . . .

BorCon Day 1

Saturday had two great tutorials. Danny Thorpe, with .net 2.0 was very informative. Yukon (MS SQL Server) is the driving force behind 2.0's changes. This is good news because it means that 2.0 is being designed with specific goals, concerning a real world applicatin, in mind. Performance is one of the top goals, which is a much needed improvement since the current .net application performance is so bad ( see language metrics).

The second tutorial was John Kaster's Diamondback overview. This is the next version of Delphi (Win32 & .net) and C#, combined in a single IDE. This will rocket Delphi and Borland well beyond Microsoft for the best development tool. Delphi 8 and C# Builder were good tools, but they were not revolutionary nor were they as pollished as they could have been. We only saw a beta, so it is subject to some changes, but as one of the attendies put it "If half of the features make it into the final release it will be amazing."

The Diamondback tutorial was less of a tutorial and more of a product demo, but there was a lot of information. 215 slides plus demos and other notes.

Saturday, September 11, 2004

Data Explorer

Diamondback has a new Data Explorer which is built into the IDE. It provides a wealth of features for working with Databases. It works with any database and connection type. For example you can create, alter or drop tables. You can drag a table from the explorer onto the design surface to create the connection and the table (dataset) objects. There are so many features to this it is just mind boggling.

CodeFez

Nick posted about Lino's annoucement about CodeFez. It is going to be a software development web site. The founding editors are Nick Hodges, Steve Teixeira, Julian Bucknall, Charlie Calvert, and Brian Long. It isn't directly part of the Falafel Software empire as far as I know.

Brain Full

Sorry, my brain filled up. Posts may slow down for a little bit while I defragment and compress to find more space.

Unicode VCL for Win32

If you need VCL controls for Win32 development then you should check out TNT Delphi Unicode Controls. It is free and supports Unicode completely for VCL applications under Win32. If you are doing .NET development using either WinForms or VCL.NET then you already have Unicode support

DelForExp

John Kaster mentioned this Delphi Code Formater called DelForExp. It provides wholesale formatting of source code to whatever coding standard you might be following.

Beyond CLR

Things Delphi does that the CLR does not

  • Sets -> codegen'd as int or array of byte
  • Typeless var params
  • Type aliases
  • Typed types
  • Class reference types
  • Virtual class methods
  • Virtual constructors

Class helpers

Diamondback Compiler

Compiler

XML doc support fully surfaced for all compilers. Generated XML file is not required for help insight, but is used if present.

New Delphi syntax features (Win32 and .NET)

  • for..in..do enumeration syntax
  • Function inlining
  • support for compiling Unicode and UTF8 source files
  • Multi-unit namespaces
  • New wild-card "uses" syntax (a.b.*)

Win32 Only

  • Unit initialization consolidation optimization

.NET only

  • Compact framework support
    • Compile only
    • No designer or debugger (Microsoft has not provided the SDK)
  • Forward declared record types

Unit Definitions & Requirements

Multi-unit Namespaces

All interfaced symbols in unit "a.b.c" and "a.b.d" and "a.b.*" will be emitted into the namespace "a.b". The unit class that stores global variables and global procedures is named "a.b.Units.c". C# code (for example) would access type TFoo definind in unit "a.b.c" as try a.b.TFoo. If the unit name does not contain dots then the namespace is the unitname along and the unit class is <unitname>.Units.<unitname>

For..in..do

for Node in NodeList do
begin
  ListBox1.Items.Add( Node.InnerText);
end;

Diamondback

John Kaster's session Overview of Delphi (Diamondback) for the Microsoft .NET Framework. The handout for this session is HUGE! A lot of enhancements and new features to cover.

The IDE has multiple personality disorder. It supports C#, Delphi/Win32 & Delphi.NET and the current personality you are using is indicated by the icon. You can have projects of each type combined in the same project group, and can switch between them without closing the IDE.

There is one object inspector and tool palette for all the personallities. Both have improved look and feel and better context management - the contents change based on what you are currently doing.

The welcome page includes an integrated customizable news feed reader. Defaults to BDN content, but additional content can be added.

The IDE supports 3 layout:

  • The Default docked layout (as introduced in Delphi 8)
  • Classic undocked layout (similar to Delphi 7)
  • Debug layout

When debugging your Win32 and .NET debuggers work simultaneously so you can debug both a managed and unmanaged application at the same time. The Debugging .NET code is hosted in a Win32 process.

Can automatically add an exception to the ignore list from the exception break dialog in the IDE. Also given the option to break or continue at an exception.

The breakpoint view supports in-place editing. You can use a checkbox to quickly enable or disable breakpoints.

The CPU view now also shows IL disassembly for managed processes and ASM for win32 processes, both with the souce code integrated in the same view.

Refactoring

Refactoring features supported for all personalities and it knows the langauge and the scope, so all occurances in all files are upated.

  • Rename
    • Refactoring provides a preview showing all changes over multiple files.
  • Extract method
    • Create a method out of selected code.
    • Looks at variables that need to be passed it.
    • Passes by var passed parameters when necessary
    • Removes variables that are used only in new method.
    • Will create a function or procedure depending on if
  • Extract resource string
  • Sync Edit
    • Imediate editing of multiple occurances of the same identifier.
  • Find reference, unit or namespace
    • Not just a find text, it knows the scope of the references, so if you have multiple references with the same name it finds the one that you are referring to
  • Declare field and variable
    • As you need a variable or field it will declare it for you automatically.
    • When declaring a visible field it checks your descendant classes for conflicts.
    • Verifies that you are making a valid decelaration.

Code insite adds Help Insight, which is similar to the feature in Visual Studio, but significant enhanced.

On demand loading of the tool pallet so only the components you need are loaded.

Debugger

New debuggers can be added to the IDE by 3rd party's

Better connection to IIS

Intelligent mode switching

Better evaluators

Versioning

  • Multi-level backups with history view
    • Provides difference view
    • Provides rollback
    • Provides undo for the form designer
    • Does not require StarTeam, but will integrate with history in StarTeam
  • StarTeam integration
    • Enhanced IDE integrated menu items
    • StarTeam project managmenet
      • Create
      • Check in/out
      • Folder management
    • Embedded client
    • External client launching
    • Connect to multiple servers
    • Project manager
      • Project groups
      • Manage associations for project groups
    • Structure pane
    • Items pane files open in IDE
    • History view is StartTeam aware
    • Locking / unlocking / merging
    • Change requests
    • File renames are tracked
      • History is not broken when a file is renamed.
  • Delphi Enterprise and above include a StarTeam license

Miscellaneous IDE

  • Persistent bookmakrs
  • Error insight
    • Expanded real-time error information for source.
    • Integration into the structure view.
  • Help insight
    • Tooltip from XML doc information
  • Updated / consolidated new component wizard
    • Combines all functions of New VCL component / import AX Type library / control
    • Open API

Yukon

Hosts the CLR in-process for greater control. Your stored procedures will be written in managed code. Must be verified managed code. This means greater flexibility while maintaining security and server stability.

  • Takes over CLR memory allocation
    • Yukon takes all the memory for caching, and then provides it back to the CLR as needed.
  • Takes over CLR exception handling
  • Takes over CLR security model
  • Takes over thread scheduling
    • Runs fibers, not threads, so MS SQL server schedules them.
  • Inspects managed code before it is loaded
    • There are security overrides to get unmanaged code to load.
    • Prefers no static data.
  • Aborts/Terminates user code at the slightest provocation
    • This includes infinite loops or any process that takes too long.

User defined data types and aggregates will be supported.

MS SQL Server only works with .net 2.0

Borland has a new database that runs completely in process with 100% managed code. It is based on JDataStore. More details on that as they become available. Called NDataStore, runs on the compact framework. Only has a 1 mb assembly, smaller for the compact framework.

Yukon is Microsoft's attempt to enter the enterprise.

Other Live BorCon Bloggers

I found two other people in this same session (.NET 2.0) that are blogging live: Nick Hodges and Robert Love. Check out their blogs for more details.

TDAG BOF

The Delphi Advocacy Group Birds of a Feather session has been approved. Here are the details.

  • Presentation scheduled for: Monday, September 13, 2004, 1:00pm - 1:45pm, Room A2
  • Course#: 9004
  • Title: Delphi Advocacy Group (TDAG)
  • Track(s): C#Builder; Delphi; People, Teams and Management
  • Type: Birds-of-a-Feather
  • Level: All
  • Prerequisites: None.
  • Description: For members of The Delphi Advocacy Group (TDAG) and anyone else interested in being involved in the "grass roots" promotion of Delphi and Borland in general, this session offers a group discussion and a chance to meet other "advocates".

What .NET 2.0 Means

What .NET 2.0 mean to You

It will be out soon, so be aware of it! Even if you are not targeting it your end users may have it installed.

When developing with 2.0 you need to re-evaluate your techniques, best practices and debugging because of all the changes. 2.0 is more mature then 1.0 - .Net is out of its adolesence.

The 2.0 framework is actually smaller then the 1.x framework because it uses generics internally.

Avalon will be released on 2.0, but Longhorn might not be here until .net 3.0

What .NET 2.0 mean to Microsoft

Microsoft is betting the server farm on .NET 2.0 with its attempt to move into the Enterprise Computing space with Yukon. Everyone said that they would take .NET seriously when Microsoft integrated it with Office - It is a bigger deal that Yukon will use .net then for Office to support it.

.Net 2.0 Compatibility with .Net 1.0

Very few issues with source compatibility

Binary compatibility

  • Requires a side-by-side install with 1.x and 2.0, this is the first time a side by side has been implemented since 1.1 replaced 1.0. Is this the return of dll hell?
  • By default a 1.x app will not run on 2.0, unless 1.x is not available (not preferred). A system policy or app.config can "float" a 1.x binary up to a 2.0 framework, but it is user beware.

Delphi 8 can develop for 2.0, but you must rebuild the rtl with 2.0. See Allen Bauer's The Oracle at Delphi

Get Ready for .net 2.0 with Danny Thorpe - Part 2

Borland will hopefully have compact framework support by 2005.

ASP.NET 2.0

"Code Beside" vs. "Code Behind"

In Code Behind the assembly descends from the aspx file. Now with Code Beside they will both be the same class (partial classes).

Declaritive Databinding

Similar to Delphi's data binding, but a source code solution.

Provider Model

Set a modula as the provider of a specific service.

Web Parts

Personalization for building portals. Takes care of the serialization and storage of personalized information.

Master Pages & Themes

Master Pages allow multiple file to start with the same look.

Theme is similar to a style sheet. Can be referred to by the code.

Get Ready for .net 2.0 with Danny Thorpe - Part 1

Danny is breaking down all the details on .net 2.0.

Yukon is the driving force behind 2.0.

At the CLR level there are:

  • Generic Types
  • Expanded CLR Host (to allow Yukon to host the CLR)
  • 64-Bit Platform (not until 2.0)
  • Improved Compact Framework (less Hackish)

C# Language changes:

  • Generic Types (separate from the CLR Generic Types)
  • Partial Classes
  • Anonymous Methods
  • Iterators (yield)

Generics - The Delphi syntax will be significantly cleaner then C#'s syntax. This is mostly because Delphi is top down while C# is still a 2-pass compiler.

Anonymous methods - Instead of overriding a method you just fill in the blanks - putting in the code that handles it. It automatically creates a sibling method. Used to create a delegate - instead of putting in a method name you just put in the body of the code.

[C#] { int localVar = 10; obj.eventProp = new delegate { return 42 * localVar; localVar = localVar + 1 }; }

Similar feature may or may not be implemented in Delphi since this is a C# syntax feature and not a CLR feature.

Partial Classes - C# syntax that allows a class to be split into multiple source files. Once compiled the class is a single class with no representation of the original split. This will allow one source file with all the machine generated code in one file and then the user generated code in another file and then that can be compiled into a single class. This is to provide the same goal that Delphi had with the DFM and the PAS files separate.

Visual Basic.NET Changes

  • Support access to Generics Types, but not define them.
  • Partial Classes ("Extends")
  • Operator Overloading (Finally)
  • XML DocGen
  • Debugging: Edit & Continue - cannot edit currently executing code or code that is on the stack

Managed C++ Changes

  • More of a Do-Over then a few changes.
  • Syntax has been reworked
  • All new managed codegen and interoperability
  • Profile-Guided Optimizations (POGO) - while testing performance data is collected, and then used with the linker to improve the optimizations.

64-bit Platforms - Currently available in Beta for the AMD 64 instructions, close and Itanian-2, not Itanium-1

  • JIT compile IL to native 64 bit instructions
  • SizeOf( Pointer ) != SizeOf( Integer )
  • IntPtr type will be 64 bits wide - the size of a pointer
  • Native int will also be 64 bits (IntPtr)
  • P/Invoke will call into unmanaged Win64 code - you cannot use 32 dlls - must crosses processes to access 32-bit
  • IL binary portability - if flagged platform agnostic (a feature with 2.0)

VCL for .NET needs to be updated to work on 64-bit code. The 64-bit ready version will warn / error on incompatibility. Has not previously been supported.

Win32 Delphi may get Generics, unlikely to get Partial Classes.

Friday, September 10, 2004

BorCon Day 0 - Friday, September 10th, 2004

Arrived at BorCon and registered today. Met another Delphi developer on the train that is actually from Nampa too. We visited some and found out that he actually lived a crossed the street from one of the houses I grew up in. Small world.

We went looking for dinner and the drug store to pick up a couple of things I was missing. Found a great pizza place and had the Great Chicago Fire - it had Italian sausage, cilantro and sport peppers. Sport peppers turn out to be like pepperoncini peppers, maybe a little spicier. I had never heard of them before.

Found the drug store and picked up the few things I was missing, including breakfast and snacks for the next couple days.

Decided to look over my bag and its contents. First of all we got a nice backpack again this year. It looks like a regular old backpack, but is actually a laptop bag as well. Pretty cool.

The badge holder this year doesn't have a slot to hold my pen. That is a really unfortunate. I thought that slot was very useful. The pen is a lot larger this year, maybe it wasn't going to fit in the slot. Personally I'd rather have a smaller pen that I could keep in my badge even though this seems like a rather nice pen.

In the bag we have:

From Borland we have the BorCon program, conference evaluation form, discount price list and an Exhibit Hall Treasure Hunt card. It has a map of the exhibit hall, and if you get a stamp from each exhibiter then you are entered into a drawing for $250 bookstore shopping spree or other prizes. No Conference CD, I will need to see if I just am missing that.

From Microsoft:

  • Tablet PC Developer Start CD version 1.2 from Microsoft.
  • Windows XP Service Pack 2 CD. They are really trying to get people to install that one. I'm still not sold on it though. I'll give it some more time and wait before installing it.
  • ASP.net Resource Kit - bunch of 3rd party ASP.net components and some other related stuff I guess.

We then have a few papers:

  • An add from ProcessExchange for a presentation on Agile Methodologies.
  • A quiz from Versant to pickup a free prize and be entered in a drawing for an iPod.
  • HP Software Developer program flyer. See DevResource.hp.com
  • The final issue of Delphi Informant from August. They will be missed.
  • The September issue of ASP.net Pro magazine. Which includes Virtual Web Developer 2005 Express Edition Beta on CD.

And of course the T-Shirt which is really cool this year.

Time to hit the sack. I'll have more to share tomorrow.

At Airport

Made it to the airport in Boise. Headed to San Jose for BorCon. Seems like I heard that there was an access point here. Maybe down in the entry / waiting area, but not up here by the gate area. I know there is a Starbucks with Wi-Fi near the hotel in San Jose (big surprise, I know), so I can post from there. I doubt I will take the time to look for a hot spot at the San Jose air port, maybe on the way back.

The terror level is elevated to Yellow. I wonder if that is because tomorrow is the 11th of September? I have a picture of the sign indicating the level. I think Orange and Red are above Yellow, so things are probably pretty safe. I saw a photo of the French terror alert levels. They were like Deny, Hide, Colaborate and Surrender. I will try to find it and link to it from this article.

This is my first post with HTML tags in it. Hopefully they come through OK. If not then I will clean it up later.

Update: Arrived safely in San Jose. Interesingly the crew for my plane went through the security check right behind me. I remember that it used to be that the crew didn't have to go through the security screening. It is good to see that they do now.

While walking to get my lugage I saw a business center. I decided to pull out my UX-50 and scan for Wi-Fi. I found one, but I was just out of range to send on it. In fact I locked up trying to send. In the future I will be sure I have one bar before trying to send.

Turns out there is a hot spot in the Hilton lobby. It is really hot and hummid here.

Thursday, September 02, 2004

September 2004 Meeting Wrap-up

Mono

We opened with Steve's presentation on Mono. He was able to get it installed on SUSE 9.1 Desktop from Novell. He originally was going to do a build and install of Mono from source code, but ended up hitting a road block that he was unable to find a solution for. Mono comes as packages for SUSE 9.1, so that seemed like a likely way to go.

Steve's goal was to port a current project in ASP.NET against Oracle to Mono. He found that the source code ported with little effort. The only issue was a call to ExecuteOracleScalar didn't work. Unfortunately he also had some problems with the Oracle client since Oracle no longer supports SUSE 9.1, only Red Hat.

Mono assemblies are compatible with both Linux and Windows running .NET. So you can develop on either platform and deploy to the other without much trouble.

Steve also showed us MonoDevelop, the IDE for Mono development on Linux. It is based on SharpDevelop. The IDE is fairly good, but is lacking in some features from Visual Studio.

Another resource for Mono development is Got Mono.

News

We covered some various news and talked about the upcoming BorCon and news about the new version of Delphi (Win32, .NET, C#, Refactoring, Unit Testing, TKitchenSink, etc.)

Book

Randy covered Chapter 3 of Design Patterns Explained. This month no-one else read, mostly due to the confusion on book editions.

We had a big box of swag to distribute to those who were in attendance. Soon we should start getting Swag form INETA.

Next month: We are planning to have Rational here talking about the Rational Unified Process. There will also be some coverage of BorCon as well as some reading from the book. See you all there.

September 2nd Meeting

Just a friendly reminder, we are having our meeting tonight, September 2nd at 7 PM. Steve has Mono to share with everyone. I may or may not be there unfortunately, but I have a box of Microsoft propaganda and goodies for all. As well as copies of the last issue of Delphi Informant.

See you all there!