Friday, November 23, 2007

Daily Links - 23/11/2007

What is the MVC noise all about, anyway?
Pt 1
Pt 2
Pt 3

New Compression Features in SQL Server 2008

Snippet Editor for Visual Studio 2005/2008

Linux install for newbies
"Linux distribution based on Ubuntu 7.10 that has lots of packages in its repositories (like multimedia codecs, Adobe Flash, Adobe Reader, Skype, Google Earth, etc.) that are relatively hard to install on other distributions"

Optimise SQL Server queries with these advanced tuning techniques

DLinq (Linq to SQL) Performance

Cruise Control.NET and VS 2008 web projects

SVN Server
"everything you need to install, configure and manage Subversion server for your team on Windows platform."

Reducing Server Load and Network Traffic in REST/Ajax Architectures

Exploring one of M$ AJAX's often overlooked features

Wednesday, November 21, 2007

Daily Links - 21/11/2007

InterSystem's Cache
"high-performance object database that runs SQL five times faster than relational databases"
It's got free (single user) download, so check it out.
Anyone have experience in using Cache? Leave a comment.

15 -hot- tools that made me a coding Paris Hilton.

Yet (E)Another Tab Interface Implementation (YETII)
"simple, yet functional tab interface implementation"
Javascript tab interface

Visual Studio 2008 Express Editions
Visual Studio 2008 Express All-In-One DVD image file

AJAX Control Toolkit
AJAX Control Toolkit Samples

SQL Server 2005 Compact Edition (for Mobile Devices)
"1.7MB free redistributable runtime engine for SQL Server 2005 Compact Edition"
Downlaods

JavaScript TimePicker
Nifty clock interface with drag functionality on hour and minute hands

Friday, November 9, 2007

How To: Play Sounds (C# 2.0 Compact Framework)

NOTE: If you're targeting the 3.5 framework, you can use the new SoundPlayer class

I'm busy writing a simple Egg Timer Application in my spare time for
my Mobile Phone (I keep forgetting to switch the damn water off when
watering the plants / filling the pool!)
One of the things I needed to do was to play some sound when the time
ran out. The sound file also needed to be embedded in the application
so as to avoid dependencies (which tend to cause trouble).

I found this article from M$.
I had specific problem with this:
Sound sound = new Sound(Assembly.GetExecutingAssembly().GetManifestResourceStream("SoundSample.chimes.wav"));
sound.Play();
I spent quite a bit of time trying to get the sound loaded, but to no avail.

Here's the work-around:
1) Add a sound file as a resource:








- Open the Resources.resx file of the project, and add an Audio Resource
- Select "Audio" type, and click "Add Resource"
- Browse to the sound file you would like to use (*.wav)

2) Copy the Sound class from the above M$ article, but change the constructor that takes a Stream, and change it to a byte[] parameter. Like so:
public Sound(byte[] soundBytes)
{
m_soundBytes = soundBytes;
}

3) Then instead of using GetManifestResourceStream(), pass sound bytes into the constructor if the Sound class:
eg:
Sound sound = new Sound(JaxEggTimer.Properties.Resources.beep);
sound.Play();

If anyone has managed to get the GetManifestResourceStream thing to work, please let me know how. (Leave a comment for others to see)

Tuesday, October 23, 2007

Daily Links - 22/10/2007

Firefox Mobile

Free .NET obfuscator
free, but if you want support or upgrade options, you'll need to hand over some cash.

TOGAF
"The Open Group Architecture Framework, is an industry standard architecture framework that may be used freely by any organization wishing to develop an information systems architecture for use within that organization."

Top 5 Application Security Vulnerabilities in Web.Config Files

Mastering JavaScript - Concept and Resource Guide

Friday, October 12, 2007

Golf: The Best Driver

Maybe the title should be "the best driver for me", but anyways - here's my opinion:

Overview of my game:
Fast swing speed (100+ mph)
High handicapper (tend to slice)

Like most beginners, when I started playing golf, I left the driver at home. I started out teeing with the a 5-iron, which got me a reliable 180 meters off the tee. I soon progressed to a few "driving" irons, which got me up to 200, followed by the 3 Wood.
Here follows my progression in drivers:

