| Site Contents
Intro & News E-mail Contact RSS 2.0 Feed Development Developer Books Developer Links Developer Tools Microsoft Links Check .NET Version Comment Reflower NDoc 2.0 Alpha Region Tools Struct Performance WPF Performance Weird .NET Issues Miscellaneous Structured Documents FrameMaker & DITA Windows & High DPI Other Links Other Software Subscriptions Projects Tektosyne Class Diagrammer Hexkit Star Chess Civilization IV Civilization V
| | | Kynosarges
Welcome to the gymnasion! This is the personal website of Christoph Nahr. Use the following overview links or the table of contents in the sidebar to show content pages.
This website is accessible through two domains, www.kynosarges.org and www.kynosarges.de. Both point to the same files and can be used interchangeably.
Attention: Switching Website Hosts, probably on 7 February 2012. Depending on how that goes this website may go offline for a couple of minutes, or for a couple of days. Thanks for your patience.
Latest News
Subscribe to the
RSS 2.0 feed
to keep up with the latest news.
- Switching Website Hosts
(2012-01-30)
-
I’m planning to switch my ISP, and by extension my website host, within the next week. Looks like the transition is currently planned for 7th February but I’m not sure yet how that will work out. Worst case this website might go dark for a couple of days, so please consider this an advance warning.
- Icon/Cursor Format Support for Paint.NET
(2012-01-24)
-
Miscellaneous Software: Good software for creating Windows
.ico/.cur files is hard to find, but fortunately Evan Old has made an excellent Icon/Cursor Format Support plugin for Paint.NET. Evan’s website also offers many other utilities for image editing and other purposes.
- New FrameMaker Documentation
(2012-01-14)
-
FrameMaker Links: Adobe’s team blog has posted a summary of FrameMaker, RoboHelp, and TCS documentation, and the FrameMaker Developer Center was updated with numerous links to ExtendScript documentation, including a new Scripting Guide for Adobe FrameMaker 10 (PDF).
- Tektosyne 5.5.6 Released
(2012-01-09)
-
Uploaded Tektosyne 5.5.6 with more helper methods to extract informational assembly attributes, and an updated User’s Guide.
-
In unrelated news, check out NASA’s open source repository if you need some image processing or satellite tracking software.
- C/C++ 11 Standards & Drafts
(2012-01-02)
-
Developer Links: The new C 11 standard (document 9899:2011) has joined the C++ 11 standard (document 14882:2011) on the ISO and ANSI stores, but also only in the overpriced “colon edition” for US$387. However, Open Standards still provides free downloads of the final public drafts, C 11 N1539 and C++ 11 N3242.
- Struct Performance: Firefox 9
(2011-12-22)
-
Mozilla has just released Firefox 9 whose JavaScript optimizer boasts a new type inference technology. The effects on my little Struct Performance benchmark were quite dramatic: a 30–250% speedup that catapults FF9 to the top of the JS field, bringing it fairly close to Mono performance. I also retested with Mono 2.10.8 and Chrome 16 but found no significant changes. The download package StructTest.zip was updated for the new Mono version.
- Website Update
(2011-12-18)
-
A few updates have accumulated over the past months. First, the ANSI web store now sells the new C++ 11 standard (document 14882:2011) but unfortunately only in the expensive “colon” edition for a whopping $403. Older C++ standards are available in a much cheaper “hyphen” edition (“-” instead of “:” in the document number) but not yet this one; I’ll post another update if and when that happens.
-
On the .NET Struct Performance page, I added a link to Joel Webber’s Box2D as a Measure of Runtime Performance which tests the computational performance of various C++, Java, and JavaScript implementations. His results are reassuringly similar to those of my own little special-case benchmark: C++ is a few times faster than Java, and a few tens of times faster than JavaScript.
-
On the Subscriptions page, I finally added a link to John C. Dvorak’s MarketWatch troll, I mean column, and also to 1UP’s Games, Dammit! podcast which relaunched with a few impressive single-topic episodes.
-
Lastly, if anyone is still waiting for the new continuous-time wargame I had announced on the Hexkit page, I’m sorry to say that I won’t quite make it this year. I made good progress but then I took an arrow in the knee. However, initial testing showed that a simulation of tens of thousands of mobile units with 2D collision physics should be feasible in C#, as long as the graphics are simple and abstract, so I’m currently building the framework for a proper historical simulation. Thanks for your patience, I hope to have something to release in a few months!
- Ian Nowland Spotted
(2011-11-18)
-
Andrew Lighten just informed me of a rare Ian Nowland sighting. Turns out the creator of Comment Reflower did not drop off the face of the earth but merely switched platforms, and therefore stopped updating the program for newer Visual Studio versions. As mentioned last week, Sebastian Schuberth should now handle future updates.
- Comment Reflower News
(2011-11-11)
-
Sebastian Schuberth has created a GitHub page for CommentReflower. Right now it holds the original Ian Nowland release but Sebastian plans to add my updates, and eventually to recreate proper installers for modern Visual Studio versions.
-
Looking over my own files when Sebastian informed me of his plans, I discovered that I had accidentally overwritten Ian’s original
AssemblyInfo.cs file for the main assembly with a blank Visual Studio template. I fixed the source code and VS2010 packages to include the original file, with its proper copyright notice and assembly attributes.
- Tektosyne and Metro Apps
(2011-11-02)
-
Pontus Wittenmark tried to add the Tektosyne.Core library to a Metro app and was very surprised at the number of errors he got. So was I when he let me know. As it turns out, the current Windows 8 preview removes many basic types & methods that are part of the Portable Class Library definition, and even some that are required by .NET design guidelines (namely for exception serialization). The changes run so deep that I cannot currently do anything but add a warning to the System Requirements section, and hope that the final release of Windows 8 will be less hostile towards existing .NET code.
- Tektosyne 5.5.5 Released
(2011-10-22)
-
Uploaded Tektosyne 5.5.5 with two new
Geometry.Angle methods that compute the distance between two normalized angles, in degrees or radians. The distance is signed to indicate its rotational direction.
- Internet Explorer 9
(2011-10-09)
-
Added two items related to Internet Explorer 9 to the Microsoft page. One is the updated list of keyboard shortcuts, the other is a bizarre crippling bug that strikes users of Adobe Type 1 fonts. Please read the entry for details.
- Website Update
(2011-09-30)
-
Two new Subscriptions I found while looking for Microsoft BUILD coverage: I Programmer is quite useful for keeping abreast with new software and book publications, and Tim Anderson’s ITWriting provides some excellent commentary on a broad range of development platforms.
- Nuclear Weapons in Civilization 5
(2011-09-12)
-
Added a note regarding Nuclear Bombs & Missiles to the Civilization 5 Manual Addenda. Unlike Civ4 these weapons cannot be intercepted or mitigated, and using them has no downsides whatsoever. This is rather unfortunate because it turns possession of nuclear weapons into an “instant win” button.
- Tektosyne 5.5.4 Released
(2011-09-12)
-
Uploaded Tektosyne 5.5.4 with a quadtree bugfix. The depth probe algorithm for large tree searches was mathematically correct but could still fail due to floating-point inaccuracies. I added an extra bounds check to avoid possible search failures.
- C++ vs. C# Performance
(2011-09-05)
-
Kate Gregory recently linked to Head-to-head benchmark: C++ vs .NET, an interesting article by “Qwertie” on Code Project that compares the optimizers of Visual C++ and various .NET platforms. Qwertie’s results are more favorable towards Visual C# than my little Struct Performance benchmark because he didn’t specifically test the notoriously problematic method inlining. People who are not yet discouraged from using .NET for performance-sensitive computing should definitely take a look.
- Struct Performance Update
(2011-08-28)
-
Explaining structs and classes in a few paragraphs is hard. I rewrote the introduction to the .NET Struct Performance page to be more accurate and comprehensive, or at least less wrong. The benchmark and its results are unchanged.
- AI Cheating in Civilization 5
(2011-08-15)
-
Now that Civ5 patching has slowed down to minor adjustments, I took a closer look at the
CIV5HandicapInfos.xml file and at the observations made by Buckets on Civilization Fanatics. You can find the depressing result in the Civilization 5 Manual Addenda: the Civ5 AI is still hopeless without enormous bonuses.
- The WPF Performance Miracle
(2011-07-28)
-
WPF enables anti-aliasing by default but also provides a little-known method to disable this feature,
RenderOptions.SetEdgeMode. I’ve only ever seen this method used for the purpose of exact pixel positioning, never with regards to performance. On a whim I decided to measure its impact anyway – and saw an order of magnitude speedup for drawing primitives! -
An inverse test for GDI+ (which disables anti-aliasing by default) corroborated the surprising result: WPF is actually faster than buffered GDI+ – it’s enabling AA by default that makes WPF seem so much slower. Amazingly, virtually no one seems to know about this, and Microsoft certainly doesn’t bother to tell anyone.
-
I updated my WPF Drawing Performance page with an enhanced test application that includes an AA option, and the new test results and conclusions. Just for fun I also added a test application for Java’s AWT library; on Windows 7 it’s roughly as fast as buffered GDI+, so no great surprise there.
- Updated Class Diagrammer, Hexkit & Tektosyne
(2011-07-10)
-
The latest Sandcastle Help File Builder features two noteworthy improvements. First, it’s now a convenient “Guided Installation Package” that also contains Sandcastle itself and the Sandcastle Styles Project, greatly simplifying a complete Sandcastle installation. Second, a long-standing bug regarding method declarations with generic type arguments seems to have been fixed.
-
I recreated the class references for Class Diagrammer, Hexkit, and Tektosyne with the new release. Class Diagrammer 1.4.2 and Hexkit 4.2.10 were also updated to the current Tektosyne version 5.5.3 and to the new international domain kynosarges.org.
-
Tektosyne retained its current version number since only the class reference was rebuilt. Please note that the XML Schemas of Class Diagrammer and Hexkit continue to use kynosarges.de in their target namespaces for backward compatibility.
- Weird .NET Issues
(2011-07-04)
-
Added a brief list of Weird .NET Issues, currently including AnyCPU vs. Any CPU, Application Settings, and WPF FocusScope. This is basically a random selection of strange things that can baffle the unwary .NET developer.
- Tektosyne 5.5.3 Released
(2011-07-03)
-
Uploaded Tektosyne 5.5.3 with a further improved quadtree. The leaf node capacity was far too low, and not configurable. I wanted to fix this long ago but kept forgetting about it. See the WhatsNew file for details.
- Struct Performance in gcc
(2011-06-28)
-
Added the MinGW port of the Gnu C/C++ compiler as another test case to the .NET Struct Performance benchmark. No surprises here, gcc is almost exactly as fast as Visual C++ in 32-bit mode. Sadly, I could not test 64-bit output since the MinGW port does not support that option.
- Website Update
(2011-06-25)
-
Added some Developer Tools: PC-lint for C/C++ is one of the oldest surviving commercial utilities, incredibly archaic and incredibly thorough. CppCheck is a mere baby in comparison, much less powerful but free and easy to use. And WinMerge is a nice free differencing tool if you don’t need all the features of ExamDiff Pro.
-
And two new Subscriptions: The Visual C++ Team Blog is kicking into high gear as Microsoft returns to native code. Meanwhile on Riagenic, ex-Softie Scott Barnes counts the victims of the company’s appalling platform mismanagement.
- Struct Performance in Chrome
(2011-06-25)
-
Google touts the performance of its V8 JavaScript Engine, so I added Chrome 12 as another test case to my .NET Struct Performance benchmark. Chrome handles JS objects very well (3x speedup over Firefox!) but loses ground again with raw numerical values (2x slowdown compared to Firefox). Decent JavaScript performance remains elusive, although Chrome may have the potential to change that.
- More FrameMaker Absurdities
(2011-06-24)
-
A while ago I added a note regarding the broken “Save As PDF” menu command to the FrameMaker section, and today another note regarding PDF settings and book files. Both tips apply to structured and unstructured documents alike.
- Tektosyne 5.5.2 and User’s Guide 1.0.1 Released
(2011-06-24)
-
Uploaded Tektosyne 5.5.2 with a few enhancements, and an updated User’s Guide whose Tektosyne link now actually goes to the Tektosyne page…
- Reminder: VC++ 64-bit Optimizer Bug
(2011-06-22)
-
I’d like to remind any readers who use the 64-bit version of Visual C++ 2010 SP1 that I reported an optimizer bug on Microsoft Connect. If you can reproduce this bug, please upvote the Connect item so that Microsoft does something about it.
- International Domain Online
(2011-06-20)
-
A few days ago I registered the domain kynosarges.org as an alias for the old .de domain, and just now I changed all links on this website to the new domain. Don’t worry, the .de domain still points to the same files, so your existing URLs will continue to work.
-
What prompted this step was a surprising notification from a Chinese domain authority that they wanted to give .cn domains called “kynosarges” to a Chinese company! Seems no domain name is weird enough to be safe from competition these days…
-
The new Chinese domains don’t conflict with mine, but I really wouldn’t like someone else getting kynosarges.org so I finally registered it. I’m also curious to see if the international extension might attract new visitors who were scared of the country-specific domain.
- .NET Struct Performance Examined
(2011-06-18)
-
I like writing micro-benchmarks, comparing programming languages, and ranting about the ongoing decline and fall of the .NET Framework, so here’s an examination of .NET Struct Performance as compared to C++, Java, and JavaScript.
-
Speaking of C++, I seem to have found a pretty big optimization bug in the 64-bit version of Visual C++ 2010 SP1. If you’re using that compiler you might want to check out my bug report on Microsoft Connect and see if you can reproduce it, or if there’s perhaps some compiler option that I missed.
- Picture’s Up
(2011-06-15)
-
Subscriptions update: Gordon Cameron’s weblog Picture’s Up is a great read for all movie buffs.
- Mapping Earth & Sky
(2011-06-14)
-
Miscellaneous Links update: Photopic Sky Survey shows the night sky at a resolution of 5,000 megapixels, and Natural Earth offers free vector & raster maps at scales of 1:10 million, 1:50 million, and 1:110 million.
- WPF Drawing Performance: Addendum
(2011-06-12)
-
Just after uploading the new WPF Drawing Performance page, it occurred to me that buffered GDI+ would make another nice test case. The implementation was easy since Windows Forms 2.0 provides a convenient
BufferedGraphics API for that purpose. -
As it turns out, buffered GDI+ is incredibly fast across all systems! If you were thinking about embedding DirectX to speed up your WPF applications, try buffered GDI+ first – it’s that fast. I updated the drawing test application with the new test case, and the WPF Drawing Performance page with the new results.
- WPF Drawing Performance Examined
(2011-06-12)
-
I once posted a little program called DrawingTest on the MSDN Forums that compared line drawing in Windows Forms to Windows Presentation Foundation (WPF), shortly after the latter API was released. Now I went back to see if it was worth updating, and ended up rewriting the whole thing with a bunch of new options.
-
Some of the new results were quite surprising, so I collected them on a lengthy page on WPF Drawing Performance. The new drawing test application is also available for download on that page, with complete source code. Enjoy!
- Tektosyne 5.5.1 and User’s Guide Released
(2011-05-31)
-
Uploaded Tektosyne 5.5.1 with a few minor fixes, and more importantly the new Tektosyne User’s Guide (PDF, 403 KB). This is mostly a brief overview of the library’s types, but some unusual features such as pathfinding are described in detail.
-
Since Tektosyne now has its own guide, I moved the sections on general graph algorithms from the Hexkit User’s Guide over to the Tektosyne guide. The detailed description of the
PolygonGrid class remains in the Hexkit guide; I figured this class was best explained in the context of the game system it was designed for. -
Having updated the Hexkit User’s Guide, I also rebuilt Hexkit 4.2.9 and Class Diagrammer 1.4.1 with the new Tektosyne release for good measure, although there are no functional changes.
- More on High DPI Settings in Windows
(2011-05-23)
-
Updated High DPI Settings in Windows to note an annoying issue that has tripped me up a couple of times. Windows may automatically create a custom desktop theme which will cause your system fonts to retain the wrong size when you subsequently change DPI settings. Solution: delete the unwanted theme and use a standard theme instead.
- Windows PowerShell Core Help
(2011-05-20)
-
PowerShell users take note: Microsoft just released the Windows PowerShell 2.0 Core Help which conveniently bundles all help topics into one HTML Help package.
- High DPI Settings in Windows
(2011-05-19)
-
The Witcher 2 sets a new record before you even start playing: its configuration and registration dialogs are so incompetently designed that they are completely unusable at 120 dpi with Windows XP style scaling. Other poorly-written applications, such as Apple iTunes, merely look ugly.
-
On the upside, I took the opportunity to do some research on the subject of Windows display scaling and compiled the results on a new page, High DPI Settings in Windows. I hope this will prove helpful to other long-suffering users of 120 dpi monitors.
- Book Review: Windows Internals (5th ed.)
(2011-05-10)
-
The current edition of the standard guide Windows Internals by Mark E. Russinovich and David A. Solomon (with Alex Ionescu) hardly needs a recommendation. As with previous editions, this is the book to get if you’re curious about the architecture of the Windows operating system.
- Class Diagrammer 1.4.0 Released
(2011-05-04)
-
Uploaded Class Diagrammer 1.4.0 with a small fix to avoid cutting off drop shadows on output, and more importantly support for direct Adobe PDF creation via PDFsharp. This new output option creates PDF pages that exactly fit their diagrams, whereas virtual PDF printers always use a default page size such as A4. (I tried setting custom page sizes on several PDF printer drivers, but they all simply ignored them.)
- Composite DITA Documents in FrameMaker 10
(2011-04-26)
-
I encountered several unpleasant surprises while experimenting with FrameMaker’s support for DITA maps. The new Composite Documents section describes the various options, although none of them are good.
- Hexkit 4.2.8 Released
(2011-04-20)
-
Uploaded Hexkit 4.2.8 which is a compatibility update for Tektosyne 5.5. The Hexkit User’s Guide has also been updated for the new graph interface and line-of-sight algorithm. I still intend to create a separate guide for the Tektosyne library, but that’s going to take a while.
- Class Diagrammer 1.3.2 Released
(2011-04-20)
-
Uploaded Class Diagrammer 1.3.2 which began as a compatibility update for Tektosyne 5.5 but ended up with a bugfix and a new feature, as described in the WhatsNew file. In particular, you can now actually open the sample project that ships with the Hexkit source code package…
- Tektosyne 5.5.0 Released
(2011-04-20)
-
Uploaded Tektosyne 5.5.0 which splits the entire library into two assemblies, one suitable for cross-platform development and the other specific to Windows. This required some reshuffling of types, and I took the opportunity to revise & remove some features – see the WhatsNew file for details, and see the project page for the reduced system requirements of the core assembly.
- ILSpy Replaces Reflector
(2011-04-16)
-
Having acquired Reflector from Lutz Roeder in 2008, Red Gate has now remotely disabled all existing free licenses, in order to force users to upgrade to their new commercial version. The inevitable result was the creation of ILSpy, a free open-source alternative by the #develop team. Good riddance to Red Gate and their repulsive business practices.
- Tektosyne 5.4.6 Refresh
(2011-04-13)
-
Just uploaded a revised version of the new Tektosyne 5.4.6 release that adds a Threshold property to the Visibility algorithm, allowing users to define which relative level of obscuration is acceptable for a graph node. I forgot to add this property when I uploaded the new release earlier today, so please re-download everything. Sorry!
- Tektosyne 5.4.6 Released
(2011-04-13)
-
Uploaded Tektosyne 5.4.6 with a completely overhauled Visibility algorithm, as described in the WhatsNew file. Another noteworthy addition is the Sutherland–Hodgman algorithm for clipping arbitrary polygons to rectangles.
-
This release obsoletes the description of the Visibility algorithm in the Hexkit User’s Guide. I’m going to remove all Tektosyne-specific documentation from that guide and make a new, updated and extended Tektosyne User’s Guide. I also plan to split the Tektosyne library into two parts, a platform-independent one and a Windows-specific one, so that Mono and hand-held developers can use the core classes.
- Civilization 5 Unit Supply Limit
(2011-04-07)
-
I finally learned how Civ5’s mysterious undocumented unit supply feature works: it lowers production in all owned cities by 10% per excess unit. Updated the Civilization 5 Manual Addenda accordingly.
- Microsoft Mathematics & Try F#
(2011-04-01)
-
Another two Microsoft Links: Raymond Chen’s Q1 link-clearing post mentioned Microsoft Mathematics 4.0 which is advertised as a classroom resource but turns out to be quite useful for all kinds of mathematical tasks, including equation solving and graphing.
-
And if you’d like to try F# but don’t have Visual Studio 2010 or the .NET SDK installed, you can now simply visit Try F# to use an interactive parser over the Internet.
The Κυνοσαργες (Kynosarges) was an ancient Greek gymnasion dedicated to Hercules, situated in the demos Diomeia outside the walls of Athens. It was the place of education for those Athenian boys who did not enjoy full citizenship. Antisthenes (445–360 BC), student of Socrates and founder of the cynic school of philosophy, taught at the Kynosarges. The most famous cynic was Diogenes of Sinope (412–323 BC), allegedly residing in an empty barrel and subject of countless anecdotes.
Addendum 1 June 2004: I am pleased to discover that Kynosarges was also the title of a short-lived literary magazine whose only issue was published in Berlin anno 1802. Otherwise the name appears to have seen little use since ancient times, at least with the “K” spelling.
This page was last updated on 30 January 2012.
Current version available at http://www.kynosarges.org/ |