1 2 3 Previous Next


250 posts


An Arduino Presentation?

Well, no, I don't know how to do those. But being able to do an Arduino project using my HDTV's 22-inch LED TV screen is like I'm preparing for a classroom presentation of Arduino. As you can see, I am running Arduino 1.0.5 in my Raspberry PiRaspberry Pi. Newbies to Raspberry Pi will immediate say "Installing Arduino is EASY", but forgot to know that Raspberry Pi's repository still has arduino_1.0.1+dfsg-7_all.deb (dated October 3, 2012). Well, based on instructions from another site, I wrote another BASH script to simplify installation of Arduino 1.0.1, upgrade it to 1.0.5, and then install my preferred theme.txt file:

# Based on the following
# http://tech.cyborg5.com/2013/05/30/irlib-tutorial-part-3d-installing-the-arduino-ide-on-a-raspberry-pi/
sudo apt-get update
sudo apt-get -y install arduino
wget -c http://arduino.googlecode.com/files/arduino-1.0.5-linux32.tgz
tar zxvf arduino-1.0.5-linux32.tgz
cd arduino-1.0.5
rm -rfv hardware/tools
sudo cp -ruv lib /usr/share/arduino
sudo cp -ruv libraries /usr/share/arduino
sudo cp -ruv tools /usr/share/arduino
sudo cp -ruv hardware /usr/share/arduino
sudo cp -ruv examples /usr/share/doc/arduino-core
sudo cp -ruv reference /usr/share/doc/arduino-core
cd ..
sudo cp -v ./theme.txt /usr/share/arduino/lib/theme
rm -rfv arduino-1.0.5

Those that don't have their own theme.txt file in the same file will get an error, but you will get Arduino 1.0.5.

My Preferences Modifications...

Using nano, I modified the ~/.arduino/preferences.txt file with the following:


My Birthday Wish

My birthday in May 2014 is just around the corner and I wish I can have the Arduino RobotArduino Robot. I think I can program that from my Raspberry Pi. I'm thinking, I could probably try having tutor sessions with that configuration. But, that's only a wish; I don't have money for that.

Thanks for Reading!

Actually, I put Arduino IDE on my Raspberry Pi because my primary computer, the Compaq Presario M2000 laptop is now on death row, and my netbooks have small screens.  Thanks 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


Back to The Basics (Almost)

Today, I decided to do a relatively simple programming project.

Parts List

  • Linux-based computer (I used my Raspberry Pi)
  • AVR ButterflyAVR Butterfly
  • AVR DragonAVR Dragon
  • 6-pin ISP cable
  • Reliable USB Cable (between computer & AVR Dragon)

Software Needed

Reference Pinouts

The BASH Script

# Restore AVR Butterfly firmware using AVR Dragon
/usr/bin/avrdude -V -c dragon_isp -p m169 -Pusb -e \
-U flash:w:butterfly_app_rev07_and_boot_rev04.hex:i \
-U lock:w:0xef:m -U efuse:w:0xff:m -U hfuse:w:0x98:m -U lfuse:w:0xe2:m

The Output

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.16s

avrdude: Device signature = 0x1e9405
avrdude: erasing chip
avrdude: reading input file "butterfly_app_rev07_and_boot_rev04.hex"
avrdude: writing flash (15760 bytes):

Writing | ################################################## | 100% 7.00s

avrdude: 15760 bytes of flash written
avrdude: reading input file "0xef"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.41s

avrdude: 1 bytes of lock written
avrdude: reading input file "0xff"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.05s

avrdude: 1 bytes of efuse written
avrdude: reading input file "0x98"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.05s

avrdude: 1 bytes of hfuse written
avrdude: reading input file "0xe2"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.05s

avrdude: 1 bytes of lfuse written

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

Thanks for Reading!

Nowadays, programming is something I try to do as a hobby. Today's project was done on my Raspberry Pi, but will probably work on any Linux-based computer system. Thanks for Reading and Have a Nice Day!


Marcos "Kuya Marc" Miranda

Disabled Hobbyist & Retired Blogger


I Never Had the Amiga 1200!

According to Wikipedia, the Amiga 1200 was sold during the similar time period I was living in Anchorage, Alaska, USA. (1992-1995), but I was no longer into Amiga computer. As I recall, I didn't have my Amiga 500 since 1989 or 1990. Now, in 2014, I am able to emulate the Amiga 1200 on my Samsung Galaxy Tab 3 using the following software:

Here's how I configured my Amiga Forever Essentials using Amiga Forever Plus Edition:


Though my configuration is somewhat complex, the Amiga 1200, under emulation, has faster performance compared to running on my 700/900MHz netbooks.

The Screenshots...


The Configuration




Thanks for Reading!

Amiga emulation is a recent hobby of mine, that started during the summer of 2012. Now I have another Workbench 3.1 system. Thanks for Reading and Have a Nice Day!


Marcos "Kuya Marc" Miranda

Disabled Hobbyist & Retired Blogger


Bringing AmigaOS back to Life!

