1 2 3 Previous Next


252 posts


Now Raising the Questions...

For those that missed it, I was one of the 2.3 million people without power, and it was miserable! Typhoon Rammasun (Typhoon 'Glenda') ripped through my barangay (neighborhood) of Pasig City as if I was still in Chicago. Those from Chicago, such as Drew Fustini, will know what I mean. My rechargeable fan/lantern and extra lead-acid battery pack was practically my lifeline for helping me endure a hot & humid room.


At most, I have about 10 hours of a, sort-of breezy fan. For the remaining 30 hours, I had to rely on my manual fan while taking repeated showers.


The Events...

The date and time is approximate and set for Philippine Timezone. I did a lot of sleep in a dark, humid room, sweating too much.

  • July 16, 2AM: Lost electrical power
  • July 16, 3AM: I woke up, sweating. Dark outside, I heard the sounds of rainfall.
  • July 16, 5:15AM: My wife took taxi to work. My mom-in-law and I attempted to visit McDonald's and/or Jollibee for breakfast; both are closed!
  • July 16, 5:45AM: Return home with mom-in-law via tricycle. Still raining!
  • July 16, 5:55AM: Electrical power resumes
    Internet restored, BeagleBone Black resumed operations
  • July 16, 6:05AM: Lost electrical power
    Blackout before I could access my BeagleBone Black.
  • July 16, 7-10:30AM: Very strong winds (like a tornado)
    9:25AM: Galvanized steel roof on next-door neighbor collapses
  • July 16, 11:30AM-2:30PM: I was able to sleep with battery-powered fan
  • July 16, 6PM: My Dual-SIM Android-based mobile phone's battery died.
  • July 16, 7:30PM: Changed lead-acid battery pack in rechargeable fan/lantern.
  • July 16, 9PM: I allowed my wife to use rechargeable fan/lantern as she has work at 6AM, next day.
  • July 17, 3:30AM: I couldn't sleep because my portable, battery operated fan kept stopping and my feet kept hurting.
  • July 17, 5AM: My wife left for work. I opted out from having my wife take my phone to her office for charging. I went back to sleep.
  • July 17, 10:30AM: I had adobo and rice for brunch.
  • July 17, 3:15PM: I had adobo peanuts for merienda.
  • July 17, 6:30PM: Electrical power restored.
  • July 17. 6:40PM: I heard reports that sparks were coming from home, two houses away. I went outside and did not smell any fumes (burnt human, burnt wood, etc.)
  • July 17, 6:45PM: Electrical power temporarily interrupted due to wires being repaired by Meralco.
  • July 17, 7:00PM: Survived the power loss caused by Typhoon Glenda.

The Questionning Process...

As I laid on my bed, in my dark, hot & humid room, I looked at my electronic gadgets, such as my unpowered BeagleBone Black, unpowered Arduino-based thermometer on the wall, and my unpowered HDTV and my unpowered DSL modem, I began thinking about the future of my technical hobbies. High humidity shortens the life of semiconductors; without electrical power, there is really no way to protect them from damage by humidity, other than sealing them into air-tight bags. During a blackout (power outage), I don't have a way of powering any of my microcontroller development boards; mostly because cooling my body with electric fan is more important to me. During Typhoon Ketsana (Typhoon 'Ondoy'), I had experienced five days of no commercial electricity, but that was years before I got products from element14 and Mr. Fustini, so I had nothing to worry about. Now, Typhoon 'Glenda' had a big impact on me...

The BIG question I am now asking myself is, "should I continue on with my embedded systems development hobbies?" I'm raising this question because I have about hobby to go back to, it's called, listening to radio scanners.; which I have been listening to radio scanners for almost three decades. Also, I do have training for radio communications during emergencies.


Though I am no longer connected to any club, business, or agency that deals with emergency communications, I still maintain a state of readiness at all times. I prefer listening to my radio scanner(s) instead of listening to local AM/FM radio stations, because that is how I get most of my local news without being opinionated by a reporter. After 40 hours without commercial electricity, I was still capable of listening to the local authorities, hoping to hear when our power will be restored. The radio scanner, to me, brings "hope", which is probably why I kept it a hobby for almost 30 years. My first organization was REACT; when I became a HAM radio operator, I became part of ARES. The later part of my life, I became an independent, emergency assist alternative, emphasizing on my skill of emergency radio communications, exclusively.

The radio scanners I currently own, are:

The radio transceivers I currently own, are:

For legal reasons, I will not divulge the content of what I hear and/or record.

Would You Like To Chat With Me?

My blogging days are now over and my posting, in social networking services, is next to expire. I have moved onto the following chat services:


For just PHP ₱20/day (USD $0.46/day), I can chat in KakaoTalk, Viber, Whatsapp, WeChat and Line. Presently, I don't use Whatsapp and Line. For Viber, add my mobile number. If you add me, I can tell you what's happening to me when I can't post through the normal channels. Also, those that have enjoyed my technical blog posts can now inquire about my ongoing technical projects or prepaid technical support; (postpaid and "I owe u's" are not accepted). Prepayment is only necessary for any kind of technical support, and there are a few ways to pay. Non-technical support conversations do not require a payment of any kind.


Recently, I had signed up with KakaoTalk because I can use the service with my ABS-CBNmobile prepaid SIM. Until October 2014, I can chat in KakaoTalk for free without load! This is a benefit because it is now the rainy season in Philippines, and we just endured a major typhoon.


Just scan my QR Code to quickly add me into KakaoTalk. Once you add me, you will be able to contact me, even when I'm offline, but online with ABS-CBNmobile.


