Happy New Year! The past few months I've been feeling quite burned out and haven't updated this blog much - I have half a dozen half-finished blog posts and our product updates have suffered too. I didn't want to break the tradition though and fortunately the number of updates were small, so here is the 2019 list of "Tools We Use".

As far as personal goals go, 2019 was mostly a dud. I didn't resume game development, I'm still stuck with prioritising WebCopy to the detriment of everything else, and I still haven't tried anything really new. This nonsense needs to stop.

I did make a start replacing this creaky website with some ASP.NET Core goodness though - the preview version of the dev blog running on .NET Core can be found at https://devblog.cyotek.com/. It still needs some layout work and some missing RSS features but otherwise is mostly complete and will hopefully be made "live" early this year.

Operating Systems

  • Windows Home Server 2011 - file server, SVN repository, backup host, CI server - If it ain't broke, don't fix it
  • Windows 10 Professional - development machines
  • Windows 10 (virtualized) - I tried using a pair of 32bit and 64bit Windows 10 VMs for software testing but the performance is so dire I gave up
  • Windows 7 (virtualized) - testing

Development Tools

  • Postman is a absolutely brilliant client for testing REST services
  • Visual Studio 2019 - The performance improvements made to Visual Studio 2019 are quite staggering
  • New! Visual Studio Code - a frankly amazing editor / IDE. I use it for most non-.NET tasks, such as PHP or editing markdown. Workspaces that can include multiple folders are incredibly useful. A great tool, once you install enough extensions to configure it "your way"
  • New! dnSpy - speedy .NET assembly debugger and editor
  • DotPeek - this program is just too slow to start so I replaced it with dnSpy
  • NDepend - static code analysis. I have quite a love / hate relationship with this application; so much so that I barely use the user interface at all and rely on reports published to Jenkins as part of a common build pipeline

Visual Studio Extensions

  • OzCode - an exceptional debugging aid. Things like exception predication, condition visualisation, reveal, and a data tip that doesn't suck really should be part of the core Visual Studio experience
  • Cyotek Add Projects - a simple extension for easily adding multiple projects to your solutions. Although I use it far less now that most of my projects are packages, it is still useful and I recently updated it to support Visual Studio 2019
  • EditorConfig - useful for OSS projects to avoid space-vs-tab wars or to configure code style rules
  • File Nesting - allows you to easily nest (or un-nest!) files, great for TypeScript or T4 templates
  • Open Command Line - easily open command prompts, PowerShell prompts, or other tools to your project / solution directories
  • VSColorOutput - add colour coding to Visual Studio's Output window
  • Indent Guides - easily see where you are in nested code. I forgot to install this when I switched to VS2019 and didn't miss it... maybe I'm writing more readable code now!
  • ReSharper 2019 was the year I gave up on JetBrains ever doing something about the performance issues that ReSharper causes. When I moved to VS2019 I deliberately chose not to install it and while there are many things about it I miss, an IDE that runs faster than the human controlling is worth more
  • NCrunch for Visual Studio - frequently updated automated parallel continuous testing tool (there's a mouthful). Works with NUnit, MSTest, SpecFlow and a variety of other test systems. This is by far the best continuous testing tool on the market
  • New! SpecFlow - I only used this for one project (my implementation of The Ray Tracer Challenge) and after I a while I really found this way of implementing tests a bit of a game changer. However, I feel that I would quickly loose my sanity if I had to write all these specifications up front and so this is still sitting in my "todo" pile to look into further.
  • New! Roslynator 2019 - C# code analyzers, refactoring and fixes. I use this to replace some of the more critical functionality I previously enjoyed in ReSharper
  • New! Visual Studio Spell Checker - after I found one too many spelling errors in comments and GUI text
  • New! CodeMaid - code formatting and organising. Lets be fair to ReSharper, there's nothing else available which does a better job, but CodeMaid is an acceptable substitute
  • New! T4Editor - T4 template editor implements. I use this as a replacement for the ReSharper ForTea extension and I'm quite happy with it - it does a great job of showing me the T4 specific aspects of my templates

Analytics

  • Unnamed Analytics. After dropping Luminitix, I replaced the data collection with a home grown solution using RavenDB, although I've yet to write a front end to look at the data effectively
  • Matomo - currently trialling this web based analytics software to gain anonymous insights into cyotek.com usage

Profiling

  • dotTrace - although I prefer the ANTS profiler, dotTrace is a very usable profiler and given it is included in my ReSharper Ultimate subscription, it's a no-brainer to use
  • dotMemory - .NET memory profiler. As with dotTrace it is probably time to explore alternatives if I let the ReSharper subscription lapse (yet another reason why perpetual licenses are better than the modern trend of renting software)

Documentation Tools

  • HelpWrite - the first application offered by Ariad in the mists of time, now reincarnated and producing no-frills documentation from simple markdown and YAML
  • Atomineer Pro Documentation - automatically generate XML comment documentation in your source code (Visual Studio extension)
  • MarkdownEdit - a no frills minimalist markdown editor. Thoroughly replaced by Visual Studio Code
  • Notepad++ - a excellent text editor

Continuous Integration

  • Jenkins + Jenkins Material Theme is easy to install, doesn't need a database server and has a rich plugin ecosystem, even for .NET developers. I use this to build, test and deploy all our products and libraries

Testing

  • NUnit is our test framework of choice, for no particular reason other than it was the first one we tried after getting fed up of MSTest's limitations

Graphics Tools

  • Paint.NET - brilliant bitmap editor with extensive plugins
  • Axialis IconWorkshop - very nice icon editor, I have been using this for untold years now since Microangelo was abandoned
  • Cyotek Spriter - sprite / image map generation software that is still in sore need of optimisation and TLC
  • Cyotek Gif Animator - gif animation creator that was shaping up nicely, although it is another application I really want to spend more time improving
  • AngelCode BMFont - although I haven't had a chance to continue with game development for some years now (something else I'd like to change in 2019 2020), for bitmap font creation I use BMFont along with our own parser

