<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Site-Server v6.0.0-2011fc9c40822c167f9d5952df659f57537b34bf-1 (http://www.squarespace.com) on Mon, 22 Aug 2022 23:25:45 GMT
--><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://www.rssboard.org/media-rss" version="2.0"><channel><title>mattwhite.me</title><link>http://mattwhite.me/</link><lastBuildDate>Sat, 04 Apr 2020 15:03:29 +0000</lastBuildDate><language>en-GB</language><generator>Site-Server v6.0.0-2011fc9c40822c167f9d5952df659f57537b34bf-1 (http://www.squarespace.com)</generator><description><![CDATA[]]></description><item><title>Is it still possible to muddle through?</title><dc:creator>Matt White</dc:creator><pubDate>Mon, 18 Sep 2017 11:35:34 +0000</pubDate><link>http://mattwhite.me/blog/2017/9/18/is-it-still-possible-to-muddle-through</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:59bfac3c8419c29f702506f1</guid><description><![CDATA[<p>I was reading <a target="_blank" href="https://www.theguardian.com/commentisfree/2017/sep/18/level-playing-field-commuters-british-green-lanes-tube">this article</a> while waiting for some code to deploy this morning, and a couple of sentences really leapt out at me...</p>






<figure >
  <blockquote data-animation-role="quote" data-animation-override>
    <span>&#147;</span>The British way is to muddle through on the basis of vaguely understood traditions and conventions. Our entire culture, from our political constitution to the way we queue, is based on that principle of minimal principles.<span>&#148;</span>
  </blockquote>
  <figcaption class="source">&mdash; https://www.theguardian.com/commentisfree/2017/sep/18/level-playing-field-commuters-british-green-lanes-tube</figcaption>
</figure>
<p>The same has been true in the IT world, or at least my IT world, for the longest time. Getting code from my machine into production is never a consistent process. It depends where I'm working, what regulatory framework is in place, what technology is being used, how advanced the organisation is.</p><p>In my current job we use a lot of the latest and greatest technologies: node.js, microservices, Docker, Kubernetes, Splunk and so on. And the philosophy we try and adopt is called "build, run, own". That is, you take ownership over every element of the code you write, from conception through to support.&nbsp;</p><p>It's a good theory, but every so often we get stuck. I do own my code, but someone else owns the Kubernetes platform, a different team is responsible for splunk and they don't all necessarily do the right thing, especially in test environments.&nbsp;In some environments I'd have the ability work around these sorts of problems - muddling through - but it is not possible in this highly connected architecture where various elements present themselves as black boxes.&nbsp;</p><p>It makes for some interesting challenges and dependencies and means that muddling through is no longer an option. The positive is, or at least should be, that, because we have to do everything within well known, tightly defined constraints, that when my code finally reaches production it is far more stable.</p>]]></description></item><item><title>Evernote to Bear</title><dc:creator>Matt White</dc:creator><pubDate>Tue, 12 Sep 2017 08:22:00 +0000</pubDate><link>http://mattwhite.me/blog/2017/9/12/evernote-to-bear</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:59afb057bebafb7afc6e877c</guid><description><![CDATA[<p>I’ve been an Evernote user for years. But recently it’s been an on and off thing as I get more and more annoyed with their service. The problem is that I keep trying to find something that will do everything I need, find a tool that I <em>think</em> might work and it never quite does so I crawl back to Evernote with my tail between my legs. </p>
<p>The issues with Evernote are several, I use it all day long for note taking in meetings, writing blog posts, planning out code changes and so on. Over time, the software has just become a bit too bloated, the editor doesn’t support Markdown which is de rigueur these days, and then there’s the pricing changes, the data leaks. Basically, if I can find something better then I will jump ship.</p>
<p>Well, I think I may have finally done just that. <a href="http://www.bear-writer.com/">Bear</a> is a much cut down note taking tool, it syncs beautifully across Mac / iOS, supports Markdown and it’s a really nice text editor to use. </p>
<p>The only issue I struggled with so far was bringing across tags and notebooks from Evernote. There is no concept of a notebook in Bear (that I can see), but you can "sub tag" content. So you'll need to work out a strategy to bring across your Evernote documents. For me it was a case of doing it a notebook at a time, but YMMV. </p>
<p>So, for the moment, this is what I’m trying out. Do you have any better suggestions?</p>]]></description></item><item><title>Do you know what your users are doing?</title><dc:creator>Matt White</dc:creator><pubDate>Tue, 05 Sep 2017 09:43:00 +0000</pubDate><link>http://mattwhite.me/blog/2017/9/1/do-you-know-what-your-users-are-doing</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:59a964109f8dceb865974fb5</guid><description><![CDATA[<p>There are levels to this question. I'm sure most of us that run web apps know to some degree what our users are doing, but, if you have the need, you can find out in real detail what they're doing and in what order.</p><p>Obviously there are paid tools, entire companies that make this their business such as <a href="https://sessioncam.com/">SessionCam</a>. And what they do is great if you have the budget. But what about for those of us with slightly smaller wallets?</p><p>My usual approach to the problem these days is to use <a href="https://analytics.google.com/">Google Analytics</a>&nbsp;(or GA as it is inevitably shortened to). I suspect most people know that you can drop a simple GA JavaScript file onto a web page and any visits to the page will be automatically recorded, analysed to identify what type of user is visiting so that you can get a picture, even real time, of traffic to your site.&nbsp;</p><p>What's maybe less well known is that you can actually use that GA JavaScript to record events on your page so that you can really drill down into what is happening once the user loads the page.</p>


