It’s a good tutorial and introduction to Perl 6 which hasn’t seen wide adoption yet. It’s a solid language which has had a lot of thought put into it and the libraries that exist for it so far are good. Since it’s still Perl, it has that hack-y, fast-paced feel to it where you feel like you can quickly put together a one-off script to get the job done or put together an MVP (Minimal Viable Product). However, since Perl 6 is better designed, you can build a well-structured, well-engineered large project.
Learning new languages and how they work can help make you a better programmer and introduce new ways of thinking that can make it easier for you to find solutions to technical problems.
It’s a great short ebook and very useful for those wanting to see the value of one-on-one meetings. Teams function more smoothly when team leads and managers take the time to have one-on-one meetings. While it can be tempted to put them off or to try and broaden your reach by using surveys instead, a one-on-one is more useful and personal.
In the presentation I walked through how to setup and configure the FreedomBox software which includes Tor, Privoxy, IkiWiki, XMPP and other tools.
While this presentation was technical, I am also available to give presentations on the tech industry and leadership in tech. The presentation was one hour long with a question and answer period and a demonstration of the working hardware and software. The key take-aways from my perspective are that it is possible to build something cool with the RaspberryPi within a weekend as a fun project and that it’s valuable to consider personal privacy and security as enablers of freedom and liberty.
In the last month I was looking for a Node.js library for authenticating with APIs that use OAuth 1.0a or OAuth 2.0, and found a pretty good library: node-oauth. It was great but it would have been nicer if it had promises instead of callbacks, and maybe if the OAuth 2 class implemented more methods. I started to worry that the library didn’t seem maintained, there were lots of issues and pull requests that are still waiting for a response or to be merged into the code.
I’ve also been reading Free as in Freedom and The Cathedral and The Bazaar and the hackers of each book, Richard M. Stallman and Eric S. Raymond, both took other projects and improved them and contributed back their changes and improvements to the community. With their maintenance, the projects (Emacs and fetchmail) had vibrant developer and user communities.
So I have decided to basically adopt the node-oauth project under the new name node-oauth-libre. This blog post is the announcement that I’m doing this and yes that means I’ve really forked the code. The node-oauth-libre project uses the GPL version 3, with the original code and patches to the original project licensed under the MIT license.
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.
So I shared gcal-invoice/MountainView Invoice with a few people and they looked at the code and thought it was pretty good and I realized that I’ve neglected the project for too long because it wasn’t even possible to hit a running copy of the web app. So yesterday I spent the day getting JSCS, JShint added, the unit tests passing and documenting the setup/install process for the project.
What’s been done
This is what’s been done for the project:
fixing unit tests, adding some mocks/spies/stubs using Sinon for googleCalendar module, testing selectCalendarAndFilterEvents (which is one of the main parts of the app)
getting the unit tests to run with PhantomJS rather than Firefox
I didn’t feel the need for a time-tracker like Harvest because that’s too task and minute specific. I wanted the clients to look at how much value was delivered in the day rather than having them focus on minute-by-minute tasks. High-level view vs low-level details.
So anyway, it’s hard to up 1.5 + 3 + 0.5 + 0.5 + 0.75 + 1.5 + … for every day in a week for months was getting to be a pain big enough that it could use some automation.
With MountainView Invoice I would just select all the events in bi-weekly chunks, copy/paste the table of hours per day worked into an invoice. Then send it off to the client. Much faster and after double-checking the calculations manually and checking them with unit tests I was confident that I could just breeze through invoice creation.
Very important note: the code is licensed under the GNU GPL (General Public License) version 3 or later. I was considering making it AGPL and may do so if I continue to work on it.
There’s a new task runner around, Gulp.js, and it’s supposedly very good (haven’t had a chance to try it yet) but there are still many projects using Grunt. If you want to try out Gulp on an existing Grunt-based project, it can be tedious to start rewriting things because Gulp is imperative and based on the idea of streams while Grunt is more declarative.
What I like about gulp from what I saw is that it’s a wrapper around orchestrator and vinyl-fs and it’s straight-forward. Grunt is monolithic from what I’ve seen and I think moving to Gulp will be a good move over the long-term. However, I think there is still a place for a declarative sort of task configuration file.
2017 Update: grunt2gulp is still being used but it seems now that people are moving from Grunt and Gulp to webpack (or Rollup.js). Gulp is still a very cool build tool to use. However, I recommend that people move away from Grunt as soon as possible on to more modern tools like Gulp and Webpack and Rollup.js.
Inspired by the doing command line app for logging progress on to-do items and tasks, I decided this would be a neat feature to add to Emacs. The org-doing add-on lets you track what you are doing now, what you want to do later, and anything you have made progress on or completed.
It is an add-on for Emacs that hooks into org-mode. This means that, with timestamps, you can create an org-mode agenda-view that displays the tasks you have done in the last day and the tasks you have remaining to do. From there, you can add more notes or clock in the time or do whatever else you can do with org-mode.
The idea is to keep a worklog and notes for each task as you are completing them or making progress on them with just a few keyboard shortcuts.
I was reading about a PhD student who created a plugin for an IDE that integrates searching for questions & answers on a knowledge base that included an easy way to insert code snippets from the answers in their own source code.
I use stackoverflow as often as I can and try to contribute answers but sometimes I have questions of my own so it would be nice if there were a quick, integrated way of using StackOverflow from within Emacs.
Type in M-x sos and then type in your search and the results are listed using org-mode. Eventually I want to be able to ask questions from within emacs and allow question buffers to be opened that are refreshed once in a while to see if there’s an answer yet.