1) Ben Hogan CS-3 with draw spec - $140

It has a 420CC head, which is was a nice progression from the 3 Wood. Hitting the large over-sized Drivers was still a problem. It has a great high-quality Aldila shaft, and the draw brought the ball nicely back in play when opening the shoulders (which usually produced a slice or fade) Great club if you're on a tight budget.

Website
Reviews

After hitting a while with the Hogan, I started to do a little more research into the driving game, and found this site.
The top Driver according in 2006 was the Tour Edge Exotics, so naturally when the local pro shop had a special, I bought one.




2) Tour Edge Exotics - $499

9 Degree with stiff shaft. Wow. Added another 30 meters to my drives, though it's a little harder to get a draw action.

Website
Reviews
TheSandTrap Review






3) Nickent 4DX - $250

Haven't hit with this club yet (not available where I'm from), but it looks very promising. Same titanium make-up as the TE, but it has a draw spec model (ala CS-3)
Top of the rankings golftestusa 2007. It also looks like this club is a lot easier on the pocket than the other top-of-the-line clubs.

Website
Reviews

Thursday, October 11, 2007

Daily Links - 11/10/2007

Layered Architecture, Dependency Injection, and Dependency Inversion

Database Performance Optimization - Denormalization using MySQL Triggers

Caching in ASP.NET while making sure that cache data is synch'ed with the database - in 3.5 minutes

Google Gears
"open source browser extension that enables web applications to provide offline functionality"
"Gears provides three key features:
* A local server, to cache and serve application resources (HTML, JavaScript, images, etc.) without needing to contact a server
* A database, to store and access data from within the browser
* A worker thread pool, to make web applications more responsive by performing expensive operations in the background"

Speed Up Your Site! 8 ASP.NET Performance Tips

43 Exceptionally useful AJAX Applications

Tuesday, October 9, 2007

Coding .NET for Linux Environments (free software)

Grasshopper 2.0
Implements a cross-compiler that translates M$ Intermediate language to Java bytecode
It seems the free edition only supports Tomcat though, so for commercial App Servers like IBM Websphere, you'd have to buy the enterprise edition.
product overviews and reviews

Mono
"Mono allows your existing binaries to run on Linux with copy-deployment."
It's basically an open-source .NET framework for Linux

IDE:
MonoDevelop
"free GNOME IDE primarily designed for C# and other .NET languages"

Daily Links - 08/10/2007

Silverlight links

GOA Winforms for Silverlight and Flash development
Winforms controls for Silverlight development

SQL Server: Notify user of long running process
...also handy for keeping long processes alive in .NET

Cool UI Templating Technique to use with ASP.NET AJAX for non-UpdatePanel scenarios

More than 100 on-line web 2.0 generators

Super easy SQL Server 2005 Database Schema change auditing

Scott Guthrie announces ASP.NET MVC framework at Alt.Net Conf

How to debug web applications using Firebug

Working with DataReaders
Overview article on using DataReader for efficient data access.

ScaleOut Software (3rd party software)
Distributed caching for server farms

tangible FREE modeling tools for Visual Studio.NET
"With tangible modelling tools you can directly create Use Case Diagrams, Component Diagrams, State Charts, Class Diagrams, Activity Diagrams and Persistent Object Models."
I would like to have seen sequence diagram integration

Friday, October 5, 2007

Daily Links - 04/10/2007

More articles wrt [Distributed] caching
Caching Architecture Guide for .NET Framework Applications
NCache - distributed caching for .NET

NHibernate for .NET - persistence framework for .NET (also provides model whereby you can "plug in" the caching mechanism)
"It handles persisting plain .NET objects to and from an underlying relational database."

Releasing the Source Code for the .NET Framework Libraries

Efficient XML Interchange (EXI) Format
Highly compressed XML standard for across-the-wire transactions. Links are from
previous post comments, but I thought it interesting enough to link here.
Implementation from 3rd party vendor: AgileDelta

Wednesday, October 3, 2007

Daily Links - 03/10/2007

A Raw Serializer
Good article on serialization covering Binary, XML, Compression and Encryption of data streams

