Allo: Telegram by Google

allo-telegram-comboI just wrote a blog post yesterday and it’s pretty rare that I’ll write two blog posts back to back, but I just had to talk about Allo.

Google Allo has been available for a few beta testers but was released yesterday for the general public on both iOS and Android platforms. If you’re a nerd, then you know this is an app that Google talked a lot about at their I/O conference earlier this year. Ironically, as you’ll see later in this blog post, the DJ they had at the start of the conference kept smacking on the “input!” button waay more than the “output” button. Go ahead and watch here if you’re interested.

But here’s my question: What is really new about Google Allo? If you look at it, like I’m about to do, Allo seems EXACTLY like Telegram, from its interface to its feature set. This leaves me wondering why the heck an absolutely massive company would choose to duplicate an app that a smaller company has done, and possibly done better.

Okay, so let’s dive into this. I’m taking screenshots on my Nexus 5X phone for this post.


First off, we have the sign-up process. Unfortunately, I don’t have any pics of the process as I have already signed up and don’t want to lose previous chats, so you’ll just have to bear with me.

The sign-up process for both apps uses your phone number as your key identification. You grant the app access to your contacts and it will look at the phone numbers to see if there are other people you know using the app. If not, you can always invite them.

Why doesn’t Google just use my Google account and then check my Google contacts in the cloud? No idea. They kept this app almost completely separate with the exception of the Google Assistant, which I’ll get to later.

Verdict: Identical

Main screen

Next we compare the main screen of each of these apps. What do we see? Wow. Almost identical. We have the menu up in the top left, search in the top right, recent messages list, and a “New conversation” button down in the bottom right-hand corner.

Verdict: Identical


Here we see the menus of both apps side by side. First we notice that Telegram has more items to tap on. Most of this, however, is to start a new conversation. There is also a “Contacts” button there. Allo chooses to keep Contacts hidden until you tap the “New conversation” button on the main screen, which makes sense to me. I don’t particularly care about my contacts unless I’m trying to reach them.

I would assume that the Allo menu might grow as the app becomes more refined and improved in the coming months.

Verdict: Different

New message

From the main screen, we tap the “New message” icon in the lower right hand corner and we see this screen, shown above.

They both offer to start a new group chat or secre/incognito chat at the top and list all contacts below that. Allo also shows that we can start (or continue) a conversation with the Google Assistant. If the Google Assistant wasn’t there, these two screens would literally be identical.

Verdict: Identical

Private chat

Both apps over a secure chatting option, and both require that you start it in a new conversation. You can’t just enable secure mode in your regular conversations. What I mean is the end-to-end encryption, for example, does not seem to be used in regular chats. It’s only a feature of these secure/private/incognito conversations. Putting aside any discussion of whether or not these features should be included in regular conversations, both take the same approach and separate “regular” from “secure” chats.

Notice, both advertise the end-to-end encryption, self-destruct timer, and serverless storage. HOWEVER, Telegram blocks screen captures completely in secure chat, while, as you can see, I was able to grab my screen immediately in an Allo incognito chat. While not necessarily a security flaw (in my personal opinion), it is a super important feature that is lacking right now.

I also appreciate Telegram’s very clear wording as to what the secure chat provides to you, while Allo is kind of like “yeah, sure, whatever, here’s a few privacy features for you crazies….”

Verdict: Different (but in a bad way)

Chatting in general

Allo has stickers. So, uh, yeah, that’s nice.

But wait! SO DOES Telegram!!!

Okay, so, like Allo has this cool feature where you press and hold the mic icon  to record an audio message, almost like a walkie-talkie! That’s cool, right?

Nope. Telegram has that.

But, uh, well, um… Allo has… uh… Google Assistant.

But is that really new though? Nope. Telegram has had chat bot integration around for years. Literally ALL that Google has done is put their advances AI into the concept which seemed to have originated with Telegram and puked it into their own chat app. That is it.

Is Allo new? No. It’s practically identical to Telegram on almost every front. The only, and I mean *only* difference between Telegram and Allo right now is that Allo has Google’s AI computing power behind it. That is it. That’s all. We can go home now…

Battle of the features

But before we go home, let’s do a quick little featureset comparison between the two apps in a clean, table format to kind of summarize this whole thing.

