t73f.de

Check-in [5a524c2d30]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Initial Indieweb support: Level 2.1
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:5a524c2d30d5fb92757e47e2b6ab28557d623700
User & Date: dkreuz 2016-04-26 08:28:40
Context
2016-04-26
14:56
Set font check-in: d4394aab80 user: dkreuz tags: trunk
08:28
Initial Indieweb support: Level 2.1 check-in: 5a524c2d30 user: dkreuz tags: trunk
2016-04-25
17:23
Bug fix: categories are in /admin now check-in: e52083d369 user: dkreuz tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to assets/static/style.css.

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
  overflow: hidden;
}
.blog-post-nav.above {
  margin-bottom: 1em;
}

.blog-post-nav a:link,
.blog-post-nav a:visited {


  color: #888;
  text-decoration: none;
}

main article h1 a:link,
main article h1 a:visited {
  color: #000;
  text-decoration: none;
}
.blog-post-meta a:link,
.blog-post-meta a:visited {
  color: #888;
}

.blog-post-nav a:active,
.blog-post-nav a:hover,
main article h1 a:active,
main article h1 a:hover,
.blog-post-meta a:active,
.blog-post-meta a:hover {







|
>
>









<
<
<
<







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
  overflow: hidden;
}
.blog-post-nav.above {
  margin-bottom: 1em;
}

.blog-post-nav a:link,
.blog-post-nav a:visited,
.blog-post-meta a:link,
.blog-post-meta a:visited {
  color: #888;
  text-decoration: none;
}

main article h1 a:link,
main article h1 a:visited {
  color: #000;
  text-decoration: none;
}





