Is protection.outlook.com becoming hotmail.com?

Tags: : Spam

Update: May 18th, 2022. I have now blocked everything from protection.outlook.com. Make it or brake it. This is a snapshot of the IP blocker today. It is really working hard now. What a pity Microsoft doesn’t work harder to avoid these spammers.


Read on for the original article



How I connect LaunchPad Pro to 1010music Blackbox for extended pad-control

Tags: : 1010music Blackbox Music

If you have upgraded your 1010music Blackbox to the firmware 2.0 or newer –and-  you have a Novation Launchpad Pro available, you can use the Launchpad to directly control both PADS and SEQUENCES on the Blackbox, like this;


Read on to see how I set this up.



How to create a filter working with USB devices in Retrokits RK-006

Tags: : Retrokits RK-006 UNO Drum

Are you playing around with MIDI? MIDI are almost like magic connecting music devices together, but not without challenges. Especially synchronization of clock signals turns out to be …mysterious, at times.  The result of a MIDI Loop is often frozen transport and strange artifacts popping up in your soundspace.

This post focuses on a little nifty MIDI-unit named RK-006 from Retrokits which can be of tremendous help.


The RK-006 is a little MIDI Interface with 2 inputs and 10 outputs. It can both be connected to a computer and thus extend your DAWs number of MIDI ports. Additionally it can be a self-served MIDI Host in a setup, totally without a computer in a dawless setup. The ports can also do different things via configuration, and even send gate signals instead of MIDI if needed. A real Swiss-Army knife of MIDI! Search around the net and you’ll find several reviews, such as this one.

Going dawless

In my quest to create a little dawless setup, I have a UNO Synth and drum machine UNO Drum.  The setup also involves a sampler Blackbox and a mixer Bluebox from 1010music.

My simplified wiring diagram looks like this:

1010music Blackbox, Bluebox, UNO Synth and UNO Drum, Retrokits RK-006

Click on the image above for a large version. You can click on all images by the way!

As you see, both the UNO Synth and UNO Drum are connected to the USB Hub which again is connected to RK-006.

Read on to see how I solved a tricky MIDI loop in the wiring above!



Quickly simplify the path names within sound packs with AutoHotKey

Tags: : 1010music Blackbox AutoHotKey

Why would I do that?

Because my 1010music Blackbox can show limited number of characters when I select sounds and neither does it scroll long file names. The long-file-name-scrolling has however been wished for in the 1010music’s Blackbox Forum here. Until then …

Take for example the following sound pack “Alex Stein – Rise Techno” which I have purchased from Loopcloud. When you dive into the directory structure, it looks like this:


I have highlighted all the “XOU_” prefixes, which most directories and files starts with. By removing this prefix, I shorten the directory and file name, giving more room for the Blackbox to show the interesting part of the directory- and file name!

You can of course change the directory names manually. The manual process is:

  • Press F2 in Windows Explorer. You can now change the directory name as you want
    Note that the whole, old, directory name is selected. This makes it easy to completely remove and replace if that is what you want. However, you probably just want to remove “XOU_” …
  • Press the Home key to position the cursor at the start of the editable file name.
  • Press the Delete-key 4 times to remove the “XOU_”-prefix. If the prefix is longer, you have to repeat more! 
  • Finally you have to press ENTER to save the changes.

Obviously this quickly become both tedious and error-prone.

Read on to see how I use a small AutoHotKey-script to create a global shortcut key like CTRL +  1 to remove the first part of the nane, the “XOU_”-part.



Are you using 1010music Blackbox? The Blackbox Buddy can be of help when you reorganize the content on the microSD-card

Tags: : 1010music Blackbox

1010music Blackbox is a tremendous little sampler!

However, if you want to reorganize the content of the microSD-card, such as move your sound packs and samples around, you quickly find out that your Blackbox-preset files does not play anymore. This  is also true for additional Ableton-presets that Blackbox has exported for you when you packed your projects. This can be illustrated like this:


The Voith’s CODE Blackbox Buddy (BBB) can help you keeping your file references within the presets, in sync with your moved sound assets. Head over to the BBB-home page for more information on this free tool!


