Subscribe to Blog via Email
I posted just under 100 posts to my blog this year. After I changed jobs, the “3 per week” quickly declined to “4 per month” after I was inundated with new challenges and the Delphix learning curve. That will change for 2017, along with some new initiatives that are in the works, so stay tuned.
For 2016, the most popular posts and pages for my website followed a similar trend from the last year. My emulator for RPI is still a popular item and I have almost as many questions on RPI as I do WIT- Raspberry Pi is everywhere and you’ll see a regained momentum from me with some smart home upgrades.
My readers for 2016 came from just about every country. There were only a few that weren’t represented, but the largest numbers were from the expected:
I also write from time to time on Linked in. Linked in has become the home for my Women in Technology posts and its lead me to receive around 30 messages a week from women looking for guidance, sharing their stories or just reaching out. I appreciate the support and the value its provided to those in the industry.
The 2016 conference was a great success for RMOUG, but much of it was due to budget cuts and changes that were made as we went along and addressed trends. I’ve been collecting the data from evaluations and it really does show why companies are so interested in the value their data can provide them. I use what I gather each year to make intelligent decisions about where RMOUG should take the conference direction each year- what works, what doesn’t and when someone throws an idea out there, you can either decide to look into it or have the data to prove that you shouldn’t allocate resources to an endeavor.
I wasn’t into the Oracle cloud like a lot of other folks. It just wasn’t that interesting to me and felt that Oracle, as much as they were putting into their cloud investment, deserved someone who was behind it. I’d come to Oracle to learn everything I could about Oracle and Enterprise Manager and an on-premise solution as it was, it wasn’t in the company focus. When Kyle and I spoke about an opportunity to step into a revamped version of his position at Delphix, a company that I knew a great deal about and admired, it was a no-brainer. I started with this great, little company in June and there are some invigorating initiatives that I look forward to becoming part of for 2017!
In February, I was awarded RMOUG’s Lifetime achievement award. I kind of thought this would mean I could ride off in the sunset as the conference director, but as my position ended at Oracle, which had been a significant fight to keep me managing the conference as an Oracle employee, (transitioning me to a non-voting member to keep within the by-laws) not many were surprised to see me take on a sixth year of managing the conference.
In April I was humbly awarded the Ken Jacobs award from IOUG. This is an award I’m very proud of, as Oracle employee’s are the only ones eligible and I was awarded it in just the two years I was employed at the red O.
I haven’t had much time for my Raspberry Pi projects the last number of months, but it doesn’t mean I don’t still love them. I gained some recognition as 2nd ranking in the world for RPI klout score back in July, which took me by surprise. I love adding a lot of IOT stories into my content and it had caught the attention of social media engines. Reading and content is one thing, but it was even more important to do- I had a blast being part of the impressive Colorado’s Maker Faire at the Denver Museum of Nature and Science earlier in 2016. I also was part of two smaller makers faires in Colorado, allowing me to discuss inexpensive opportunities for STEM education for schools using Raspberry Pis, Python coding and 4M kits.
Even though I took a number of months off to focus on Delphix initiatives, I still spoke at 12 events and organized two, (Training Days and RMOUG’s QEW.)
February: RMOUG– Denver, CO, (Director and speaker)
March: HotSos– Dallas, CO, (Keynote)
April: IOUG Collaborate– Las Vegas, NV
June: KSCOPE– Chicago, IL
July: RMOUG Quarterly Education Workshop– Denver, CO, (Organizer)
September: Oracle Open World/Oak Table World– San Francisco, CA
I took over the Denver/Boulder Girl Geek Dinners meetup last April. The community had almost 650 members at the time and although it wasn’t as big as the Girls Develop It or Women Who Code, I was adamant about keeping it alive. Come the new year and thanks to some fantastic co-organizers assisting me, (along with community events in the technical arena) we’re now on our way to 1100 members for the Denver/Boulder area.
I’m pretty much bursting with anticipation due to all that is on my plate for the coming year. I know the right hand side bar is a clear indication that I’ll be speaking more, meaning more travel and a lot of new content. With some awesome new opportunities from Delphix and the organizations I’m part of, I look forward to a great 2017!
The following issues in this post are common challenges experienced by Raspberry Pi, (RPI) owners and I’m consistently frustrated with the ridiculous answers out on the internet for them! No fear, trusty Raspains! I’m here to offer you the correct and [pretty easy] answers that will actually fix the problems and won’t lead you to searching for hours on the internet.
We techies know that no matter what, going back to the configuration at the OS, (operating system) level is just the best way to fix problems. Raspberry Pi issues are no different, so read on…
If you haven’t figured out by now, your RPI, although globally distributed, was built in the UK, which means that the keyboard is set to “gb” for Great Britain. With that comes the pound sign when the shift is depressed and you then press the number 3, among other key reassignments. Yes, there is a configuration option in the user interface and yes, it will fail to correct the issue, even after you’ve rebooted.
There is a simple configuration file update, so let’s just fix this the proper way. Using Vi, Vim, Nano or another command line editor, edit the following file, (I’m a DBA, so Vi is my trusty editor choice):
sudo vi /etc/default/keyboard
# KEYBOARD CONFIGURATION FILE # Consult the keyboard(5) manual page. XKBMODEL="pc105" XKBLAYOUT="gb" XKBVARIANT="" XKBOPTIONS="" BACKSPACE="guess"
Update the XKBLAYOUT to “us” from “gb”, (or to the keyboard layout language you need it set to.)
Save the changes and cycle the RPI. There, all fixed.
The 7 and 10 inch touchscreen displays allow the user to have a more portable RPI, (non-dependent upon an HDMI monitor or TV) or mouse. I also prefer it, as the low-powered option allows me the opportunity to power my RPI, monitor, et. all on an 20800MAH mobile charger battery, walking away from a standard power source completely.
The challenge is that when you position the RPI into the case that makes this all so easy to work with, the display is upside down. No, there’s nothing wrong with your screen or your installation, the problem is the configuration for the RPI. This can be easily fixed, again, with a simple update to a configuration file and power cycle of the RPI.
This time, edit the following:
sudo vi /boot/config.txt
add the following line to the bottom of the file:
The file should now look something similar to this:
# Enable audio (loads snd_bcm2835) dtparam=audio=on # Correct display orientation lcd_rotate=2
Save the changes and cycle the RPI. Again, all fixed…. 🙂
If you have challenges with this, check out my blog post that goes into causes and fixes here.
Hopefully people won’t be looking all over the internet for these fixes and just find this post instead…. As I think of other fixes, I’ll continue to update this blog post, so check back!
So there are some cool features that are built into the GPIOZero library/module. One of the challenges I think many of us that have a lot of projects that we want to work on, is that we end up having to translate it to the version of RPI that we just happen to be working on or have available. This can be frustrating when the code is available without us having to rewrite it all in the libraries available for the hardware we just happen to plug-in.
So GPIO the old way with photocells is a bit involved:
GPIO.setmode(GPIO.BCM) def RCtime (RCpin): reading = 0 GPIO.setup(RCpin, GPIO.OUT) GPIO.output(RCpin, GPIO.LOW) time.sleep(0.1) GPIO.setup(RCpin, GPIO.IN) while (GPIO.input(RCpin) == GPIO.LOW): reading += 1 return reading while True: print RCtime(18) # Read RC timing using pin #18 <and on and on..and we haven't even got to the buzzer, etc....>
If we use the GPIOZero library, it’s much simpler due to a module written for physical computing with photocells:
from gpiozero import LightSensor, Buzzer from time import sleep ldr = LightSensor(18) buzzer = Buzzer(4) while True: sleep(0.1) if ldr.value < 0.5: buzzer.on() sleep(30) else: buzzer.off()
LightSensor was what I wanted and it was already available in the GPIOZero library.
Needless to say, this happened to me as I was working on a new project. I was at the Starbucks and pulled out my Raspberry Pi, B+ Release 2, that has the touchscreen built in, plugged it in and went to town. With this configuration, I only require one plug, (the monitor works off a battery) and it’s very portable when I’m out and about.
So what did I do when I saw the module to call was GPIOZero and I was on the Raspberry Pi 2? I installed the GPIOZero library, of course!
sudo apt-get install python3-gpiozero
I keep the images updated with the latest, so it was a no-brainer to add this to it.
If you don’t have what you want for the model you are working on, why not just try to install what you need?
Easy-peasy, forty pin GPIO library done. So there, Raspberry Pi Versions!
This morning, after someone added SQL Developer to a Raspberry Pi 3, Jeff Smith pinged me and the question was posed, as it often is, can you run Oracle database server on a Raspberry Pi, (RPI)?
The answer is no, you can’t, as there are no binaries for the ARM processor platform that you can compile, so its nothing to do with power, (although it is low powered for a very good reason…) but really due to the processor type. Hopefully that’ll stop those of you building out massive RPI clusters in hopes of creating their own home servers with these inexpensive computers.
With this said, you can run a database, so to show how easy this is, I’ll show you how to install and work with an installation of SQLite on a Raspberry Pi Zero, the version that’s less than 1/2 the size of a credit card.
Other people have a beer and take the evening off. Me? I have a beer and start installing stuff on single board computers… 🙂
Installation is easy. Ensure you have the latest update, so if you haven’t run your update in awhile, run that first from the command line. Remember you must have root or sudo privileges to perform these tasks:
$sudo apt-get update
Once complete and you know you’re up to date, then simply get and install SQLite:
$sudo apt-get install sqlite3
Let’s create a database:
This creates the database using the mydb.db file as the logical container for it.
Note: If you need help at any time, you can type in .help or .show from the sqlite prompt and it will display information similar to man pages in linux. It’s very helpful and user friendly.
If you’re out there comparing features, about to complain about all the ways that SQLite is NOT Oracle, well, you can stop right here. On the support page for SQLite is the quote:
Small. Fast. Reliable. Choose Any Three.
SQLite isn’t trying to be Oracle, but if you need a database and you’d like to put one on a RPI, this is the one to use that is small, fast and reliable.
Of course there are some syntax differences and SQLite has most standard SQL syntax at it’s disposal. Remembering to type BEGIN for the implicit transactions and to COMMIT after each is commonly the biggest challenge. This includes for data dictionary objects, (aka ddl).
As this isn’t a full RDBMS client/server database, there aren’t any roles or privileges that reside outside of the OS level privileges to the database file. This database works very well in the support of RPI projects and this is the goal of what I’m hoping to demonstrate here.
So let’s start by just creating a table and adding a few rows.
begin; create table tbl1(col1_id text, date_c1 date, time_c1 time, range_1 numeric); commit;
Now you can insert rows into your new table:
begin: insert into tbl1 values('user1', date('now'), time('now'), 12); insert into tbl1 values('user2', date('now'), time('now'), 7); insert into tbl1 values('user3', date('now'), time('now'), 20); commit;
You can then select from your new table and the row(s) will be returned, separated by the pipe symbol:
select * from tbl1 where col1_id='user2'; user2|2016-03-22|00:12:237
So there you have it. Database software installed- check. Database created- check. Object created and rows added- check. Table queried- check. All done in less than five minutes.
If you’d like to learn more, you can check out SQLite’s home page.
I’d had some difficulty with WiFi consistently staying connected on each of my Raspberry Pi units. I’d had a little time to look into it, but no research had offered an answer and the only fixes I’d come up with was a shell script I wrote to force a restart of the NIC, which helped some, but no improvement when I added an antenna, (I considered all the wires, sensors, etc. might be interfering with the signal.)
Finally this weekend, started to dig around and noted that although in the user interface, it showed both connections to my home WiFi and my Smartphone as enabled, the /etc/wpa-supplicant/wpa_supplicant.conf showed the following for each entry:
I couldn’t find any support documentation that backed up the theory that there was a mismatch in what the GUI stated vs. the configuration file that is the backbone of the settings, but with all the other data involved, it made sense that this should be set to either:
So, I took a deep breath and updated one WiFi connection entry in the file with “disabled=0”, saved and rebooted.
Sure enough, my connection to my home WiFi stayed connected and consistent to the internet. No more disconnects and no more challenges with connectivity.
Another change I made afterwards, which is backed up with support from multiple resources is editing the /etc/network/interfaces configuration file. Scan the file and look for an entry that says:
If you don’t see this entry, add a line to the top of the file, (you should see at least one other line starting with “auto” so add a line under that one if there is), save and reboot. This will update your RPI to start the WiFi NIC automatically, which will then in turn, connect to your WiFi network.
I’ve made this change to four of my five RPI, (the PiZero Jessie load doesn’t experience this issue and was what triggered that it was a software issue with Wheezy and not a hardware problem….)
So as I prepare for next week, coaching with some other great folks with the Oracle Education Foundation using the Raspberry Pi, I wanted to add some fun music into my code to work with our motor mascot project. To do so, you need a few things:
If you haven’t done so recently, run an update on your Rpi:
sudo apt-get update
Now that you know your Rpi is up to date, let’s get the MPlayer software:
sudo apt-get install mplayer mplayer-gui alsa-base alsa-utils pulseaudio mpg123
If you have your Rpi hooked into a small monitor, like I do, then don’t be surprised if the mplayer application fails due to the display constraints. The rest of the code and librariesiare what we’re really interested in, so not a big deal.
Once it’s finished, reboot your Rpi:
Once it’s up, lets do a bit of code. There are a number of online FM URL’s that can be used with the mplayer, so it’s really a lot of fun. You must have WiFi access configured on your Rpi for this to run:
os.system(“mplayer -playlist http://tunein.com/radio/1FM—Absolute-Top-40-s48967/”)
Save the file as play_music.py
To run this, simply type in:
sudo python3 play_music.py
I’ve updated my script to do a few things, including blinking lights and spinning motors, but the video gives you at least a taste of the motor and the music!
Have a great Firday, folks!