Nov 17

NLP with AIML - Part 1 - Stopwords

Folks learning about chatbots and AIML are likely to ask if AIML is a Natural Language Processing (NLP) implementation. The answer is no. However, can one use AIML to perform NLP functions? ABSOLUTELY! It takes some work and creative use of recursion and predicates, but it can be done.

This should be the first in a series of posts that describe how you can perform NLP tasks with AIML. In this post, we'll tackle a very simple concept: removing stopwords.

In NLP, there is the concept of a pre-processing step whereby very common (and potentially meaningless) words are removed. Examples of these words are: is, the, and, I, will, just, so, than... So an input of "this is a simple sentence" becomes "simple sentence."

In most programming languages, we can conceive of looping through and testing each word. AIML doesn't naturally have this feature (ok, technically in AIML 2.0, there is a tag called , but with the exception of the example in the standard which involves counting numbers, I can't see how to use this in other ways - please comment if you have good examples of ). But we can force AIML to loop using reductions... the tag. The part where we really need to get creative is how we stop the loop. In this case, I basically have a test for when we're at the end.

At this point, I think it's better to show than tell...

Here's a flowchart of the method (no criticizing my flowcharting skills... but please ask questions!):

Flowchart for stopword removal in AIML

And even better than that, you can see this in work in two ways:

1) If you have an account on the pandorabots playground ( playground.pandorabots.com ), search in the clubhouse for "NLP Test Bot" and you can chat directly. Here's a screen shot of a chat:
Chat window with NLP Test Bot

2) I have a zip file of 3 AIML files that you can play around with yourself. These are the same files as what is loaded in the NLP Test Bot on pandorabots playground. A couple things to know... the list of stopwords comes from python's nltk library. It seemed like a good list. However, given that in AIML, we normally expand contractions, half of this list could probably be removed. The other thing to know is that it's AIML v2.0. That's because I am using the and tags.

Download nlpinaiml.z7

2a) Could this be done with AIML v1.0? Yup. Before the and tags came into existence, I had a category that looked something like this:

<pattern>SPLITME * *</pattern>
<set name="firstword"><star index="1"/></set>
<set name="remainder"><star index="2"/></set>


There was also a second category: SPLITME * which, when both of these existed, would match if * only had one word.

Hopefully I'll get around to posting some of the next steps... like part of speech tagging (hint: I do a lot of the same stuff with reduction and setting predicates... the trick is to have a good base of words) and then what really matters: how you can use this to have an interesting chatbot!

Please comment/ask questions...

Sep 16

AIML + Python + Python Libraries = I can talk with my chatbot

It's been a while...

...and I've recently decided to continue to work with AIML.