From LinkedIn, I discovered WeChat and began to use it. I am not looking for employment, however, I am looking for new friends to chat with.


Just scan my QR Code to quickly add me in WeChat.


Believe it or not, Viber is now running on most of my Android devices, but, as of this writing, my only chatmate is a person from mainland China.


Thanks for Reading!

Thanks goes out to those that have enjoyed reading my technical blog posts in element14 community. Due to many invisible disabilities (such as chronic pain, rheumatoid arthritis, hypotension with tachycardia, hypoglycemia, metatarsalgia, Achilles tendinitis, Peripheral neuropathy, calcaneal spurs and others), I had to discontinue writing technical blog posts. My hands hurt from writing code and typing, so writing blog posts is the first to vanish. Thanks also goes out to those that had sent me monetary donations that had encouraged me to keep my blog in element14 community. Due to Typhoon 'Glenda', I am now making choices in my best interest. Thanks, again for Reading, and have a Nice Day!


Marcos "Kuya Marc" Miranda

Retired Technical Blogger & Disabled HOBBYist


Graphical User Interface: Not Needed!

For this blog post, I decided to do a relatively simple embedded systems development project, using minimal parts and memory resources. The goal of this project, is to write, compile, and flash firmware using a headless Linux system; for example, writing the code on an Android Tablet PC and then compile/flash the firmware on a BeagleBone Black to target device.

This is NOT Arduino!

Though this project can easily be replicated using the Arduino IDE, my intent of this project to make a two LED flasher without being dependent on any third party libraries, and to compile using the C Programming Language. The target device for this blog post is the ATMEGA168V-10PUATMEGA168V-10PU microcontroller at 1MHz internal clock frequency (no crystal needed). I am using the Atmel AVR ISP mkIIAtmel AVR ISP mkII for flashing the compile firmware.


The Dual Output Breadboard Power Supply being used, came from Drew Fustini. The solderless breadboard being used, was recently purchased from Alexan Commercial in SM Megamall (Philippines).

The Source Code

The Makefile

Notice: AVR fuses are programming the microcontroller as a 1MHz device.

Compiling & Flashing

To compile my code, you will need avr-libc, binutils-avr, gcc-avr and avrdude pre-installed. Simply run make full and, in my case, everything is successfully programmed.

Thanks for Reading!

Nowadays, I just do simple LED projects to excersize my bit manipulation skills for other, often more complex projects.


To encourage me to write more blog posts, such as this one, please make an optional monetary donation into my U.S. PayPal account. Though monetary donations are optional, making a donation will get me away from my Hay Day game and encourage me to write a blog post. Thanks again for Reading and Have a Nice Day!


Marcos "Kuya Marc" Miranda

Disabled Hobbyist & Retired Blogger


Via Access Frontier Tech, Inc.

While the Raspberry Pi is now being sold in the Philippines, everyone I tell about the BeagleBone Black has no idea what I'm talking about. Even BeagleBoard.org, as of this writing, does not have any details on how to buy a BeagleBone Black in the Philippines.

Ordering the BeagleBone Black...

The 4GB BeagleBone BlackBeagleBone Black has the element14 Order Code 2422228, and can be ordered from:

As of this writing, the current price is P2,869.50 plus shipping. As of October 2012 (when I got my Raspberry Pi from them), the order has to be over P3,000.00 for free delivery; AFTI requires 50% cash deposit up-front (either in person or via bank deposit) and 50% cash upon delivery. As of this writing, AFTI is closed today since yesterday was Independence Day in the Philippines.

For the free delivery option, I recommend the BeagleBone Black enclosureBeagleBone Black enclosure (element14 Order Code 2356330) for P350.40.

Please note, Access Frontier Technologies, Inc. (AFTI) is the authorized distributor for element14 Philippines. They order from element14 Singapore and they send out the orders (to element14 Singapore) on Friday afternoon, call AFTI for your delivery times. AFTI is a middleman supplier, they do NOT stock items for sale.

Thanks for Reading!

Hopefully, soon, there will be more BeagleBone Black users in the Philippines. I plan to offer free BeagleBone Black setups for local Filipino residents that purchase the BeagleBone Black. Thanks again for reading and have a nice day!


Marcos "Kuya Marc" Miranda

Disabled Hobbyist & Retired Blogger


On The Fly, Phoneme-to-Speech Conversions!

Though next month, July 2014, will mark a year of my SpeakJet synthesizer development, my interests and passion into speech synthesis extends to over three decades; the accumulation of my advanced, phoneme-to-speech skills. Today is a milestone for me, I can now use the phonemes from the SpeakJet user manual for outputting robotic speech; there is no longer a need for me to convert to phonemes to numbers, as it is now done, transparently.

The above video was done on a Samsung digital camera and then converted using WinFF to .mp4 video. I am not used to making videos with this camera. For this video, I pointed my camera to my LED TV screen showing the shell box output; I would have pointed it to my BeagleBone Black, but it doesn't physically move for a video recording. Audio volume is kind of low, but I think it is still understandable.


The Wonderful Source Code

For my source code to work, you must obtain my professional grade SpeakJet parsers and then modify the source of sjs.c to accomodate a delay function when SpeakJet is talking. I am using the SpeakJet cape with my BeagleBone BlackBeagleBone Black (from Drew Fustini).

My BeagleBone Black


My SpeakJet Projects on my BeagleBone Black


My SpeakJet Projects are NOT Speech Recognition Projects!

Please read Speech Synthesis is NOT the same as Speech Recognition for more details. No matter how much I express it, there are always someone that will ask if my speech synthesis projects will accept voice commands.

