I’m Eric Tummers, Software Architect at Statistics Netherlands, and this is how I work


My jobs description says Software Architect. I’m guiding my team through the technical hurdles and do some programming/testing/analysing myself. We follow the scrum guide and are working towards continuous integration and deployment. We do this in small steps. Every sprint we complete means the retrospective is done in the pub.

I expect the best and I give the best. Here’s the beer. Here’s the entertainment. Now have fun. That’s an order!
RasczakLocation: Sittard, NL
Current Gig: Devops Teamlead, CBS
Word that best describes how you work: Teamwork
Current mobile device: iPhone se
Current computer: MacBook 15 inch

What apps/software/tools can’t you live without? Why?

Wunderlist: work tasks, chores, groceries, planning, every task is there. I’m aware of the acquisition by Microsoft and the planned end-of-life.
Evernote: I’m a fan for years now.
Parallels 11: Running Windows on my MacBook is a must. And of course visual studio, team foundation server, build, release manager, sql server management studio, remote desktop, powershell, and some other tools I need for work.
Alfred: keyboard shortcuts for everything. I bought the powerpack and advise you to do the same. Still on v2 though.

What’s your workspace setup like?

Work at the office is on a thin client with 24 inch screen and (wired) mouse and keyboard. The desk and chair comply with all regulations. We have a great coffee machine.

dekstop_2017

My home workspace is still my Macbook 15 inch. I’ve a new setup with logitech keyboard and mouse (MX800) and Benq 24 inch monitor (BL2420PT). Nothing fancy but the extra screen space is very welcome.

What’s your best time-saving shortcut/life hack?

Timebox. Start on a task and spent the time you’ve got to get the best result. Get someone to look at it, get feedback. Then decide if the result is final or to spent some more time.

Besides your phone and computer, what gadget can’t you live without and why?

I replaced my Magellan Echo with the Garmin FR235. It has smart watch features and a optical heart rate monitor. My phone is on mute since the Garmin notifies me of everything.
My Apple Airpods. Easy to use, small and good sound. Never leave the house without them.

What everyday thing are you better at than everyone else? What’s your secret?

Learning new things. My current project lets me implement new things (joy) Also I try to learn the things I know to my team or anyone who listens.
I have a basic understanding of how things work and try to map new things on there. For the details I have a Pluralsight subscription and black belt google skills.

What do you listen to while you work?

My alarm clock plays classical music to wake me up in the morning. The car stereo plays about everything (grunge, rock, kids stories) driving to work. When I need some focus I play drum and bass on my headphones. My ringtone is still Run riot by Camo & Krooked, although it is muted since I got the Garmin.

What are you currently reading?

The Hard Thing About Hard Things. It gives an insight into the problems a CEO has and how to overcome these. I enjoyed reading it on my last vacation and plan to read it again after I finish it.

How do you recharge? What do you do when you want to forget about work?

Spending quality time with my wife and daughters. Phone on silent, no screens, no work. Mostly piggyback riding and tea parties
Also sports like running, fitness, climbing and snowboarding to keep me fit and healthy.

Fill in the blank: I’d love to see _________ answer these same questions.

DC Rainmaker (Ray) has been on my reading list for years. His reviews about sport gadgets is amazing. If you don’t know who this is I urge you to click the link. For the rest; you know why.

What’s the best advice you’ve ever received?

someecards.com - Make a shit first draft you cannot edit a blank page
I believe this is a variant on a Hemingway quote.

Is there anything else you’d like to add that might be interesting to readers?

Learn Powershell. There is so much possible with Powershell. If you can learn one thing this year pick Powershell.

Original idea from Lifehacker.com.

Posted in Uncategorized | Tagged , , , , , , , | Leave a comment

Webdeploy connectionstrings to xTokenize

We have an asp.net webapplication (full framework) and deploy it using release manager. The bits are in an artifact that is created during build with the contents of the webdeploy zip and a powershell desired state configuration (dsc) script to install te webapplication. Somewhere in the powershell script we use the xTokenize DscResource to set the connectionstrings and other settings.

mage courtesy of Kittikun Atsawintarangkul / FreeDigitalPhotos.net

In our initial setup we used the token file approach that is the default. Microsoft provided us with an example: https://www.powershellgallery.com/packages/xReleaseManagement/1.0.0.0/Content/Examples%5CxTokenize_TokenFile.ps1

The steps during build and release are:

  1. build performs web.config transformation to remove the debug (and other things),
  2. build replaces the web.config connectionstring with webdeploy tokens,
  3. build adds the web.token.config file to the artifact,
  4. release copies the web.config to the wwwroot directory,
  5. xTokenize replaces the web.config with the web.token.config,
  6. xTokenize replaces the tokens in web.config with actual values

It worked, but we had to copy every change in web.config to web.token.config. This felt cumbersome and error prune.

There was another example without the need of a token file: https://www.powershellgallery.com/packages/xReleaseManagement/1.0.0.0/Content/Examples%5CxTokenize_NoTokenFile.ps1 This could be combined with the web.config transformation to eliminate the need for a web.token.config. No more double administration and less steps in the build/release.

  1. build performs web.config transformation to remove the debug (and other things) also replaces the connectionstrings with the __TOKENS__ ,
  2. release copies the web.config to the wwwroot directory,
  3. xTokenize replaces the tokens in web.config with actual values

