Services I pay for and why

The internet has a lot of services. Most of them have a free or try-for-a-period option. After trying a service I decide about the paid options, stay on the free tier or discard it. Below is a list of services I pay for and why I think they are worth the money.

Evernote Premium

evernoteWith Evernote I have all my information in one place and am able to find what I need. The app is cross platform and I use it on my laptop (Win/Mac), iPhone and iPad. I’m have a premium subscription because I use the annotation and presentation features.
Alternative: Evernote free

 

iCloud

icon_hero_icloud_largeWe use iCloud storage for pictures, mail and device backups. It integrates seamless with Photos on MacOS and iOS. I’m stil backing up the original pictures on my NAS just in case.
Alternative: 5Gb storage free with iDevice registration

 

iTunes Match

apple-itunes-match-and-icloud-logo-1107Yes, I’m stil using iTunes Match. The price of Apple Music (that has the same features) is so much higher that we’ll not be moving until Apple discontinues iTunes Match.
We have invested in the Apple ecosystem and play music from Apple TV, MacBook (2x), iPad (2x) and iPhone.
Alternative: iTunes server on NAS

 

Wired Magazine digital

wiredThe digital edition has extra media content since it has an internet connection and the printed magazine has not 😉 Got to love the “angry nerd”.

 

GoDaddy .NL domain

godaddy-schema-logo-minEveryone should have their own domain. I have it set up to forward requests to other locations through a free dns service. This way I can give out my own domain in slides and know people end up here.

 

WordPress Personal

wordpress-logoEver noticed there are no adds here? You’re welcome.
This also includes the custom .com domain and extra storage.

 

Pluralsight

pluralsight-logo-vrt-color-2To be honest: my boss pays for this subscription. With Pluralsight I’m able to get up to speed really quick. I have the app on my iPad and iPhone but I mostly use it on my laptop.
TIP: signup here and we both get a discount.

 

These are the services I use. Am I missing out on something great? Let met know in the comments.
Posted in Tooling | Tagged , , , , | Leave a comment

My 2018 developer and power user tools

toolbox by vectorolie / FreeDigitalPhotos.net
Below a list of tools I use today. If you’re like me, you check them out and add the ones you like to your own toolbox.

Image courtesy of vectorolie / FreeDigitalPhotos.net

Environment

Chocolatey, installation automation. I’ve written about it before on my blog. (See posts)
F.lux, it makes the color of your computer’s display adapt to the time of day, on mac this is build into the OS
7-zip, the new standard in compressing files
DropBox, file share/sync between computers and the internet
Chrome, best browser today
AdBlock for Chrome, blocks adds in chrome

Productivity

Powershell, the automation solution from microsoft
RescueTime, background logging of where you spend your time
Wunderlist, task list on every platform
Wunderlist parser, convert a plain list of items into wunderlist items
IFTTT, automate the internet
Trello, collaboration tool that uses boards and cards. I’ve written some small automation scripts for my uses. (Post)
Pocket, my preferred read later list, available on all platforms
Evernote, remember everything. I use it for my GTD technique called The secret weapon.
1Password, my password is CTRL + \
Autohotkey, run macro’s on keyboard shortcuts like CTRL+ALT+5 types €

Development

Visual Studio 2017, the best IDE out there
NuGet, source of all the good in the world
Visual Studio Gallery, extend visual studio
Ghostdoc, CTRL+SHIFT+D to comment your code, that simple
Specflow, cucumber for .net for behavior driven development (BDD)
Just Decompile, see the code of .net assemblies
Fiddler, log http calls via this proxy
Wireshark, deep logging of network traffice
SourceTree, my preferred git tool with advanced branching support
Notepad++, notepad on steroids
BrowserStack, test webpages on any platform, live or automated
Selenium, webbrowser automation, also runs on browserstack
Sqlite studio, manage Sqlite files
Azure Storage Explorer, browse and manage Azure Storage
Snoop WPF, spy on WPF
Pester, test and mock framework for PowerShell.

Misc

ZoomIt, I use this in all my demos to zoom
Bit.ly, url shortener service
windirstat, see what is hogging your hard disk space
prey, install and forget, until you need it
Gifcam, screen recorder with animated gif support
Notebook fancontrol, see processor temperature and set the fan speed