Thanks for Reading!

For more information about what my BeagleBone Black is doing, please read The Talking BeagleBone Black is Kuya Marc's Retirement Toy.


To encourage me to write more blog posts, such as this one, please make an optional monetary donation into my U.S. PayPal account. Though monetary donations are 100% optional, making a donation will get me away from my Hay Day game and encourage me to write more technical blog posts, including ones with more source code. Donations also encourage me to answer support questions. Without those donations, I would rather make my Hay Day farms better than to write a technical blog post. In one Hay Day game, I am at Level 17 and on another, I'm at Level 33. As a retired blogger (due to medical disabilities), any post I make could be my last... Thanks again for Reading and Have a Nice Day!


Marcos "Kuya Marc" Miranda

Disabled Hobbyist & Retired Blogger


It Only Took 31 Years...

Over three decades ago, I had the dream of running a speech synthesizer that I built with my own hands. During that time, I was entering the seventh grade at the old location of Kellogg Middle School. Speech synthesizers at that time, were too expensive and spoke English words a few people, such as myself, understood. Thirty-one years ago, my dad brought me to the Philippines for the very first time, and everyone in the Philippines spoke the foreign language of Tagalog; at that time, I can only understand English. An episode of the Whiz Kids TV series showed Ralf talking; that was when I really wanted to do the same thing. I wanted to have my own, standalone speech synthesizer. I was never satisfied with the software-based speech synthesizers, never!

The Tagalog Language

In 1986, when I was taking Spanish at Shorecrest High School, I quickly learned Spanish is part of the Tagalog language. I came up with the idea of a Tagalog speech synthesizer during my second visit to the Philippines in 1987, because such a device does not exist. I started learning Tagalog phonology at the age of 17, and I was learning it on my own from the resources available from the old Shoreline Public Library and the language books I bought when I was in the Philippines. Before I graduated high school in 1988, I got my Amiga 500 speaking some Tagalog words. Though my Tagalog speech synthesis project using an English-only speech synthesizer was not that understandable, my Filipino dad and my classmates, especially my Filipino classmates, were impressed at my effort to make a computer speak the Tagalog language. As I learned the Tagalog language on my own, I was taking notes on how I would make a computer speak the Tagalog language. Over the decades, I have made multiple attempts are making a variety of software-based speech synthesizers speak the Tagalog language. When I worked at Computer City (now closed) in Shoreline, I received an NFR (not for resale) copy of Dragon NaturallySpeaking [a couple of years before it was bought out by Lernout & Hauspie]. I did meet a programmer from Dragon, whom helped me get NaturallySpeaking to speak some Tagalog words, but they did not have the financing to add Tagalog to their commercial products.

The SpeakJet Microcontroller


When Good Samaritan Drew Fustini sent me the SpeakJet VoiceBox Shield Retail from SparkFun Electronics, he really had no idea of what to expect. Boom! I have just kicked off the creation of the World's First Tagalog Speech Synthesizer with the development of Robotic Tagalog using the SpeakJet microcontroller! That was the moment I really needed to expand... SparkFun sent me three SpeakJet chips and a TTS256 chip for my speech synthesis projects, via sponsorship. Circuitco sent me the SpeakJet Cape for my BeagleBone BlackBeagleBone Black (also from Mr. Fustini). Double Boom! My SpeakJet projects spiked sales at SparkFun, and numerous people from around the world are now making their own SpeakJet projects! The biggest impact I did, was interface SpeakJet to every microcontroller and every microcontroller development board in my possession, including those that Mr. Fustini sent me, and made those microcontroller chips talk without a computer! And then I released my professional-grade SpeakJet parsers... Now, people all around the world, can make the SpeakJet microcontroller speak their native language, if its not English.



Why SpeakJet?

The Festival Speech Synthesis System fails for me for two reasons:

  1. Festival cannot effectively speak the Tagalog language.
  2. Festival cannot run on microcontrollers without an operating system.

So, the SpeakJet microcontroller entered my realm and has proven to be more effective in speaking the Tagalog language, and besides, SpeakJet can run without an operating system. I built my SpeakJet parsers from the ground up, allowing for dictionary creation in any language. A reason why I chose SpeakJet is to be able to have speech synthesis in rural communities in the Philippines; places where electrical power isn't stable and it doesn't rely on an operating system for speech. Though it is somewhat expensive, the SpeakJet is more effective at speaking non-English languages.


As it seems, most users of speech synthesizers are doing just text-to-speech (TTS) projects, using the default language available. Many people had informed me of numerous TTS chips being "better" than SpeakJet, but can not tell me if it speaks Tagalog phonology better than SpeakJet. Using phonemes, I am able to make SpeakJet speak the Tagalog language.

Closed-Source: My Tagalog Speech Synthesis Dictionary

Routinely, I am adding more Tagalog words to my Tagalog speech synthesis dictionary. Earlier this year, I had planned on making my Tagalog speech synthesis dictionary available as open-source, but insufficient monetary donations said otherwise. Though my SpeakJet parsers are open-source, my Tagalog speech synthesis dictionary remains as closed-source, and not for sale. I have had some offers (one being a mobile GPS company) for my Tagalog speech synthesis dictionary, but I rejected all of them, because it is not for sale.

Speech Synthesis is NOT Speech Recognition

It's 2014 and people still believe talking and listening are the same thing! People still ask me if my speech synthesis projects accept voice commands. People have asked me where the microphone is in my speech synthesis projects. For those that remain confused, I wrote Speech Synthesis is NOT the same as Speech Recognition, to help understand that you don't talk with your ears and don't listen with your mouth. I know it sounds sarcastic, but it is a reality that there are people in this world that don't know the difference between synthesis and recognition.