Based on my research, Amiga Computers were manufactured in the Philippines, but were never sold nor distributed in the Philippines. I have searched, left and right, and even asked some of my wife's officemates, whom are computer/IT people, about the Amiga computer and they have no idea what I'm talking about.


In Cyberzone of SM Megamall, I have shown the Amiga logo to numerous people, of all ages, and nobody recognizes it. After visiting numerous stores that sell old computers, nobody (here in the Philippines) have ever heard of the Amiga computer. That doesn't really tell me that the Amiga computer did not exist here, since after skimming numerous Amiga-centric websites, I have discovered the number of Amiga users in the Philippines are in the single digits. Maybe there were hundreds, long ago, but they all migrated to the USA. My wife grew up in the Philippines and been involved in the computer/IT world for some time, and she never heard of the Amiga computer.

Back in the late 1980's, I had the Amiga 500, but sadly, I have no photographic evidence to prove my memory of the past.

Breathing Life into the ASUS Eee PC 2G Surf...

For those that do not already know, I have the first mass-produced netbook, called the ASUS Eee PC 2G Surf, better known as the model 700. This is the model with a 2 GB solid-state drive and without camera and bluetooth modules. I'm the first & third owner of this netbook; I once gave it to my mother-in-law, but it's usefulness faded away. It's internal SD Card reader is now dead, and USB flash drives look funny.

Installing Debian 8 "Jessie"

Recently, I downloaded the Debian testing installer and used it to make a barebones Linux box; remember I'm limited on disk space on the 2G Surf. For this blog post, I won't go into detail about how I configured Debian 8 on my 2G Surf, but I will mention that I am using fluxbox as my X window manager.

Make the 1st Amiga in Pasig City

For those that don't already know, I like in the Philippines, in the City of Pasig. I don't think Pasig City ever had a living Amiga, though emulated, in the neighborhood before, so mine is the first!

Installing UAE

There are many Amiga Emulators available, however based on popular suggestions, I have decided to use FS-UAE. Here are the Debian packages I installed:

According to the FS-UAE download page, there are newer versions to install, however, when I installed the newest version of fs-uae-launcher, a huge amount of additional files had to be downloaded, defeating the purpose of having a fast Linux system. So, I went back to the versions in the repository, which works.

Amiga Forever Plus Edition

Without asking Cloanto, directly, I'm probably the only licensed user of Amiga Forever in Pasig City, if not the entire Philippines. For this project's blog post, Amiga Forever Plus Edition is needed. The Amiga Forever Plus Edition CD, when booted up on a PC, causes Workbench 3.X to be running. I wanted to be able to duplicate the process with my lite Debian 8 Linux installation.


In the Private folder on the CD image, I noticed the configuration file, af_boot.uaerc:

From that configuration file, I can see what files are needed:

  • amiga-os-3x0-a4000.rom
  • rom.key

And I can see what folders are needed:

  • /cdrom/Amiga Files/Shared/rom
  • /cdrom/Amiga Files/Shared/dir/System
  • /cdrom/Amiga Files/Shared/dir/Work

To me, that's the barebone information needed to reproduce the Workbench 3.X experience that's listed in the Amiga Forever Player's configuration:



As a reminder, the above two images are snapshots taken from my ailing Compaq Presario M2000 laptop (running Windows 7). The above two images are posted for references only.

Amiga 4000 with Workbench 3.X


After some serious tweaks, I was able to get a decent Workbench screen. Honestly, I had some difficulty in setting up my screen this way, specifically pointing out the high resolution settings. Remembering what I did on my Amiga 500, 25 years ago, is NOT easy!


Keep in mind, that my ASUS Eee PC 2G surf has a 7-inch LCD screen with a 2 GB solid-state drive and 512 MB RAM.


Running AWeb is the old-fashioned, cut and dry web surfing that I was used to, over a decade ago.


Here's the traditional clown picture to show off the colors of the Amiga 4000.


Yes, it seems to be running the 3.X ROM:

For those that would like to know more information, here's a helpful info page.

Amiga 4000 on my ailing laptop


My next goal is to use my wallpaper/background from my emulated Amiga 4000 on my ailing laptop for my healthy netbook. The Amiga Forever player has been a very helpful tool in configuring Amiga systems in Linux.

Thanks for Reading!

Lately, I have been working my Amiga projects since my ailing laptop (Compaq Presario M2000) will soon die as it is now on death row. My M2000 is the only computer capable of running Windows 7, and I am running Windows 7 Starter Edition to have more resources. Thanks for reading and have a nice day!


Marcos "Kuya Marc" Miranda

Disabled Hobbyist & Retired Blogger

Why Arduino Nightly?

When I visit Arduino Downloads page, I have noticed there are just too many download options.


As for me, I have the Arduino DueArduino Due from element14 and the only reason why I'd download Arduino 1.0.5 is for my Teensy 3.0 from Drew Fustini (admin). Also, the Raspberry Pi is limited to Arduino 1.0.5. I don't have the Intel Galileo nor the Yun.

