Clink: Add bash command line editing to Windows cmd.exe

Screenshot of windows cmd.exe shell running Clink

I have always hated the Windows command terminal. This little extension solves some of the headaches.

From the Clink page:

Clink enhances your productivity in Microsoft Windows’ “cmd.exe”.
If you’re familiar with Bash then you will be familiar with the changes that Clink brings to “cmd.exe” (it uses the same ‘Readline’ library that
Bash uses). It is a small utility to enhance “cmd.exe”, adding more powerful command line completion, editing, and history.

  • The same line editing as Bash (from GNU’s Readline library).
  • History persistence between sessions.
  • Scriptable completion with Lua.
  • New keyboard shortcuts;
    • Paste from clipboard (Ctrl-V).
    • Incremental history search (Ctrl-R/Ctrl-S).
    • Powerful completion (TAB).
    • Undo (Ctrl-Z).
    • Automatic “cd ..” (Ctrl-Alt-U).
    • Environment variable expansion (Ctrl-Alt-E).
  • Coloured and scriptable prompt.
  • Context sensitive completion;
    • Executables (and aliases).
    • Directory commands.
    • Environment variables
    • Thirdparty tools; Git, Mercurial, SVN, Go, and P4.
  • Auto-answering of the “Terminate batch job?” prompt.

tmux: Open Source terminal multiplexer

From the tmux website:

tmux lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a
different terminal.

tmux is intended to be a simple, modern, BSD-licensed alternative to programs such as GNU screen.

This release runs on OpenBSD, FreeBSD, NetBSD, Linux and OS X and may still
run on Solaris and AIX (although they haven’t been tested in a while).

Ack: grep-like tool written in Perl for searching source code from the command line

Ack logo

I use this all the time at work. I get people asking me all the time, “How do you get your grep results to look like that?”