(I’m sorry for the bad formatting on this table. It looks terrible. I hope to fix it soon.)

Allo Telegram
Stickers X X
Emoji X X
Encrypted chat X X Requires starting a secure/incognito conversation first
Self-Destructing messages X X Requires starting a secure/incognito conversation first
Chat bot X X
Artifical Intelligence X But who’s to say that somebody smart puts together a Telegram chat bot to interface with existing public Google Search features??
Group chat X X
Phone # registraction X X
Desktop client X
Web browser client X
Icon without words X

So, there you go. Take what you want from all this, but I think Allo, as it is right now, is basically the same exact thing as other chat apps such as Telegram that we have seen for a long time now, with the exception of Google’s AI integration.

Do note that to make Google’s AI work best in the app, Google will be storing all chat information which is not sent in an “incognito” chat to their servers for analysis. They have to analyze what you say a lot to get an idea of who you are, and how you respond to things which enables them to generate better content for you as a user. Or at least that’s what they market this whole chat thing as.

If you read this far, thank you very much for taking interest in this article. I greatly appreciate it. PLEASE let me know what YOU think of Allo or even Telegram in the comments section below. I’ll be listening!


Starting to build an FFT core generator for FPGAs

C++ codeI have begun working on a new project and would like to take a moment and tell you about it, if you don’t mind. I have been working on it for about a month now, and have been continuing to become more excited about it as I have started to see some of the foundation pieces fall into place.


My senior project, to finish my Computer Engineering degree at Oregon Institute of Technology was supposed to be an audio spectrum visualizer using an FFT processor in an FPGA. If you don’t know what an audio spectrum analyzer is, check out this video below.

Anyway, it turned out that an FFT is a major pain to build from scratch, especially for a person like me who has no clue what he’s doing when it comes to digital signal processing (DSP) techniques. I learned a great deal by reading many technical papers and articles on the subject, but could not get anything to work. I even tried using Altera’s (as was it’s name at the time) proprietary FFT IP core but the user guide was not built for a beginner and neither myself nor my professors could get the core to function properly.

Long story short, I altered my senior project to simply display audio volume in a fancy way and proceeded to market the product as a very, uh, expandable platform that could easily implement features like frequency analysis and whatnot.

Ever since that time, this whole idea of an FFT processing core in an FPGA has been haunting me, so now that I have some more time this summer, I have set out with a goal of building an application which generates a completely customizable FFT core in the form of SystemVerilog compliant HDL modules, for use in Altera or Xilinx FPGAs and CPLDs.

Design concept

This project ultimately would allow a developer to provide the width and length of the FFT they need for their system and then the program would generate all the SystemVerilog modules required for that system and the developer would then only need to interface his design with the input and output of the top-level FFT module and he would be ready to roll in a matter of minutes.

I have been designing this project in the ever-so-popular object-oriented C++ and have been compiling with “mingw” in Code::Blocks.

I know that both the Altera and Xilinx FFT IP core configuration wizards presented the user with some nice extra features like being able to select presets which modify the design to consume more or less memory or have a higher or lower throughput, for example.

This design, for the time being, will not have such features. I think it’s better to focus on one FFT architecture and generate a nice pipelined FFT core that is simple to configure and very easy to integrate into a synthesize design. Once I have one FFT architecture working well, then I might consider expanding the idea to generate different kinds of FFT architectures.

Multipliers are a very important part of calculating an FFT. Most FPGA I have encountered are manufactured with physical multiplier hardware on the silicon. This conserves the Logic Elements (LEs) or Logic Cells (LCs) to be used for other things in the design. It also means that (ideally) highly-optimized hardware multipliers are readily available to the developer. However, from the little I have seen of the FPGA market, it seems like access to these multipliers is not allowed unless your design uses a piece of the vendor’s proprietary code. In Altera’s world, this code is called a macrofunction. I’m not sure what it’s called in the Xilinx world just yet.

With all of that in mind, this project will probably use custom multiplier modules for the time being, simply because it simplifies the cross-vendor compatibility a great deal. While I haven’t gotten quite that far yet, I will probably implement it as a Booth multiplier, but I am still doing a little bit more research before a really settle on a multiplier architecture.

