Think In Geek

In geek we trust

A small Telegram Bot in Go

I started using Telegram a few years ago. Most of the time I don’t use it much to have 1 to 1 conversations but rather chat in a small group of friends which I’ve known for a while now. Every now and then, we share some links to Twitter on that group, and unfortunately the Telegram official clients preview mode don’t support previewing Twitter messages with more than one image.

Take this test message as an example:

The moment I link this to a Telegram chat, this is the result:

Which is not ideal, as sometimes the message doesn’t make much sense when only one of the images is displayed.

Turns out I’ve been learning some Go over the last few months as well, so I wondered if I could write a small Telegram Bot to help me with that. I needed something to which I could send a Twitter link, and gave me back either the default Twitter preview in Telegram, or a custom made one with all the images of the message, in case there were more than one.
Continue reading “A small Telegram Bot in Go” »

ARM assembler in Raspberry Pi – Chapter 27

We saw in the previous chapter what is the process required to build a program from different compilation units. This process happened before we obtained the final program. The question is, can this process happen when the program runs? This is, is it possible to dynamically link a program?

Continue reading “ARM assembler in Raspberry Pi – Chapter 27” »

Whose is this optimization?

Today we will toy around a very simple optimization in clang and discuss a bit about separation of concerns when optimizing code.

Continue reading “Whose is this optimization?” »

Exploring AArch64 assembler – Chapter 7

In the previous installment of this series we saw how to alter the sequencing of our programs. Today we will see how we can reuse instructions by means of branches. Let’s talk about functions.

Continue reading “Exploring AArch64 assembler – Chapter 7” »

Compilation of array expressions in Fortran

As I stated in my previous post, Fortran 90 improved the array capabilities of Fortran. Today we will discuss what are the challenges when compiling array expressions.

Continue reading “Compilation of array expressions in Fortran” »

Introduction to the gfortran array descriptor

With the approval of Fortran 90, its array capabilities were largely improved. While still far from languages like APL, the extra functionality required a rethinking of the concept array in Fortran. This led to the need for array descriptors in the language.

Continue reading “Introduction to the gfortran array descriptor” »

How (not) to write a C++ front end – Part 3

In the previous installment we talked about the parsing technology we used, which looks like the canonical academic approach to parsing. In this chapter we will see some dificulties we encountered along the years.

Continue reading “How (not) to write a C++ front end – Part 3” »

Exploring AArch64 assembler – Chapter 6

So far we know how to do some computations and access memory. Today we will learn how to alter the control flow of our program.

Continue reading “Exploring AArch64 assembler – Chapter 6” »

Exploring AArch64 assembler – Chapter 5

In this chapter we will see how we can access the memory in AArch64.

Continue reading “Exploring AArch64 assembler – Chapter 5” »

ARM assembler in Raspberry Pi – Chapter 26

In this chapter we will talk about a fascinating step that is required to create a program, even when using assembler. Today we will talk about linking.

Continue reading “ARM assembler in Raspberry Pi – Chapter 26” »

Previous Posts Next posts