Posts in category .net - page 11
AnkhSVN 2.0 is now out with the majority of these features making the cut!
Now that AnkhSVN 1.0.3 is out with support for Visual Studio 2008 we can discuss our future plans for AnkhSVN.
Our preliminary road-map for AnkhSVN 2.0 is:
- Improve user experience
- Refine windows, options and icons
- Localize dialogs and messages
- Support customization of icons & menus
- Develop interactive log window
- Add keyboard support (short cuts & tab order)
- Extend integration
- Subversion 1.5 branch & merge tracking
- Subversion property editing
- Visual Studio 2005/2008 source provider model for better integration
- Foster developer participation
- Simplify build environment with MSBuild
- Reduce code-base with SharpSvn
- Switch Visual Studio API from automation to source control
- Provide source-on-demand using Sourceserver
Switching the provider model means we have to drop Visual Studio 2003 support for 2.0 but means we get to use .NET 2.0+ features as well as a much faster and more robust mechanism for extending Visual Studio.
The timetable is quite aggressive and I’m hoping we can get quick regular builds out for people to try.
Rob Conery got me thinking about web site maintenance and I put forward a brief comment on the two distinct types and how Visual Studio handles them which I have expanded upon here.
Primarily for working with ad-hoc web sites that have programmed elements. Easily identified by customer-specific content present in aspx files.
No solution or project files are required and the pages and source can reside locally (file system, IIS) or remotely (FTP, WebDev/FrontPage extensions) via the File > Open > Web Site… menu option.
Code-behind and classes are typically stored on the web server which compiles them in-memory on demand. Changes can be made to the files without restarting the application and losing sessions.
|Quick edit, test, deploy cycle||Syntax errors at run-time|
|No need to compile or restart app||Can’t create an installer|
|Source always available||Source on server useful to hackers|
Web application projects were introduced as an add-on for Visual Studio 2005, later rolled in to VS 2005 SP1 and made a full first-class citizen with Visual Studio 2008.
Like the name implies these are primarily for web applications, those times when you have written a product or solution that happens to have a web interface.
Web application projects exist on your local drive and are treated like any other VS project type and can be added to existing solutions are subject to full compilation, validation and build steps.
Deployment is typically via MSI installers however you can also utilize the addition Web Deployment Projects add-in which allows you to deployment directly to servers which is useful for deploying to test environments.
|Controlled build & deploy process||Deployment causes application restart|
|No class files on web server, dll only||Can’t deploy individual classes|
|Syntax errors at compile time|
Sander and I were discussing this article and thought an interesting solution might be to use the Web Application model for local development but to use the Publish option to publish all solution files to an intermediate directory.
Then in the intermediate directory just remove the
bin/applicationname.dll file and copy to the target. This should prevent an application restart unless the
global.asax/global.asax.vb files have been modified.
Radio 4 covered the The Six Word Memoir competition, inspired by Earnest Hemingway’s wager he could tell a complete story in just six words. He deliciously delivered “For sale: Baby shoes, never worn” earning him $10.
Expressing a life story in six words is just as tricky. Some of my favorite submissions include:
Found true love, married someone else. B. Stromberg
Work smart. Love what you do. Michael Scala
A limit on words means getting straight to the point – Twitter’s 140 character limit results in short useful extracts.
Short succinct messages require more thought, careful editing and of course time. Getting the balance right between losing important information and the laws of diminishing returns takes practice and is very dependent upon the mix and size of your audience.
As a developer I find these skills applicable to the following areas:
I’m not the world’s most prolific blogger but my posts tend to be short and to the point. If you didn’t find it interesting you should have realized quite quickly.
Being well-written and interesting gives a better chance of being added to StumbleUpon, Digg or other blogs.
My latest presentation on LINQ consisted of around 20 logically-grouped slides with a few bullet points and tiny code samples.
I saved time by not writing a script and let the talk flow more naturally with interaction from the audience. This meant the audience chose the programming language and I broke into demos once they looked anxious to see it.
My own projects change design dramatically during prototyping thanks to refactoring and the great tools available. It is for this reason I do not practice test-driven development.
I need my code and design to be as succinct as possible at this phase. Unused code, interfaces or stubs are wasted words. Verbosity. Declarations that are read and compiled but not used. Verbosity.
Once the overall design is settled the unit tests and fleshing out of functionality comes.
Where extensibility is needed I work with those who will consume it to ensure the interface does what is required and nothing more. Three consumers is quoted as the magic number.
If anyone has any tips, informative articles or recommended books on succinct writing please leave them here.
Now if only I could get this post down to six words…
Long-time friend, fellow co-host of the GSDF and the coding genius behind the open-source Ogre3D engine Steve Streeting has written an interesting piece on Open source adoption; countering the fear and doubt. I have no doubt that this was fueled by a lengthy discussion last night in the Ship & Crown pub – a common ritual after our GSDF meetings.
The reasons why I adopted .NET as my primary platform despite being tied to a single-supplier are:
- Ease of deployment & set-up
- Low resistance to adoption
- Great tool integration
- Official & community support
- Love for C# and the CLR
The ALT.NET movement
Many .NET developers are reluctant to look wider afield but this is not exclusively the case and a person focused on the .NET platform but open to selecting beneficial alternatives to the Microsoft prescription is exactly what the Alt.NET moniker was coined to encapsulate.
SourceForge lists over 6,000 open-source C# projects alone and many well-known open source Java & PHP projects have made their way to the .NET platform. NHibernate, NUnit, NCover, Spring.NET & DotNetNuke alongside new .NET developments such as xUnit.NET, SubSonic, Subtext etc.
Best of breed
Where a non-Microsoft option is functionally superior or more cost effective I will consider it whether it is proprietary or open source.
I do not however select a solution simply because it is considered the “best of breed” at that particular moment. Integration, training, availability of support and experienced developers, deployment, cost, barriers to entry and road-maps must be taken into account.
Given that Microsoft provide the .NET platform anything ‘in-the-box’ scores highly in many of these areas.
Sometimes a non-Microsoft solution comes out on top or there is a compelling reason to adopt it anyway. This is why my toolkit already contains Subversion, TortoiseSVN, AnkhSVN, Reflector and NUnit.
Robust alternative projects
I have concerns about longevity and support on projects from companies and hobbyists regardless of whether they are open source or proprietary.
NDoc, CVS & NullableTypes are three I’ve used which died when an alternative commercial or open source project gained more momentum and SourceForge is seemingly littered with thousands of dead projects.
If a project you rely upon dies you have one of a number of options:
- Migrate to something new (gained little from open source)
- Fix bugs and problems yourself (time spent working outside your business domain)
- Have a support contract with somebody else to work on it (single-supplier scenario?)
Competition is important
Competition is important but I can not, in a professional capacity, recommend to customers something that I believe is less suitable in the interest of keeping the competition healthy.
Confusion about choice
I hit this one first hand developing my final-year degree project which required development of a web site in Java.
The number of choices for Java was incredibly confusing despite knowing the syntax. J2SE or J2EE? JSP, Struts, Spring or another servlet package? What about the database and ORM? Application server? What versions work together? What overlaps? Would I be able to get experienced developers? If not how long to train them up?
.NET has many options too but I can start with the .NET Framework and get right into solving the domain problem. If the going gets tough I may have taken a wrong turn and need a different solution. That could involve choosing an alternative component or framework but now I’ll know what problem I’m trying to solve when I go looking.
Developers on complex projects felt that WebForms wasn’t ideal – it is hard to maintain, the output bloated with leaky implementation (ViewState) but it serves many developers well enough.
Open-source projects such as MonoRail addressed this taking cues from Ruby on Rails. Microsoft acknowledge this and add a similar MVC framework going so far as to support additional engines and components allowing elements of MonoRail to be used. Those guys could drop the glue required to get their engines into the pipeline and just concentrate on engines if they wish.
What works for me
Stay small and focused until you feel friction.
Friction isn’t always technical or immediately obvious. It might be future plans and it’s often people. It might be what isn’t there and will never be.
Time lost on friction is not spent developing your domains features.
If another solution causes less friction, use it but don’t underestimate unknowns.
I guess that’s just being pragmatic.