The Future of My Speech Synthesis Projects

My self-proclaimed title is now Embedded Speech Synthesis Systems Developer, combining my hobby work with Embedded Linux and Speech Synthesis systems. I am not earning any money from doing these projects; which is why I frequently post my PayPal donation link. I am also a disabled person, which means I cannot go job hunting or accept employment. Typically, I work my speech synthesis projects on a daily basis to pass the time by, while having to eat very low-priced meals (all I can afford on disability income). Only I wish my accomplishments in speech synthesis made me a rich man, but that is a dream world. Yes, I am a speech synthesizer developer, and no, I have no speech synthesizer products to sell. In my dream world, someone sent me 100 SpeakJet microcontrollers and told me to start building for profit; but that is only a dream.

Thanks for Reading!

My idea for writing this blog post, is to have something to link to my LinkedIn profile; which will explain some redundancy in this post from other blog posts I have written. I am retired from blogging, due to my disabilities that are affecting my physical body, so I will only write blog posts when I feel like it or if there is something I want to specify to the world.


To encourage me to write more blog posts, such as this one, please make an optional monetary donation into my U.S. PayPal account. Though monetary donations are optional, making a donation will get me away from my Hay Day game and encourage me to write a blog post.

2014-06-07 09.55.33.png

Thanks again for Reading and Have a Nice Day!


Marcos "Kuya Marc" Miranda

Disabled Hobbyist & Retired Blogger


Synthesis & Recognition have Different Meanings!

For over three decades, I have had the interest and hobby of speech synthesis. However, over the years, more specifically during the past year, there has been too many people thinking I am doing projects related to speech recognition; I am not sure if its ignorance or stupidity as to why people don't know the differences between the two words, synthesis and recognition. There has been a few people that argued with me, claiming speech synthesis and speech recognition are the same meaning. I am just tired of explaining the differences and so I decided to write this blog post.

I do Speech Synthesizer projects!

Ever since I heard Ralf from the 1983 Whiz Kids TV series, I had the dream of making my own speech synthesizer (speech-generating device). Also during that time period, my Sunday School teacher had a TI-99/4A and it talked! That was the beginning of my interest in working speech synthesizer projects. In 1987, my dad bought me the Amiga 500 as an early high school graduation gift; AmigaOS speech synthesis kicked off my interests. My speech synthesis projects are also known as audio output devices; uses a speaker and not a microphone.

I do NOT do Speech Recognition projects!

It's the year 2014 and I still have to tell people I am not doing speech recognition projects! Nowadays, I really have to emphasize this because there are still too many people, asking me to help them with their speech recognition projects. Some people have been brave enough to ask me for a recommendation for the best speech recognition system. Speech recognition projects are also known as audio input devices; uses a microphone for input and not a speaker. As a gentle reminder, I do not do any speech recognition projects.

Thanks for Reading!

Hopefully, this blog post will clear up the confusion too many people seem to have. I've hot-linked to Wikipedia and to an online dictionary for those that want to have further study the differences between synthesis and recognition.


To encourage me to write more blog posts, such as this one, please make an optional monetary donation into my U.S. PayPal account. Though monetary donations are optional, making a donation will get me away from my Hay Day game and encourage me to write a blog post. Thanks again for Reading and Have a Nice Day!


Marcos "Kuya Marc" Miranda

Disabled Hobbyist & Retired Blogger


Let's Start a Trend!

Hello World! My standard & traditional, text-based brag screen is from my past (1993-1997) with Sun Solaris & BSD Unix, when MirandaSoft, my computer business, was trying to be established in the competitive OS world at that time. The history of my text-based brag screen, it was only intended for computer expos, long before the Internet was popular. The original structure of my brag screen was:

  1. My Name, My Title, My Location
  2. My Project Description
  3. My Hardware Specifications
  4. Dates showing hardware purchase, project start, OS installation

My brag screen was normally printed onto paper via a dot-matrix printer, and became the official cover page of MirandaSoft's portfolio, which was presented, exclusively at computer expos and similar events. It became MirandaSoft's standard and other agencies had to accept MirandaSoft's specialized standards. MirandaSoft's standards, sadly were never accepted by any national standard, however, the ideas behind my brag screen gave hints to Microsoft, whom later absorbed my brag screen ideas into a few software projects.

Starting in 1998, after I was blessed by Red Hat, the MirandaSoft brag screen vanished!

2013: Resurfaced Brag Screen

Last year, when I was blogging a lot in element14 community blogs, I brought my text-based brag screen back to life, however, it was old-fashioned since it was only displaying static data. I made many attempts to make it look better, but not many people liked it.

2014: The Addition of Dynamic Data

This coming July 2014 will mark 17 years of my Linux experiences, and my static-based, text-based brag screen wasn't causing any interests. As people were showing off their graphical Linux desktops, showing dynamic information, I had to remake my text-based brag screen from scratch! I saw Linux_Logo, but I wanted to be more creative. My disabilities are now getting the best of me, and so, I have to do my best work before my hands are no longer useful. I needed my brag screen to show real-time, dynamic data, and so I did it!

The Brag Script

Advisory: This is an advanced BASH script.

echo "Attempting to get the weather of Pasig City..."
pasig="$(wget -q -O- "$URL" | awk -F\' '/acm_RecentLocationsCarousel\.push/{print $2": "$16", "$12"°" }'| head -1 | sed -e "s/^.* //")"
echo "Checking Headset"
btheadset=$(bt-device -i 6C:5D:63:03:CA:0E | sed -n -e 's/^\s*Connected: //p')
if [ $btheadset -eq 1 ]
  btheadsetc="Bluetooth Stereo Headset is Online."
  btheadsetc="Bluetooth Stereo Headset is Offline."
