Wir alle ❤️ Emojis! Auch wir Menschen am Mac lieben sie, aber für diese war es eine lange Zeit ein Krampf die lieblings Smileys zu benutzen.

Ein animiertes .gif welches das auftauchen des Emoji Pickers zeigt.

Aber hier seht ihr die Erlösung zu all euren Emoji Problemen:

control (^) + command (⌘) + space (␣)

In Schrift bedeutet das, man drückt control, command und space gleichzeitig.

Dazu noch mal eine kleine Illustration, wo sich die Tasten auf der Tastatur befinden.

Eine MacBook Pro 16/16 Tastatur, dessen Control, Commmand und Spacebar rot umkreis sind.

Nun… aber was passiert wenn man diese Tastenkombination drückt? Es öffnet sich der so genannter Emoji-Picker. In diesem kann man seine Lieblings Emojis auswählen, oder gar danach suche. Vor allem für MacBook Pro 1617 Nutzer*innen die in iMessage stundenlang über die Touch Bar streifen um das passende Emoji zu finden erhört das sehr Lebensqualität.

Ein weitere Vorteil besteht darin, dass nicht nur Emojis darin zu finden, sondern auch Mathe Symbole oder andere Symbole die man vielleicht ab und zu im täglichen Leben braucht. Wie das ™ - Symbol.

Ein Screenshot des Emojis Pickers, welches verschiede Mahte Symbole zeigt.

Mit diesem kleinen Trick sollte die Liebe zu Emojis und oder ungebräuchlichen Symbolen auf jeden fall befriedigt sein.


❗️❗️❗️

Welcome to Things Note in Bear Advanced! The idea originated from Craig eley (@craigeley) | Twitter. Thanks for the initial offer! Since I’m working a lot with tags in Bear and deadlines in Things, I decided to upgrade the workflow.

Screenshot of the workflow app, which shows the Things Notes In Bear Advanced workflow.

Usage

For Things to recognize the tags, you first have to create them in Things. This is great, since you can then choose different tags for Bear and Things. E.g. programming for Things and programming/python/pip for Bear.

Otherwise everything else works as expected, you enter your note, it creates a Bear note and a corespondent Things note with the date you set.

You can download the workflow here: Download (Takes you to workflow.is)

Hope you like the script workflow!

Credit goes to @craigeley | Twitter and 👾@KurzGedanke | Twitter

❗️❗️❗️

Download the .pdf version of this post: Download

Or the .epub version: Download


Eine Tabelle in Bear.app, fromatiert in Markdwon, dargestellt in Code Blocks.

Zum jetzigen Zeitpunkt (15.04.2018) besitzt Bear for iOS (App Store Link) und Bear for Mac OS (App Store Link) leider nicht die Möglichkeit Tabellen darzustellen.

Nun habe ich aber dennoch den Schritt gewagt und werde vollständig zu Bear umziehen, gerade da ich für mein Informatik Studium so wenig Ballast (verschiedene Apps) nutzen möchte.

Als ich meine .md Datein in Bear von iA Writer kopierte viel mir auf, dass meine Tabellen natürlich komplett durcheinander geraten sind. Da ich aber wusste, dass die gut formatiert waren überlegte ich diese einfach in ein Code Block zu packen.

Code Blocks erzeugt man wie oben im Bild zu sehen mit drei Gravise, einfach Wikipedia Link.

Ich finde sie sehen brauchbar und gut lesbar aus, auch wenn diese Möglichkeit wahrscheinlich an ihre Grenzen läuft, wenn man wirklich lange Tabellen aufstellen möchte.

In der Hoffnung, dass die Entwickler von Bear nun aber die standart Markdown Implementation von Tabellen nutzen werden, werd ich einfach so bald diese erschienen ist, die Code Blocks von den Tabellen entfernen und hoffentlich dann wunderschön aussehende Tabellen haben.

Falls ihr weitere Ideen für ein Bear of the Day habt, vor allem wie ihr so mit Mathematischen Formeln umgeht, schreibt mir, @KurzGedanke, doch einfach ein Tweet und lasst es mich wissen. 😊

Lade das .pdf dieses Artikels herunter. (Hier klicken)


Mit meinem MacBook Pro 2017 Edition war ich in der Not nach externen Speicher. 512GB interne SSD reichen im alltäglichen programmier betrieb durchaus aus, aber meine kleine Film, Bilder und Musik Sammlung ist dann doch ein wenig zu groß und nicht wichtig genug um sie jeden Tag mit mir rum zu tragen.

LaCie 1TB Rugged liegt neben 2017 Space Grey MacBook Pro

Video und .pdf befinden unten im Artikel.

Kurzes DuckDuckGo-en nach USB-C Festplatten brachte mich dann relativ schnell zu der LaCie Rugged 1TB USB-C für knapp 95€ welche orange Optik mir schon aus diverse Apple Stores bekannt war.

Was kommt mit?

Im Lieferumfang befindet sich:

  • Festplatte mit USB-C Anschluss
  • Oranges USB-C zu USB-C Kabel
  • Schwarzes USB-C zu USB-A 3.1 Kabel
  • Hinweiszettel

