Tool Tipp: Fast.com – The Netflix Speedtest

From time to time you might be interested in how fast your internet connection is. In real. There are various tools out in the wild. In Germany most of the time Speedtest ist used. Many providers also offer a speed test – which in fact ist just a branded site of Speedtest.

The issue here is the fact, the speed test servers are living behind “the internet” in some other computing centers. They never give you a real idea of your connection speed. They give you an idea of how fast the data transfer to these servers is. If the test is run repeatedly, it also provides different results. Depending on the server on the other side.

Today, I learned about fast.com which is a speed test based on the Netflix servers. It seems that if some company knows how to transport large amounts of data bypassing the restrictions of the internet, Netflix is the one. Said that it seems these Netflix servers are the ones least affected by the rest of the internet. Tests I run on fast.com is mostly appropriate, providing similar download rates I see with Xbox Live downloads while other test sides show large divergences.

Therefore, fast.com ist my recent tip if it comes to testing the speed of your internet connection.

fast.com speed test results

Organizing Ideas – A not yet lost Battle

Recently, I have the problem to organize my ideas. To put it upfront: I don’t provide a solution. I simply describe the problem here.

Every time I surf the web, read blogs or news sites and scroll through my twitter feed, I find something interesting. Sometimes colleagues or friends point me to something, sending my a message through on of the many messengers.

Eventually, I want to work through all these articles and sources but often I simply get lost. I forget, don’t find the time and when I have time I don’t remember what or where to look at.

Problem 1: To many Inboxes

Multiple private E-Mail accounts, work e-mail, SMS, multiple messengers, blogs, news sites, work e-mail, Confluence to-do lists, private Microsoft OneNote, work Microsoft OneNote, Teams at work, an Evernote account and so on, this is an endless list of inboxes. Fome quite some time I used Pocket to collect many of these inputs but eventually Pocket turned out just be one additional growing inbox.

For now, I became very pragmatical and forward everything to one single mail account. Links, tweets, articles, photos and so on. Everything I want to read later just piles up on one single account.

Problem 2: Working through the Pile of Shame

For those with kids, they know the problem. Between work, preparing meals, keeping things up and running and spending time with the kids, there is only a little time to get other things done. Especially tasks which take a good amount of thinking, coding or diving deep into technologies. Over time this became a growing list, a queue with no consumer. One problem here is indeed to organize your ideas. I tried Microsoft OneNote, Evernote TheBrain. Eventually, I created just more lists to work through.

At one point I thought about how I organized my ideas and thoughts while writing my doctoral thesis. Eventually, the answer was the act of writing itself. I wrote everything down into a large document which ended up as my thesis. A lot of information was deleted on the way, but at the very end everything was well structured, perfectly organized and compressed to the most relevant information.

While writing another book is still on my list, the solution to my utter problem became obvious. I started to revive my blog. I wrote regularly until 2011 but due to changed focus in my jobs, blog entries became more and more infrequent. I rethought the initial idea of the blog: writing for myself and started to work through my lists and putting down as much as possible to my blog.

How is it going?

Here you are and read one of the things I had on my list. I recently tried to get rid of my “old” lists, one after another is being worked through for interesting stuff, ending in the blog. I am still looking for a nice tool setup which might help me to organize all this information without creating just another inbox, though. Therefore, the problems are not solved yet, but at least they are addressed.

Google XML Sitemaps

I started to learn a bit about Google Webmaster Tools and how to increase the findability of one’s website. First of all, I was looking for a flexible sitemap generator for WordPress where I ended up with Google XML Sitemaps.

Google XML SItemap Plugin

This plugin generates a sitemap file which can be consumed by search engines like Google or Bing. To do so, you have to verify your website with the various providers. Usually, this is done by adding some meta tags to your HTML pages to prove you have full control over the server. Currently, this can be achieved by WordPress’ Jetpack. That way you don’t have to fiddle with the header.php file of your WordPress installation.

WordPress Jetpack Site verification

You don’t have to, but you can sign into the Google Webmaster Tools to check the verification status of your site.

Bing Webmaster Center

Also Bing Webmaster Center will provide you a Meta tag you can provide Jetpack to verify your site and to improve the discoverability of your site.

fzf – Command-line Fuzzy Finder on macOS X

If you master your Terminal it always looks like you are a superhero. Therefore, I always try to present a lot using terminal during my lecture, just to provide some smoke and mirrors.

However, I am far away from mastering Terminal truly. Therefore, it comes in handy that one of my students pointed me to reverse-i-search which is available on Terminal.

Wich this reverse lookup you can search through previous commands used in Terminal before. While this is an awesome feature you can activate by control-r on macOS, it does not allow you to search for similar commands used before. It always shows just exact matches of what you typed.

reverse-i-search on macOS

To search through similar typed commands, you can use fzf, a command-line fuzzy finder available at GitHub.