ps cax | grep mplayer > /dev/null
if [ $? -eq 0 ]; then
  musicplaying="Digitally Imported Radio is Playing."
  musicplaying="Digitally Imported Radio is Not Playing."
echo "Checking devices"
ping -c1 seattle | grep "ttl=" >/dev/null 2>&1 || raspberry="Offline"
ping -c1 galaxytab | grep ttl >/dev/null 2>&1 || galaxy="Offline"
ping -c1 androidtv | grep ttl >/dev/null 2>&1 || androidtv="Offline"
set -e
tput bold
cat ~/intro.txt
tput sgr0
echo -e "Marcos Miranda received me, the BeagleBone Black, exactly "$(( ($(date +%s) - $(date -d 2013-07-13 +%s)) / 86400))" days ago."
echo -en "Running Debian 8, installed "$(( ($(date +%s) - $(date -d 2013-11-15 +%s)) / 86400))" days ago. Powered by the "$(uname -r)" Kernel.\n"
echo -e "Today is "$(date "+%A, Week %-U, Day %-j of The Year %Y in the Philippines.\n")
echo -e $btheadsetc" "$musicplaying
echo -e "Galaxy Tab 3 is "$galaxy". Android TV is "$androidtv". Raspberry Pi is "$raspberry".\n"
echo -e "My "$(cat /proc/cpuinfo | grep "^Hardware" | awk '{print $4}')" CPU is a "$(sed -n -e 's/model name.*: //p' /proc/cpuinfo)" @ "$(sed -e "s,000,," /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq)" MHz (Maximum "$(sed -e "s,000,," /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq)" MHz)"
echo -e "My CPU temperature is "$(sensors | sed -n -e 's/temp1:  *//p')"and \c"
echo -e "Free Memory is "$(sed -n -e 's/MemFree: *//p' /proc/meminfo)" out of "$(sed -n -e 's/MemTotal: *//p' /proc/meminfo)"\n"
df -h | egrep "File|1p2|0p1" --color=never | sed -e "s/mmcblk1p2/Pinoy    /g" | sed -e "s/mmcblk0p1/Pinay    /g" | sed -e "s/microSD/Philippines/g"
tput bold
echo -e "\n        The current temperature of Pasig City, Metro Manila is +"$pasig"C."
tput sgr0

Thanks for Reading!

For my brag script to work for you, you will need to modify nearly every attribute, because nobody else has an identical BeagleBone BlackBeagleBone Black configuration as me. As I'm not providing a tutorial on my brag screen script, I am hoping Drew Fustini can assist in making a tutorial for other BeagleBone Black users. I customized my brag screen's output, so it won't look like anyone else's BeagleBone Black. The intro.txt file is a simple figlet with added text. The names of seattle, galaxytab, and androidtv are IP aliases defined in /etc/hosts. For the CPU temperature, I installed lm-sensors. Please make sure you're not using my name in your brag script, unless you wish to give me credit.

Thanks again, for Reading and Have a Nice Day!


Marcos "Kuya Marc" Miranda

Disabled Hobbyist & Retired Blogger


The Linux Kernel: Upgrading via Scripts

Hello World! After been using RPI-UPDATE on my Raspberry Pi, I wanted to do the same on my BeagleBone Black. Before I start, I must mention that my BeagleBone BlackBeagleBone Black is running Debian 8 Linux in headless mode. Frequently, I write BASH scripts, lots of BASH scripts, to simplify my use of my BeagleBone Black, especially when I use JuiceSSH Pro on my Samsung Galaxy Tab 3. This blog post presumes you know how to work BASH scripting under the Linux command-line interface (CLI).

First, I wrote a script to inform me of the latest kernels:

wget -nd -p -E https://rcn-ee.net/deb/sid-armhf/LATEST-omap-psp -O ./LatestBBBKernels.txt
cat ./LatestBBBKernels.txt

An example output look like this:

WARNING: combining -O with -r or -p will mean that all downloaded content
will be placed in the single file you specified.

--2014-04-02 09:29:45--  https://rcn-ee.net/deb/sid-armhf/LATEST-omap-psp
Resolving rcn-ee.net (rcn-ee.net)...
Connecting to rcn-ee.net (rcn-ee.net)||:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 231 [text/plain]
Saving to: ‘./LatestBBBKernels.txt’

100%[==========================================================>] 231         --.-K/s   in 0.001s

2014-04-02 09:29:47 (398 KB/s) - ‘./LatestBBBKernels.txt’ saved [231/231]

FINISHED --2014-04-02 09:29:47--
Total wall clock time: 1.1s
Downloaded: 1 files, 231 in 0.001s (398 KB/s)
ABI:1 TESTING http://rcn-ee.net/deb/sid-armhf/v3.13.6-bone8/install-me.sh
ABI:1 STABLE http://rcn-ee.net/deb/sid-armhf/v3.8.13-bone43/install-me.sh
ABI:1 EXPERIMENTAL http://rcn-ee.net/deb/sid-armhf/v3.14.0-rc8-bone0/install-me.sh

Next, for this blog post, I'm only concerned about the STABLE kernel, so I wrote an automated BASH script to be executed under the root account:

