Subscribe: Roland Weigelt
http://weblogs.asp.net/rweigelt/rss.aspx
Added By: Feedage Forager Feedage Grade B rated
Language: German
Tags:
app  code  custom action  custom actions  custom  die  emaroo  ldquo  rdquo  studio  und  uwp  visual studio  visual  windows 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: Roland Weigelt

Roland Weigelt



Born to Code



 



Emaroo 3.2.0 Released

Mon, 24 Jul 2017 20:40:34 GMT

Emaroo is a free utility for browsing most recently used (MRU) file lists of programs like Visual Studio, Word, Excel, PowerPoint and more. Quickly open files, jump to their folder in Windows Explorer, copy them (and their path) to the clipboard - or run your own tools on the MRU items! And all this with just a few keystrokes or mouse clicks.

About This Release

When writing and testing custom actions, having to switch back and forth between tabs quickly becomes cumbersome. In version 3.2.0 you can edit a custom action directly on an application’s page via a new context menu on the custom actions.

Another improvement for custom actions is that the $(DirPath) macro now also works for specifying the executable. You can use this e.g. to define a custom action for opening an “README.md” file in the directory of a Visual Studio solution (if it exists):

  • Start Emaroo.
  • Switch to the “Settings” tab.
  • Select e.g. Visual Studio 2017 in the list under “Applications”.
  • “Add New” custom action:
    • Name: README.md
    • Executable: $(DirPath)\README.md
    • Arguments: (empty)
    • Start in: (empty)
  • Close the dialog with “OK”.

Now switch to the Visual Studio 2017 tab and select a solution.

  • If the solution’s directory does not contain a README.md file, the custom action will be disabled.
  • If the solution’s directory does contain a README.md file, executing the custom action will open the application registered for Markdown files (I really like Typora, by the way).

What Else is New?

  • Added: The icon of a custom action now indicates whether it requires administrative privileges.
  • Added: Emaroo now handles some use situations involving quote characters in custom actions automatically:
    • If the arguments of a custom action consists of only the $(DirPath) or $(FilePath) macro, quotes are added when closing the dialog with OK.
    • Quotes around executable paths are removed automatically, which is useful if you copied the path in the Windows Explorer via the Copy as Path context menu entry. In earlier versions the quotes would prevent the custom action from working at all.
  • Fixed: When opening a Visual Studio solution in a higher version of Visual Studio, the “always open as administrator” setting (via a .openAsAdmin marker file) wasn't honored.
  • Removed: Support for IrfanView - it didn't work correctly in all scenarios. I have a basic idea how to fix the problem, so support will come back as soon as I find the time for research, implementation and testing.

Read the complete version history on the Emaroo website.




Emaroo 3.1.0 Released

Mon, 05 Jun 2017 23:36:00 GMT

Emaroo is a free utility for browsing most recently used (MRU) file lists of programs like Visual Studio, Word, Excel, PowerPoint and more. Quickly open files, jump to their folder in Windows Explorer, copy them (and their path) to the clipboard - or run your own tools on the MRU items! And all this with just a few keystrokes or mouse clicks. Download Emaroo on www.roland-weigelt.de/emaroo Get custom actions for Emaroo on GitHub About this Release A long weekend (with much more time at my hand than I originally thought) was a good opportunity to re-think the UI of the feature that has given me the most headaches in Emaroo: The import/export of configuration settings. Importing/exporting the configuration is necessary (at least for me), because I use Emaroo daily, on virtually every computer I get my hands on, and at the same time tricky, because Not all systems require the same configuration – they configurations are similar, but not the same. I make changes to the configuration in different places. I don’t want to care about making changes in a specific order and/or syncing them the configurations immediately. In Emaroo 3.0.0, the dialog for importing configurations showed (more or less) how the configuration would look like after the import – OK at first, but getting rather complex pretty fast. With Emaroo 3.1.0, the import dialog now only shows the delta between the two configurations. Here’s an example where I import a pretty large configuration into a similar configuration. The two configuration differ only regarding a specific custom action (“Search in FileLocator”): Visual Studio 2017 doesn’t have this custom action yet, so it should be added by default – with an option to ignore it. Visual Studio 2015 already had the action, but the imported custom action is newer, so it should replace the existing by default. Visual Studio 2013 also had the action, but the imported custom action is older, so the default is to keep the existing custom action – with an option to choose the imported one. This is what it looks like: Looking at the screenshot one might wonder why the original solution didn’t look like this in the first place… As often the case, getting to a seemingly easy solution takes a couple of iterations. And sometimes even removing features. In this case, the import dialog in Emaroo 3.0.0 had the feature to remove parts of the configuration during import. That was possible because of the approach to show the result of the import. But possible does not necessarily mean useful. Deciding to leave out the feature opened up the opportunity to go with the delta approach, which in the end led to a better UI. Emaroo 3.1.0 in a Nutshell Changed: Major overhaul of import dialog UI, greatly reducing complexity when importing into configurations that have many custom actions and/or installed applications. Changed: UI tweaks to export dialog. Added: Check for new version on help page (only on-demand, not performed automatically). Changed: The number of custom actions is no longer limited to 10, even though only the first 10 actions can be executed via hotkey. Removing the limit is intended to support scenarios where a larger number of custom actions exists temporarily (e.g. when trying out custom actions). Fixed: Copy/paste of custom actions didn't always change the ID when it was necessary. Fixed: Various corner cases in import/export. Read the complete version history on the Emaroo website.[...]