The Touch-Portal page to control PointerFocus, got even better with direct network communication to PointerFocus!

Tags: : After Hours

A couple of days ago, I wrote a post titled Whoo! How powerful Touch-Portal, AutoHotKey and PointerFocus turned out to be! That post describes a solution where I can control PointerFocus-features such as highlight, spotlight and magnify, by triggering the global hotkeys in PointerFocus (F8 to F12) . It worked very good, for the most part. However, it stumbled a little inside Visual Studio CODE (remember, the previous post targeted another sibling IDE, Visual Studio 2019).

In the PointerFocus page https://www.pointerfocus.com/androidapp.html I saw an Android-application acting as a remote control to PointerFocus. In order to work, you have to turn on the PointerFocus’ Remote Server in it’s settings, like shown below. Also note how I now have turned OFF the global hotkeys;



If you are interested, please read on



Whoo! How powerful Touch-Portal, AutoHotKey and PointerFocus turned out to be!

Tags: : After Hours

In these COVID-19 times I use tremendously more time in net-meetings, and one thing I have been missing on Windows 10 computer, is the ability to highlight my mouse for my viewers.

This post focus on how I got the nice tool PointerFocus (which have nice features to highlight, magnify, spotlight and even draw on the screen), working together with the super-cool Touch-Portal app on an old iPhone, making me a “Elgato Stream Deck-like” experience. The glue between Touch-Portal and PointerFocus is a small snippet made with AutoHotKey. Below you see how my iPhone looks tih the Touch-Portal app running;


These Touch-Portal buttons quickly let me choose the PointerFocus-features without making a fuzz with other shortcuts Smile

If you are interested, please read on.



Tutorial - How to create an installable package in Python - Part 2

Tags: : Python

This post continues the first part Tutorial – How to create an installable package in Python – Part 1.



Tutorial - How to create an installable package in Python - Part 1

Tags: : Python

This article describes why you might want to create a Python-package and how to do it. In the end you will end up with an installable package that can be distributed and installed on other computers, and used in all your other projects.




Do your server send mails asking for e-mail confirmations? Then ensure the receiver knows which domain the confirmation-mail origin from!

Tags: : After Hours

Have you ever wanted to sign up for a newsletter, or enroll into something on the net using your e-mail address?

Then the chances that you have received “Please confirm your e-mail address”-mails is pretty high. But what if the web server uses one domain, and the mail server uses another?

Sometimes you don’t receive the confirmation-emails since they are rejected by your mail server. Actually, the sender receives an error-message telling him or her that your main server won’t accept the mail. It may look like this for the sender;

Mail delivery to the following recipient has finally failed: bob@vcode.no

Last reason: 500 5.0.0
Explanation: host vcode.no [] said: Message Rejected for Policy Reasons

Transcript of session:
   ... while talking to vcode.no []:
   >>> DATA (EOM)
   <<< 500 Message Rejected for Policy Reasons

This is a typical sign that some sort of spam-filter has analyzed the inbound message and rejected it for some reason.

For example – you want to sign up for the newsletter at www.acme.com and enter your e-mail address. Since I know I am going to receive future newsletters from @acme.com, I have beforehand entered the domain @acme.com into my spam-filter’s white-list. The white-list ensures that any mails from @acme.com should be received without hick-ups.

Then it turns out that Acme is using a mail-letter-service and it is actually the mailletter-domain that sends the confirmation-mail. For example the newsletter-service sends mail from newsletter_acme@thesupermailservice.com . The domain @thesupermailservice.com wasn’t known to me up front, and my spam-filter finds that highly suspicious Smile And, wham! Error 500 and “Rejected for Policy Reasons” is a fact.

Wouldn’t it be nice it Acme informed me about that in the first place, and the very page where I signed up in the first place? I think so.

Perhaps, in the future, we might even get a protocol or some technical handshake, making the white-listing process a breeze. I hope so Smile


New top quality web camera - using the EpocCam App, an old iPhone 8 and a Gorilla Pod

Tags: : After Hours