Surface computing hands-on article

Utilities.NET
"Utilities.NET is a collection of helper classes and components for quickly solving common .NET programming tasks."

Profiling .NET Applications
Tutorial on profiling .NET applications using ANTS

Subversion 1.5 features

Some articles on [Distributed] Caching:
Distributed Caching with Memcached
Domain Objects Caching Pattern for .NET
Web Caching Architectures: Hierarchical and Distributed Caching

Logitech vs M$ Bluetooth mouse comparision

Thursday, September 13, 2007

Tuesday, September 11, 2007

Daily Links - 11/9/2007

What's new in .NET Framework 3.5

Selling your own software vs working for the man (WFTM)

Create strong-named assemblies - the easy way
some more on Strong Naming
I'm yet to be convinced of the value of strong-naming your assemblies, since it's a bit of a hassle, and easily hacked - if anyone has convincing arguments for strong-naming, please comment

Daily Links - 10/9/2007

Gaphor - Free UML modeling tool
Supports UML 2.0 standard

Overview - ASP.NET 3.5

Is JSON just for AJAX?

10 Tips for Writing High-Performance Web Applications

One Shell Command to delete all svn hidden folders

Determining when last a Stored Proc has been altered (SQL Server)

comparison of M$ Ajax and Gaia Web Widgets Framework
This article specifically compares data across the wire for an AJAX operation.

Free windows forms component library - Krypton Toolkit
Seems to have a number of office UI laf components. Does seem to be a bit of a plug for their commercial components though.

Making Windows Forms thread safe
Link 1
Link 2
In order to make windows forms have a responsive UI when implementing process code, you need to execute the code on a separate thread. These articles deal with updating the UI from a different thread.

The .NET answer to Google's GWT - Open source AJAX framework extending WinForms over ASP.NET
Not really comparable to GWT - since GWT operates with client-side javascript, and
VWG is server-side Ajax, but anyway - that's what the title says.
VWG seems to implement a different kind of Ajax to the other Ajax framework implementations - server-side Ajax for web UI
Check out an article on it here
...and here's an article on creating your first VWG application

Friday, September 7, 2007

Daily Links - 7/9/2007

Continuous Integration For .NET 2.0 Development Environments: Downloadable Booklet

Top 10 Tips on Version Control for Small Agile Software Teams

JavaScript Tutorial - using setTimeout & setInterval

Simple Tutorial on How to set up Subversion
Subversion is an alternative open-source source control software
Visual Studio plugins that support SVN include Ankh and VisualSVN

Why Write Test Code?

Beautify your Blog's Code Samples with These Syntax Highlighters

XML Notepad
View an XML file in treeview / value format (no tags to confuse layman users)
Also handy for creating template xml files

DataBinding an Enum with Descriptions
Handy article on binding Enums as datasource to controls. Includes .NET 3.5 extension method use

101 Tools for conversion
List of conversion tools to convert files from one format to another (media / documents / images etc.)

Thursday, September 6, 2007

Daily Links - 6/9/2007

Programmer or Developer?
An article on the difference between the two.

Evolutionary Software Architecture
follow-up to previous linked post Do we need Software architects?

LinQPad
Query databases / objects etc with LinQ instead of SQL syntax

CodeSmith
Template-driven code generator (supports any language)

Merging .NET assemblies using ILMerge
Gilma - GUI for ILMerge Application
- this should come in handy for XCopy deployment ie: merge all your dependancies into the exe assembly

Monday, August 27, 2007

Daily Links - 24/8/2007

Add Google Maps to your .NET site in 10 minutes

The Yield statement in C#

Behaviour of "as" in C#:

Dependancy Injection from the trenches

How much interest is there in JavaFX?

Beware, the developer who isn't interested in development!

Web Service List
Quite a thorough and diverse listing of available web services.

... And to test calls to all those web services: free open-source tool for testing web services: SoapUI

Increase blog earnings:
Link 1
Link 2

Promoting your blog:
Link 1
Link 2

Toshiba 32Gig SD cards

Removing backgrounds quickly in photoshop

Thursday, August 23, 2007

