Conversational AI, Chatbots, Abot, and the Microsoft Bot Framework

The unveiling of the Microsoft Bot Framework is pretty amazing, and I agree with Natya Sadella when he emphasizes that human conversation should be the computer interface of the future.

Chatbots are quite popular; however, they are stuck in the stone age with weak implementations like AIML. The real answer will be much more like Microsoft’s Xiaoice or the OpenCog project. In fact, I’m investigating seq2seq in TensorFlow for the purpose of making conversational AI.

In fact, I’d like to integrate Abot with Sikuli X to create a bot to control my Ubuntu installation. I’d also like Abot to be used for human-aided programming. Basically, I want to get templates for programming languages and use a bot like Abot to interpret human intent directly into software.

I’d just like to drop some more links:

http://www.hutoma.com/

https://www.rivescript.com/

https://github.com/gunthercox/ChatterBot

http://machinelearningmastery.com/how-do-i-get-started-in-machine-learning/

Ubuntu 16.04 and OpenSUSE 42.1

Well, I tried out OpenSUSE and have decided to switch back to Ubuntu 16. First of all I want to say that while updates to Ubuntu 15 broke my installation, the Ubuntu 16 installation is way better. I was concerned about the lack of fglrx support, but amdgpu just works. Also, my Bluetooth headset now works right out of the box, but not the Gigabyte card, rather the BT dongle I found from thinkpenguin.com. OpenSUSE wasn’t performing very well given the graphics card situation. I’d buy a new graphics card, but I don’t want to spend a lot of money at the moment.

3 weeks without an update?!

I haven’t given an update recently, so here it is:

I got nata.li and pat.nata.li hosted on AWS. I backed up all my stuff on AWS. I pruned my Redmine backlog. I investigated some other productivity products. I tried to install the Gigabyte GC-WB867D Wi-Fi/Bluetooth card but it doesn’t seem to work. I plan on wiping my old Dell laptop and then installing OpenSUSE and a few other Linux installations on it. I uploaded a few things to bitbucket. I contracted someone for a small software project. Now I’m lurking in some programming related IRC channels. I discovered that there are some programming groups in Pittsburgh which could be interesting.

Hopefully, I’ll have a bit for you next Sunday. 🙂

Not much exciting

I continued practicing with rails, I’m backing things up to AWS, I reorganized my domain name setup… I still haven’t put nata.li back up. We’ll see how things go this next week.

(Not much) progress report

Still not much progress on the security system lately. I’ve been doubling down and focusing at work. I also changed my diet, which is still giving me issues.

I have not installed other operating systems on this computer yet. I’m not altogether convinced it’ll solve my issues. I’ll probably end up having to use Windows to get any kind of decent gaming performance on this graphics card. How disappointing. I’d rather not use Nvidia since their business tactics are immoral.

While doing an exercise on KhanAcademy, I discovered an easter egg in GNU Octave. fact(n) gives a random fact, not the factorial.

octave:2> fact(10)
Whenever someone writes a “Hello, world” program, Richard Stallman says “Hello”
back.

Factorial is just factorial(n).

Anyways, I’ve also worked on encrypted backups in AWS. In order to facilitate this, I wrote this script called simpleluks.sh: https://gist.github.com/beta0x64/a9db67131080a2c277a50b7a36661287

Rootcrit security system prototype problem solved

I’m such a dummy! Remember in my update earlier this week when I mentioned that Rootcrit wasn’t starting at all, mysteriously? I know why: it was trying to connect to my AWS Cassandra instance and I wasn’t waiting long enough for the timeout. Oops. Since I stopped my AWS instance and started it back up, its IP changed. I’ll need to associate it with an IP, then associate that IP with a subdomain of mine.

Speaking of which, I really ought to sort out my domain name situation. Right now, I believe my n nata.li domain name is transferred from namecheap to arvixe.com. Arvixe is an OK service for the price, but it could be much better. I might transfer the domain and my website to Amazon.

Weekly update – Progress was slow! Not anymore

The past couple weeks have been slow for me, but that is all in the past. I had some medical stuff go on that made me quite sluggish and a little irritable.

General update: I would like to reinstall this machine. In my opinion, Ubuntu has declined in quality lately. I would ideally like to install a couple operating systems with a large shared filesystem. For example, I would like to try Fedora, OpenSUSE and Debian.

Remote backup update: I realized that Amazon Web Services only provides disk level encryption (EBS volume encryption) for instances over a certain massive size. No thank you! I might try this out on Linode. Anyway, a surefire solution would be to use cryptoLUKS containers and possibly git. Put the entire backup in cryptoLUKS containers, then use a git filesystem inside of that to keep track of the changes.

Security system: I am having an issue running my cartonized perl. No idea why this is. Anyway, I decided to start working on new features in branches finally. Right now, there’s a ‘show_incidents’ branch for Rootcrit here: https://github.com/beta0x64/Rootcrit/tree/show_incidents I noticed that when opening a very large number of images and attempting to decrypt them, asynchronous processes would apparently timeout inevitably. That’s a challenge of client-side JS programming: how can I know what the client is capable of? How do we recover in that situation? Well, my plan is to pool the workers at least. I would also like to add paging, but that is a little bit outside of my paygrade right now when it comes to Cassandra. I know it can be done, though.

Statistics: I’ve been doing some work on z-scores lately. There’s not much to say about this. z-scores will tell me where a value lies on a normal distribution, which lets me answer questions like “How likely is it that someone is X or more and Y or more?” etc. etc..

Assembly: I haven’t done much of anything here. I have not so much as edited my FizzBuzz program, which is very disappointing, I know. 🙂 After looking at it briefly, I think the main issue I had was in “knowing when to stop.” Or in other words, my loop was broken. I should look into how to write functions in nasm. That would help keep the repetition down tremendously.

That’s all I can think of for now to update.

Goals for next Sunday:

General: Reinstall this computer.

Remote backups: Make it easy to work with cryptoLUKS (probably a perl or ruby wrapper).

Rootcrit: Reinstall carton and get Rootcrit running again. Then check out the decryption pooling.

Statistics: Keep on chugging along.

Assembly: Find out how to write a function in nasm. Address the fizzbuzz loop.

Security system update – we have decryption!

Good news everyone, I got OpenPGP.js to work. I gave up on jBinary and decided to go with a plain XHR request that uses the arraybuffer type. From there, it’s a cinch to load the binary data into OpenPGP.js. I’ve never been so happy to decrypt a file. 🙂

However, there are bugs and the current UX is terrible. It tries to list all the files in Cassandra (lol), and it also seems to be decrypting only the last image in the list despite loading all the others. No good! I would also like to make it easier to view individual images.

Anyway, I also learned that Google has its own end-to-end PGP encryption in the works. I think that’s pretty awesome, and I hope we see more uses for client side encryption. SSL is not enough! Especially in today’s cloud-driven world where it’s all too easy to lose control of your own data.