Why? Python. My newest programming love. I shunned it at first. I mean... you have to maintain the same amount of spaces?? That seemed ridiculous when I first head about it so many years ago (I'm a very old-school programmer). But I've been forced to use it and now that I have... it's so easy, which translates to the amount of time needed to get something done. Time, these days, is my most precious resource.

Which is why when I had an idea for a chatbot that involved speaking and listening to it, I wondered how easy or difficult it would be to do in python. After a few minutes of Googling, I saw that the three components I needed to make this happen all existed: PyAIML, a speech recognition library, and a text-to-speech library.

How long did it take to put it all together so I could speak to Zoe?

Less than an hour. And it only took that long because I kept getting interrupted by  two impatient guys wondering where dinner was my loving family.

It was so easy, I almost didn't think it was worth blogging about. But I figured that some might need this guide, so here it is. How to talk to your chatbot. All you need is some AIML (version 1.0.1... the PyAIML I'm using doesn't (yet) support AIML 2.).

Install the following:

pip install aiml
pip install SpeechRecognition
pip install PyAudio
pip install pyttsx

A couple notes... first, if you need more help on the PyAIML, look to this very helpful post: http://www.devdungeon.com/content/ai-chat-bot-python-aiml

If you don't already have it, you might nee pywin32 from sourceforge:  https://sourceforge.net/projects/pywin32/

And then here's what you python file looks like with it all put together:

import aiml
import speech_recognition as sr
import pyttsx
import os

# Create the kernel and learn AIML files
kernel = aiml.Kernel()
if os.path.isfile("bot_brain.brn"):
     kernel.bootstrap(brainFile = "bot_brain.brn")
     kernel.bootstrap(learnFiles = "zoe-startup.xml", commands = "load zoe")

# Start the TTS engine
engine = pyttsx.init('sapi5')
voices = engine.getProperty('voices')

# obtain audio from the microphone
r = sr.Recognizer()

# Press CTRL-C to break this loop
while True:
     # obtain audio from microphone
     with sr.Microphone() as source:
         print("Say something!")
         audio = r.listen(source)
         myinput = r.recognize_google(audio)
     except sr.UnknownValueError:
         print("Google Speech Recognition could not understand audio")
     except sr.RequestError as e:
         print("Could not request results from Google Speech Recognition service; {0}".format(e))

        print "You said: ", myinput
     if myinput == "exit":
     # Get Zoe's response
     zoes_response = kernel.respond(myinput)
     print "Zoe said: ", zoes_response
     # have Zoe say the response


Of course, you'll need your own startup.xml file and corresponding aiml files (refer back to that helpful post I mentioned on PyAIML). And I chose the female voice when I set voices[1].id. On my windows machine, pyttsx only has one male and one female voice to start with.

Happy chatting!

Xkcd captured Python perfectly:  https://xkcd.com/353/

Aug 14

Musings on Ray Kurzweil, Moore's Law, and the not-so-far-off future

I write science fiction. I was with my critique group the other night and one of the gentlemen critiquing my work was concerned with the date I chose for the setting of one of my stories. It was not just the date, but the date combined with the fact that the technology I was positing didn't seem advanced enough.

He cited Ray Kurzweil and Kurzweil's predictions about the integration of non-biological intelligence with human intelligence and was emphatic about it enough so that I decided I needed to re-listen to Kurzweil's TEDtalks.

I did that today.

I like Kurzweil. I really do. But... I think he goes a little too far. At the center of his talks is Moore's Law. Kurzweil emphatically (and correctly) points out how well Moore's law has proven to be true over the years and therefore, it will continue to be true. He also likes to apply the concept of exponential growth to anything digital. Sure. No issue there.

But he makes some unfair and inconsistent extrapolations when he mentions intelligence and our ability to understand intelligence over the coming decades. Just because we are collecting data at an exponential rate and digitizing data at an exponential rate does not imply we are UNDERSTANDING anything, especially intelligence, at anything close to that rate.

While we might have access to an exponentially larger quantity of data than we did in the recent past, while we might be able to compute exponentially faster... we are not exponentially more intelligent.

And we are not going to magically understand intelligence in the coming decades solely based on the rate that our technology is expanding.

Please... don't confuse my assertion that we won't understand intelligence with not understanding brain function. Certainly over the last several decades we've learned a lot about biology and how the brain WORKS. But that's not intelligence. Not by a long shot.

I'm in Jeff Hawkins camp when he writes in his fantastic book "On Intelligence" that we don't yet have a framework for understanding the brain (in terms of intelligence, not biology... different things) and until we do, we won't be making the fantastic leaps in technology that Kurzweil predicts.

(side note: another post that I hope to get out soon will be on Jeff Hawkin's book and how it makes a fantastic case for the AIML)

Mar 14

I Stand, Therefore I'll Live (Better)... A Follow-Up

This past December, I blogged about how I changed my office set-up so I'd be standing all day.

...and promised I'd write a follow-up after it had been a month or so. Well, it's been almost 3 months and I have to say that this is one of the BEST decisions I've made to enhance my office life.

Standing Office Setup

Since the original post, I've made a couple of modifications (and you can see the results in the image on the left):

1. I purchased a monitor stand for my two monitors which gave me most of my table space back

2. I scavenged a little end table to keep my laptop/docking station

I considered purchasing a foam roller or something similar for under the table to rest alternating feet on, but noticed that I move around naturally enough that I'm comfortable. (Standing rigidly still isn't good for you either; the idea is to shift your weight around, move around, etc.)


Here's what's funny/awesome. Over the holiday break, I read The End of Illness by Dr. David Agus. There is a whole chapter on how sitting everyday is shortening our life span! (Chapter 10: Running to Sit Still: The Perils of a Prolonged Perch).

Some relevant quotes from the book:

  • "Researchers at the American Cancer Society released a study published in 2010 in the American Journal of Epidemiology that pretty much said sitting down for extended periods poses a health risk as "insidious" as smoking or overexposure to the sun."
  • "A second study at the International Diabetes Institute in Melbourne concluded that even two hours of exercise a day would not compensate for 'spending 22 hours sitting on your rear end.'"
  • "...women seem to be more affected by spending time on their derrieres. In the study, women who reported more than six hours per day of sitting (outside of work) were 37 percent more likely to die during the time period studied than those who sat fewer than three hours a day."

When I read that, I'd only spent a couple days on my feet. Naturally, I was anxious to see how I'd feel about it after a month or more...

Results? I feel much better at work. I don't have the back pains I was experience. But more noticeable is that in the early afternoon, I don't experience the "post-lunch" drowsies that seemed to be a normal part of the day (it still happens *occasionally* but that can easily be correlated to nights I don't sleep well).

For the ladies: the only other thing to take note of is footwear. I don't know about you, but I can't stand in heals all day. So this decision has rendered half of my shoe collection completely unusable at the office. Eh. Small price to pay.

By telling y'all about this I hope that:

  1. You'll read The End of Illness by Dr. David Agus (and my other recent favorite "healthy living" book In Defense of Food: An Eater's Manifesto )
  2. You'll consider standing all day, too!

Happy standing!

Mar 14

What Happens *After* You Open Your Business

I was browsing the web today and came across a string of "How To Start A Business" articles like these:

These are all great resources if you want to start a business. But they are all the "How To" and not the "What Happens After..."

If you type in "How to Start a Business" on Amazon, you'll get over 8,000 results. Many have the exact title: "How to Start a Business" or "Start Your Own Business" or "How to Start a Business."

These books are great. I read several of them when I was starting my retail store. But... they all follow a familiar outline:
- Identify the business opportunity
- Write a business plan
- Figure out your target market
- Get a location
- Get financing
- Set up the legal structure of your business (including registering a name, getting a tax ID)
- Register for state and local taxes
- Hire some employees

...and that's about it. They all seem to stop when the business really starts. Okay, some might include the start of a marketing plan and some might tell you to set up social media accounts.

But these books DON'T generally tell you about:
- Dealing with your business when an employee quits on short (or no) notice
- What happens when you're burglarized
- What to do when direct competition opens up right down the street
- Managing your finances when the current months sales aren't going to cover it
- Setting up a sustainable marketing plan... since marketing can never, ever, ever stop
- Responding to an unhappy customer
- Handling unexpected landlord woes

...and much more.

This is why I wrote "Minding My Business." Because I had to deal with all these things and felt very alone at the time. I had a couple other business owners to converse with, but I was so swamped with my own problems, it was hard to reach out.

My book is written memoir style - I have stories about employees, customers, marketing, and money, money, money. My hope is to reach those of you who are in the planning stages or who are considering taking an entrepreneurial plunge.

Mar 14

National Small Press Month... Marketing Challenges

It's March. Which means it's National Small Press Month. I didn't know about that until today when I read one of the weekly emails I receive from my old book publisher, Outskirts Press*. They provided a list of things that I could do to market my book this month.

To be honest, I've always struggled with marketing plans. I did it when I had my store (and only my store - my marketing efforts were lacking when I went back to my full-time engineering career), and it was A LOT of work. It was constant, never ending. What things could I do to attract attention to my store? To bring customers in the door? Every month there's a holiday or some other designation that business can latch on to as an excuse to draw attention.

I apologize if I'm making that sound like a bad thing. It's not. But every year, it makes it difficult for businesses to stand out. While I'm about to use "Small Press Month" to promote my book "Minding My Business" (which I'll get to a little later in this post), you're also getting bombarded by emails and social media reminding you that March is also National Chronic Fatigue Awareness Month and National Frozen Food Month.

