-
Licenses and Open-Source Technology
04/18/2016 at 04:37 • 0 commentsSince this project is open-source and will be completely open for anyone to download and use, it is important that I get the documentation and licensing correct so that the open-source community is also able to help contribute in an easy, well-understood way. To that end, here are the sources that I am currently using:
weathericons.ttf - SIL Open Font License
Comme-Thin.ttf - SIL Open Font License
python-forecast.io - FreeBSD License
pygame - LGPL
Since the project is early on in development, this is all that I have. In order to comply with the above licenses, I need to do a couple of things if I want to include them in my source code:
- Include the SIL Open License text file in my source
- Include the FreeBSD clause with the forecast.io source
- Explain to users how to download pygame somewhere in my README
This means that I have complete control over the license that I choose provided I do the above things, since none of these are copyleft and require me to adapt a certain license.
Since I want the project to be as open as possible and for people to be able to submit their own modules to expand the platform, I am going to choose to also use the FreeBSD clause, since it protects my code from simple copying without credit. This means that people are able to modify it and use it to make their own modules but are free to use their own licenses if they wish if they choose to make a module. To that end, I also do not think that it is necessary to force people to use a certain license. As long as I have my code covered, I am safe from unauthorized copying.
-
Finally Updated Project with Concept Screens
04/18/2016 at 04:00 • 0 commentsI updated the project with concepts screens of what the final outputs will look like. Ideally the information is contained in modules that can be re-positioned using some kind of outside app which generates a configuration file which contains the information for displaying modules on the main screen, and contains triggers for how to get to the module-specific screens. For instance, if you say, "Weather", and a weather module is installed, the screen will switch to a full-screen version of that module, displaying more detailed information. This could also be the same for the agenda, music, and stock market modules when they get implemented. I've also been thinking about how all these modules are going to be able to update quickly. I think I'm going to research more into window managers and see how they implement, well, window managing and see if I can learn anything from them. I am also looking into having the main process daemon-ize when the command is run, and then being updated through some command line interface which communicates with the main process by telling it what to do. I know that the cmus music player for Linux does this, so I will have to look into it. Hopefully I can use the Linux internals, since they are proven to work and I would learn something new. Other than that, I've been busy with a number of other projects but have been doing a lot of conceptual thinking of how I want to lay out the architecture of this project. Going forward I will have to be mindful of the fact that I may switch to a C program using OpenVG, so I will need to document how my code works so that I can port it easily. Or perhaps write C bindings for use with Python so that I get the great modules in python and the important screen drawing code in OpenVG for speed.
-
2-Way Mirror Mounted
04/04/2016 at 16:27 • 0 commentsI finally got around to mounting the 2-way mirror to the LCD screen. I took some 3M double-sided heavy duty mounting tape and applied it to the LCD screen bezel. Then I cut off the excess overhang and flipped the LCD screen onto the mirror. Since I have extra mirror overhang around the LCD screen, I used some black electrical tape to stop any light from coming through the sides and ruin the full-mirror effect.
I also recorded a small video showing the program displaying the beginnings of a weather app. The app can already find the weather for the current day and the next week, but right now it only displays the weather. I will have to write some code in order to find out the size of the boxes that are made by the different weather icons in real time, which shouldn't be too hard. I have to think about how I want to layout the weather module in relation to the rest of the screen elements. I will hopefully have that designed and the plans uploaded by the end of the week.
-
Looking into Other 2D Graphics
03/18/2016 at 15:10 • 0 commentsSo I've been looking into 2D graphics programming recently because I was a little displeased with pygame's performance ( I'm a gamer at heart so I love that smooth 60 FPS :) ). I was looking into the specs of the Raspberry Pi models that I owned and noticed that pretty much all of the RPi's use the same graphics processor. This processor supports OpenGL ES, an implementation of OpenGL for Embedded Systems (hence the name...). In addition to OpenGL, there is another standard by Khronos (the group that maintains OpenGL) called OpenVG - a 2D vector drawing API for hardware-accelerated graphics. If I could develop a C library for this and then make python bindings for it, it could potentially save me lots of CPU power. Before I switch though I should check to see if pygame is already using this API. Alternatively, I could look into this repository I found: https://github.com/ajstarks/openvg. This is a project for exploring OpenVG on the Raspberry Pi. I should take a look into this at some point in the future to see if I could integrate it instead of writing my own libraries.
-
Fixed Unicode Strings not Displaying Correctly
02/23/2016 at 01:59 • 0 commentsFixed the code not displaying unicode strings correctly in python 2.7, at least for the weather-module. In this case, the fix was to use the line
from __future__ import unicode_literals
at the beginning near the rest of the imports. This tells python to use unicode as the default encoding scheme for the strings in the file. If not used, the icon text is rendered as a bunch of "icon not found" boxes.
-
Two-Way Mirror Purchased!
02/17/2016 at 03:16 • 0 commentsI bought the actual two-way mirror three days ago and have been kicking away at setting up the actual Raspberry Pi for showing the screen. I got a whole 2'x4' sheet of it which is cut down to 11"x18". Two-way mirrors are actually like acrylic plastic, so they are cut in the same way. I had mine cut by the shop that sold it to me, since it was just a simple rectangle. I have to get some foam adhesive strips to mount the plastic to the LCD now.