Skip to content

Commit 2fecf70

Browse files
author
Alan Ridlehoover and Fito von Zastrow
committed
Convert to Jekyll
1 parent 9411511 commit 2fecf70

25 files changed

+399
-117
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
.DS_Store
22
.sass-cache
33
.map
4+
_site/

Gemfile

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
source 'https://rubygems.org'
2+
3+
gem 'github-pages'

Gemfile.lock

+248
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,248 @@
1+
GEM
2+
remote: https://rubygems.org/
3+
specs:
4+
activesupport (4.2.11.1)
5+
i18n (~> 0.7)
6+
minitest (~> 5.1)
7+
thread_safe (~> 0.3, >= 0.3.4)
8+
tzinfo (~> 1.1)
9+
addressable (2.7.0)
10+
public_suffix (>= 2.0.2, < 5.0)
11+
coffee-script (2.4.1)
12+
coffee-script-source
13+
execjs
14+
coffee-script-source (1.11.1)
15+
colorator (1.1.0)
16+
commonmarker (0.17.13)
17+
ruby-enum (~> 0.5)
18+
concurrent-ruby (1.1.5)
19+
dnsruby (1.61.3)
20+
addressable (~> 2.5)
21+
em-websocket (0.5.1)
22+
eventmachine (>= 0.12.9)
23+
http_parser.rb (~> 0.6.0)
24+
ethon (0.12.0)
25+
ffi (>= 1.3.0)
26+
eventmachine (1.2.7)
27+
execjs (2.7.0)
28+
faraday (0.15.4)
29+
multipart-post (>= 1.2, < 3)
30+
ffi (1.11.1)
31+
forwardable-extended (2.6.0)
32+
gemoji (3.0.1)
33+
github-pages (198)
34+
activesupport (= 4.2.11.1)
35+
github-pages-health-check (= 1.16.1)
36+
jekyll (= 3.8.5)
37+
jekyll-avatar (= 0.6.0)
38+
jekyll-coffeescript (= 1.1.1)
39+
jekyll-commonmark-ghpages (= 0.1.5)
40+
jekyll-default-layout (= 0.1.4)
41+
jekyll-feed (= 0.11.0)
42+
jekyll-gist (= 1.5.0)
43+
jekyll-github-metadata (= 2.12.1)
44+
jekyll-mentions (= 1.4.1)
45+
jekyll-optional-front-matter (= 0.3.0)
46+
jekyll-paginate (= 1.1.0)
47+
jekyll-readme-index (= 0.2.0)
48+
jekyll-redirect-from (= 0.14.0)
49+
jekyll-relative-links (= 0.6.0)
50+
jekyll-remote-theme (= 0.3.1)
51+
jekyll-sass-converter (= 1.5.2)
52+
jekyll-seo-tag (= 2.5.0)
53+
jekyll-sitemap (= 1.2.0)
54+
jekyll-swiss (= 0.4.0)
55+
jekyll-theme-architect (= 0.1.1)
56+
jekyll-theme-cayman (= 0.1.1)
57+
jekyll-theme-dinky (= 0.1.1)
58+
jekyll-theme-hacker (= 0.1.1)
59+
jekyll-theme-leap-day (= 0.1.1)
60+
jekyll-theme-merlot (= 0.1.1)
61+
jekyll-theme-midnight (= 0.1.1)
62+
jekyll-theme-minimal (= 0.1.1)
63+
jekyll-theme-modernist (= 0.1.1)
64+
jekyll-theme-primer (= 0.5.3)
65+
jekyll-theme-slate (= 0.1.1)
66+
jekyll-theme-tactile (= 0.1.1)
67+
jekyll-theme-time-machine (= 0.1.1)
68+
jekyll-titles-from-headings (= 0.5.1)
69+
jemoji (= 0.10.2)
70+
kramdown (= 1.17.0)
71+
liquid (= 4.0.0)
72+
listen (= 3.1.5)
73+
mercenary (~> 0.3)
74+
minima (= 2.5.0)
75+
nokogiri (>= 1.8.5, < 2.0)
76+
rouge (= 2.2.1)
77+
terminal-table (~> 1.4)
78+
github-pages-health-check (1.16.1)
79+
addressable (~> 2.3)
80+
dnsruby (~> 1.60)
81+
octokit (~> 4.0)
82+
public_suffix (~> 3.0)
83+
typhoeus (~> 1.3)
84+
html-pipeline (2.12.0)
85+
activesupport (>= 2)
86+
nokogiri (>= 1.4)
87+
http_parser.rb (0.6.0)
88+
i18n (0.9.5)
89+
concurrent-ruby (~> 1.0)
90+
jekyll (3.8.5)
91+
addressable (~> 2.4)
92+
colorator (~> 1.0)
93+
em-websocket (~> 0.5)
94+
i18n (~> 0.7)
95+
jekyll-sass-converter (~> 1.0)
96+
jekyll-watch (~> 2.0)
97+
kramdown (~> 1.14)
98+
liquid (~> 4.0)
99+
mercenary (~> 0.3.3)
100+
pathutil (~> 0.9)
101+
rouge (>= 1.7, < 4)
102+
safe_yaml (~> 1.0)
103+
jekyll-avatar (0.6.0)
104+
jekyll (~> 3.0)
105+
jekyll-coffeescript (1.1.1)
106+
coffee-script (~> 2.2)
107+
coffee-script-source (~> 1.11.1)
108+
jekyll-commonmark (1.3.1)
109+
commonmarker (~> 0.14)
110+
jekyll (>= 3.7, < 5.0)
111+
jekyll-commonmark-ghpages (0.1.5)
112+
commonmarker (~> 0.17.6)
113+
jekyll-commonmark (~> 1)
114+
rouge (~> 2)
115+
jekyll-default-layout (0.1.4)
116+
jekyll (~> 3.0)
117+
jekyll-feed (0.11.0)
118+
jekyll (~> 3.3)
119+
jekyll-gist (1.5.0)
120+
octokit (~> 4.2)
121+
jekyll-github-metadata (2.12.1)
122+
jekyll (~> 3.4)
123+
octokit (~> 4.0, != 4.4.0)
124+
jekyll-mentions (1.4.1)
125+
html-pipeline (~> 2.3)
126+
jekyll (~> 3.0)
127+
jekyll-optional-front-matter (0.3.0)
128+
jekyll (~> 3.0)
129+
jekyll-paginate (1.1.0)
130+
jekyll-readme-index (0.2.0)
131+
jekyll (~> 3.0)
132+
jekyll-redirect-from (0.14.0)
133+
jekyll (~> 3.3)
134+
jekyll-relative-links (0.6.0)
135+
jekyll (~> 3.3)
136+
jekyll-remote-theme (0.3.1)
137+
jekyll (~> 3.5)
138+
rubyzip (>= 1.2.1, < 3.0)
139+
jekyll-sass-converter (1.5.2)
140+
sass (~> 3.4)
141+
jekyll-seo-tag (2.5.0)
142+
jekyll (~> 3.3)
143+
jekyll-sitemap (1.2.0)
144+
jekyll (~> 3.3)
145+
jekyll-swiss (0.4.0)
146+
jekyll-theme-architect (0.1.1)
147+
jekyll (~> 3.5)
148+
jekyll-seo-tag (~> 2.0)
149+
jekyll-theme-cayman (0.1.1)
150+
jekyll (~> 3.5)
151+
jekyll-seo-tag (~> 2.0)
152+
jekyll-theme-dinky (0.1.1)
153+
jekyll (~> 3.5)
154+
jekyll-seo-tag (~> 2.0)
155+
jekyll-theme-hacker (0.1.1)
156+
jekyll (~> 3.5)
157+
jekyll-seo-tag (~> 2.0)
158+
jekyll-theme-leap-day (0.1.1)
159+
jekyll (~> 3.5)
160+
jekyll-seo-tag (~> 2.0)
161+
jekyll-theme-merlot (0.1.1)
162+
jekyll (~> 3.5)
163+
jekyll-seo-tag (~> 2.0)
164+
jekyll-theme-midnight (0.1.1)
165+
jekyll (~> 3.5)
166+
jekyll-seo-tag (~> 2.0)
167+
jekyll-theme-minimal (0.1.1)
168+
jekyll (~> 3.5)
169+
jekyll-seo-tag (~> 2.0)
170+
jekyll-theme-modernist (0.1.1)
171+
jekyll (~> 3.5)
172+
jekyll-seo-tag (~> 2.0)
173+
jekyll-theme-primer (0.5.3)
174+
jekyll (~> 3.5)
175+
jekyll-github-metadata (~> 2.9)
176+
jekyll-seo-tag (~> 2.0)
177+
jekyll-theme-slate (0.1.1)
178+
jekyll (~> 3.5)
179+
jekyll-seo-tag (~> 2.0)
180+
jekyll-theme-tactile (0.1.1)
181+
jekyll (~> 3.5)
182+
jekyll-seo-tag (~> 2.0)
183+
jekyll-theme-time-machine (0.1.1)
184+
jekyll (~> 3.5)
185+
jekyll-seo-tag (~> 2.0)
186+
jekyll-titles-from-headings (0.5.1)
187+
jekyll (~> 3.3)
188+
jekyll-watch (2.2.1)
189+
listen (~> 3.0)
190+
jemoji (0.10.2)
191+
gemoji (~> 3.0)
192+
html-pipeline (~> 2.2)
193+
jekyll (~> 3.0)
194+
kramdown (1.17.0)
195+
liquid (4.0.0)
196+
listen (3.1.5)
197+
rb-fsevent (~> 0.9, >= 0.9.4)
198+
rb-inotify (~> 0.9, >= 0.9.7)
199+
ruby_dep (~> 1.2)
200+
mercenary (0.3.6)
201+
mini_portile2 (2.4.0)
202+
minima (2.5.0)
203+
jekyll (~> 3.5)
204+
jekyll-feed (~> 0.9)
205+
jekyll-seo-tag (~> 2.1)
206+
minitest (5.11.3)
207+
multipart-post (2.1.1)
208+
nokogiri (1.10.4)
209+
mini_portile2 (~> 2.4.0)
210+
octokit (4.14.0)
211+
sawyer (~> 0.8.0, >= 0.5.3)
212+
pathutil (0.16.2)
213+
forwardable-extended (~> 2.6)
214+
public_suffix (3.1.1)
215+
rb-fsevent (0.10.3)
216+
rb-inotify (0.10.0)
217+
ffi (~> 1.0)
218+
rouge (2.2.1)
219+
ruby-enum (0.7.2)
220+
i18n
221+
ruby_dep (1.5.0)
222+
rubyzip (1.2.3)
223+
safe_yaml (1.0.5)
224+
sass (3.7.4)
225+
sass-listen (~> 4.0.0)
226+
sass-listen (4.0.0)
227+
rb-fsevent (~> 0.9, >= 0.9.4)
228+
rb-inotify (~> 0.9, >= 0.9.7)
229+
sawyer (0.8.2)
230+
addressable (>= 2.3.5)
231+
faraday (> 0.8, < 2.0)
232+
terminal-table (1.8.0)
233+
unicode-display_width (~> 1.1, >= 1.1.1)
234+
thread_safe (0.3.6)
235+
typhoeus (1.3.1)
236+
ethon (>= 0.9.0)
237+
tzinfo (1.2.5)
238+
thread_safe (~> 0.1)
239+
unicode-display_width (1.6.0)
240+
241+
PLATFORMS
242+
ruby
243+
244+
DEPENDENCIES
245+
github-pages
246+
247+
BUNDLED WITH
248+
1.17.2