Optik und Verarbeitung

An der Optik scheiden sich wohl die Geister. Persönlich finde ich die Orange Gummihülle die vor Stürzen schützen soll super schick in Verbindung mit dem gebürsteten Aluminium der eigentlichen Festplatte. Wer mit der Farbe überhaupt nicht klar kommt, kann die schützende Gummihülle aber auch einfach abmachen. Die Verarbeitung ist fast auf Apple-Niveau. Sie ist durch den Aluminium Body definitiv nicht leicht und fühlt sich sehr wertig und stabil an. Die beigelegten USB Kabel fühlen sich ebenfalls gut verarbeitet an, so dass ich sie nutzen werde und mich nicht nach besseren Alternative umschauen brauch.

Und was ist mit den Bits?

Mit dem USB-A Kabel habe ich knapp 90GB Filme in ungefähr 15Minuten auf die Festplatte geschoben. Mit dem BlackMagic Disk Speed Test und über USB-C lieferte die Festplatte 94MB/s im Schreiben und 105MB/s im lesen. Für mich, der nur alte USB2.0 Festplatte gewöhnt ist, ist das definitiv ein Wunder. Da ich aber die Festplatte mit ein wenig Command Line Magic in Apples neuen Festplatten Format APFS Encrypted Formatiert habe, kann es sein, dass wenn man den von LaCie vorgesehen installations Weg folgt und sie mit HFS+ nutzt noch an bessere Geschwindigkeiten rankommt.

Image of the BlackMagic Disk Speed Test with the above results.

Einzig Unangenehme ist, dass man sie beim Lesen/Schreiben deutlich hört. Wer absolut ruhige Set-Ups mag, könnte sich daran vielleicht stören.

Fazit

Festplatten mit 1TB und USB-3.1 bekommt man z.b. von Western Digital für deutlich kleineres Geld (ungefähr 50-60€) exklusive ein USB-C Kabel. Wem aber die Optik zusagt, eine gute Verarbeitung haben möchte und vielleicht noch auf die Sturzfestigkeit angewiesen ist, sollte mit dieser Festplatte nichts falsch machen. Die Lese/Schreib Geschwindigkeiten sind nicht außergewöhnlich, aber deutlich im Rahmen um damit gut arbeiten zu können und sich nicht all zu lange langweilen zu müssen, bis man seine Foto-Bibliothek übertragen hat.

Schau dir das YouTube Video an! (Hier klicken)

Lade das .pdf dieses Artikels herunter. (Hier klicken)


I love web scraping, especially in the beginning of learning how to code. It is fairly easy, you can learn a lot about how to handle data and you get immediate results!

But I see a lot of tutorials which get overly complicated and focuses mainly on a framework called Beautiful Soup. It is a fantastic and mighty framework but most of the time - and especially for a beginner - it is completely over the top. Let’s be honest, we don’t want to index a complete website, most of the times we just want to download images or ask for a few values.

This can be done a lot of easier with one magic word, Regular Expressions.

Okay, okay, I hear you “whaaat? Regular expressions and easy? WTF?”

Yeah, you are not wrong, RegEx aren’t that easy. Personally I found it much easier to learn RegEx than an arbitrary framework which has only one use case.

What are regular expressions?

The concept of regular expressions occurred in the 1950s. In theoretical computer science it is a sequence of characters that define a search pattern. (Wikipedia)

So, what does a regular expression looks like?

Imagine we have a string:

Hi, I'm KurzGedanke and www.kurzgedanke.de is my website.

Now we want to get the website with the specific domain. We can assume that every input looks like www.websiteName.tdl.

One solution to match this with regular expressions might be looking like this:

www\.(.*)\.([a-zA-Z]*)\s
  • www as you might suspect, this matches exactly www
  • \. matches the . after the www. Because the dot has a function in RegEx we need to escape it with the \.
  • (.*) the . matches any single characters. Is it the a or a tab, it will match it. Besides of newlines. With the asterisc we match zero or more characters of the expression before it. In this case zero or more of any single character. The parentheses () puts the match in a group which can be accessed easily.
  • \. this dot matches the dot before the top level domain.
  • ([a-zA-Z]*) here we have the top level domain, which is put in a group again with the (). [] are used to match a single character. In this case a character between the lower a to the lower z or the capital A to the capital Z. To get more than a single character the * is used.[^This is funny and a classic mistake. I didn’t thought it through completely. A URL can of course contain a dash - and I missed it.^^]
  • \s matches white space. In this case it is used to end the regular expression.

To be honest, I think there are smarter ways to do this, but I find this way easy to see what’s going on and not to get overwhelmed by a 50 character long RegEx string.

To learn regular expressions I used an interactive tutorial like this: regexone.com. This is not the only one out there and you can look if you find one that suites you.

Another great tip are sites like regex101.com. You can paste text in it and write directly your regex while you can see in realtime which parts are matched.. I use it everytime when I write some regex.