<blockquote>ga('send', 'event', 'MySuperPage_OKButton', 'Clicked');</blockquote>
<p>If you add the above line to the onclick event on a button on your page then, in your GA analysis you'll be able to see how often that particular button is clicked. And, really, you can track everything that the user does, every single key press, click and page load.&nbsp;</p><p>Well whoop-de-do you might say. That's a lot of data, but what use is it? Well, imagine you're adding or testing a new feature, wouldn't it be good to know how often it's actually being used. Or you may need to keep an eye on the volume of usage for a particular feature. Or your management may want to understand better how far through a process people are getting before dropping out. The point is that having more data is very rarely a bad thing and the development cost of adding this to an application is surprisingly low.</p><p>The question really is why you wouldn't do something like this for an application.</p>]]></description></item><item><title>Oh, ah-linting I will go</title><dc:creator>Matt White</dc:creator><pubDate>Fri, 01 Sep 2017 13:42:56 +0000</pubDate><link>http://mattwhite.me/blog/2017/9/1/oh-ah-linting-i-will-go</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:59a9617d03596e26c0c6fc19</guid><description><![CDATA[<img src="http://blog.ldcvia.com/assets/img/blog/eslint.png" /></i>
<p>Often when I talk with developers who are firmly in the C# or Java camp their main objection to JavaScript is that it’s not strongly typed. And indeed, if you’re new to the world of JavaScript, this is a big thing to get over.
</p>
<p>
  But there are strategies, best practices if you will, which can make the transition easier. One I thought worth mentioning is <a href="https://eslint.org/">ESLint</a>. This is a process whereby you statically validate your code to make sure it adheres to a set of rules you define. These rules can be as lax or strict as you like, but, applied properly they make your code more supportable, more readable and less error-prone.
</p>
<p>
  So, how to get started I hear you ask? A lot depends on your working environment. If you use a modern editor like VS Code, Atom or Sublime Text then there will be a plugin you can install to help you along. In your project, you add a <code>.eslintrc</code> file which defines the rules you want to apply and then you look, with horror, at the hundreds of errors that have suddenly appeared in your code.
</p>
<p>
But fear not, things aren’t as bad as they appear. Your ESLint plugin will probably have a command to automatically fix “easily fixable issues” such as using single quotes rather than double quotes for strings, or indentation of your code. Once these are all addressed you can fix the rest of the issues manually, and relatively quickly.
</p>
<p>
I’ve recently completed this exercise with a large code base primarily because we want to put some focus on performance: if I have code that is predictably organised, then this makes the process a lot easier.
</p>
<p>
A great side effect is that the rest of the developers on the team can pick up the code I’ve been butchering and immediately have some familiarity with the style.
</p>
<p>
  The most popular eslint configuration is published by <a href="https://github.com/airbnb/javascript">AirBnB as an open source project</a>. It’s a great starting point, but the beauty of these configurations is that if you don’t like a rule then you can simply turn it off. Or, on a case by case basis you can also turn off the rule in your code. As an example, <a href="http://blog.ldcvia.com/assets/files/eslintrc-demo.txt">here is the LDC Via <code>.eslintrc</code> file</a>.
</p>
<p>
Linting your code is not, in itself going to make it great code, but it will be a big help to you and, at the end of the day you can go home with a slightly smug feeling that you’ve gone that extra step to be a good programmer. And who doesn’t like to feel a bit smug sometimes?
</p>
<small>This blog post was originally published on <a href="http://blog.ldcvia.com/">blog.ldcvia.com</a>.</small>]]></description></item><item><title>Do you use your own product?</title><dc:creator>Matt White</dc:creator><pubDate>Mon, 21 Aug 2017 19:36:21 +0000</pubDate><link>http://mattwhite.me/blog/2017/8/21/do-you-use-your-own-product</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:599b32a77131a581916777f0</guid><description><![CDATA[<p>We're just back from holidays down in Cornwall and Devon and a lovely time was had by all.</p>


















  

    

      <figure data-test="image-block-v2-outer-wrapper" class="
            sqs-block-image-figure
            image-block-outer-wrapper
            image-block-v2
            design-layout-overlap
            
            
            
            image-position-left
            
          " data-scrolled
      >

        
          
            
            
              
              <img class="sqs-image-min-height" data-image="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1503343659185-3R408IEYD4LMLATJE84P/View+of+Falmouth" data-image-dimensions="2500x1875" data-image-focal-point="0.5,0.5" alt="View of Falmouth" loading="lazy" src="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1503343659185-3R408IEYD4LMLATJE84P/View+of+Falmouth?format=1000w"/>
              
            
          
            
          

        

        
          
          <figcaption data-width-ratio class="image-card-wrapper">
            

              

              
                <p>A view of Falmouth from one of our walks</p>
              

              

            
          </figcaption>
        

      </figure>

    

  


<p>Of course there has to be one exception: whenever we do any travel in the UK, I rarely carry change with me these days. And so, when parking the car, we rely on the various mobile parking apps to pay for our spaces.</p>


















  

    

      <figure data-test="image-block-v2-outer-wrapper" class="
            sqs-block-image-figure
            image-block-outer-wrapper
            image-block-v2
            design-layout-card
            
            
            
            image-position-left
            
          " data-scrolled
      >

        
          
            
            
              
              <img class="sqs-image-min-height" data-image="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1503343749599-XX7PMW91YBUIVE013YP5/Parkingapps.png" data-image-dimensions="1242x2208" data-image-focal-point="0.5,0.5" alt="Parkingapps.png" loading="lazy" src="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1503343749599-XX7PMW91YBUIVE013YP5/Parkingapps.png?format=1000w"/>
              
            
          
            
          

        

        
          
          <figcaption data-width-ratio class="image-card-wrapper">
            

              

              
                <p>After a couple of weeks away, I end up with a page of parking apps installed like this.</p>
              

              

            
          </figcaption>
        

      </figure>

    

  