Virtualization

Version Control

  • TortoiseSVN - Windows Explorer integration for SVN
  • VisualSVN - Subversion support for Visual Studio. Unlike AnhkSVN, VisualSVN uses TortoiseSVN under the hood, meaning that Explorer and Visual Studio are always in the same state no matter where I commit from, something which used to frustrate me no end with AnhkSVN
  • VisualSVN Server - Subversion Server for Windows
  • GitHub / GitHub Desktop - for providing and working with the open source code we publish
  • New! Gitea - self hosted GitHub clone. As I'm trying to switch from SVN to Git, some new projects are now using Git, with Gitea as the origin.

File/directory tools

  • WinMerge - excellent file or directory comparison utility
  • grepWin - another excellent tool for swiftly searching directories for files containing specific strings or expressions
  • FileZilla - simple FTP client that has served my needs for years now

Backups

  • Cyotek CopyTools - we use this for offline backups of source code, assets and resources, documents, actually pretty much anything we generate; including backing up the backups!
  • CrashPlan - CrashPlan creates an online backup of the different offline backups that CopyTools does. If you've ever lost a hard-disk before with critical data on it that's nowhere else, you'll have backups squirrelled away everywhere too!

Security

  • Comodo - code signing certificates, and domain SSL if a particular host doesn't support Let's Encrypt
  • Let's Encrypt provide short term SSL certificates for free. If you (or your host) are able to automate the process, this is an exceptional way to get basic SSL for your sites
  • Dan Pollocks hosts file blocks your computer from connecting to many thousands of dubious internet hosts and is continuously updated
  • New! VirusTotal - analyze files for malware. This isn't new per-se as I have been using this in our build processes for some time now but I forgot to mention it earlier. It is a helpful tool, except for when you find that one given engine will flag all your submissions as malicious and then when that finally clears up another one decides to join in the "fun" instead
  • New! KeePass Password Safe / BitWarden I finally switched from LastPass and use both of these programs for different purposes

Issue Tracking

  • Mantis Bug Tracker - open source issue tracker
  • MantisSharp - I use our MantisSharp library to add integration between various applications and our MantisBT instance, notable for raising new issues from our automated error monitor, and for creating road-maps on cyotek.com product pages although as usual I haven't had much time to maintain it

CMS

  • Kirby - although cyotek.com uses a custom home built CMS, I had been looking a Kirby as an alternative for some aspects such as the Knowledge Base Again I chose to use a home built solution, this time using .NET Core

Help Desk

  • Maian Support - instead of trying to keep track of emails, I've been using the commercial version of Maian support to manage user support requests and feedback submissions

Other

  • RavenDB - still not using this for much as I can't seem to effectively query the data from Raven Studio, and at heart I still think NoSQL is a fad
  • Kodi - I've used this for years now to watch video on various generations of Raspberry Pi. I found the Films and TV (or Movies and TV) application that ships with Windows 10 to be absolute rubbish and was very glad when Kodi became available on the Microsoft Store
  • Rufus - I use this utility for writing ISO images to USB, useful for setting up new physical machines in an age where CD drives are fairly obsolete
  • Win32 Disk Imager - useful for burning ISO images to SD cards which I do for Raspberry Pi distributions. I used to use this for USB as well but now I prefer Rufus for that
  • f.lux - I've been using this utterly fantastic software for years. It adapts your monitor to the time of day, removing blue light as evening approaches and helps reduce eye strain when coding at night
  • Firefox - I switched to this as my primary browser in 2018 as my own protest against Chrome's dominance (and don't get me started on Microsoft's recent ill advised capitulation)
  • DuckDuckGo the search engine that doesn't track you - I can't remember when I made the switch to DuckDuckGo as it was several years ago, but it does a great job and I rarely have to fall back to "another" search engine
  • Calibre - ebook management. Although I still prefer paper books, I don't buy them often. I tend to read on e-ink devices and Calibre makes it simple to update these

What tools do you find useful? I'd love to know... maybe I'll find a new gem myself!


Like what you're reading? Perhaps you like to buy us a coffee?

Donate via Buy Me a Coffee

Donate via PayPal


Comments

