-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex-2.html
250 lines (196 loc) · 15 KB
/
index-2.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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Mistake Not (page 2)</title>
<meta name="description" content="Mistake Not (page 2)">
<meta name="author" content="Pookleblinky">
<meta name="keywords" content="yakshaving, resources, coding, scheme, fitness, meta, all, racket, git, rant, haskell, orgmode, workflow, clojure, languages, learning, flipism, emacs, dev environment">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="/favicon.ico">
<link rel="canonical" href="http://pookleblinky.github.io/index-2.html">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="/css/pygments.css">
<link rel="stylesheet" type="text/css" href="/css/scribble.css">
<link rel="stylesheet" type="text/css" href="/css/custom.css">
<!-- Feeds -->
<link rel="alternate" type="application/atom+xml"
href="/feeds/all.atom.xml" title="Atom Feed">
<link rel="alternate" type="application/rss+xml"
href="/feeds/all.rss.xml" title="RSS Feed">
<!-- JS -->
<script type="text/javascript">
(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-xxxxx', 'auto');
ga('send', 'pageview');
</script>
</head>
<body>
<!-- A standard Twitter Bootstrap nav bar -->
<header class="navbar navbar-default navbar-inverse"
role="banner">
<div class="container">
<div class="navbar-header">
<button type="button"
class="navbar-toggle"
data-toggle="collapse"
data-target=".our-nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="/index.html" class="navbar-brand">Home</a>
</div>
<div class="collapse navbar-collapse our-nav-collapse"
role="navigation">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
Tags <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/index.html">All Posts</a></li>
<li><a href="/tags/clojure.html">clojure</a></li>
<li><a href="/tags/coding.html">coding</a></li>
<li><a href="/tags/dev-environment.html">dev environment</a></li>
<li><a href="/tags/emacs.html">emacs</a></li>
<li><a href="/tags/fitness.html">fitness</a></li>
<li><a href="/tags/flipism.html">flipism</a></li>
<li><a href="/tags/git.html">git</a></li>
<li><a href="/tags/haskell.html">haskell</a></li>
<li><a href="/tags/languages.html">languages</a></li>
<li><a href="/tags/learning.html">learning</a></li>
<li><a href="/tags/meta.html">meta</a></li>
<li><a href="/tags/orgmode.html">orgmode</a></li>
<li><a href="/tags/racket.html">racket</a></li>
<li><a href="/tags/rant.html">rant</a></li>
<li><a href="/tags/resources.html">resources</a></li>
<li><a href="/tags/scheme.html">scheme</a></li>
<li><a href="/tags/workflow.html">workflow</a></li>
<li><a href="/tags/yakshaving.html">yakshaving</a></li>
</ul>
</li>
<li>
<a href="/About.html">About</a>
</li>
<li><a href="/feeds/all.atom.xml">Atom</a></li>
<li><a href="/feeds/all.rss.xml">RSS</a></li>
</ul>
</div>
</div>
</header>
<div class="container">
<div class="row">
<!-- Main column -->
<div id="content" class="col-md-12">
<article>
<header>
<h2><a href='/2017/05/exercism.html'>Exercism</a></h2>
<p class='date-and-tags'>
<time datetime="2017-05-23" pubdate="true">2017-05-23</time> :: <span class="tags"><a href="/tags/resources.html">resources</a></span></p>
<p class='authors'>By: <span class="authors">Pookleblinky</span></p>
</header>
<p>On #Racket, samth linked to <a href="http://exercism.io/languages/racket">Exercism</a>, a wonderful analog to $LANG Koans. Each exercise is a basic, small program which you code by satisfying the unit tests. Unlike, say, Clojure Koans, <a href="http://exercism.io/languages/clojure">the Clojure Track of Exercism</a> has you create 58 programs of various degrees of complexity, rather than a running through individual test assertions.</p>
<p>You code enough to pass the tests, then submit. You can keep tweaking your solution, and keep submitting it. On your dashboard, you’ll be able to see how your solution has evolved over time. You can also look at how other people solved the problem, discuss solutions, etc.</p>
<p>Exercism, with its emphasis on creating programs and then discussing them, is an even better way to introduce a language than a standard koan runner. Especially considering that if you already know the language, instead of solving the exercises you can easily submit new ones for others to solve.</p>
</article>
<article>
<header>
<h2><a href='/2017/05/git-koans.html'>Git koans</a></h2>
<p class='date-and-tags'>
<time datetime="2017-05-21" pubdate="true">2017-05-21</time> :: <span class="tags"><a href="/tags/git.html">git</a>, <a href="/tags/coding.html">coding</a>, <a href="/tags/rant.html">rant</a></span></p>
<p class='authors'>By: <span class="authors">Pookleblinky</span></p>
</header>
<p>Git Koans don’t really exist. I can’t be arsed to make it, though. There are some anecdotes called Git Koans, but as far as I can tell there is nothing similar to Clojure/Ruby Koans where you get hands-on experience fixing things incrementally, from tiny mistakes all the way up the ladder.</p>
<p>Basically: “Here’s broken shit. Fix it.” “Yay, you fixed it. Here’s more broken shit. Fix it.” Turn on continuous integration and use post-commit hooks as the koan runner. Eventually, you fix all the problems in the broken repo.</p>
<p>It actually wouldn’t be very hard. You can pretty much use any kind of make system to build a repo then fuck it up per order. The result would be hands-on experience fixing fuckups in git, from small to huge. Hell: a joker shell script that takes all the commands used to evolve a repo, and randomly inserts typos and wrong commands to fuck it up (Maybe just swap the entered command with one which is often accidentally typed instead). “Here’s a fork of Foo that’s been utterly fucked. Walk through its history and unfuck it.”</p>
<p>You could also do local/remote fuckups pretty easily too. Have a shell script that purposely messes up upstream/downstream relations, purposely screws up a merge, etc. Nightmare mode: multiple remotes are created, each randomly screwed up to simulate others trying, unsuccessfully, to fix their own messed up repos.</p>
<p>As far as I can tell, this doesn’t exist. The only time you’re ever fixing a fuckup is in actual goddamn repos during your job. The <em>only</em> time you will ever unfuck an arbitrarily broken repo is when your ass depends on it.</p>
<p>This means that for most people, git is a <a href="https://people.csail.mit.edu/sperezde/oopsla16.pdf">cargo cult</a>. You don’t know how to unfuck things, you’re doing shit like cp -R repo repo.old. Imagine if you wrote code this way: the <em>only</em> time you ever fix bugs is in production code. The only time you ever fix a bug is when your ass is on the line. You’d also do cargo cult bullshit. You’d be that happy asshole sloppily commenting out lines of code to see what’s wrong. In $Lang the Hard Way style tutorials, it’s heavily emphasized that you should break stuff in order to learn what happens, and how to fix it when you do inevitably do it by accident. Yet, I would put money on the bet that the vast majority of git users have never purposely broken a repo in order to learn how to fix it. How many purposely messed up a commit or 3 in order to get hands-on experience with git reflog? How many intentionally committed to the wrong branch so they could learn how to stash pop. How many purposely introduced a painful merge conflict in order to learn the right (painless) way to resolve it? Purposely broke the build in order to learn how to use bisect?</p>
<p>In code, it’s unthinkable that you would have no experience of fixing bugs outside of “we need this fixed yesterday” situations. Yet with git, that’s the case. No experience, at all, of unfucking repos that you don’t depend on for rent or whatever. The average git user has no idea how to fix mistakes they make, and every mistake they do have to fix is only ever on a real repo.</p>
<p>Look at <a href="http://ohshitgit.com/">Oh Shit Git</a>. It lists very common mistakes, in plain English, and explains how to fix them. I guarantee that the vast majority of git users have never <em>purposely</em> made those mistakes in order to see how to fix them. For many, the first time they have to fix a mistake, that mistake is new to them and they end up on ohshitgit or stackoverflow typing commands that may as well be mystic incantations.</p>
</article>
<article>
<header>
<h2><a href='/2017/05/frog.html'>Frog</a></h2>
<p class='date-and-tags'>
<time datetime="2017-05-21" pubdate="true">2017-05-21</time> :: <span class="tags"><a href="/tags/meta.html">meta</a>, <a href="/tags/scheme.html">scheme</a></span></p>
<p class='authors'>By: <span class="authors">Pookleblinky</span></p>
</header>
<p>I made a Frog branch, init’d a frog instance, and am now configuring it a bit before attempting to push it to the main site. Dunno exactly how the switch will go, but I can tell it’s already a lot nicer than Jekyll.</p>
<footer>
<a href='/2017/05/frog.html'>… more …</a>
</footer>
</article>
<article>
<header>
<h2><a href='/2017/05/spinning-it-up.html'>Spinning it up</a></h2>
<p class='date-and-tags'>
<time datetime="2017-05-20" pubdate="true">2017-05-20</time> :: <span class="tags"><a href="/tags/meta.html">meta</a></span></p>
<p class='authors'>By: <span class="authors">Pookleblinky</span></p>
</header>
<p>So, I’ve set up a blog. Creating it was the easy part. Configuring it turned out to be more difficult. <a href="https://stackoverflow.com/questions/31327045/switch-theme-in-an-existing-jekyll-installation">Switching from an existing Jekyll layout</a> Turns out to be a pain in the ass. So, I’m just not gonna switch.</p>
<p>Then, I broke permalinks, made pages load weird by duplicating the _layouts which the default theme doesn’t require (Ah, there’s that annoying ruby magic), and then broke more shit. Repeatedly broke shit for a while, seeing what’s hidden in the ruby magic. More annoyingly, the localhost preview doesn’t indicate some things are broken, you only discover them after pushing to the server. I will probably end up changing from Jekyll, and then building my own static site generator (this seems to be the main sequence of using github pages).</p>
<p>Now I just have to figure out what to write. Years of using twitter have left me unable to write in long chunks. In threads, you still get accustomed to chunking thoughts into small enough pieces to fit into tweets. The luxurious space afforded to a blogpost is overwhelming.</p>
<p>What to write? Well, the question is really what <em>not</em> to write. I write constantly, but in tweets and toots. I need to make writing twitter threads more annoying than writing here.</p>
<p>This is a wonderful opportunity to streamline my workflow, on every level: from editing to git. So many things that can be automated away, so much grudgework eliminated. I have a feeling many of my first posts will just be me discovering new ways to break shit, intentionally or by accident.</p>
</article>
<article>
<header>
<h2><a href='/2017/05/first-post.html'>first post</a></h2>
<p class='date-and-tags'>
<time datetime="2017-05-20" pubdate="true">2017-05-20</time> :: <span class="tags"><a href="/tags/meta.html">meta</a></span></p>
<p class='authors'>By: <span class="authors">Pookleblinky</span></p>
</header>
<p>After so long on twitter, I’m unused to longform writing, despite all my threads. I’m used to expressing things 140 characters at a time, as this paragraph indicates.</p>
<p>This will be my first foray into longform writing in a while. I’ll probably end up parasitizing off my twitter threads.</p>
<p>About this site: I figured I wanted to blog, but I never want to leave vim/emacs to do it. Setting up a github static page with Jekyll was the laziest possible way to accomplish this. Literally took 5 minutes.</p>
<p>Edit: Immediately switched to <a href="https://github.com/greghendershott/frog">Frog</a>, which is a static site generator written in Racket which works on Google Pages. Spinning that up was a little more work, as GP doesn’t let you simply branch, install an alternate generator, and set that second branch as the display. Still, took only a few minutes.</p>
</article>
<footer>
<ul class="pagination">
<li><a href="/index.html">
<quote>←</quote></a></li>
<li><a href="/index.html">1</a></li>
<li class="active"><a href="/index-2.html">2</a></li>
<li class="disabled"><a href="#">
<quote>→</quote></a></li></ul></footer>
</div>
</div>
<footer>
<hr />
<p><a href="https://twitter.com/Pookleblinky"
class="twitter-follow-button"
data-show-count="false"
data-lang="en">
"Follow Pookleblinky"
</a>
<script type="text/javascript">
!function(d,s,id){
var js,fjs=d.getElementsByTagName(s)[0];
if(!d.getElementById(id)){
js=d.createElement(s);
js.id=id;
js.src="//platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js,fjs);
}
}(document,"script","twitter-wjs");
</script></p>
<p><a href="https://octodon.social/@pookleblinky">Follow me on
Octodon: @Pookleblinky</a></p>
<p>Site generated
by <a href="https://github.com/greghendershott/frog">Frog</a>,
the <strong>fr</strong>ozen bl<strong>og</strong> tool.</p>
<p>Using <a href="http://twitter.github.com/bootstrap/index.html">Bootstrap</a>.</p>
<p><em>This is a legal notice that from henceforth, computers are
illegal. You're welcome, bub</em>.</p>
</footer>
</div>
<!-- </body> JS -->
<script type="text/javascript" src="//code.jquery.com/jquery.min.js"></script>
<script type="text/javascript" src="/js/bootstrap.min.js"></script>
</body>
</html>