Author: aeschinder

Reblog – Remove distraction of JunkMail arrival

This post 2 Steps to Auto Mark Junk Emails as Read is a godsend.   At my job I get a ton of unsolicited commercial email (UCE).   After I black list the domains of the companies that SPAM me, I still get distracted when new emails arrive because it makes the Junk Mail folder bold and a count gets incremented.

This article shows you how to silence both the count of unread emails and also automatically mark new junk emails as read.   You’ll never be distracted by unwanted SPAM again!

List of company domains that send UCE

The following is a list of company domains that send out opt-out SPAM / UCE.  These companies have no problem sending you daily SPAM, sometimes more than once a day, and then require you to fill out a form to opt-out.   I’ve also had instances where a year will go by and new salesman from the same company I’ve opted out start emailing me again, so I’ve stopped opting out and gone to domain blocking.  It’s GREAT!

Feel free to import this list into Outlook and make them invisible.   I’ve spent months curating this list.

Swift Game development, Part 3

I’m happy to report that although I did not have much time this weekend to devote to game development, I was able to create a new SpriteKit Scene file, lay down a new tile map grid, and position my character sprite in the new level.


The player sprite I made with Aseprite which is a very cheap yet very capable sprite editor.   I had to watch this video on how to make it transparent.  Teach yourself!

Swift Game Development, Part 2, fading a SpriteNode that doesn’t want to fade

Today I learned about the “isPaused” instance property of an SKNode object.   The problem I encountered was that after showing some informational text, such as when your player sprite “talks” to a non-player character (NPC), you want to fade the text out.  The code works fine on iOS, but the MacOS program refused to fade the text.

When you want to programmatically create a sequence of actions for a sprite node to execute, Swift and the SpriteKit provide a plethora of ways to accomplish this.   The easiest way is to create a few SKActions and then chain them together with sequences and finally run them:

        let wait:SKAction = SKAction.wait(forDuration: waitTime)

        let fade:SKAction = SKAction.fadeAlpha(to: 0, duration: 0.5)

        let run:SKAction = {

            self.infoLabel1.text = ""

            self.infoLabel2.text = ""

            self.infoLabel1.alpha = 1

            self.infoLabel2.alpha = 1

            self.speechIcon.alpha = 1

            self.speechIcon.isHidden = true


What I discovered was that the run action was not executing.   After much reading, I found that the isPaused property on both the labels and the parent of the labels was “true”.   Very strange.   I did not find out why the nodes were paused, but when I added a check on the parent to see if it was paused and then toggled it if it was, the “run” sequence was able to execute:

        let seq:SKAction = SKAction.sequence([wait, fade, run])

        let seq2:SKAction = SKAction.sequence([wait, fade])

        if(infoLabel2.parent?.isPaused)! {

            infoLabel2.parent?.isPaused = false   //the fix!


Thank you Stack Overflow, you’re the best pair programmer ever!        


SpriteKit game development – Part 1


Here’s a new series that actually began during Christmas holidays of 2017.  I had bought a shiny new MacBook in the Spring of 2017 so that I could get serious about iOS and MacOS development.   I studied several books and online tutorials on Objective-C and a little bit of Swift.  Fast forward to Christmas where I came up with my idea for writing a game that I’ve always been meaning to write.   This would be my third game.   I wrote a C++ game in the 1990s that was left unfinished.   My ambitions were too grand.   Here’s a shot of the gameboard in brilliant VGA.  Yes…DUNE!

just the board

Years passed and the advent of .NET presented a learning opportunity.  I would create a tile based Dungeons and Dragons homage to Ultima III.    I wrote this first in VB.NET with a proxy wrapper into the DirectX 2D Libraries.   I then ported it to C# targeting native DirectX libraries.   Unfortunately I don’t have a screenshot of that game and the libraries are no longer easily available.   I spent a lot of time on it and yet abandoned it as well.

The concept for the new game would be set in the Frank Herbert Dune universe.   I wanted to use the Traveller RPG game rules, with a mixture of Dungeons and Dragon’s Gamma World.   Mixed in would be a dialog based “choose your own adventure” plotline similar to Knights of the Old Republic game for XBox (awesome, awesome game).  I decided to use Apple’s Swift language so that I could learn a new skill and develop my portfolio on GitHub.

So, I studied and completed this course:    I recommend this site.   The tutorial teacher, Justin Dike, has a great sense of humor, easy disposition and very fun set of courses.

After finishing the tutorial, which was about 55 videos about 16-25 minutes each consisting of about an hour a video (watch, pause, write code, test, debug), I was ready to begin.

Using to track my issues in a Trello like interface Jira board.  I’m already having to adjust my sprint because I’m behind!   It’s amazing that free resources like this are on the internet.

Using Articy (available via Steam) to do my storyboarding.   I bought it for $100, which I thought was super cheap.   When I get further along in my game engine I’ll start designing the flow of the game with this pretty impressive application.

I created a GitHub repo and initialized it with the iOS game kit created from the tutorial.  Then I created a develop and a feature branch.   Check it out here:

The first step was to convert the iOS project to a MacOS target.  Even though this article used Obj-C (which I studied last year), the directions were applicable to Swift projects, and I was very grateful:     That took a few hours to tweak and get the new View (SKView) hooked up to the new build target.

The next step was to comment out all of the UIKit references from the iOS project and retrofit them with mouse and keyboard events.   That’s what I’m currently working on.  It’s difficult translating the iOS touchesBegan and touchesEnded to desktop events.  There isn’t a lot of documentation on desktop SpriteKit game development, but I’m relishing the time spent.

Stay tuned for my next update in the series.


Self-disciplined Surfing at Work

I found, given recent political developments, that I get tempted to access news sites, social media sites, and other non-work related websites at work more and more often lately.    I wondered what I could do to force myself to be more disciplined.

One day as I was rigging my hosts file to point to a particular webserver to do some testing, it occurred to me.    I should make it harder for me to access these sites by modifying the hosts file for this purpose!

What is a hosts file?   If you’re a computer newbie this might be a revelation to you.   The hosts file is a legacy system that has plenty of useful applications in today’s networked world.    I won’t go into them here, but for the purposes of this post, we want to edit the contents of the file.   On most computers, you will need elevated access (Administrator on Windows, root on MacOS) to save changes to this file.

The location of this file on Windows is in the \Windows\system32\drivers\etc folder.   It’s named “hosts” without a file extension.   This follows the UNIX convention, although years ago it was “hosts.txt”.

Normally this file is almost empty but usually has the “loopback” address there as a lonely entry:          localhost

You can leave that there.   On a new line, you can start making entries to start blocking access to websites.   Here’s a few of mine:

Make sure to save the file and close all open browser tabs and the browser itself.   Now when you access twitter in an impulsive moment, you’ll get a nice 404 message.


Note that this technique is also useful for blocking out ads without triggering the “You’re using an adblocker” warning from the website itself.   I recommend adding this in, too:

Bye-bye Google ads!

I’ve done this to my work computers several months ago and I’ve found myself to be tremendously more productive.   Now, if I want my internet fix I pull my phone out while getting coffee.   Hope it helps you too.