<p>Some of the apps have nice features, but not one of them is actually staying on my phone now that I'm home.</p><p>And what's the point of this post? Well, not a single one of the many different parking apps that I've installed, used and then deleted as quickly as possible over the years is any good to use. The registration process is awful and opaque. You have to enter your name, a card type (why?), a card number, expiration date, CVC and only then is validation run and a single mistake clears out all the fields and you have to start again.</p><p>I've reached the point where I'm pretty sure that the people responsible for the apps have ever actually tried to use them, while standing in a car park, in the rain, with impatient children tugging at your shirt because they want to get to the beach. NOW!</p><p>If you write apps that people have to use in sub optimal locations, as opposed to behind your desk with fast wifi, please, please, please think about how they will be used in the real world. Even if the app will be used from the comfort of a sofa, why not actually try using it for real yourself before inflicting it on the rest of the world?</p>]]></description></item><item><title>Three months in with the new MacBook Pro</title><dc:creator>Matt White</dc:creator><pubDate>Wed, 02 Aug 2017 06:51:46 +0000</pubDate><link>http://mattwhite.me/blog/2017/8/2/three-months-in-with-the-new-macbook-pro</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:598172dcf5e231d6d788f3cd</guid><description><![CDATA[<p>A few months ago our house got burgled. Luckily it was just "stuff" that was taken and the insurance companies sorted everything out with remarkably little fuss and bother.</p><p>One bit of "stuff" that went was my work laptop, so I immediately got a new MacBook Pro 15", restored my backup and was able to carry on working.</p>


















  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
              <img class="thumb-image" data-image="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1501655901305-WT58903FHOYBCWW0INK8/mbp15touch-gray-select-201610.jpg" data-image-dimensions="452x420" data-image-focal-point="0.5,0.5" alt="mbp15touch-gray-select-201610.jpg" data-load="false" data-image-id="5981735dc534a57a0927cc5b" data-type="image" src="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1501655901305-WT58903FHOYBCWW0INK8/mbp15touch-gray-select-201610.jpg?format=1000w" />
            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p>The problem is that I'm still not feeling like I'm able to work as well as I was on the old machine. Now, admittedly that old machine had had the same design for several years, but everything about it was just good, the keyboard, the ports, everything really.</p><p>Not so much with the new design. The first, and still most notably annoying thing to me is the keyboard. I simply cannot type with the same speed and reliability as I can on other keyboards, I don't know what it is about it; maybe the lack of travel on the keys, or that they're bigger than before, or that aesthetically they show every bit of human contact in the form of fingerprints,&nbsp;or that it seems to be incredibly noisy when I'm bashing out long form text. I'm getting to the point where I'm considering getting an external keyboard and carrying that around with me, which would be insane.</p><p>The trackpad is also too big. Until using this laptop, I had never encountered the situation where, by resting my hands below the keyboard I'd mistakenly move the mouse while typing, but now it happens regularly.</p><p>Likewise with the silly gimmick that is the touchbar where there should be function keys. It's very much a case of "you don't know what you've got 'til it's gone". Apparently I used the F keys more often than I realised and swapping them out for typeahead suggestions that would take me longer to touch than simply typing the word feels like a step back to me.</p><p>It's not all bad, the screen is lovely and larger than before, but still no touch? Seems like a missed opportunity to me when compared to Windows 10. And the battery life is pretty amazing, I actually have travel days where I don't plug into the mains the whole day and still have 20% battery left, and that's without dialling down any settings or using it any less hard than I normally would.</p><p>All in all, if I were to buy a new laptop today I would end up buying a Windows machine; a Lenovo or a Surface over a MacBook Pro. I've not really been able to say that for well over ten years and it makes me sad.</p>]]></description></item><item><title>Browser tracking and digital advertising in the modern era</title><dc:creator>Matt White</dc:creator><pubDate>Sat, 29 Jul 2017 19:38:26 +0000</pubDate><link>http://mattwhite.me/blog/2017/7/29/browser-tracking-and-digital-advertising-in-the-modern-era</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:597ce06c7131a5fd5f58c543</guid><description><![CDATA[<p>In the <a target="_blank" href="http://comparethemarket.com">day job</a>, I deal with a lot of interactions between members of the public and ourselves, and our partners. If you're in any way involved in working with user data, then you'll have heard about <a target="_blank" href="http://www.eugdpr.org">GDPR</a>.</p><p>To be honest, this is quite a new world for me. Even though I've been working in web development for many many years, it's generally been in the business or corporate space where we're less concerned about these issues. What I've learned has really opened my eyes to exactly <strong>how</strong>&nbsp;you see those adverts tracking you around the internet and the huge amount of data that various providers know about you to be able to do it.</p><p>The video below is only 30 seconds long, and, to be honest, slightly underplays the number of companies that get to see your profile data as you browse around the internet. But it's a good grounding.</p>