Current progress

So far, I have implemented and tested code to generate a SystemVerilog compatible ROM module and then attached that code on to new code which calculates twiddle factors, based on the length and width of the desired FFT. Reworded, basically right now I can generate both the real and imaginary twiddle factor ROMs required to process an FFT of (almost) any length and bit width.The output I’ve been getting matches the twiddle values which George Slade calculated and published in his paper/tutorial on this subject, so that has been promising.


The simple future plan, of course, is to finish the project. But what does that mean? Well, from what I know based on what I have read online, I will need to expand my C++ program to generate the following SystemVerilog modules:

  • 2-port RAM module
  • Booth multiplier module
  • Address generator module
  • Butterfly module
  • Top-level module (which wires most of the sub-modules together correctly)

So we’ll see how this goes! Again, I’m pretty excited about this project and really hope I can build a usable FFT core by the end of this. If not, it has already been a great review of some C++ programming skills I haven’t used for over a year, so that’s always a good thing.

I am keeping this project hosted up in my (currently private) Bitbucket repository. If I do make the repository public, please go check it out over here:

If you made it this far, thank you so much for reading this! I really appreciate it! Please ask any questions or leave any comments you might have below!

Mr. Robot (Season 2 Episode 6) Symbology

Mr. Robot TV series imageI’ve been keeping up with the USA hit series Mr. Robot these past few weeks. I’ve been hearing a lot of talk about the episodes and how people are not understanding what is going on or what the purpose of some of the presentation techniques are all about. While I am no TV critique, I would like to offer up my own opinion of what’s going on in the latest episode of Season 2 of Mr. Robot.

In the 6th episode titled “eps2.4m4ster-s1ave.aes” the show takes on a 90’s sitcom feel for a good portion of the total runtime. In the middle we see some more FBI hacking which began a few episodes ago, and at the end it goes back to some more of the 90’s-feeling stuff.

So what’s the point of this 90’s stuff??

Viewer nostalgia

mr-robot-season2-episode6I think this show was targeted towards the early-30s demographic. With that in mind, these 90’s scenes are totally nostalgic. This is the stuff that these viewers were raised with in their middle school years, right along side the main character, Elliot. Everything from the flat sets to the AOL-like ads were all there. Okay, so AOL taylors to the nerds as well, who tend to view it as a major part of the history of our internet-based existence today.

So, yeah, for the tech geeks and nerds, 90’s TV is classic.

E Corp is Everything

e-corp-glitchedThe 90s TV scenes also show how E Corp was there back then and has been around all the way to the show’s modern times. This is just another reinforcing beam of the idea of this giant corporation running everything. In our real world, our mini marts go by the names of 7-11, AM/PM, or Circle K. In this show, people don’t have any other choice but to buy from E Corp.

Since the start of the show, I always felt like this E Corp was there to strip away all the logos, slogans, and branding that we see today. E Corp is a symbol which stands, unmasked, as a representation of the governments and corporations around us. It does everything. Is everything. It is your grocery store, your credit card, your bank, your life’s dependency.

Just like Massive Dynamic from the TV series Fringe, E Corp could use the following slogan:

What do we do? What don’t we do. – Massive Dynamic slogan

So here’s a question for you: Does the ‘E’ in E Corp stand for “evil” like Elliot describes, or does it stand for “everything” or… something else?

Humanizing Elliot’s internal conflict

Mr. Robot These 90’s scenes also served as a kind of flashback. Not a flashback in the traditional sense of literally getting a glimpse of a character’s past, but instead took us to a version of Elliot’s past as it is altered by Mr. Robot. There is a man tied up in the trunk of the car. Nothing much happens with him in the episode. He’s just there.

(I think) it’s almost as if the businessman is there to show how Elliot does not think his dad is perfect. There is something certainly wrong going on, but then there is the face of his dad which keeps saying he is there to help and you see the complete confusion on Elliot’s face as he tries to rationalize the yelling man in the trunk and his calm father driving along.

