Its most unique feature is that it makes mobile apps. The code will compile into a native Android or iOS/iPhone app with all of the content managed by the SiberianCMS backend. If you ever wanted to quickly create a mobile app, this might be the tool for you. I’m considering using it to lower the effort and cost required to create a mobile shopping app and to use it for hackathons.
On 17 October 2016, I gave a presentation at ActivateTO, a Toronto-based non-profit that hosts a speaker series. It was located at Toronto City Hall which is a very nice venue, very organized with great audio/visual gear (projectors and mics). My presentation included FreedomBox.
The topic that night was Pokemon Go and its implications for society, including its impact on personal privacy, ethics and responsibility of the game developers to their audience, and how game players interact with one another.
My presentation covered community-building alternatives like Loomio and privacy protection like Signal and the FreedomBox, a suite of software for the Raspberry Pi (and other hardware). The idea is that Pokemon Go encourages people to form small communities but that they’re all within the service of one commercialized game development company that has profits as its overriding goal. I pointed out that Pokemon Go had, within a month, started to explore how to inject more advertisements into the game and I predict, at some point (maybe during the winter months) when player engagement drops and there are fewer people playing the game, that they will be look at selling data to marketers and advertisers.
The presentation was great to give and there were quite a lot of people in the audience and I hope I enlightened them as to the other possibilities that exist out there.
I also made a few choice remarks about the ethics and responsibility that software developers have to their users/audience and how in 2016 we can’t ignore basic privacy implications in the code that we create. We have to be far more responsible and communicate more with our users to ensure that we’re doing the right thing.
I just posted the slides for the talk I did at Software Freedom Day on 19 September 2015. The topic was open source and open allocation and how the two relate and how the future of companies is to mirror the open source development methodology. Open allocation allows workers to choose what they’re working on, with some caveats and limits of course. It works best when developers are aligned with the company mission and organization goals.
The free book, Producing OSS / Producing Open Source Software, is one I’ve referred to now and again when thinking about how free/open source projects should be run and lately I’ve been thinking about how a big company like Red Hat works when they’re based around free/open source projects.
Here are some choice quotes that I think can serve as useful lessons for open organizations.
The talk was on 19 September 2015.
Open allocation: people get to decide what to work on and how. Gives people an opportunity to contribute to strategy, business objectives, etc. It’s bottom-up in terms of organization hierarchy.
Closed allocation: people get to decide how to work on something, they’re given the what by their boss, other department, client, etc. This is the typical way things work at a job and in most jobs this will continue to be the case.
Open source projects are open allocation; the maintainer or developer decides what they want to create and then creates it. There’s no external incentive making them give up control over what they want to create.
I’ll be writing more on this subject and hope to do a few more presentations to clarify the ideas, but basically open allocation is the future of (most) work. Our productivity levels are high enough that we can let people have 20% time to think of new projects and to work on them. At a typical company you’re losing value if you don’t let the employees on the front-lines make contributions to the strategy or business objectives of the company.
At Meta Stackoverflow there’s going to be a beta release of a Documentation feature. The idea is that Stackoverflow community members can contribute code examples for functions and classes and APIs that they use. It would be like an editable wiki cookbook of recipes, kinda like the Ruby Cookbook or the Perl Cookbook or the Python Cookbook.
It’s a very good idea but since I like pushing for as much automation as possible, I started to dream about whether it would be possible to automate generating code examples. It would be hard to generate documentation that explains the code and I think that still requires human intervention. However, I think the problem of generating code examples is tractable.
If you have the type signatures of a set of functions you can generate a set of solutions that use the functions in different ways, constrained by whether their types match. If a function doesn’t exist that matches, an example of the type can be generated or left as a parameter (an exercise for the reader to fill).
Here’s a sketch of how the idea would look like, it’s pseudo-code:
Having types to constrain the generated example helps and you definitely need to populate the examples with instances of each type. The obvious issue is that the examples generated can appear nonsensical because they don’t reflect what actual happens within each function, they treat the functions as a black-box. I’m not sure how much of an issue this would be because you’re still learning the patterns of using the functions and classes and types and you will likely be trying to run the examples yourself to see what you get.
Perhaps the above example would be more accurate if I omitted the output of the evaluations and just left the calling code, like in this longer example which uses functions from two modules:
I’m not sure how much this helps either without more constraints and guidance. I still feel this is worthwhile to automate with a light editing/review pass. The goal would be to get used to different calling patterns for functions and to visualize most of the possibilities of using some library or class or function, more aimed at newbies and new users of that library/class/function.