To stop the build from replacing the connectionstrings we defined a publish profile. The publish profile creates a pubxml file with the same name as the profile. We added the following line to the pubxml to stop the transformation of connectionstrings:

<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>

Remember to use the /p:PublishProfile=YOUR_PROFILE_NAME in the build, else the connectionstrings are transformed since it is the default behaviour.

Now our web.release.config contains some more lines that replace the connectionstrings with the __TOKENS__ (we think that is a good thing) and the web.token.config had been removed.

The results are the same working webapplication, but the way to get there is less crooked.

Posted in Uncategorized | Tagged , , , , , | Leave a comment

Table boulder challenge

my table boulder attempt

Video | Posted on by | Tagged | Leave a comment

Webapi core 2.1 and jQuery (CORS)

I’ve written before about Cordova, AngularJs, WebApi and CORS. (Cross Origin Resource Sharing) Now we have te same hurdle to take with our dotnet core 2.1 webapi.

Since the webapi is on a webserver and accessible to third parties we decided to keep the access fine grained. We will only allow CORS for GET operations on 1 resource. This can be achieved with policies. Below is the dotnet code to add the policy and use it only on the GET operation.

// add this to ConfigureServices
services.AddCors(o => {
    o.AddPolicy("AllowGet", builder => {
        builder.AllowAnyOrigin()    // allow everybody
               .WithMethods("GET")  // only allow GET
               .AllowAnyHeader()    // enable preflight
               .AllowCredentials(); // needed for auth
    });
});

// in the controller
[HttpGet]
[EnableCors(PolicyName = "AllowGet")]
public async Task<IActionResult> Get() {
    var result = "your data";
    return Ok( result );
}

Now that the webapi supports CORS we can call the GET from our page with jQuery.

$.ajax({
    type: "GET",
    url: url,
    crossDomain: true,
    cache: false,
    // needed for preflight
    xhrFields: {
        // needed for auth
        withCredentials: true
    },
    success: function (response) {
        // do something with response
    },
    error: function (response, status, error) {
        console.write(error)
    }
});
Posted in Development | Tagged , , , | Leave a comment

Installed macOS Catalina on my MacBook Early 2009

I still have my Early 2009 MacBook for my kids. It runs El Capitan and Windows 10 (bootcamp). Installation of macOS Catalina on my macbook 5,2 is unsupported. With the Catalina patcher from DosDude1 the installer can be tricked to allow installation.

Keep in mind that the software will be patched and the hardware remains the same. Catalina has features (continuity, handoff) that rely on certain hardware and will not be available. For Catalina to work I’ll need to patch the BootROM to enable booting from an APFS formatted disk – do this first!

After 2 hours my old MacBook showed the apple logo on a grey background. The progress bar hadn’t moved for some time, so I rebooted the machine. Turns out this is a bug reported on github (see references) and rebooting is the workaround 😉 I was greeted with the wizard to configure macOS Catalina and login to my iCloud.

macOS Catalina on macbook 5,2

The custom intel SSD supports TRIM. I enabled the TRIM support by running the following command and confirming the change:

sudo trimforce enabled

I noticed that the reboot took a long time. Also the next boot was slow. I booted from the Catalina patcher USB stick and applied the patches manually. Just before the reboot I enabled the checkbox Force Cache Rebuild.

force cache rebuild option in Post-install patches screen

Boot times are back to normal. I’ve only installed Daisydisk and Microsoft Team and both work fine.

Maybe upgrading the memory next time …

References

Posted in Uncategorized | Tagged , | Leave a comment

Working keyboard only

I’ve tried working keyboard only (no mouse) for two weeks and learned to live with shortcuts. Here are my tips-and-tricks.

my keyboard with shortcuts on Post-it notes

Just do it

Put your mouse out of reach. Disconnect it. Turn it off. Just do it.
You’ll feel helpless for a minute or two and then you start to learn how to do it.

Tools

My main computer is a MacBook. The tools listed below work on Apple machines.
Alfred helps me start my apps and automate a lot of steps. I added a script to connect to my AirPods with a command.
On my main monitor I remote desktop “full screen” into my work computer. With Amethyst I can switch the mouse focus between my two monitors. Only with the mouse focus on the right place I can use my keyboard for input …
Every application I use has different shortcuts. CheatSheet displays the shortcuts for the active app by long pressing ⌘

My company runs Windows machines. Sometimes Windows and MacOs have the same shortcuts. I run Autohotkey on Windows startup to blok Windows acting on ⌘+space (alfred) and ⌘+ctrl+c (Windows Color filter)

Other

I have an awesome Logitech K800 that has a dedicated key to toggle the mouse context menu. Sometime the context menu is easier than the shortcut.
Found this Post-it template so I can print my most used shortcuts on stickies. Download my shortcut post-it as pdf.
I Learned that navigating a webpage is easiest when searching for the text of the link and than hist ESC to see the link being selected. Now I can open the link with ENTER.

Image courtesy of ratch0013 / FreeDigitalPhotos.net
My journey continues. I’am not 100% mouse free, more like 95%. To setup the tools (alfred and amethyst) the mouse is needed – only once. Some websites and apps only work with use of the mouse (you know who you are)

Posted in Uncategorized | Leave a comment