Daily Links - 23/8/2007

Latest ASP.NET AJAX Articles

Martin Fowler's Bliki
If you haven't heard of Martin Fowler, and you're a software developer, you're loosing out. Start here and here

.NET Gmail API
Handy open-source library for automated Gmail integration from .NET

...and for those who have been on large ambitious projects:

Wednesday, August 22, 2007

Daily Links - 22/8/2007

Introduction to Scrum and Agile Development

60 AJAX developer resources and tutorials

MbUnit + NUnitForms = MbUnitForms

...and finally something I think most of you have seen, but since I seem to be reminded of it on a daily basis, I thought I'd post it:

Tuesday, August 21, 2007

Daily Links - 21/8/2007

Software Development:

Null Coalescing Operator
I prefer "normal" code though - this is not the most readable code. Use sparingly IMHO

Continuous Integration: (CI)
CI with Draco.NET

CruiseControl vs Draco

CruiseControl with Team Foundation Server (TFS)

CI White Paper

TFS Source Control

Golf:
Beginners Golf Swing Articles
(no "please pay us before we tell you our not-so-secret secret to a correct golf swing")

...and finally - something you'll identify with :)

Monday, August 20, 2007

Daily Links - 20/8/2007

Browse CodeProject directly in VS 2005:
VS 2005 Code Project Plugin

Something I discovered a while back which has proven quite handy - nullable types in C#:

XML Serializer:
I've actually implemented XML serialization as a persistence mechanism in my base class, but this is also a good (probably better) way of doing it. Simple and clean - I like.

Software Dev Lesson - don't under-estimate the power of eye-candy

classic dilbert







Cars:
Everything you wanted to know about the latest Astin Martin DBS

Games:
Bioshock reviews.
Seems to be living up to the hype and publicity.

Good news for warhammer & xbox 360 fans:
Warhammer 360 game
I actually prefer the 40k universe though.

Random Thoughts - IBM has the best sales team in the world!

Thought this article was quite amusing:
Top five problems in IT business: Rational VP
...while in-and-of itself, it makes quite a bit of sense, the humor lies in the source.
I have recently had some run-ins with IBM development products (Rational Application Developer / Rational Software Architect/ Websphere Application Server), and found them to be probably the most unproductive development tools I have had the displeasure of using (and not because I was a Java newbie, or because I come from a M$ development background - many of my Java Developer colleagues feel the same).
Of particular interest, therefore, was point #3: "Skills Modernization" - since IBM Websphere Application Server still only supports Java 1.4 - and good luck getting any semblance of productivity out of it.
Needless to say this was not a very happy entry for me into the world of J2EE. We have since moved the development environment to JBoss and Eclipse. (I have also since dumped a very capable Eclipse for the l33t IntelliJ by Jetbrains.)
My conclusion as to why the big corporate I work for insists on using IBM toolsets - IBM have the best sales team in the world!


Friday, August 17, 2007

Daily Links - 17/8/2007

Design your own website and have it hosted for free:
FreeWebs article

Catch is there are google ads on the top of your site (along with the usual bandwidth and data limits), but the UI for building your site looks easy and user friendly.

Thursday, August 16, 2007

Wednesday, August 15, 2007

Handy Website Links

Below is a list of handy websites I use fairly frequently:

Common:
Google
"The" search engine
iGoogle
Custom home page for the above. Very handy for maintaining/obtaining useful information
Digg
A collection of web articles of interest. Basically a summary of what is popular on the web
Daily Dilbert
Good humor relief for anyone who's stuck (or was) in the corporate world. There's a new strip for every day.
Homestar Runner
Entertaining cartoon - excellent for those days when you need a pick-me-up
It's fuhdwagads!!!
XE
for all your currency conversion needs

Software Development:
DZone
Current posts of interest for general software development - mostly for the Java world, but other languages / subjects are also included
DotNetKicks
Current posts of interest for .NET specific topics.
InfoQ
Articles addressing more general enterprise software development trends
Planet Source Code
Great resource for "how-to"'s for source code for multiple languages
The Code Project
another great resource for "how-to" source code (.NET specific)
Resources For Geeks
Links for tools that come in handy for PC Geek activity