Mr Robot TV You know that nagging feeling that Elliot’s been talking about for, oh I don’t know, the past two seasons?! I have to wonder if this set was almost a way to bring his mental struggles to our eyes. It was quite clear to all of us that nothing in those car scenes was right or normal. The laughing was wrong. The tire marks on the dead police officer were wrong. Oh yeah, dead police officer? Uh, slightly wrong. And it seems like there’s nothing Elliot can do about it. He is just there, along for the ride.

It felt like the first time I could really understand the mental struggle going on in his head. That if this is really what it feels like up in there, no wonder the guy is having issues coping with reality. We know at the end of these scenes that it was just his way of mentally coping with the pain of the beatings he just received.

If you read this far, thanks!

Mr Robot repair shop sign

This 6th installment in Season 2 of Mr. Robot was full of imagery. Maybe it felt dry. Maybe you felt lost because the plot you thought was finally picking up in the last episode only crawled forward in this one.

Give this show a chance. We’ve seen how it can blow our minds before. Take a step back. Try to understand what it’s getting at. There are certainly some interesting avenues of character development that this show is taking, but you know what, I hate seeing the same kind of thing over and over again. While I would agree with you that this season feels slower, I still can hardly wait for what the Mr. Robot team has in store for us later this season because I have a feeling that this is all creeping towards something massive.

PICAXE Microcontroller with Parallax Serial LCD Display

Parallax Serial LCDDo you want to add an LCD display to your PICAXE project? Do you have a limited number of output pins on your microcontroller? The Parallax Serial LCD display is a great solution!

The Parallax 2×16 serial LCD display has only 3 pins. Only one of those pins connects to the microcontroller. The other two are for power connections.

It turns out, Parallax has made it very easy to communicate with the LCD display with simple serial commands. You can test your display by using or modifying the PICAXE program I have written below.

NOTE: To use the display at the PICAXE’s default 4 Mhz, the LCD will need to be set for a 2400 baud rate and the program will change from:

setfreq m16
symbol tx = c.4
symbol baud = T9600_16


setfreq m4
symbol tx = c.4
symbol baud = T2400_

The code below will test the serial communication, the display back-lighting (if applicable), and the on-board speaker/sound controls.

I hope this proves useful to somebody! Enjoy!


' ------------
'|  LCD Test  |
' ------------

'by Alexander Hogen

'Started: 9-16-2013
'Finished: 9-16-2013

'See "Command Set" in this PDF for
'more information.

setfreq m16

'9600 baud only works in 16MHz or higher

'Multiply desired millisecond (ms) timing
'by 4 to get desired result.
'i.e. "Pause 5" becomes "Pause 20"

symbol tx = c.4
symbol baud = T9600_16

pause 400

serout tx, baud,(22) 'Turn display on
pause 40
gosub clearLCD
serout tx, baud,(17) 'Turn backlight on

serout tx, baud,("Hello")

pause 4000

gosub clearLCD
serout tx, baud,("LCD works great!")

gosub beeps



serout tx, baud, (12)
pause 40


serout tx, baud,(216) 'Select the 4th scale (A=440Hz)
pause 40
serout tx, baud,(210) 'Set note length to 1/16 note
pause 40

serout tx, baud,(220,221,222,223,224,225,226,227)
pause 4000



01010100 01101000 01101111 01110101 00100000 01101000 01100001 01110011 01110100 00100000 01100011 01110010 01100001 01100011 01101011 01100101 01100100 00100000 01101101 01101001 01101110 01100101 00100000 01100011 01101111 01100100 01100101 00100001 00001101 00001010 00001101 00001010 01011001 01100001 01111001 00100000 01100110 01101111 01110010 00100000 01111001 01101111 01110101 00101110 00100000 01011001 01101111 01110101 00100000 01101011 01101110 01101111 01110111 00100000 01101000 01101111 01110111 00100000 01110100 01101111 00100000 01110101 01110011 01100101 00100000 01100001 00100000 01110100 01100101 01111000 01110100 00100000 01100011 01101111 01100100 01100101 00100000 01100011 01101111 01101110 01110110 01100101 01110010 01110100 01100101 01110010 00101110 00101110 00101110

Sidechain Effect (“Bounce Synth”)

The sidechain effect has been around for a good, long while. Here’s some background info for those of you who might be interested. Wikipedia: Dynamic range compression

There are a variety of ways to do this in LMMS. One LMMS artist (Spade) has a nice tutorial on how to make a sidechain effect using the Peak Controller.

