Leaked link
[git/dscho.git] / index.html
blobf3298ee0ffc55666e1fbd27ff74e8b90f1df7c02
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=#1232742582>23 Jan 2009 How to deal with files that are not source code when merging</a>
16 <li><a href=#1232626236>22 Jan 2009 The UGFWIINI contest</a>
17 <li><a href=#1232611542>22 Jan 2009 Top-posting</a>
18 <li><a href=#1232607201>22 Jan 2009 Sverre's hat</a>
19 <li><a href=#1232604722>22 Jan 2009 Let there be images!</a>
20 <li><a href=#1232599693>22 Jan 2009 My blog has style</a>
21 <li><a href=#1232589695>22 Jan 2009 My new blog system... bloGit</a>
22 </ol></p>
23 </td></tr></table>
24 <br>
25 <div style="text-align:right;">
26 <a href="dscho.git?a=blob_plain;hb=blog;f=blog.rss"
27 title="Subscribe to my RSS feed"
28 class="rss" rel="nofollow"
29 style="background-color:orange;text-decoration:none;color:white;font-family:sans-serif;">RSS</a>
30 </div>
31 <br>
32 <table width=400px bgcolor=#e0e0e0 border=1>
33 <tr><th>Links:</th></tr>
34 <tr><td>
35 <ul>
36 <li> <a href=http://git-scm.com/>Git's homepage</a>
37 <li> <a href=http://gitster.livejournal.com/>Junio's blog</a>
38 <li> <a href=http://www.spearce.org/>Shawn's blog</a> seems to be sitting
39 idle ever since he started working for Google...
40 <li> <a href=http://torvalds-family.blogspot.com/>Linus' blog</a> does not
41 talk much about Git...
42 <li> Scott Chacon's <a href=http://whygitisbetterthanx.com/>Why Git is better
43 than X</a> site
44 <li> <a href=http://vilain.net/>The blog of mugwump</a>
45 <li> <a href=http://blogs.gnome.org/newren/>Elijah Newren</a> chose the
46 same path as Cogito, offering an alternative porcelain (an approach
47 that is doomed in my opinion)
48 <li> <a href=http://msysgit.googlecode.com/>The msysGit project</a>, a (mostly)
49 failed experiment to lure the many Windows developers out there to
50 contribute to Open Source for a change.
51 </ul>
52 </td></tr></table>
53 <br>
54 <table width=400px bgcolor=#e0e0e0 border=1>
55 <tr><th>Google Ads:</th></tr>
56 <tr><td align=center>
57 <script type="text/javascript"><!--
58 google_ad_client = "pub-5106407705643819";
59 /* 300x250, created 1/22/09 */
60 google_ad_slot = "6468207338";
61 google_ad_width = 300;
62 google_ad_height = 250;
63 //-->
64 </script>
65 <script type="text/javascript"
66 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
67 </script>
68 </td></tr></table>
69 </div>
70 <h6>Friday, 23rd of January, Anno Domini MMIX, at the hour of the Pig</h6>
71 <a name=1232742582>
72 <h2>How to deal with files that are not source code when merging</h2>
74 <p>
75 </p><p>
76 Last week, one of the mentors of last year's <a href=http://code.google.com/soc>
77 Summer of Code</a> mentioned the idea that merge strategies are in dear need
78 for file types other than source code.
79 </p><p>
80 I think this idea is awesome, even if I cannot bring myself to believe that
81 any of the file types would make a good Summer of Code project: either they
82 are too complicated (think raster images such as .png or even .jpg), or they
83 are too straight-forward (think LaTeX, where all that is needed is a good
84 graphical user interface to inspect the three versions: <i>ours</i>, <i>baseline</i>
85 and <i>theirs</i>).
86 </p><p>
87 The LaTeX idea would be a good project for me to mentor, though: I have a
88 pretty clear idea how it should be done; I just lack the time (and motivation)
89 to do it myself.
90 </p><p>
91 As for OpenOffice text documents, vector graphics (such as .svg), or more
92 specific data such as spreadsheets, I think that all of these are really
93 difficult: the problem is not so much the implementation (i.e. the programming
94 part of it), but the design.
95 </p><p>
96 This design should involve much more than a Summer of Code project is about:
97 you would need to survey users' expectations, and at least the mentor -- if
98 not the student -- would need to be an expert in usability questions, which
99 is rather unlikely in the realm of Open Source.
100 </p><p>
101 Maybe this is the missing part in Open Source: we have many brilliant
102 programmers, but next to nobody with a good idea how to design intuitive
103 user interfaces.
104 </p><p>
105 That might be related to the fact that brilliant software engineers, as they
106 can be found in Open Source, are not exactly known for their social skills,
107 a human trait that seems to be a very important prerequisite for designing
108 intuitive user interfaces.
109 </p><p>
110 Well, I have <a href=http://git.or.cz/gitwiki/SoC2009Ideas#head-6188833471f79f277e162ef9fbe1592aa10b5f6c>
111 added the proposal to Git's Summer of Code idea page on the Git Wiki; We will
112 see what comes out of it.
113 </p>
114 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Goat</h6>
115 <a name=1232626236>
116 <h2>The UGFWIINI contest</h2>
119 </p><p>
120 Just in case somebody finds this blog, here is a challenge. Inspired by my
121 own little hack (this blog), I announce the "Using Git For What It Is Not
122 Intended" contest.
123 </p><p>
124 And it is especially cool, since the acronym sounds cool! You might miss
125 this fact if you do no know that I pronounce the "F" like an "A" so that
126 it sounds cool.
127 </p><p>
128 This will be a running contest; whenever I have 10 valid applications, I
129 will announce a winner on the Git mailing list.
130 </p><p>
131 So, what accounts for a valid application?
132 </p><p>
133 <ul>
134 <li> You must use a Git program (the term is used loosely here, GitWeb is
135 considered a Git program, for example).
136 <li> The program must be intended for something completely different than
137 what you are using it for. E.g. GitWeb -- which was intended to let
138 you browse through the history using your web browser -- is used
139 to serve a blog to the wide world.
140 <li> You must be able to prove that you actually used the Git program to
141 the purpose you claim, preferably in a live demonstration like this
142 one.
143 <li> Nobody and nothing must be harmed in the process (except your
144 laughing muscle, that's okay).
145 </ul>
146 </p><p>
147 So, how does such an abuse look like?
148 </p><p>
149 <ul>
150 <li> ... like this blog.
151 <li> Managing your mail (in maildir format) in a Git repository.
152 <li> Finding duplicate files by
153 <table
154 border=1 bgcolor=black>
155 <tr><td bgcolor=lightblue colspan=3>
156 &nbsp;
157 </td></tr>
158 <tr><td>
159 <table cellspacing=5 border=0
160 style="color:white;">
161 <tr><td>
162 <pre>
163 $ git init
164 $ git add .
165 $ git ls-files --stage | sort -k2 | uniq -d -s7 -w40
166 </pre>
167 </td></tr>
168 </table>
169 </td></tr>
170 </table>
171 <li> Abusing the Git alias mechanism to call scripts defined directly in
172 the config.
173 </ul>
174 </p><p>
175 I am really looking forward to all of your submissions... *chuckles*
176 </p><p>
177 </p>
178 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Snake</h6>
179 <a name=1232611542>
180 <h2>Top-posting</h2>
183 </p><p>
184 Okay, last post for a while. But this is something that is nagging me
185 tremendously. I should probably just let go, but in my deepest inner self,
186 really close to my heart, I refuse to believe that any human beings could
187 be incapable of certain degrees of reason.
188 </p><p>
189 Take the example of top-posting. Everybody who read a top-posted email
190 knows that you have to scroll down, possibly weeding through tons of
191 pages to find out what the heck the author of the last reply was replying
193 </p><p>
194 Never mind that it would take the author of the reply just a couple of
195 seconds to remove all the irrelevant stuff -- as she already knows what
196 is the relevant part, saving minutes, in case of mailing lists hours,
197 easily, to the readers who otherwise would have to discern what is
198 irrelevant and what is relevant first.
199 </p><p>
200 It is a horrible time waste. But of course not for the top-poster.
201 </p><p>
202 The problem is that I frequently run into such people, and when I write
203 them a polite mail, explaining to them that it is impolite to top-post,
204 and why, the answers I get sometimes make me check if the sky is still up
205 and the earth down. Yesterday was an example of such a dubitable
206 pleasure.
207 </p><p>
208 Most funny are the ridiculous attempts by those persons at explaining why
209 top-posting is <i>so</i> much superior to anything else.
210 </p><p>
211 Which is good, because if they were not that funny, they would be pretty sad.
212 </p>
213 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Dragon</h6>
214 <a name=1232607201>
215 <h2>Sverre's hat</h2>
218 </p><p>
219 The fun part about a blog is that you can talk about less technical stuff.
220 For example, Sverre's hat.
221 </p><p>
222 Let me start a bit earlier, so that you get the context.
223 </p><p>
224 Last year, at the <a href=http://git.or.cz/gitwiki/GitTogether>GitTogether</a>,
225 we had an <a href=http://en.wikipedia.org/wiki/Unconference>unconference style
226 conference</a>, which basically meant that it was our job to decide what
227 we want to talk about.
228 </p><p>
229 It turned out to be pretty hard, because there was so much we wanted to
230 discuss, and because we wanted to get to know each other, and we wanted to
231 do some hacking.
232 </p><p>
233 So to help us decide what subjects, and in which order we wanted to have
234 scheduled, Shawn opened a series on <a href=http://moderator.appspot.com/>
235 Google Moderator</a>, a nifty, yet simple application which allows a group
236 to agree quickly on an agenda.
237 </p><p>
238 It worked quite well; However, that little saboteur displayed his sense of
239 humor so overtly that some entertaining Gitter put the question "Should Sverre
240 wear a hat?" on the agenda.
241 </p><p>
242 Sure enough, the subject got voted up, and eventually, we got Sverre a hat:
243 </p><p>
244 <center><img src=dscho.git?a=blob_plain;hb=832be85c785c80202f17b87db7f063ae57ec2cac;f=sverre-hat.jpg></center>
245 </p><p>
246 By the way, another thing I like about this blog engine is that there are no
247 comments... Nothing is more annoying than leaving a comment on a blog,
248 forgetting about it for a few months, and then finding somebody answered
249 ages ago.
250 </p><p>
251 Update: Sverre says it was dsymonds idea.
252 </p>
253 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Dragon</h6>
254 <a name=1232604722>
255 <h2>Let there be images!</h2>
258 </p><p>
259 One of the most important features of blogs is the ability to insert images.
260 So what would this blog be, if it could not present something that says
261 more than a thousand words?
262 </p><p>
263 So here it goes, my first picture in this blog, taken from my Google Tech
264 Talk in Mountain View:
265 </p><p>
266 <center><img src=dscho.git?a=blob_plain;hb=832be85c785c80202f17b87db7f063ae57ec2cac;f=all-your-rebase.png></center>
267 </p><p>
268 Now this blog starts to look like a real blog...
269 </p>
270 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Rabbit</h6>
271 <a name=1232599693>
272 <h2>My blog has style</h2>
275 </p><p>
276 It is official. The blog has a style sheet now.
277 </p><p>
278 The major problem was how to design the system such that it would work
279 both locally and on <a href=http://repo.or.cz>repo.or.cz</a> via gitweb.
280 </p><p>
281 Basically, I realized that I'd need a dry run mode anyway, to prevent
282 all my failed attemp.. oops, I meant, to prevent an accidental push
283 when I am at an, ahem, intermediate state of the 'blog' branch.
284 </p><p>
285 Therefore, I could write a different file locally, which I can load
286 into my venerable Firefox.
287 </p><p>
288 The next plans with my new toy are to enable an easy way to support
289 showing images, and then maybe a table of contents. External links
290 would be cool (<a href=http://repo.or.cz>repo.or.cz</a> does not count, it is special-cased), too.
291 </p><p>
292 And later maybe a cut-off, with automatic generation of links to older
293 posts. Hmm, for those, I'll have to change the URL to include the
294 current commit name, so that the images will be found, too...
295 </p><p>
296 Which in turn means that I'll have to parse the source for new
297 images first, so that they can be in the commit that index.html
298 will link to, <u>before</u> it gets committed. Oh well, that cannot be
299 helped! &#x263a;
300 </p>
301 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Tiger</h6>
302 <a name=1232589695>
303 <h2>My new blog system... bloGit</h2>
306 </p><p>
307 Nowadays, you got to have your blog. Or better: your blogs. Even Junio
308 blogs about Git.
309 </p><p>
310 So I felt a little left behind, having no blog to show off. But then
311 I read about this fantastic new website on the mailing list, called
312 <i>git planet</i> which was supposed to be a place where you could have your
313 Git located blog.
314 </p><p>
315 Except that you could not have your blog <u>there</u>. Instead, it is just an
316 aggregator site.
317 </p><p>
318 I was disappointed.
319 </p><p>
320 But then, I had this (in my humble opinion very cute) idea that I already used to "publish"
321 my slides from the talk "Contributing with Git (AKA All your rebase are
322 belong to us)": back then, I just created a new branch, committed the
323 file, and uploaded the result to <a href=http://repo.or.cz>repo.or.cz</a>, to be downloaded via Gitweb.
324 </p><p>
325 So I asked Pasky via IRC, if he would have any objections if I abused
326 <a href=http://repo.or.cz>repo.or.cz</a> as a blog server. He understood at once, and found it "sounds
327 like a pretty cool idea".
328 </p><p>
329 Of course, just writing plain HTML and committing that is <i>too easy</i>,
330 therefore I decided to write a shell script that would turn some sort
331 of simple text file into proper HTML, commit it, and upload the result.
332 </p><p>
333 Well, about two hours later, I finished the first version of the script
334 turning plain text with minimal markup into an HTML page, and it obviously
335 worked -- otherwise nobody would be able to read this &#x263a;
336 </p>
337 </div>
338 </body>
339 </html>