summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluxagraf <sng@luxagraf.net>2015-11-15 08:27:16 -0500
committerluxagraf <sng@luxagraf.net>2015-11-15 08:27:16 -0500
commit10402b86a75c83a02945b5528010dcefab41fc37 (patch)
tree7a6f7f22f44d15757b805b45d0649b867c3c2ccb
parent623974bd1b0a130be71f5db7b41c38c43b0bf613 (diff)
added resume and income apps
-rw-r--r--app/income/__init__.py0
-rw-r--r--app/income/admin.py27
-rw-r--r--app/income/models.py36
-rw-r--r--app/resume/admin.py14
-rw-r--r--app/resume/build.py34
-rw-r--r--app/resume/models.py40
-rw-r--r--app/resume/urls.py32
-rw-r--r--app/resume/views.py31
-rw-r--r--config/base_urls.py4
-rw-r--r--design/sass/_resume.scss103
-rw-r--r--design/sass/screenv8.scss1
-rw-r--r--design/templates/archives/resume-pubs.html26
-rw-r--r--design/templates/archives/resume.html30
-rw-r--r--design/templates/details/cv.html140
14 files changed, 518 insertions, 0 deletions
diff --git a/app/income/__init__.py b/app/income/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app/income/__init__.py
diff --git a/app/income/admin.py b/app/income/admin.py
new file mode 100644
index 0000000..4ca6aba
--- /dev/null
+++ b/app/income/admin.py
@@ -0,0 +1,27 @@
+from django.contrib import admin
+
+from .models import Gig
+
+
+class GigAdmin(admin.ModelAdmin):
+ list_display = ('title', 'status', 'payment_status', 'publisher', 'pub_date', 'created')
+ list_filter = ('publisher', 'status', 'payment_status')
+ fieldsets = (
+ ('Gig', {
+ 'fields': (
+ 'title',
+ 'pitch',
+ ('payment', 'pay_type'),
+ ('status', 'pub_date', 'payment_status'),
+ 'publisher',
+ 'pub_item'
+ ),
+ 'classes': (
+ 'show',
+ 'extrapretty',
+ 'wide'
+ )
+ }
+ ),
+ )
+admin.site.register(Gig, GigAdmin)
diff --git a/app/income/models.py b/app/income/models.py
new file mode 100644
index 0000000..9cace38
--- /dev/null
+++ b/app/income/models.py
@@ -0,0 +1,36 @@
+from django.db import models
+from django.utils import timezone
+
+from resume.models import PubItem, Publisher
+
+
+class Gig(models.Model):
+ title = models.CharField(max_length=200)
+ pitch = models.TextField(null=True, blank=True)
+ created = models.DateTimeField(auto_now_add=True)
+ pub_date = models.DateTimeField(default=timezone.now)
+ STATUS = (
+ (0, "Pitched"),
+ (1, "Accepted"),
+ (2, "Rejected"),
+ (3, "Published"),
+ )
+ status = models.IntegerField(choices=STATUS, default=1)
+ payment = models.DecimalField(max_digits=10, decimal_places=2)
+ PAY_STATUS = (
+ (0, "NOT SUBMITTED"),
+ (1, "Invoiced"),
+ (2, "Paid"),
+ )
+ payment_status = models.IntegerField(choices=PAY_STATUS, default=1)
+ PAY_TYPE = (
+ (0, "Flat Rate"),
+ (1, "Per Word"),
+ (2, "Hourly"),
+ )
+ pay_type = models.IntegerField(choices=PAY_TYPE, default=1)
+ publisher = models.ForeignKey(Publisher, blank=True, null=True)
+ pub_item = models.ForeignKey(PubItem, blank=True, null=True)
+
+ def __str__(self):
+ return self.title
diff --git a/app/resume/admin.py b/app/resume/admin.py
new file mode 100644
index 0000000..0f8b71a
--- /dev/null
+++ b/app/resume/admin.py
@@ -0,0 +1,14 @@
+from django.contrib import admin
+
+from .models import Publisher, PubItem
+
+
+class PublisherAdmin(admin.ModelAdmin):
+ pass
+
+
+class PubItemAdmin(admin.ModelAdmin):
+ pass
+
+admin.site.register(Publisher, PublisherAdmin)
+admin.site.register(PubItem, PubItemAdmin)
diff --git a/app/resume/build.py b/app/resume/build.py
new file mode 100644
index 0000000..7241a70
--- /dev/null
+++ b/app/resume/build.py
@@ -0,0 +1,34 @@
+import os
+from django.core.urlresolvers import reverse
+from builder.base import BuildNew
+
+
+class BuildExpenses(BuildNew):
+
+ def build(self):
+ self.build_detail_view()
+ self.build_list_view(
+ base_path=reverse("expenses:list_trip"),
+ paginate_by=24
+ )
+
+ def get_model_queryset(self):
+ return self.model.objects.all()
+
+ def build_detail_view(self):
+ '''
+ write out all the expenses for each trip
+ '''
+ for obj in self.get_model_queryset():
+ url = obj.get_absolute_url()
+ path, slug = os.path.split(url)
+ path = '%s/' % path
+ # write html
+ response = self.client.get(url)
+ print(path, slug)
+ self.write_file(path, response.content, filename=slug)
+
+
+def builder():
+ j = BuildExpenses("expenses", "trip")
+ j.build()
diff --git a/app/resume/models.py b/app/resume/models.py
new file mode 100644
index 0000000..4df639e
--- /dev/null
+++ b/app/resume/models.py
@@ -0,0 +1,40 @@
+from django.db import models
+from django.core.urlresolvers import reverse
+
+# http://freewisdom.org/projects/python-markdown/
+import markdown
+
+
+class Publisher(models.Model):
+ name = models.CharField(max_length=200)
+ slug = models.SlugField(max_length=50)
+ body_markdown = models.TextField(null=True, blank=True)
+ body_html = models.TextField(null=True, blank=True)
+ url = models.CharField(max_length=200, blank=True, null=True)
+
+ def __str__(self):
+ return self.name
+
+
+class PubItem(models.Model):
+ title = models.CharField(max_length=200)
+ slug = models.CharField(max_length=50)
+ body_markdown = models.TextField(null=True, blank=True)
+ body_html = models.TextField(null=True, blank=True)
+ url = models.CharField(max_length=200, blank=True, null=True)
+ pub_date = models.CharField(max_length=40, blank=True, null=True)
+ publisher = models.ForeignKey(Publisher)
+
+ class Meta:
+ ordering = ('-pub_date',)
+
+ def __str__(self):
+ return self.title
+
+ def get_absolute_url(self):
+ return reverse("resume:detail", kwargs={"publisher": self.publisher.slug, "slug": self.slug})
+
+ def save(self, *args, **kwargs):
+ if self.body_markdown:
+ self.body_html = markdown.markdown(self.body_markdown, extensions=['extra'], safe_mode=False)
+ super(PubItem, self).save()
diff --git a/app/resume/urls.py b/app/resume/urls.py
new file mode 100644
index 0000000..15b2371
--- /dev/null
+++ b/app/resume/urls.py
@@ -0,0 +1,32 @@
+from django.conf.urls import url
+from django.views.generic.base import RedirectView
+
+from . import views
+
+urlpatterns = [
+ url(
+ regex=r'pubs/(?P<page>\d+)/$',
+ view=views.PublisherListView.as_view(),
+ name='list',
+ ),
+ url(
+ regex=r'pubs/(?P<publisher>[-\w]+)/(?P<slug>[-\w]+)$',
+ view=views.PubItemDetailView.as_view(),
+ name='detail',
+ ),
+ url(
+ regex=r'pubs/$',
+ view=RedirectView.as_view(url="/resume/pubs/1/", permanent=False),
+ name="live-redirect"
+ ),
+ url(
+ regex=r'^(?P<slug>[-\w]+)$',
+ view=views.PageView.as_view(),
+ name="intro"
+ ),
+ url(
+ regex=r'^$',
+ view=views.BaseView.as_view(),
+ name="cv"
+ ),
+]
diff --git a/app/resume/views.py b/app/resume/views.py
new file mode 100644
index 0000000..bdfd01b
--- /dev/null
+++ b/app/resume/views.py
@@ -0,0 +1,31 @@
+from django.views.generic.detail import DetailView
+from django.views.generic.base import TemplateView
+from utils.views import PaginatedListView
+
+from .models import PubItem
+from pages.models import Page
+
+
+class PublisherListView(PaginatedListView):
+ template_name = 'archives/resume-pubs.html'
+
+ def get_queryset(self):
+ return PubItem.objects.all()
+
+
+class PubItemDetailView(DetailView):
+ model = PubItem
+ template_name = "details/resume.html"
+ slug_field = "slug"
+
+
+class PageView(DetailView):
+ model = Page
+ slug_field = "slug"
+
+ def get_template_names(self):
+ return ["details/%s.html" % self.object.slug, 'details/page.html']
+
+
+class BaseView(TemplateView):
+ template_name = "archives/resume.html"
diff --git a/config/base_urls.py b/config/base_urls.py
index 99e9929..4cb56ab 100644
--- a/config/base_urls.py
+++ b/config/base_urls.py
@@ -83,6 +83,10 @@ urlpatterns += patterns('',
regex=r'^figments/',
view=include('figments.urls', namespace='figments')
),
+ url(
+ regex=r'^resume/',
+ view=include('resume.urls', namespace='resume')
+ ),
(r'^map/', include('locations.urls')),
url(
regex=r'^$',
diff --git a/design/sass/_resume.scss b/design/sass/_resume.scss
new file mode 100644
index 0000000..6ae2ef4
--- /dev/null
+++ b/design/sass/_resume.scss
@@ -0,0 +1,103 @@
+.head {
+ @extend %clearfix;
+ @include constrain(780px);
+ margin-top: 4em;
+}
+main header {
+ width: 100%;
+ h1 {
+ @include fontsize(36);
+ text-transform: uppercase;
+ letter-spacing: 3px;
+ font-weight: 600;
+ line-height: 1;
+ margin-bottom: 0;
+ color: #444;
+ }
+ h2 {
+ margin-top: .5em !important;
+ @include fontsize(14);
+ text-transform: uppercase;
+ letter-spacing: 1px;
+ font-style: italic;
+ color: #333;
+ }
+ @include breakpoint(gamma) {
+ width: 60%;
+ float: left;
+ text-align: left;
+ margin-top: .5em;
+ }
+}
+.h-resume {
+ h3,h2 {
+ @include constrain_narrow;
+ text-align: left;
+ }
+ h3 {
+ font-family: sans-serif;
+ text-transform: uppercase;
+ letter-spacing: 1px;
+ font-size: 0.75rem;
+ margin-top: 4em;
+ margin-bottom: 3em;
+ border-bottom: 1px dotted #333;
+ }
+ h2 {
+ margin-top: 2.5em;
+ margin-bottom: .25em;
+ text-transform: uppercase;
+ letter-spacing: 1px;
+ font-size: 1rem;
+ }
+ h2 a, h2 a:visited {
+ text-decoration: none;
+ color: #444;
+ }
+}
+.meta {
+ @include constrain_narrow;
+ text-align: left;
+ margin-bottom: 1em;
+ time{
+ display: inline;
+ }
+}
+.contact {
+ margin: 2em 0 1.5em;
+ @include constrain_narrow;
+ li {
+ display: block;
+ @extend %clearfix;
+ }
+ @include breakpoint(gamma) {
+ width: 160px;
+ float: right;
+ margin: 1.9em 0 1.5em;
+ li {
+ display: block;
+ }
+ }
+ h6, a {
+ font-size: 13px;
+ font-size: 0.8125rem;
+ line-height: 1.8;
+ margin: 0;
+ display: block;
+ float: left;
+ }
+ h6 {
+ font-size: 11px;
+ font-size: 0.6875rem;
+ line-height: 2.1;
+ text-transform: uppercase;
+ letter-spacing: 1px;
+ &:after {
+ content: ":";
+ margin-right: 5px;
+ }
+ }
+ a {
+ font-family: sans-serif;
+ }
+}
diff --git a/design/sass/screenv8.scss b/design/sass/screenv8.scss
index 3f5c9b4..74ea603 100644
--- a/design/sass/screenv8.scss
+++ b/design/sass/screenv8.scss
@@ -20,6 +20,7 @@
@import "_books.scss";
@import "_src.scss";
@import "_figments.scss";
+@import "_resume.scss";
@import "_inbox.scss";
//@import _large.sass
diff --git a/design/templates/archives/resume-pubs.html b/design/templates/archives/resume-pubs.html
new file mode 100644
index 0000000..7569a8f
--- /dev/null
+++ b/design/templates/archives/resume-pubs.html
@@ -0,0 +1,26 @@
+{% extends 'base.html' %}
+{% load typogrify_tags %}
+{% load html5_datetime %}
+{% load pagination_tags %}
+{% block pagetitle %} Publications | Resume{% endblock %}
+{% block metadescription %} {% endblock %}
+{%block bodyid%}class="resume" id="publications-archive"{%endblock%}
+
+{% block primary %}
+ <ul class="bl" id="breadcrumbs" itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
+ <li><a href="/" title="luxagraf homepage" itemprop="url"><span itemprop="title">Home</span></a> &rarr; </li>
+ <li><a href="/resume/">Resume</a> &rarr; </li>
+ <li>Publications</li>
+ </ul>
+ <main role="main">
+ <h1 class="hide">Publications</h1>
+{% regroup object_list by publisher.name as pub_list %}{% for pub in pub_list %}
+ <ul class="publications-list">
+ <li><h2>{{ pub.grouper }}</h2></li>
+ <ul>{% for object in pub.list %}
+ <li class=""><h3><a href="{{object.get_absolute_url}}">{{object.title|amp|smartypants|widont|safe}}</a></h3>
+ </li>{% endfor %}
+ </ul>{% endfor %}
+ </ul>
+ </main>
+{% endblock %}
diff --git a/design/templates/archives/resume.html b/design/templates/archives/resume.html
new file mode 100644
index 0000000..40ede8c
--- /dev/null
+++ b/design/templates/archives/resume.html
@@ -0,0 +1,30 @@
+{% extends 'base.html' %}
+{% load typogrify_tags %}
+
+{% block pagetitle %}{% endblock %}
+{% block metadescription %}{% endblock %}
+
+
+{% block primary %}<ul class="bl" id="breadcrumbs" itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
+ <li><a href="/" title="luxagraf homepage" itemprop="url"><span itemprop="title">Home</span></a> &rarr; </li>
+ <li>Resume</li>
+ </ul>
+ <main role="main">
+<p class="intro">Hello</p>
+
+<p>This is the website of Scott Gilbertson. I am a writer and publisher living in Athens, Georgia.</p>
+
+<p>I used to work for Wired.com, where I wrote for and later edited/produced <a href="http://www.webmonkey.com/">Webmonkey.com</a> among other sites. I still <a href="http://www.wired.com/reviews/author/scott-gilbertson/">freelance</a> for Wired (also, <a href="http://www.wired.com/author/luxagraf/">here</a>) and I write about open source software and related topics for publications like <a href="http://arstechnica.com/">Ars Technica</a>, <a href="theregister.co.uk/Author/1785">The Register</a> and elsewhere.</p>
+
+<p>I&#8217;ve also been published in some dead tree magazines like Consumer Digest and Budget Travel. I once appeared on National Public Radio.</p>
+
+<p>Perpetually out of date <a href="/resume/cv">curriculum vitæ</a> available for those who like such things.</p>
+
+<p>The personal section of my site, which is primarily about my travels can be found at <a href="https://luxagraf.net/">the root of this URL</a>.</p>
+
+<p>If you&#8217;d like me to write, edit, develop or consult on a website, you can contact me at sng @ luxagraf.net. </p>
+
+
+<p>Thank you for visiting.</p>
+ </main>
+ {%endblock%}
diff --git a/design/templates/details/cv.html b/design/templates/details/cv.html
new file mode 100644
index 0000000..a669b18
--- /dev/null
+++ b/design/templates/details/cv.html
@@ -0,0 +1,140 @@
+{% extends 'base.html' %}
+{% load typogrify_tags %}
+{% block pagetitle %}Scott Gilbertson - Curriculum Vitæ{%endblock%}
+{% block extrahead%}
+ <meta name="twitter:card" content="summary">
+ <meta name="twitter:title" content="Curriculum Vitæ">
+ <meta name="twitter:description" content="luxagraf.net is the personal web site of Scott gilbertson.">
+ <meta name="twitter:site:id" content="9469062">
+ <meta name="twitter:creator:id" content="9469062">
+ <meta property="og:type" content="article"/>
+ <meta property="og:title" content="Scott Gilbertson - Curriculum Vitæ"/>
+ <meta property="og:url" content="http://luxagraf.net/resume/cv"/>
+ <meta property="og:description" content="luxagraf.net is the personal web site of Scott gilbertson.">
+ <meta property="article:author" content="Scott Gilbertson"/>
+ <meta property="og:site_name" content="luxagraf.net"/>
+ <meta property="og:locale" content="en_US"/>
+<style>
+</style>{%endblock%}
+
+{% block primary %}
+<main role="main" id="content">
+<article class="h-resume">
+ <div class="h-card head">
+ <header>
+ <h1 class="p-name">
+ <span class="p-given-name">Scott</span>
+ <span class="p-additional-name hide">Nathan</span>
+ <span class="p-family-name">Gilbertson</span>
+ </h1>
+ <h2>Writer, Photographer, Web Developer</h2>
+ </header>
+ <ul class="contact">
+ <li>
+ <h6>Phone</h6>
+ <span><a class="u-tel" href="tel:706-438-4297">706-438-4297</a></span>
+ </li>
+ <li>
+ <h6>Email</h6>
+ <a class="u-email" href="mailto:sng@luxagraf.net">sng@luxagraf.net</a>
+ </li>
+ <li>
+ <h6>Web</h6>
+ <span><a class="u-url" href="https://luxagraf.net/" rel="me">https://luxagraf.net/</a></span>
+ </li>
+ </ul>
+ </div>
+ <div class="profile">
+ <h3>Profile</h3>
+ <p class="p-summary">I am a writer, producer and web developer based in Athens, GA. Clients include Wired, Webmonkey, Ars Technica, Pioneer and Boost Mobile, among others. I wrote for Wired.com&#8217;s Webmonkey.com for 13 years and served as head editor for three. I&#8217;ve been developing on the web and writing about web development for nearly two decades. For an up-to-date list of recent articles, please browse <a href="/resume/pubs/">the publications list</a>.</p>
+ </div>
+
+ <div id="skills">
+ <h3>Skills</h3>
+
+ <h2><a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Writing">Writing</a></h2>
+ <p>Freelance writer, producer, journalist, editor and hand model at places like Wired, Ars Technica, Budget Travel. I&#8217;ve written blogs, features, news items, ad copy, technical documentation, tutorials, how-tos, wikis and probably other things I&#8217;ve forgotten about. I also served as editor-in-chief of Webmonkey.com.</p>
+
+ <h2><a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Web_development">Web Development</a></h2>
+ <p>Expert front-end engineer in <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Web_standards">standards-based web development</a> using <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/HTML"><abbr title="Hypertext Markup Language">HTML</abbr></a>, <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets"><abbr title="Cascading Style Sheets">CSS</abbr></a>, and high performance <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Responsive_web_design">responsive design</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Progressive_enhancement">progressive enhancement</a>, <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Microformats">microformats</a>, <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/ARIA">ARIA</a> and more. </p>
+ <p>Experience maintaining large-scale web applications and tools with <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Python_(programming_language)">Python</a> and <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/PHP">PHP</a> in conjunction with databases like <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/PostgreSQL">PostgreSQL</a> (including numerous PostGIS, geographic database projects), <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/MySQL">MySQL</a>, <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Sqlite">Sqlite</a>. Experience administering <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Linux">Linux </a> servers and running web servers like <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Apache_HTTP_Server">Apache</a>, and <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Nginx">Nginx</a>.</p>
+ <p>Advocate and evangelist for free software and open web standards technologies such as <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/HTML5">HTML5</a>, related APIs, <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets">CSS3</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Responsive_web_design">responsive design</a> (including <a href="https://longhandpixels.net/books/responsive-web-design">a 350 page book on the subject</a>) and <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Progressive_enhancement">progressive enhancement</a>.</p>
+
+ <h2><a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Graphic_design">Photography/Video/Design</a></h2>
+ <p>Good design eye specializing in fluid, clean layouts with strong <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Typography">typographic style</a>. </p>
+ <p>Photo and video editing using <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Adobe_Photoshop">Photoshop</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/GIMP">GIMP</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Adobe_Photoshop_Lightroom">Lightroom</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Darktable">Darktable</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Final_Cut_Pro">Final Cut Pro</a>, and <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Kdenlive">Kdenlive</a>.</p>
+
+ </div>
+
+ <div class="h-calendar" id="experience">
+ <h3>Experience</h3>
+
+ <div class="p-experience h-event">
+ <h2 class="p-name">Freelance Writer</h2>
+ <ul class="meta">
+ <li>(<time class="dt-start" datetime="2006-06-01">June 2006</time>–Present)</li>
+ </ul>
+ <p class="e-description">Regular contributor to <a class="p-organization-name" href="http://www.wired.com/reviews/author/scott-gilbertson/">Wired</a> (also, <a href="http://www.wired.com/author/luxagraf/">here</a>), <a class="p-organization-name" href="http://www.arstechnica.com/">Ars Technica</a>, <a class="p-organization-name" href="http://theregister.co.uk/Author/1785">The Register</a> and elsewhere, covering Linux, open source software, web browsers and web technology.</p>
+ </div>
+
+ <div class="p-experience h-event">
+ <h2 class="p-name">Web Developer</h2>
+ <ul class="meta">
+ <li>(<time class="dt-start" datetime="2004-06-01">June 2004</time>–Present)
+ </li>
+ </ul>
+ <p class="e-description">Co-founded a small design company where I serve as front-end web developer. I work closely with my co-founder (lead UI/UX), transforming visual designs into valid, semantic HTML/CSS/JavaScript. We specialize in responsive designs and mobile-friendly content that works across browsers and devices. Clients included Wired, Pioneer Entertainment, Boost Mobile, Co-op Credit Union and others.</p>
+ </div>
+
+ <div class="p-experience h-event">
+ <h2 class="p-name">Founder, LongHandPixels Press</h2>
+ <ul class="meta">
+ <li>(<time class="dt-start" datetime="2013-09-01">September 2013</time>–Present)
+ </li>
+ </ul>
+ <p class="e-description">Founded an ebook publishing company, <a href="http://longhandpixels.net/" class="p-organization-name">LongHandPixels Press</a> and launched my first book, <em><a href="https://longhandpixels.net/books/responsive-web-design">Build a Better Web with Responsive Web Design</a></em>. The book covers responsive design, mobile-first web development, progressive enhancement and how modern tools like Sass, Grunt, Node, the Chrome developer tools and more can speed up workflows.
+ </p>
+ </div>
+
+ <div class="p-experience h-event">
+ <h2 class="p-name">Writer/Editor Webmonkey.com</h2>
+ <ul class="meta">
+ <li class="h-location h-card">
+ <a class="u-url p-name" href="http://webmonkey.com">
+ <span class="p-organization-name">Wired.com</span>/
+ <span class="p-organization-unit">Webmonkey.com</span></a>
+ </li>
+ <li>(<time class="dt-start" datetime="2006-06-01">June 2006</time>
+ –<time class="dt-end" datetime="2013-04-31">April 2013</time>)
+ </li>
+ </ul>
+ <p class="e-description">I started contributing tutorials to Wired.com&#8217;s Webmonkey.com in 1999, became a full time employee in 2006 and served as editor-in-chief from 2010 to 2013. I was in charge of creating resources for web developers, including how-to guides on the latest in web standards, code libraries, server technologies and authoring resources. Wrote roughly 3 million words on various web development tools. I also helped cultivate and manage a global team of freelance contributors.</p>
+ </div>
+
+ <div class="p-experience h-event">
+ <h2 class="p-name">Photography and Video Editing</h2>
+ <ul class="meta">
+ <li class="h-location h-card"><a class="u-url p-name" href="http://barrelmanproductions.com"><span class="p-organization-name">barrelmanproductions.com</span></a></li>
+ <li>(<time class="dt-start" datetime="2006-06-01">June 2014</time> - Present)</li>
+ </ul>
+ <p class="e-description">Co-founded a video editing company, Barrelman Productions, specializing in HD aerial video. Portfolio and highlights reel available at <a href="http://www.barrelmanproductions.com/">http://www.barrelmanproductions.com/</a>. Skills include editing in <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Final_Cut_Pro">Final Cut Pro</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Adobe_Photoshop">Photoshop</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Adobe_Photoshop_Lightroom">Lightroom</a> and production of web-optimized video.</p>
+ </div>
+
+ </div>
+ <div class="h-calendar" id="education">
+ <h3>Education</h3>
+
+ <div class="p-education h-event">
+ <h2 class="p-name">Bachelor of Arts, English</h2>
+ <ul class="meta">
+ <li>Undergraduate degree from <a class="p-location h-card" href="http://uga.edu/">The University of <span class="p-locality">Georgia</span>.</a></li>
+ <li>(<time class="dt-start" title="2001-08-01">2001</time>–<time class="dt-end" title="2003-12-16">2003</time>)</li>
+ </ul>
+ </div>
+
+ </div>
+
+</article>
+
+</main>
+{%endblock%}