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