Mac

Cyberduck, connect to anything
DaisyDisk, see what is hogging your hard disk space
Type2phone, make my mac a Bluetooth keyboard for iPad or AppleTV
Handbrake, convert movies
1Password, my password is ⌘ + \
Little snitch, monitor network traffic coming from your mac
HyperDock, preview windows from the dock
Alfred, spotlight replacement with lots of options
Parallels, the virtualisation solution for mac
Sublime Text, very complete text editor for code
Visual Studio Code, code editor for any platform
Gimp, freeware photo editor with all the bells and whistles you’ll need

iPhone/iPad

Tweetbot, easy twitter client with pocket integration
Workflow, automate tasks, like send ETA and navigate home
Spark, handles my e-mail and offers tasks like send to evernote or pocket
Pocket, I do my reading mostly on iPhone or iPad
Duet, use your iPad as an extra screen
Lightningtalktimer, timer app that changes appearance with time passed

Some of the tools cost money, some are free, some offer paid options. If it saves you time or improves your work, why not support the developer that made it possible?

SaveSaveSaveSaveSaveSaveSaveSaveSaveSaveSaveSaveSaveSaveSaveSave

Posted in Tooling | Tagged | Leave a comment

VS2017 Live unit testing in Parallels Desktop VM

TLDR; change the project location on disk from shared mac (my documents) to local windows (c:-drive) to prevent Live unittesting from crashing

Live unit testing has been introduced in 2016 (visual studio blog) and got my attention recently by a tweet from Iris Classon. 

Since I’m on a Mac my way of working with Visual Studio is with virtualisation. I have Windows 10 running in Parallels Desktop and installed Visual Studio 2017 enterprise. The enterprise version contains the live unit testing feature. If you don’t see it check the version of VS2017 you’re running.

After creating a simple solution with some unit tests I started the live unit testing feature. This can be done in the menu Test > Live unit testing > Start. The output window showed it was compiling and then the thing crashed … Microsoft.CodeAnalysis.LiveUnitTesting has stopped working …

I’ve noticed strange behaviour before when the projects are located in the my documents folder. This is the default location for visual studio projects. In Parallels this location is mapped to the documents folder of the Mac user on the host machine. Windows 10 sees this as a network / mapped drive location and does not trust it by default.

I moved the solution to the local c:-drive and got live unit testing to work without problems. Loving it already. Got to agree with Iris about this one.

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

Microsoft Fakes misbehave on buildserver

We use Microsoft Fakes to isolate some legacy code. Today I added some tests that passed on my machine, but failed on the buildserver. 😦

After reading this stackoverflow post I added the

using(ShimsContext.Create()) {
   var fakeObject = new some.namespace.Fakes.LegacyObject();
   fakeObject.BehaveAsDefaultValue();
   // ... rest of test
}

and the builds became green again 😉

Posted in Development | Tagged , | Leave a comment

Regression test with Pester

My current project is a scrum project. We develop new features in sprints and deliver working software every 3 weeks. To keep the pace steady we have loads of tests that run every night after a build is deployed.

Until recent we used ‘dumb’ powershell scripts to run tests and use the write-error to report failure. This made us aware of errors every morning so we could fix it as soon as possible. Problem was that the first error stoped the complete script and the logging was loads of plain text. Finding the error message was hard, finding the failing test was even harder.


Last week we introduced Pester as a powershell testframework. The main feature we wanted to use was the reporting of all tests in TFS2017. This would help us pinpoint the error and give a good description of what was wrong. We ended up making the regression test itself more readable in the proces.

Get it

Pester is default part of Windows 10. That is the way we got it. A full installation and update guide is available on the github page. On the build agent we load the module from source control.

Script it

I pair-programmed the Pester scripts with a tester. We took an existing powershell script and added the Describe on the first line. After that we used the Context keyword, because we needed some setup in the database to be done. Last we replaced the write-error statements with an It block that contained a Should Be. Read the documentation for details. We converted all our scripts within a day.

Sample Pester file

Describe "Loading data" {
   Context "Cleaning tables and load file" {
      # truncate tables
      # load file
      It "City table is filled with data" {
         # get record count from table
         $result | Should BeGreaterThan 0
      }
      It "Product table is filled with data" {
         # get record count from table
         $result | Should BeGreaterThan 0
      }
   }
}