A business owner needs to be extra creative to stand out OR (and this is more likely for most of us) prepare twice as many emails, tweets, and blog posts.

To be clear, I am still a business owner. No, I don't own the retail store. But RIOT Software is a business (I do small consulting projects these days, mostly writing custom Excel VBA macros for people) and more relevant, my book is a business. I have to track income and expenses and market to find customers. That's a business right there.

So... back to Small Press Month. Perfect time for me to hunker down with some extra marketing. I will probably use this as the excuse I was looking for to send my local newspapers a press release on the book. Every business owner should find any excuse they can to send the local papers a press release. When I owned my business, we were featured a few times in the local papers. When my first book came out, same thing.

Another good way for a business owner to use "National Something Month" is to educate their customers and potential customers. Before the month is over, I will post about my path through independent/small publishing. Promise.

Have an interesting marketing idea to share? I would love to hear it!

And in honor of all the things in March, please get yourself some frozen food (ice cream counts or some frozen pie if it's March 14th) and honor the Small Press by reading a copy of my book.

(* My first two books, Cute Little Store and Cute Little Store 2 were published by Outskirts Press. Minding My Business was published in Oct 2013 by Skyhorse Publishing)

Feb 14

"Budget By Paycheck"

I've been wrestling with how to tell the world about my budgeting concept for more than a year.
This budgeting concept I HAD to live with my first year or two out of college - because I was only making enough money to BARELY cover my bills. But now I use it because it helps keep me in control of every dollar I spend, so I can ensure that I'm spending below my means, so I can be saving as much as possible for my goals...

I call my system... wait for it... "Budget By Paycheck... So You Don't Have To Live Paycheck to Paycheck."

When I graduated from college and earning a real income for the first time in my life, I was faced with my first real set of grown up bills. I needed to live on a budget. But... every system I knew about was a monthly budgeting system and I was paid every other week. I couldn't always count on getting paid on the same day relative to the 1st of the month when my rent was due. Or the 20th when both my car payment and student loan payment were due. Sometimes my paycheck would line up nicely, but not all the time. When I missed a car payment one month because the 20th came on a Wednesday, and I didn't get paid and couldn't afford to pay that bill till the following Friday, I had to make a change.

Out of necessity, I took a little notebook and wrote down the dates of my next several upcoming paychecks. Then I "assigned" bills to them.

For example, if my next two paychecks were Fri, 2/14 and Fri 2/28, I would assign my car payment and loan payment to the 2/14 paycheck and March's rent to 2/28. There was also the phone bill and other things I assigned. I also automatically assumed I'd spend $100 per paycheck on food (maybe it wasn't $100... but it's close enough to what I remember from 17 years ago) which became my limit on food per two weeks. I did something similar for gas. I planned out 2-3 months at a time, making sure that all of my bills were accounted for.

Once everything was accounted for, I could see (what little) I had left over for savings, entertainment, etc. It was following this system pretty religiously that I managed to start to work myself out of debt (yeah, in addition to graduating college with student loans, I took on a car loan right away, and I had built up several thousand dollars in credit card debt while I was a student) and live a slightly more stress-free life.

Fast forward something like 15 years later... or maybe it was about 4 years ago? Yes, 4 years ago. I had stopped using my system a long time ago. It wasn't intentional. It simply didn't seem necessary anymore. My income was 4 times what it was when I was a college graduate. My student loans were paid off, I had no car loan, no credit card debt, and a respectable amount of savings.

Then I bounced a check. (Or overdrew my checking account via too many debit transactions... semantics)

I freaked out. How was this possible? I'd been fairly responsible with my finances for a long time. And my income was 4 times what it had been when I was a college graduate. My student loans were paid off, I had no car loan, no credit card debt, and a respectable amount of savings.

Did I mention the freak out?

Well, I went back to the Budget By Paycheck system. This time, I did it in Excel instead of by hand. I've been doing it ever since!

When I set up the spreadsheet, I went out two years. Every year, I go out another full year (except this last time when I went out multiple years). It enables me to plan out irregular expenses... like that yearly membership to something, or yearly taxes, etc, so I'm not surprised when the time comes. It enables me to look at where I am with respect to the current paycheck and see if I have "extra" money for savings or entertainment or home improvements or anything else that is not a necessity.

I've been trying to figure out a way to educate folks on how to set up their own spreadsheet if they're not as handy in Excel as I am. If you're interested, let me know... that might provide me with some motivation.

But you don't need a spreadsheet. You only need a pen(cil) and a piece of paper to start "Budgeting By Paycheck" and getting your finances and spending under control.

Here's an example of what the system looks like in a spreadsheet form:

Good luck, and comment if you have any questions!

Feb 14

Snow Storm = Unplanned Expenses

This morning, I drove past the retail center where my store used to be. Several piles of snow had been constructed to make way for cars to enter and exit the parking lot. It brought back memories of snow and problems with my landlord and paying out money I didn't have... <shiver> and why I wish as a small business owner, I would have kept an emergency fund.

I thought I discussed this story in detail in my book, but apparently not. On page 27-28, I wrote a teeny tiny bit about the related topics, but I never tied it together in the larger story.

Here's the small extract from those pages:
 "Common Area Maintenance (CAM) increases: In addition to rent, you typically also pay something called CAM or triple-net. This covers the maintenance costs like landscaping and snow removal in your shopping center. It’s typically not fixed—it goes up and down each year based on the real cost of the year before. Also, when the landlord figures out whether or not it goes up or down, they can also charge you a one-time payment to cover the previous year’s actual costs (or give you a credit if costs were less than expected). Well, after the first full year, when our assessment came in, we owed almost twice our rent! It was a lot of money at the time and was completely outrageous. It almost put us out of business.
Snow Removal: Our first winter brought a huge snow storm, and even though we were required to be open, the snow removal in our parking lot was miserable. We got phone calls from several customers saying they tried to get to us but couldn't. In two or three days, I estimate we lost at least $500 worth of business solely from the people who told us they couldn't get through. I don’t want to think about how many couldn't get through who we don’t know about. "

I need to tell you the story today, because it's a GREAT example of the unexpected financial things that could pop up.  It's a GREAT example of why you NEED to have an emergency fund if you're a small business owner.

Yes, in February 2003 we were hit with an unexpected snow storm that dumped an unusually large quantity of snow on the region. Everything was closed, of course. But as a fairly recent business owner that catered to families with kids, all of whom had a snow day, I felt the need to make sure my store was open.

I drove my Jeep Wrangler and was able to make the trek out of my neighborhood and down to my store. I opened the place up and was greeted by phone calls from people complaining about the snow in our center's parking lot and how they couldn't get to us.  At the time, all I could think about was the lost business.  I'm pretty sure if our lot had been clear, we would have netted another $500 or something that day.

Eventually, the snow melted and things returned to normal. I forgot all about it.

Until that December, when I received a letter from the landlord saying I owed an addition $6,000 in rent. Note that this was TWICE my normal monthly rent. So that's A LOT.  And if you look at our sales numbers for those months, it was about a third of what we were bringing in. In other words, $6k was A LOT of money to me at the time.

Needless to say... I freaked out. (It was Christmas Eve, too, btw.)

When I calmed down (a little), I spoke with other store owners in my shopping center. Everyone received a similar letter and everyone was in the same freak-out mode. Since CAM was assessed based on the square footage of your retail space, a store that was twice the size of mine had a $12,000 bill.  Also, CAM for the next year is always based on the previous years expenses, so my new CAM more than tripled for the next year.

We got together as a group. I hosted a meeting at my store after hours one night. We wanted to see if there was anyway to fight this. If we did, it would have to have been done as a group - none of us could afford the legal fees to do it as an individual. We invited a business lawyer I knew.

Everyone understood that CAM could fluctuate, but we were all baffled as to how it could go up this much. Apparently, there was some issue between our landlord and the snow removal company and the snow removal company took the landlord to court to get their payment. Our landlord was able to pass on not only the additional snow removal charges, but their legal fees as well!

We were not successful in getting the landlord to reduce the charge... how could we? Our lease's were pretty straightforward. The only thing that they agreed to was to let us pay it over time. I think I paid mine over the course of 6 months. Which was still an extra $1000 a month in rent that I hadn't planned in the first several months of 2004.

What can you take away from this?
1) You MUST have an emergency fund! An emergency fund could have covered this.
2) When negotiating a lease, I have since learned that you can ask for things like a cap on CAM. (Doesn't mean you'll get it, but I never even thought to ask.) You can detail out things you won't be responsible for like legal costs incurred, etc.
3) If I didn't mention the emergency fund, let me say it again: You must have an emergency fund. You never know when you'll be hit with something unexpected and out-of-the blue.

