Previously I opened a shell inside Emacs and ran the
hub createcommand to create a new remote Github repository for a project. This worked, but not the same speed as having a feature built-in to Magit itself.
Using animated gifs are a lightweight way to show Emacs in action, as can be seen at Emacs Gifs.
There are several different ways to create animated gifs and so far I have found camcorder.el to be the easiest. This approach has been tested on Ubuntu Linux 16.10.
A Kanban board is a way to visualise your work and help you get more work done. You organise your work into tasks that need completeing and use the board to show the state of each card. Kanban encourages you to get work finished before starting new work.
The amazing Emacs Org-mode can be used to create a very fast and easy to use Kanban board that is with you where ever you are.
Update: Using Org-mode doesnt give me everything I want from a Kanban board, but it was an interesting exersice. For now, I am just sticking to my list view of a Kanban board.
Org-mode is built into Emacs / Spacemacs so there is no need to install any packages or layers for any of the following.
Previous conferences have included a diverse range of topics and speakers in the areas of Clojure, Clojurescript and Functional Programming. At last years conference we were quite surprised how many people are already using Clojure at work. In 2014 we ran a poll of our audience and 18% were using Clojure on a daily basis. For the same poll in 2015, 78% were using Clojure for their daily work. What will the 2016 poll reveal?
The London Clojure community continues to grow and we want to hear all your stories and learn from your experiences, no matter how long you have been working with Clojure. So please consider submitting a talk (or several talks) to the ClojureX conference in London on the 1st & 2nd December.
If you have never spoken before or want some handy hints on presenting and getting your talk accepted for Clojure eXchange, then join our workshop on Giving your first Meetup or Clojure eXchange talk on 2nd August, 2016 (video coming soon).
Anyone accepted to speak at the Clojure eXchange conference gets a free ticket, or re-imbursed if you have already purchased a ticket. You also get a free ticket for a friend. A 25% discount on ticket purchase for anyone who submits to the CFP but does not get accepted.
Using snippets saves you time typing common coding structures and helps you avoid silly typos too. Simply typing in a snippet name and pressing
M-/ or using
M-x yas-expand gives you the full text & code structure from the snippet template.
For example, if you are defining a new function in Clojure then type
defn and press
M-/ to expand to the full definition structure, including all parens. Then use
TAB to move through the structure to complete the name, doc-string, arguments and behaviour of the function.
Lets look at the built-in snippets that come with the Clojure layer in Spacemacs (and should be the default in Emacs YASnippet package).
Using yasnippet saves time by avoiding the need to write boilerplate code and minimising other commonly typed content. YASnippet contains mode-specific snippets that expand to anything from a simple text replacement to a code block structure that allows you to skip through parameters and other sections of the code block. See YASnippet in action in this Emacs Yasnippet video.
To use a specific snippet simply type the alias and press
M-/. For example, in html-mode typing
div and pressing
M-/ expands to
<div id="▮" class="▯">▯</div> and places the cursor so you can type in the
id name, then
TAB to the
class name, finally
TAB to the contents of the div.
You can also combine yasnippets with autocompletion select snippets from the autocompletion menu.
Spacemacs has lots of snippets for most of the languages and modes it supports. However, YASnippets also uses a simple template system in plain text, so its pretty easy to learn. Lets look at how to add your own snippets with Spacemacs.
In regular Emacs, yasnippets expand funciton is usually bound to
TAB, but that key is used already in Spacemacs so
M-/is used instead.
If you just want text replacement you can also use Emacs Abbrev mode.
The June 2016 edition of the London Clojurians coding dojo set the challenge of building a celebrity name smash, taking two “celebrities” and smashing their names together to make a weird or ammusing gestalt name.
For bonus points the challenge would include this celebrity name smash as a service and even more bonus points if using the new
clojure.spec library to put specifications around data structures and functions.
Bonus points are non-redeemable, sorry!
Although our group didnt get get any of the bonus levels, here is the blow by blow development of our code for the Celebrity Name Smash.
Transducers are built upon the design princlple in Clojure of composing functions together, allowing you to elegantly abstract functional composition and create a workflow that will transform data without being tied to a specific context. So what does that actually mean and what does the code look like? Is there a transducer function or is it just extensions to existing functions. These are the questions we will explore and answer.
If you are in the early stages of learning Clojure, then I suggest getting your head around functions such as map & reduce and composing functions with the threading macros before diving into Transducers.
This is my interpretation of the really great introduction to Transducers from Clojurescript Unraveled, expanded with additional code and my own comments.
Many languages new and old provide a way to write code using functional programming concepts, however learning those concepts can take a little time especially when they are joined with OO concepts in the same language.
As Clojure has a simple syntax, many find it easier to focus on learning the concepts and design of functional programming. Then either taking those concepts back to other languages or continuing with Clojure.
At DevoxxUK 2016 I have the pleasure of running a workshop where I can help developers understand the core functional concepts, using Clojure (and Spacemacs) as simple tools.