# Andy Carrein

Nice list, I still use Resharper although I have to admit that it slows down my solution. Working without it quickly gets me annoyed. Still quite an impressive product, every new VS release reads like a list of Resharper features they took over.

As for compare tools, I prefer Kdiff3 to Winmerge.

Reply

# Richard Moss

Andy,

Thank you for taking the time to comment! I admit that it took a little time to get used to not having it at my beck and call, but as I took the opportunity to pave my devbox at the same time as the VS2019 release as it wasn't installed I couldn't do my usual "suspend then resume until I get cheesed off again". Actually, the biggest motivation I had for not reinstalling was noticing that a solution that could take two minutes to open in Visual Studio 2015 was instant in 2019. Now I already alluded to performance improvements in VS2019 (and likely in 2017 too, but I skipped that in order to keep using a particular extensions) but I ran similar tests on a VS2015 instance with ReSharper enabled and then disabled and still noticed an vast improvement in solution load. And I've got better things to do that wait (and wait) for an environment to be available for me to actually work! Not to mention I enjoy being able type and having the computer keep up with its human controller instead of s t u t t e r i n g.

The way JetBrains are pushing Rider left right and centre makes me think they won't actually ever address these issues. When they sent me a reminder that my yearly subscription was ending soon and I had cancelled automatic billing, I pointed out I was fed up of the performance issues. Their response was "use Rider" which I didn't find to be a particular helpful or desirable outcome.

Thanks for the tip re Kdiff3, I may look into that!

Regards;
Richard Moss

Reply

# John

Hi Richard,

I made the change from SVN to Git a few years back, and I found the BFG repo cleaner to be a god-send. In the SVN days we just carelessly stored binaries and the like with the Git code, and I wanted to strip all of that out before the first commit. That utility was frighteningly easy to use and "just worked". Happy converting!

Best,

Reply

# Richard Moss

John,

Many thanks for taking the time to comment. I'll take a look at the BFG cleaner you mentioned although I think I'm fairly safe as I tend not to make a habit of chucking anything into SVN and with the exceptions of a few third party libraries from pre-NuGet days there are no binaries to be found.

I haven't decided yet if I'm going to convert my SVN repositories into a mono Git repo as the fashion these days is to have smaller repos, and I do have some cross pollution of projects, often in regards to shared resources - I don't like having a million copies of file-new.png for example and I do share the odd source file, e.g. PetaJson.cs.

I mainly find using Git makes me commit in a more responsible fashion. With SVN I make a million changes then commit them. With GitHub Desktop open on one monitor showing me the pending changes I tend to be much more methodical, making single changes, committing them and moving to the next. And if I do get over zealous and make multiple changes to a single file, Git (or GitHub Desktop) make it utterly trivial to commit those changes independently. I also feel that the branch and PR scenario is going to make more risky changes better than SVN.

Actually as I type out this comment I realise that I do need to migrate the whole thing to a mono repository, otherwise it'll never get done. I can always break things out later as required.

Again, thank you for taking the time to comment.

Regards;
Richard Moss

Reply

# Johan Eriksson

Hello, and thanks for great tips ! Just wanted to mention VS Code as a great tool not only for text/webdev. I started using it for some .NET Core WEB API projects and some Azure Functions and its really great. I especially like that the projects feels more slim (not .sln based) and are easily used by team members sitting on for example Mac. And this is from an old bloke who has been using Visual Studio on a daily basis since Visual Basic 6...

And no, stay away from monorepos ! They make devops pipelines (CI/CD) really messy. You will regret it. If you have shared libs use private nugets/artifacts :)

Reply

# Richard Moss

Johan,

Thanks for taking the time to comment. I haven't really used VS Code for true development yet as I was still happy using Visual Studio for .NET Core (and I don't really have a choice for our WinForms stuff!). I did use its debugging facilities for use with PHP which I didn't find great, but I can probably blame that on PHP!

I do need to hurry up and finish bits of the new blog, I added reply notifications to it, but as comment moderation is still currently handled by the "old" site which doesn't know anything about them, no replies get sent... I think perhaps I'll try using VS Code to do this piece of work and see what happens.

Thanks for the tip re the mono repository. Most of my private libraries are as NuGet packages now, my main issue is probably going to be image resources that are linked from outside the project directories. I'll have to try and devote some serious time to looking into this properly.

Thanks again for the comments and suggestions.

Regards;
Richard Moss

Reply

# Ted

Great list, Richard, thank you for putting it together. 'WinGrep' is actually 'grepWin'. I get it backwards all the time as well. Fantastic tool tho'.

Reply

# Richard Moss

Ha! That error has lasted for a few years, thanks for pointing it out!

Regards;
Richard Moss

Reply

# Tim Maes

Hi Richard,

Thank you for using and recommending my T4Editor extension. I bumped into this list 'by accident' and happened to recognize your name from the marketplace review.

Kind regards; Tim Maes

Reply

# Richard Moss

Tim,

Thanks for taking the time to comment! It's a useful extension so it deserves a place on my little list :)

Regards;
Richard Moss

Reply