Sometimes the best information is provided by the retailers, which is already wrong, but the real issue is that when retailers are not selling something anymore, they remove the product from the public page, and the information gets lost.
I’ve decided to fix the problem so I’ve created the RadioControlPedia. A wiki for RadioControl were articles will always stay and stay at the same URL. Over time it’ll have more and more information.
Every time I start a new project I hesitate to make the first commit: what should I commit and what shouldn’t I? Essentially, what should I put on .gitignore.
The goal of this site is to collet snippet of .gitignore that one should use depending on what framework, software, libraries, etc. are being used. I’ll try to put the ones I’ll know, but please, if you know any, send me an email to firstname.lastname@example.org and I’ll publish (with attribution).
My final goal is to develop a small web application with a list of the frameworks (as checkboxes or something) from which you can pick and it’ll build the .gitignore. But I’ll only do it if this site gathers enough information.
It is my first try at a blog with a subject. The subject is, of course, science and coolness. Well, cool science. I find things related to science, every day, that are cool and I want to share them. Videos of experiments, conferences that are funny or inspiring. This is my way to share them with everybody.
It’s also a statement in an age where myth and legend are jumping at us everywhere, we have to remember that science and technology brought us where we are and that science is cool.
My web site was born around 1998 or 1999. Since then it has been many things, but for a while it has been a blog. My blog, my personal blog, where nothing I write is off-topic. Science is cool is my first try at a blog with a subject and that a blog that I intend to grow beyond a handful of friends.
Of course, linking, sharing, re-tweeting and so on is very welcome.
I go to a book store and after looking around I’m forced to ask.
– Excuse me, where’s the science fiction section?
The woman points to the back of the book store, to a poorly lit section, next to the book for kids sector full of toys and little chairs. Well, at least they have a section. From where I’m standing it look like a whole section, it probably has around 500 books. There must be something that I haven’t read.
When I arrive I notice that a whole shelf consist of Lord of the Rings books. I continue scanning and I see a lot of stuff about dragons and vampires. There’s even a copy of Harry Potter left over when it wasn’t popular enough and didn’t deserve the huge tower of books in the middle of the bookstore.
Where is the science in wizards, dragons and magic rings? You know, Science Fiction is called that way for a reason. If I wanted to read fantasy I would have gone to the fantasy section, thank you very much.
This is not the worst. I’ve seen countless top ten science fiction TV shows list that included Buffy and Angel. “Science Fiction” is not a label for weird. I was throwing a huge tantrum about it and my wife, in her infinite understanding said:
– Maybe they don’t know it isn’t science fiction.
How could they not know? It says “science” in the name. But apparently people are not very logical and never think what a name means (and keep calling the United Kingdom England, The Netherlands Holland, and United States of America, well, America, which is a continent, not a country).
I’ve decided to solve this problem once and for all in the geek-programmer way, which is of course, a web site with voting. I created:
Of course, if everybody voted we would end up with a mess the world is today, but I hope only geeks will put up with my bad graphical design skills and actually vote and comment so we’ll end up with pretty good results. So far Star Wars is 4th from the bottom, heavily on the not-sci-fi side of things, so I’m pretty sure it’s working. You have to be very hard core to believe Star Wars is not Science Fiction.
I’ve started learning C# and ASP.NET MVC about 5 or 6 months ago. While learning I’ve developed a clone of Reddit that had a very clear differentiator: you could see the messages and the web page at the same time. When I was close to completion Reddit released exactly that feature. I scrapped that project.
Then I had the idea of making Is it Science Fiction?. I started coding and since the day of the idea to the day of deployment I had one full day of work and four days of part time work. I was really surprised by my productivity, and quite satisfied.
When I started to write some complex features for Is it Science Fiction? I hit a roadblock on writing tests for it. What sometimes is called functional tests are not trivial in ASP.NET MVC. I mean tests that hit controllers properly initialized and the database with some fixtures (but not touching HTTP). I spent three days developing a framework for those kind of tests when I realized I was wasting my time, Rails could do this out of the box.
I’ve decided to re-write Is it Science Fiction? on Ruby on Rails while I was reading Agile Web Development with Rails. Unfortunately, it took me more than a month to do it. I’ve moved to Rails because I thought it was more mature and had many more libraries and utilities that would make me more productive. I was extremely disappointed. But, my first ASP.NET MVC project also took a long time, while I was reading the book; so it’s not fair to compare my time at re-writing Is it Science Fiction? because I was reading a book while doing it and not skipping any part of the book even when it had no application to my current project.
I want to find out how productive I’m in Rails. So I’ve decided to try to do a simple project in a weekend. That day is, starting today. Today I will run the rails command and create the project and if everything goes well, today or tomorrow you’ll be able to use the app. It’s not going to be a very complex app; after all it’s only one weekend and I do aim to having tests and clean code. I’ll try to post as I go along so my blog is going to be quite noisy.
The project code name is Sano, it means health in Esperanto. It’s a health tracker. Both my wife and me want to be more healthy and the first step of course is for me to code an app for it. Let’s start with a spec for Sano.
Sano is a health tracker that can track many different health parameters of a person. The goal is for that person to have a clear view of how healthy they are and their health trends (am I getting better or worse?). It should also be a good tool to convey clear scientific non-biased information to a medic when the users needs that.
All units of measurement will be SI. My apologies to those three countries in the world that have not adopted these units and are using weird obsolete old units. Grow up!
A user should be able to use the site without doing absolutely any authentication. The user should be able to enter data, see tables, see charts and all that information is stored in reference to a “ghost user”, that is session only. If the user closes the browser all that data will become inaccessible. The user will be warned several times about the potential losing of data if they are trying the application in this fashion. The warnings would be as notices on the page itself and if possible a pop up when closing the page.
For logging in, Sano will use OpenID and only OpenID with the usual friendly login pages. No other information will be asked and no registration page will exist. Users already in the system will log in to see their previous records, the rest will register on the fly silently. If a user has session data before logging in (previous paragraph), that data is going to be merged with their authenticated user.
The site won’t have any publicly viewable section. Even the sections that you can see without logging in are shown differently user by user. In a sense it’s like Facebook.
The profile of a user will be a set of meta-data associated with that user. It will contain the following fields:
name: the real name of a person (not broken into last name and first name, because that doesn’t make any sense; how would Madonna use my system?)
height (consideration: what about varying height? like in children, for version 2 or 3 or 23)
birth date (important to know the age, maybe).
all fields are going to be optional.
Sano will start with two trackers:
blood pressure (systolic, diastolic and pulse)
Each of the trackers will have its own CRUD to add data and will be implemented as standalone controllers (that meaning no meta-tracker that can track anything astronaut-architect-style).
Each of the data points will be stored with time and date (most weight trackers only track date; this will allow for time variation compensation) and the form should allow the user to enter a data point as happened now (or just now) but also with a specific date and time (don’t ask for any more precision than the hour of the day, but store up to the seconds, just in case).
Every tracker should have a table for updating, deleting and exporting (it should export to CSV) but also a graphic view that is tracker dependant.
The weight tracker asks only for one number: the weight. The first iteration will work only with kilograms.
The weight tracker will ask you to complete your profile to include your height to be able to calculate the range of acceptable weight.
In the table view three colors will be used, red, yellow and green to show under or over weights according to your height, gender and maybe age.
The chart should be a simple line chart at the beginning. In a second version it should have a weighted average according to the Hacker’s Diet rules.
Blood pressure tracker
Three pieces of information will be asked in this tracker:
The table view again will use the red, green and yellow colors to show dangerous values.
The chart should be a bar chart showing sets of three bars (one for each measurement). Each of the three vars will be in a different tone of green to be able to distinguish them and when they reach dangerous levels they will turn yellow and red with different tones accordingly.
The dashboard is a chart of all or most of the data you have in the system. A one place to look at your current health.
Third party access
All the data in the system is private and sensitive so it’ll be kept private. But, a very important aspect of the system is to give other selected people access to your data. There will be two ways to grant a third party person access to the system: permanent or temporary (both are revokable at any time).
The permanent access would mean giving access to another registered user in the system. That’s most likely your main medic or a medic that’s treating you. Consideration: what about write access to a trusted third party that helps keep track, what about allowing your medic to add information or annotations that require your approval?
It would be nice to be able to keep that kind of close relationship with a medic, but it’s not very realistic. So there’s a temporary access system. You will log in to your account and generate a token for half an hour access to your profile. The person that gets the token will be able to see your profile for half an hour. The use case is that you go to the doctor, you pick your phone (potentially while you are at the weighting room), log in to Sano, generate the token and the URL would be displayed big on the screen. You can then show your phone to your medic and he/she would have half an hour access to your data.
It’s not a huge app, but it’s not a hello-world either. I don’t plan to be able to do all of it on one weekend and there are some parts, like charts, which I desgined without knowing the capabilities of available charting libraries. It may not be possible to do some of the things I mentioned without writing some custom charting which is out of the question.
Since my goal is to have something deployed, as soon as it is barely usable I will deploy it, and then I’ll keep adding features until the end of the weekend (or whenever I have to stop).
Sano is the code name for the app, I’m not sure about the public name. If you have any suggestion with an available domain name, please let me know (note: I won’t buy domain names unless you are doing it out of good faith and selling it for no more than 200% of its cost).