Lets write some python

We can use this knowledge to scrap websites. And… to be honest… I will rely on a module called Requests: HTTP for Humas. But this module is so easy to handle and pythonic - sometimes I have the feeling it is more pythonic than python itself.

Our goal is to scrap my website and get every article title of my landing page, as well as the link to it.

A simplified version of the HTML looks like this:

<div class="post-list">
  <article class="post-preview">
    <div class="post-preview-heading">
      <h2><a href="https://kurzgedanke.de/post/headless-ssh-and-wifi-on-raspberrypi/">Headless ssh and Wifi on RaspberryPi</a></h2>
    </div>
    <hr>
  </article>
  <article class="post-preview">
    <div class="post-preview-heading">
      <h2><a href="https://kurzgedanke.de/post/how-to-encrypt-files-with-aes/">How to Encrypt Files with AES</a></h2>
    </div>
    <hr>
  </article>
  <article class="post-preview">
    <div class="post-preview-heading">
      <h2><a href="https://kurzgedanke.de/post/problems-with-flask-and-pycharm/">Problems with Flask and PyCharm</a></h2>
    </div>
    <hr>
  </article>
  <article class="post-preview">
    <div class="post-preview-heading">
      <h2><a href="https://kurzgedanke.de/post/decentraland-hot-to-mine-on-a-mac/">Decentraland | How to Mine on a Mac</a></h2>
    </div>
    <hr>
  </article>
  <article class="post-preview">
    <div class="post-preview-heading">
      <h2><a href="https://kurzgedanke.de/post/welcome/">Welcome</a></h2>
    </div>
    <hr>
  </article>
</div>

So, what are we looking for in this HTML? Let’s see, we want the titles and the url of all posts. We have a few articles with the class post-preview. And down below we have a h2 heading inside a div called post-preview-heading. The h2 contains a a href which assembles a link. Might be good to go! Every h2 has the same structure and, we are lucky, this is the only h2 with this structure on this whole side. So we can assume, like above, that every input looks exactly like this:

<h2><a href="linkToPostTitle">postTitle</a></h2>

On other websites the h2 or the a href would have a dedicated class or id like

<h2 class="post-preview-title-header"></h2>

this is even better because we would have a persistent pattern which could be used to match against.

Now let us write our RegEx to search for.

<h2><a href=\"https:\/\/kurzgedanke\.de\/post\/

This simply represents the

<h2><a href="https://kurzgedanke.de/post/

string. Again the backslashes as well as the double quotes have to be escaped.

Note: You can leave the escaping of the double quotes out when you use single quotes in your python code. But escaped double quotes are always the safe option.

Now the rest:

<h2><a href="https:\/\/kurzgedanke\.de\/post\/(.*)\/">(.*)<\/a><\/h2>
  • (.*) selects everything after the post/ till the /"> and puts it in a group.
  • 2. (.*) matches the post title
  • <\/a><\/h2> closes of the </a> tag and the </h2> tag.

Now that we’ve written the regular expression let’s take a look at the python code.

import re
import requests


r = requests.get('https://kurzgedanke.de/')

regex = r'<h2><a href="https:\/\/kurzgedanke\.de\/post\/(.*)\/">(.*)<\/a><\/h2>'
titleURL = re.findall(regex, r.text)

for urlAndTitle in titleURL:
    print(f'Title:\t {urlAndTitle[1]}')
    print(f'URL:\t https://kurzgedanke.de/post/{urlAndTitle[0]}/')
    print('-------------------------------')
  • import re imports the regular expression module from the standard library
  • import requests import the requests module from Kenneth Reitz.

makes an HTTP request to *kurzgedanke.de* and safes the data in a requests object.
- `regex = r'...'` declares a variable with the regular expression as a value. `r'...'` tells python that this string is a regular expression.
- `titleURL = re.findall(regex, r.text)` we use the regex module to find all matches with the use of our regex variables and `r.text` which contains the html of our http request. After everything is found it will be a list with all matches assigned to `titleURL`.
- `for urlAndTitle in titleURL:` we can easily iterate over the list and access the different matches with an array notation because we grouped them up in our regular expression with the `()`.

When you run the script it should look like this:

```bash
Title:   Headless ssh and Wifi on RaspberryPi
URL:     https://kurzgedanke.de/post/headless-ssh-and-wifi-on-raspberrypi/
-------------------------------
Title:   How to Encrypt Files with AES
URL:     https://kurzgedanke.de/post/how-to-encrypt-files-with-aes/
-------------------------------
Title:   Problems with Flask and PyCharm
URL:     https://kurzgedanke.de/post/problems-with-flask-and-pycharm/
-------------------------------
Title:   Decentraland | How to Mine on a Mac
URL:     https://kurzgedanke.de/post/decentraland-hot-to-mine-on-a-mac/
-------------------------------
Title:   Welcome
URL:     https://kurzgedanke.de/post/welcome/
-------------------------------

I hope you found this little write up useful and learned a bit.

If you have any question or remarks, please leave a comment, contact me on twitter or write a mail.