Overview of hacker-friendly single board computers

The linux gizmos mag has a nice and helpful review/compilation of all kind of single board computers created in Jan 2017.

Brief reviews on the site look like this:

They also have a spreadsheet online to get the full overview.

Why do I blog this? I always wanted to play around with one of these. I did a bit playing around with Arduino but never went for something more than a 20-40 lines of code. Maybe this helps to get me into a deeper sphere of playing around with these quite powerful things.

Adding Emoji to your LaTeX document

I found a rather quick way to get emoji in my document. But this is the brute force quick way. The russian way. It always works but is not that elegant. PDF-images.

How to

  1. Read this blog post „Emoji in LaTeX documents“
  2. Download the hires emoji-images in this github-repo
  3. Search the emoji-PDF files you need for your document
  4. Copy them to the folder where your .tex-document resides
  5. Define a shortcut/macro to include those emoji-PDF files you need
  6. Include the following code in your .tex-document
\usepackage{scalerel} % needed package to scale the pdf-images perfectly
\def\emojithumbup{\scalerel*{\includegraphics{emoji_thumbup_1F44D.pdf}}{O}}
\def\emojistar{\scalerel*{\includegraphics{emoji_star_2B50.pdf}}{0}}

In your document

This my five star rating
\emojistar\emojistar\emojistar\emojistar\emojistar
I would say \emojithumbup for this easy integration.

Update 17.09.2019

There is a quite interesting LaTeX Website called texample.net where you can see and learn lots of stuff about how to draw something in LaTeX. See following example:

Erreicht wurde das Ergebnis mit zwei Zusatzpaketen für TeX:

TikZ and PGF are TeX packages for creating graphics programmatically. TikZ is build on top of PGF and allows you to create sophisticated graphics in a rather intuitive and easy manner.

TikZ

Was ist TikZ? Nach dem Lesen der ersten Seiten des Manuals bin ich der Ansicht zumindest „T“ steht für Till Tantau den Entwickler. Und bei Wikipedia steht, es stehe für „TikZ ist kein Zeichneprogramm“. Das das eine Rekursion mit Henne-Ei-Problem ist scheint dem Entwickler egal.

With TikZ you get all the advantages of the “TEX-approach to typesetting” for your graphics:
quick creation of simple graphics, precise positioning, the use of macros, often superior typography. You also
inherit all the disadvantages: steep learning curve, no wysiwyg, small changes require a long recompilation
time, and the code does not really “show” how things will look like.
[…]
In practice, TikZ is the only “serious” frontend for pg

PGF

Was ist PGF? Jo, ich hab nach dem Überfliegen des Manuals (pgfmanual_3.0.1a) immer noch keine Ahnung wofür die Abkürzung steht. Typisch MathematikerInformatiker mal wieder.

It turns out that there are actually two layers below TikZ. […] most users will only use TikZ and almost no one will use the system layer directly […]

Why do I blog this? Because when I tried to integrate the coloremoji.sty class in my LaTeX document, I got a series of issues with conflicting textinput encodings not matching the one the coloremoji expects. This way your avoid any new encoding issues by directly integrating PDF-images which is what will happen anyway with that class. maybe you need to include \usepackage[pdftex]{graphicx} too.

Developing for tvOS using the Remote Layout Helper

I am developing an app for tvOS. One thing you quickly run into when testing on real world devices is the limits of screensize on several TV models. For this apple added a calibration tool in the settings.

I found I needed this info to actually make my UI layout work for customers. So I took a screenshot and created this screenimage as (PNG) to overlay it at any time in the dev-process for orientation of myself as a Remote Layout Helper).

tvOS Layout Template
Download the Overlay Image (use Save as…)

On my main controller I added & called following method which I call in - (void) viewDidAppear:(BOOL)animated:

- (void) activateCalibrationOverlay {
    if( DEBUG_CALIBRATION_OVERLAY ) {
        if( !overlayImageView ) {
            self.overlayImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tvOS_screen_size.png"]];
            overlayImageView.alpha = 0.0;
            overlayImageView.userInteractionEnabled = NO;
            [[self appDelegate].window addSubview:overlayImageView];
            [[self appDelegate].window bringSubviewToFront:overlayImageView];
            if( !overlayPlayPauseGesture ) {
                self.overlayPlayPauseGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleRemoteTapPlayPause:)];
                overlayPlayPauseGesture.allowedPressTypes = @[[NSNumber numberWithInteger:UIPressTypePlayPause]];
                [self.view addGestureRecognizer:overlayPlayPauseGesture];
            }
        }
    }
}

This adds an overlay of the Remote Layout Helper screen image on TOP of everything else and a gesture recognizer monitoring the PLAY/PAUSE-button of the TV remote. It calls following method:

-(void)handleRemoteTapPlayPause:(UIGestureRecognizer*)tapRecognizer {
    if( overlayImageView.alpha == 0.0f ) {
        [UIView animateWithDuration:0.3 animations:^{
            overlayImageView.alpha = 0.3;
        }];
        return;
    }
    if( overlayImageView.alpha == 0.3f ) {
        [UIView animateWithDuration:0.3 animations:^{
            overlayImageView.alpha = 0.5;
        }];
        return;
    }
    if( overlayImageView.alpha == 0.5f ) {
        [UIView animateWithDuration:0.3 animations:^{
            overlayImageView.alpha = 0.8;
        }];
        return;
    }
    if( overlayImageView.alpha == 0.8f ) {
        [UIView animateWithDuration:0.3 animations:^{
            overlayImageView.alpha = 1.0;
        }];
        return;
    }
    if( overlayImageView.alpha == 1.0f ) {
        [UIView animateWithDuration:0.3 animations:^{
            overlayImageView.alpha = 0.0;
        }];
        return;
    }
}

This helped me a lot doing the right things during development. I hope it helps you too. Feel free to share!

How to use it

You simply press PLAY/PAUSE again and again and the overlay will fade in at different alpha-blending-levels between 0.0 and 1.0. This allows to easily check boundaries of UI elements displayed against the screenlimits.

See following screen example:

The overlay in action on an app displayed.
The overlay in action on an app displayed.

Recognize, that you need a retained variable for the UIImageView called overlayImageView and another for the tap gesture recognizer called overlayPlayPauseGesture to be overlaid. And recognize that I use a boolean Precompiler-Flag named DEBUG_CALIBRATION_OVERLAY to switch this feature OFF in deployment.

Why do I blog this? I found it cumbersome to check against real world TV screens if my app works. So I just made sure that most of my UI is usable from within the MINIMUM SCREENSIZE frame the overlay gfx displays to me. Checking this anytime using the remote is a huge plus also on the real device. (Do not forget to disable the code on deployment!)