set -e
wget -nd -p -E https://rcn-ee.net/deb/sid-armhf/LATEST-omap-psp -O ./LatestBBBKernels.txt
echo -e "#!/bin/bash" > download.sh
echo -ne "wget -c " >> download.sh
sed -n -e 's/ABI:1 STABLE //p' LatestBBBKernels.txt >> download.sh
echo "sh ./install-me.sh" >> download.sh
chmod +x download.sh
sh ./download.sh
rm LatestBBBKernels.txt

Though I can't show an example output at this time, I frequently use the above scripts to know if or when to upgrade the Linux Kernel.

After rebooting the BeagleBone Black and verifying the new stable kernel is working, you will need to do some cleanup. Again, I wrote another BASH script to help me do the necessary cleanup (I've disabled operations because choices may be different for you):

set -e
# rm -r /root/install-me.sh
# rm -r /root/download.sh
# rm -rf /boot/*-bone41
# rm -rf /boot/uboot/*bak
# rm -f /boot/uboot/tools/restore_bak.sh
# rm -rf /lib/modules/3.8.13-bone41
# apt-get remove --purge -y linux-image-3.8.13-bone41
# apt-get clean all

To check what kernels are installed: dpkg -l | grep linux-image

Thanks for Reading!

My BeagleBone Black, operating full-time, originally came from Drew Fustini in the USA. As of this writing, my BeagleBone Black is operating at 80% autonomously using a variety of BASH scripts. Thanks for Reading and Have a Nice Day!


Marcos "Kuya Marc" Miranda

Disabled Hobbyist & Retired Blogger


Embedded Speech Synthesis is FUN!

Nowadays, while living in retirement (due to medical disabilities), I get to use my hobby of linguistics in making the tangible, SpeakJet speech synthesizer to speak anything to my own satisfaction, by use of phonemes. As a reminder to all, this blog post is of my hobby of speech synthesis and has nothing to do with speech recognition of any kind; my projects use a speaker, not a microphone.

For the curious, all of my five (5) SpeakJet microcontrollers were donated to me. Starting with the VoiceBox Shield from Drew Fustini. My next three (3) SpeakJet microcontrollers came from SparkFun Electronics, whom sponsored me. And finally, the SpeakJet Cape from Circuitco. The SpeakJet Cape is for my BeagleBone BlackBeagleBone Black, also from Mr. Fustini, and it kicked off my full-service Linux-based SpeakJet development projects.


SpeakJet Developmental Parsers


My parsers are used for rapid application development (RAD) of SpeakJet applications. My "professional-grade" parsers remain as closed-source, however, my free, open-source parsers are still available. I'm hoping, soon, depending on inbound monetary donations into my PayPal account, I will make my professional-grade parsers as open-source.

Implemented into my Brag Screens




Security Idea: Speakable Passwords!

Here is an excellent feature of the SpeakJet microcontroller:

Phrases may call other phrases, sounds or controls, with nesting up to 3 levels deep.

Yes, the SpeakJet can store phrases, which can include passwords to be spoken. The great security part of this concept is, those stored phrases cannot be downloaded, therefore it is impossible for software to extract phrases, such as passwords. Software can only be used to call a phrase (a password) by it's location ID, but not be able to retrieve it. That means, a speakable password, stored as a phrase in SpeakJet's EEPROM will never be revealed in software. The stored phrase doesn't have to be the password, itself, it can be a reminder of what the password is. Since SpeakJet EEPROM data can't be extracted through the serial port, it is simply not vulnerable. And, what's more interesting, is that the SpeakJet microcontroller can be a standalone password reminder or announcer, with push buttons, etc., without having a serial port connection to any mCU/CPU. That is "security to the max!"

FAQ: Why Not Use Festival?


The Festival Speech Synthesis System is an excellent, British-made, software-only speech synthesizer that contradicts open-source hardware development, therefore it cannot be used by fine microcontrollers, such as Atmel AVR, Microchip PIC, etc. At most, Festival would need to be run in "server mode" on a computer that requires an operating system and software would have to be written to control Festival using the GPIO pins.

SpeakJet as Assistive Technology

While most people with working eyeballs would never think of the SpeakJet as an audio output device as many think of it as a novelty item (like a talking clock), very few people have realized that the SpeakJet can assistive technology for visual impairment. What usually comes to mind when talking about blind people, is they can use a buzzer alert system or run Festival on the computer [as a screen reader], but they tend to forget about the persons found in the poor communities in third-world countries, such as the Philippines. When it comes to First World and Second World hobbyists and engineers, assistive technology projects are purposely ignored. To see proof of that, just check any hobby publication or media.

Here, as a medically-disabled American hobbyist living in the Philippines, I came up with the idea of connecting a SpeakJet microcontroller to an Arduino board, and make it speak Tagalog for blind people. [Fact: Not every blind Philippine person, in the Philippines, understands English.] My idea is an assistive technology project, and I have gone from concept to product! My wish to help the disabled, is what got me sponsored!

SpeakJet is Expensive!

At USD $25 a piece, "SpeakJet is Expensive" is the immediately thought when thinking of it as a novelty item. But, if you think SpeakJet is expensive, then look at the commercialized competition:


The Text-to-Speech World language Chip Set Module TTS-EM-HD2 sells for USD $330! TextSpeak has history dating back to 1991. The TTS-EM-HD2 module consists of a microcontroller, an EEPROM, and some discrete components. The most important, and, typically the most expensive part of that module, is what's stored on that EEPROM. That EEPROM usually consists of collaborated data, composed of encoded phoneme-to-speech rules, as well as, a language-specific dictionary (for text-to-speech operations). Where did those original encodings come from? Usually from hobbyists and/or volunteers, before it went to engineers for further development. I'm only guessing, but that has been the trend over the decades. Overall, what's stored in that EEPROM is usually the result of months, years, decades of research.

Now, back to the SpeakJet, which is just a microcontroller without an EEPROM for TTS operations, the SpeakJet is a good price to learn how commercial speech synthesizer companies began. Though you can add the TTS256 chip for USD $22, it won't make it professional grade, but it will point you in the right direction. Overall, if you think about it, the SpeakJet is a starter-point for those that want to enter the world of speech synthesizer development, open hardware style.

Fully Programmable!

Regardless of your programming skills, the SpeakJet is a great way to learn computer programming and/or strengthen up your programming skills. If you ever wanted to learn the origins of the Universal Serial Bus (USB) or want to practice with serial I/O, the SpeakJet is the perfect candidate. I am able to work the SpeakJet using the C programming language and the Python programming language, and that means, any programming language that can manipulate serial I/O can work the SpeakJet. In addition, the SpeakJet has GPIO pins to control and monitor the SpeakJet, itself.

Thanks for Reading!

This blog post may be my last blog post because I have retired from blogging due to arthritis pain in the joints of my fingers. SpeakJet speech synthesizer development is my retirement venture; for those that want to know more or wish to help out, please visit my laboratory page. Thanks again for reading and have a nice day!


Marcos "Kuya Marc" Miranda

Retired Blogger


The Time has Come!

Hello World! When I first wrote an HTML page using Microsoft Notepad in the Fall of 1995, I never thought I never thought I would ever see the end of posting articles for other to see. From being a self-trained webmaster to a freelance blogger in a matter of 18 years, a retirement venture came up (an opportunity to retire) and so, I took it. I've already retired from being a computer professional due to medical disabilities and I've been looking forward to moving on with my life to do something that is more fun and more relaxing to me. For those that are wondering, my blogging is really ending because arthritis has engulfed the joints of my fingers, to the point that I cannot type a lot; even my computer programming abilities are affected, too.

My Retirement Venture


Whereas I have taken on the world's most boring hobby, I want to leave the social networking scenes with doing something unique. I did not choose the speech synthesis hobby because there's no competition, I chose it because I have the hobbies of linguistics, digital electronics, and programming. In other words, I want to make something of my life, by being creative in my own way. Though I'm not a so-called "artist", my style and talents are a demonstration of my artistic ability and it doesn't matter [to me] if other people don't notice what I'm doing. When Drew Fustini, a good Samaritan, gave me the VoiceBox Shield, I immediately knew the SpeakJet microcontroller is my "way out". When SparkFun Electronics chose to sponsor me, I immediately knew my "way out" choice is my destiny. And then, the SpeakJet Cape from Circuitco became icing on the cake.

Building something tangible is much better than living in the virtual world! In today's world, it seems everything has to be "virtual" so it has to be done by software alone. Well, I disagree with what today's world thinks! I prefer creativity instead of being a copycat. I live the life of a developer and I prefer designing my own works. When I began announcing my SpeakJet idea, numerous people attempted to talk me out of it, by either force promoting a software-base solution (such as Festival or eSpeak) or suggesting a SpeakJet-alternative. I entered the door of opportunity labelled "creativity" and continued on with my SpeakJet idea. I live in the Philippines where creativity used to exist, but nowadays, people just buy and use. The SpeakJet is a tangible speech synthesizer which the self-fulfilling feelings can't be replicated by computer software.

Reporters will always exist and developers, such as myself, are creative in making things. Letting someone else report my creativity is much better than trying to do it, alone. "Yes, I like building stuff and that makes me feel good inside." But, I just cannot handle the stress that comes out of broadcasting my activities, so I figure, keep making and have fun, while let others do the broadcasting for me. I just want to make stuff; I don't want to worry about the reception (Likes and +1s, etc.). Not all developers broadcast their activities, soon I'll become one of them.

Thanks for Reading!

Thanks goes out to all of those that have sponsored me, to those that made monetary donations and will make monetary donations (in the future) to my PayPal account, for my current and past blog posts. My fingers hurt and my ability to blog is greatly hindered; it's arthritis and it's not reversible. Working on speech synthesizer technology is my exiting hobby for which is something I can do. For those that would like to see me make blogging attempts once in a while should visit my speech synthesizer lab page and make a PayPal donation. I have the idea of going out in the real world to meet with blind people, demonstrating my speech synthesizer projects while notifying the news media reporters. Thanks again for reading and have a nice day!


Marcos "Kuya Marc" Miranda



Using the New SpeakJet™ Cape!

Greetings from The Philippines! After a week spent on sick leave, I have finally got my latest SpeakJet development system updated on my BeagleBone Block; this time, I am using the new SpeakJet Cape from Circuitco! This new SpeakJet Cape works well with my SpeakJet parsers! My SpeakJet parsers allow for rapid application development (RAD) without the use of the Windows-only Phrase-A-Lator. Though I'm working on closed-source parsers at this time, my free, open-source SpeakJet parsers are still available.


As you can see, I am running Debian 8.0 (Jessie) on my BeagleBone Black. In addition to SpeakJet development, I also have Festival Speech Synthesis System and eSpeak installed to satisfy those "why not use [SpeakJet alternative] instead" questions. Besides, I am only developing the Tagalog speech synthesis dictionary for SpeakJet, temporarily halted for Festival. So, for those that just like to copy and use software-based speech synthesizers, my speech synthesis dictionaries won't work for you.


How I Configured It

First, I had to get the serial port working, here's my uEnv.txt file:

Next, thanks to a good referral, I used the GPIO Header site to get P9_18 working for me.

I added that script to my /etc/rc.local file for automatic configuration when booted/rebooted. During power-up, my BeagleBone Black announces, "SpeakJet Cape is Ready!" Yes! In addition to compiling my own SpeakJet parsers, I am also compiling my own SpeakJet applications!

The SpeakJet Cape by Circuitco


The Configuration


Thanks for Reading!

My speech synthesizer laboratory is now in full operation, with the SpeakJet as the center of attention. My BeagleBone BlackBeagleBone Black is courtesy of Drew Fustini. The SpeakJet microcontroller on the SpeakJet cape is my 5th SpeakJet microcontroller! Thanks again for reading and have a nice day!


Marcos "Kuya Marc" Miranda


It's Back to C!

Finally, I have figured out how to write universal C code to program the SpeakJet microcontroller that compiles to useful binaries. For today's blog post, I am satisfying three SpeakJet communities: Those with x86 Linux-based systems. Those with BeagleBone BlackBeagleBone Black boards. And those with Raspberry PiRaspberry Pi boards.


Demo Source Code

I write my source code using my x86 Linux-based laptop and compile it using gcc. Please read the notes within my source code for more information.

Thanks for Reading!

It only took me a while to figure out how to program the SpeakJet using the C programming language, exclusively without having to program it using an Arduino board. Thanks for reading and have a nice day!


Marcos "Kuya Marc" Miranda


A 4-Way Test?

For over three decades, speech synthesis has been my interest and now my full-time hobby. For today's project, I decided to use four available speech synthesis methods on my BeagleBone Black, showing off how each one sounds. When you view the video, it's noticable that the SpeakJet does not consume processor power from the BeagleBone Black's CPU; notice LED3 off when SpeakJet is talking.

Here are the command-line instructions I did to make this video:

espeak "MirandaSoft" ; echo "MirandaSoft" | festival --tts ; say "MirandaSoft"; sjs \Volume \127 \MM \Fast \IY \RR \Stress \AW \NE \DO \Fast \AW \Slow \SO \Slow \Stress \OH \FF \TT


For the demo, I used the following Linux-based applications:

  1. eSpeak
  2. Festival Speech Synthesis System
  3. Flite
  4. SJS - My SpeakJet Phoneme Speaker

Thanks for Reading!

Speech synthesis is one of my active hobby projects. My SpeakJet microcontrollers are courtesy of SparkFun Electronics. My BeagleBone BlackBeagleBone Black is courtesy of Drew Fustini. Thanks, again for reading and have a nice day!


Marcos "Kuya Marc" Miranda


Going Pro!

Nowadays, I'm focusing myself into doing speech synthesizer projects with the SpeakJet microcontroller, courtesy of SparkFun Electronics, whom sponsored me. Now, I'm also focusing on embedded development, migrating work from my Compaq Presario M2000 laptop PC to my BeagleBone Black. This makes it possible for me to develop SpeakJet applications, exclusively on the BeagleBone Black. For today's blog post, is a revised circuit between my BeagleBone Black and my SpeakJet circuit.


Now, what's a SpeakJet circuit with the best SpeakJet Phoneme Parser in the world?


My professional-grade SpeakJet Phoneme Parser is kept closed-source for several reasons; mostly because, as it seems, I'm the only HOBBYist that's working SpeakJet projects, full-time, as many others have simply abandoned SpeakJet for software-based speech synthesis applications. While others (that still use SpeakJet) depend on the SpeakJet User's Guide, public domain SpeakJet Dictionary, or even, Windows-only Phrase-A-Lator software, I'm developing my own parser(s) for rapid SpeakJet application development. In other words, my professional-grade SpeakJet Phoneme Parser fits the category of rapid application development, though my methods are unique in nature. My SpeakJet parsers are developed using the C programming language and compiled using GCC.

My SpeakJet Demo Code

Just this morning, I decided to pump up the skill level to advanced, since I'm now using my own professional-grade SpeakJet Phoneme parser for rapid development of SpeakJet codes. Formatting the source code for the Python programming language is done using Pype, whereas normal contruction is done using GNU nano in the Linux command-line interface (CLI).

Thanks for Reading!

Unfortunately, due to the neighbors' extremely loud karaoke machine, I could not do a [video] recording of today's project however, my BeagleBone BlackBeagleBone Black lives on. For more info of my SpeakJet projects, please visit my speech synthesizer laboratory page. Thanks again for reading and have a nice day!


Marcos "Kuya Marc" Miranda


Linux Kernel 3.10.13 LTS

In my home, my Raspberry Pi is just a couple of weeks from becoming a year old. Since I bought it from element14 Singapore, I have kept on keeping it's Linux Kernel up to date, so I can test my newly developed creations. As of today, my Raspberry Pi is running Linux Kernel 3.10.13 LTS.


That's the good news! The backups ate up some space on my SD Card.


As you can see, I only have 164MB of space available. Before the Kernel upgrade, I had 1.2GB of space available. I guess my 4GB SD Card is now too small for my Raspberry Pi; unless I delete the backup files.

How I Upgraded the Kernel

Overall, it was easy, but I don't recommend inexperienced Linux users to do it because, a newer Kernel can be fatal (worst case scenario). Here's what I did today:

  1. sudo apt-get install rpi-update
  2. sudo BRANCH=next rpi-update
  3. If no errors, then sudo shutdown -r now

After rebooting, I discovered I have a new Linux kernel. After testing out the new Kernel, I plan on removing the backups.

Thanks for Reading!

Earlier this year, I was compiling my own Linux Kernels for my Raspberry PiRaspberry Pi, but I've retired since then. Thanks for reading and have a nice day!


Marcos "Kuya Marc" Miranda