From the ack website (via http://kkovacs.eu/):

  • Blazing fast: It’s fast because it only searches the stuff it makes sense
    to search.
  • Better search: Searches entire trees by default while ignoring Subversion,
    Git and other VCS directories and other files that aren’t your source code.
  • Designed for code search: Where grep is a general text search tool, ack
    is especially for the programmer searching source code. Common tasks take
    fewer keystrokes.
  • Highly portable: ack is pure Perl, so it easily runs on a Windows
    installation Perl (like Strawberry Perl) without modifications.
  • Free and open: Ack costs nothing. It’s 100% free and open source under
    Artistic License v2.0.

Ack screenshot

Speccy: PC System Information Tool

Speccy screenshot

Recently, my WIFI connection has begin to slow down in the evenings. I suspect that there is interference due to neighboring WIFI signals. “No worries, ” I thought to myself. “I’ll just bump up to the 5GHZ spectrum and leave the 2.4 GHZ proletariat below.” unfortunately, the WIFI card in my PC doesn’t support 5 GHZ. “No problem. I’ll just get a better wireless card.” Now all I had to do was figure out what kind of slots I had free.

This is where Speccy comes in. I like Speccy because it presents the information in a well organized and pretty way.

JavaScript: The Right Way

JavaScript the right way site header

From the JavaScript: The Right Way site (via Hacker News):

…a JavaScript guide intended to introduce new developers and help experienced ones to the JavaScript’s best practices.
Despite the name, this guide doesn’t mean exactly “the right way” to do JavaScript.
We just gather all the stuff from top developers and put here. Since it come from exceptional folks, we could say that it is “the right way”, or
the best way to do so.

Ready Player One: One of my favoritest books of all time

Book Cover

Synopsis from the Ready Player One website:

If you grew up in the 80s and have a single nerd bone in your body, you should at least give this book a try. I have read it twice already and I inhaled it both times. Everyone I’ve recommended this book to who read it, loved it.

At once wildly original and stuffed with irresistible nostalgia, READY PLAYER
ONE is a spectacularly genre-busting, ambitious, and charming debut—part quest
novel, part love story, and part virtual space opera set in a universe where
spell-slinging mages battle giant Japanese robots, entire planets are inspired
by Blade Runner, and flying DeLoreans achieve light speed.

It’s the year 2044, and the real world is an ugly place.

Like most of humanity, Wade Watts escapes his grim surroundings by spending his
waking hours jacked into the OASIS, a sprawling virtual utopia that lets you be
anything you want to be, a place where you can live and play and fall in love on
any of ten thousand planets.

And like most of humanity, Wade dreams of being the one to discover the ultimate
lottery ticket that lies concealed within this virtual world. For somewhere
inside this giant networked playground, OASIS creator James Halliday has hidden
a series of fiendish puzzles that will yield massive fortune—and remarkable
power—to whoever can unlock them.

For years, millions have struggled fruitlessly to attain this prize, knowing
only that Halliday’s riddles are based in the pop culture he loved—that of the
late twentieth century. And for years, millions have found in this quest another
means of escape, retreating into happy, obsessive study of Halliday’s icons.
Like many of his contemporaries, Wade is as comfortable debating the finer
points of John Hughes’s oeuvre, playing Pac-Man, or reciting Devo lyrics as he
is scrounging power to run his OASIS rig.

And then Wade stumbles upon the first puzzle.

Suddenly the whole world is watching, and thousands of competitors join the
hunt—among them certain powerful players who are willing to commit very real
murder to beat Wade to this prize. Now the only way for Wade to survive and
preserve everything he knows is to win. But to do so, he may have to leave
behind his oh-so-perfect virtual existence and face up to life—and love—in the
real world he’s always been so desperate to escape.

A world at stake.

A quest for the ultimate prize.

Are you ready?

Using the HTML 5 application cache

From the tutorial on the Mozilla Developer Network site:

HTML5 provides an application caching mechanism that lets web-based applications run offline. Developers can use the Application Cache (AppCache)
interface to specify resources that the browser should cache and make available to offline users. Applications that are cached load and work
correctly even if users click the refresh button when they are offline.

Using an application cache gives an application the following benefits:

  • Offline browsing: users can navigate a site even when they are offline.
  • Speed: cached resources are local, and therefore load faster.
  • Reduced server load: the browser only downloads resources that have changed from the server.

Dart: Google-backed programming language built to address issues in JavaScript

Dart Logo

I have to admit that this project pushes all of the right buttons for me. It looks like a fully structured language. It allows the use of types which opens the door for good tool support. It compiles down to JavaScript, so it will run in any browser. It can run on the server. Inheritance, generitc, isolates, annotations… I’m looking forward to building something in Dart.

From Wikipedia:

Dart is an open-source Web programming language developed by Google.

The goal of Dart is “ultimately to replace JavaScript as the lingua franca of web development on the open web platform”, but Dart currently relies
exclusively on its cross-compilation to JavaScript feature in order to run in mainstream browsers. Dart is intended to address issues with
JavaScript that Google engineers felt could not be solved by evolving the language, while offering better performance. Google works on Dart to help
it build more complex, full-featured client-side Web applications.
Dart is a class-based, single inheritance, object-oriented language with C-style syntax. It supports interfaces, abstract classes, reified
generics, and optional typing. Static type annotations do not affect the runtime semantics of the code. Instead, the type annotations can provide
documentation for tools like static checkers and dynamic run time checks.

From the Dart: Up and Running book on the Dart website:

Dart is easy to learn. A wide range of developers can learn Dart quickly. It’s an object-oriented language with classes, single inheritance,
lexical scope, top-level functions, and a familiar syntax. Most developers are up and running with Dart in just a few hours.

Dart compiles to JavaScript. Dart has been designed from the start to compile to JavaScript, so that Dart apps can run across the entire
modern web. Every feature considered for the language must somehow be translated to performant and logical JavaScript before it is added. Dart
draws a line in the sand and doesn’t support older, legacy browsers.

Dart runs in the client and on the server. The Dart virtual machine (VM) can be integrated into a web browser, but it can also run standalone
on the command line. With built-in library support for files, directories, sockets, and even web servers, you can use Dart for full end-to-end
apps.

Dart comes with a lightweight editor. You can use Dart Editor to write, launch, and debug Dart apps. The editor can help you with code
completion, detecting potential bugs, debugging both command-line and web apps, and even refactoring. Dart Editor isn’t required for writing
Dart; it’s just a tool that can help you write better code faster.

Dart supports types, without requiring them. You can omit types when you want to move very quickly, aren’t sure what structure to take, or
simply want to express something you can’t with the type system. You can add types as your program matures, the structure becomes more evident,
and more developers join the project. Dart’s optional types are static type annotations that act as documentation, clearly expressing your
intent. Using types means that fewer comments are required to document the code, and tools can give better warnings and error messages.

Dart scales from small scripts to large, complex apps. Web development is very much an iterative process. With the reload button acting as
your compiler, building the seed of a web app is often a fun experience of writing a few functions just to experiment. As the idea grows, you can
add more code and structure. Thanks to Dart’s support for top-level functions, optional types, classes, and libraries, your Dart programs can
start small and grow over time. Tools such as Dart Editor help you refactor and navigate your code as it evolves.

Dart has a wide array of built-in libraries. The core library supports built-in types and other fundamental features such as collections,
dates, and regular expressions. Web apps can use the HTML library—think DOM programming, but optimized for Dart. Command-line apps can use the
I/O library to work with files, directories, sockets, and servers. Other libraries include URI, UTF, Crypto, Math, and Unit test.

Dart supports safe, simple concurrency with isolates. Traditional shared-memory threads are difficult to debug and can lead to deadlocks.
Dart’s isolates, inspired by Erlang, provide an easier to understand model for running isolated, but concurrent, portions of your code. Spawning
new isolates is cheap and fast, and no state is shared.

Dart supports code sharing. Traditional web programming workflows can’t integrate third-party libraries from arbitrary sources or frameworks.
With the Dart package manager (pub) and language features such as libraries, you can easily discover, install, and integrate code from across the
web and enterprise.

Dart is open source. Dart was born for the web, and it’s available under a BSD-style license. You can find the project’s issue tracker and
source repository online. Maybe you’ll submit the next patch?

Web Appers: One of my go to sites for web development resources

Weappers screenshot

Web Appers is one of the sites I visit regularly to learn about new web development tools and resources.

The website says:

WebAppers is a blog dedicated to share top quality open source resources for web developer and web designer daily. As a web designer, you’ll find
some of the best free icons, stock photos, brushes, fonts and design inspirations. As a web developer, you’ll also find some of the best Javascript
and Ajax components like modal windows, menus, galleries, tooltips, charts, calendars plugins and a lot more …