Between being sick, having a sick wife, the dog’s cancer and how fast it is spreading, having family in town, having other responsibilities, and general adulting I haven’t made a lot of progress recently.
That said, I currently have the AWS server set up and serving a very basic Flask application. I also have git installed, but I will probably write a bash script to auto update the project when I push to the remote.
I have a project at work I am planning on creating, a python script which does most of the work that I do currently when I am not on the phone. We will see how that goes.
In which I bemoan the fact that I started out two days ago thinking “Yay! I’m sick enough that I am going to have to stay home from work. I am going to hack and post updates!” Sadly that did not happen – about 20 minutes after thinking this I passed out. Then yesterday I had the bright idea to go to work and try to make it through the day.
That did not work so well. I made it like 30 minutes, and then left.
I came home and slept. Made it to work today and was looking forward to doing some hacking tonight, but instead I have been updating my LinkedIn profile.
Look, it is silly to have to ssh in just for a new view into a computer you’re already connected to. Enter the app “screen”. It gives you the ability to have views into the computer, and detach and attach these views at your convenience. Let’s say that you want to start a process which freezes your terminal, but you also want to curl the served content. You can start the process, disconnect from that running screen, connect to a new, virgin, view of the computer, and curl from the new screen. After you are done, you can reconnect to the first screen, stop the process, make changes, and then start it all over again.
That is a very brief, very high level overview of screen. If you have not heard of it, I strongly suggest doing some research of your own as it is super handy for anyone who works on remote machines. You can find a pretty good guide of how to work it here. In the future, if that link is gone: I generally find good articles by looking for irissi and screen. One common task is using it as a connection to your irc account, so there are many good guides on how to work them together.
I have created the amazon account, created an EC2 instance with Ubuntu 16.04 running on it. Converted perfectly good pem file to ppk format because I am currently on a windows machine. Installed Python3 and Flask. Created a simple Flask “Hello World” application and served it via the built in testing server. Sadly, because of one of many potential situations I don’t have access to the hosted content from outside of the server, but if I curl 127.0.0.1:5000 I get my expected content.
Tomorrow I will likely set up the app, as it is, inside of a flask application. I will have to do some work to the templates to make sure that useful information is displayed in a meaningful manner.
While the application is tiny I figure that this is the best time to tie everything to the web application. I am going to use Flask hosted on an AWS account for the time being.
I will use an AWS account because it should be really inexpensive (Free for the first year for new accounts, last I checked.) and it allows me to have a virtual machine. I could write it on my home server, however that is no longer serving externally. Plus, if I want to play with the elastic beanstalk later on I already will have an account in place.
I will use Flask because of it’s amazing templating system and easily creatable API endpoints. I have a great book that I lent out, but thankfully I have the Kindle version of it as well. I think that the paperback version is easier to use than a Kindle and briefly considered buying a new one, but then I remembered the Kindle app for Android. Viola! Saved $40 and I don’t have to try to read a programming book on a Kindle.
The application will most likely support users in the future, as well as some sort of user security, but for now getting the application up will be the main goal. Tonight is prepping Amazon and a rehash of Flask.
Sadly due to many recent events (including Thor being diagnosed) I did not give this the attention I want to. That said, this will be a short update because I am upgrading the database. The next version is bringing tags and projects. Projects are going to include dependencies (eg: before I can wash the car I need to buy a car.), so after I update the database I will soon be updating the objects to utilize this functionality.
Eventually I will need to get a site up and hosting it. I will probably create a totally not fake amazon account and serve it using Flask and whateverTheDefaultTemplatingSystemIsCalled. Anyway, quick post: check.
If you would care to join me on my journey you can find my repo here. I am attempting to be very iterative in changes where I can always have a running product.
Okay, so originally I said that I wanted to use MySQL because I had instances available through my hosting provider. After thinking about it, and wanting to choose it, I decided to go with SQLite instead.
Yeah, me wanting to do it was the final decider, but look at what all we gain by using SQLite: It allows this application have its data passed around like a file, it is super cheap, doesn’t run when it is not being used, can be somewhat secure since it does not have a server running, is everywhere in Python books and Android, and, probably most importantly right now, I want to.
Finally I was steered in the direction of SQLite because ultimately I want to build an Android application which is more than just an interface to a remote mysql server.
Iterative development is the process where you make frequent changes to your code base, constantly growing it. Taking this concept to its logical, absurd, extreme would mean that I create a release for each small improvement to my todo list.
Currently this is my plan. v0.1 will likely be a Python script that creates a basic database and allows someone to add items to the list. v0.2 will likely allow the user to mark a task as complete. This numbering/release scheme will continue through each iteration of feature
I have attempted several times in the past to figure out a todo application that I would want to use, everything from the database in the backend to the API to the web client to the mobile client to everything.
I am officially restarting this quest. Everything from planning to implementation, to update and maintenance I am going to try and write something about.
Once I decided to restart this endeavor with my bigger-than-last time skillset I decided to start at the very beginning: Planning the object UML (I think it’s UML. Basically I am planning the values and methods that will make it up) I have not gotten very far as I am currently debating on trying to make the todo list itself a parent item to every item on it, or if they should not share inheritance. I think I will not have them share inheritance, rather the todo list will be full of methods for planning, moving, and fitting the actual todo items and sub items. (Maybe with projects, that seems like a should have too.)
As you can see, I still have a lot of planning to do, so I am going to get to it and will update you again within a week!
Edited to add: Some things that I forgot to mention in the first post. I am going to start by using a mysql database, as that is what I have access to on my hosting provider. The book that I read, Head First Android, touched on creating adapters. I am pretty sure that I can get the adapter written, assuming (and I have to imagine) mysql is supported on Android. If not, I may do something with just API calls and an Android client, microservices style.