PS... the following year, when CAM was reassessed, since there were no major snow storms or legal things that could get passed on to me and my fellow tenants, the new assessment went way down and I think I even got a (small) CAM refund.
Feb 14

Can You Afford It? Where "It" Means Starting Your Own Business

(Hopefully folks will not  confuse this post with Suze Orman's 'Can I Afford It?' segment on her weekly show. Which I watch every week, btw!)

When my new book came out and I set up this blog, I polled some friends for ideas on what topics I should write about. One of them mentioned "start-up cost fears" as in: "Most people are afraid to start a business because how much it costs to start one (real or perceived). Maybe some suggestions on how to obtain financial support would ease the fear."

Oy vey. Having lived this, and having dealt with the financial aftermath of a business that didn't pan out financially, I do have a lot to say on these topic(s) and will likely delve into many details in a whole suite of blog posts.

But before I can tackle details on start-up finances/financing, we gotta talk about something more fundamental:  Can You Afford It? Can you afford to start your own business? And what does that question mean, anyway?

It means several things:
1) If the business requires you to reduce your income, and you can do that, then you can afford it
2) If the business requires you to draw NO salary for a period of time, and you can do that, then you can afford it
3) You have no extraneous credit card or other debt
4) You have the ability to finance the business for some start-up period of time

