Indent the TOC, too
[git/dscho.git] / index.html
blobe2e0e6ee719c1df056b9221397db6619ac8ee2d6
1 <html>
2 <head>
3 <title>Dscho's blog</title>
4 <meta http-equiv="Content-Type"
5 content="text/html; charset=UTF-8"/>
6 <link rel="stylesheet" type="text/css" href="dscho.git?a=blob_plain;hb=832be85c785c80202f17b87db7f063ae57ec2cac;f=blog.css">
7 </head>
8 <body>
9 <div class=content>
10 <h1>Dscho's blog</h1>
11 <div style="position:absolute;top:50px;left:810px;width=400px">
12 <table width=400px bgcolor=#e0e0e0 border=1><tr><td>
13 <p><ol>
14 <li><a href=#1232626236>22 Jan 2009 The UGFWIINI contest</a>
15 <li><a href=#1232611542>22 Jan 2009 Top-posting</a>
16 <li><a href=#1232607201>22 Jan 2009 Sverre's hat</a>
17 <li><a href=#1232604722>22 Jan 2009 Let there be images!</a>
18 <li><a href=#1232599693>22 Jan 2009 My blog has style</a>
19 <li><a href=#1232589695>22 Jan 2009 My new blog system... bloGit</a>
20 </td></tr></table>
21 </ol></p>
22 </div>
23 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Goat</h6>
24 <a name=1232626236>
25 <h2>The UGFWIINI contest</h2>
27 <p>
28 </p><p>
29 Just in case somebody finds this blog, here is a challenge. Inspired by my
30 own little hack (this blog), I announce the "Using Git For What It Is Not
31 Intended" contest.
32 </p><p>
33 And it is especially cool, since the acronym sounds cool! You might miss
34 this fact if you do no know that I pronounce the "F" like an "A" so that
35 it sounds cool.
36 </p><p>
37 This will be a running contest; whenever I have 10 valid applications, I
38 will announce a winner on the Git mailing list.
39 </p><p>
40 So, what accounts for a valid application?
41 </p><p>
42 <ul>
43 <li> You must use a Git program (the term is used loosely here, GitWeb is
44 considered a Git program, for example).
45 <li> The program must be intended for something completely different than
46 what you are using it for. E.g. GitWeb -- which was intended to let
47 you browse through the history using your web browser -- is used
48 to serve a blog to the wide world.
49 <li> You must be able to prove that you actually used the Git program to
50 the purpose you claim, preferably in a live demonstration like this
51 one.
52 <li> Nobody and nothing must be harmed in the process (except your
53 laughing muscle, that's okay).
54 </ul>
55 </p><p>
56 So, how does such an abuse look like?
57 </p><p>
58 <ul>
59 <li> ... like this blog.
60 <li> Managing your mail (in maildir format) in a Git repository.
61 <li> Finding duplicate files by
62 <table
63 border=1 bgcolor=black style="color:#ffffff;">
64 <tr><td bgcolor=lightblue colspan=3>
65 &nbsp;
66 </td></tr>
67 <tr><td>
68 <table cellspacing=5 border=0>
69 <tr><td>
70 <pre>
71 $ git init
72 $ git add .
73 $ git ls-files --stage | sort -k2 | uniq -d -s7 -w40
74 </pre>
75 </td></tr>
76 </table>
77 </td></tr>
78 </table>
79 <li> Abusing the Git alias mechanism to call scripts defined directly in
80 the config.
81 </ul>
82 </p><p>
83 I am really looking forward to all of your submissions... *chuckles*
84 </p><p>
85 </p>
86 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Snake</h6>
87 <a name=1232611542>
88 <h2>Top-posting</h2>
90 <p>
91 </p><p>
92 Okay, last post for a while. But this is something that is nagging me
93 tremendously. I should probably just let go, but in my deepest inner self,
94 really close to my heart, I refuse to believe that any human beings could
95 be incapable of certain degrees of reason.
96 </p><p>
97 Take the example of top-posting. Everybody who read a top-posted email
98 knows that you have to scroll down, possibly weeding through tons of
99 pages to find out what the heck the author of the last reply was replying
101 </p><p>
102 Never mind that it would take the author of the reply just a couple of
103 seconds to remove all the irrelevant stuff -- as she already knows what
104 is the relevant part, saving minutes, in case of mailing lists hours,
105 easily, to the readers who otherwise would have to discern what is
106 irrelevant and what is relevant first.
107 </p><p>
108 It is a horrible time waste. But of course not for the top-poster.
109 </p><p>
110 The problem is that I frequently run into such people, and when I write
111 them a polite mail, explaining to them that it is impolite to top-post,
112 and why, the answers I get sometimes make me check if the sky is still up
113 and the earth down. Yesterday was an example of such a dubitable
114 pleasure.
115 </p><p>
116 Most funny are the ridiculous attempts by those persons at explaining why
117 top-posting is <i>so</i> much superior to anything else.
118 </p><p>
119 Which is good, because if they were not that funny, they would be pretty sad.
120 </p>
121 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Dragon</h6>
122 <a name=1232607201>
123 <h2>Sverre's hat</h2>
126 </p><p>
127 The fun part about a blog is that you can talk about less technical stuff.
128 For example, Sverre's hat.
129 </p><p>
130 Let me start a bit earlier, so that you get the context.
131 </p><p>
132 Last year, at the <a href=http://git.or.cz/gitwiki/GitTogether>GitTogether</a>,
133 we had an <a href=http://en.wikipedia.org/wiki/Unconference>unconference style
134 conference</a>, which basically meant that it was our job to decide what
135 we want to talk about.
136 </p><p>
137 It turned out to be pretty hard, because there was so much we wanted to
138 discuss, and because we wanted to get to know each other, and we wanted to
139 do some hacking.
140 </p><p>
141 So to help us decide what subjects, and in which order we wanted to have
142 scheduled, Shawn opened a series on <a href=http://moderator.appspot.com/>
143 Google Moderator</a>, a nifty, yet simple application which allows a group
144 to agree quickly on an agenda.
145 </p><p>
146 It worked quite well; However, that little saboteur displayed his sense of
147 humor so overtly that some entertaining Gitter put the question "Should Sverre
148 wear a hat?" on the agenda.
149 </p><p>
150 Sure enough, the subject got voted up, and eventually, we got Sverre a hat:
151 </p><p>
152 <center><img src=dscho.git?a=blob_plain;hb=832be85c785c80202f17b87db7f063ae57ec2cac;f=sverre-hat.jpg></center>
153 </p><p>
154 By the way, another thing I like about this blog engine is that there are no
155 comments... Nothing is more annoying than leaving a comment on a blog,
156 forgetting about it for a few months, and then finding somebody answered
157 ages ago.
158 </p>
159 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Dragon</h6>
160 <a name=1232604722>
161 <h2>Let there be images!</h2>
164 </p><p>
165 One of the most important features of blogs is the ability to insert images.
166 So what would this blog be, if it could not present something that says
167 more than a thousand words?
168 </p><p>
169 So here it goes, my first picture in this blog, taken from my Google Tech
170 Talk in Mountain View:
171 </p><p>
172 <center><img src=dscho.git?a=blob_plain;hb=832be85c785c80202f17b87db7f063ae57ec2cac;f=all-your-rebase.png></center>
173 </p><p>
174 Now this blog starts to look like a real blog...
175 </p>
176 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Rabbit</h6>
177 <a name=1232599693>
178 <h2>My blog has style</h2>
181 </p><p>
182 It is official. The blog has a style sheet now.
183 </p><p>
184 The major problem was how to design the system such that it would work
185 both locally and on <a href=http://repo.or.cz>repo.or.cz</a> via gitweb.
186 </p><p>
187 Basically, I realized that I'd need a dry run mode anyway, to prevent
188 all my failed attemp.. oops, I meant, to prevent an accidental push
189 when I am at an, ahem, intermediate state of the 'blog' branch.
190 </p><p>
191 Therefore, I could write a different file locally, which I can load
192 into my venerable Firefox.
193 </p><p>
194 The next plans with my new toy are to enable an easy way to support
195 showing images, and then maybe a table of contents. External links
196 would be cool (<a href=http://repo.or.cz>repo.or.cz</a> does not count, it is special-cased), too.
197 </p><p>
198 And later maybe a cut-off, with automatic generation of links to older
199 posts. Hmm, for those, I'll have to change the URL to include the
200 current commit name, so that the images will be found, too...
201 </p><p>
202 Which in turn means that I'll have to parse the source for new
203 images first, so that they can be in the commit that index.html
204 will link to, <u>before</u> it gets committed. Oh well, that cannot be
205 helped! &#x263a;
206 </p>
207 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Tiger</h6>
208 <a name=1232589695>
209 <h2>My new blog system... bloGit</h2>
212 </p><p>
213 Nowadays, you got to have your blog. Or better: your blogs. Even Junio
214 blogs about Git.
215 </p><p>
216 So I felt a little left behind, having no blog to show off. But then
217 I read about this fantastic new website on the mailing list, called
218 <i>git planet</i> which was supposed to be a place where you could have your
219 Git located blog.
220 </p><p>
221 Except that you could not have your blog <u>there</u>. Instead, it is just an
222 aggregator site.
223 </p><p>
224 I was disappointed.
225 </p><p>
226 But then, I had this (in my humble opinion very cute) idea that I already used to "publish"
227 my slides from the talk "Contributing with Git (AKA All your rebase are
228 belong to us)": back then, I just created a new branch, committed the
229 file, and uploaded the result to <a href=http://repo.or.cz>repo.or.cz</a>, to be downloaded via Gitweb.
230 </p><p>
231 So I asked Pasky via IRC, if he would have any objections if I abused
232 <a href=http://repo.or.cz>repo.or.cz</a> as a blog server. He understood at once, and found it "sounds
233 like a pretty cool idea".
234 </p><p>
235 Of course, just writing plain HTML and committing that is <i>too easy</i>,
236 therefore I decided to write a shell script that would turn some sort
237 of simple text file into proper HTML, commit it, and upload the result.
238 </p><p>
239 Well, about two hours later, I finished the first version of the script
240 turning plain text with minimal markup into an HTML page, and it obviously
241 worked -- otherwise nobody would be able to read this &#x263a;
242 </p>
243 </div>
244 </body>
245 </html>