README.md

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
First Try! Software
2+
======================
3+
4+
[First Try! Software](https://firsttry.software)

_config.yml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
name: First Try!
2+
tagline: Software Foundry
3+
url: https://firsttry.software

_layouts/default.html

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="utf-8">
5+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6+
<title>{{ page.title }}</title>
7+
<link rel='shortcut icon' type='image/x-icon' href='/favicon.ico' />
8+
<link rel="stylesheet" type="text/css" href="/css/firsttry.css" />
9+
<meta name="viewport" content="width=device-width, initial-scale=1" />
10+
<meta name="title" content="{{ page.title }}" />
11+
<meta name="description" content="{{ page.excerpt | strip_html }}" />
12+
<meta property="og:title" content="{{ page.title }}" />
13+
<meta property="og:description" content="{{ page.excerpt | strip_html }}" />
14+
<meta property="og:site_name" content="{{ site.name }}" />
15+
<meta property="og:url" content="{{ site.url }}{{ page.url }}" />
16+
</head>
17+
<body>
18+
<scroll-container>
19+
<scroll-page>
20+
<div class="oval">
21+
<div class="title">{{ site.name }}</div>
22+
<div class="tagline">{{ site.tagline }}</div>
23+
</div>
24+
<a class="arrow next bounce-5s" href="#{{ site.posts.first.slug }}"></a>
25+
</scroll-page>
26+
27+
{{ content }}
28+
29+
</scroll-container>
30+
31+
<!-- <script>
32+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
33+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
34+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
35+
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
36+
37+
ga('create', 'UA-52923723-1', 'auto');
38+
ga('require', 'displayfeatures');
39+
ga('send', 'pageview');
40+
</script> -->
41+
</body>
42+
</html>

_layouts/post.html

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
layout: default
3+
---
4+
<scroll-page>
5+
<article id="{{ post.slug }}">
6+
<h1>{{ page.title }}</h1>
7+
<h2>{{ page.subtitle }}</h2>
8+
<section>
9+
{{ content }}
10+
</section>
11+
<div class="date">Posted on <time>{{ page.date | date: '%B %d, %Y' }}</time></div>
12+
</article>
13+
</scroll-page>

_posts/2019-08-30-hexagonal-rails.md

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
layout: post
3+
title: Hexagonal Rails
4+
subtitle: Architecturally sound. Rapid application development.
5+
slug: hexagonal-rails
6+
date: 2019-08-30 16:11:00
7+
tags: [oop, architecture, design, patterns]
8+
---
9+
Ruby on Rails is famous for rapid application development. It is super quick and easy to setup a Rails application with some basic functionality. So much so, that Rails was the darling of startups for years.
10+
11+
But, Rails is also famous for applications that grow unweildy over time and become inflexible to change. This rigidity is caused by Rails' numerous violations of basic object oriented design principles.
12+
13+
When classes have more than one responsibility, they become harder to test. This makes it more difficult to reason about the class. As a result, the classes will have lower test coverage, higher churn, and more bugs.
14+
15+
When classes are written in such a way so that extending them requires them to be modified directly, you introduce higher churn and more bugs.
16+
17+
When classes take references to concrete objects rather than relying on interfaces (or duck types in Ruby), they will be much harder to test, leading to lower coverage and more bugs.
18+
19+
_A typical Rails controller violates all of these principles._
20+
21+
Fortunately, there are architectural patterns that can resolve these issues. The Ports &amp; Adapters pattern (also known as hexagonal architecture) is one such pattern. It makes heavy use of the Single Responsibility Principle, the Open/Closed Principle, and the Dependency Inversion Principle, making it a more resilient choice than traditional Rails architecture.

_posts/2019-08-30-industrialist.md

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
layout: post
3+
title: The Factory Pattern
4+
subtitle: Factories build things. Industrialist builds factories.
5+
slug: industrialist
6+
date: 2019-09-02 16:23:00
7+
tags: [oop, factory, design, patterns, design-patterns, gem, industrialist]
8+
---
9+
In object oriented design, a factory is a method or class whose only responsibility is to build objects of a particular type. So, an AutomobileFactory would be responsible for building Automobile objects.
10+
11+
Factories are often implemented as switch statements. But doing so requires you to hard code the keys in the factory, either in the switch statement, or as a hash. So, whenever you need to add a class to the factory, you have to modify the factory. This is a violation of the Open/Closed Principle which states that classes should be open for extension, but closed for modification.
12+
13+
One way to resolve this problem in Ruby is to use metaprogramming. In this approach, you define a convention for converting a key into a class name (e.g. :sedan maps to Sedan). Unfotunately, if your keys and class names don't lend themselves to a convention (e.g. :convertible maps to Cabriolet), then you won't be able to use this technique. Furthermore, if your convention ever changes, you'll have to modify the factory, which again is a violation of the Open/Closed Principle.
14+
15+
Industrialist is a gem that solves this problem. It allows classes to register themselves as "manufacturable" by a specific factory when Ruby loads the file. Industrialist can manage any number of factories. It supports defaults, so if a factory is passed a key it does not recognize, it can still build an appropriate object. A single class can be registered under multiple keys. And, keys can be any Ruby object, including hashes, making Industrialist factories super flexible.
16+
17+
Check out Industrialst on [GitHub](https://github.com/entelo/industrialist).
File renamed without changes.
File renamed without changes.

_sass/fonts.scss

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
@font-face {
2+
font-family: 'BadaBoom';
3+
src: url('/fonts/badaboom.woff') format('woff');
4+
}
5+
6+
@font-face {
7+
font-family: 'MonoHand';
8+
src: url('/fonts/monohand.woff') format('woff');
9+
}
10+
11+
@font-face {
12+
font-family: 'PT Sans';
13+
font-style: normal;
14+
font-weight: normal;
15+
src: local('PT Sans'), url('/fonts/ptsans.woff') format('woff');
16+
}
File renamed without changes.
File renamed without changes.

assets/sass/firsttry/layout.scss renamed to _sass/layout.scss

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ h1 {
3636
filter: drop-shadow(2px 2px 0 $color-drop-shadow);
3737
font-family: "BadaBoom", sans-serif;
3838
margin-bottom: 0.25em;
39+
padding-left: 5px;
3940
transform: rotate(-2.5deg);
4041
}
4142

File renamed without changes.

0 commit comments

Comments
 (0)