Number one and number two MUST, MUST, MUST be true. In order to live, you're likely paying rent or mortgage (maybe you're lucky enough to not to have one of these expenses, but I'm going to assume that the majority reading this do) which means that you need a way of paying those expenses month after month. Ideally, you have a chunk of money in a savings account... at least a years worth of living expenses... because you can't guarantee that your new business will provide you with an income anytime soon.

Some folks, especially those really anxious to start their business will argue with me about #3. Yes, technically, if you have a bunch of consumer debt, you CAN start a business, but you might be making your life more difficult than it needs to be, because it means you NEED even more of an income to cover that debt. It also might make getting credit for your business more difficult... more on that in a future post.

When I started The Pot & Bead, my retail store, the plan was for me to draw a salary as the owner/manager that was only 60% of what I was making at the time as an engineer. At the time, it was enough to cover my personal bills (my part of the mortgage, student loan payment, etc etc). However, about a year into the business, sales started to taper off and I couldn't draw a salary anymore. At the time, I was married, and my eventually ex-husband was able to cover the expenses at home. But when we wanted to get divorced, I had to support myself and couldn't with the business. That's one of the two primary reasons I went back to my engineering career.

All of my regrets related to the business, and in my personal life, are financial. They tie together because not having all my personal financial ducks in a row put a lot of limitations on my freedom and what I could do with the business. In other words, I had a lot of debt personally, so I needed to draw a certain salary. When I couldn't draw that salary anymore, I had to go back to my engineering career.  (Luckily, the engineering career has been good to me since... but that's also another blog post or ten.)

