-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathhelloagain.html
129 lines (117 loc) · 6.5 KB
/
helloagain.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!DOCTYPE html>
<html>
<head>
<link rel="canonical" href="https://hardmath123.github.io/helloagain.html"/>
<link rel="stylesheet" type="text/css" href="/static/base.css"/>
<title>Well, well, well, we meet again. - Comfortably Numbered</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<link rel="alternate" type="application/rss+xml" title="Comfortably Numbered" href="/feed.xml" />
<!--
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script>
MathJax.Hub.Config({
tex2jax: {inlineMath: [['$','$']]}
});
</script>
-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css" integrity="sha384-Um5gpz1odJg5Z4HAmzPtgZKdTBHZdw8S29IecapCSB31ligYPhHQZMIlWLYQGVoc" crossorigin="anonymous">
<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.js" integrity="sha384-YNHdsYkH6gMx9y3mRkmcJ2mFUjTd0qNQQvY9VYZgQd7DcN7env35GzlmFaZ23JGp" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/contrib/auto-render.min.js" integrity="sha384-vZTG03m+2yp6N6BNi5iM4rW4oIwk5DfcNdFfxkk9ZWpDriOkXX8voJBFrAO7MpVl" crossorigin="anonymous"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
renderMathInElement(document.body, {
// customised options
// • auto-render specific keys, e.g.:
delimiters: [
{left: '$$', right: '$$', display: true},
{left: '$', right: '$', display: false},
{left: '\\begin{align}', right: '\\end{align}', display: true},
{left: '\\(', right: '\\)', display: false},
{left: '\\[', right: '\\]', display: true}
],
// • rendering keys, e.g.:
throwOnError : false
});
});
</script>
</head>
<body>
<header id="header">
<script src="static/main.js"></script>
<div>
<a href="/"><span class="left-word">Comfortably</span> <span class="right-word">Numbered</span></a>
</div>
</header>
<article id="postcontent" class="centered">
<section>
<h1>Well, well, well, we meet again.</h1>
<center><em><p>A new beginning?</p>
</em></center>
<h4>Wednesday, June 11, 2014 · 2 min read</h4>
<p>I’m back.</p>
<p>The new Comfortably Numbered runs on a new state-of-the art blogging platform,
developed (of course) by yours truly: shock. Shock brings together a lot of
powerful technologies written by smarter people, and bundles them up into a
command line tool to publish posts.</p>
<p>Shock generates an RSS feed, a homepage, a 404 page, and content pages, all
built on templates and CSS that <em>you</em> write yourself. Then it lumps those in a
directory that you can serve on anything clever enough to serve static
filesystems: Dropbox, Google Drive, Github Pages, Amazon S3, even your home
computer.</p>
<p>Shock uses Mustache’s non-logical templating system (non-logical, in this
context, is a compliment). It was built on a rather simple idea: <strong>if you’re
using a node-based command-line platform to create a blog, chances are you want
control over every single aspect of presentation</strong>. In fact, I consider that
one of the primary symptoms of being a hacker.</p>
<p>Hackers want control over everything that they use. It’s why we prefer
extensible text editors and browser add-ons, and why we spend hours tinkering
with spacing equations in TeX. It’s also part of the reason I migrated away
from Google; App Engine is a very closed non-hacker-friendly environment. The
hacker-control symptoms are what guide us subconsciously in choosing and
designing software. We prefer open-source projects and scriptable systems
because they conform to the pattern of software that gives control to the user.</p>
<p>The opposite is true for most nonhacker packages. Word and PowerPoint are
‘merciful god’ software: they give you features (for example, those dreadful
PowerPoint animations) which you may or may not use, but they retain complete
control over what can be done. Compare that to a hacker-friendly document
generation technology like TeX or CSS. Similarly, nonhacker image editors or
other similar applications try to hide the filesystem from you. The most recent
project you were working on magically appears, along with a list of other
recent projects. This is unaccaptable to a hacker.</p>
<p>I feel the easiest way to convey this message is: “don’t be afraid to expose
your software’s guts”. Often, the best software is the kind that gives you as
many handles and hooks as possible. Make your command-line tools UNIX filters
wherever possible: read from <code>stdin</code> and write to <code>stdout</code>. Use a universally
usable format like JSON for storing data. Most importantly, <em>never</em> explicitly
disallow a user from doing anything.</p>
<p>Preventing stupid things also prevents clever things.</p>
</section>
<div id="comment-breaker">◊ ◊ ◊</div>
</article>
<footer id="footer">
<div>
<ul>
<li><a href="https://github.com/kach">
Github</a></li>
<li><a href="feed.xml">
Subscribe (RSS feed)</a></li>
<li><a href="https://twitter.com/hardmath123">
Twitter</a></li>
<li><a href="https://creativecommons.org/licenses/by-nc/3.0/deed.en_US">
CC BY-NC 3.0</a></li>
</ul>
</div>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-46120535-1', 'hardmath123.github.io');
ga('require', 'displayfeatures');
ga('send', 'pageview');
</script>
</footer>
</body>
</html>