Whilst my laptop do have a nice web camera, I wanted a web camera right in front of my face on the external screen. Why? Twisting my neck hard left to make occasional eye-contact with the laptop web camera was very tiring for my neck.

Read on to see how I ended up with an old iPhone 8, running the app EpocCam Pro, mounted on a Gorilla Pod, like this;


Note the “lowered mode”, where my web camera now is almost in eye-height Smile



Ahhh, of course I should know that "An unspecified error occurred (696e647863686b2e 9cb)" actually means "hey, your USB disk is drawing too much power from the USB-port"!

Tags: : Configuration Thoughts


  • Suspect your USB connections – allways!!
  • Expect to spend hours on the forums looking for symptoms, hints and stuff to try out!
  • DON’T EVER THINK about getting the Microsoft Surface Dock … piece of heavy junk!


Disk operations onto the BitLocker-drive reports tons of errors1!

Isn’t it great when Windows (and most other software too Smile) gives you completely other symptoms to problems?

In my previous post I tried to get BitLocker to play nicely on my machine. Huge problems with drop-outs, perhaps not even the fault of BitLocker itself, but it turned out that I couldn’t even connect the disk anymore without Windows going completely haywire! Lot’s of messages in the event log like;

“Reset to device, \Device\RaidPort3, was issued”

"The IO operation at logical block address xxx was retried"

"A timeout (30000 millisec) was reached while waiting for a transaction response from the WSearch service"

Trying to salvage the drive – and as a result of reading loads of forum-posts on the net, I saw that I could try to use the old CHKDSK again. Run in as an Administrator with the parameters /F /R and /X (well, F should be automatically implied by R). The most important parameter is the X, which tells CHKDSK to unmount the drive for processing. The first run yesterday evening ran for a full 6-7 hours, and when I returned to the computer this morning, I couldn’t get in touch with Windows at all. Something was stalling the machine 100%!

Disconnecting the USB drive docking and Windows came up (pheew!) without problems. Connect the USB drives again, and boom – everything was stuck.

After many attempts I finally was able to issue the CHKDSK command. It ran for a while, and boink – “An unspecified error occurred”?!?!




How to configure BitLocker so it doesn"t need 72 hours to encrypt 2 TB!

Tags: : Software Thoughts Configuration


  • Setting up BitLocker the wrong way can be extermely slow. For example – after 72 hours my 4 TB-drive was only 49% finished!
  • Don’t encrypt harddisks full of files. Start with empty drive and enable BitLocker with “Encrypt used disk space only”
  • Use USB 3 – otherwise BitLocker will be extremely slow!

My backup-regime

Albeit I – as a programmer – shouldn’t care too much about backup (haha!), I have always been at the cowards side and backuped everything. Over the years I have been trying out most ways to backup, such as;

  • 1,44 MB diskettes – stacks of them!
  • CD and DVD burners
  • Zip and Jazz drives
  • External harddisks of all kinds and sizes
  • FTP to my NAS
  • Online cloud backup such as Acronis True Image

Even though most of the technologies above does work to some extent, they have allways meant labor, time and cost of different degrees.

This post is about my latest backup-regime. It consists of an USB harddisk docking station for ordinary internal harddisks;


My model is the ICY BOX from RaidSonic. It swallows two harddisks, either 3,5” or 2,5”. By using these types of harddisks, the price goes down a whole lot, plus I already have a stack of older disks. One of the really cool features about this box, is that it can clone a harddisk, even without the hosting computer running.

The ability to clone is where the backup-aspect comes to play for me. By using a huge 4 TB harddisk as my main backup disk, I clone this from time to time to another similar 4 TB disk. I clone at intervals such as once a week. Then I store the cloned harddisk outside the premises.

This is where the need to protect the disk comes in. I don’t want unprotected disks lie around.

Searching the net brings up several candidates to protect an external harddisk. If you search around for best solutions to protect your external drive, you see that for example applications such as VeraCrypt or StorageCrypt are mentioned a lot. If you have Windows 10 Professional or Enterprise, you already have Microsoft’s own BitLocker. Note that you also need a fairly new computer with a security module in place (the so called “Trusted Platform Module” or TPM). Note that the BitLocker wizard will tell you if you miss anything.

