I've decided that I ought to have a small website for at least some of the projects I've created over the years, so I've started doing this for the projects that I view as current.
The initial set of pages are these:
- Pyxie - my nascent python to C++ compiler
- Guild - my new actor library that I'm finding is minimally sufficient
- Iotoy - An IOT statck/project that I started at work, and now maintain on my own time.
All of these share a common infrastructure and design - which is based on a principle of panels.
This was borne from the recognition that many websites today actually look a lot like presentations or slidedecks, just with all the slides on one page. As a result, each page is based on a collection of panels. A panel is analogous to a slide in a presentation, and each panel could potentially be styled differently and laid out differently - in the same way slides can relate to slide designs/slide masters.
As a result, each site has a collection of pages, a bit of meta data about them, and potentially a bunch of includes - that include panels. Again, each panel has a collection of metadata, controlling how it's rendered.
The idea of panels though is also to make things enabling responsive sites easier. (though this isn't implemented)
All content is written/created using markdown.
The three sites are then built in the same way:
- Their base repository has a site/ directory in the root of the repository
- Inside there there is a build_site.py script
- When run, that looks inside the src directory, works through the contents, pulls in any panels used from src/panels, styles them using templates, and dumps the result into a site directory
- The result is then sync'd into the sparkslabs's web tree.
The pyxie site uses a local hook to use the same markdown documents to create the contents of a docs directory and also to update the module documentation when someone types "help(pyxie)"
At the moment, the three sites have very basic styling, but this will be simple to make prettier later.
At somepoint I'll use the same approach to switch over this blog, probably - which could do with a makeover - since this look is now around 4-5 years old!
So, I created a PPA for my home projects - either things I've written, or things I use. ( link to launchpad ) Anyway, I use Ubuntu 14.04LTS, primarily for stability, but making things available for more recent versions of Ubuntu tends to make sense.
To cut a long story short, the way you can make packages available for later distributions is to copy the packages into those distributions. Obviously that will work better for packages that are effectively source packages (pure python ones) rather than binary packages.
The process is almost trivial:
- Go to your PPA, specifically the detail for your packages.
- Hit copy and select the packages you want to copy into a later ubuntu distribution
- Select the distribution you wish to copy them to (eg Vivid for 15.04, etc)
- Then tell it to copy then over the packages.
And that's pretty much it.
As a result, you can now get the following packages for 14.04.02LTS and 15.04 from my PPA:
- pyxie - A "Little Python" to C++ compiler. Very much a WIP. Supports Arduino as a target platform. (WIP)
- arduino-iotoy - IOToy interfaces for running on arduino (STABLE)
- python-iotoy - Python library for working with IOToy devices - local and remote - and publishing on the network. (STABLE)
- guild - My new Actor library. (Pun: An Actor's Guild) (STABLE)
- guild.kamaelia - when "done" will contain a collection of components that were useful in Kamaelia, but suitable for use with Guild (WIP)
Older libraries there:
- axon - Kamaelia's core concurrency library (STABLE)
- kamaelia - Kamaelia - a collection of components that operate concurrently (STABLE)
- rfidtag - A wrapper around TikiTag/TouchaTag tags. (Has a binary element, unknown as to whether will work on 15.04 - let me know?!) (STABLE)
- waypoint - A tool for allowing opt-in tracking at events - for example to allow people to pick up a personalised programmer after the event. (STABLE)
Libraries/tools by others that I use:
- behave - Library I use for BDD
- dfu-programmer - Tool I use for flashing bare Atmel 32U4 chips. It does alot more though.
- parse - used by behave
- parse-type - used by behave
Found this from this helpful post on stack overflow http://askubuntu.com/questions/30145/ppa-packaging-having-versions-of-packages-for-multiple-distros