<iframe scrolling="no" src="https://fast.wistia.com/embed/iframe/znh6y05b3f" allowtransparency="true" name="wistia_embed" width="480" frameborder="0" class="wistia_embed" height="270"></iframe><p>GDPR is going to shake up a lot of how this all works and I don't think there is really a plan for how internet advertising is going to work after May 2018, but, in the meantime it's worth visiting <a target="_blank" href="http://www.youronlinechoices.com/uk/your-ad-choices">YourOnlineChoices.eu</a>&nbsp;in the short term to see what's being tracked in your browser.</p><p>The service there is a voluntary one which the main players in digital media have signed up to. It allows you to opt out of being offered adverts by different providers. So, if you opt out of everything there, then, often you'll see far less advertising as you browse.</p><p>If you want a good grounding in the GDPR space, then <a target="_blank" href="https://twitter.com/muenzpraeger">Rene</a> linked to an excellent set of pages offered by his employer, <a target="_blank" href="https://trailhead.salesforce.com/en/trails/learn-privacy-and-data-protection-law/modules/european-union-privacy-law-basics">Salesforce</a>.</p>]]></description></item><item><title>IBM Connect goes to the pub</title><dc:creator>Matt White</dc:creator><pubDate>Thu, 16 Feb 2017 14:50:51 +0000</pubDate><link>http://mattwhite.me/blog/2017/2/16/ibm-connect-goes-to-the-pub</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:58a5bbbbe6f2e11e868a4a9e</guid><description><![CDATA[<p>As some people begin their trek to the new venue of IBM Connect in San Francisco over the next couple of days, not all of us are going.&nbsp;</p><p>Instead, we decided to host a <strong>free beer</strong>&nbsp;event in London to watch the OGS Keynote next Tuesday evening. So, if you're in town and want to come along then we'd love to see you.&nbsp;</p><p>You can <a target="_blank" href="https://www.eventbrite.com/e/ibm-connect-goes-to-the-pub-tickets-31535309961">register to attend (so that we know you're coming) here</a>.</p>]]></description></item><item><title>XControls 1.7.0 Released</title><dc:creator>Matt White</dc:creator><pubDate>Wed, 06 Jul 2016 20:49:26 +0000</pubDate><link>http://mattwhite.me/blog/2016/7/6/xcontrols-170-released</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:577d6d6e44024321809a3655</guid><description><![CDATA[<p>I've been most remiss in not talking more about the <a target="_blank" href="http://xcontrols.org">XControls </a>project which lets you quickly build an application that will run on desktop, iOS and Android with as little coding required as possible.</p>

















 

  
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
              <img class="thumb-image" data-image="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1467838137720-C85X1RE25A1I4HRWY0YV/image-asset.png" data-image-dimensions="1371x1056" data-image-focal-point="0.5,0.5" alt="" data-load="false" data-image-id="577d6eb8be65940a22ebdd7e" data-type="image" src="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1467838137720-C85X1RE25A1I4HRWY0YV/image-asset.png?format=1000w" />
            
          
        
          
        

        
      
        </figure>
      

    
  



<p>It's the little open source project that just keeps rolling along. As and when I get the chance, I'll have a blast through the <a target="_blank" href="https://github.com/whitemx/xcontrols-domino/issues">Github issues list</a> and put out a new version. Today has been one of those days where I've fixed a few bugs, added a few changes and released it to the website, and <a target="_blank" href="https://www.openntf.org/main.nsf/project.xsp?r=project/XControls/summary">OpenNTF</a>.</p><p>If you'd like any assistance in getting started with XControls or, indeed, if you'd like an application created, then please do <a target="_blank" href="mailto:matt@ldcvia.com">drop me a line</a>.</p>]]></description></item><item><title>Jade / Bootstrap pagination mixin</title><dc:creator>Matt White</dc:creator><pubDate>Fri, 20 May 2016 08:55:50 +0000</pubDate><link>http://mattwhite.me/blog/2016/5/20/jade-bootstrap-pagination-mixin</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:573ecfb727d4bd2e1c374f5c</guid><description><![CDATA[<p>I've been working on a new <a target="_blank" href="http://nodejs.org">node.js</a> application for the last few weeks. It uses <a target="_blank" href="http://ldcvia.com">LDC Via</a> as a back end, but that is by the by. On the front end I am rendering HTML using <a target="_blank" href="http://jade-lang.com/">Jade</a> and <a target="_blank" href="http://getbootstrap.com">Bootstrap</a>.&nbsp;</p><p>As I have the need to display quite a lot of data, I'm using <a target="_blank" href="http://getbootstrap.com/components/#pagination">Bootstrap pagination</a> and had need to make a re-usable "<a target="_blank" href="http://jade-lang.com/reference/mixins/">mixin</a>" that I can insert into many different pages. There are a <a target="_blank" href="https://gist.github.com/backus/5087360">few examples</a> out there on t'internet that do this, but none that did exactly what I needed, so I've created by own.</p>