Arduino Nightly on a Netbook

Fortunately, or unfortunately, depending on how you see it, I have two working netbooks, both with SVGA screens. To be productive in the Arduino environment on a small screen, I had to do some tweaks or hacks on the Arduino preferences file. Shrinking the screen wasn't an option as I prefer readability, making it useful. This image is from Debian 8.


Arduino Nightly in XGA Screens

With old hardware, I have to make do with what I currently have, as hopes for a new laptop have ended long ago. My laptop has a XGA screen. Though the default Arduino IDE configuration works OK, I prefer to be productive without using horizontal scroll bars.

Arduino Nightly on Debian 8


Arduino Nightly on Windows 7


Thanks for Reading!

I've been using the Arduino IDE since September 2010. Thanks for Reading and Have a Nice Day!


Marcos "Kuya Marc" Miranda

Disabled Hobbyist & Blogger

Running AmigaOS in 2014...

About 27 years ago, my dad bought me the Amiga 500 as an early high school graduation present, which I had for only a couple of years. I liked it, but I went to the Intel x86 platform, instead. Time went by and I did not go back to Amiga. Just a couple of years ago, I discovered Amiga Forever and that brough back a lot of memories of my time with my Amiga 500.


Thanks to Cloanto, I am able to restart my past hobby of Amiga computers. I recently mentioned to my wife, that the only people that knows the Amiga computer systems are people in our generation (ages 40+). I have only noticed a selected few from the younger generations, that are working Amiga.

AmigaSYS 4

Starting off, I ran AmigaSYS 4. This claims to be AmigaOS 4 Like, which is very new to me, since I have been used to AmigaOS 1.x series, though I have recently started learning AmigaOS 3.0/3.1. Though I have not done much with AmigaSYS, I am planning on using more.


AmiKit 1.6.7

As I have recently discovered, the people behind AmiKit are keeping the AmigaOS alive with Live Updates! Of all the operating systems from Amiga Forever, I think I like AmiKit the best! It's more what I'm looking for in an operating system.


Hopefully soon, I will be able to run AmiKit as my primary operating system.


Recently, I have been meeting quite a few people online that are using AROS. Though it looks to be a promising operating system, I haven't been able to do much with it. It looks to be a demo and nothing more. The boxes or windows can't be resized and icons become hidden after first use. The other day, I wasted an hour, searching Google on how to make AROS a usable operating system for me, however, I failed to do that. The AROS website claims it's not a complete operating system, so that means I would have to reinvent the wheel to make it work for me. At least with AmigaKit and AmigaSYS, I can be productive and not waste time in learning the operating system.


Why Bring Back the Amiga?

To the New Generations of geeks, Amiga computers and operating systems are antiques. As for me, I am tired of Linux, as newer Linux kernels are for technology I will never have. If someone were to assist me in getting AmiKit or AmigaSYS running on my Raspberry Pi and/or BeagleBone Black, I would be very happy.

Thanks for Reading!

Long Live the Amiga! Have a Nice Day!


Marcos "Kuya Marc" Miranda

Disabled Hobbyist & Blogger



Programming The SpeakJet Cape

This blog post is exclusively for those that have the SpeakJet Cape or wish to build it. Very recently, I started working the GPIO pins in C, Python, and in BASH, and needed a chart to help me rapidly develop my talking applications. As many already know, the GPIO pins of the BeagleBone Black have different "directives", mostly dependant on the programming language and/or module used.


The above simple BASH script allows me to test the pins for activity. It was easier to write this code in BASH than in C or Python.

Thanks for Reading!

Nowadays, most of the time, I am writing scripts and/or compiling code to simplify my typing, as to avoid pain caused by rheumatoid arthritis in my hands and fingers. Thanks for Reading and Have a Nice Day!


Marcos "Kuya Marc" Miranda





For the above screenshots, I am using my Android HDTV with JuiceSSH Pro. Normally, I use JuiceSSH Pro on my Samsung Galaxy Tab 3.

Thanks for Reading!

Sorry for not being able to write detailed blog posts, like I used to, but the rheumatoid arthritis in my hands and fingers are bothersome, especially when typing. Thanks for Reading and Have a Nice Day!


Marcos "Kuya Marc" Miranda


I never thought my Raspberry Pi can do this!

Previously, I have been using my ICOM IC-PCR1500 Wideband Communications Receiver with GRIG in Linux.


But then, I discovered PCR AnyWhere and it can do what I want, better, through other computers on my local area network (LAN).



Running the PCR AnyWhere server on my Raspberry Pi frees up valuable resources on the client computers, allowing for low-end devices to hear USB audio piped through the LAN.


Technically, I can use my ICOM radio, by itself, because it has a control head.

Thanks for Reading!

Though I'm making blog posts, I am not official back from retirement. Last October 2013, I retired from blogging due to rheumatoid arthritis in my hands and fingers. I've been keeping Drew Fustini (admin) up to date with my health progress. Thanks for Reading and Have a Nice Day!


Marcos "Kuya Marc" Miranda


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