MacBook case

For some protection I bought and installed a case on my MacBook. I installed it 6 months ago and wanted to share my thoughts.

Installation starts with the bottom. It has little feet and grid slots for airflow.  On the back the cover clicks into the cooling opening, but leaves the hinge free to move. Next step was clicking the top cover on. The front has 3 hooks that have cut-outs in the bottom cover.

 

Installation is very easy. All ports are available. The case feels very cheap, but  ‚ā¨15 is cheap. Hasn’t failed me jet. Thumbs up ūüėÄ

Posted in Uncategorized | Tagged | Leave a comment

DataGridViewAutoFilter

Our WinForms application needs a filter on the DataGridView control. The google search took me back to July 2006 when Microsoft published Building a Drop-Down Filter List for a DataGridView Column Header Cell.

Fast forward back to 2017. Turns out someone put the code on codeplex under datagridviewfilter and I just downloaded the sources.

  1. Add 3 files to project
  2. find-replace DataGridViewTextBoxColumn -> DataGridViewAutoFilterTextBoxColumn
  3. done
Posted in Development | Tagged , , | Leave a comment

WPF Toolkit PropertyGrid direct update

For the visuals in our WPF project we use the WPF toolkit. An awesome library that offers a lot of controls for free (Community Edition) and even more controls in the paid editions.

product_wpf_toolkit_plus_horizontal-300x53

When editing a string property in the PropertyGrid, we noticed some strange behaviour. The ViewModel would only be updated after changing the selection. This required the user to first switch to another property before clicking the save button. Unacceptable!

Custom Editors with DataTemplates in the WPF Toolkit documentation handed the solution. But first we dug around the source code for the controls. Why was the string property not updated as we typed the new value?

A string in the PropertyGrid is default edited with the PropertyGridEditorTextBox control. This can be stripped down to a TextBox. The TextBox has UpdateSourceTrigger set to LostFocus. All other types (int, DateTime, bool) have default controls that handle the change of value like masters, so no coding required for those.

We made a custom editor for strings and hooked it up to the PropertyGrid by adding the EditorAttribute to the ViewModel. See simplified code below.

public class InstantUpdatingTextBox : ITypeEditor{
   public FrameworkElement ResolveEditor(PropertyItem propertyItem) {
      var textBox = new TextBox();
      var _binding = new Binding("Value");
      _binding.Source = propertyItem;
      _binding.ValidatesOnExceptions = true;
      _binding.ValidatesOnDataErrors = true;
      _binding.Mode = BindingMode.TwoWay;
      _binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
      BindingOperations.SetBinding(textBox, TextBox.TextProperty, _binding);
      return textBox;
   }
}

public class ViewModel {
   [Category("(General)")]
   [Editor(typeof(InstantUpdatingTextBox), typeof(InstantUpdatingTextBox))]
   public string Name {
      get { return _name; }
      set
      {
         _name = value;
         RaisePropertyChanged(() => Name);
      }
   }
}

Now we see changes everywhere as we type the new value. Got to love WPF and its DataBinding. ūüėČ

Posted in Development | Tagged , | 1 Comment

Code standards review with RegEx

On our project we use Macroview to visualise and edit data. The script that drives the proces is subject to our definition of done code standards. A review of the script is a time consuming activity that is leading to frustration in our team. Time to get some tooling support.

First we looked at StyleCop and other static code analysis tools. Since the script language isn’t widely used no of-the-shelve solution was found. We did stumble upon a tool that seemed to use regular expressions. This was an idea worth exploring.

We have a full license to EditPad Pro. This rich text editor has the ability to search with regular expressions. When a match is found, the text is highlighted. In an hour or two we developed some expressions that can be divided in three groups:

  1. Highlight blocks, used to view comment blocks

    regex-codereview-highlight-blocks-comments

    Comment blocks to inspect

  2. Highlight correct, correct used and spelled keywords are highlighted, this was abnormalities are found easy (not highlighted)

    regex-codereview-hightlight-correct-keywords

    Correct cased keywords

  3. Find defects, negative search used for explicit rules, highlighted items are wrong

    regex-codereview-highlight-wrong-naming

    Wrong prefix in name

Using the list of regular expressions sped up the code review and made it more reliable. The code quality has gone up and new code is quickly reviewed. One up for regular expressions. 1up

Posted in Development, Tooling | Tagged , , | Leave a comment

Make sprints available in visualstudio.com

We use¬†visualstudio.com¬†for our (after work) projects. Last night¬†I noticed¬†an old sprint was displayed as the current sprint on the Backlogs view. The list did not show any future sprints, but we had created them …

make-sprints-available-1

Turns out you have to enable them for viewing in the iteration settings.

make-sprints-available-2

By clicking the “Select iteration(s)” button a dialog showed the missing sprints. Select the sprints and “save and close” to show them on the Backlogs view.

Because the limited screen size of my iPad some sprints weren’t displayed. By typing the name of the sprint the dialog will search for it and select it. Subtle.

Posted in Tooling | Tagged | Leave a comment

Limit vs2015 IntelliTrace

Debugging my solution was a pain. Running from visual studio debug the application was slow, visual studio¬†output window was cluttered and I was getting frustrated. When the application was deployed it performed fast and snappy. ‚Ěď

Looking in the options I decided to disable the TraceInformation collection in IntelliTrace.intellitrace-events-tracing This fixed the slow performance. Happy coder again. :mrgreen:

Posted in Development | Tagged , | Leave a comment

SDN event December 2016

The SDN – Software Development Network – is a special interest group for dutch developers. Four times a year they organise an event where people present and talk about their passion.

As a member of the SDN you are aware of the latest developments. You are part of a network of professional developers who assist each other in word and deed. This means there is a technical helpdesk at your fingertips so you can book considerable time savings in solving problems.
sdn.nl with Google translate

Here are the talks I attended.

The Things Network

The things network¬†offers a solution for IoT network communication. In the demo / presentation an arduino is used to send an alert when “the machine” has stopped. The alert is send over the things network to azure and a return message resets “the machine”.
ttn-logo

Communication path: board > gateway > the things network > azure webjob (bridge) > IoT hub¬†> stream analytics > Event hub > azure function (sends the reset) > IoT Hub > bridge > the things network > gateway > board > led turns on ¬†ūüôā

Design your system for Black Friday

Make use of the infrastructure like reverse proxy, caching and message queues. Optimise for read or write, use less layers and do proactive monitoring.

Continuous delivery in practice

All developers at snelstart (50) use the same branch. Every checkin can potentially go to production. With toggles features can be enabled or disabled for certain customers.

Every environment (OTAP) must be the same. Same platform, same amount of data. This way deployment to production will not introduce new problems.

octopusdeployBecause of the speed the build, deployment and tests are automated. Tooling used is Azure, TFS, Octopus deploy and some test automation tools. Every checkin triggers a build and then a release and tests. When build / deployment / test fails the process is abandoned. A new checkin must be done to fix the problem.

Architecture

This talk was mainly about nservicebus and the domain driven architecture. Nice to know there are dutch people working at Particular today.

SDN logo

Download the presentations at SDN.nl.

Posted in Conference | Tagged , , , , | 1 Comment