July 2005 - Posts
I've got a little home-grown code that I hacked together, it runs every 30 minutes and generates an XML file saved on a webserver with RSS items for new checkins on a specified VSS branch. The code is a bit messy to post, but it works using the Visual SourceSafe COM object via get_VSSItem and get_Versions recusively.
It works ok-ish, a little slow, but allows me to see what, when and who has changed files recently.
The Visual Studio Team System (VSTS) team have put together a little ASP.NET page that does a similar thing.
However I'd prefer a full source repository viewer like FishEye (works against CVS) from Cenqua which allows you to:
Easily browse for files and directories.
Find the information you need with FishEye's powerful in-built search engine.
See related revisions grouped together as changesets, view these changesets chronologically, and get an RSS feed of recent changes.
They have demo based on the ant source repository.
Extract valuable reports, statistics and graphs from your source history.
We'll have to wait and see how VSTS's Sharepoint project sites compares with their code churn and bug reports.
This toolset is just hitting the blogosphere (the following is taken from the Altova site):
XML-based applications often require the use of an XSLT engine for performing transformations, an XQuery engine for executing queries, and/or an XML parser for well-formedness checking and validation.
Altova makes the same engines that drive its award-winning XMLSpy®, MapForce®, and StyleVision® XML development tools available for use in your custom applications. Now you can use the very engines that have helped make Altova software the industry’s leading XML development toolset in your own applications – free of charge!
AltovaXML™ is an entirely free download that includes the Altova:
- XML validating parser
- XSLT 1.0 engine
- XSLT 2.0 engine (schema-aware)
- XQuery 1.0 engine
AltovaXML™ includes COM, Java, and .NET interfaces so that it can be used from a variety of different applications. You can also call its functionality from the command line. There is no license keycode required to activate AltovaXML™, and you may use it in your applications royalty-free.
AltovaXML™ features include:
- Well-formedness checking
- Validation based on DTD or XML Schema
- XML transformations via XSLT 1.0
- Schema-aware XML transformations via XSLT 2.0
- XML queries and transformations via XQuery
- Command line operations
- COM interface
- Java interface
- .NET interface
AltovaXML™ is the only royalty-free processor to support schema-awareness in XSLT 2.0. The ability of XSLT 2.0 to access schema information provides several advantages, including isolating errors, simplifying stylesheet debugging, and enhancing the performance of stylesheet code.
AltovaXML™ is standards-based in compliance with the respective W3C specifications. Standards supported include:
- XML 1.0
- Namespaces in XML
- XSLT 1.0
- XSLT 2.0
- XQuery 1.0
- XPath 1.0
- XPath 2.0
- XML Schema 1.0
Thanks Altova! I feel a weekend project like this coming on.
A colleague of mine is producing a website for a friend who runs their own jewellery design service as a favour. For him it's a change from SQL Server and C# corporate development; so I've shown him how to mock up the site in Macromedia Fireworks (hint: Microsoft should buy this and use it as the basis of Sparkle their Avalon/XAML editor if the Adobe/Macromedia merger kills it off), Dreamweaver as a better editor than Visual Studio / Notepad. (Note: I'm not a graphic designer, but a couple of years sitting next to one rubbed off!)
So it was a co-incidence when reading this month PC Pro magazine they mentioned a couple of products to help take photographs of objects with correct lighting.
An expensive product called Cubelite and a cheaper version called ePhotoMaker. Ideal if you're selling things on eBay.
A common question is parsing dates in .NET, especially British formats.
Couple of quick solutions are to add an entry to your web.config:
<globalization culture="en-GB" requestEncoding="utf-8" responseEncoding="utf-8" />
Or parse in code:
string stringDate = "17/06/2005";
IFormatProvider culture = new CultureInfo("en-gb", false);
DateTime dateTimeDate = DateTime.Parse(stringDate, culture);
A colleague of mine just pointed me to the Moon
, zoom right in to see what we all already knew. Happy anniversary to NASA!
I was asked today about troubleshooting wi-fi issues, we ran through the usual basics:
- Check connectivity by connecting via patch cable to the router directly
- Check the status light indicators
- Remove the WEP/WPA security until you get things working and then secure it up
- Look for other devices in the same area
- Change the name, SSID from the standard out of the box settings
- Try using the wireless card drivers instead of the Windows XP standard configuration
- Try a different make of wireless router, ie. Cisco, Linksys, Netgear, etc.
- and so on...
Also pointed to a useful tool called Netstumbler, which can help you identify available networks.
Looking at changing channels and avoiding the overlapping ones as explained
So to answer your question, unless you have a specific reason for changing it, I would suggest you keep your wireless channel configured for the manufacturer's default settings. If, however, you must change it, for the best performance I would suggest trying to use one of the other non-overlapping channels first: Channels one, six, and eleven. Other then interference issues, there really is no other reason or advantage to selecting another channel.
It also reminded me of the insecure.org list of top hacking tools, which has some basic port scanner, etc. utilities. For more commerical tools, eEye digital security have a product called Retina security scanner and Iris network analyser which is a fanastic tool for analysing network traffic.
If you are thinking of securing a wireless network in a corporate environment the Microsoft Technet series, "How Microsoft does IT" has an in-depth article on 'Enterprise Deployment of Secure 802.11 Networks Using Microsoft Windows' and 'Troubleshooting Microsoft Windows XP-based Wireless Networks in the Small Office or Home Office'.
It is interesting to read about how neural networks are being used in the MSN Search engine via Adi Olteans's blog.
Looking further at the Microsoft Research papers by Chris Burges I saw one on Audio Fingerprinting.
You have an incoming stream of audio and you'd like to know what's playing. Our system can identify any one of about 240,000 songs in real time using about 10% CPU on an 833 MHz PC. On 36 hours of noisy test audio, it achieves 0.2% false positives at 4.10-6 false negative rate. Confirmation fingerprints can be used to significantly further improve these error rates, with almost no extra CPU cost. Audio fingerprinting has lots of applications: for example, it can be used to construct audio thumbnails for songs, or find duplicate clips on your PC.
When I first tried Shazam from my mobile phone I was impressed it successfully tagged, Frank Sinatra performing 'Bad, Bad Leroy Brown' and I wondered how the technology worked and could search millions of songs so quickly. All I had to do was play the song into my mobile phone for about 15 seconds and then it txt'd me back about 5 seconds later with the artist and track names!
On the subject of SMS txt'ing check out Google SMS UK.
The Microsoft Research project RARE: Robust Audio Recognition Engine papers discuss a similar technology; including a paper on the feature extraction algorithms used, bitvector matching algorithms for fast lookup and using fingerprints to find choruses in music.
Another cool company which licenced work done by Microsoft Research is Inrix for data aggregation of traffic-related content using Bayesian network technology.
What is a Bayesian Network? Bayesian analysis calculates the likelihood of something happening in the face of some particular piece (or pieces) of evidence. Since, traffic volume cannot be predicted using physical laws, we leverage sophisticated Bayesian analysis to create graphs for specific metropolitan areas that map the relationships among real-time traffic, historical traffic patterns, weather, time of day, events, and many other variables. These maps are examples of a Bayesian network.
Where most traffic services can only determine what traffic is like right now – and only in a limited number of cities that have road sensor networks deployed. What they are doing is literally predicting the future which, in addition to providing real-time and incident information, enables answers to questions never before possible such as how long before the congestion there now clears up? Is this congestion normal or an anomaly? This can then be displayed graphically on mobile devices - One to watch.
The BBC news site
has an article today titled "UK could become hi-tech titan"
, all we need to do is use our strengths. The article was based on a report
saying that the "UK was at a key point in its potential development as a hi-tech nation. Currently Britain has a strong science base, a thriving community of innovators, a strong economy and financial market". The article goes on to state that in terms of software development, we only lack a presence like Microsoft in the global market. Whilst that may be challenging, it is heartening to think that with better communication with the financial sector and strengthening support from the government, the results would lead to benefit for the country as a whole.
Whilst discussing problem software projects with a colleague, once again an excerpt from Agile Software Development
came into my mind. In the chapter about software development methodologies Cockburn
points out the example of Kent Arett, who whilst at Fingerhut
experienced a depressed 80 strong IS department that was unable to develop new software because of the support demands of the older software. Rather than take the route that many IT managers would, that of increasing the number of staff, he actually cut staffing levels by 25%. The better people were kept and their salaries increased. The resulting improvement in morale and subsequently output meant that only 15 staff did support and the rest could get on with enabling the business by developing software. A lesson to learn?
Last night I attended the Thoughtworks Geek Night at Thoughtworks rather impressively XP friendly London offices. Adewale Oshineye gave a great introduction to the ideas of and played devils advocate for the REST architectural style. REST was proposed by Roy Fielding in his PhD dissertation and is an acronym for Representational State Transfer. Whilst I remained unconvinced of the wider applicability of REST, it was good to see such a simple and elegant mechanism for perhaps exploring a domain of objects online and perhaps will become more popular as it is certainly an application of the simplest that could possibly work principle.
Towards the end of the evening the conversation turned to favourite languages with a particular leaning towards those that gave productivity gains. Of course, C# was high up on my list and that of a few of the others; Ade favoured Java purely because of the excellent IntelliJ IDEA (and who could blame him). Perl was not as popular as some might have thought and a quick look at a periodic table of "well over a hundred operators" for the current design of Perl 6 showed why. Ade also introduced me to a language that I had never seen before but I will certainly try using, it is called IO and takes its inspiration from smalltalk. All in all an enjoyable evening.
Recently I have been rereading Alistair Cockburn's excellent Agile Software Development and it led me to think again about Extreme Programming and development projects in general. In Extreme Programming, Kent Beck makes the following statement:
'We will control four variables in our projects - cost, time, quality and scope...'
of the four control variables, he rates quality as one variable that should not be altered. Nobody wants to deliver poor quality software, right?
However, Cockburn points out that facilitating communication is another variable that can be controlled for better or worse in a project. Getting the right sort of communication within and from outside a project team is an invaluable and often overlooked tool in delivering software. Cockburn suggests that some of the better forms of project communication are helped by:
- Convection currents of information: Simply put, sitting people together in an environment where information and ideas can flow between team members.
- Learning by osmosis: A second form of learning that occurs when people are colocated. Without listening the project team learn as others in the team - or business users visiting from outside the team - converse. The corollary of this idea is an 'information draft', whereby misleading information is introduced.
- Information radiators: Whiteboards, posters, intranet sites can all be used to display information such as requirements and project progress, so that the team and external auditors can understand the successes and challenges that the team faces.
Interestingly, these forms of communication can be facilitated with little or no impact on the cost and time of the project. Even the costs of moving the project team to a vacant area of the office should be vanishingly small when weighed against the high cost of the delivery as a whole.
For other interesting view points on team communication, have a look over on DevUtopia.