It’s an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc.

Installing on macOS using Homebrew

For your convenience you can install fzf using Homebrew using the command

brew install fzf 

For me, the bash integration was not available after the installation. After some investigation (I might haven’t read the instruction well enough), I realized the installation script needs to be run:

/usr/local/opt/fzf/install

Eventually, the installation routines put [ -f ~/.fzf.bash ] && source ~/.fzf.bash into .bashrc. I run into this issue some time before. Reading through this article on Scripting OS X might give you an idea why it does not run.

When you open a terminal application, it does not ask for login. You will just get a command prompt. In other versions of Unix or Linux, this will not run the .bash_profile but a different file .bashrc. The underlying idea is that the .bash_profile should be run only once when you login, and the .bashrc for every new interactive shell.

However, Terminal.app on macOS, does not follow this convention. When Terminal.app opens a new window, it will run .bash_profile. Not, as users familiar with other Unix systems would expect.bashrc.

Moving the line mentioned above into .bash_profile and deleting .bashrc eventually solved the issue. After restarting Terminal the key bindings CTRL-R and CTRL-T have been available as expected.

fzf command-line fuzzy search

With this little trick the installations of fzf works quite well on macOS X Mojave.

tl;dr

Use reverse-i-search by pressing control-r on macOS to search previous commands typed in Terminal. In addition, you can use fzf, a command-line fuzzy finder to find similar commands and all other kinds of stuff.

To install run

  • brew install fzf
  • /usr/local/opt/fzf/install
  • copy [ -f ~/.fzf.bash ] && source ~/.fzf.bash from .bashrc into ~/.bash_profile (and remove .bashrc if not needed) or source .basrc from .bash_profile

Link: https://github.com/junegunn/fzf

Usable Google Reader Alternative

I haven’t used feed readers a lot after Google Reader was cancelled on March 13, 2013. Before I made extensive use of it with quite a lot of resources. Personal weblogs, article feeds and so on. Once Google cancelled Reader it seemed many applications and sites stopped supporting RSS and Atom as they did before. I am not saying they did not provide feeds anymore, however, it seemed that feeds haven’t been first class citizen of the Web anymore.

Since my personal focus recently changed towards new and actual technologies (again), I started to read a lot more online articles as I did during the recent six years. So once again, I am looking for an alternative to Google Reader (again).

Feedly never seemed to work for me due to various reasons, including a monthly fee of 5$. But recently I found Inoreader to be very handy. So far, I was not aware of this service.

First of all, it is a Freemium service as well, however, with the free membership it seems you get all basic functionality needed. The very only limitation seems to be a limit of 150 sources. Once reached you can upgrade to 20$ yearly plan to set a new limit of 500 sources. This seems a absolute reasonable price I am willing to pay for this service.

Inoreader Screenshot

So I will give it a try to keep up to date with my favourite sites, looking forward to hit the mark of 150 sources soon.

Link: https://www.inoreader.com/

Can’t Unsee – A Game about the Visual Details

In my recent lectures about interactive systems, I talked a lot about standards and guidelines for visual design. When I learned about Can’t Unsee,I had to share this with my students at once. It is a little game where you can learn quite a lot about the details of visual design.

It shows you two alternatives of designs differing only in a few or even one detail. The further your get, the harder the challenge becomes. While the differences are obvious in the beginning the details are getting harder to realize by time.

Can't Unsee Website

I can y recommend to play this little game, if yo want  increase your sensibility to the little details of visual design.

Link: https://cantunsee.space/

Monitoring your Site with Apex Ping

While I run meanwhile quite a number of websites, blogs and other services, I was looking for monitoring possibilities – not running on the server I am just monitoring.

I was pointed to Apex Ping, which is a simple and beautiful monitoring of various features of your website.

Apex Ping Homepage

While it is a bit pricey for my use case at the moment, it is a really nice service one can consider for a non invasive monitoring of your sites.

Link:
https://apex.sh/

High Quality Icons – The Noun Project

I always loved to enhance my presentations and lecture slides with visual content. At Microsoft, we used to have a Ressource DVD with hundreds of box-shots and icons to be used for marketing and other occasions. Meanwhile, I prepare a lot of educational lecture slides. However, universities usually do not provide such resources. Even most of the companies I’ve worked for did not provide a lot of these materials.

Eventually, I learned about the Noun Project where you can get thousands of high-quality icons for an absolutely fair price.

The project does provide various applications for Mac, iPhone as well as add-ons for Microsoft Word and PowerPoint. I just started to use the PowerPoint add-on being highly pleased by its functionality. You can search for icons, select from various resolutions and choose an appropriate color. Considering the time I spend to create, search for and adapt icons the price of 40 € is quite fair.

Noun Project PowerPoint Add-On

tl;dr

If you are looking for a high quality and easy to use collection of icons, you should have a look at the Noun Project.

