That's very subjective. It's templating language is one of the reasons why I use Hugo. It reminds me very much of Lisp ({{ or $foo $bar }}).. parens replaced with double curly braces.
Now, everyone doesn't like Lisp :)
353 karma · joined July 12, 2016
Blog: https://scripter.co
* Few projects:
- Org-mode + Hugo: https://ox-hugo.scripter.co
- Eless (A Better less): https://eless.scripter.co
That's very subjective. It's templating language is one of the reasons why I use Hugo. It reminds me very much of Lisp ({{ or $foo $bar }}).. parens replaced with double curly braces.
Now, everyone doesn't like Lisp :)
ox-hugo basically lets each tool to do what they are best at: Org mode deals with the rich markup and Emacs/Elisp processing, and Hugo deals with the super-fast Markdown->HTML conversion.
[1] ox-hugo is an Emacs package that exports from Org mode to Markdown format that's compatible with Hugo/Blackfriday + automagically converts natural Org metadata to TOML/YAML front-matter.
I do cache-busting > hugo > minification using a simple bash wrapper script. Though, in the coming week, Hugo might natively start supporting the cache busting and minification.
As someone who follows Hugo development closely, I wouldn't be surprised if both md5 tagging (fingerprinting) and sass support is out in the next week :)
See the Hugo Discourse for more details.
Writing in Org mode has really reduced the writing block for me. I'm so glad I switched from Octopress to Hugo about maybe 2 years back.
I have been using this technique to learn the Nim programming language.
I write notes (semi-tutorial) about this language as I learn more about it. I explicitly mark things as "need to understand" or "todo" so that anyone browsing these notes knows that it's not written by a Nim expert but a Nim learner. And also the notes as strictly labelled "Notes" to make that explicit.
The notes: https://scripter.co/notes/nim/ (continuously work in progress)
This is the best experience I've had of learning so many other programming languages in the past.
Couple of reasons why I think Nim is an awesome language:
1. Syntax: It's beautiful. If you like Python syntax, you'll like this. On the other hand, it's much more concise, without losing readability.
2. Static type check, with a sprinkle of type inference only when assigning the initial value.
3. Proc/operator overloading: Have procedures (functions) named the same handle different data types differently. And the same with operators.
4. Support: Great support over Gitter, GitHub issues, Nim Forum, etc. Great devs! (though, I incorrectly thought earlier that that wasn't the case :))
5. Makes me feel home: Hacking/coding in Nim comes the closest to coding in Emacs Lisp. In Emacs, if I want to understand what a function does, I look at its source code. I can do the same in Nim.
6. Editor support: The nim-mode Emacs major mode and ob-nim Org Babel package are awesome!
7. Documentation: Check out the Nim the index.html to search anything, and also Devdocs.
8. Whitespace: Tab not allowed, yay!
9. Not as easy as installing go/rust toolchains locally (without admin rights), but not difficult either.
10. The nimble tool (equivalent of pip) works great for building/distributing Nim projects.
.. and much more! Computer science experts can talk about more benefits of Nim from systems programming point of view (GC, etc.).
For my use case, where I use Nim as Python/Bash replacement, CLI utility development, it looks excellent so far.
In plain terms, it's joy coding in Nim :)
Few projects: nbuild[1], ntangle[2].
I wouldn't say that these are exemplary projects.. but they just show that Nim can replace bash/Python for command line utilities.
[1]: https://github.com/kaushalmodi/nbuild/ [2]: https://github.com/kaushalmodi/ntangle/
I simply commit the edits in git, push them to Gitlab, and Netlify picks those up and publishes using Hugo to https://scripter.co.
Hugo v0.43 has inbuilt cache busting on the roadmap, and Hugo v0.42 will probably be released in about a week.
Emacs allows you to look into and debug any function or variable, be it internal that shipped with its core, or one that you wrote.
I use Emacs as my daily driver. Your comment feels very much like from someone who hasn't realized the true powers of Emacs-Lisp. Even if someone doesn't hack in Elisp, once they discover power packages like Org mode or Magit, they will know right away that there's no competition for those out there (vim, Atom, VS Code, etc).
> For years, James Gosling, author of the first version of Emacs that ran on Unix (the ancestor of GNU Emacs), has been begging people to stop using Emacs.
Even if that's the case, what's the point he's trying to make? Why? How does that matter to folks who are using Emacs today, and know it first hand that it's the best hackable text buffer engine out there?
It will help you with the organization using Org mode. But as you use it more, you might find yourself doing many more things more efficiently in Emacs.
Emacs is not something like Notepad where you go through all the settings and be rest assured that you know everything about the tool. Emacs is so extensible that if someone claims to know it 100%, they are naive. The beauty is that you learn to use the stuff that only you need, and learn more things as they come.
I am telling the above because you might get overwhelmed looking at Org mode feature set. But you don't have to know everything in that.. just learn and srart using what you need right now.
Hmm, I did not know that (I have a print copy of that book).
> I wouldn't post a link to a pirated anything.
OK. But just in case, someone still wants a physical book, they can get it used from Amazon (can talk about Amazon in US) for ~$3.
I have been reading through it and running code snippets from there as I find time. It's awesome!
If anyone's interested, I also update my notes from there on my blog.. https://scripter.co/notes/awk. I plan to have that notes post contain the entire book when I am done.
# How to use this file:
# tmuxp load /path/to/this/file/main.yaml
# - Specifying the .yaml extension is optional
# - Specifying the path is optional if file is in ~/.tmuxp
#
# tmuxp --help for full help.
session_name: main
suppress_history: false
start_directory: '~'
shell_command_before:
- unsetenv SHELL_CONFIG_LOADED
- source ~/.alias
windows:
- window_name: '*scratch*'
layout: tiled
focus: true
panes:
- cd ~/downloads/git # Top-left
- cd ~/downloads/git/emacs # Top-right
- focus: true # Bottom-left
shell_command:
- bob
- sleep 2
- tclr # Clear tmux status indicators
- shell_command: # Bottom-right
- cd ~/.emacs.d/elisp/org-mode
- module load gcc/6.1.0 # Needed for ob-fortran tests to pass when doing make test for Org
- window_name: foo-1
layout: even-horizontal
shell_command_before:
- bob
- cduh
panes:
- null
- null
- null
- window_name: foo-2
layout: tiled
shell_command_before:
- bob
- cduh
panes:
- null
- null
- null
- null
- window_name: uvm_lib
layout: tiled
panes:
- cd ~/gitlab/bar_uvm_lib
- window_name: sandbox
layout: even-horizontal
panes:
- null
- null
- null
- window_name: hugo
layout: tiled
panes:
- shell_command:
- cd '~/downloads/git'
- shell_command:
- cd '~/e/elisp/ox-hugo/example-site'
- ./srv
- shell_command:
- cd '~/hugo'
- focus: true
shell_command:
- cd '~/e/elisp/ox-hugo'
- window_name: nim
layout: even-horizontal
panes:
- cd ~/sandbox/nim
- cd ~/sandbox/nim
- focus: true
shell_command:
- cd ~/sandbox/nim/chat
- window_name: tok
layout: even-horizontal
shell_command_before:
- tok
- cduh
panes:
- null
- null
- null
- window_name: zoo
layout: even-horizontal
shell_command_before:
- bob
- cduh
panes:
- null
- null
- null session_name: 4-pane-split
windows:
- window_name: dev window
layout: tiled
shell_command_before:
- cd ~/ # run as a first command in all panes
panes:
- shell_command: # pane no. 1
- cd /var/log # run multiple commands in this pane
- ls -al | grep \.log
- echo second pane # pane no. 2
- echo third pane # pane no. 3
- echo forth pane # pane no. 4
The example is very simple (I use tmuxp to heavily configure the session initialization), but it shows how you can have a config file to set a session's name, set the number and names of windows in there, set the layout of panes differently if you want in each window, run commands like "cd", set env vars differently if you want, in each pane.You can find a lot more examples of tmuxp config on its doc site[2].
tmux doesn't allow one to have such quick, easy-to-read config files. You can of course do most of this in your .tmux.conf, but it will be too complicated to allow reuse and quick modifications.
[1]: https://github.com/tmux-python/tmuxp#load-a-tmux-session
I heavily use git, but via Magit in Emacs.
[1]: My own little utility to use bare bones Emacs as less/pager: https://eless.scripter.co
Just clarifying if how I counted was correct..
5 x x x x 9
Above is a crude illustration.. If I first pick the card with "5", I start counting from 1 from the next card, till 5. And then I would land up on whatever that card is (9 in this example), and then I would repeat.Did this, but did not work for me.
Of course, I realize that implementing this would be a lot of effort and would require change in your release flow.
But just in case, there's more demand for what I suggest, here's an inspiration from FontAwesome: https://fontawesome.com/get-started/svg-with-js. Note how they provide a fontawesome-all.js having all the icons. But they also provide separate fa-*.js for different icon families for the people who don't care about downloading the whole thing.