-
Notifications
You must be signed in to change notification settings - Fork 3
/
about.html
655 lines (540 loc) ยท 45.9 KB
/
about.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
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
<!DOCTYPE html><html><head><meta charset="utf-8" /><title>About - The Terminal Programmer</title><meta content="2023-07-04T06:14:29-07:00" name="DCTERMS.created" /><meta content="2023-07-04T06:14:29-07:00" name="DCTERMS.modified" /><meta content="Suraj N. Kurapati" name="author" /><meta content="" name="keywords" /><meta content="width=device-width, initial-scale=1" name="viewport" /><meta content="Readably https://github.com/sunaku/readably" name="generator" /><link href="style.css" rel="stylesheet" type="text/css" /><link href="index.atom" rel="alternate" title="feed" type="application/atom+xml" /><script src="js/jquery.slim.min.js"></script></head><body><article data-entry-id="about" id="body"><header><div class="navigation"><a class="rootlink" href="index.html#about" title="The Terminal Programmer"><span>The Terminal Programmer</span></a></div><h1 class="title">About</h1><div class="author">Suraj N. Kurapati</div><time class="date" datetime="2023-07-04T06:14:29-07:00"> 4 July 2023</time></header><hr /><div class="description"></div><div class="content"><blockquote>
<p>“What we do in life, echoes through eternity.” — Maximus</p>
</blockquote>
<p>I’m a <a href="vegan-for-life.html">vegan</a>, type <a href="https://www.16personalities.com/intj-personality">INTJ</a> <a href="https://www.enneagraminstitute.com/type-1/">1w2</a>, open source <a href="https://github.com/sunaku">enthusiast</a>, and computer <a href="https://www.soe.ucsc.edu">engineer</a>
who fell in love with computer programming as a
teenager and hasn’t looked back. :-)
You can send me <a href="https://emailselfdefense.fsf.org/en/infographic.html">an encrypted message</a> at
the address specified in <a href="https://pgp.mit.edu/pks/lookup?search=0xF3DE10FBE93037E2&op=index">my public key</a>.</p>
<p><ol class="table-of-contents"><li><a id="__favorite-things__" href="#favorite-things" class="downlink">Favorite things</a><ol><li><a id="__inspiration__" href="#inspiration" class="downlink">Inspiration</a><ol></ol></li><li><a id="__operation__" href="#operation" class="downlink">Operation</a><ol></ol></li><li><a id="__depiction__" href="#depiction" class="downlink">Depiction</a><ol></ol></li><li><a id="__philosophy__" href="#philosophy" class="downlink">Philosophy</a><ol></ol></li></ol></li><li><a id="__notable-works__" href="#notable-works" class="downlink">Notable works</a><ol><li><a id="__academic-research__" href="#academic-research" class="downlink">Academic research</a><ol></ol></li><li><a id="__graphical-interface__" href="#graphical-interface" class="downlink">Graphical interface</a><ol><li><a id="__telugu-input-methods__" href="#telugu-input-methods" class="downlink">Telugu input methods</a><ol></ol></li><li><a id="__wmii-window-manager__" href="#wmii-window-manager" class="downlink">wmii window manager</a><ol></ol></li><li><a id="__dwm-window-manager__" href="#dwm-window-manager" class="downlink">dwm window manager</a><ol></ol></li></ol></li><li><a id="__textual-interface__" href="#textual-interface" class="downlink">Textual interface</a><ol><li><a id="__tmux-terminal-multiplexer__" href="#tmux-terminal-multiplexer" class="downlink">tmux terminal multiplexer</a><ol></ol></li><li><a id="__zsh-interactive-shell__" href="#zsh-interactive-shell" class="downlink">Zsh interactive shell</a><ol></ol></li><li><a id="__neo-vim-text-editor__" href="#neo-vim-text-editor" class="downlink">(Neo)Vim text editor</a><ol></ol></li></ol></li><li><a id="__machine-interface__" href="#machine-interface" class="downlink">Machine interface</a><ol><li><a id="__elixir-programming-language__" href="#elixir-programming-language" class="downlink">Elixir programming language</a><ol></ol></li><li><a id="__ruby-programming-language__" href="#ruby-programming-language" class="downlink">Ruby programming language</a><ol><li><a id="__interpreter-embedding__" href="#interpreter-embedding" class="downlink">Interpreter embedding</a><ol></ol></li><li><a id="__writing-documentation__" href="#writing-documentation" class="downlink">Writing documentation</a><ol></ol></li><li><a id="__template-rendering__" href="#template-rendering" class="downlink">Template rendering</a><ol></ol></li><li><a id="__hardware-testing__" href="#hardware-testing" class="downlink">Hardware testing</a><ol></ol></li><li><a id="__software-testing__" href="#software-testing" class="downlink">Software testing</a><ol></ol></li><li><a id="__project-maintenance__" href="#project-maintenance" class="downlink">Project maintenance</a><ol></ol></li><li><a id="__window-management__" href="#window-management" class="downlink">Window management</a><ol></ol></li><li><a id="__operating-system__" href="#operating-system" class="downlink">Operating system</a><ol></ol></li><li><a id="__static-blogging__" href="#static-blogging" class="downlink">Static blogging</a><ol></ol></li><li><a id="__web-translation__" href="#web-translation" class="downlink">Web translation</a><ol></ol></li><li><a id="__language-improvements__" href="#language-improvements" class="downlink">Language improvements</a><ol></ol></li></ol></li><li><a id="__unix-shell-environment__" href="#unix-shell-environment" class="downlink">UNIX shell environment</a><ol><li><a id="__cron-jobs__" href="#cron-jobs" class="downlink">Cron jobs</a><ol></ol></li><li><a id="__for-loops__" href="#for-loops" class="downlink">For loops</a><ol></ol></li><li><a id="__file-system__" href="#file-system" class="downlink">File system</a><ol></ol></li><li><a id="__desktop-integration__" href="#desktop-integration" class="downlink">Desktop integration</a><ol></ol></li><li><a id="__text-alignment__" href="#text-alignment" class="downlink">Text alignment</a><ol></ol></li><li><a id="__text-wrapping__" href="#text-wrapping" class="downlink">Text wrapping</a><ol></ol></li><li><a id="__software-development__" href="#software-development" class="downlink">Software development</a><ol></ol></li><li><a id="__software-testing-1__" href="#software-testing-1" class="downlink">Software testing</a><ol></ol></li><li><a id="__project-management__" href="#project-management" class="downlink">Project management</a><ol></ol></li><li><a id="__format-conversion__" href="#format-conversion" class="downlink">Format conversion</a><ol></ol></li></ol></li><li><a id="__c-programming-language__" href="#c-programming-language" class="downlink">C programming language</a><ol></ol></li><li><a id="__javascript-programming-language__" href="#javascript-programming-language" class="downlink">Javascript programming language</a><ol></ol></li></ol></li></ol></li></ol></p>
<div id="favorite-things" class="section"></div><h1 class="heading">Favorite things<a href="#favorite-things" class="permalink" title="Permalink"></a><a href="#__favorite-things__" class="uplink" title="Contents"></a></h1>
<blockquote>
<p>“Those who are possessed by nothing possess everything.” — Morihei Ueshiba</p>
</blockquote>
<p><a href="https://web.archive.org/web/20091015114353/http://hackles.org/cgi-bin/archives.pl?request=75">
<picture><source type="image/webp" srcset="www/hackles.org/75.webp"><img src="www/hackles.org/75.png" width="759" height="280" alt="Hackles #75 - Hackles dreams of fame and glory. It's tough being a programmer. Sometimes you are the only one who knows just how clever your code is. And in reality, of course, girls rarely swoon over your elegant coding practices..." title="Hackles #75 - Hackles dreams of fame and glory. It's tough being a programmer. Sometimes you are the only one who knows just how clever your code is. And in reality, of course, girls rarely swoon over your elegant coding practices..."></picture>
</a></p>
<div id="inspiration" class="section"></div><h2 class="heading">Inspiration<a href="#inspiration" class="permalink" title="Permalink"></a><a href="#__inspiration__" class="uplink" title="Contents"></a></h2>
<blockquote>
<p>“Do not imitate the old masters. Seek what they sought.” — Basho</p>
</blockquote>
<p>Speech:</p>
<ul>
<li><a href="https://youtu.be/uQCe4qEexjc">Off the Menu</a> by Philip Wollen</li>
<li><a href="https://youtu.be/J7GY1Xg6X20">The Great Dictator</a> by Charlie Chaplin</li>
<li><a href="https://youtu.be/USC5MJVZLy8">Four Ways of Letting Go</a> by Ajahn Brahm</li>
</ul>
<p>Ideas:</p>
<ul>
<li><a href="https://vimeo.com/36579366">Inventing on Principle</a> by Bret Victor</li>
<li><a href="https://blog.crisp.se/2016/01/25/henrikkniberg/making-sense-of-mvp">Minimum Viable Product</a> by Henrik Kniberg</li>
</ul>
<p>Work:</p>
<ul>
<li><a href="https://youtu.be/zwtg7lIMUaQ?t=1m45s">Professional Software Development</a> by Robert C. Martin</li>
<li><a href="https://youtu.be/moKG0RQNiqM">Agile Everywhere!</a> by Henrik Kniberg</li>
<li><a href="https://youtu.be/QVBlnCTu9Ms">#NoEstimates</a> by Allen Holub</li>
<li><a href="https://vimeo.com/68383403#t=22s">Uncomfortable with Agility</a> by Andy Hunt</li>
</ul>
<p>Code:</p>
<ul>
<li><a href="https://youtu.be/QHnLmvDxGTY?t=19m6s">Introduction to Clean Code</a> by Robert C. Martin</li>
<li><a href="http://youtu.be/WpkDN78P884?t=6m47s">Architecture: The Lost Years</a> by Robert C. Martin</li>
<li><a href="http://vimeo.com/106985460">Stroop, Whorf, and Elixir</a> by Dave Thomas</li>
<li><a href="https://youtu.be/E8I19uA-wGY?t=15s">Functional Design Patterns</a> by Scott Wlaschin</li>
<li><a href="https://vimeo.com/97516288#t=33m2s">Transformation Priority Premise</a> by Robert C. Martin</li>
<li><a href="https://youtu.be/7Zlp9rKHGD4?t=31m45s">Functional Programming: What? Why? When?</a> by Robert C. Martin</li>
<li><a href="https://youtu.be/YaUPdgtUYko">Faults, Scaling, and Concurrency</a> by Joe Armstrong</li>
</ul>
<p>Fun:</p>
<ul>
<li><a href="https://youtu.be/F1kDW538P0I">One of Zombies</a> by Fernando Guillรฉn Suรกrez</li>
<li><a href="https://youtu.be/UvD1VjRvGIk?t=10m5s">Monads are confusing?</a> by Scott Wlaschin</li>
<li><a href="https://vimeo.com/5047563">By Fated Appointment Only</a> by Why the Lucky Stiff</li>
<li><a href="http://confreaks.tv/videos/mwrc2008-shaving-with-occam">Shaving with Ockham</a> by Jim Weirich</li>
<li><a href="https://youtu.be/FITJMJjASUs">The <em>Y</em> Combinator</a> by Jim Weirich</li>
</ul>
<p>Lore:</p>
<ul>
<li><a href="https://web.archive.org/web/20130602043840/http://codethulu.org/">The Cult of Codethulu</a> by Anonymous Embedded Programmer</li>
<li><a href="http://thedailywtf.com/articles/The_Call_of_Codethulhu">The Call of Codethulhu</a> by Alex Papadimoulis</li>
<li><a href="http://thedailywtf.com/articles/The_Complicator_0x27_s_Gloves">The Complicator’s Gloves</a> by Alex Papadimoulis</li>
</ul>
<div id="operation" class="section"></div><h2 class="heading">Operation<a href="#operation" class="permalink" title="Permalink"></a><a href="#__operation__" class="uplink" title="Contents"></a></h2>
<blockquote>
<p>“A bad workman blames his tools.” — English proverb</p>
</blockquote>
<ul>
<li><a href="https://www.moergo.com/">Glove80</a> ergonomic keyboard <big>⇒</big> see <a href="moergo-glove80-keyboard.html">my configuration</a></li>
<li><a href="https://engram.dev/">Engram</a> keyboard layout <big>⇒</big> see <a href="engram-keyboard-layout.html">my review</a> and <a href="engrammer-keyboard-layout.html">my fork</a></li>
<li><a href="http://www.dvzine.org/zine/">Dvorak</a> keyboard layout</li>
<li><a href="http://elixir-lang.org">Elixir</a> programming language</li>
<li><a href="http://ruby-lang.org">Ruby</a> programming language</li>
<li><a href="http://voidlinux.eu">Linux</a> operating system</li>
<li><a href="https://github.com/sunaku/tamzen-font#readme">Tamzen</a> monospace font, my fork of <a href="http://www.fial.com/%7Escott/tamsyn-font/">Tamsyn</a></li>
<li><a href="https://github.com/morhetz/gruvbox">Gruvbox</a> color scheme, <a href="gruvbox-terminal-color-scheme.html">adapted to terminal</a></li>
<li><a href="https://tmux.github.io">tmux</a> terminal multiplexer</li>
<li><a href="http://wmii.suckless.org">wmii</a> window manager, <a href="https://github.com/sunaku/wmiirc#readme">configured with Ruby</a></li>
<li><a href="http://www.vim.org">Vim</a> text editor</li>
<li><a href="http://www.zsh.org">Zsh</a> interactive shell</li>
<li><a href="http://git-scm.com">Git</a> version control system</li>
<li><a href="http://www.lyx.org">LyX</a> document processor</li>
<li><a href="http://graphviz.org">Graphviz</a> graph visualization software</li>
<li><a href="http://lilypond.org">LilyPond</a> music engraving system</li>
<li><a href="http://www.lifehack.org/articles/productivity/the-pomodoro-technique-is-it-right-for-you.html">Pomodoro Technique</a> for time management</li>
</ul>
<div id="depiction" class="section"></div><h2 class="heading">Depiction<a href="#depiction" class="permalink" title="Permalink"></a><a href="#__depiction__" class="uplink" title="Contents"></a></h2>
<blockquote>
<p>“Water too pure has no fish.” — Caigentan</p>
</blockquote>
<ul>
<li><a href="http://www.imdb.com/title/tt0118849/">Children of Heaven</a> by Majid Majidi</li>
<li><a href="http://www.imdb.com/title/tt0191043/">Color of Paradise</a> by Majid Majidi</li>
<li><a href="http://www.imdb.com/title/tt0233841/">Baran (Rain)</a> by Majid Majidi</li>
<li><a href="http://www.imdb.com/title/tt0415607/">The Willow Tree</a> by Majid Majidi</li>
<li><a href="http://www.imdb.com/title/tt0044741/">Ikiru (Living)</a> by Akira Kurosawa</li>
<li><a href="http://www.imdb.com/title/tt0056058/">Harakiri (Dishonor)</a> by Masaki Kobayashi</li>
<li><a href="http://www.imdb.com/title/tt0442286/">The Hidden Blade</a> by Yoji Yamada</li>
<li><a href="http://www.imdb.com/title/tt0076740/">Sorcerer</a> by William Friedkin</li>
<li><a href="http://www.imdb.com/title/tt0119250/">Hana-bi (Fireworks)</a> by Takeshi Kitano</li>
<li><a href="http://www.imdb.com/title/tt0032553/">The Great Dictator</a> by Charlie Chaplin</li>
<li><a href="http://www.imdb.com/title/tt0251355/">Pushpak (Airlift)</a> by Singeetham Srinivasa Rao</li>
<li><a href="http://www.imdb.com/title/tt0040497/">Jour de Fete (Festival)</a> by Jacques Tati</li>
</ul>
<div id="philosophy" class="section"></div><h2 class="heading">Philosophy<a href="#philosophy" class="permalink" title="Permalink"></a><a href="#__philosophy__" class="uplink" title="Contents"></a></h2>
<blockquote>
<p>“First intention, then enlightenment.” — Buddha</p>
</blockquote>
<ul>
<li><p>“Mastering others is strength. Mastering yourself is true power.” —
Laozi</p></li>
<li><p>“A man ought to live in this world like a lotus leaf, which grows in
water but is never moistened by water.” — Swami Vivekananda</p></li>
<li><p>“Courage is standing up for what you believe in, even when you cannot
win.” — Goomoonryong</p></li>
<li><p>“If you think that you will be inferior in doing something, you will
be on that road very soon.” — Hagakure</p></li>
<li><p>“Why curse the darkness when you can light a candle? For all the
darkness in the world cannot extinguish the light of a single candle!”
— St. Francis of Assisi</p></li>
<li><p>“There is something to be learned from a rainstorm. When meeting with
a sudden shower, you try not to get wet and run quickly along the
road. But doing such things as passing under the eaves of houses, you
still get wet. <em>When you are resolved from the beginning, you will not
be perplexed, though you still receive the same soaking.</em> This
understanding extends to all things.” — Hagakure</p></li>
<li><p>“Iron is full of impurities that weaken it; through forging—by
exposure to heat, cold, and hammering—the impurities are forced out
and the iron is transformed into razor-sharp steel. Human beings
develop in the same fashion.” — Morihei Ueshiba</p></li>
<li><p>“Falling down a flight of one thousand stairs begins with slipping on
the first step.” — Confucius</p></li>
<li><p>“Holding onto anger is like grasping a hot coal with the intent of
throwing it at someone else; you are the one who gets burned.” —
Buddha</p></li>
<li><p>“One often meets his destiny on the road he takes to avoid it.” —
Oogway</p></li>
<li><p>“I’m tired of trying to do something worthwhile for the human race,
they simply don’t want to change!” — August Dvorak</p></li>
<li><p>“Everything you do in life will be insignificant, but it’s very
important that you do it.” — Mahatma Gandhi</p></li>
<li><p>“Do good and happiness will follow; but don’t get caught up in your
good deeds. Forget your past and don’t place any hope on the future.
Don’t regret the past… because if you do, it will consume you and
you’ll find no peace.” — <a href="http://www.imdb.com/title/tt0829118/">Phra Khru Bah</a>, speaking to orphaned children.</p></li>
<li><p>“You believe a man can change his destiny? — I believe a man does
what he can, until his destiny is revealed.” — Katsumoto & Algren</p></li>
<li><p>“He spirals down cold barren space as his safety rope spins silently
above him in the everlasting expanse of Mt. Everest” — ???</p></li>
<li><p>“In the Kamigata area, they have a sort of tiered lunchbox they use
for a single day when flower viewing. Upon returning, they throw them
away, trampling them underfoot. <em>The end is important in all things.</em>”
— Hagakure</p></li>
</ul>
<div id="notable-works" class="section"></div><h1 class="heading">Notable works<a href="#notable-works" class="permalink" title="Permalink"></a><a href="#__notable-works__" class="uplink" title="Contents"></a></h1>
<blockquote>
<p>“When you don’t create things, you become defined by your tastes rather
than ability. Your tastes only narrow and exclude people. So create.”
— Why the Lucky Stiff</p>
</blockquote>
<div id="academic-research" class="section"></div><h2 class="heading">Academic research<a href="#academic-research" class="permalink" title="Permalink"></a><a href="#__academic-research__" class="uplink" title="Contents"></a></h2>
<blockquote>
<p>“A jug fills drop by drop.” — Buddha</p>
</blockquote>
<ul>
<li><p>Kurapati, S. N. (2007). <em>Specification-driven functional verification
with Verilog PLI & VPI and SystemVerilog DPI</em>. Masters thesis, University
of California, Santa Cruz.
[<a href="masters_thesis.pdf">PDF</a>]
[<a href="masters_thesis.html">HTML</a>]</p></li>
<li><p>Kurapati, S. N. (2005). <em>A Brief Survey of High-Level Approaches to
Implementing Distributed Applications</em>. Unpublished manuscript,
University of California, Santa Cruz.
[<a href="distributed_applications_survey.pdf">PDF</a>]
[<a href="distributed_applications_survey.html">HTML</a>]</p></li>
<li><p>Kurapati, S. N. (2004). <em>Addiction to Massively Multi-player On-line
Games: An Ethical Analysis</em>. Unpublished manuscript, University of
California, Santa Cruz.
[<a href="game_addiction.pdf">PDF</a>]
[<a href="game_addiction.html">HTML</a>]</p></li>
</ul>
<div id="graphical-interface" class="section"></div><h2 class="heading">Graphical interface<a href="#graphical-interface" class="permalink" title="Permalink"></a><a href="#__graphical-interface__" class="uplink" title="Contents"></a></h2>
<ul>
<li><p><a href="https://github.com/sunaku/tamzen-font#readme">tamzen-font</a>:
A programmatic remix of the <a href="http://www.fial.com/%7Escott/tamsyn-font/">Tamsyn monospace font</a>.</p>
<p><img src="https://github.com/sunaku/tamzen-font/raw/master/png/TamzenForPowerline8x15r.png" alt="TamzenForPowerline8x15r.bdf" title="TamzenForPowerline8x15r.bdf">
<img src="https://github.com/sunaku/tamzen-font/raw/master/png/TamzenForPowerline8x15b.png" alt="TamzenForPowerline8x15b.bdf" title="TamzenForPowerline8x15b.bdf"></p></li>
<li><p><a href="https://userstyles.org/users/34986">userstyles</a>:
Usability overrides for Web sites and applications.</p></li>
</ul>
<div id="telugu-input-methods" class="section"></div><h3 class="heading">Telugu input methods<a href="#telugu-input-methods" class="permalink" title="Permalink"></a><a href="#__telugu-input-methods__" class="uplink" title="Contents"></a></h3>
<p>Ways of typing the <a href="https://en.wikipedia.org/wiki/Telugu_language">Telugu language</a> into a computer:</p>
<ul>
<li><p><a href="telugu-rts-with-scim.html">RTS with SCIM</a>:
using SCIM input method framework.</p>
<img src="telugu-rts-with-scim-demo.gif" width="400" height="208" alt="Telugu RTS with SCIM in Ubuntu Breezy" title="Telugu RTS with SCIM in Ubuntu Breezy"></li>
<li><p><a href="telugu-rts-with-iiimf.html">RTS with IIIMF</a>:
using IIIMF input method framework.</p>
<p><a href="ext/iiimf/telugu_rts.png">
<picture><source type="image/webp" srcset="telugu-rts-with-iiimf.webp"><img src="telugu-rts-with-iiimf.png" width="136" height="334" alt="The RTS code-table in action." title="The RTS code-table in action."></picture>
</a></p></li>
</ul>
<div id="wmii-window-manager" class="section"></div><h3 class="heading"><a href="http://wmii.suckless.org">wmii</a> window manager<a href="#wmii-window-manager" class="permalink" title="Permalink"></a><a href="#__wmii-window-manager__" class="uplink" title="Contents"></a></h3>
<ul>
<li><p>I have contributed <a href="wmii-3.1-ruby-config.html#patches">far too many patches</a> to list them all here.</p></li>
<li><p><a href="https://github.com/sunaku/wmiirc#readme">sunaku.wmiirc</a>:
My wmii configuration powered by Ruby and YAML.</p>
<img src="https://github.com/sunaku/wmiirc/raw/gh-pages/tiling.png" alt="screenshot" title="screenshot"></li>
</ul>
<div id="dwm-window-manager" class="section"></div><h3 class="heading"><a href="http://dwm.suckless.org">dwm</a> window manager<a href="#dwm-window-manager" class="permalink" title="Permalink"></a><a href="#__dwm-window-manager__" class="uplink" title="Contents"></a></h3>
<ul>
<li><p><a href="http://dwm.suckless.org/patches/spawn_cwd">spawn_cwd</a>:
Spawn from focused app’s working directory. See <a href="dwm-spawn-cwd-patch.html">article</a>.</p></li>
<li><p><a href="https://github.com/sunaku/.dwm">sunaku.dwm</a>:
My dwm configuration with Ruby status bar.</p></li>
</ul>
<div id="textual-interface" class="section"></div><h2 class="heading">Textual interface<a href="#textual-interface" class="permalink" title="Permalink"></a><a href="#__textual-interface__" class="uplink" title="Contents"></a></h2>
<ul>
<li><p><a href="https://sunaku.github.io/dasht">dasht</a>:
Search API docs offline, in your terminal or browser.</p>
<p><img src="https://github.com/sunaku/dasht/raw/gh-pages/terminal.png" alt="screenshot" title="screenshot">
<img src="https://github.com/sunaku/dasht/raw/gh-pages/browser.png" alt="screenshot" title="screenshot"></p></li>
</ul>
<div id="tmux-terminal-multiplexer" class="section"></div><h3 class="heading"><a href="https://tmux.github.io">tmux</a> terminal multiplexer<a href="#tmux-terminal-multiplexer" class="permalink" title="Permalink"></a><a href="#__tmux-terminal-multiplexer__" class="uplink" title="Contents"></a></h3>
<ul>
<li><p><a href="https://github.com/tmux/tmux/commit/427b8204268af5548d09b830e101c59daa095df9">Patch</a>:
Add support for 24-bit RGB colors.
See <a href="tmux-24bit-color.html">article</a>.</p>
<p><picture><source type="image/webp" srcset="tmux-24bit-color.webp"><img src="tmux-24bit-color.png" width="1165" height="319" alt="Demonstration of 24-bit colors in tmux under st 0.6" title="Demonstration of 24-bit colors in tmux under st 0.6"></picture>
</p></li>
<li><p><a href="https://github.com/tmux/tmux/commit/c930fd5ff696f5a60e93ed503f0ff57e0bbf6e4d">Patch</a>:
Remember last active window pane.
See <a href="tmux-refocus-patch.html">article</a>.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/tmux-layout-dwindle">tmux-layout-dwindle</a>:
Dwindling binary space partitions.
See <a href="tmux-layout-dwindle.html">article</a>.</p>
<p><picture><source type="image/webp" srcset="tmux-layout-dwindle.webp"><img src="tmux-layout-dwindle.png" width="2552" height="1040" alt="A sample result of running `tmux-layout-dwindle`." title="A sample result of running `tmux-layout-dwindle`."></picture>
</p></li>
</ul>
<div id="zsh-interactive-shell" class="section"></div><h3 class="heading"><a href="http://www.zsh.org">Zsh</a> interactive shell<a href="#zsh-interactive-shell" class="permalink" title="Permalink"></a><a href="#__zsh-interactive-shell__" class="uplink" title="Contents"></a></h3>
<ul>
<li><a href="https://github.com/zsh-users/zsh-history-substring-search">zsh-history-substring-search</a>:
Emulates the <a href="http://fishshell.com">Fish shell</a>’s history search.</li>
</ul>
<div id="neo-vim-text-editor" class="section"></div><h3 class="heading">(<a href="https://neovim.io">Neo</a>)<a href="http://www.vim.org">Vim</a> text editor<a href="#neo-vim-text-editor" class="permalink" title="Permalink"></a><a href="#__neo-vim-text-editor__" class="uplink" title="Contents"></a></h3>
<ul>
<li><p><a href="https://github.com/sunaku/.vim#readme">sunaku.vim</a>:
A modular Vim configuration: not a single, giant vimrc file!</p></li>
<li><p><a href="https://github.com/sunaku/vim-unbundle#readme">vim-unbundle</a>:
Fast & lazy bundle loader: a 50-line alternative to <a href="https://github.com/tpope/vim-pathogen">Pathogen</a>.</p></li>
<li><p><a href="https://github.com/sunaku/vim-shortcut#readme">vim-shortcut</a>:
Discoverable shortcut system for Vim, inspired by
<a href="https://github.com/syl20bnr/spacemacs#readme">Spacemacs</a>.</p>
<img src="https://github.com/sunaku/vim-shortcut/raw/gh-pages/README.gif" alt="Screencast" title="Screencast"></li>
<li><p><a href="https://github.com/sunaku/vim-dasht#readme">vim-dasht</a>:
Integrates the <a href="https://github.com/sunaku/dasht#readme">dasht</a> offline API
search engine into (Neo)Vim.</p></li>
<li><p><a href="https://github.com/sunaku/vim-hicterm#readme">vim-hicterm</a>:
Highlights terminal color code numbers (think of <code>ctermfg</code>).</p></li>
</ul>
<img src="https://github.com/sunaku/vim-hicterm/raw/gh-pages/HiCterm.gif" alt="Screencast" title="Screencast">
<ul>
<li><p><a href="https://github.com/sunaku/vim-ruby-minitest#readme">vim-ruby-minitest</a>:
Highlighting & completion for MiniTest.</p></li>
<li><p><a href="https://github.com/sunaku/vim-ruby-shoulda-context#readme">vim-ruby-shoulda-context</a>:
Highlighting & completion for shoulda-context.</p></li>
<li><p><a href="https://github.com/sunaku/test-unit-must.vim#readme">vim-test-unit-must</a>:
Highlighting for test-unit-must assertions.</p></li>
</ul>
<div id="machine-interface" class="section"></div><h2 class="heading">Machine interface<a href="#machine-interface" class="permalink" title="Permalink"></a><a href="#__machine-interface__" class="uplink" title="Contents"></a></h2>
<div id="elixir-programming-language" class="section"></div><h3 class="heading"><a href="http://elixir-lang.org">Elixir</a> programming language<a href="#elixir-programming-language" class="permalink" title="Permalink"></a><a href="#__elixir-programming-language__" class="uplink" title="Contents"></a></h3>
<ul>
<li><p><a href="https://github.com/elixir-lang/elixir/pull/3420">Patch</a>:
Highlight differences in failed equality assertions.
See also <a href="minitest-colordiff.html#bin-gdiff">gdiff</a>.</p>
<p><img src="https://cloud.githubusercontent.com/assets/9863/8290168/13df2026-18d6-11e5-9ff0-bc44d634b85a.png" alt="string" title="string">
<img src="https://cloud.githubusercontent.com/assets/9863/8290167/13def772-18d6-11e5-8f80-680d6ed9ceee.png" alt="map" title="map">
<img src="https://cloud.githubusercontent.com/assets/9863/8290170/13e29ae4-18d6-11e5-960d-37e86f5b8712.png" alt="integer" title="integer"></p></li>
</ul>
<div id="ruby-programming-language" class="section"></div><h3 class="heading"><a href="http://ruby-lang.org">Ruby</a> programming language<a href="#ruby-programming-language" class="permalink" title="Permalink"></a><a href="#__ruby-programming-language__" class="uplink" title="Contents"></a></h3>
<blockquote>
<div id="interpreter-embedding" class="section"></div><h4 class="heading">Interpreter embedding<a href="#interpreter-embedding" class="permalink" title="Permalink"></a><a href="#__interpreter-embedding__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><a href="https://github.com/sunaku/ruby-coroutine-example#readme">ruby-coroutine-example</a>:
How to embed Ruby inside C coroutines.</li>
</ul>
<blockquote>
<div id="writing-documentation" class="section"></div><h4 class="heading">Writing documentation<a href="#writing-documentation" class="permalink" title="Permalink"></a><a href="#__writing-documentation__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="https://sunaku.github.io/md2man">md2man</a>:
Markdown to UNIX manpage converter.</p></li>
<li><p><a href="https://sunaku.github.io/binman">binman</a>:
UNIX manpages for executable scripts.</p>
<img src="https://github.com/sunaku/binman/raw/gh-pages/EXAMPLE.png" alt="screenshot" title="screenshot"></li>
<li><p><a href="http://snk.tuxfamily.org/lib/erbook">erbook</a>:
Write books, manuals, and documents in eRuby.</p></li>
</ul>
<blockquote>
<div id="template-rendering" class="section"></div><h4 class="heading">Template rendering<a href="#template-rendering" class="permalink" title="Permalink"></a><a href="#__template-rendering__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><a href="http://snk.tuxfamily.org/lib/ember">ember</a>:
eRuby template processor.</li>
</ul>
<blockquote>
<div id="hardware-testing" class="section"></div><h4 class="heading">Hardware testing<a href="#hardware-testing" class="permalink" title="Permalink"></a><a href="#__hardware-testing__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><a href="http://snk.tuxfamily.org/lib/ruby-vpi">Ruby-VPI</a>:
Ruby interface to IEEE 1364-2005 Verilog VPI.</li>
</ul>
<blockquote>
<div id="software-testing" class="section"></div><h4 class="heading">Software testing<a href="#software-testing" class="permalink" title="Permalink"></a><a href="#__software-testing__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="https://sunaku.github.io/tork">tork</a>:
Runs tests as they change, in parallel.</p></li>
<li><p><a href="https://github.com/sunaku/guard-tork#readme">guard-tork</a>:
Guard integration for Tork.</p></li>
<li><p><a href="http://snk.tuxfamily.org/lib/detest">detest</a>:
Assertion testing library for Ruby.</p></li>
<li><p><a href="https://github.com/sunaku/test-unit-must#readme">test-unit-must</a>:
Selfish “must” assertions for Test::Unit.</p></li>
</ul>
<blockquote>
<div id="project-maintenance" class="section"></div><h4 class="heading">Project maintenance<a href="#project-maintenance" class="permalink" title="Permalink"></a><a href="#__project-maintenance__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><a href="http://snk.tuxfamily.org/lib/inochi">inochi</a>:
Infrastructure for Ruby projects.</li>
</ul>
<blockquote>
<div id="window-management" class="section"></div><h4 class="heading">Window management<a href="#window-management" class="permalink" title="Permalink"></a><a href="#__window-management__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="http://snk.tuxfamily.org/lib/rumai">rumai</a>:
Ruby interface to 9P2000 protocol and WMII window manager.</p>
<img src="ext/wmii/screens/5.png" width="640" height="480" alt="current_view.diamond!" title="current_view.diamond!"></li>
</ul>
<blockquote>
<div id="operating-system" class="section"></div><h4 class="heading">Operating system<a href="#operating-system" class="permalink" title="Permalink"></a><a href="#__operating-system__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><a href="https://github.com/sunaku/opener#readme">opener</a>:
A tiny 33-line alternative to <a href="https://github.com/copiousfreetime/launchy#readme">launchy</a>.</li>
</ul>
<blockquote>
<div id="static-blogging" class="section"></div><h4 class="heading">Static blogging<a href="#static-blogging" class="permalink" title="Permalink"></a><a href="#__static-blogging__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="https://github.com/sunaku/readably#readme">readably</a>:
Static blogs: YAML + Slim → HTML5 + Zenburn.</p></li>
<li><p><a href="https://github.com/sunaku/rassmalog#readme">rassmalog</a>:
Static blogging with YAML and eRuby.</p></li>
</ul>
<blockquote>
<div id="web-translation" class="section"></div><h4 class="heading">Web translation<a href="#web-translation" class="permalink" title="Permalink"></a><a href="#__web-translation__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><a href="https://github.com/sunaku/babelfish#readme">babelfish</a>:
Ruby interface to Yahoo! BabelFish translation service.</li>
</ul>
<blockquote>
<div id="language-improvements" class="section"></div><h4 class="heading">Language improvements<a href="#language-improvements" class="permalink" title="Permalink"></a><a href="#__language-improvements__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="http://bugs.ruby-lang.org/issues/5008">Equal rights</a> for <code>Hash</code> (like <code>Array</code>, <code>String</code>, <code>Integer</code>, and <code>Float</code> classes)</p>
<ul>
<li><a href="http://bugs.ruby-lang.org/issues/6276">Establish</a> <code>#to_h</code> convention for turning objects into <code>Hash</code>.</li>
<li><a href="http://bugs.ruby-lang.org/issues/5008#note-31">Define</a> <code>NilClass#to_h()</code> to convert <code>nil</code> into an empty <code>Hash</code>.</li>
<li><a href="http://bugs.ruby-lang.org/issues/3131">Add</a> <code>Kernel#Hash()</code> for turning objects into <code>Hash</code> strictly.</li>
<li>See associated <a href="https://github.com/sunaku/equal_rights_for_hash#readme">equal_rights_for_hash</a> gem.</li>
</ul></li>
<li><p><a href="http://bugs.ruby-lang.org/issues/1082">Add</a> <code>Object#singleton_class</code> as shortcut to</p>
<div class="highlight"><pre class="highlight plaintext"><code> class << object; self; end
</code></pre></div></li>
<li><p><a href="http://bugs.ruby-lang.org/issues/4447">Add</a> <code>String#byteslice()</code> to slice strings as byte <code>char</code>s, not <code>wchar</code>s</p></li>
<li><p><a href="http://bugs.ruby-lang.org/issues/1081">Add</a> <code>File::write()</code> as shortcut to</p>
<div class="highlight"><pre class="highlight plaintext"><code> File.open(...) {|f| f.write(...) }
</code></pre></div></li>
<li><p><a href="http://bugs.ruby-lang.org/issues/5422">Add</a> <code>File::FNM_EXTGLOB</code> flag for <code>{a,b}</code> alternation in <code>File::fnmatch?()</code>.</p></li>
<li><p><a href="http://bugs.ruby-lang.org/issues/2294">Embed</a> Ruby inside co-routines <a href="https://github.com/sunaku/ruby-coroutine-example#readme">such as libpc, pthread, and ucontext</a>.</p></li>
<li><p><a href="http://bugs.ruby-lang.org/issues/4400">Order</a> nested <code>Kernel#at_exit()</code> execution according to C’s <code>atexit()</code>.</p></li>
<li><p><a href="http://bugs.ruby-lang.org/issues/5406">Consistency</a> between <code>Hash::[]( Array )</code> and <code>Hash::[]( *Array )</code> constructors.</p></li>
<li><p><a href="http://bugs.ruby-lang.org/issues/3919">Improve power</a>-efficiency by reducing CPU wakeups in timer thread.</p></li>
</ul>
<div id="unix-shell-environment" class="section"></div><h3 class="heading">UNIX shell environment<a href="#unix-shell-environment" class="permalink" title="Permalink"></a><a href="#__unix-shell-environment__" class="uplink" title="Contents"></a></h3>
<blockquote>
<p>“Simplicity is the heart of the UNIX philosophy. The more code lines you
have removed, the more progress you have made.” — <a href="http://suckless.org/philosophy">The Suckless
Philosophy</a></p>
</blockquote>
<ul>
<li><a href="https://github.com/sunaku/home#readme">home</a>:
Tales from my home directory (dot files & bin scripts).</li>
</ul>
<blockquote>
<div id="cron-jobs" class="section"></div><h4 class="heading">Cron jobs<a href="#cron-jobs" class="permalink" title="Permalink"></a><a href="#__cron-jobs__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/admit1">admit1</a>:
Admits only one instance of the given command to run at a time (by
running it only if there are no other instances already doing so).</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/canary">canary</a>:
Like a canary in a coal mine, this program exists to vocalize failures.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/pigeon">pigeon</a>:
Like a carrier pigeon, this program exists to convey changes in status.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/recur">recur</a>:
Repeatedly runs commands according to a given schedule until killed.
Useful for tailing log files that rotate at the end of each day/hour.</p></li>
</ul>
<blockquote>
<div id="for-loops" class="section"></div><h4 class="heading">For loops<a href="#for-loops" class="permalink" title="Permalink"></a><a href="#__for-loops__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/each">each</a>:
Runs commands for <em>each</em> argument.</p></li>
<li><p><a href="http://download.gna.org/ff-bash/manual/">ff</a>:
Runs commands and scripts <em>f</em>or each <em>f</em>ile.</p></li>
</ul>
<blockquote>
<div id="file-system" class="section"></div><h4 class="heading">File system<a href="#file-system" class="permalink" title="Permalink"></a><a href="#__file-system__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/du-h">du-h</a>:
Disk usage, with live preview, sorted in human friendly format.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/sort-h">sort-h</a>:
Reimplementation of <code>sort -h</code> for systems with a very old sort(1).</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/ls-summary">ls-summary</a>:
Counts the number of different kinds of files in a directory.</p></li>
</ul>
<blockquote>
<div id="desktop-integration" class="section"></div><h4 class="heading">Desktop integration<a href="#desktop-integration" class="permalink" title="Permalink"></a><a href="#__desktop-integration__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/yank">yank</a>:
Copies from terminal to clipboard, even across nested tmux/SSH sessions!
See <a href="tmux-yank-osc52.html">article</a>.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/xcd">xcd</a>:
Runs command inside working directory of currently focused X11 window.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/edit-text-field">edit-text-field</a>:
Edit currently focused text field in GVim.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/screencast-window">screencast-window</a>:
Take a video capture, in GIF format, of a single window.</p></li>
</ul>
<blockquote>
<div id="text-alignment" class="section"></div><h4 class="heading">Text alignment<a href="#text-alignment" class="permalink" title="Permalink"></a><a href="#__text-alignment__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/align-columns">align-columns</a>:
Vertically aligns columns, which are delimited by a user-defined
regular expression, that are present in the input given on STDIN.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/align-table">align-table</a>:
Same as align-columns(1) above, but handles multiple delimiters.</p></li>
</ul>
<blockquote>
<div id="text-wrapping" class="section"></div><h4 class="heading">Text wrapping<a href="#text-wrapping" class="permalink" title="Permalink"></a><a href="#__text-wrapping__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/wrap-text">wrap-text</a>:
Smarter handling of crown margins than <code>fmt -c</code>.
See <a href="text-formatting-with-smart-crown-margins.html">article</a>.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/wrap-comment">wrap-comment</a>:
Word wrapping for source code comments.</p></li>
</ul>
<blockquote>
<div id="software-development" class="section"></div><h4 class="heading">Software development<a href="#software-development" class="permalink" title="Permalink"></a><a href="#__software-development__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/gdiff">gdiff</a>:
Colorful, word-aware diffing. See <a href="minitest-colordiff.html">article</a>.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/git-rebase-autocon">git-rebase-autocon</a>:
Automatically resolves Git merge conflicts. See <a href="git-rebase-autocon.html">article</a>.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/curl-har">curl-har</a>:
Replays HAR sessions (from Webkit browsers) using curl(1).</p></li>
</ul>
<blockquote>
<div id="software-testing-1" class="section"></div><h4 class="heading">Software testing<a href="#software-testing-1" class="permalink" title="Permalink"></a><a href="#__software-testing-1__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/inotifytest-elixir-mix">inotifytest-elixir-mix</a>:
Tests your Elixir project files when they change.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/inotifytest-elixir">inotifytest-elixir</a>:
Tests your Elixir source code files when they change.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/inotifytest-ruby">inotifytest-ruby</a>:
Tests your Ruby source code files when they change.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/inotifytest-racket">inotifytest-racket</a>:
Tests your Racket source code files when they change.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/inotifytest-sml">inotifytest-sml</a>:
Tests your Standard ML source code files when they change.</p></li>
</ul>
<blockquote>
<div id="project-management" class="section"></div><h4 class="heading">Project management<a href="#project-management" class="permalink" title="Permalink"></a><a href="#__project-management__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/floss-rebase">floss-rebase</a>:
Reapplies the stacked branch architecture:
master => other => patch => minor => major</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/floss-merge">floss-merge</a>:
Merges all branches up to and including current branch into master branch.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/floss-changes">floss-changes</a>:
Prints release notes ranging from the current branch to the master branch.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/floss-reflect">floss-reflect</a>:
Updates all text files in the project that mention the current version
and/or date to match the first version and date from the HISTORY_FILE.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/floss-commit">floss-commit</a>:
Creates a new commit or updates an existing commit that is labelled with
the first version and date from the HISTORY_FILE.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/floss-publish">floss-publish</a>:
Publishes manuals to the GitHub pages website after a project release.</p></li>
</ul>
<blockquote>
<div id="format-conversion" class="section"></div><h4 class="heading">Format conversion<a href="#format-conversion" class="permalink" title="Permalink"></a><a href="#__format-conversion__" class="uplink" title="Contents"></a></h4>
</blockquote>
<ul>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/iterm2xrdb">iterm2xrdb</a>:
Converts iTerm2 color schemes into xrdb(1) format.</p></li>
<li><p><a href="https://github.com/sunaku/home/blob/master/bin/xrdb2hterm">xrdb2hterm</a>:
Converts xrdb(1) color schemes into Chrome Secure Shell preferences.</p></li>
</ul>
<div id="c-programming-language" class="section"></div><h3 class="heading">C programming language<a href="#c-programming-language" class="permalink" title="Permalink"></a><a href="#__c-programming-language__" class="uplink" title="Contents"></a></h3>
<ul>
<li><p><a href="https://github.com/sunaku/knights-tour#readme">knights-tour</a>:
Knight’s Tour algorithm parallelized via GPGPU.</p></li>
<li><p><a href="https://github.com/sunaku/simple-ftp#readme">simple-ftp</a>:
A rudimentary FTP server and command-line client.</p></li>
</ul>
<div id="javascript-programming-language" class="section"></div><h3 class="heading">Javascript programming language<a href="#javascript-programming-language" class="permalink" title="Permalink"></a><a href="#__javascript-programming-language__" class="uplink" title="Contents"></a></h3>
<ul>
<li><p><a href="https://github.com/sunaku/jquery-horizoll#readme">jquery-horizoll</a>:
Horizontal screen scrolling with automatic realignment.</p></li>
<li><p><a href="https://github.com/sunaku/ofc2_to_png#readme">ofc2_to_png</a>:
Renders “Open Flash Chart 2” JSON charts as PNG images.</p></li>
</ul>
</div><div class="comments" id="comments"><script>var disqus_container_id = 'comments';
var disqus_title = "About";
var disqus_url = "https://sunaku.github.io/about.html";</script><script async="" src="https://theterminalprogrammer.disqus.com/embed.js"></script></div><hr /><footer><p class="copyright">© 2023 Suraj N. Kurapati</p><p class="credits"><a href="https://github.com/sunaku/readably">Readably</a> written, <a href="https://github.com/sainnhe/everforest">Everforest</a> colored. </p><p>Like my work? ๐ Please <a href="vegan-for-life.html">spare a life</a> today as
thanks! ๐ฎ๐ท๐๐๐โ๐</p>
</footer><!--[if lt IE 9]><script src="js/html5shiv.min.js"></script><script src="js/html5shiv-printshiv.min.js"></script><![endif]--><script src="index.js"></script></article></body></html>