Hobbyist computer programmer from Melbourne, Australia.

Currently studying a Diploma of Software Development.

Contributor to and member of Open Live Writer.


me elsewhere

electronic mail:
nick [at] nxk [dot] io

subscribe via RSS

Like what I do?

All of my work on open-source software occurs in my free time. If you'd like to support my work, you can donate through PayPal.

Buttons!

Blog

  • Hello there!

    Hello from .NET Meetup Melbourne!

     

     

    IMG_6833


  • Bye Blogger, and hello GitHub Pages

    After over a month of work and 243 commits, Open Live Writer now has the ability to publish to static site blogs. And as such, I have decided to move my blog to a static Jekyll site, built and hosted on GitHub Pages. Open Live Writer works brilliantly with this setup, and in fact it’s how I’m authoring this post right now.

    More...


  • Insider Dev Tour ‘review’

    On Friday I attended Microsoft’s ‘Insider Dev Tour’ in Melbourne, one of about 44 similar events being held around the world throughout the month of June. Microsoft advertised the event as being ‘for developers interested in building Microsoft 365 experiences (…) today, using the latest dev technologies, as well as for those who want a peek into the future,’ and it was completely free to attend. Hosted at the offices of Xello, a Melbourne-based IT consultancy company, the event was all day, running from the hours of 8 to 5, and had food and coffee provided.

    I was fairly excited when I heard about the event, having being recently drawn in to the Windows desktop development ecosystem through my involvement in the Open Live Writer project. I wasn’t going in with any particular agenda on things I would’ve liked to learn, but rather I was just curious as to how the whole day would play out and if I’d pick up any nifty skills. I’ve never been to any kind of developer conference before, so really this would’ve been a first for me.

    More...


  • A few thoughts on the recent Moe bus re-timetabling

    Photo: LVBL Volvo B5L bus outside the Latrobe City Moe Library and Service Centre. Photo Credit: Volvo
    Photo: LVBL Volvo B5L bus outside the Latrobe City Moe Library and Service Centre. Photo Credit: Volvo

    Roughly two years ago, PTV completely overhauled the bus network in the Latrobe Valley, operated by Latrobe Valley Bus Lines. Amongst other changes, the new routes and timetables split the Newborough loop out of the Moe to Traralgon trunk route (Route 1), thus creating two local Newborough routes (Route 14 and the new 15), as well as streamlining Route 1 to run more reliably, regularly, and for longer hours. Whilst many Newborough locals were opposed to the changes, I personally found them to be of considerable improvement. The new Route 15 provided service where there previously was none, and the Route 1 streamlining meant you could get to Morwell from Moe/Newborough in roughly 15 minutes, and Traralgon in around 35.

    Even though I spend most of my time nowadays in Melbourne, the bus network in the Latrobe Valley still remains of considerable importance to me. It’s how I got around when I lived there, and now it’s how I get around when I’m in the area visiting family or friends. As such I have been able to generate an array of opinions on how the service is run, with most of them not being positive. I’ve communicated before, both to LVBL and PTV, about the various faults I find in the operation of the service; such as the lack of timely connections to trains Moe Station, or Route 1 buses arriving late into Moe Bus Interchange with local town routes departing before the Traralgon bus arrived. Writing to LVBL simply resulted in them asking me to redirect my complaint to PTV, and writing to PTV garnered basically no tangible response to my concerns; they simply stated that they’d keep my concerns in mind rather than opening a dialogue.

    So understandably, I was both excited and hesitant when I heard that PTV are due to enact a new set of bus timetables for the Latrobe Valley on the 23rd of June. Would we finally see a more logical set of routes and timetables for Moe, with proper connections with trains and other bus routes, or would we see just a general expansion to service with the same faults still present?

    More...


  • C# Dirty Delegate Hack

    Just a quick one for today. For a uni C# assignment I’ve had to implement a multi-delegate that processes a list of data, with the delegate consisting of three disparate functions which I also had to implement, according to a unit test spec. Data has to flow between each step of the delegate to produce the correct output. Now the usual way to do this would be to use pass-by-reference to alter the original data in-place, however in this circumstance it was not possible as the tests required the signatures of the delegate methods to pass-by-value. After thinking for some time, I came to the following solution. Beware, it’s fairly horrible.

    In the classes containing the delegate methods, I define a helper function;

    public static List<List<string>> S(List<List<string>> oldData, List<List<string>>newData) {
         for (var i = 0; i < oldData.Count; i++) oldData[i] = newData[i];
         return oldData;
    }

    Then in the delegate methods, I wrap the results expression in this helper function, passing the original list as the first parameter

    public List<List<string>> StripWhiteSpace(List<List<string>> data)
         => S(data, data.Select(row => row.Select(val => val.Trim()).ToList()).ToList());

    This then results in the new data being returned from the method (satisfies the tests) as well as the original data being replaced (allows the data to flow to the next delegate method). How does it work? It comes down to the fact that the data I’m working with here is non-primitive; passing it between methods is implicitly by reference rather than by value. It did take me a while to reach this conclusion, my initial thinking was that I’m working with lists of strings, and strings are primitive and therefor pass-by-value. When I realised I was actually working with Lists, which are non-primitive objects, it occurred to me that I could write a helper method to modify each member of the original List in-place. Because the new data is being placed back into the original List object, the same object of which is referenced later on, the data carries itself forward into those next methods of the delegate.