Protection provided by tools like BitLocker comes with a price – mainly since protection is in the form of encryption. And that is time. Time to encrypt (and later decrypt) your stuff as you move files to and from your harddisk.

Read on to see how I have configured BitLocker now …



How a SmartNSF custom route can be used to create a redirector, in my case to open the corresponding Notes-document

Tags: : SmartNSF Java

I am – to nobody’s surprise – a big fan of SmartNSF. Here the other day I had to come up with a solution to make a web-URL redirect to a Notes-URL (you know, notes://…) and thus open a document in the Notes client. Why? A modernized Notes application surface it’s data on the web, but the users still needs to be able to see the real document in the Notes client. There are several ways to do this with traditional Notes development. However, I wanted to see how I can do this with a simple java class, all controlled by a SmartNSF custom rule.

For example, the URL http://someserver.com/DocumentDatabase.nsf/xsp/.xrest/doc_v1/5921-A4 will grab the document ID “5921-A4” and lookup the document behind the scenes, and grab the NotesURL such as Notes://SomeDominoServerName/C12573EF007A4D9D/B3612539371CB37AC125830D002A4BF9/67FD0734318B98A4C12582B900208F1F. The latter URL will normally open the specified document UNID in the Notes client, at least after you have confirmed security warnings like these;


How is it done?



How SmartNSF came to rescue in a heavily surveilled little (bird) house

Tags: : Lotus Domino SmartNSF

One small hobby project of mine is a birdbox with an wifi enabled IP Camera. Much more fun to watch those small house sparrows build their nest and see how hard they work to bring up new kiddo-birds Smile


The images from the web camera surfaces on an web page, and everything worked fine last year.


However, firing up the camera this year, nothing showed up! After a quick look at the Chrome console, I quickly realized that the old and trusty IFRAME no longer worked as it used to. First and foremost I have enabled SSL on the site (with Let's Encrypt, using Windows ACME Simple (WACS), I'll create a blog post on that too in the near future) and it turns out that HTTPS won't allow IFRAMEs to use HTTP-based content at all. The concept is called "Mixed Active Content", read more about that here if interested. The built in web server on the web camera can't use anything else but plain old http …

While there probably are many other solutions to this challenge (feel free to chime in if you know!), this article describes how I used SmartNSF to call a small java-class, wrapping the whole HTTP-call nice and easy. A side effect was that I also could hide the inner workings of the IP camera completely! No more user name and password exposed in HTML Smile.

If you don't know SmartNSF, it is very briefly an extension to both your Domino server and to your Designer client, enabling you to create powerful REST Services supporting full CRUD in minutes! While you of course can do much of the same with the built-in Domino Access Services (DAS), you have much better control with SmartNSF. In my opinion, one of the most important things to happen with Notes/Domino in years.

Read more to see how I enabled SmartNSF to solve this challenge!



How to redirect an URL in Domino and break the Domino-server's attempt to append any URL-parameter like "?OpenDocument" to the target URL!!

Tags: : Configuration Lotus Domino
This is a story of something that I anticipated should take 5 minutes to fix. It turned out to take a couple of hours instead!

Very briefly - using the redirect web site rules, Domino will transfer any URL parameters (like ?OpenDocument, ?OpenForm etc) from the source URL-pattern to the target URL. If the target URL doesn't like OpenDocument very well, this ends up in an "HTTP Web Server: Invalid URL Exception". This article describes how I struggled worked to break this behaviour!

A picture named M2


The quest to avoid SMTP Hacking and "Authentication Failed" on Domino-server continues

Tags: : Lotus Domino Configuration

Update Nov, 11th, 2017: If your are using the sample database, you need a configuration first. Go to the configuration-view and press the "Configuration" button to create one.


This blog-post is about a combination of my own agent creating an IP-address list and a product named "IP Blocker". The combination automatically pumps bad IP addresses from Domino log to IP Blocker – and gone are the bad IP address.

Even though I have some sort of control on the numerous SMTP hacking attempts happening every day, I still feel uncomfortable just seeing that they keep on pounding my server. What do I mean?

The log gets lots of messages like this;

07.11.2017 05:00:06   SMTP Server: Authentication failed for user stevens ; connecting host

Back in March 2017 I wrote the blog-post Finally I managed to stop the SMTP hacking, generating tons of "SMTP Server: Authentication failed for user ..."-messages. Back then I was using the Windows Firewall to trap the bad IP addresses, and that worked. Every IP address registered was effectively blocked from ever reaching my server. The down-side was to keep up with all the new IP addresses, and somewhat cumbersome user interface to register IP addresses. My blog post goes into detail how that was done.

A reader named David Brown commented on the blog-post and referred to his blog-post Disable SMTP-AUTH To Stop Relay Hackers In Their Tracks, which suggested the somewhat strange tip to turn off the SMTP Authentication server in order to actually automatically fence out the bad IP addresses.

Here the other day I came across another Windows tool named IP Blocker from BeeThink-software. It looks a little outdated, but it turned out to be quite powerful! Below you see it in action on my Windows machine;


All the red dots are blocked addresses! What was the most important selling point to me was the ability to automatically load IP-address lists.

What if I created an agent retrieving all the "Authentication Failed" messages, extracting the IP addresses and automatically created an IP-address list file to IP Blockere to read?

Read on to meet "Authentication Failed Extractor" database Smile



Wow! SmartNSF (BETA-5) can now call java directly, and work with the parameters with ease!

Tags: : Lotus Domino Java SmartNSF

This evening it was time to test the latest and greatest version of SmartNSF – BETA 5. When you have installed it (via an updatesite database for the server) and via a local update site in your Designer, you get some cool new features. First of all, intellisense seems to work very good so now it is much easier to get the available methods etc.

But, the really cool feature in this version is the support for CUSTOM strategies. This means that you can define a route like this (the example below is directly from the discussion.nsf sample database enclosed in the SmartNSF zip);


The URI infos will call the Info-class in the package org.opennrf.smartnsf. This means that an URL like  http://www.vcode.no/test/discussion.nsf/xsp/.xrest/infos (note; URL is shown just for illustration purposes, and is not active) will call the java code shown below;


(Click on image to enlarge)



What!!! Notes 10 is coming 2018!

Tags: : Lotus Notes

What a fantastic twist!! While IBM has done a fairly good job with Domino over the years, the Notes client has been left somewhat in the void. But head over to this announcement and see for yourself!


Bark-bark!! The LotusScript CWebContentConsumer now support REST Service POSTs with files++

Tags: : LotusScript Java

A couple of days ago I wrote the blog-post Teach the old dog some new tricks: Let LotusScript consume REST Services the easy way. I thank you all for the good feedback! Nice to see that some old school, classic Notes development, still got some traction Smile

Well, I was in the spirit to add some features today too!

First and foremost you now have the ability to add a payload to the PostJson, PostXML and PostHTML. By payload I mean a text string of any kind, but typically a JSON or XML. In a way you can think of it as a way of uploading a file or text together with other request headers or URL parameters.

This means that code like this;


… results in this;


Note that the payload isn't tagged a a proper multipart MIME or anything, but perhaps you can add that yourself with a combination of the new support methods for base64 encoding and decoding? You now have these additional methods;

  • EncodeStringAsBase64. Encode a string as base64. Build your own multipart XML or MIME structure, and combine that with one or more AddRequestHeaders? Or stuff the base64-encoded string as a payload directly with SetPayload.
  • EncodeFileAsBase64. Encode a whole file as base64. Remember that this hasn't been tested on huge files or anything Smile
  • DecodeBase64String. Decode a base64-encoded string back to it's textual form.
  • DecodeBase64StringToFile. Finally decode a base64-encoded string directly into a file on your disk.

I also added DownloadFileFromURL which can download any file from the specified URL and store it on disk as a file.

The demo-agents in the downloadable sample-database has been updated to use SetPayload, and the other methods are now demoed in a third agent with the name "Test Support Methods".

Happy coding!