Link: https://thenounproject.com/

Developers Beginner Guide to Public Static Foo

We recently asked out students to create a simple method in Java return if a given number is a prime number or not.

The task included a list of requirements the students had to fulfill. However, after correcting I realized that for many beginners some concepts are not fully clear – even if those concepts have been taught before. These are things an experienced developer sometimes often forgets because one has used these concepts over the years and became second nature of the developers.

Let’s have a look at what we asked for:

  1. Implement a method which returns if a given number is prime or not.
  2. The method has to be accessible from callers outside of the current class.
  3. The method has to be called without the corresponding class to be instantiated.
  4. Name the given number ‘n’.

These points mainly addressed the understanding of basic language concepts of the programming language taught so far.

There are different approaches, how to test number for being prime. In the given example we use the simple 6k +/- 1 optimization method.

public static boolean isPrime(int n) {
if (n <= 3)
return (n > 1);

if (n % 2 == 0 || n % 3 == 0)
return false;

int i = 5;
while (i * i <= n) {
if (n % i == 0 || n % (i+2) == 0)
return false;
i = i + 6;
}
return true;
}

While we have been very indulgent with the algorithms “invented” we have been very strict about the language concepts and syntax used in the solutions. number four of the previous task list should be, however, clear. The thing is called ‘n’.

I reflected this quite a while, trying to come up with explanations to the various issues I have seen in the solutions.

Methods as Return Values

Return values. We asked for a method that returns if a given number is prime or not. First of all, you need to define the type of the return value. In the given example it was boolean. Simply because you want to return a yes or no or – as we say in programming jargontrue or false.

public static boolean isPrime(int n) {
...
return false;
...
return true;
}

Also you make sure that all execution paths in your method provide a return statement. The value returned is either true or false.

For someone new to programming, the concept of methods, functions and so on is not always intuitive. In this case I usually try to come up with basic math. I show a mathematical function like f(x) = x + 1. As long as you know something about math it should be clear what this function does. You provide a value for x and you will receive a value increased by one. Then I write this down as code.

int f(int x) {
return x + 1;
}

You have written your very first method. It eventually does exactly what the mathematical function did before. Well done. Usually I celebrate this with my students.

It doesn’t matter if we are talking about object oriented or functional programming languages. The idea behind methods and functions is always the same. The syntax differs from language to language but the concept stays the same.

In addition I extend this example to the mathematical formula f(g(x)) = x + 1 with g(x) = x *2. Again I show how both methods would look in code.

int g(int x) {
return x * 2;
}

int f(int x) {
return x +1;
}

Now I write down a few lines to show how this would work.

int x = 5; 
int y = f(g(x));

While most compilers would refuse to compile this without some additional syntactical sugar, to the students the concepts should be quite clear by now.

Accessibility – Private Property vs. Public Services

If you are not used to programming yet, accessibility can give you a major headache. Who can access what? Over time you will understand concepts like information hiding, encapsulation or abstraction. All of these concepts will make use of accessibility. Although there are slightly different meanings and keywords in a variety of programming language, the idea is always the same. While there is a tutorial available for Java, this is one thing very hard to understand for those learning programming.

I usually try to find some real-world examples: public phone, a phone within the flat with is protected (to be used by family members only) by walls and doors and my private iPhone.

But also public services to be used by everybody, protected classes to be used only for those members in the course and private property not to be accessed by anybody else than me.

I realized that these concepts are slightly more difficult to non-native English speakers until I talked about the examples above which might include translation to some point.

Static – Just use it

I even don’t know where to start how to explain this to somebody not familiar with object-orientation and higher programming languages. I came from Assembler, C, Pascal, BASIC, LISP to Perl, C++ and finally to Java and .NET (VB, C# some F#), some Ruby, Python and various other languages I just don’t have in mind.

If found

The static keyword denotes that a member variable, or method, can be accessed without requiring an instantiation of the class to which it belongs.

and

In C# terms, “static” means “relating to the type itself, rather than an instance of the type”. You access a static member using the type name instead of a reference or a value, e.g. Guid.NewGuid().

and hell ya, this explains everything to a novice. So I explain it a very simple but inaccurate way: When using the static keyword on a method, you can just run the code. If using it on a variable, you can just use the variable. To some point you can think of static as “just use it”.

If you are new to programming and come across this article, I hope this helps .

tl;dr

There’s no short version. Just trying explaining public static foo to someone without a clue about programming.

Pro Git Kindle Edition

Just in case you own a Amazon Kindle an you are working a lot with Git. And just in case you struggle with Git the same kind as I do e.g. when it comes to a rebase, have a look at Pro Git. It’s available as Kindle edition for free at the moment from amazon.de.

progit

Although the book is from 2014, it still covers many of these daily things that are beyond a simple push or commit when using Git. Should be in every developer’s book shelf.