Run it

Our nightly build loads the Pester module and than starts the tests with Invoke-Pester. We supply the name of the overall testscript that specifies the parameters for every test/script. With OutputFile and OutputFormat we save the test results to an xml file.

$result = Invoke-Pester ./regression.ps1 `
   -OutputFile pester.xml `
   -OutputFormat NUnitxml `
   -Quiet `
   -PassThru
if ($result.FailedCount -gt 0) {
   Write-Error "Some tests failed"
}
Exit $result.FailedCount

TFS2017 has a publish test results task that can handle the xml file from Pester.


image from https://msdnshared.blob.core.windows.net/media/2016/03/TestsSummary.jpg

References

Get started with Pester (PowerShell unit testing framework)

Posted in Tooling | Tagged , , | 1 Comment

Microsoft TechDays 2017

techdays2017
After a year of absence I’ve been to TechDays 2017. The keynote was amusing and the schedule of sessions looked promising. Happy developers all around.

Below a list of take-away bullets from the sessions I attended.

Azure

  • Azure Service Fabric is coming to the Azure Stack somewhere in 2018
  • Azure Container Service has a Visual Studio template, installs the software on build into the (linux) container that you can host later
  • Microsoft contributes to opensource projects like Octopus Deploy and Jenkins to connect them to Azure
  • Devtest labs is still a bunch of ARM and Artifacts (think chocolaty script) combined in Formula’s (think docker compose file) but might get a nice GUI in the future

Coding

  • VS2017 has build in code style rules that can be promoted to team wide and build by using the .editorconfig
  • C# 7.0 adds a lot of performance enhancements
  • Microsoft is trying to make development easier with VS2017 and C# 7.0

Miscellaneous

  • Devops in Microsoft means one team is responsible to get a feature running in production and the feature has to collect analytics that proofs it is used
  • Specification by example is much more than using specflow for your tests, it is the one source of truth for your solution
  • Microservices should have no dependencies for easier Continuous Delivery
  • You can download, compile, run and PR the dotnet code from https://github.com/dotnet

Conclusion

Microsoft keeps moving forward with Azure and makes sure everybody can get his/her software over there. Those with the need of on-premise solutions can use the Azure Stack or TFS installations to get the same experience on their own hardware.

DEVS get the tools they need to be productive with VS2017 and C# 7.0. And OPS keep control over the environments with DevTest Labs.

Looks like the Microsoft platform is still the right choice.

 

SaveSave

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

SDN event October 2017

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.

Busy Architect’s Guide to DevOps

Ted Neward talks about the beginning of computing and how the DEV and OPS were divided. The difference between the two is the OPS wants to have a stable environment (no change at all) and the DEV wants all new things (change everything). With DEVOPS the two are combined again.

ID-100248850
Image courtesy of ratch0013 / FreeDigitalPhotos.net

DEVOPS is:

  • an effort (and never done),
  • a culture (not only tools) and
  • a proces (multiple steps)

The talk has been recorded on youtube, see it here.

Agile is tasty. Eat your own dogfood

As an Agile coach Arthur Margonari is asked to introduce Agile in his own company. The backoffice should work more transparent (scrum board), more informed (daily standup), more delivering (sprints), more adapting (retrospective).

In the end the conclusion was that agile can be used whenever people have to work together, not only for software projects.

Image courtesy of ratch0013 / FreeDigitalPhotos.net
Image courtesy of ratch0013 / FreeDigitalPhotos.net

Busy Developer’s Guide to NodeJS

The main purpose of this talk was to get us “dangerous”. Know there is this runtime called node.js that runs on about every platform, try packages, try coding and maybe break things.

With some code samples Ted Neward showed the pitfalls of using the double equal (==) instead of the triple equal (===). The latter does not typecast. Use the triple equal!

Image courtesy of ratch0013 / FreeDigitalPhotos.net
Image courtesy of ratch0013 / FreeDigitalPhotos.net

Conclusion

Again an interesting meetup. This time less hardcore coding and tools for me. I liked the non/low-tech subjects in the schedule.

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