Emaroo 3.0.0 Released

Wed, 31 May 2017 17:41:00 GMT

What is Emaroo?

Emaroo is a free utility for browsing most recently used (MRU) file lists of programs like Visual Studio, Word, Excel, PowerPoint and more. Quickly open files, jump to their folder in Windows Explorer, copy them (and their path) to the clipboard - or run your own tools on the MRU items! And all this with just a few keystrokes or mouse clicks.

(image)

Getting Started

  • Download, unzip and run the MSI
  • Start Emaroo (e.g. by hitting the Windows key, typing “Emaroo” and pressing Enter)
  • Tip: Right-click the “Emaroo” task bar item and choose “Pin this program to the task bar” from the context menu. If you drag the task bar item to the left-most position, you can start Emaroo anytime by hitting Win+1.
  • Press F1 for a quick reference of the features.

What’s New?

  • Added: User-defined custom actions that can be defined per-application, called via the hotkeys Ctrl+1, Ctrl+2, ... Ctrl+9, Ctrl+0.
  • Added: Export/Import configuration settings.
  • Added: Support for Visual Studio 2017.
  • Added: Support for Word, Excel, PowerPoint 2016.
  • Added: Support for Photoshop CC.
  • Added: Support for Illustrator CC.

Read the complete version history on the Emaroo website.




MarkdownTextBlock Improvements in UWP Community Toolkit 1.4

Wed, 05 Apr 2017 06:51:56 GMT

Version 1.4 of the UWP Community Toolkit has been released, read more about it on the Windows Developer website and in the release notes.

