├── Rakefile ├── README.md ├── source ├── _footer.erb ├── assets │ ├── img │ │ ├── cate-01.jpg │ │ ├── cate-02.jpg │ │ ├── cate-03.jpg │ │ ├── curate-01.jpg │ │ ├── curate-02.jpg │ │ ├── curate-03.jpg │ │ ├── curate-04.jpg │ │ ├── curate-web-01.jpg │ │ ├── curate-web-02.jpg │ │ ├── curate-web-03.jpg │ │ ├── curate-web-04.jpg │ │ ├── curate-web-05.jpg │ │ ├── curate-web-06.jpg │ │ ├── curate-web-07.jpg │ │ ├── fraction-matter.jpg │ │ ├── curate-idea-one-01.jpg │ │ ├── curate-idea-one-02.jpg │ │ ├── curate-idea-one-03.jpg │ │ ├── curate-idea-one-04.jpg │ │ ├── curate-idea-one-05.jpg │ │ ├── curate-idea-one-06.jpg │ │ ├── curate-idea-two-01.jpg │ │ ├── curate-idea-two-02.jpg │ │ ├── curate-idea-two-03.jpg │ │ ├── curate-idea-two-04.jpg │ │ ├── curate-idea-two-05.jpg │ │ ├── curate-idea-two-06.jpg │ │ ├── curate-idea-two-07.jpg │ │ ├── curate-idea-two-08.jpg │ │ ├── curate-idea-two-09.jpg │ │ ├── curate-idea-two-10.jpg │ │ ├── curate-idea-two-11.jpg │ │ ├── curate-idea-three-01.jpg │ │ ├── curate-idea-three-02.jpg │ │ ├── curate-idea-three-04.jpg │ │ ├── curate-idea-three-05.jpg │ │ ├── curate-idea-three-06.jpg │ │ ├── curate-idea-three-07.jpg │ │ └── curate-idea-three-08.jpg │ └── css │ │ ├── cate.css │ │ └── vendor │ │ └── normalize.css ├── layouts │ ├── article_layout.erb │ ├── admin.erb │ └── layout.erb ├── blog │ └── my-article.html.markdown ├── _header.erb ├── admin │ └── login.html.erb ├── about.html.haml └── index.html.haml ├── Gemfile ├── cate.sublime-project ├── LICENSE ├── config.rb ├── Gemfile.lock └── cate.sublime-workspace /Rakefile: -------------------------------------------------------------------------------- 1 | require 'middleman-gh-pages' 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | cate.is-v1.2 2 | ============ 3 | 4 | Personal Website 5 | -------------------------------------------------------------------------------- /source/_footer.erb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/assets/img/cate-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/cate-01.jpg -------------------------------------------------------------------------------- /source/assets/img/cate-02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/cate-02.jpg -------------------------------------------------------------------------------- /source/assets/img/cate-03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/cate-03.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-01.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-02.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-03.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-04.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-web-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-web-01.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-web-02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-web-02.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-web-03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-web-03.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-web-04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-web-04.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-web-05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-web-05.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-web-06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-web-06.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-web-07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-web-07.jpg -------------------------------------------------------------------------------- /source/assets/img/fraction-matter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/fraction-matter.jpg -------------------------------------------------------------------------------- /source/layouts/article_layout.erb: -------------------------------------------------------------------------------- 1 | <% wrap_layout :layout do %> 2 |
3 | <%= yield %> 4 |
5 | <% end %> -------------------------------------------------------------------------------- /source/assets/img/curate-idea-one-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-one-01.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-one-02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-one-02.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-one-03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-one-03.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-one-04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-one-04.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-one-05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-one-05.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-one-06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-one-06.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-two-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-two-01.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-two-02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-two-02.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-two-03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-two-03.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-two-04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-two-04.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-two-05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-two-05.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-two-06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-two-06.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-two-07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-two-07.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-two-08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-two-08.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-two-09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-two-09.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-two-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-two-10.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-two-11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-two-11.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-three-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-three-01.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-three-02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-three-02.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-three-04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-three-04.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-three-05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-three-05.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-three-06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-three-06.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-three-07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-three-07.jpg -------------------------------------------------------------------------------- /source/assets/img/curate-idea-three-08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/house/cate.is-v1.2/master/source/assets/img/curate-idea-three-08.jpg -------------------------------------------------------------------------------- /source/blog/my-article.html.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: article_layout 3 | --- 4 | 5 | Hello. This is a test of blog layout, wrapped in article tag. -------------------------------------------------------------------------------- /source/_header.erb: -------------------------------------------------------------------------------- 1 |
2 |
Cate Meng Zhang
3 |
4 | Blog 5 | About 6 |
7 |
-------------------------------------------------------------------------------- /source/layouts/admin.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | Admin Area 4 | 5 | 6 | <%= partial "header" %> 7 | <%= yield %> 8 | <%= partial "footer" %> 9 | 10 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # If you have OpenSSL installed, we recommend updating 2 | # the following line to use "https" 3 | source 'http://rubygems.org' 4 | 5 | gem "middleman", "~>3.3.3" 6 | gem "middleman-livereload", "~> 3.1.0" 7 | gem 'middleman-gh-pages' 8 | gem 'redcarpet' -------------------------------------------------------------------------------- /cate.sublime-project: -------------------------------------------------------------------------------- 1 | { 2 | "folders": 3 | [ 4 | { 5 | "path": "/Users/zhangc/Projects/cate.is-v1.2" 6 | }, 7 | { 8 | "path": "/Users/zhangc/Projects/jina.me" 9 | }, 10 | { 11 | "path": "/Users/zhangc/Projects/martin" 12 | }, 13 | { 14 | "path": "/Users/zhangc/Projects/smacss" 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /source/admin/login.html.erb: -------------------------------------------------------------------------------- 1 | --- 2 | layout: "admin" 3 | my_list: 4 | - one 5 | - two 6 | - three 7 | --- 8 | 9 |

List

10 |
    11 | <% current_page.data.my_list.each do |f| %> 12 |
  1. <%= f %>
  2. 13 | <% end %> 14 |
15 | 16 |

This is Admin Login