Here, I have two other ideas for you to try out, with a demo/sample for you to download (at the bottom of this post). The first idea is to use the Automation Editor. The second is to use the Volume Envelope filter on the instrument you want the effect to be applied to.

Listen to an audio sample of the LMMS project:

Download this LMMS file and you’ll be able to see how it’s done.

Red Ambassador – Sidechain Example (Right-click and hit “Save As”)

Some things you should know how to do:

  • Connect things to an Automation track
  • Route and instrument through an FX channel
  • Create a melody with an instrument

Does some of this not make sense or you can’t figure it out digging through the sample file? Comment below!

Open-source DIY Greenhouse Project

In a college class this last year, a group of us were assigned to design a system that would collect and graph environmental data from our campus greenhouse. We would take this data, graph it, and display those graphs on a public website. We’d also use current data to control the greenhouse (i.e. watering, heating, cooling…). Hopefully this information helps you if you are wanting to start your own DIY project and automate your greenhouse.

We decided to use an Arduino UNO, a PICAXE-14M2, and a desktop computer running Windows Vista. The Arduino functioned as the main interface and brain. We dedicated the PICAXE to simply reading sensors and sending that data in a continuous stream to the Arduino via a serial communication protocol.

The Arduino would format and send data to be logged to the PC, which runs MegunoLink. The Arduino would also decide, based on environmental conditions, if the heater/cooler/water should be turned on. Future groups working on the project would have to decided whether the Arduino would do this by sending a command to a dedicated microcontroller (reverse of what we did with the PICAXE being dedicated to sensors) or by directly controlling equipment in the greenhouse.

So, in essence, for this project, we figured out how to set up data logging and automation of the greenhouse environment using cheap materials and open source equipment.

In our report, we provide example code for both microcontrollers and discuss difficulties we ran into along the way. You can read this report by clicking on the PDF link below.

Final Report – COCC Greenhouse IT Group.pdf

IT Budget/Component Pricing.pdf



OpenOffice and Java not Jiveing?

I recently installed OpenOffice on my computer again to experiment with some database ideas I have. I normally use my MS Office suite for document creation needs, although I have used OpenOffice a lot in the past.

For some reason, I couldn’t create a new database because OpenOffice said that I didn’t have the right version of Java installed or that it couldn’t find a valid installation.

I found an easy fix for this problem. You really just need to delete two files and you’ll be good to go. Since it can take a while to navigate to these files, it’s easier to just use Windows Search to find them for you.

  1. Close OpenOffice completely, including the Quick Start thing in the Taskbar
  2. Open Windows Search (Windows logo key Picture of Windows logo key +F)
  3. Type “javasettinsunopkginstall.xml”
  4. Delete the file.
  5. Search for “jvmfwk3.ini”
  6. Delete the file.

You should be good to go!

Windows Vista Install Problems with Audacity & Blender

If you’ve read any of the other things on this site, then you know that we are fans of Open Source software. Blender is one of these amazing programs. If you don’t know what it is, then I suggest you read our post about the Blender animation program. Audacity is another awesome program for recording and mixing audio. Check it out here.

I happen to have a Windows Vista Business operating system. I recently did a reinstall of the entire OS. When I got to installing all my programs, Audacity and Blender were on the top of my list. The install went successfully, however when I tried to open the programs afterwards, they would just crash or present me with some strange error message. I tried getting older versions of each program, which did work in the Audacity case, but not for Blender. Whatever I did, the program just would not open or run correctly.

A couple weeks later, I got to installing my Windows Live Essentials programs. WLE needs the “Windows Platform Update” if your using a Vista system, like I am. The update is described by Microsoft on this page: Install the Windows Platform Update. WLE installed the update and then completed installing the various associated programs. Everything seemed to be working fine.

Out of curiosity, I tried installing the most recent versions of Audacity and Blender again. Lo and behold, they work fine! If you are having a problem getting Audacity or Blender to work on your Vista system, then I suggest you make sure you’ve got the Windows Platform Update. I’m just guessing, but I think they are related. If you have the Windows Live Essentials programs installed, then you should have the update already.

I hope that helps! :-)

-RED 7