Sport:
Cricket Info
All the current cricket info, including live scores
SA Rugby
Rugby news (specific to South Africa - go Bokke!)
PGA Golf
News and live scores for the PGA Tour
Golf Review
Community reviews of everything golf - I use it for equipment reviews
Golf.com
Another handy golf site for news / reviews

Writing:
East Of The Web
If you're in need of short doses of reading - some good short stories to be found here. (Unfortunately they decommissioned their short-story community site IMO it was the best one available on the web)

Gaming:
MetaCritic
Collective reviews for games on most systems. They collect reviews for other things like film / movies / books / tv / music as well.
bits bytes pixels & sprites
Cool blog with latest gaming news
Gamasutra
Site for the latest news in the gaming industry

Movies:
Movie Trailers
Download latest movie trailers
IMDB
Database of all movies / actors with ratings / info etc.

Other Handy Website Links:
Handy Website Links - South Africa
Handy links specific to South Africa

Got any to add? Post a suggestion.


Daily Links - 15/8/2007

Full vs Compact Framework Development:
I wanted to know if I could use a common DOM (Domain Object Model) assembly that was written in .NET 2.0 using the .NET 2.0 framework, and apply a .NET Compact Framework UI on top: Here's an article which was kindly forwarded to me: (Thanks Carel)
Merge Full and CF .NET Development

Writing mobile games on the compact framework:
Writing Mobile Games using CF

Cool face that follows mouse:
Just something cool I came across while surfing Digg
Moving Face

Visitors World Map

Locations of visitors to this page

Tuesday, August 14, 2007

Correcting a golf slice

I've only recently started playing golf, and am still learning the very hard lessons on how to play.
I recently purchased a Ben Hogan CS 3 Driver (IMO the best value for money driver on the market - if you can find one).
When I first started playing, I couldn't hit a Driver at all, resorting to the trusty 5-iron, which would go a reliable 180 meters off the tee. I eventually progressed to my Spalding 3-Wood, and then the Spalding Driver.
Convinced I could now hit the "big dog", I purchased the Ben Hogan with a draw tendency.
Wow - 230 - 250 meters with a slight draw - excellent!
...but I soon ran into problems, which are described here:

Problem #1: Massive hook, with very little distance gained.
Solution: Turned out that my back-swing was way too short, and inside the "swing-plane", resulting in my hands turning over the ball ala tennis top spin. I adjusted my back-swing to pull further back until I could see the club in the peripheral vision of my left eye (which usually meant that the club was horizontal to the ground)
Yeah! Perfect Drives for the next 5 weeks.

Problem #2: Massive slice, traveling about 40 meters right, and 250 distance (which usually meant I was in irrecoverable hazards, or the neighboring fairway.)
Solution: Turns out there's a very fine line in my swing between slice, produced by and outside-in swing, which was further enhanced by my stance being a little too upright and a perfect drive with slight draw. I found that if I stood a little further away from the ball (leaning forward with straight posture), and tried to swing around the body (as apposed to the normal iron swing), then the old Drive was back. But as I mentioned, it's quite a fine line, so I found that some balls were still producing the banana flight pattern.
At least now I know that if I want to slice around a dogleg right, all I need do is stand more upright, and produced a more vertical swing plane (this strategy contributed to a birdie yesterday :) - which for a high handicapper is quite an achievement!)

Edit: When all else fails, you can hack the slice by closing the club face

Edit: I've also found that the following has helped:
- teeing the ball just inside the leading foot, and so the bottom of the ball is sitting just below the top of the club.
- Make a straight line with the leading arm and club shaft at address.
- Bend your spine 30 degrees away from the ball, so as to get underneath the ball at impact
- Swing 80% of power, accelerating from the top of the swing (ie: start slow). If you try and hit the cr@p out of it, it'll more than likely go wayward.
- Make a deliberate slow back swing (good for maintain balance)
- Concentrate eye contact on the ball at impact.
- Make sure your elbows are pointing away from each other at address(leading elbow toward the target)
- At the start of the backswing, keep the club low and away from the body.