17 |
18 | 19 | 20 | 21 |
22 | 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Cate Meng Zhang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /source/layouts/layout.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | <%= current_page.data.title || "The Middleman" %> 8 | <%= stylesheet_link_tag "vendor/normalize" %> 9 | <%= stylesheet_link_tag "cate" %> 10 | <%= stylesheet_link_tag '//cloud.typography.com/7664092/623264/css/fonts.css' %> 11 | 21 | 22 | 23 | 24 |
25 | <%= partial "header" %> 26 | <%= yield %> 27 | <%= partial "footer" %> 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /source/about.html.haml: -------------------------------------------------------------------------------- 1 | --- 2 | title: About — Cate Meng Zhang 3 | --- 4 | 5 |
6 | :markdown 7 |
8 | 9 |
10 |
11 |
12 | 13 | Hello there. I’m a designer living in San Francisco. I design iOS apps during the day, and learn to make nice websites during the night. This blog is the very first result. 14 | 15 | I love writing and designing with content. I’m also into photography. While I could no longer afford polaroids, I take my [Voigtländer Bessa](http://en.wikipedia.org/wiki/35mm_Bessa#The_Bessa_R2A_and_R3A_.28auto-exposure_rangefinder.29) with me whenever I travel. 16 | 17 | At the moment I work at a design agency making financial apps. Previously I worked at [Crush + Lovely](http://crushlovely.com/), [Miso TV](http://gomiso.com/), [Apple Inc.](http://apple.com) and [AppMesh](http://appme.sh). I’m helping [Jina](http://jina.me) on her [Art In My Coffee](https://dribbble.com/shots/1650280-Refactor-in-My-Coffee?list=users&offset=2), and getting into Haml and Sass. 18 | 19 | You can find me on [Twitter](http://twitter.com/cmzhang), [VSCO Grid](http://hellocate.vsco.co/grid/1), and [Dribbble](https://dribbble.com/hellocate). You could email me at post@hellocate.me. 20 |
-------------------------------------------------------------------------------- /config.rb: -------------------------------------------------------------------------------- 1 | ### 2 | # Compass 3 | ### 4 | 5 | # Change Compass configuration 6 | # compass_config do |config| 7 | # config.output_style = :compact 8 | # end 9 | 10 | ### 11 | # Page options, layouts, aliases and proxies 12 | ### 13 | 14 | # Per-page layout changes: 15 | # 16 | # With no layout 17 | # page "/path/to/file.html", :layout => false 18 | # 19 | # With alternative layout 20 | # page "/path/to/file.html", :layout => :otherlayout 21 | # 22 | # A path which all have the same layout 23 | # with_layout :admin do 24 | # page "/admin/*" 25 | # end 26 | 27 | # page "/admin/*", :layout => "admin" 28 | # page "/blog/*", :layout => :article_layout 29 | 30 | 31 | 32 | # Proxy pages (http://middlemanapp.com/basics/dynamic-pages/) 33 | # proxy "/this-page-has-no-template.html", "/template-file.html", :locals => { 34 | # :which_fake_page => "Rendering a fake page with a local variable" } 35 | 36 | ### 37 | # Helpers 38 | ### 39 | 40 | # Automatic image dimensions on image_tag helper 41 | # activate :automatic_image_sizes 42 | 43 | # Reload the browser automatically whenever files change 44 | # configure :development do 45 | # activate :livereload 46 | # end 47 | 48 | # Methods defined in the helpers block are available in templates 49 | # helpers do 50 | # def some_helper 51 | # "Helping" 52 | # end 53 | # end 54 | 55 | activate :directory_indexes 56 | activate :livereload 57 | activate :relative_assets 58 | 59 | set :css_dir, 'assets/css' 60 | set :js_dir, 'assets/js' 61 | set :images_dir, 'assets/img' 62 | set :relative_links, true 63 | 64 | 65 | set :markdown, :fenced_code_blocks => true, 66 | :autolink => true, 67 | :smartypants => true 68 | 69 | set :markdown_engine, :redcarpet 70 | 71 | # Build-specific configuration 72 | configure :build do 73 | # For example, change the Compass output style for deployment 74 | # activate :minify_css 75 | 76 | # Minify Javascript on build 77 | # activate :minify_javascript 78 | 79 | # Enable cache buster 80 | # activate :asset_hash 81 | 82 | # Use relative URLs 83 | activate :relative_assets 84 | 85 | # Or use a different image path 86 | # set :http_prefix, "/Content/images/" 87 | end 88 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: http://rubygems.org/ 3 | specs: 4 | activesupport (4.1.5) 5 | i18n (~> 0.6, >= 0.6.9) 6 | json (~> 1.7, >= 1.7.7) 7 | minitest (~> 5.1) 8 | thread_safe (~> 0.1) 9 | tzinfo (~> 1.1) 10 | celluloid (0.15.2) 11 | timers (~> 1.1.0) 12 | chunky_png (1.3.1) 13 | coffee-script (2.3.0) 14 | coffee-script-source 15 | execjs 16 | coffee-script-source (1.8.0) 17 | compass (1.0.1) 18 | chunky_png (~> 1.2) 19 | compass-core (~> 1.0.1) 20 | compass-import-once (~> 1.0.5) 21 | rb-fsevent (>= 0.9.3) 22 | rb-inotify (>= 0.9) 23 | sass (>= 3.3.13, < 3.5) 24 | compass-core (1.0.1) 25 | multi_json (~> 1.0) 26 | sass (>= 3.3.0, < 3.5) 27 | compass-import-once (1.0.5) 28 | sass (>= 3.2, < 3.5) 29 | em-websocket (0.5.1) 30 | eventmachine (>= 0.12.9) 31 | http_parser.rb (~> 0.6.0) 32 | erubis (2.7.0) 33 | eventmachine (1.0.3) 34 | execjs (2.2.1) 35 | ffi (1.9.3) 36 | haml (4.0.5) 37 | tilt 38 | hike (1.2.3) 39 | hooks (0.4.0) 40 | uber (~> 0.0.4) 41 | http_parser.rb (0.6.0) 42 | i18n (0.6.11) 43 | json (1.8.1) 44 | kramdown (1.4.1) 45 | listen (2.7.9) 46 | celluloid (>= 0.15.2) 47 | rb-fsevent (>= 0.9.3) 48 | rb-inotify (>= 0.9) 49 | middleman (3.3.5) 50 | coffee-script (~> 2.2) 51 | compass (>= 0.12.4) 52 | compass-import-once (= 1.0.5) 53 | execjs (~> 2.0) 54 | haml (>= 4.0.5) 55 | kramdown (~> 1.2) 56 | middleman-core (= 3.3.5) 57 | middleman-sprockets (>= 3.1.2) 58 | sass (>= 3.2.17, < 4.0) 59 | uglifier (~> 2.5) 60 | middleman-core (3.3.5) 61 | activesupport (~> 4.1.0) 62 | bundler (~> 1.1) 63 | erubis 64 | hooks (~> 0.3) 65 | i18n (~> 0.6.9) 66 | listen (>= 2.7.9, < 3.0) 67 | padrino-helpers (~> 0.12.3) 68 | rack (>= 1.4.5, < 2.0) 69 | rack-test (~> 0.6.2) 70 | thor (>= 0.15.2, < 2.0) 71 | tilt (~> 1.4.1, < 2.0) 72 | middleman-gh-pages (0.0.3) 73 | rake (> 0.9.3) 74 | middleman-livereload (3.1.1) 75 | em-websocket (>= 0.2.0) 76 | middleman-core (>= 3.0.2) 77 | multi_json (~> 1.0) 78 | rack-livereload 79 | middleman-sprockets (3.3.9) 80 | middleman-core (~> 3.3) 81 | sprockets (~> 2.12.1) 82 | sprockets-helpers (~> 1.1.0) 83 | sprockets-sass (~> 1.2.0) 84 | minitest (5.4.1) 85 | multi_json (1.10.1) 86 | padrino-helpers (0.12.3) 87 | i18n (~> 0.6, >= 0.6.7) 88 | padrino-support (= 0.12.3) 89 | tilt (~> 1.4.1) 90 | padrino-support (0.12.3) 91 | activesupport (>= 3.1) 92 | rack (1.5.2) 93 | rack-livereload (0.3.15) 94 | rack 95 | rack-test (0.6.2) 96 | rack (>= 1.0) 97 | rake (10.3.2) 98 | rb-fsevent (0.9.4) 99 | rb-inotify (0.9.5) 100 | ffi (>= 0.5.0) 101 | redcarpet (3.1.2) 102 | sass (3.4.2) 103 | sprockets (2.12.1) 104 | hike (~> 1.2) 105 | multi_json (~> 1.0) 106 | rack (~> 1.0) 107 | tilt (~> 1.1, != 1.3.0) 108 | sprockets-helpers (1.1.0) 109 | sprockets (~> 2.0) 110 | sprockets-sass (1.2.0) 111 | sprockets (~> 2.0) 112 | tilt (~> 1.1) 113 | thor (0.19.1) 114 | thread_safe (0.3.4) 115 | tilt (1.4.1) 116 | timers (1.1.0) 117 | tzinfo (1.2.2) 118 | thread_safe (~> 0.1) 119 | uber (0.0.8) 120 | uglifier (2.5.3) 121 | execjs (>= 0.3.0) 122 | json (>= 1.8.0) 123 | 124 | PLATFORMS 125 | ruby 126 | 127 | DEPENDENCIES 128 | middleman (~> 3.3.3) 129 | middleman-gh-pages 130 | middleman-livereload (~> 3.1.0) 131 | redcarpet 132 | -------------------------------------------------------------------------------- /source/assets/css/cate.css: -------------------------------------------------------------------------------- 1 | /*-------------------------------- 2 | Typography 3 | --------------------------------*/ 4 | 5 | body { font: 300 18px/1.63em 'Mercury SSm A', 'Mercury SSm B', Georgia, Serif; color: #504848; } 6 | a { text-decoration: none; color: inherit; border-bottom: 1px solid #ddd; } 7 | a:hover { border-bottom: 1px solid #222; } 8 | em { font-style: italic; } 9 | strong { font-weight: 700; } 10 | h1, h2, h3, 11 | h4, h5, h6 { font-family: 'Mercury Display A', 'Mercury Display B'; font-weight: 700; color: #222; margin: 1em 0;} 12 | h1 { font-size: 2em; line-height: 1.33em; color: #ee6557;} 13 | h2 { font-size: 1.25em; line-height: 1.5em; font-weight: 400; color: #504848;} 14 | h3 { font-size: 1.15em; } 15 | h4 { font-size: 1em; } 16 | h5 { font-size: 0.78em; } 17 | h6 { font-size: 0.67em; } 18 | h4, h5, h6 { text-transform: uppercase; } 19 | figcaption { font-family: 'Whitney A', 'Whitney B'; line-height: 1.5em; } 20 | .dropcap { width: 60px; height: 56px; text-align: center; font-size: 3.55em; margin-right: 0.1em; 21 | float: left; display:block; position: relative; top: 0.2em; color: #ee6557;} 22 | 23 | 24 | 25 | /*-------------------------------- 26 | Layout 27 | --------------------------------*/ 28 | 29 | body { 30 | background: #f8f8f5; 31 | margin: 0; 32 | } 33 | 34 | img { 35 | width: 100%; 36 | } 37 | 38 | #wrapper { 39 | max-width: 650px; 40 | margin: 0 auto; 41 | padding: 60px 9%; 42 | border-left: 1px solid #e9e9e9; 43 | border-right: 1px solid #e9e9e9; 44 | background: #fff; 45 | } 46 | 47 | header, article, footer, a { 48 | transition: 0.2s; 49 | } 50 | 51 | header { 52 | padding-bottom: 3em; 53 | border-bottom: 2px solid #f8f8f8; 54 | } 55 | 56 | header a { 57 | border-bottom: 1px solid #fff; 58 | } 59 | 60 | .byline { 61 | float: left; 62 | } 63 | 64 | .byline a { 65 | color: #888; 66 | text-align: center; 67 | font-size: 0.7em; 68 | text-transform: uppercase; 69 | letter-spacing: 0.1em; 70 | } 71 | 72 | .contacts { 73 | float: right; 74 | } 75 | 76 | .contacts a { 77 | margin: 0 1em; 78 | color: #888; 79 | text-align: center; 80 | font-size: 0.7em; 81 | text-transform: uppercase; 82 | letter-spacing: 0.1em; 83 | } 84 | 85 | article { 86 | padding: 5em 0 3em 0; 87 | border-bottom: 1px solid #e9e9e9; 88 | } 89 | 90 | figure { 91 | margin: 2em 0; 92 | } 93 | 94 | figure img { 95 | border: 1px solid #e9e9e9; 96 | } 97 | 98 | .no-border { 99 | border: none; 100 | } 101 | 102 | .left, .right { 103 | display: block; 104 | } 105 | 106 | .left { 107 | width: 48%; 108 | float: left; 109 | } 110 | 111 | .right { 112 | width: 48%; 113 | float: right; 114 | } 115 | 116 | .right + p, .left + h3, .right + h3, .right + img { 117 | clear: both; 118 | } 119 | 120 | .float { 121 | float: left; 122 | width: 30%; 123 | margin: 1.5em 2em 0 0; 124 | } 125 | 126 | 127 | figcaption { 128 | font-family:'Whitney A', 'Whitney B'; 129 | padding-top: 0.5em; 130 | } 131 | 132 | hr { 133 | clear: both; 134 | border: 0px; 135 | height: 1px; 136 | diplay: block; 137 | width: 33%; 138 | background-color: rgb(232, 226, 232); 139 | margin: 3em 0px 2em 0; 140 | } 141 | 142 | footer { 143 | clear: both; 144 | padding-top: 3em; 145 | text-align: center; 146 | font-size: 0.6em; 147 | text-transform: uppercase; 148 | letter-spacing: 0.1em; 149 | } 150 | 151 | 152 | @media screen and (max-width: 650px) { 153 | body { font-size: 16px; background-color: #fff;} 154 | #wrapper { margin: 0; padding: 0;} 155 | .byline, .contacts { float: none; text-align: center; } 156 | .byline a { font-size: 0.8em;} 157 | .contacts a:first-child { margin-left: 0;} 158 | header { padding: 2em; border: 0;} 159 | article { border: none; } 160 | article, footer { padding: 2em; } 161 | iframe { width: 100%; height: 100%; } 162 | .left, .right { width: 100%; float: none; } 163 | .float { float: none; width: 100%; height: 100%; } 164 | } 165 | 166 | 167 | 168 | 169 | 170 | -------------------------------------------------------------------------------- /source/assets/css/vendor/normalize.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v2.0.1 | MIT License | git.io/normalize */ 2 | 3 | /* ========================================================================== 4 | HTML5 display definitions 5 | ========================================================================== */ 6 | 7 | /* 8 | * Corrects `block` display not defined in IE 8/9. 9 | */ 10 | 11 | article, 12 | aside, 13 | details, 14 | figcaption, 15 | figure, 16 | footer, 17 | header, 18 | hgroup, 19 | nav, 20 | section, 21 | summary { 22 | display: block; 23 | } 24 | 25 | /* 26 | * Corrects `inline-block` display not defined in IE 8/9. 27 | */ 28 | 29 | audio, 30 | canvas, 31 | video { 32 | display: inline-block; 33 | } 34 | 35 | /* 36 | * Prevents modern browsers from displaying `audio` without controls. 37 | * Remove excess height in iOS 5 devices. 38 | */ 39 | 40 | audio:not([controls]) { 41 | display: none; 42 | height: 0; 43 | } 44 | 45 | /* 46 | * Addresses styling for `hidden` attribute not present in IE 8/9. 47 | */ 48 | 49 | [hidden] { 50 | display: none; 51 | } 52 | 53 | /* ========================================================================== 54 | Base 55 | ========================================================================== */ 56 | 57 | /* 58 | * 1. Sets default font family to sans-serif. 59 | * 2. Prevents iOS text size adjust after orientation change, without disabling 60 | * user zoom. 61 | */ 62 | 63 | html { 64 | font-family: sans-serif; /* 1 */ 65 | -webkit-text-size-adjust: 100%; /* 2 */ 66 | -ms-text-size-adjust: 100%; /* 2 */ 67 | } 68 | 69 | /* 70 | * Removes default margin. 71 | */ 72 | 73 | body { 74 | margin: 0; 75 | } 76 | 77 | /* ========================================================================== 78 | Links 79 | ========================================================================== */ 80 | 81 | /* 82 | * Addresses `outline` inconsistency between Chrome and other browsers. 83 | */ 84 | 85 | a:focus { 86 | outline: thin dotted; 87 | } 88 | 89 | /* 90 | * Improves readability when focused and also mouse hovered in all browsers. 91 | */ 92 | 93 | a:active, 94 | a:hover { 95 | outline: 0; 96 | } 97 | 98 | /* ========================================================================== 99 | Typography 100 | ========================================================================== */ 101 | 102 | /* 103 | * Addresses `h1` font sizes within `section` and `article` in Firefox 4+, 104 | * Safari 5, and Chrome. 105 | */ 106 | 107 | h1 { 108 | font-size: 2em; 109 | } 110 | 111 | /* 112 | * Addresses styling not present in IE 8/9, Safari 5, and Chrome. 113 | */ 114 | 115 | abbr[title] { 116 | border-bottom: 1px dotted; 117 | } 118 | 119 | /* 120 | * Addresses style set to `bolder` in Firefox 4+, Safari 5, and Chrome. 121 | */ 122 | 123 | b, 124 | strong { 125 | font-weight: bold; 126 | } 127 | 128 | /* 129 | * Addresses styling not present in Safari 5 and Chrome. 130 | */ 131 | 132 | dfn { 133 | font-style: italic; 134 | } 135 | 136 | /* 137 | * Addresses styling not present in IE 8/9. 138 | */ 139 | 140 | mark { 141 | background: #ff0; 142 | color: #000; 143 | } 144 | 145 | 146 | /* 147 | * Corrects font family set oddly in Safari 5 and Chrome. 148 | */ 149 | 150 | code, 151 | kbd, 152 | pre, 153 | samp { 154 | font-family: monospace, serif; 155 | font-size: 1em; 156 | } 157 | 158 | /* 159 | * Improves readability of pre-formatted text in all browsers. 160 | */ 161 | 162 | pre { 163 | white-space: pre; 164 | white-space: pre-wrap; 165 | word-wrap: break-word; 166 | } 167 | 168 | /* 169 | * Sets consistent quote types. 170 | */ 171 | 172 | q { 173 | quotes: "\201C" "\201D" "\2018" "\2019"; 174 | } 175 | 176 | /* 177 | * Addresses inconsistent and variable font size in all browsers. 178 | */ 179 | 180 | small { 181 | font-size: 80%; 182 | } 183 | 184 | /* 185 | * Prevents `sub` and `sup` affecting `line-height` in all browsers. 186 | */ 187 | 188 | sub, 189 | sup { 190 | font-size: 75%; 191 | line-height: 0; 192 | position: relative; 193 | vertical-align: baseline; 194 | } 195 | 196 | sup { 197 | top: -0.5em; 198 | } 199 | 200 | sub { 201 | bottom: -0.25em; 202 | } 203 | 204 | /* ========================================================================== 205 | Embedded content 206 | ========================================================================== */ 207 | 208 | /* 209 | * Removes border when inside `a` element in IE 8/9. 210 | */ 211 | 212 | img { 213 | border: 0; 214 | } 215 | 216 | /* 217 | * Corrects overflow displayed oddly in IE 9. 218 | */ 219 | 220 | svg:not(:root) { 221 | overflow: hidden; 222 | } 223 | 224 | /* ========================================================================== 225 | Figures 226 | ========================================================================== */ 227 | 228 | /* 229 | * Addresses margin not present in IE 8/9 and Safari 5. 230 | */ 231 | 232 | figure { 233 | margin: 0; 234 | } 235 | 236 | /* ========================================================================== 237 | Forms 238 | ========================================================================== */ 239 | 240 | /* 241 | * Define consistent border, margin, and padding. 242 | */ 243 | 244 | fieldset { 245 | border: 1px solid #c0c0c0; 246 | margin: 0 2px; 247 | padding: 0.35em 0.625em 0.75em; 248 | } 249 | 250 | /* 251 | * 1. Corrects color not being inherited in IE 8/9. 252 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 253 | */ 254 | 255 | legend { 256 | border: 0; /* 1 */ 257 | padding: 0; /* 2 */ 258 | } 259 | 260 | /* 261 | * 1. Corrects font family not being inherited in all browsers. 262 | * 2. Corrects font size not being inherited in all browsers. 263 | * 3. Addresses margins set differently in Firefox 4+, Safari 5, and Chrome 264 | */ 265 | 266 | button, 267 | input, 268 | select, 269 | textarea { 270 | font-family: inherit; /* 1 */ 271 | font-size: 100%; /* 2 */ 272 | margin: 0; /* 3 */ 273 | } 274 | 275 | /* 276 | * Addresses Firefox 4+ setting `line-height` on `input` using `!important` in 277 | * the UA stylesheet. 278 | */ 279 | 280 | button, 281 | input { 282 | line-height: normal; 283 | } 284 | 285 | /* 286 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 287 | * and `video` controls. 288 | * 2. Corrects inability to style clickable `input` types in iOS. 289 | * 3. Improves usability and consistency of cursor style between image-type 290 | * `input` and others. 291 | */ 292 | 293 | button, 294 | html input[type="button"], /* 1 */ 295 | input[type="reset"], 296 | input[type="submit"] { 297 | -webkit-appearance: button; /* 2 */ 298 | cursor: pointer; /* 3 */ 299 | } 300 | 301 | /* 302 | * Re-set default cursor for disabled elements. 303 | */ 304 | 305 | button[disabled], 306 | input[disabled] { 307 | cursor: default; 308 | } 309 | 310 | /* 311 | * 1. Addresses box sizing set to `content-box` in IE 8/9. 312 | * 2. Removes excess padding in IE 8/9. 313 | */ 314 | 315 | input[type="checkbox"], 316 | input[type="radio"] { 317 | box-sizing: border-box; /* 1 */ 318 | padding: 0; /* 2 */ 319 | } 320 | 321 | /* 322 | * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome. 323 | * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome 324 | * (include `-moz` to future-proof). 325 | */ 326 | 327 | input[type="search"] { 328 | -webkit-appearance: textfield; /* 1 */ 329 | -moz-box-sizing: content-box; 330 | -webkit-box-sizing: content-box; /* 2 */ 331 | box-sizing: content-box; 332 | } 333 | 334 | /* 335 | * Removes inner padding and search cancel button in Safari 5 and Chrome 336 | * on OS X. 337 | */ 338 | 339 | input[type="search"]::-webkit-search-cancel-button, 340 | input[type="search"]::-webkit-search-decoration { 341 | -webkit-appearance: none; 342 | } 343 | 344 | /* 345 | * Removes inner padding and border in Firefox 4+. 346 | */ 347 | 348 | button::-moz-focus-inner, 349 | input::-moz-focus-inner { 350 | border: 0; 351 | padding: 0; 352 | } 353 | 354 | /* 355 | * 1. Removes default vertical scrollbar in IE 8/9. 356 | * 2. Improves readability and alignment in all browsers. 357 | */ 358 | 359 | textarea { 360 | overflow: auto; /* 1 */ 361 | vertical-align: top; /* 2 */ 362 | } 363 | 364 | /* ========================================================================== 365 | Tables 366 | ========================================================================== */ 367 | 368 | /* 369 | * Remove most spacing between table cells. 370 | */ 371 | 372 | table { 373 | border-collapse: collapse; 374 | border-spacing: 0; 375 | } 376 | -------------------------------------------------------------------------------- /cate.sublime-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "auto_complete": 3 | { 4 | "selected_items": 5 | [ 6 | [ 7 | "font", 8 | "font-weight" 9 | ], 10 | [ 11 | "text", 12 | "text-align" 13 | ], 14 | [ 15 | "padding", 16 | "padding-left" 17 | ], 18 | [ 19 | "su", 20 | "super" 21 | ], 22 | [ 23 | "fot", 24 | "font-size" 25 | ], 26 | [ 27 | "margin", 28 | "margin-top" 29 | ], 30 | [ 31 | "list", 32 | "list-style-type" 33 | ], 34 | [ 35 | "margin-", 36 | "margin-left" 37 | ], 38 | [ 39 | "colu", 40 | "column_left" 41 | ], 42 | [ 43 | "mar", 44 | "margin-left" 45 | ], 46 | [ 47 | "ali", 48 | "vertical-align" 49 | ], 50 | [ 51 | "border", 52 | "border-bottom" 53 | ], 54 | [ 55 | "fon", 56 | "font-size" 57 | ], 58 | [ 59 | "backgru", 60 | "background-color" 61 | ], 62 | [ 63 | "background", 64 | "background-color" 65 | ] 66 | ] 67 | }, 68 | "buffers": 69 | [ 70 | { 71 | "file": "source/layouts/layout.erb", 72 | "settings": 73 | { 74 | "buffer_size": 1056, 75 | "line_ending": "Unix" 76 | } 77 | } 78 | ], 79 | "build_system": "", 80 | "command_palette": 81 | { 82 | "height": 400.0, 83 | "selected_items": 84 | [ 85 | [ 86 | "package", 87 | "Preferences: Browse Packages" 88 | ] 89 | ], 90 | "width": 475.0 91 | }, 92 | "console": 93 | { 94 | "height": 0.0 95 | }, 96 | "distraction_free": 97 | { 98 | "menu_visible": true, 99 | "show_minimap": false, 100 | "show_open_files": false, 101 | "show_tabs": false, 102 | "side_bar_visible": false, 103 | "status_bar_visible": false 104 | }, 105 | "file_history": 106 | [ 107 | "/Users/zhangc/Projects/cate.is-v1.2/source/partials/_footer.erb", 108 | "/Users/zhangc/Projects/cate.is-v1.2/source/partials/_header.erb", 109 | "/Users/zhangc/Projects/jina.me/source/layouts/layout.haml", 110 | "/Users/zhangc/Projects/cate.is-v1.2/source/assets/css/vendor/normalize.css", 111 | "/Users/zhangc/Projects/cate.is-v1.2/config.rb", 112 | "/Users/zhangc/Projects/jina.me/Gemfile", 113 | "/Users/zhangc/Projects/cate.is-v1.2/Gemfile", 114 | "/Users/zhangc/Projects/cate.is-v1.2/source/CNAME", 115 | "/Users/zhangc/Projects/cate.is-v1.2/README.md", 116 | "/Users/zhangc/Projects/cate.is-v1.2/.gitignore", 117 | "/Users/zhangc/Projects/cate.is-v1.2/LICENSE", 118 | "/Users/zhangc/Projects/jina.me/.gitignore", 119 | "/Users/zhangc/Projects/cate.is-v1.1/source/assets/css/cate.css", 120 | "/Users/zhangc/Projects/cate.is-v1.1/source/index.html.haml", 121 | "/Users/zhangc/Projects/cate.is-v1.1/source/about.html.haml", 122 | "/Users/zhangc/Projects/cate.is-v1.1/build/index.html", 123 | "/Users/zhangc/Projects/cate.is-v1.1/source/layouts/layout.erb", 124 | "/Users/zhangc/Projects/cate.is-v1.1/source/partials/header.html.erb", 125 | "/Users/zhangc/Projects/cate.is-v1.1/Rakefile", 126 | "/Users/zhangc/Projects/cate.is/source/blog/2014-08-17-curate-it-explorations.html.markdown", 127 | "/Users/zhangc/Projects/cate.is/source/partials/footer.html.erb", 128 | "/Users/zhangc/Projects/cate.is/source/blog/2014-08-14-typography.html.markdown", 129 | "/Users/zhangc/Projects/cate.is/source/blog/2014-08-14-curate-it.html.markdown", 130 | "/Users/zhangc/Projects/cate.is/source/blog/2014-08-16-editorial.html.markdown", 131 | "/Users/zhangc/Projects/cate.is/config.rb", 132 | "/Users/zhangc/Projects/cate.is/source/index.html.haml", 133 | "/Users/zhangc/Projects/cate.is/source/blog/draft-to-the-north.html.markdown", 134 | "/Users/zhangc/Projects/cate.is/source/blog/2014-08-14-write-better.html.markdown", 135 | "/Users/zhangc/Projects/cate.is/source/assets/css/vendor/normalize.css", 136 | "/Users/zhangc/Projects/cate.is/source/assets/css/cate.scss", 137 | "/Users/zhangc/Projects/cate.is/source/blog/2014-08-19-printed.html.markdown", 138 | "/Users/zhangc/Projects/martin/index.html", 139 | "/Users/zhangc/Library/Application Support/Sublime Text 2/Packages/User/Preferences.sublime-settings", 140 | "/Users/zhangc/Library/Application Support/Sublime Text 2/Packages/User/Default (OSX).sublime-keymap", 141 | "/Users/zhangc/Projects/cate.is/source/partials/nav.html.erb", 142 | "/Users/zhangc/Projects/cate.is/source/blog/draft-resources.html.markdown", 143 | "/Users/zhangc/Projects/cate.is/source/blog/2014-07-24-to-the-north.html.markdown", 144 | "/Users/zhangc/Projects/cate.is/source/layout.erb", 145 | "/Users/zhangc/Projects/cate.is/source/tag.html.erb", 146 | "/Users/zhangc/Projects/jina.me/source/speaking.html.haml", 147 | "/Users/zhangc/Projects/cate.is/source/typography.html.erb", 148 | "/Users/zhangc/Projects/cate.is/source/write-better.html.erb", 149 | "/Users/zhangc/Projects/cate.is/source/curate-it.html.erb", 150 | "/Users/zhangc/Projects/cate.is/source/index.html.erb", 151 | "/Users/zhangc/Projects/cate.is/source/printed-magazines.html", 152 | "/Users/zhangc/Projects/cate.is/source/styleguide.html.erb", 153 | "/Users/zhangc/Projects/cate.is/source/partials/about.html.erb", 154 | "/Users/zhangc/Projects/cate.is/source/partials/header.html.erb", 155 | "/Users/zhangc/Projects/Framer/test.framer/framer/framer.js", 156 | "/Users/zhangc/Projects/cate.is/source/assets/css/vendor/social-icon-font.css", 157 | "/Users/zhangc/Projects/cate.is/source/projects.html.erb", 158 | "/Users/zhangc/Projects/cate.is/source/blog/2014-08-04-test.html.markdown", 159 | "/Users/zhangc/Projects/cate.is/source/blog.html.erb", 160 | "/Users/zhangc/Projects/cate.is/source/blog/2014-07-28-test.html.markdown", 161 | "/Users/zhangc/Projects/cate.is/source/about.html.erb", 162 | "/Users/zhangc/Projects/cate.is/data/books.yml", 163 | "/Users/zhangc/Projects/cate.is/source/feed.xml.builder", 164 | "/Users/zhangc/Projects/cate.is/source/assets/css/partials/_base.scss", 165 | "/Users/zhangc/Projects/cate.is/source/assets/css/all.scss", 166 | "/Users/zhangc/cate.is/source/assets /css/cate.scss", 167 | "/Users/zhangc/cate.is/source/posts/2014-07-24-to-the-north.html.markdown", 168 | "/Users/zhangc/cate.is/build/index.html", 169 | "/Users/zhangc/Projects/cate.is/README.md", 170 | "/Users/zhangc/Projects/cate.is/Gemfile", 171 | "/Users/zhangc/Projects/cate.is/Rakefile", 172 | "/Users/zhangc/Projects/cate.is/source/2014-07-24-to-the-north.html.markdown", 173 | "/Users/zhangc/Projects/cate.is/source/layouts/article_layout.erb", 174 | "/Users/zhangc/Dropbox/Projects/Cate.is/middleman-blog/Gemfile", 175 | "/Users/zhangc/Dropbox/Projects/Cate.is/middleman-blog/config.rb", 176 | "/Users/zhangc/Dropbox/Projects/Cate.is/middleman-blog/Gemfile.lock", 177 | "/Users/zhangc/Dropbox/Projects/Cate.is/cate.is - dev/templates/base.html", 178 | "/Users/zhangc/Dropbox/Projects/Cate.is/cate.is - dev/pages/index.html", 179 | "/Users/zhangc/Dropbox/Projects/Cate.is/cate.is - dev/static/css/style.css", 180 | "/Users/zhangc/Dropbox/Projects/cate.is/cate.is - dev/templates/base.html", 181 | "/Users/zhangc/Dropbox/Projects/cate.is/blog.cate.is/pages/posts/norway_draft.html", 182 | "/Users/zhangc/Dropbox/Projects/cate.is/blog.cate.is/pages/posts/oslo.html", 183 | "/Users/zhangc/Dropbox/Projects/cate.is/blog.cate.is/pages/posts/norway.html", 184 | "/Users/zhangc/Dropbox/Projects/cate.is/cate.is - dev/static/css/style.css", 185 | "/Users/zhangc/Dropbox/Projects/cate.is/cate.is - dev/pages/index.html", 186 | "/Users/zhangc/Dropbox/Projects/cate.is/blog.cate.is/pages/posts/start.html", 187 | "/Users/zhangc/Dropbox/Projects/cate.is/blog.cate.is/pages/posts/back-to-basics.html", 188 | "/Users/zhangc/Dropbox/Projects/cate.is/blog.cate.is/pages/posts/my-camera-experience.html", 189 | "/Users/zhangc/Desktop/01 my camera expereince.md", 190 | "/Users/zhangc/Dropbox/Projects/cate.is/blog.cate.is/pages/posts/intro.html", 191 | "/Users/zhangc/Dropbox/Projects/cate.is/blog.cate.is/pages/posts/apartment-improvement", 192 | "/Users/zhangc/Dropbox/Projects/cate.is/blog.cate.is/pages/posts/rangefinder.html" 193 | ], 194 | "find": 195 | { 196 | "height": 38.0 197 | }, 198 | "find_in_files": 199 | { 200 | "height": 0.0, 201 | "where_history": 202 | [ 203 | ] 204 | }, 205 | "find_state": 206 | { 207 | "case_sensitive": false, 208 | "find_history": 209 | [ 210 | "IHere", 211 | "about", 212 | "Light", 213 | "number" 214 | ], 215 | "highlight": true, 216 | "in_selection": false, 217 | "preserve_case": false, 218 | "regex": false, 219 | "replace_history": 220 | [ 221 | ], 222 | "reverse": false, 223 | "show_context": true, 224 | "use_buffer2": true, 225 | "whole_word": false, 226 | "wrap": true 227 | }, 228 | "groups": 229 | [ 230 | { 231 | "selected": 0, 232 | "sheets": 233 | [ 234 | { 235 | "buffer": 0, 236 | "file": "source/layouts/layout.erb", 237 | "settings": 238 | { 239 | "buffer_size": 1056, 240 | "regions": 241 | { 242 | }, 243 | "selection": 244 | [ 245 | [ 246 | 947, 247 | 947 248 | ] 249 | ], 250 | "settings": 251 | { 252 | "syntax": "Packages/Rails/HTML (Rails).tmLanguage", 253 | "tab_size": 2, 254 | "translate_tabs_to_spaces": true 255 | }, 256 | "translation.x": 0.0, 257 | "translation.y": 0.0, 258 | "zoom_level": 1.0 259 | }, 260 | "type": "text" 261 | } 262 | ] 263 | } 264 | ], 265 | "incremental_find": 266 | { 267 | "height": 0.0 268 | }, 269 | "input": 270 | { 271 | "height": 40.0 272 | }, 273 | "layout": 274 | { 275 | "cells": 276 | [ 277 | [ 278 | 0, 279 | 0, 280 | 1, 281 | 1 282 | ] 283 | ], 284 | "cols": 285 | [ 286 | 0.0, 287 | 1.0 288 | ], 289 | "rows": 290 | [ 291 | 0.0, 292 | 1.0 293 | ] 294 | }, 295 | "menu_visible": true, 296 | "replace": 297 | { 298 | "height": 0.0 299 | }, 300 | "save_all_on_build": true, 301 | "select_file": 302 | { 303 | "height": 0.0, 304 | "selected_items": 305 | [ 306 | ], 307 | "width": 0.0 308 | }, 309 | "select_project": 310 | { 311 | "height": 500.0, 312 | "selected_items": 313 | [ 314 | [ 315 | "", 316 | "/Users/zhangc/Projects/cate.is-v1.2/cate.sublime-project" 317 | ] 318 | ], 319 | "width": 380.0 320 | }, 321 | "show_minimap": true, 322 | "show_open_files": false, 323 | "show_tabs": true, 324 | "side_bar_visible": true, 325 | "side_bar_width": 375.0, 326 | "status_bar_visible": true 327 | } 328 | -------------------------------------------------------------------------------- /source/index.html.haml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Blog — Cate Meng Zhang 3 | --- 4 | 5 |
6 | :markdown 7 | # A thought on Static Mockups 8 | The other day as I was going through my old computer, I found one of the many mockups I did for a project. More than three years has passed, the design still holds up well. I stared at the nice typography for a minute and thought, how come I didn’t ship it? 9 | 10 |
11 | 12 |
13 | One of the many concepts I had for Curate.it, my thesis project for school. Photo credit to from top down: Mark Peckmezian, Silas Dominey, Glen Erler, and Walker Evans 14 |
15 |
16 | 17 | I looked through folders of discarded static mockups. I was too busy worrying about my work not being good enough. Remember the [Imposter Syndrome article](https://medium.com/@aliciatweet/overcoming-impostor-syndrome-bdae04e46ec5) you read some time ago? Exactly that, or very similar. 18 | 19 | I kept on starting from scratch over and over again. Each time I couldn’t make up my mind. I was afraid to make the wrong decison. “You think too much”, as my hair dresser always told me in our therapy a.k.a hair cutting session. I wanted everything to be perfect the first time around. 20 | 21 | Start small. Do it right away when you think of an idea, when you are still excited about it. Don’t take too long. First time you make something, there will be flaws. Prioritize. Iterate. Be disciplined. Get yourself into a momentum. 22 | 23 | More importantly, have fun with whatever you do. Eventually you will ship the project you are proud of. 24 | 25 |
26 | 27 |
28 | :markdown 29 | # Curate.it 30 | 31 | I made Curate.it between late 2011 to early 2012. It was one of my school projects. The concept was simple — an iPad photography magazine where people can easily browse and bookmark the content they like. 32 | 33 | Photographers would sign up and submit their projects. A curator would determine which ones to publish. Both the photographer and the curator would use the website to achieve those goals. 34 | 35 | ## The iPad App 36 | 37 | For the iPad app, I selected content from photographers I know of and other resources, designed the interaction, UI and the visual style. 38 | 39 |
40 | 41 |
Sign up or login, you get to explore projects, to be able to follow photographers and favorite content.
42 |
43 | 44 |
45 | 46 |
Layout of the featured project titled Virtuoso of Visual Creation. The overview screen (right) shows all pages contained in this project, as thumbnail view. Left screen shows a full page view.
47 |
48 | 49 |
50 | 51 |
Actions you can take with each photograph: to favorite, share to friends, follow the photographer, and check out the photographer’s other avaialble projects.
52 |
53 | 54 |
55 | 56 |
The list of photographers you follow. Everytime a new project is published from someone you follow, you get a notification. Account settings on the right screen: you can set your own home page, updated your profile and change password etc.
57 |
58 | 59 |
60 | 61 |
62 | Here is a video demo. The later half on project submission wasn't well thought out. So I expanded it into a website, shown below. Video credit goes to Oscar Beckmann. 63 |
64 |
65 | 66 | ## The Website 67 | 68 | If you have watched the video above, you would notice the part that allow photographers to submit their work was poorly executed. The submitting a project is too troublesome to do on an iPad. Wouldn’t you prefer to do it on your desktop? That way you can take your time to fill out the forms and compile the images. 69 | 70 | So I took the submission process out of the iPad app and expanded into a companign website. I also added the UI to allow curator to choose and publish. Previously, I was thinking just to have all submission emailed to the curator. 71 | 72 |
73 | 74 |
75 | On the homepage, featured app screen has an updated UI. Previously my thought was the curator can publish any submission at any time. For this update, I introduced the concept of being a quaterly magazine. Therefore you see the navigation "Summer Issue" and "Fall Issue". The user no longer needs to sign up for an account to view the content. The homepage is where photographer or curator log in. 76 |
77 |
78 | 79 |
80 | 81 |
Photographer’s submission form. The photographer can choose a predefined category for her work, and add tags. It helps the curator to navigate through a large quantity of submissions.
82 |
83 | 84 |
85 | 86 |
Photographer previews layout. The website only support one layout to begin with. The same layout would be what you see on the iPad app. Edit caption in place is supported. You can aslo adjust the photograph within it’s frame.
87 |
88 | 89 |
90 | 91 |
Drafts section for the photographer. You could view your submmited projects here but you would’t be able to edit it.
92 |
93 | 94 |
95 | 96 |
Curator's view on all submissions. This is a mailbox for him. Catogories, tags defined from photographers help him to find projects, though the curator has the ability to override them.
97 |
98 | 99 |
100 | 101 |
Curator’s view showing the publishing deadline. In this case he already selected the required twelve projects to publish for the Fall issue.
102 |
103 | 104 |
105 | 106 |
A contrast view when the curator hasn’t selected any project for the upcoming magazine issue. Click on any placeholder would take him to the inbox.
107 |
108 | 109 | You can [view the entire InVision prototype](http://invis.io/NPORJVDV). I also documented the walkthrough and wireframes. [Download the pdf](https://www.dropbox.com/s/qv7eft3viq53h1n/book.pdf?dl=0). 110 | 111 | All I knew at the beginning was I wanted to work on a photography project. I attempted three ideas. This process helped me to get to the final execution. 112 | 113 |
114 | 115 | ## Process: The Three Ideas 116 | 117 | ### Photo essay sharing 118 | 119 | My very first attempt. Like Flickr, but user shares essays or stories instead of individual photographs. Popular content and authors get featured onto the homepage. I had the navigation so cluttered. 120 | 121 |
122 | 123 |
Each project has a time stamp when the photos were taken, with the location as well. I wanted to encourage photographer to write educational content.
124 |
125 | 126 |
127 | 128 |
You can browse by authors. The site will aggregates popular and new members.
129 |
130 | 131 |
132 | 133 |
The detail view. You can comment and find related articles. Possible actions you could take is display in a menu on the right: you could so things like add this article to your library, share to other social platform, check out the author and jump to comments.
134 |
135 | 136 |
137 | 138 |
The dashboard view for registered users. You get updates on new article and activities associated to your articles. There is shortcut for submitting new work and recent library items you added.
139 |
140 | 141 |
142 | 143 |
Public profile. The copy could be better, instead of "my", it could be "Bjørn's" since anyone would be able to see.
144 |
145 | 146 |
147 | 148 |
The history of my submission and their status.
149 |
150 | 151 | ### Pinterest for photography? kind of. 152 | 153 | This was when I began to experiment on the iPad. You could view projects generated from all users. You could save any text, photograph or entire project to a collection of yours, and share with anyone. 154 | 155 |
156 | 157 |
My profile screen with general inforamtion, my equipments and published work.
158 |
159 | 160 |
161 | 162 |
You swipe left or right to move the timeline for your bookmarked content. A long tap to launch the share menu.
163 |
164 | 165 |
166 | 167 |
Location based projects. It's up to the photographer to share her shooting location.
168 |
169 | 170 |
171 | 172 |
A detail view of a project. You can choose to only read text or browse photographs. The default view shows everything.
173 |
174 | 175 |
176 | 177 |
View photos only.
178 |
179 | 180 |
181 | 182 |
View text only.
183 |
184 | 185 | I made an update on this concept, with inspiration from [Gimme Bar](https://gimmebar.com/). It allows users to save anything on the web into their own collections. I took the similar approach, reworked the terminology to "Exhibition", so any public exhibition the user decided to save, they can save into their own created exhibition and share with anyone. All content is user generated. 186 | 187 |
188 | 189 |
Catogory view is switched on: recent or popular exihibitions. Tap to disable them.
190 |
191 | 192 |
193 | 194 |
Detail view. Curating mode allows to add any content to your own exhibition.
195 |
196 | 197 |
198 | 199 |
Create your own gallery before you could save any content to it.
200 |
201 | 202 |
203 | 204 |
Pinch to collapse the entire project and save it to your gallery.
205 |
206 | 207 |
208 | 209 |
Create a new gallery.
210 |
211 | 212 | ### The Magazine 213 | 214 | This is the visual exploration. I wasn’t worried about how to submit or publish projects. Dealing with a smaller scope sped up execution, even though it had a different look and feel compared to the final version. The idea is to showcase twelve projects based on user’s location. 215 | 216 |
217 | 218 |
Landing screen
219 |
220 | 221 |
222 | 223 |
Project Overview
224 |
225 | 226 |
227 | 228 |
Signle Image View
229 |
230 | 231 |
232 | 233 |
Project Thumbnail View
234 |
235 | 236 |
237 | 238 |
Available Project List
239 |
240 | 241 |
242 | 243 |
Project Layout
244 |
245 | 246 |
247 | 248 |
Equipments information if available from the photographer
249 |
250 | 251 | This project spaned over three semesters. With each exploration I gained more clarity and direction. If anything, this is what I learned: 252 | 253 | + Keep scope small. Do one thing well, not ten thing average. 254 | + Focus on content. 255 | + Make it for web, tailor content for mobile devices later. 256 | + Show progress often. Ask for feedback. 257 | + Choose a subject you are passionate about. 258 | + As a student, this might be one of the few opportunities where you get total freedom and all of your day time on a project. 259 | + Have fun with it. 260 | 261 | ## Attribution 262 | 263 | Special thanks to the following photographers: [Tommy Oshima](https://www.flickr.com/photos/tommyoshima), [Isabella Bejarano](http://www.isabellabejarano.com/home), [Silas Dominey](http://silasdominey.tumblr.com), [Jaqueline Vanek](https://www.flickr.com/photos/jaquelinevanek). [Mark Peckmezian](http://www.markpeckmezian.com/) and [Federica Erra](https://www.flickr.com/photos/federico_erra). If you prefer not to be featured here, please contact me @cmzhang. All work used in this project was for academic purposes. 264 | 265 | 266 | 267 |
268 | 269 | 270 | --------------------------------------------------------------------------------