Outils pour utilisateurs

Outils du site


issue112:c_c

Ceci est une ancienne révision du document !


Tools

Recently, I’ve made a number of changes to my approach when it comes to coding or my environment in general. Therefore, I wanted to spend this month’s C&C discussing the tools I use, and some tips that make my life easier. Tools As many of you probably already know - I’m a programmer with a current focus on web development. As such, most of these tools are geared towards that.

• Atom (http://atom.io) - Created by the folks from GitHub, it offers a similar feature set as Sublime Text, but is free and open source. It’s built on web technologies, so I have noticed it being slower than Sublime when opening massively huge files. However, it has such a swath of plugins, that there’s not much it can’t do. My key plugins are: emmet, git-plus, project-manager, and terminal-plus. The rest of the plugins are typically syntax highlighting (and one JS linter). • Docker (http://www.docker.com/) - This is a containerization system. What this means, is that you can set up software and environments in a container form, which is a step removed from a virtual machine. The difference here is that Docker requires a Linux Kernel, and then passes direct access of the kernel to the container. This is both more efficient, and faster, than something like Vagrant. Best of all - the containers are moveable. • Caffeine (https://launchpad.net/caffeine) - Most people probably already know this one, but it’s a statusbar application that prevents the display from going to sleep. Extremely useful if you’re trying to read something off a monitor while doing something else (in my case, reading wiring schematics off a PDF while soldering). This avoids the need for the “mouse nudge”.

• AwesomeWM (https://awesome.naquadah.org/) - My tiling window manager of choice for a long time now. I typically run multiple desktop environments on my NUC, and switch to whichever is most useful for my tasks. However, almost all my productivity time (programming, testing, writing FCM articles, etc) are done in a tiling window manager. The reason for this is simple - when I’m working, I tend to tile my windows manually on any other computer, so being able to have it done automatically makes my life easier. I’ve also tried and used XMonad, DWM, i3, etc. I do tend to prefer the dynamic tiling systems, but the main reason I stick with Awesome is simple: I have my configuration file the way I like it, and it comes integrated with a system tray. If anyone has a recommendation for one that I may also like, feel free to let me know (my email is at the end of the article). • Bittorrent Sync (https://getsync.com/) - This is my primary method of sharing files between computers. Especially for files that I require for work - as Sync is a direct peer-to-peer sync, it avoids the privacy questions of storing it on an external server that I don’t control (such as Dropbox). Instead, I run it on my NUC, laptop, and a NAS that is always on. That way, the synchronisation is always available to me. • MPD (https://www.musicpd.org/) - The Music Player Daemon - it’s essentially a music server that runs in the background, and can be interfaced by a variety of front-end applications (such as mpc, or ncmpcpp). It’s my preference because it will remember playback location after a reboot, can be used from the command-line, and creates a database. My front-end of choice is ncmpcpp.

Tips

Tips • Hack (Font) (http://sourcefoundry.org/hack/) - This is an absolutely superb monospace font for coding. I currently use it on all computers in Atom and in my terminal. I used to use Adobe’s Source Sans Pro, but since discovering Hack, I haven’t got it enabled anywhere anymore. • Markdown (https://daringfireball.net/projects/markdown/) - This is a mark-up language that I use for almost anything that I know will end up on a website. I can combine it with static site generators, or just quickly compile it into an HTML page (and therefore also save it as a PDF). • reStructuredText (http://docutils.sourceforge.net/rst.html) - Similar to Markdown, except I use this for most python-based projects (including a local readthedocs site I run, keeping my work project documentation organized).

• Git/version control (https://git-scm.com/) - Using a version control system to keep your configuration files up to date and backed up is a pretty common practice. Saving it off-site on a private (or public) repository on Bitbucket or GitHub is a terrific way to make sure you’ve always got your important configuration files available. I also use it for managing my scaffolding for work projects (a scaffold is a bare bones project folder, containing all my task runner setup and folders). • Bash - Learning bash is extremely useful for automating tasks (using cron) or just grouping together a typical workflow (such as using imagemagick to crop an image, and then copying it to a new location). • Shell aliases - For a single command with a set of arguments you usually use, an alias is my preference (over a Bash script). I use this (for example) for keeping my various SSH logins straight.

• Keyboard shortcuts - This is a very generic point, certainly. However, when I’m busy working (especially in a tiling window manager), I hardly ever need to touch my mouse. I find this to be the most efficient way to work for me. When first setting up an environment, it’s not uncommon for me to spend a good hour or two setting up shortcuts and reorganizing default ones so that they don’t conflict, and I can easily reach any important combination as fast as possible. I hope this article proves to be interesting for some readers. If you’ve got your own preferences, you’re of course welcome to stick to those! However, this article is geared towards anyone who is looking for recommendations. If you have any questions (or feel I should look at an alternative), feel free to email me at lswest34+fcm@gmail.com.

issue112/c_c.1473265630.txt.gz · Dernière modification : 2016/09/07 18:27 de frangi