<p>To use it you just enter something like this in your Jade template:</p><p>- var pages = 10<br />- var currentpage = 3<br />+pagination(1, pages, currentpage, '/index/')</p><p>And you end up with a pagination control that looks like this:</p>

















 

  
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
              <img class="thumb-image" data-image="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1463734460909-KJW8TLZWKZAQ2LSQ53NW/image-asset.png" data-image-dimensions="238x78" data-image-focal-point="0.5,0.5" alt="" data-load="false" data-image-id="573ed0bc8259b5f9e45266e4" data-type="image" src="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1463734460909-KJW8TLZWKZAQ2LSQ53NW/image-asset.png?format=1000w" />
            
          
        
          
        

        
      
        </figure>]]></description></item><item><title>Superb fix for high DPI problems with Notes and Windows</title><dc:creator>Matt White</dc:creator><pubDate>Fri, 08 Jan 2016 08:58:19 +0000</pubDate><link>http://mattwhite.me/blog/2016/1/8/superb-fix-for-high-dpi-problems-with-notes-and-windows</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:568f78dd69a91adb94c884f1</guid><description><![CDATA[<p>If you are running a PC with a high resolution screen (pretty much any high end laptop these days for example), you'll have experienced the issue where the scaling of text, images and icons in the Notes and Designer clients is awful to the point of being unusable.</p><p>Dan Anonielli has come up with a solution which seems to work very well for me at least: <a target="_blank" href="http://www.danantonielli.com/adobe-app-scaling-on-high-dpi-displays-fix/">http://www.danantonielli.com/adobe-app-scaling-on-high-dpi-displays-fix/&nbsp;</a></p><p>The basic idea is that when an application launches, Windows asks it if it is high DPI aware. Notes (well Eclipse), claims that it is and so Windows believes it and we get the resulting mess. But with the new registry entry mentioned in the blog above, we tell Windows to first look for an external manifest file that can override this default. So we can tell Windows that Notes is not high DPI aware and so Windows handles the scaling for us.&nbsp;</p><p>It's not a perfect solution, but until Eclipse / IBM come up with something better then it's a good fix.</p><p><strong>Edit 23rd May 2016:&nbsp;</strong>&nbsp;I had cause to come and revisit this issue thanks to a customer and found that the solution above didn't always work and I couldn't find the reason. However, if you install 9.0.1 FP4 or higher then you should find that things are a lot better than they were. Still not perfect, but usable at least.</p>]]></description></item><item><title>Introduction to LDC Via Webinar</title><dc:creator>Matt White</dc:creator><pubDate>Mon, 04 Jan 2016 07:55:29 +0000</pubDate><link>http://mattwhite.me/blog/2016/1/4/introduction-to-ldc-via-webinar</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:568a22d505f8e23aa29301fb</guid><description><![CDATA[<p>We're very aware at <a href="http://ldcvia.com">LDC Via</a> that lots of people are interested in our offering, but it can be a little overwhelming to get started, so on Tuesday the 12th Jan, we're going to talk and demo for an hour about what <a target="_blank" href="http://ldcvia.com">LDC Via</a> is, how it works and how you can use it to liberate your Domino data.</p>

















 

  
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          <a class="
                sqs-block-image-link
                
          
        
              " href="https://attendee.gotowebinar.com/register/3901059929414555906" target="_blank"
          >
            
          
            
              <img class="thumb-image" data-image="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1451893935904-AVPAO2D78SIFUXCL64BJ/ldcvia-webinar.png" data-image-dimensions="470x245" data-image-focal-point="0.5,0.5" alt="ldcvia-webinar.png" data-load="false" data-image-id="568a24af0ab377ae44eff384" data-type="image" src="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1451893935904-AVPAO2D78SIFUXCL64BJ/ldcvia-webinar.png?format=1000w" />
            
          
        
          </a>
        

        
      
        </figure>
      

    
  



<p>It's obviously a free event and we'd love to have you there. You can <a href="https://attendee.gotowebinar.com/register/3901059929414555906">register here</a>. And what better way can there be to start a new year than to attend a webinar :-)</p><p>Of course we will all be attending or speaking at Connect 2016 in a few weeks as well, so if you would like to chat with any of us, please <a target="_blank" href="mailto:support@ldcvia.com">drop us a line</a> to arrange a meeting.&nbsp;</p>]]></description></item><item><title>ICON UK is fast approaching</title><dc:creator>Matt White</dc:creator><pubDate>Mon, 31 Aug 2015 09:53:00 +0000</pubDate><link>http://mattwhite.me/blog/2015/8/27/icon-uk-is-fast-approaching</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:55deb407e4b0d012894b17dd</guid><description><![CDATA[<p>Every year, around this time, we have had ICON UK (formerly UKLUG) since 2007 and this year is no exception. For me it'll be a different event. I've always helped out with organising something behind the scenes before, but this year we're fully devoted to working on <a target="_blank" href="http://ldcvia.com">LDC Via</a> so will be attending as a sponsor for the first time.</p><p>So it'll be a busy couple of days:</p><ul dir="ltr"><li>We've got the booth and would love for you to come by,&nbsp;say hello and see what we've been working on for the last year.</li><li>We'll be doing a sponsor session at 2pm on Monday to talk in a bit more detail about LDC Via.</li><li>I'll be presenting a session titled "node.js for Domino developers" at 4pm on Monday.</li></ul><p>All in all, it promises to be a great couple of days. If you haven't already take a look at the <a target="_blank" href="http://www.iconuk.org/iconuk/iconuk2014.nsf/agenda.xsp">agenda</a> and <a target="_blank" href="http://bit.ly/iconukreg">register</a> before the event fills up.</p>]]></description></item><item><title>MWLUG just a week away</title><dc:creator>Matt White</dc:creator><pubDate>Tue, 11 Aug 2015 14:54:24 +0000</pubDate><link>http://mattwhite.me/blog/2015/8/11/mwlug-just-a-week-away</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:55ca0abce4b042fd7754d09f</guid><description><![CDATA[<p>In just a week I'll be flying to Atlanta to attend my first ever MWLUG event.</p><p>From what I've heard it's a really good conference and I'm certainly going to be busy. I'll be working on the <a href="http://ldcvia.com">LDC Via</a> booth in the sponsor showcase most of the time so please come and say hello.</p><p>And then at 4:45pm on Thursday I'll be presenting a new session:</p><h3><strong>Node.js for Domino Developers</strong></h3><p><span>The world of web development is moving pretty fast, it's good to keep an eye on what the leaders are doing. Node.js is currently one of the most popular development platforms out there. This session will walk you through the basics. What is node.js? How do I get started? Is it something I want to get involved with? The key for all of this is that Matt is a Domino developer by trade, so we'll talk in terms we all understand!</span></p><p>Hope to see you there.</p>]]></description></item><item><title>End of year review 2014</title><dc:creator>Matt White</dc:creator><pubDate>Wed, 31 Dec 2014 08:25:43 +0000</pubDate><link>http://mattwhite.me/blog/2014/12/31/end-of-year-review-2014</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:54a3af81e4b0ac4256d717e3</guid><description><![CDATA[<p>This year has been one of disruption on the home front, but in a positive way. We decided to replace the main bathroom in the first half of the year but that was really just a taster for the main project of building an extension onto the back of the house. Where we had a small kitchen and a dining room that we didn't really use very much, now we have a large kitchen diner family room that we spend the majority of our time in. It was the first time I'd tried to do a project of this scale and for the most part it was remarkably smooth. Though we were so glad when, in November after three months of work, we finally got rid of the building team. But having just done our first Christmas in the new room, we really couldn't be happier with the changes.&nbsp;</p>

















 

  
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
              <img class="thumb-image" data-image="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1420013978101-1HUVZYTRPFBW3R0JVM9F/newroom.jpg" data-image-dimensions="2000x2000" data-image-focal-point="0.5,0.5" alt="The new room after 4 months of work" data-load="false" data-image-id="54a3b198e4b0b6dc3e0802bc" data-type="image" src="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1420013978101-1HUVZYTRPFBW3R0JVM9F/newroom.jpg?format=1000w" />
            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p>The new room after 4 months of work</p>
          </figcaption>
        
      
        </figure>
      

    
  



