Skip to content

Instantly share code, notes, and snippets.

View booch's full-sized avatar

Craig Buchek booch

View GitHub Profile
@booch
booch / Ruby ORMs.md
Created February 10, 2014 22:19
Ruby ORMs

Ruby ORMs

Abstract

Rails is really a collection of pieces that can be put together to create a web app. You can enhance or replace many of the components - how you write views, how controllers work, and how you build models. While models are built on top of ActiveRecord in the

@booch
booch / HTML_Templating_Patterns.md
Last active January 8, 2023 03:29
HTML Templating Patterns

HTML Templating Patterns

I've decided to try documenting the different patterns used in HTML templates. By HTML templates, I mean taking some HTML(ish) text, and inserting dynamically-generated content. This templating can take place on the web server or in the browser; the patterns don't usually differ between the two.

Delimited HTML

@booch
booch / Code Review Guidelines.md
Last active November 21, 2017 12:11
Some guidelines for doing a code review

Here are some general guidelines to consider when reviewing a pull request:

  • Is the code covered by tests? *
  • Are there any tests cases that are missing? *
    • Unit tests - for any model changes *
    • Acceptance tests - ???infrastructure needed
    • Integration tests - for any front end behavior change *
    • Black box testing? infrastructure needed
    • Controller tests - for any controller changes *
  • Rake / release tasks - manually run them? *
@booch
booch / signature_checking.rb
Created January 14, 2014 03:08
What if we could check type signatures in Ruby? A proof of concept.
# Allow multiple classes to be declared via A|B instead of [A, B].
class Class
def |(*other_classes)
SetOfClasses.new(self, other_classes)
end
end
require 'set'
class SetOfClasses
attr_reader :classes
@booch
booch / gist:8411351
Last active January 3, 2016 04:49
What If We Could Mark Methods As Pure?

What If We Could Mark Pure Methods?

Me

  • Craig Buchek
  • @CraigBuchek
  • github.com/booch
@booch
booch / preseed.txt
Last active December 28, 2015 20:39
Debian 7 preseed file for minimal install.
#### Debian Installer preseed file for Debian 7.2 (Wheezy) minimal install.
# Allow installer to ask questions interactively - for now.
d-i preseed/interactive boolean true
d-i debconf/frontend string newt
# Set localization (language, country, and locale).
d-i debian-installer/locale string en_US
d-i localechooser/preferred-locale select en_US.UTF-8
@booch
booch / morf.rb
Last active October 27, 2015 19:41
MORF (generic hexagonal Ruby framework) ideas
# MORF - My Own Ruby Framework #
# This is based on Uncle Bob's talk at Midwest Ruby 2011,
# [Architecture the Lost Years](https://www.youtube.com/watch?v=WpkDN78P884),
# as well as his article on [Clean Architecture](https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html).
# Also inspired by Gary Bernhardt's [Boundaries](https://www.youtube.com/watch?v=yTkzNHF6rMs) talk,
# and lots of other immutability (functional core) ideas being used within OOP programming (like Piotr Solnica's work).
ENV['DB_URL'] = 'memory:morf_example'
@booch
booch / prereqs.md
Created April 20, 2015 15:45
Prerequisites for HTTP Workshop

Please have Vagrant and VirtualBox installed ahead of the workshop, if possible. We'll be providing a virtual machine (on USB keys) with the lab exercises. Having Vagrant ready to run the VM will help us get started quickly. That said, we'll have a few minutes of slide presentation to get started. You might be able to get things working then. If you're unable to get Vagrant working, we'll have you pair up with a neighbor.

@booch
booch / gist:bbd6c40e3c984074da33
Last active August 29, 2015 14:16
Callback ideas for hexagonal Rails controllers
# From http://blog.boochtek.com/2015/02/23/hexagonal-rails-controllers
class OrderController < ApplicationController
def index
interactor.on(:display) { |orders| render orders }
interactor.list
end
def show
interactor.on(:display) { |order| render order }
@booch
booch / gist:b9a764c747d4c1c51680
Last active August 29, 2015 14:12
Literal Containers
* '...' - Using for Atom.
* "..." - Using for Text.
* [...] - Using this for List (and maybe Map).
* {...} - Using this for Block.
* <...> - No good, as it's too hard to parse differently than < and >.
* (...) - Already overloaded for precedence and method call invocation. Tuple?
* [<...>] - Looks like a really good choice. Map?
* [!...!] - Might be too hard to parse ! inside a List then. (Unless we don't have a ! operator.)
* [@...@] - Probably too hard to parse $ sigil inside a List then.
* [#...#] - Probably too hard to parse comments then. Might use for nestable block comments.