website
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
_site
|
||||||
4
_config.yml
Normal file
4
_config.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
safe: true
|
||||||
|
auto: true
|
||||||
|
server: true
|
||||||
|
pygments: true
|
||||||
8
_includes/footer.html
Normal file
8
_includes/footer.html
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
</article>
|
||||||
|
<footer>
|
||||||
|
Thanks for visiting! This is a personal blog – it reflects my own opinions and not those of my employers, past or present.<br />
|
||||||
|
This site is <a href="https://github.com/dpb587/dpb587.github.com">open-source</a>.
|
||||||
|
Unless noted, code samples are licensed under <a href="http://opensource.org/licenses/mit-license.php">MIT License</a> and all other content under <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY</a>.
|
||||||
|
</header>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
36
_includes/header.html
Normal file
36
_includes/header.html
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<title>{% if page.title != "Home" %}{{ page.title }} – {% endif %}Danny Berger</title>
|
||||||
|
|
||||||
|
<link rel="icon" type="image/png" href="http://www.gravatar.com/avatar/5544fe6a05400da5a8957ff29dd6718c.png?s=128" />
|
||||||
|
<link href="http://fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="/include/site/screen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="/include/site/pygments.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="/blog/atom.xml" type="application/atom+xml" rel="alternate" title="Danny Berger (blog)">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<div class="timeline">
|
||||||
|
<a href="/"><img alt="DPB" src="http://www.gravatar.com/avatar/5544fe6a05400da5a8957ff29dd6718c.png?s=128" /></a>
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/projects.html">projects</a></li>
|
||||||
|
<li><a href="/about.html">about</a></li>
|
||||||
|
</ul>
|
||||||
|
<h1>
|
||||||
|
<strong><a href="/">Danny Berger</a></strong>
|
||||||
|
</h1>
|
||||||
|
<div class="meta">
|
||||||
|
<a href="http://dpb587.me/" style="color:inherit;">dpb587</a>
|
||||||
|
·
|
||||||
|
<a href="https://github.com/dpb587">github</a>
|
||||||
|
·
|
||||||
|
<a href="http://www.linkedin.com/in/dpb587">linkedin</a>
|
||||||
|
·
|
||||||
|
<a href="mailto:dpb587@gmail.com">email</a>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<article>
|
||||||
3
_layouts/default.html
Normal file
3
_layouts/default.html
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{% include header.html %}
|
||||||
|
{{ content }}
|
||||||
|
{% include footer.html %}
|
||||||
19
_layouts/post.html
Normal file
19
_layouts/post.html
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{% include header.html %}
|
||||||
|
<section>
|
||||||
|
<header>
|
||||||
|
<div class="timeline">
|
||||||
|
<time datetime="{{ page.date|date_to_xmlschema }}"><strong>{{ page.date|date:"%b %d"|upcase }}</strong><br />{{ page.date|date:"%Y" }}</time>
|
||||||
|
{% if page.location %}
|
||||||
|
<a href="https://maps.google.com/maps?hl=en&ll={{ page.location.latitude }},{{ page.location.longitude }}&t=w&z=12"><img height="49" src="https://maps.googleapis.com/maps/api/staticmap?center={{ page.location.latitude }},{{ page.location.longitude }}&zoom=9&size=98x98&sensor=false" title="{{ page.location.title }}" width="49" /></a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<h2>{{ page.title }}</h2>
|
||||||
|
</header>
|
||||||
|
<section>
|
||||||
|
{{ content }}
|
||||||
|
</section>
|
||||||
|
{% if page.tags|size %}
|
||||||
|
<div class="meta">{% for tag in page.tags %}{% if forloop.index0 > 0 %} · {% endif %}<a href="/tags/{{ tag|slugize }}">{{ tag }}</a>{% endfor %}</div>
|
||||||
|
{% endif %}
|
||||||
|
</section>
|
||||||
|
{% include footer.html %}
|
||||||
73
about.html
Executable file
73
about.html
Executable file
@@ -0,0 +1,73 @@
|
|||||||
|
---
|
||||||
|
title: About
|
||||||
|
layout: default
|
||||||
|
---
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>About</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I am a <em>software engineer</em> who enjoys pushing the limits of <em>web technology</em> and applying them to <em>business processes</em>.
|
||||||
|
Ideally, my job provides me with technical challenges that require <em>practical solutions</em>. I have a
|
||||||
|
solid understanding about industry best practices, but I am more interested in <em>continuously learning</em> about how and
|
||||||
|
why those practices can be <em>challenged and improved</em>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Skills</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I am especially familiar with 'cloud' concepts, e-commerce, server administration, and web applications. When
|
||||||
|
working on a project, my preferred technologies are Unix, PHP (symfony2 lately) and JavaScript (node.js
|
||||||
|
especially). I enjoy experimenting, but I have recent production experience with the following:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>languages – applescript, css, html, javascript, less, php5, sql, xml</li>
|
||||||
|
<li>frameworks – doctrine2, git, mootools, phpunit, require.js, rpm, svn, symfony2, twig</li>
|
||||||
|
<li>software – apache, gearman, jenkins, memcache, mysql, nginx, openvpn, oracle, puppet, solr</li>
|
||||||
|
<li>systems – centos, linux, osx</li>
|
||||||
|
<li>apis – aws-ec2, aws-r53, aws-s3, facebook, paypal, twilio</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>Experience</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<strong>Software Developer</strong> (July '09 – October '12) — <a href="http://www.sentryds.com/">Sentry Data Systems</a><br />
|
||||||
|
Developing internal applications to support business operations including a custom ticket and project management system;
|
||||||
|
defining development practices and guidelines; and implementing open source libraries for reducing internal code costs.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<strong>Software Systems Engineer</strong> (June '06 – present) — <a href="https://theloopyewe.com/">The Loopy Ewe</a><br />
|
||||||
|
Developing and maintaining in-house e-commerce frontend and backoffice tools; management of systems, servers, and
|
||||||
|
service providers. Primarily using PHP, MySQL, CentOS, and third-party APIs for secure payment processing with PayPal
|
||||||
|
and shipment processing with USPS and Endicia.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<strong>Student System Administrator</strong> (Spring '06 – Fall '08) — <a href="http://www.taylor.edu/">Taylor University</a><br />
|
||||||
|
Maintaining and providing support for the Computer Science department's lab computers and servers, both Linux and
|
||||||
|
Windows. Created web-based applications to aid in department processes for faculty and students. Contributing editor for
|
||||||
|
the department's public website.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<strong>Student Advanced Sound Technician</strong> (Fall '05 — Spring '08) — <a href="http://www.taylor.edu/">Taylor University</a><br />
|
||||||
|
In charge of event sound and lights, setup/teardown, and other group coordination activities. Events ranged from 10 to
|
||||||
|
1600 attendees, lectures to full bands, indoor to outdoor.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<strong>Network Administrator</strong> (Spring '03 – Summer '07) — <a href="http://www.cpcstl.org/">The Covenant Presbyterian Church</a><br />
|
||||||
|
Managed the Microsoft Windows and Exchange servers, internal ministry application, and other productivity software.
|
||||||
|
Responsible for technical support (onsite, phone, and email). Created, maintained, and hosted their website CMS during
|
||||||
|
and several years after employment.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Education</h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="http://www.taylor.edu/">Taylor University</a> – Bachelor of Science (2005 - 2009) – Computer Science, Systems (Business Information Systems)</li>
|
||||||
|
<li><a href="http://www.wcastl.org/">Westminster Christian Academy</a> – high school (2001 - 2005)</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
85
blog/_posts/2013-01-07-secure-git-repositories.md
Normal file
85
blog/_posts/2013-01-07-secure-git-repositories.md
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
---
|
||||||
|
title: Secure Git Repositories
|
||||||
|
layout: post
|
||||||
|
tags: git security
|
||||||
|
---
|
||||||
|
|
||||||
|
I use private repositories on [GitHub][1], but I still don't feel quite comfortable pushing sensitive data like
|
||||||
|
passwords, keys, and account information. Typically that information ends up just sitting on my local machine or in my
|
||||||
|
head ready for me to pull up as needed. It would be much better if that information was a bit more fault tolerant and,
|
||||||
|
even better, if I could follow similar workflows as the rest of my application code.
|
||||||
|
|
||||||
|
After some research I discovered [gist 873637][2] which discusses using `git`'s clean and smudge [filters][4] to pass
|
||||||
|
files through `openssl` for decryption and encryption. Soon I found the much more useful [`shadowhand/git-encrypt`][3]
|
||||||
|
tool.
|
||||||
|
|
||||||
|
|
||||||
|
### Initial Setup
|
||||||
|
|
||||||
|
First, I installed `gitcrypt` on my machine:
|
||||||
|
|
||||||
|
{% highlight console %}
|
||||||
|
$ git clone git://github.com/shadowhand/git-encrypt.git /usr/local/git-encrypt
|
||||||
|
$ chmod +x /usr/local/git-encrypt/gitcrypt
|
||||||
|
$ ln -s /usr/local/git-encrypt/gitcrypt /usr/local/bin/gitcrypt
|
||||||
|
{% endhighlight %}
|
||||||
|
|
||||||
|
Next, I created a new repo and used `gitcrypt init` with the auto-generated defaults:
|
||||||
|
|
||||||
|
{% highlight console %}
|
||||||
|
$ mkdir fort-knox ; cd !$
|
||||||
|
$ git init
|
||||||
|
$ gitcrypt init
|
||||||
|
Generate a random salt? [Y/n] Y
|
||||||
|
Generate a random password? [Y/n]Y
|
||||||
|
What encryption cipher do you want to use? [aes-256-ecb]
|
||||||
|
|
||||||
|
This configuration will be stored:
|
||||||
|
|
||||||
|
salt: 7d9f6cc1512aa2b5
|
||||||
|
pass: EAC8405A-DD64-43A3-A17F-EB28195B4B1E
|
||||||
|
cipher: aes-256-ecb
|
||||||
|
|
||||||
|
Does this look right? [Y/n]
|
||||||
|
Do you want to use .git/info/attributes? [Y/n]
|
||||||
|
What files do you want encrypted? [*]
|
||||||
|
{% endhighlight %}
|
||||||
|
|
||||||
|
Now I just have to be sure to securely keep the salt and pass elsewhere for the next time I setup this repo. Other than
|
||||||
|
that, it's ready for me to use like any other `git` repository.
|
||||||
|
|
||||||
|
|
||||||
|
### A Practical Bit
|
||||||
|
|
||||||
|
Since I won't frequently be setting up this repository, it'd probably be best if I could keep a reminder about what I'll
|
||||||
|
need to do. So I add a `.gitattributes` file which excludes itself and README from encryption:
|
||||||
|
|
||||||
|
{% highlight vim %}
|
||||||
|
* filter=encrypt diff=encrypt
|
||||||
|
README -filter -diff
|
||||||
|
.gitattributes -filter -diff
|
||||||
|
|
||||||
|
[merge]
|
||||||
|
renormalize=true
|
||||||
|
{% endhighlight %}
|
||||||
|
|
||||||
|
And include the necessary commands and reference in the README:
|
||||||
|
|
||||||
|
{% highlight console %}
|
||||||
|
$ git clone git@github.com:dpb587/fort-knox.git fort-knox ; cd !$
|
||||||
|
$ gitcrypt init # https://github.com/shadowhand/git-encrypt
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
{% endhighlight %}
|
||||||
|
|
||||||
|
|
||||||
|
### Summary
|
||||||
|
|
||||||
|
With `gitcrypt` I can work with my repository and enjoy extra security on top of the redundancy and version control that
|
||||||
|
`git` provides. The only difference from my regular repos is I can't really view my files from [github.com][1] (with the
|
||||||
|
convenient exception of the README).
|
||||||
|
|
||||||
|
|
||||||
|
[1]: https://github.com/
|
||||||
|
[2]: https://gist.github.com/873637
|
||||||
|
[3]: https://github.com/shadowhand/git-encrypt
|
||||||
|
[4]: http://git-scm.com/book/ch7-2.html#Keyword-Expansion
|
||||||
24
blog/atom.xml
Normal file
24
blog/atom.xml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
layout: nil
|
||||||
|
---
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||||
|
<id>http://dpb587.me/</id>
|
||||||
|
<title>Danny Berger</title>
|
||||||
|
<link href="http://dpb587.me/atom.xml" rel="self"/>
|
||||||
|
<link href="http://dpb587.me/"/>
|
||||||
|
<updated>{{ site.time | date_to_xmlschema }}</updated>
|
||||||
|
<author>
|
||||||
|
<name>Danny Berger</name>
|
||||||
|
<email>dpb587@gmail.com</email>
|
||||||
|
</author>
|
||||||
|
{% for post in site.posts %}
|
||||||
|
<entry>
|
||||||
|
<id>http://dpb587.me{{ post.id }}</id>
|
||||||
|
<title>{{ post.title }}</title>
|
||||||
|
<link href="http://dpb587.me{{ post.url }}"/>
|
||||||
|
<updated>{{ post.date | date_to_xmlschema }}</updated>
|
||||||
|
<content type="html">{{ post.content | xml_escape }}</content>
|
||||||
|
</entry>
|
||||||
|
{% endfor %}
|
||||||
|
</feed>
|
||||||
60
include/site/pygments.css
Normal file
60
include/site/pygments.css
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
/* https://github.com/mojombo/mojombo.github.com/blob/master/css/syntax.css */
|
||||||
|
.highlight .c { color: #999988; font-style: italic } /* Comment */
|
||||||
|
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
||||||
|
.highlight .k { font-weight: bold } /* Keyword */
|
||||||
|
.highlight .o { font-weight: bold } /* Operator */
|
||||||
|
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
|
||||||
|
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
|
||||||
|
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
|
||||||
|
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
||||||
|
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
|
||||||
|
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
|
||||||
|
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||||
|
.highlight .gr { color: #aa0000 } /* Generic.Error */
|
||||||
|
.highlight .gh { color: #999999 } /* Generic.Heading */
|
||||||
|
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
|
||||||
|
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
|
||||||
|
.highlight .go { color: #888888 } /* Generic.Output */
|
||||||
|
.highlight .gp { color: #555555 } /* Generic.Prompt */
|
||||||
|
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||||
|
.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
|
||||||
|
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
|
||||||
|
.highlight .kc { font-weight: bold } /* Keyword.Constant */
|
||||||
|
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
|
||||||
|
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
|
||||||
|
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
|
||||||
|
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
|
||||||
|
.highlight .m { color: #009999 } /* Literal.Number */
|
||||||
|
.highlight .s { color: #d14 } /* Literal.String */
|
||||||
|
.highlight .na { color: #008080 } /* Name.Attribute */
|
||||||
|
.highlight .nb { color: #0086B3 } /* Name.Builtin */
|
||||||
|
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
|
||||||
|
.highlight .no { color: #008080 } /* Name.Constant */
|
||||||
|
.highlight .ni { color: #800080 } /* Name.Entity */
|
||||||
|
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
|
||||||
|
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
|
||||||
|
.highlight .nn { color: #555555 } /* Name.Namespace */
|
||||||
|
.highlight .nt { color: #000080 } /* Name.Tag */
|
||||||
|
.highlight .nv { color: #008080 } /* Name.Variable */
|
||||||
|
.highlight .ow { font-weight: bold } /* Operator.Word */
|
||||||
|
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
||||||
|
.highlight .mf { color: #009999 } /* Literal.Number.Float */
|
||||||
|
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
|
||||||
|
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
|
||||||
|
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
|
||||||
|
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
|
||||||
|
.highlight .sc { color: #d14 } /* Literal.String.Char */
|
||||||
|
.highlight .sd { color: #d14 } /* Literal.String.Doc */
|
||||||
|
.highlight .s2 { color: #d14 } /* Literal.String.Double */
|
||||||
|
.highlight .se { color: #d14 } /* Literal.String.Escape */
|
||||||
|
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
|
||||||
|
.highlight .si { color: #d14 } /* Literal.String.Interpol */
|
||||||
|
.highlight .sx { color: #d14 } /* Literal.String.Other */
|
||||||
|
.highlight .sr { color: #009926 } /* Literal.String.Regex */
|
||||||
|
.highlight .s1 { color: #d14 } /* Literal.String.Single */
|
||||||
|
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
|
||||||
|
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
|
||||||
|
.highlight .vc { color: #008080 } /* Name.Variable.Class */
|
||||||
|
.highlight .vg { color: #008080 } /* Name.Variable.Global */
|
||||||
|
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
|
||||||
|
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
|
||||||
216
include/site/screen.css
Normal file
216
include/site/screen.css
Normal file
@@ -0,0 +1,216 @@
|
|||||||
|
body {
|
||||||
|
color: #333333;
|
||||||
|
font-family: Lato, sans-serif;
|
||||||
|
font-size: 16px;
|
||||||
|
margin: 2px 10px 10px 44px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body > header, article > section {
|
||||||
|
border-bottom: #F0F0F0 solid 1px;
|
||||||
|
border-left: #E9E9E9 solid 1px;
|
||||||
|
margin-bottom: 2px;
|
||||||
|
padding: 24px 34px 18px 34px;
|
||||||
|
position: relative;
|
||||||
|
width: 640px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body > footer {
|
||||||
|
color: #999999;
|
||||||
|
font-size: 11px;
|
||||||
|
font-weight: 400;
|
||||||
|
padding: 36px 6px 28px 36px;
|
||||||
|
position: relative;
|
||||||
|
width: 668px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body > footer a {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
|
||||||
|
body > footer:hover {
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
|
||||||
|
body > footer:hover a {
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
|
||||||
|
body > header {
|
||||||
|
padding-right: 20px;
|
||||||
|
width: 654px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body > header .meta {
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
header ul {
|
||||||
|
float: right;
|
||||||
|
list-style: none;
|
||||||
|
margin: 7px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
header ul li {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
header ul li a {
|
||||||
|
border-radius: 2px;
|
||||||
|
color: #CF5406;
|
||||||
|
display: block;
|
||||||
|
margin-left: 6px;
|
||||||
|
padding: 1px 5px 2px 5px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
header ul li a:hover {
|
||||||
|
background-color: #CF5406;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta {
|
||||||
|
color: #333333;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 300;
|
||||||
|
padding-left: 1px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
margin-top: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #CF5406;
|
||||||
|
}
|
||||||
|
|
||||||
|
small {
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 400;
|
||||||
|
margin: 4px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 strong {
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 strong a {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 small {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
color: #333333;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 700;
|
||||||
|
margin: 0;
|
||||||
|
padding: 1px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
border-bottom: #DEDEDE solid 1px;
|
||||||
|
color: #393939;
|
||||||
|
font-size: 17px;
|
||||||
|
margin: 28px -4px 10px;
|
||||||
|
padding: 0 4px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
border-bottom: #DEDEDE dotted 1px;
|
||||||
|
font-size: 14px;
|
||||||
|
margin: 22px -4px 10px;
|
||||||
|
padding: 0 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
margin: 0 -2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article > section .timeline {
|
||||||
|
margin-top: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
section .timeline > * {
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
section:hover .timeline > * {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline {
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
font-size: 11px;
|
||||||
|
line-height: 0;
|
||||||
|
padding: 2px 0;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
left: -24px;
|
||||||
|
width: 49px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline img {
|
||||||
|
border-radius: 4px;
|
||||||
|
width: 49px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline time {
|
||||||
|
display: block;
|
||||||
|
line-height: 11px;
|
||||||
|
margin-bottom: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
background-color: #F9F9F9;
|
||||||
|
border: #D8D8D8 solid 1px;
|
||||||
|
font-family: monaco;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 17px;
|
||||||
|
margin: 14px -2px;
|
||||||
|
overflow: auto;
|
||||||
|
padding: 2px 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre > code {
|
||||||
|
font-size: inherit;
|
||||||
|
line-height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
font-family: monaco;
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p, ul, ol, dl {
|
||||||
|
line-height: 24px;
|
||||||
|
margin: 12px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl dt {
|
||||||
|
clear: left;
|
||||||
|
color: #666666;
|
||||||
|
float: left;
|
||||||
|
padding-top: 2px;
|
||||||
|
text-align: right;
|
||||||
|
width: 140px;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl dd {
|
||||||
|
margin-left: 0;
|
||||||
|
padding: 2px 0 0 146px;
|
||||||
|
}
|
||||||
26
index.html
Normal file
26
index.html
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
title: Home
|
||||||
|
layout: default
|
||||||
|
---
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<p>
|
||||||
|
Technology intrigues me. Pretty much any sort, but I enjoy web-oriented tech the most. I like innovating, technical
|
||||||
|
challenges, and learning new concepts. This is a place to remember some of those experiences. Maybe you'll find
|
||||||
|
something interesting.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{% for post in site.posts %}
|
||||||
|
<section>
|
||||||
|
<header>
|
||||||
|
<div class="timeline">
|
||||||
|
<time datetime="{{ post.date|date_to_xmlschema }}"><strong>{{ post.date|date:"%b %d"|upcase }}</strong><br />{{ post.date|date:"%Y" }}</time>
|
||||||
|
</div>
|
||||||
|
<h2><a href="{{ post.url }}">{{ post.title }}</a></h2>
|
||||||
|
{% if post.tags|size %}
|
||||||
|
<div class="meta" style="margin-bottom:0;margin-top:0;">{% for tag in post.tags %}{% if forloop.index0 > 0 %} · {% endif %}<a href="/tags/{{ tag|slugize }}">{{ tag }}</a>{% endfor %}</div>
|
||||||
|
{% endif %}
|
||||||
|
</header>
|
||||||
|
</section>
|
||||||
|
{% endfor %}
|
||||||
44
projects.html
Executable file
44
projects.html
Executable file
@@ -0,0 +1,44 @@
|
|||||||
|
---
|
||||||
|
title: Projects
|
||||||
|
layout: default
|
||||||
|
---
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>Projects</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I like tinkering with ideas and seeing where they end up. Some of my work ends up on
|
||||||
|
<a href="https://github.com/">GitHub</a>, but here are some of my noteworthy projects…
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Personal</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
A few personal projects I've invested in…
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>CLI for OpenGrok</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Command line interface for getting results from an OpenGrok server.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt>github</dt>
|
||||||
|
<dd><a href="https://github.com/dpb587/opengrok-cli">dpb587/opengrok-cli</a></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Contributions</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I would not and could not be the developer I am today without the time others have invested in producing
|
||||||
|
quality, open source software. For my modest part, I've been able to contribute to the following:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://github.com/composer/composer/commits?author=dpb587">composer/composer</a> – small enhancements and bug fixes</li>
|
||||||
|
<li><a href="https://github.com/symfony/symfony/commits?author=dpb587">symfony/symfony</a> – small enhancements and bug fixes</li>
|
||||||
|
<li><a href="https://github.com/doctrine/dbal/commits?author=dpb587">doctrine/dbal</a> – oracle bug fixes</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
Reference in New Issue
Block a user