<p>It did mean that there wasn't as much time for other things as I would have liked. I realised a couple of weeks ago that I only took two weeks off work for the year, this is not enough, and will be resolved in 2015!</p><p>That being said, I worked far more from home than previously so I got to spend much more time with the family. I'm really incredibly lucky to be able to wander downstairs from work at 5:30 and spend a couple of hours with the toddler before she goes to bed of an evening. Unbelievably she is already 2.5 years old.&nbsp;</p><p>On the work front 2014 has seen significant change. Domino work has become much more limited in its scope and volume. But it's given us the opportunity to do something that we've been wittering about for a long time. Earlier in the year we (that is <a target="_blank" href="http://benpoole.com">Ben</a>, <a target="_blank" href="http://stickfight.co.uk">Mark</a>, <a target="_blank" href="http://blog.woowar.com">Julian</a> and myself) started coding a new tool that has become <a target="_blank" href="http://ldcvia.com">LDC Via</a>. This involved learning new technology stacks in the form of node.js and MongoDB. It's been a long time since I learned so much in such a short period of time but we've finally reached the point where we have a product that we're happy to share with our beta program members. You'll hear a lot more about our offering over the next few months.&nbsp;</p><p>I still do Domino work when the opportunity arises but I think at this point I'd consider myself a node.js / MongoDB developer. It's something that was always going to happen, it just happened a little sooner than I had anticipated.&nbsp;</p><p>So 2015 is going to be an exciting one: we have some big changes coming on the home front in a couple of months and at the same time I need to be rolling out a new product and continuing to develop it.</p><p>&lt;/2014&gt;</p><p>&lt;2015&gt;</p>]]></description></item><item><title>Haven't we been busy</title><dc:creator>Matt White</dc:creator><pubDate>Fri, 26 Sep 2014 09:18:54 +0000</pubDate><link>http://mattwhite.me/blog/2014/9/26/havent-we-been-busy</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:54252dd7e4b0b6a58667a40c</guid><description><![CDATA[<figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
              <img class="thumb-image" data-image="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1411723110924-3T96Y7YRL8W72UNIHLOO/image-asset.png" data-image-dimensions="150x156" data-image-focal-point="0.5,0.5" alt="" data-load="false" data-image-id="54252f44e4b07a1288bfe452" data-type="image" src="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1411723110924-3T96Y7YRL8W72UNIHLOO/image-asset.png?format=1000w" />
            
          
        
          
        

        
      
        </figure>
      

    
  