Here are some things that I WOULD DO and WOULD NOT DO related to businesses and finances if I had to do it all over again:
- WOULD: seek financing from friends and relatives (if something goes wrong and you need to modify your repayment plan, friends and relatives are easier to work with than a bank)
- WOULD NOT: defer student loans (interest still accrues when student loans are deferred, so I wound up paying more for my education than I ever planned)
- WOULD NOT: take out a 401k loan (I think 401k companies should be required to counsel individuals on the financial repercussions of this decision before they're allowed to take a loan)
- WOULD: avoid credit card debt like the plague (isn't this obvious?)

It's never to early to think about your financial situation if you are thinking about starting a new business. Even if you don't know any details about that business, work on getting your personal finances under control. It'll be all the more easier to go out on your own later.
Jan 14

Always use protection...

...for your passwords, of course! (what did you think I meant?)

Twenty years ago when I was in college (OMG... did I really just type that?) I had three passwords to remember. Two for two different email systems I had access to and one for my dorm room voice mail. That was it. There was no online anything. My bank didn't dole out ATM cards till a few years later.

Well, times have changed. Sitting on my computer here, I have a spreadsheet that has 113 passwords. And that doesn't count the half a dozen passwords and pin numbers I have to remember and use on a daily basis at my day job. I'm sure it also doesn't include a handful of "throw away" passwords... you know those websites that require to you sign in and create an account even though you'll only ever be there that one time? Yeah, there must be a couple dozen or so of those with my name on it.

Everything is fine and dandy when I'm home. But when I travel, I have some issues. You see... I keep my passwords in a spreadsheet (a password protected spreadsheet, of course) - I think I mentioned that.

I'm sometimes a little old school with my computing habits. I haven't fully adjusted to having all my sensitive data in "the cloud." Yes, there are some supposedly really good password keepers out there. But I've never really been comfortable with them and their ability to keep my data in sync between my desktop and other devices (smartphone, laptop, and now tablet). I'm not saying that they aren't safe and secure, I'm only saying that I've never felt comfortable. So I keep my spreadsheet.

Which is a problem when I travel. If I was traveling with my laptop, I'd still be fine. The laptop has two passwords to get on and in and the spreadsheet is hidden and itself has a password. But these days, if I'm traveling it's for vacation and I rarely need to travel with my laptop since I have that smartphone and tablet. And I'm not comfortable with the Excel readers (and not even sure if they do the password thing).

And while I try to do things like pay my bills before I leave town... I never know when I'm going to need one of those passwords that I don't use too often.

You see where this is going? I needed another way to be comfortable with written passwords.

Enter my little java app, the Password Obfuscator.

I figured that if I modified my password in a way that only made sense to me, I'd feel comfortable writing it down and comfortable saving it in some cloud-enabled online app that syncs to a website, my phone, etc (like Evernote. I love Evernote for non-sensitive things). That way, if someone got hold of my password(s), by the time they figured out my scheme (if they figured out my scheme), I'd already have received some email that my account was locked out and voila!

For me, the best way to obfuscate a password was to look at the keyboard, and shift all the letters and numbers by some number to the right. So, if my password was "dog" and my shift number was 2 (on the qwerty keyboard) the password I'd write down would be "gqj". (note the rollover from "p" to "q") The chance that anyone would get "dog" from seeing that well... it's not impossible... but small enough for me to be comfortable writing some things down.

Anyone could do this with a password or two.  But 113? Yeah, it was much easier to write the little java app that could do it for me.

The app is here:  http://riotsw.com/passwordObfuscator.html

It should be reasonably straightforward. Choose how many characters you want to move your passwords by. Decide if you want to change case. Decide if you want to move your numbers and characters, too. Then copy your passwords into the input, press the "Do it!" button and viola... examine your output.  Here's what it looks like:


You can further obfuscate things by not tying them directly to their site. For example, if "test" was the password for your bank... well, you're likely not in danger of forgetting what bank is yours, right? So wherever you keep the changed password, just label it "my bank." Someone who finds that isn't going to try the couple hundred banks in the world.

Then when you need to use the password, you only need to remember how you shifted it. I presume that anyone looking at a keyboard can reverse the process to get their password (and since it's one at a time, it shouldn't be that cumbersome).

A note about passwords... Good passwords are long passwords. Long doesn't necessarily mean complicated or difficult to remember. myMymyMymyMySharona is a better password than My.1!Shar0na#.

The best post and description of why this is true is here: https://www.grc.com/haystack.htm

I would love to muse on passwords some more... but it's time to watch Big Bang Theory.