.blog-post-nav a:active,
.blog-post-nav a:hover,
main article h1 a:active,
main article h1 a:hover,
.blog-post-meta a:active,
.blog-post-meta a:hover {

Changes to content/blog/20140902_161500_alles_neu_macht_der_september/contents.lr.

48
49
50
51
52
53
54


oder meine Tweets unter @implizit vermisst, sollte mir unter
[@dkreuz](https://twitter.com/dkreuz) folgen. Wer mit mir interagieren möchte,
dem folge ich auch gerne zurück. Wer mich nicht für relevant hält oder meine
Tweets nicht vermisst, macht einfach gar nichts und wir beide sind glücklich.

Ich hoffe, im Laufe der Zeit regelt sich alles von allein. Und da sage einer,
Informatik sei zu theoretisch.









>
>
48
49
50
51
52
53
54
55
56
oder meine Tweets unter @implizit vermisst, sollte mir unter
[@dkreuz](https://twitter.com/dkreuz) folgen. Wer mit mir interagieren möchte,
dem folge ich auch gerne zurück. Wer mich nicht für relevant hält oder meine
Tweets nicht vermisst, macht einfach gar nichts und wir beide sind glücklich.

Ich hoffe, im Laufe der Zeit regelt sich alles von allein. Und da sage einer,
Informatik sei zu theoretisch.
---
twitter: https://twitter.com/dkreuz/status/506808517316337665

Changes to content/blog/20150302_205407_agil/contents.lr.

113
114
115
116
117
118
119



Natürlich verweigere ich mich damit ebenfalls einer Definition. Dafür kann das
Wort "agil" bleiben, was es jetzt schon ist: eine Marketinghülle.

Muss ja nicht schlecht sein, wenn man sich dessen bewusst ist.

Agile Kompetenz.









>
>
113
114
115
116
117
118
119
120
121

Natürlich verweigere ich mich damit ebenfalls einer Definition. Dafür kann das
Wort "agil" bleiben, was es jetzt schon ist: eine Marketinghülle.

Muss ja nicht schlecht sein, wenn man sich dessen bewusst ist.

Agile Kompetenz.
---
twitter: https://twitter.com/dkreuz/status/572486185580408832

Changes to content/blog/20150316_171100_barcamp/contents.lr.

155
156
157
158
159
160
161


einer gewollten Abgrenzung zur Gruppen- und Identitätsbildung?

Gibt es auch in anderen Bereichen.

Bei Agilisten.

Agile Barcamps.









>
>
155
156
157
158
159
160
161
162
163
einer gewollten Abgrenzung zur Gruppen- und Identitätsbildung?

Gibt es auch in anderen Bereichen.

Bei Agilisten.

Agile Barcamps.
---
twitter: https://twitter.com/dkreuz/status/577569391778402304

Changes to content/blog/20150604_205250_charts/contents.lr.

151
152
153
154
155
156
157


        chart.add(name, [0] + forecast_results(results[:sprint_number]))
    return chart


for i in range(len(REVIEW_DATES) + 1):
    create_chart(i).render_to_file('as-{}.svg'.format(i))
```









>
>
151
152
153
154
155
156
157
158
159
        chart.add(name, [0] + forecast_results(results[:sprint_number]))
    return chart


for i in range(len(REVIEW_DATES) + 1):
    create_chart(i).render_to_file('as-{}.svg'.format(i))
```
---
twitter: https://twitter.com/dkreuz/status/606551328634961922

Changes to content/blog/20150725_164700_durchschnittsnote/contents.lr.

152
153
154
155
156
157
158


Wenn ich mir den oben zitierten §11(1) genauer ansehe, steht dort nichts über
eine numerische Verteilung der Noten. Dort steht etwas über Anforderungen und
Leistungen, mehr nicht. Vielleicht schaffe ich es sogar, meine Anforderungen in
Teilen auf Noten abzubilden. Aber das ist ein anderes Thema.

**TL;DR:** Vergesst Durchschnittsnoten. Traue keiner Statistik, die du nicht
selbst gefälscht hast.









>
>
152
153
154
155
156
157
158
159
160
Wenn ich mir den oben zitierten §11(1) genauer ansehe, steht dort nichts über
eine numerische Verteilung der Noten. Dort steht etwas über Anforderungen und
Leistungen, mehr nicht. Vielleicht schaffe ich es sogar, meine Anforderungen in
Teilen auf Noten abzubilden. Aber das ist ein anderes Thema.

**TL;DR:** Vergesst Durchschnittsnoten. Traue keiner Statistik, die du nicht
selbst gefälscht hast.
---
twitter: https://twitter.com/dkreuz/status/624993210763493377

Changes to content/blog/20150816_133800_ethik/contents.lr.

119
120
121
122
123
124
125



In diesem Sinne scheint "Ethik" das Schicksal von Wörtern, wie
"[agil](../agil/)" oder "modern" zu teilen. Moderne, agile, ethische
Arbeitsbedingungen.

TL;DR: das Wort "ethisch" meint "moralisch", wird aber verwendet, um sich
Diskussionen über Moral oder gar Scheinmoral zu ersparen.









>
>
119
120
121
122
123
124
125
126
127

In diesem Sinne scheint "Ethik" das Schicksal von Wörtern, wie
"[agil](../agil/)" oder "modern" zu teilen. Moderne, agile, ethische
Arbeitsbedingungen.

TL;DR: das Wort "ethisch" meint "moralisch", wird aber verwendet, um sich
Diskussionen über Moral oder gar Scheinmoral zu ersparen.
---
twitter: https://twitter.com/dkreuz/status/632912043935465472

Changes to content/blog/20151005_163544_fossil/contents.lr.

163
164
165
166
167
168
169



Einfach mal ausprobieren.

**Update 12.10.15:** kleines Fundstück, das zeigt, was Git, Mercurial,
Subversion für Sicherheitsprobleme haben. Fossil ist kaum anfällig:
[Die Git-Stolperfalle: Viele Webseiten geben sensible Daten
preis](http://www.heise.de/newsticker/meldung/Die-Git-Stolperfalle-Viele-Webseiten-geben-sensible-Daten-preis-2764756.html).









>
>
163
164
165
166
167
168
169
170
171

Einfach mal ausprobieren.

**Update 12.10.15:** kleines Fundstück, das zeigt, was Git, Mercurial,
Subversion für Sicherheitsprobleme haben. Fossil ist kaum anfällig:
[Die Git-Stolperfalle: Viele Webseiten geben sensible Daten
preis](http://www.heise.de/newsticker/meldung/Die-Git-Stolperfalle-Viele-Webseiten-geben-sensible-Daten-preis-2764756.html).
---
twitter: https://twitter.com/dkreuz/status/651099621956186112

Changes to content/blog/20151129_183200_geruechte/contents.lr.

37
38
39
40
41
42
43


anderes als Gerüchte.

Gerüchte sind lästig, Sie verhindern produktive Arbeit. Die Energie, die in die
Verbreitung solcher Gerüchte gesteckt wird, wäre viel sinnvoller nutzbar.

Andererseits sagen Gerüchte mehr aus. Gibt es Gerüchte über unwichtige Personen
oder Personengruppen?









>
>
37
38
39
40
41
42
43
44
45
anderes als Gerüchte.

Gerüchte sind lästig, Sie verhindern produktive Arbeit. Die Energie, die in die
Verbreitung solcher Gerüchte gesteckt wird, wäre viel sinnvoller nutzbar.

Andererseits sagen Gerüchte mehr aus. Gibt es Gerüchte über unwichtige Personen
oder Personengruppen?
---
twitter: https://twitter.com/dkreuz/status/671019322538618880

Changes to content/blog/20160410_180700_heilbronn/contents.lr.

120
121
122
123
124
125
126


Es kommt mir nicht in den Sinn, Heilbronn als beste mögliche Stadt
herauszuheben. Ein Vergleich mit anderen Städten, ob Hamburg, Wolfsburg,
Ludwigsburg, Stuttgart, Bielefeld, München oder anderswo, wird immer hinken und
sehr subjektiv bleiben. Heilbronn ist aber, jenseits aller Meinungen, nicht nur
hässliche Provinz, sondern durchaus lebenswert.

![Binnenalster](heilbronn_binnenalster.jpg "Auch Heilbronn besitzt eine Binnenalster")









>
>
120
121
122
123
124
125
126
127
128
Es kommt mir nicht in den Sinn, Heilbronn als beste mögliche Stadt
herauszuheben. Ein Vergleich mit anderen Städten, ob Hamburg, Wolfsburg,
Ludwigsburg, Stuttgart, Bielefeld, München oder anderswo, wird immer hinken und
sehr subjektiv bleiben. Heilbronn ist aber, jenseits aller Meinungen, nicht nur
hässliche Provinz, sondern durchaus lebenswert.

![Binnenalster](heilbronn_binnenalster.jpg "Auch Heilbronn besitzt eine Binnenalster")
---
twitter: https://twitter.com/dkreuz/status/719195722709643265

Changes to models/blog-post.ini.

18
19
20
21
22
23
24




25
26
27
28
type = string
width = 1/4

[fields.categories]
label = Categories
type = checkboxes
source = site.query('/admin/categories')





[fields.body]
label = Body
type = markdown







>
>
>
>




18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
type = string
width = 1/4

[fields.categories]
label = Categories
type = checkboxes
source = site.query('/admin/categories')

[fields.twitter]
label = Twitter URL
type = url

[fields.body]
label = Body
type = markdown

Changes to templates/blog-post.html.

1
2
3
4
5
6
7
8

9
10
11

12
13

14




15
16
{% extends "layout.html" %}
{% from "macros/utils.html" import render_prev_next_post %}
{% from "macros/category.html" import render_category_url %}
{% block title %}{{ this.title }}{% endblock %}
{% block article_class %}blog-post{% endblock %}
{% block body %}
<nav class="blog-post-nav above">{{ render_prev_next_post(this) }}</nav>
<h1 class="blog-post-title">{{ this.title }}</h1>

<p class="blog-post-meta">
{{ this.pub_date|datetimeformat('d. MMMM YYYY, HH:mm') }} Uhr.
Unter

{%- for c in this.categories %}{{ render_category_url(c) }}{%- if loop.last %}{%- else %},{%- endif %}{%- endfor %}
abgelegt.</p>

{{ this.body }}




<nav class="blog-post-nav below">{{ render_prev_next_post(this) }}</nav>
{% endblock %}




|


|
>

<
|
>
|

>

>
>
>
>


1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
18
19
20
21
22
{% extends "layout.html" %}
{% from "macros/utils.html" import render_prev_next_post %}
{% from "macros/category.html" import render_category_url %}
{% block title %}{{ this.title }}{% endblock %}
{% block article_class %}blog-post h-entry{% endblock %}
{% block body %}
<nav class="blog-post-nav above">{{ render_prev_next_post(this) }}</nav>
<h1 class="blog-post-title p-name">{{ this.title }}</h1>
<a class="u-url" href="{{ this|url }}"></a>
<p class="blog-post-meta">

Von <a rel="author" class="p-author h-card" href="{{ config.base_url }}">Detlef Kreuz</a> am
<time class="dt-published" datetime="{{ this.pub_date|datetimeformat("YYYY-MM-dd HH:mm:ss") }}">{{ this.pub_date|datetimeformat("d. MMMM YYYY 'um' HH:mm") }}</time> Uhr veröffentlicht und unter
{%- for c in this.categories %}{{ render_category_url(c, indieweb=True) }}{%- if loop.last %}{%- else %},{%- endif %}{%- endfor %}
abgelegt.</p>
<div class="e-content">
{{ this.body }}
</div>
{%- if this.twitter %}
<a rel="syndication" class="u-syndication" href="{{ this.twitter }}"></a>
{%- endif %}
<nav class="blog-post-nav below">{{ render_prev_next_post(this) }}</nav>
{% endblock %}

Changes to templates/categories.html.

1
2
3
4
5
6
7
8
9
10
{% extends "layout.html" %}
{% block title %}Kategorien{% endblock %}
{% block body %}
<h1>Kategorien</h1>
<ul>
{% for category in site.query('/admin/categories') %}
<li><a href="{{ category|url }}">{{ category.name }}</a></li>
{% endfor %}
</ul>
{% endblock %}





|

|


1
2
3
4
5
6
7
8
9
10
{% extends "layout.html" %}
{% block title %}Kategorien{% endblock %}
{% block body %}
<h1>Kategorien</h1>
<ul>
{%- for category in site.query('/admin/categories') %}
<li><a href="{{ category|url }}">{{ category.name }}</a></li>
{%- endfor %}
</ul>
{% endblock %}

Changes to templates/category.html.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{% extends "layout.html" %}
{% from "macros/blog.html" import render_blog_date_url %}
{% block title %}Kategorie: {{ this.name }}{% endblock %}
{% block body %}
<h1><a href="{{ this.parent|url }}">Kategorie:</a> {{ this.name }}</h1>
<ul>
{% for page in [site.root] recursive %}
{% if this._id in page.categories %}
<li>{{ render_blog_date_url(page) }}</li>
{% endif %}
{{- loop(page.children) }}
{% endfor %}
</ul>
{% endblock %}






|
|

|

|


1
2
3
4
5
6
7
8
9
10
11
12
13
14
{% extends "layout.html" %}
{% from "macros/blog.html" import render_blog_date_url %}
{% block title %}Kategorie: {{ this.name }}{% endblock %}
{% block body %}
<h1><a href="{{ this.parent|url }}">Kategorie:</a> {{ this.name }}</h1>
<ul>
{%- for page in [site.root] recursive %}
{%- if this._id in page.categories %}
<li>{{ render_blog_date_url(page) }}</li>
{%- endif %}
{{- loop(page.children) }}
{%- endfor %}
</ul>
{% endblock %}

Changes to templates/layout.html.

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<![endif]-->
<link rel="stylesheet" href="{{ '/static/style.css'|asseturl }}">
<link rel="stylesheet" href="{{ get_pygments_stylesheet()|url }}">
<link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{ '/blog/feed.xml'|url }}" />
</head>
<body>
<header>
  <h1><a href="{{ '/'|url }}">Prof. Dr. Detlef Kreuz</a></h1>
</header>
<main>
<nav class="main-nav">
  <ul>
  {%- for id, item in bag('menu').iteritems() %}
    <li{% if (item.path == this.path and this.path == '/') or (item.path != '/' and this.is_child_of(item.path)) %} class="active"{% endif %}><a href="{{ item.path|url }}">{{ item.label }}</a></li>
    {%- if item.children == 'True' and this.is_child_of(item.path) %}







|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<![endif]-->
<link rel="stylesheet" href="{{ '/static/style.css'|asseturl }}">
<link rel="stylesheet" href="{{ get_pygments_stylesheet()|url }}">
<link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{ '/blog/feed.xml'|url }}" />
</head>
<body>
<header>
  <h1><a class="h-card" rel="me" href="http://t73f.de" href="{{ '/'|url }}">Prof. Dr. Detlef Kreuz</a></h1>
</header>
<main>
<nav class="main-nav">
  <ul>
  {%- for id, item in bag('menu').iteritems() %}
    <li{% if (item.path == this.path and this.path == '/') or (item.path != '/' and this.is_child_of(item.path)) %} class="active"{% endif %}><a href="{{ item.path|url }}">{{ item.label }}</a></li>
    {%- if item.children == 'True' and this.is_child_of(item.path) %}

Changes to templates/macros/blog.html.

1
2
3
4
{%- macro render_blog_date_url(post) %}
{%- set post_date = post.pub_date|dateformat("MMM YYYY") %}
<a href="{{ post|url }}">{{ post.title }}</a> <span class="blog-post-meta">({{ post_date }})</span>
{% endmacro %}



|
1
2
3
4
{%- macro render_blog_date_url(post) %}
{%- set post_date = post.pub_date|dateformat("MMM YYYY") %}
<a href="{{ post|url }}">{{ post.title }}</a> <span class="blog-post-meta">({{ post_date }})</span>
{%- endmacro -%}

Changes to templates/macros/category.html.

1
2
3
4
5
6
7
{%- macro render_category_url(category_id) %}
{%- for cat in site.query('/admin/categories') %}
{%- if category_id == cat._id %}
<a href="{{ cat|url }}">{{ cat.name }}</a>
{%- endif %}
{%- endfor %}
{%- endmacro %}
|


|



1
2
3
4
5
6
7
{%- macro render_category_url(category_id, indieweb=False) %}
{%- for cat in site.query('/admin/categories') %}
{%- if category_id == cat._id %}
<a {% if indieweb %}class="p-category" {% endif %} href="{{ cat|url }}">{{ cat.name }}</a>
{%- endif %}
{%- endfor %}
{%- endmacro %}