<p>Over the last few months you may have seen less of me and the rest of the <a target="_blank" href="http://ldcvia.com/about.html">LDC team</a> than usual. But there is good reason, we have been busy little bees creating a <a target="_blank" href="http://ldcvia.com">new product</a> that hopefully you'll be interested in if you work in the Domino world.</p><p>Over the next few weeks we're going to cover the Why, What and How of LDC Via, and Why is first.</p><p><span>What we’re seeing now is that Notes and Domino are viewed (whether correctly or not—that’s a separate discussion!) as being somewhat old-fangled, uncool and—that horrible word—“legacy”. The upshot is that some organisations are reducing, or even stopping, investment in this platform. For email they may well be migrating, or have migrated, to Microsoft or Google. Those that are staying with IBM may be considering moving to IBM SmartCloud for email. So, for many, the on-premises Domino servers have become a liability, a problem, and an unwanted overhead. But—and it’s a big but—there are important business records and data locked away on those servers.</span></p><p><a target="_blank" href="http://blog.ldcvia.com/2014/09/25/why-oh-why-part-1/">Head on over to our blog to read more...</a></p><p>We're also looking for people to get involved with our beta program. If you or your company is interested then please contact us and we can let you know more detail.</p>]]></description></item><item><title>Call for abstracts for ICONUK</title><dc:creator>Matt White</dc:creator><pubDate>Fri, 06 Jun 2014 09:53:49 +0000</pubDate><link>http://mattwhite.me/blog/2014/6/6/call-for-abstracts-for-iconuk</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:53918ec3e4b0df683d9bef38</guid><description><![CDATA[<p>Are you registered for <a target="_blank" href="http://iconuk.org">ICONUK 2014</a> yet? <a target="_blank" href="http://tc-soft.com/blog/">Tim Clark</a> is running the event this year, but we still need speakers. It's that time of year again when we ask you to throw your hat into the ring if you want to speak at ICONUK. I'm running the Dev track, and I just thought it would be useful to run through the process of how we choose the sessions.</p><p>Firstly I move all of the session titles and abstracts into a spreadsheet and remove any names from the list to try and avoid falling into the trap of automatically selecting "the old dependables". Just to give an idea, last year we had nearly three times as many abstracts as we had sessions, so this next bit of the process is very hard. We go through the abstracts and we rate each one so that there is a league table.&nbsp;</p><p>Next we add in the speaker names. We try our best to get as many speakers in as possible, so if someone has played a blinder and submitted multiple abstracts which we like, we'll either pick the best one and remove the others, or contact them to see if maybe they could speak with someone else, ideally someone new to the speaking circuit.</p><p>After much arguing and horse trading with the other tracks (sometimes we can stretch the definition of Infrastructure or Dev or Management!) we end up with a list and we'll send out the notification emails.</p><p>And that's where the real fun starts for you!</p><p>So please do have a think about whether you want to try out presenting in a smaller, less terrifying setting than Florida. The Call For Abstracts closes on Monday 30th June and we'll aim to let people know as soon after that as possible.</p>]]></description></item><item><title>CSC Event 2</title><dc:creator>Matt White</dc:creator><pubDate>Thu, 05 Jun 2014 07:26:23 +0000</pubDate><link>http://mattwhite.me/blog/2014/6/5/csc-event-2</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:53901b66e4b08e8de8158bea</guid><description><![CDATA[<p>We’re very pleased to announce our 2nd CSC Event taking place this time in the evening of July 16th. &nbsp;It will still be at the fantastic Soho Hotel in London which everyone thought so successful last time but this time we’re trying something a little different.</p><p>The event begins at 6pm and will run until 9pm with only two sessions followed by drinks and possibly further drinks afterwards.</p><p>Last time our biggest feedback was that it was shame to choose between sessions and that it would be good to see both Technical and Work &amp; Life so we will be running two sessions one after the other. &nbsp;A Technical Session in the Screening Room and then we’ll all move to the Crimson Bar for a Work &amp; Life session and since we’re in the bar, we’ll finish up with some drinks.</p><p>As always we hope for audience participation and we’d ask you to register and invite friends and colleagues – this is far outside the IBM world and our discussions are very broad.</p><p>Registration is&nbsp;<a target="_blank" href="http://www.eventbrite.co.uk/e/csc-london-2-tickets-11569196779">here</a></p><p><span><strong>Technical Session: &nbsp;This will consist of 3 x 10 min presentations followed by an 30 min open floor discussion</strong></span><br />“Exciting Technologies”<br />Where is the next surge in technical innovation coming from and how do we position ourselves for that? &nbsp;Wearables? &nbsp;Cloud Storage? &nbsp;Collaborative Working? Searching and Finding Content? &nbsp;Every day we discover or hear about new technologies and technology areas that sound promising. &nbsp;Which ones are exciting and how do you decide between standing back, monitoring, beta testing or positioning yourself for adoption?<br /><br /><span><strong>Work and Life Session: &nbsp;This will be an open floor moderated discussion. All voices&nbsp;welcome!</strong></span><br /><span>“When People Are The Problem”</span><br />People collaborating together can do amazing things, but there is always the potential for personality clashes, misunderstandings and friction, particularly when change and issues of ownership are involved. In this session we will discuss&nbsp;how these issues can arise and what techniques we all use to finesse them or whether, when reality crashes in, collaborative working can work at all.</p>]]></description></item><item><title>Oh yes, we'll need a database</title><dc:creator>Matt White</dc:creator><pubDate>Fri, 30 May 2014 10:00:00 +0000</pubDate><link>http://mattwhite.me/blog/2014/5/27/oh-yes-well-need-a-database</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:5384a92ae4b08791cb70b4f0</guid><description><![CDATA[<p id="yui_3_10_1_1_1401202982333_15809"><span>I suppose this is the biggie. Since 1996 my database of choice has been the venerable NSF&nbsp;</span><a data-cke-saved-href="http://en.wikipedia.org/wiki/Notes_Storage_Facility#Database" href="http://en.wikipedia.org/wiki/Notes_Storage_Facility#Database">http://en.wikipedia.org/wiki/Notes_Storage_Facility#Database</a><span>&nbsp;which is a Document Oriented Database. Coincidentally the rest of the world has now caught up and there are some more modern options available to achieve the same things now. The real flavour of the moment is MongoDB&nbsp;</span><a data-cke-saved-href="http://www.mongodb.org/" href="http://www.mongodb.org/">http://www.mongodb.org</a><span>, like the NSF it’s document based and can be replicated between multiple locations. Unlike the NSF it is much more scalable and the old limitations that we were constrained by have largely been mitigated. Of course there is no such thing as a silver bullet, but really there is no comparison between the NSF and modern document oriented databases. You have no idea how sad that makes me, but it is true.</span></p><p id="yui_3_10_1_1_1401202982333_16347">Anyway, back to the real world. Every application needs a database, and my choice in this case is <a href="http://mongodb.org" data-cke-saved-href="http://mongodb.org" target="_blank">MongoDB</a>. As ever, this is not a tutorial, the MongoDB website provides quite reasonable documentation to get you going:&nbsp;<a data-cke-saved-href="http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/" href="http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/">http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/</a></p><p id="yui_3_10_1_1_1401202982333_17129">Now, you could just go with Mongo directly, but in various tutorials I had read about <a href="http://mongoosejs.com" data-cke-saved-href="http://mongoosejs.com" target="_blank">MongooseJS</a>&nbsp;as well. MongoDB is just a database, it doesn’t force you to implement schemas, validation, or really any structure to your data. It may well be the case that you don’t want any of that, in which case go for your life. The syntax for talking to MongoDB is very simple REST calls. But with the addition of MongooseJS we get another layer of abstraction and assistance.</p><p>The primary boon for me has been the creation of simple schema’s. Each of the document types in my application has a schema defined; I know what fields will be created, I can create default values for optional fields and I can also create server side validation rules in a nice structured way. It’s also really useful to have a standard way of running code every time a document is saved back to the database.</p><p>And at this point we have our first venture into the cloud. It’s very easy to get everything we’re talking about running on your local machine, but what about when you want to show it off to the rest of the world? In my case I’m working with Bruce so for him to test we need an environment. There are hundreds of options available to you, but as with all of these posts I’ll describe what I’m doing.</p>

















 

  
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
              
              
          
            
              <img class="thumb-image" data-image="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1401203117657-NTDBQX8C1SO0ETWZGBM4/image-asset.png" data-image-dimensions="782x361" data-image-focal-point="0.5,0.5" alt="Heroku Console" data-load="false" data-image-id="5384a9ade4b085f9cb168471" data-type="image" src="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1401203117657-NTDBQX8C1SO0ETWZGBM4/image-asset.png?format=1000w" />
            
          
        
            
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p>Heroku Console</p>
          </figcaption>
        
      
        </figure>
      

    
  