In my blog post about version 1.3, I wrote about the then-new the MarkdownTextBlock control which had a couple of missing features. While writing the blog post, improvements were announced for 1.4 on the Universal Windows Platform UserVoice page and I can now confirm that they are actually in the new release:

  • Images are supported (They cannot be embedded inside a hyperlink, though).
  • Triple backticks (```) for fenced code blocks are included (without language-specific syntax highlighting, which frankly would be a bit too much to ask – but a way to implement your own would be nice).
  • Tables work as expected.

The fastest way to try out the MarkdownTextBlock (and many others controls and features) is in the UWP Community Toolkit Sample App in the Windows Store.




Design/UI/UX-Praxiswissen für Entwickler am 4. Mai in Köln

Wed, 01 Mar 2017 11:46:55 GMT

Am 4. Mai leite ich im Rahmen der dotnet Cologne 2017 einen Workshop mit dem Titel “Von Null auf GUI - Design/UI/UX-Praxiswissen für Entwickler”.

In diesem Workshop vermittle ich Entwicklern ohne UI/UX-Vorkenntnisse sowohl ein Grundverständnis für die Materie, als auch das notwendige Handwerkszeug für die tägliche Arbeit. Vortragsteile und praktische Übungen wechseln sich dabei ab, um das Erlernte in Einzel- und Gruppenarbeiten direkt vertiefen zu können.

Ich spreche u.a. über folgendes:

  • Wissenswertes über die visuelle Wahrnehmung des Menschen: Warum ist man manchmal einfach "blind", wenn man einen Button in einer GUI sucht, aber nicht findet?
  • Visuelles Design für Nicht-Designer: Ein paar Grundregeln, mit denen man jede Anwendung aufwerten kann.
  • User Experience: Wie Gefühle das Handeln von Anwendern bestimmen und wie das Wissen darüber hilft, bessere Bedienoberflächen zu gestalten.
  • Das passende Werkzeug zur richtigen Zeit: Mit Stift und Papier Zeit und Geld sparen - auch wenn man gar nicht zeichnen kann.
  • Denken in UI-Patterns: Mit der richtigen Herangehensweise besser entscheiden können, was man sich von anderen UIs abgucken kann.

Wer als Entwickler gerne bessere GUIs gestalten würde, sich aber bisher die Frage nach einem Einstieg mit verwertbaren Erkenntnissen für den Alltag gestellt hat, für den ist dieser Workshop genau das Richtige.

Anmeldung und Infos auf https://dotnet-cologne.de/Anmeldung.ashx.




UWP Community Toolkit 1.3 Released – now with Markdown

Sun, 26 Feb 2017 17:32:43 GMT

A new version of the UWP Community Toolkit has been released, this article on the Windows Developer website has the details on what’s new.

One thing that caught my eye was the MarkdownTextBlock XAML Control that does exactly what the name implies: You set the Text-property with some Markdown text and it shows the rendered Markdown. You can change the styling of the output (font size, color, etc.) to match your application or a specific desired document style. And the LinkClicked event tells you when a link has been clicked.

If you want to see it (and all the other toolkit features) in action, download the UWP Community Toolkit Sample App in the Windows Store.

(image)

How good is it?

If you’ve used Markdown in more than one application or website before, you’ll know that there are smaller and larger differences here and there (the website for CommonMark has more on that).

Playing around with the control to learn more, I found the following:

While this list makes it sound like there are a lot of things that aren’t working (yet) or are missing, it is important to consider use cases for the control.

  • Do you plan to display arbitrary Markdown like Readme.md files from GitHub?
  • Or do your want a control to display explanation texts on a form (where you write all the markdown)?

If the latter is the case, the control most likely will do its job already in version 1.3, with the tables and images coming in version 1.4 being a welcome addition, of course.




20 Years at the Same Company

Sun, 15 Jan 2017 18:50:00 GMT

Ten years ago I wrote a blog post that I simple re-use here:

Today, exactly ten 20 years ago, I started working at Comma Soft here in Bonn, Germany, coming straight out of university. Just amazing how fast time has gone by. Ten years at the same company is even more amazing considering the fact that I originally had planned to stay maybe one or two years, just enough to gain some professional experience, and then move on.

But towards the end of 1997 I joined what would later become the infonea INFONEA product team. Working in a team of nice and intelligent people (neither nice bozos nor intelligent back-stabbers are helpful in the long run), using a wide array of different technologies over the years, made me stay. […]

The two TFT screens in the photo of the original blog post have been replaced by three 24” screens. My keyboard is now one without number keys (same key switches as the old one), but the desk is still the same and I’m still in the same office.

I’m no longer working as a (full-time) software developer, having moved to user experience and product design. I also took on the herculean task of consolidating all documentation efforts into one single-source system (using MadCap Flare), which has both technical as well as editorial aspects.

Code, graphics, concepts, words – I’m doing it all; things are definitely not getting boring here!




dotnet Cologne 2017 am 4./5. Mai 2017

Wed, 21 Dec 2016 00:06:48 GMT

(image)

Am 4. und 5. Mai 2017 findet in Köln zum neunten Mal die dotnet Cologne statt. Die mit 400 Teilnehmern größte deutsche Community-Konferenz für Software-Entwickler im Microsoft-Umfeld wird von Stefan Lange und Melanie Eibl (dotnet Köln/Bonn e.V.), Albert Weinert (.net user group Köln) und mir (Bonn-to-Code.Net) organisiert. Zusammen mit Sprechern, Sponsoren und Helfern vor Ort veranstalten wir die dotnet Cologne als eine Konferenz, die sich jeder leisten kann und die wir selbst gerne besuchen würden.

Das “…die wir selbst gerne besuchen würden” nehmen wir dabei durchaus ernst. Ebenso ernst nehmen wir das Feedback der Teilnehmer, das einerseits sehr positiv ist (was natürlich motiviert), anderseits viele konstruktive Vorschläge liefert.

Ein häufiger Wunsch der Teilnehmer war ein eigener Workshop-Tag, um ein Thema einmal etwas ausführlicher behandeln zu können. Da die Buchung von Räumlichkeiten – vorsichtig ausgedrückt – eine relativ langfristige Angelegenheit ist, hat es etwas gedauert, aber am Donnerstag, den 4. Mai, ist es endlich soweit. Genaue Informationen zu den Workshops folgen noch, aber das Angebot verspricht sehr interessant zu werden!

In eine ganz andere Richtung gehen die sog. “Lightning Talks”, Kurzvorträge von maximal 15 Minuten (plus 5 Minuten für Fragen). Diese Vorträge sind einerseits dafür gedacht, kurz und knapp in ein Thema einzuführen. Andererseits geht es uns dabei darum, das unter den Teilnehmern vorhandene Know How besser zu nutzen. Nicht jeder hat die Zeit, eine komplette 60-Minuten-Session vorzubereiten, aber ein 15-Minuten-Vortrag ist sowohl zeitlich als auch inhaltlich vielleicht eine andere Angelegenheit.

Daher an dieser Stelle der Aufruf (gültig bis zum 3. Februar 2017):

Kurzvorträge gesucht!

  • Du kennst ein cooles Open Source-Tool und möchtest es vorstellen?
  • Du hast positive Erfahrungen mit einer Bibliothek oder einem Framework gemacht?
  • Du hast Dich mit einem interessanten Konzept beschäftigt, von dem mehr Leute erfahren sollten?
  • Du möchtest andere vor Fallstricken warnen ("Fünf Dinge, die ich gerne früher über X gewusst hätte")?
  • Du hast Tipps zum Thema Softskills und Teamdynamik?
  • Du kennst Yoga-Übungen für Bildschirmarbeiter?
  • ...oder Du hast noch eine ganz andere Idee?

Dann gehe schnellstens auf http://dotnet-cologne.de/LightningTalks.ashx, dort gibt es alle Infos.

Als Belohnung winkt ein kostenloses Ticket für den 5. Mai, komplett ohne Anmeldestress!




Black Friday Deal for OzCode

Thu, 24 Nov 2016 23:37:00 GMT

Back in 2015, I discovered OzCode, an awesome C# debugging tool, at an exhibitor booth at the Microsoft Build conference. Not only was the in-person-demo at the booth convincing, the website also did an amazing job explaining the features.

When I returned home, I bought a personal copy for my hobby projects (I rarely write code at work these day, focusing on product design, UX and documentation) – and I enjoy using ever since.

Visit http://www.oz-code.com/, scroll down a bit and watch the videos for “Magic Glance”, “Search” and the other features. You’ll see why I’m such a fan. I can wholeheartedly recommend this tool, which costs $79 for a personal license.

The reason why I’m writing about OzCode now: There’s an “Black Friday” offer for a personal license at 50% OFF, valid until November 27, 2016. Just follow the link on this tweet: https://twitter.com/i/web/status/801805038658224128.




How to fix Your Open Live Writer Account Settings for weblogs.asp.net

Fri, 07 Oct 2016 17:51:47 GMT

When I tried to post on my blog (weblogs.asp.net/rweigelt) yesterday using Open Live Writer, it failed with an error message – I ended up posting via the web interface.

I contacted the ASP.NET website support and today Terri Morton got back to me, telling me that an update of the website last week forces https and that I should point my blog account to https://weblogs.asp.net/rweigelt. Interestingly, it was already set to https.

Adding a new account in Open Live Writer is really easy, so I tried that, but it didn’t work. Looking at the error message, a mix of https and http URIs caught my eye:

(image)

Digging in the registry, I found the following entry

  • HKEY_CURRENT_USER
    • SOFTWARE
      • OpenLiveWriter
        • Weblogs
            • PostApiURl = http://weblogs.asp.net/rweigelt/XmlRpc

After changing the URL from http to https and restarting Open Live Writer, my blog account worked again – this post is living proof.




UWP Community Toolkit 1.1 Released

Thu, 06 Oct 2016 20:28:25 GMT

Back in August I blogged about How to Search Twitter from Your UWP App using the then-new UWP Community Toolkit. Of course, the toolkit offers much more than that. It has now been updated to version 1.1, with quite a list of improvements and fixes. A small, but nice addition is the GridSplitter, which was one of the first things I was missing when moving from WPF to UWP.

The release also sends a strong signal about the future of the UWP Community Toolkit. It is now part of the .NET Foundation (which brings a move of the documentation to a new location) and has promising community activity. While this may not be a guarantee for longevity, at least the signs point into the right direction.




“Mini-DevCon” der DevGroup Göttingen/Kassel am 21.10.2016

Thu, 06 Oct 2016 20:06:00 GMT

Die .NET DevGroup Göttingen/Kassel veranstaltet am 21.10.2016 ab 17:30 in Hann. Münden-Laubach ihr 202. Treffen, das als “Mini-DevCon”, also im Prinzip eine Halbtags-Konferenz, konzipiert ist.

Es hat mich sehr gefreut, als ich in meiner Eigenschaft als Mitglied des Sprecherbüros von INETA Deutschland angefragt wurde. Ich habe gerne zugesagt und werde in meinem Vortrag praxisrelevante Grundlagen in den Bereichen Visual- und User Interface-Design sowie User Experience vermitteln.

Das Programm der Veranstaltung sieht aktuell wie folgt aus:

  • 17:30 – 17:45 Begrüßung und Keynote (Joachim Bieler)
  • 17:45 – 18:30 Industrie 4.0 für zuhause – IoT für Otto Normalentwickler (Martin Roppert)
  • 18:45 – 19:45 Design/UI/UX-Grundlagen für Entwickler (Roland Weigelt)
  • 19:45 – 21:00 Abendessen und Verlosung
  • 21:00 – 21:45 PRISM 6 (Jürgen Goschke)

Die Teilnahme ist kostenlos, um Anmeldung wird gebeten.




How to Disable Warnings in Generated C# Files of UWP Apps

Sun, 25 Sep 2016 23:08:00 GMT

The first time I moved my UWP development beyond writing “throwaway code for learning purposes”, I did what I always do when starting a new “real” project: On the “Build” tab of the project properties, I switched the setting “Treat warnings as errors” to “All” and set the checkmark at “XML documentation file”.

Nasty surprise: When compiling the UWP app, the compiler stumbled over missing XML doc comments in code that was generated in the background.

Fortunately, I quickly found a solution on StackOverflow that automatically added a #pragma warning disabled to the generated files using MSBuild. That worked well for me until recently, when I created a new solution configuration that had a name containing spaces. Digging a bit into MSBuild, and with the help of another StackOverflow answer, I was able to figure out the following build target (which I’ll add as an answer to the original StackOverflow question):


	
		
	
	
	

How to use this:

  • Unload and edit your “.csproj” file in Visual Studio (or open it in Notepad if Visual Studio is closed)
  • Copy-and-paste the task just before the closing tag
  • Save and (re)open in Visual Studio



How to Search Twitter from Your UWP App

Thu, 18 Aug 2016 11:05:00 GMT

Yesterday, the UWP Community Toolkit was released, “a new project that enables the developer community to collaborate and contribute new capabilities on top of the SDK.”. The toolkit “includes new capabilities (helper functions, custom controls and app services) that simplify or demonstrate common developer tasks”.

(image)

One thing that caught my eye was the support for social media like Twitter and Facebook. I had read the docs at https://dev.twitter.com/ and I had a twitter app configured at https://apps.twitter.com/ some months ago, but I never got around to actually choose a Twitter access library and use it.

But the few lines of sample code in the announcement (how to post a tweet) looked so simple I couldn’t resist trying to perform a Twitter search.

  • Follow the “Getting Started” instructions in the article. (I chose the packages Microsoft.Toolkit.Uwp and Microsoft.Toolkit.Uwp.Services)
  • Put a button on the form, create a click handler with the following code:
    private async void HandleButtonClick(object sender, RoutedEventArgs e)
    {
    	TwitterService.Instance.Initialize( // change (1) - (3) for your app
    		"(1) ConsumerKey",
    		"(2) ConsumerSecret",
    		"(3) CallbackUri"); 
    	await TwitterService.Instance.LoginAsync();
    	tweets = await TwitterService.Instance.SearchAsync("hello world");
    	foreach (var tweet in tweets)
    	{
    		Debug.WriteLine(tweet.Text);
    	}
    }
    
  • And that’s all it is to search Twitter for e.g. “hello world”!

Things to note:

  • Even though the API is really easy, it doesn’t mean that you can avoid reading or at least scanning the Twitter documentation altogether – you need to know just enough the get the required information for login.
  • Storing the ConsumerKey and ConsumerSecret in an app as plain text doesn’t sound like a good idea – I’ll have to read up on what best practices are in regard to security.



My UWP Link List

Sun, 17 Jul 2016 15:32:25 GMT

I’m still at the beginning of my journey into the world of Universal Windows Platform (UWP) apps. In this blog post (which will be updated over time) I’ll collect various links to resources I found interesting and/or helpful – maybe they are of use for other people, too.BasicsThe Windows Dev Center (dev.windows.com) is the starting point for Windows development. Documentation, downloads, samples – it’s here.Get started with Windows apps contains everything to, well, get started. I doubt you’ll find a more clear and concise information about how to do it than this page and its sub-pages (in the past, people actually made it their job to extract information out of wordy Microsoft articles).Back in the Windows 8.x days, side-loading didn’t sound too attractive. Much has changed in Windows 10 and this article sums it up: Sideload LOB apps in Windows 10And things are looking to get even better soon: App Installer! (via Universal Windows App Deployment blog)I wanted a code-signing certificate (not only for my future UWP apps), in the end I chose KSoftware who are an official partner of Comodo.DebuggingHow to trigger suspend, resume, and background events for Windows Store apps in Visual StudioResourcesGeneralBlog: Building Apps for Windows (by the Windows Apps Team)Article: The Lifecycle of a UWP AppArticle: The path from a desktop app to a Universal Windows Platform (UWP) appArticle: Optimizing your XAML app for performance (10 by 10)Website: Develop UWP apps – How-to articles for UWP apps on Windows 10 (“Instructions and code examples for all kinds of tasks, such as using geolocation services, transferring data over a network, and porting apps to Windows 10”)ArchitectureTemplate 10 is a set of Visual Studio project templates that take care of boilerplate stuff like navigation and suspensionVisual Studio Extension: Template 10 Template PackWiki: DocumentationVideo: Getting Started with Template 10 (on Microsoft Virtual Academy)App ServicesApp Services are a very interesting concept for UWP applications that are more than just a simple self-contained “app”.Create and consume an app serviceConvert an app service to run in the same process as its providerCalling an App Service from a WPF/WinForms Win32 AppLaunch a Universal App from a WPF App contains the important part of how to reference Windows 10 APIs. When copying the XML code snippet in the blog post, leave out the reference to System.Runtime.dll and make sure you replace the typographical quotes (“example”) with plain quotes ("example"). App Services in a Network Discover remote devicesLaunch an app on a remote deviceCommunicate with a remote app servicePersonal InterestsMy main motivation to start with UWP apps is to use the graphics and video capabilities that look much more attractive than what WPF has to offer.Graphics and AnimationsBlog: robmikh blog (“A development blog about all things UWP and Composition”)Blog: Mike Taulty (“I do some developer stuff for Microsoft UK”)Articles on composition: https://mtaulty.com/category/composition/Articles on Win2D: https://mtaulty.com/category/win2d/Article: Windows 10 Anniversary Update–Fun with Composition and VideoWebsite: Windows UI Dev Labs on github (“the place for getting the latest code samples and demos using Windows.UI.Xaml and Windows.UI.Composition to make beautiful Universal Windows Platform applications”)Article: How to prevent screen locks in your UWP appsArticle: Creating a FluidBanner control using Windows CompositionLibrary: CompositionProToolkit on github (“Collection of Helper classes and controls (using Win2d) for Windows.UI.Composition”)MediaPlayerAPI referenceArticle on Windows Dev Ce[...]



The Search for a Proportional Font for Developers

Tue, 14 Jun 2016 22:28:00 GMT

Text editors and IDEs usually use monospaced, i.e. non-proportional, fonts by default. This may seem like an obvious choice – after all, how else do you line up characters horizontally? The disadvantage of a monospaced font is that text lines can become relatively wide, because by definition, all characters have to have the same width as the character that requires the most space (the uppercase “W”). Back in the 80ies and early 90ies, with identifier names like “strnicmp()”, this wasn’t much of an issue. But then libraries grew and identifier names got longer and longer. At the same time, in my IDE the source code editor on one hand and an increasing number of additional panes on the other hand were competing for screen space. In the editor, I usually had a ton of unused whitespace behind short text lines, but when a line contained a slightly longer identifier, it often got clipped. That was the point when I asked myself how important exact horizontal alignment of characters was to me. Less horizontal scrolling and better readability for long names in return for giving up full control looked like deal good enough to give proportional fonts a try. The Switch I don’t quite remember the exact time when I switched; the blog post ”My Transition from Fixed to Proportional Width Fonts for Editing Source Code” is from 2004, years after the fact. What I do remember, though, is that it was the Verdana font that made the switch final. Verdana is a sans-serif font, except for serifs for the uppercase “I” to make it easily distinguishable from the lowercase “L”. Here’s a (wildly exaggerated) code example to demonstrate why this is important, first in Arial: …and here in Verdana: In Arial’s defense, I must say that I like Arial’s bold text much better than Verdana’s. And, for my personal taste, Verdana is a bit too wide (especially at larger font sizes). Its cousin Tahoma, on the other hand, is slightly too narrow: In the end I learned to live with Verdana, but when Segoe UI was introduced along Windows Vista, I switched immediately: Like Verdana and Tahoma, the bold version of Segoe UI is pretty thick, but I like keywords and class names being shown in bold (even if it’s too heavy). Noooooo…! After I upgraded my computer from Windows 7 to Windows 10 (I skipped Windows 8.x), I noticed Segoe UI had changed. The most dramatic change: The uppercase “I” lost its serifs (see: Segoe UI gets a subtle facelift in Windows 8)! Which means that the code example now looks like a soup of vertical bars: Searching for Alternatives With Segoe UI no longer suitable for source code and going back to Verdana not exactly an attractive option, I searched the web for alternatives. So far, I’ve come across the following fonts (in no particular order): Clear Sans (Intel, https://01.org/clear-sans) Clear Sans doesn’t seem to be hinted well enough for rendering at 10pt on a screen at around 96 pixel per inch, at least with ClearType on Windows (I don’t have a Mac for comparison). While it looks rather ugly on my machine, Clear Sans turns out pretty nice at 20pt or when I scale Visual Studio’s editor to 200%, so it may be a good choice for users with a HiDPI display. Source Sans Pro (Adobe, https://github.com/adobe-fonts/source-sans-pro) What I wrote about Clear Sans in regard to hinting is also valid for Source Sans Pro. For my personal taste, though, the difference between the uppercase “I” (without serifs) and the lowercase “L” (with only a small tail at the bottom) is [...]



programmingfonts.org – THE Resource for Monospace Fonts

Mon, 30 May 2016 19:49:29 GMT

While preparing an upcoming blog post about proportional fonts for programmers, I came across a tweet by Val Head (@vlh), pointing me to programmingfonts.org. The website boasts the slogan “The most complete resource for monospace fonts on the web” and looking at the list of fonts, I’m inclined to believe it.

I browsed the site for a while until finally saw the link “Try them all online right now” which was hidden in plain sight directly in front of me:

(image)

The link opens a nice web application that lets you test drive a huge number of fonts, using a text of your choice. The available themes are a matter of personal taste, but this is mainly about getting an idea whether a font looks good before spending more time on it.

(image)




Nice Time Saver: Windows Universal App Image Scaler

Sat, 30 Apr 2016 07:29:00 GMT

Recently I took my first steps into the world of Universal Windows Platform (UWP) apps after many years of WPF. What came a bit as a shock to me was the sheer number of required/recommended tile and icon assets.

Most of the images are versions of the same image, scaled to different sizes. Of course, creating these images is something that can and should be automated, starting from a sufficiently large image.

One way to handle this is via Photoshop Actions, but when looking for a simpler solution I came across the Windows Universal App Image Scaler. This is a Visual Studio extension that adds a context menu entry to the Solution Explorer. You simply right-click an image file, choose “Scale image for Windows Universal app…” and specify the kind of images you want to create. When you press “Ok”, the output will be written to the directory that contains the source image, and that’s it!

You find this nice extension




Anmeldung zur dotnet Cologne 2016 am 16.3.2016 um 12:00

Fri, 04 Mar 2016 07:30:18 GMT

(image)

Am Mittwoch, 16. März 2016, wird um 12:00 Uhr die Anmeldung zur dotnet Cologne 2016 am 13. Mai in Köln freigeschaltet. Die 400 Tickets für die letztjährige Konferenz waren in weniger als 4 Minuten verkauft, es gilt also pünktlich am Rechner zu sitzen!

Dass diese Community-Konferenz, die Stefan Lange und Melanie Eibl (dotnet Köln/Bonn e.V.), Albert Weinert (.net user group Köln) und ich (Bonn-to-Code.Net) seit 2009 zusammen organisieren, so erfolgreich ist, macht uns schon ein wenig stolz.

Gleichzeitig gilt weiterhin unsere Philosophie, dass die dotnet Cologne eine Konferenz sein soll, wie wir sie selber gerne besuchen würden. Und dazu gehört für uns nicht zuletzt, dass wir am 13. Mai möglichst viele aktive Mitglieder der deutschsprachigen .NET Community treffen möchten.

Damit dies nicht vollständig dem Zufall überlassen bleibt, haben wir uns entschlossen, einen Teil der Karten zu blocken und für Leiter und Stellvertreter von .NET User Groups, MVPs, Betreiber von Community-Foren etc., aber auch für Sprecher früherer dotnet Cologne Konferenzen und unserer User Group Treffen in den letzten 12 Monaten zu reservieren.

Weitere Infos zu dieser Aktion gibt es auf http://dotnet-cologne.de/CommunityTicket.ashx

Also: Man sieht sich am 13. Mai!




The Importance of Empathy, pt2: It’s Good for You, Too!

Sun, 28 Feb 2016 23:31:47 GMT

In my recent blog post I described empathy as a valuable skill e.g. for UI design. But empathy is more than just “that UX soft skill thing”, “for making other people’s lives better”.In this post I’ll give two real-life examples where a lack of empathy significantly reduced the chances of success in a competitive situation – which should give food for thought even to the most selfish person.Example 1: Programming Contest EntriesIn 2004 I entered a competition for Visual Studio add-ins organized by Roy Osherove. Surprise #1: I won. Surprise #2: The blog entry “About the add-in contest results” by Frans Bouma, one of the judges.He wrote: “As a judge in the add-in contest, I had to test all the add-ins submitted, and judge them on quality and if they deserved any of the big prizes available. I can tell you it was hard. Not because there were so many good entries, but because it was often very hard to even get the submitted code to run, left alone to find any documentation what to do, how to get started.”Two years later I was in Frans’ shoes when I was a judge on a German contest for “code snippets” (more in the vein of small classes and helper methods than typical Visual Studio snippets e.g. for defining a constructor or a dependency property). I had to wade through more than 120 entries, with many lacking an easy to understand description of “what does it do”, “how do I use it”, etc.In both contests, not nailing the basics substantially influenced the judgement and thus prevented some of the entries from ranking higher.What went wrong?One possible short answer: People were lazy. They did the fun part (writing code), but skipped on the non-fun part (writing docs, taking care of setup, etc.). But on the other hand, people tend to overcome their laziness if they feel some kind of urgency.In the case of the contest, it seemed that many of the participants didn’t think that the out-of-the-box experience would be a factor in the review – which hints at a lack of empathy. Because with a bit of empathy, they would have thought about the situation of a contest judge.Let’s imagine that you are a judge for a programming contest. You unpack the ZIP file containing a contest entry and you get a bunch of files you’ve never seen before.What would be your first questions? Surely something like:Where do I start?Is there some kind of README?Is there a short introduction, maybe an elevator pitch for this?What is actually the problem this thing is trying to solve?What are the first steps that I should take?Can I simply follow the directions or are there prerequisites that aren't mentioned?Is there a simple way to achieve at least something in the software quickly before I dig deeper into it?Imagine you have to review not only one or two, but dozens and dozens of entries. Wouldn’t you be thankful for any entry that addresses these questions proactively?Now, after looking at a judge’s perspective: Would you, as the author of a contest entry, assume that a judge instantly sees how awesome your software is, without any explanation beyond a few words? And that none of the other contestants would come up with the idea to make things easier for the judges and thus make a good first impression?If you can now almost feel the pressure of competition – there’s the urgency required to overcome the laziness and the reluctance to do the things that are not fun.Example 2: Conference Session ProposalsI’m one of the organizers of the community conference “dotnet Cologne” which is wildly success[...]