<p>First we have the node.js hosting, where we’re using Heroku. It’s nice and simple to create a development instance that runs on a <a target="_blank" href="https://devcenter.heroku.com/articles/dynos">single dyno</a>&nbsp;and then add plugins for things like console management, monitoring and so on. But we also need somewhere to host the database itself. For this we’re currently using <a target="_blank" href="https://mongolab.com/">MongoLab</a>&nbsp;which again is very easy to set up a development database instance. The key thing about both of these development environments is that they are free. So I can do a Git push from my repo, and add configuration to the application to point to Mongolab for data storage and suddenly my application is running in the cloud.</p>

















 

  
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
              
              
          
            
              <img class="thumb-image" data-image="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1401203206648-EGOP10KFWAOHLGLRAMYH/image-asset.png" data-image-dimensions="789x181" data-image-focal-point="0.5,0.5" alt="MongoLab console" data-load="false" data-image-id="5384aa06e4b05a0167521f27" data-type="image" src="https://images.squarespace-cdn.com/content/v1/500fb502e4b0b0a178712c5d/1401203206648-EGOP10KFWAOHLGLRAMYH/image-asset.png?format=1000w" />
            
          
        
            
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p>MongoLab console</p>
          </figcaption>
        
      
        </figure>
      

    
  



<p>This is all worryingly simple isn’t it?&nbsp;</p>]]></description></item><item><title>Jade HTML Template Engine</title><dc:creator>Matt White</dc:creator><pubDate>Thu, 29 May 2014 10:00:00 +0000</pubDate><link>http://mattwhite.me/blog/2014/5/27/jade-html-template-engine</link><guid isPermaLink="false">500fb502e4b0b0a178712c5d:500fb669e4b00f3716e9af9d:53848769e4b0f219e1f9c2e0</guid><description><![CDATA[<p>In the last post I mentioned that when you start using Express, you are nudged towards Jade to create your HTML.</p><p>At its simplest, Jade provides a way to make your HTML more terse. To produce HTML like this:</p>


<p id="yui_3_10_1_1_1401193974092_21895">We would only need to enter Jade like this:</p>


<p>We can break up the contents of our pages, so in this example the head contents are defined in a different file and can be shared across multiple pages. The syntax is very simple, indentation is used to nest elements within each other and you can add ID, class and other attributes with simple markup.</p><p>But really the power is that you can also do simple scripting inside the Jade file. So you can conditionally load chunks of the page based on data that you pass into the page. And then you can also pass in variables to the Jade template to be used when building the HTML. In the example above, the title is passed into the page as a variable from the route configuration.</p>


<p>Of course you can bind field onto your database using similar techniques.&nbsp;</p><p>The structure of my real world application has a layout Jade file which itself is made up of several Jade files: head, header, footer, and foot. In the head I have all of my CSS and web attributes. The header is the navigation header for the site. The footer is a static footer navigation bar and the foot contains all of the JavaScript files that need to be downloaded to the client. In between header and footer I can insert my content.</p>


<p>The momentum in the web development world is very much towards AngularJS at the moment which doesn't really sit with Jade too well. It is possible to use both but they tread on each others toes rather a lot so it may end up being more trouble than it's worth. But for my purposes Jade and jQuery are working well together for me at the moment.</p>]]></description></item></channel></rss>