Revamp the home page

This commit is contained in:
Wesley Moore 2018-03-17 10:48:48 +11:00
parent 5dc43f88aa
commit 512e9ae4ed
12 changed files with 171 additions and 177 deletions

View file

@ -56,10 +56,10 @@ what I'm most interested in.
<figcaption>The Finished Installation</figcaption> <figcaption>The Finished Installation</figcaption>
</figure> </figure>
To log and upload the weather readings to [http://weather.wezm.net/][weather] To log and upload the [weather readings][weather] I'm using the [wview][wview]
I'm using the [wview][wview] weather station software. wview is running on the weather station software. wview is running on the Mac mini connected to our TV.
Mac mini connected to our TV. The site layout is pretty basic so I hope to come The site layout is pretty basic so I hope to come up with a cleaner design in
up with a cleaner design in the coming weeks. the coming weeks.
**Update:** I built a custom logging and charting solution. See the post, **Update:** I built a custom logging and charting solution. See the post,
[Weather Station Software][software]. [Weather Station Software][software].
@ -67,4 +67,4 @@ up with a cleaner design in the coming weeks.
[software]: /technical/2010/09/weather-station-software/ [software]: /technical/2010/09/weather-station-software/
[WS2355]: http://www.lacrossetechnology.com.au/shop2/product_info.php?cPath=21&products_id=93 [WS2355]: http://www.lacrossetechnology.com.au/shop2/product_info.php?cPath=21&products_id=93
[wview]: http://www.wviewweather.com/ [wview]: http://www.wviewweather.com/
[weather]: http://weather.wezm.net/ [weather]: /weather/

View file

@ -24,11 +24,20 @@ A couple of other websites I maintain are:
publically in the hope it may be useful to others as well. The code ([pkb]) publically in the hope it may be useful to others as well. The code ([pkb])
is open source. is open source.
[readrust]: http://readrust.net/ [readrust]: https://readrust.net/
[Rust]: https://www.rust-lang.org/ [Rust]: https://www.rust-lang.org/
[bitcannon]: http://bitcannon.net/ [bitcannon]: http://bitcannon.net/
[hugo]: http://gohugo.io/ [hugo]: http://gohugo.io/
BSD CI
------
[BSD CI] (currently in development) aims to provide a simple way for software
projects to build and test on [BSD operating systems][run-bsd].
[BSD CI]: http://bsd-ci.com/
[run-bsd]: http://runbsd.info/
Open Source Projects Open Source Projects
-------------------- --------------------
@ -77,19 +86,6 @@ Compiler][ragel] in the hope that it will help ensure fast and correct parsing.
[mustache]: http://mustache.github.com/ [mustache]: http://mustache.github.com/
[ragel]: http://www.complang.org/ragel/ [ragel]: http://www.complang.org/ragel/
### Monothumb
[monothumb] is the tool that generates the thumbnails on the [home page](/). It
retrieves thumbnails of my [recent uploads to Flickr][flickr], converts them to
greyscale and then generates a single output image with both the colour and
monochrome versions of the thumbnail. There are two version of the tool. The
original one, written in Objective-C that uses CoreImage and a second version
written in Lua. The Lua one uses my [lua-imlib2] fork.
[flickr]: http://www.flickr.com/photos/wezm/
[monothumb]: https://github.com/wezm/monothumb
[lua-imlib2]: https://github.com/wezm/lua-imlib2
### node-genx ### node-genx
[node-genx] is a [node.js][node] binding to the [Genx][genx] XML generation [node-genx] is a [node.js][node] binding to the [Genx][genx] XML generation
@ -114,7 +110,7 @@ produce the [Weather page][weather].
[sqlite]: http://www.sqlite.org/ [sqlite]: http://www.sqlite.org/
[open2300]: http://www.lavrsen.dk/foswiki/bin/view/Open2300/WebHome [open2300]: http://www.lavrsen.dk/foswiki/bin/view/Open2300/WebHome
[open2300fork]: http://github.com/wezm/open2300 [open2300fork]: http://github.com/wezm/open2300
[weather]: http://weather.wezm.net/ [weather]: /weather/
[json]: http://www.json.org/ [json]: http://www.json.org/
[weather-tools]: http://github.com/wezm/weather-tools [weather-tools]: http://github.com/wezm/weather-tools

View file

@ -85,15 +85,6 @@ h1 a
color: #111 color: #111
body.home h1 > a
-webkit-transition: border-bottom-color 500ms ease-out
transition: border-bottom-color 500ms ease-out
border-bottom: 2px solid rgba(17, 17, 17, 0.0)
&:hover
border-bottom-color: rgba(17, 17, 17, 1.0)
sup sup
vertical-align: super vertical-align: super
font-size: 0.8em font-size: 0.8em
@ -186,22 +177,50 @@ footer
padding-top: 1em padding-top: 1em
display: block display: block
.column
float: left
width: 50%
margin: 0
min-width: 480px
.align-top .align-top
vertical-align: top vertical-align: top
#personal div
padding-right: 2em
.home
h1 > a:first-child
-webkit-transition: border-bottom-color 500ms ease-out
transition: border-bottom-color 500ms ease-out
border-bottom: 2px solid rgba(17, 17, 17, 0.0)
.column div &:hover
padding: 0 0 0 2em border-bottom-color: rgba(17, 17, 17, 1.0)
main
display: flex
margin: 0 20px
margin: 0 auto
padding: 0 20px
max-width: 1200px
min-height: 85vh
#posts
width: 100%
#projects
width: 250px
flex-shrink: 0
margin-left: 2em
ul.projects
list-style: none
margin: 0
padding-top: 1em
li
margin: 1em 0
img, svg
width: 32px
vertical-align: middle
margin-right: 0.5em
p
margin-left: calc(32px + 0.5em)
ul.articles ul.articles
list-style: none list-style: none
@ -260,50 +279,6 @@ a
margin-left: 0 margin-left: 0
#flickr
clear: both
header
margin-left: 2em
h1
margin: 0
padding: 0.6em 0 0 0
ul
display: block
height: 75px
overflow: hidden
margin-top: 1em
li
float: left
overflow: hidden
margin: 0 0 0 1em
display: block
position: relative
height: 75px
width: 75px
border: 1px solid #ccc
background: url(/images/photos.jpg?20120121) no-repeat 0 -75px
&:first-child
margin-left: 2em
img
-webkit-transition: opacity 500ms ease-out
transition: opacity 500ms ease-out
position: absolute
max-width: none
&:hover
opacity: 0
a.more
float: right
margin: 1em 2em 1em 0
body.articles #content nav body.articles #content nav
padding-bottom: 1em padding-bottom: 1em
@ -360,7 +335,7 @@ img.alignleft
margin: 5px 10px 5px 0 margin: 5px 10px 5px 0
img.feed-icon .feed-icon
-webkit-transition: opacity 500ms ease-out -webkit-transition: opacity 500ms ease-out
transition: opacity 500ms ease-out transition: opacity 500ms ease-out
opacity: 1.0 opacity: 1.0
@ -368,6 +343,9 @@ img.feed-icon
&:hover &:hover
opacity: 0.75 opacity: 0.75
.feed-icon-sup
vertical-align: super
img.comment img.comment
padding-top: 1px padding-top: 1px
@ -512,19 +490,7 @@ body.weather
margin-top: 1em margin-top: 1em
color: #999 color: #999
@media screen and (max-width: 960px)
.column
float: none
width: auto
min-width: 0
max-width: 728px
@media screen and (max-width: 768px) @media screen and (max-width: 768px)
#technical div, #personal div
padding: 0 1em
#content #content
margin: 0 20px margin: 0 20px
font-size: 20px font-size: 20px
@ -540,6 +506,16 @@ body.weather
#search #search
float: none float: none
.home main
flex-direction: column
#projects
width: auto
margin-left: 0
margin-top: 2em
ul.projects
padding-top: 0
@media screen and (max-width: 515px) @media screen and (max-width: 515px)

View file

@ -1,13 +1,13 @@
Two weeks ago when I [installed my weather station][install] I setup the wview Two weeks ago when I [installed my weather station][install] I setup the wview
software to log the current conditions and generate and upload software to log the current conditions and generate and upload
HTML and graphs to [http://weather.wezm.net/][weather]. wview seemed like the HTML and graphs to [the weather page][weather]. wview seemed like the
perfect tool for the job but unfortunately it proved unreliable, even with the perfect tool for the job but unfortunately it proved unreliable, even with the
built in process monitoring. After a few hours of running fine it appeared the built in process monitoring. After a few hours of running fine it appeared the
HTML generation process would hang, preventing any further updates to the HTML generation process would hang, preventing any further updates to the
website. website.
[install]: /personal/2010/09/weather-station/ [install]: /personal/2010/09/weather-station/
[weather]: http://weather.wezm.net/ [weather]: /weather/
wview has a lot of functionality and thus a lot of code, which turned me wview has a lot of functionality and thus a lot of code, which turned me
off trying to track down the bug. I looked around for off trying to track down the bug. I looked around for

View file

@ -170,7 +170,7 @@ _For more great #Rust2018 posts check out [readrust.net][readrust]._
[node]: https://nodejs.org/ [node]: https://nodejs.org/
[platform-support]: https://forge.rust-lang.org/platform-support.html [platform-support]: https://forge.rust-lang.org/platform-support.html
[racer]: https://github.com/phildawes/racer [racer]: https://github.com/phildawes/racer
[readrust]: http://readrust.net/rust2018/ [readrust]: https://readrust.net/rust-2018/
[resf]: https://twitter.com/rustevangelism [resf]: https://twitter.com/rustevangelism
[rust-build-systems]: https://blog.rust-lang.org/2017/12/21/rust-in-2017.html#rust-should-integrate-easily-into-large-build-systems [rust-build-systems]: https://blog.rust-lang.org/2017/12/21/rust-in-2017.html#rust-should-integrate-easily-into-large-build-systems
[rust-cookbook]: https://rust-lang-nursery.github.io/rust-cookbook/ [rust-cookbook]: https://rust-lang-nursery.github.io/rust-cookbook/

View file

@ -15,16 +15,16 @@ January as a more general Rust content aggregator.
Yesterday I launched the update. A number of new categories join the initial Yesterday I launched the update. A number of new categories join the initial
Rust 2018 category, bringing the list to: Rust 2018 category, bringing the list to:
* [All Posts](http://readrust.net/all/) * [All Posts](https://readrust.net/all/)
* [Computer Science](http://readrust.net/computer-science/) * [Computer Science](https://readrust.net/computer-science/)
* [Crates](http://readrust.net/crates/) * [Crates](https://readrust.net/crates/)
* [Embedded](http://readrust.net/embedded/) * [Embedded](https://readrust.net/embedded/)
* [Games and Graphics](http://readrust.net/games-and-graphics/) * [Games and Graphics](https://readrust.net/games-and-graphics/)
* [Operating Systems](http://readrust.net/operating-systems/) * [Operating Systems](https://readrust.net/operating-systems/)
* [Performance](http://readrust.net/performance/) * [Performance](https://readrust.net/performance/)
* [Rust 2018](http://readrust.net/rust-2018/) * [Rust 2018](https://readrust.net/rust-2018/)
* [Tools and Applications](http://readrust.net/tools-and-applications/) * [Tools and Applications](https://readrust.net/tools-and-applications/)
* [Web and Network Services](http://readrust.net/web-and-network-services/) * [Web and Network Services](https://readrust.net/web-and-network-services/)
Each category has its own page and RSS feed in case readers are only interested Each category has its own page and RSS feed in case readers are only interested
in that category. I also set up a Twitter account, [@read_rust], that tweets in that category. I also set up a Twitter account, [@read_rust], that tweets
@ -109,6 +109,8 @@ Page load times (fully loaded) reported by [WebPagetest] are:
* 0.948s for Paris, France * 0.948s for Paris, France
* 2.130s for Rose Hill, Mauritius * 2.130s for Rose Hill, Mauritius
**Update:** Read Rust is now hosted on AWS and delivered via CloudFront.
## Conclusion ## Conclusion
So that is the process that led to making Read Rust the way it is and how the So that is the process that led to making Read Rust the way it is and how the
@ -125,7 +127,7 @@ to [submit it][submit]!
[issue-template]: https://github.com/wezm/read-rust/blob/master/.github/ISSUE_TEMPLATE/missing_post.md [issue-template]: https://github.com/wezm/read-rust/blob/master/.github/ISSUE_TEMPLATE/missing_post.md
[JSON Feed]: https://jsonfeed.org/ [JSON Feed]: https://jsonfeed.org/
[Nunito Sans]: https://www.fontsquirrel.com/fonts/nunito-sans [Nunito Sans]: https://www.fontsquirrel.com/fonts/nunito-sans
[Read Rust]: http://readrust.net/ [Read Rust]: https://readrust.net/
[readrust-github]: https://github.com/wezm/read-rust [readrust-github]: https://github.com/wezm/read-rust
[roadmap]: https://github.com/aturon/rfcs/blob/roadmap-2018/text/0000-roadmap-2018.md [roadmap]: https://github.com/aturon/rfcs/blob/roadmap-2018/text/0000-roadmap-2018.md
[submit]: https://github.com/wezm/read-rust/issues/new?labels=missing-post&title=Add+post&template=missing_post.md [submit]: https://github.com/wezm/read-rust/issues/new?labels=missing-post&title=Add+post&template=missing_post.md

View file

@ -10,7 +10,6 @@
<link rel="stylesheet" href="/css/prettyPhoto.css?v=3.0.1" type="text/css" media="screen" charset="utf-8" /> <link rel="stylesheet" href="/css/prettyPhoto.css?v=3.0.1" type="text/css" media="screen" charset="utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script>
<script src="/js/jquery.prettyPhoto.js?v=3.0.1" type="text/javascript" charset="utf-8"></script> <script src="/js/jquery.prettyPhoto.js?v=3.0.1" type="text/javascript" charset="utf-8"></script>
<script src="/js/home.js" type="text/javascript" charset="utf-8"></script>
</head> </head>
<body> <body>
<%= render '_header' %> <%= render '_header' %>

View file

@ -2,54 +2,67 @@
<html> <html>
<head> <head>
<%= render '_head' %> <%= render '_head' %>
<script src="/js/handlebars.js" type="text/javascript" charset="utf-8"></script>
<script src="/js/home.js" type="text/javascript" charset="utf-8"></script>
</head> </head>
<body class="home"> <body class="home">
<%= render '_header' %> <%= render '_header' %>
<section id="technical" class="column">
<div> <main>
<h1><a href="/technical/articles/">Technical</a> <section id="posts" class="column">
<sup><a href="/technical/feed/"><img src="/images/feed-icon.svg" class="feed-icon" width="12" height="12" alt="Feed Icon" /></a></sup> <h1>
<a href="/technical/articles/">Recent Posts</a>
<a href="/technical/feed/"><img src="/images/feed-icon.svg" class="feed-icon feed-icon-sup" width="12" height="12" alt="Feed Icon" /></a>
</h1> </h1>
<ul class="articles"> <ul class="articles">
<% technical_articles[0..4].each do |article| %> <% sorted_articles[0..4].each do |article| %>
<%= render '_article', :article => article %> <%= render '_article', :article => article %>
<% end %> <% end %>
</ul> </ul>
<a href="/technical/articles/" class="more">More &raquo;</a> <a href="/articles/" class="more">More &raquo;</a>
</div>
</section> </section>
<section id="personal" class="column"> <section id="projects" class="column">
<div> <h1><a href="/projects/">Projects</a></h1>
<h1><a href="/personal/articles/">Personal</a> <ul class="projects">
<sup><a href="/personal/feed/"><img src="/images/feed-icon.svg" class="feed-icon" width="12" height="12" alt="Feed Icon" /></a></sup>
</h1>
<ul class="articles">
<% personal_articles[0..4].each do |article| %>
<%= render '_article', :article => article %>
<% end %>
</ul>
<a href="/personal/articles/" class="more">More &raquo;</a>
</div>
</section>
<section id="flickr">
<header>
<h1><a href="http://www.flickr.com/photos/wezm/">Recent Photos</a>
<sup><a href="http://api.flickr.com/services/feeds/photos_public.gne?id=40215689@N00&lang=en-us&format=atom"><img src="/images/feed-icon.svg" class="feed-icon" width="12" height="12" alt="Feed Icon" /></a></sup>
</h1>
</header>
<ul class="inline"></ul>
<a href="http://www.flickr.com/photos/wezm/" class="more">More &raquo;</a>
</section>
<%= render '_footer' %>
<script id="image-template" type="text/x-handlebars-template">
<li> <li>
<a href="{{href}}" rel="prettyPhoto[flickr]"><img src="{{src}}" alt="{{alt}}" /></a> <a href="https://readrust.net/">
<img src="/images/read-rust.svg" >Read Rust
</a>
<p>Curated posts from the Rust community.</p>
</li> </li>
</script> <li>
<a href="http://bsd-ci.com/">
<img src="/images/bsd-ci.svg" >BSD CI
</a>
<p>Continuous integration on BSD operating systems.</p>
</li>
<li>
<a href="https://binarytrance.com/apps/symbolmate">
<img src="/images/symbolmate.png" >SymbolMate
</a>
<p>iPhone and iPad app for finding symbols and emoji.</p>
</li>
<li>
<a href="http://bitcannon.net/">
<svg id="bookmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="#85144b">
<path d="M6 2 L26 2 L26 30 L16 24 L6 30 Z"></path>
</svg>Bit Cannon
</a>
<p>A blog about operating system exploration.</p>
</li>
<li>
<a href="https://linkedlist.org/">
<svg id="i-link" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
<path d="M18 8 C18 8 24 2 27 5 30 8 29 12 24 16 19 20 16 21 14 17 M14 24 C14 24 8 30 5 27 2 24 3 20 8 16 13 12 16 11 18 15" />
</svg>Linked List
</a>
<p>A personal knowledge base.</p>
</li>
</ul>
<a href="/projects/" class="more text-right">More &raquo;</a>
</section>
</main>
<%= render '_footer' %>
</body> </body>
</html> </html>

23
output/images/bsd-ci.svg Normal file
View file

@ -0,0 +1,23 @@
<svg width="32" height="32" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>logo</title>
<desc>Created using Figma</desc>
<g id="Canvas" transform="translate(-72 0)">
<clipPath id="clip-0" clip-rule="evenodd">
<path d="M 72 0L 104 0L 104 32L 72 32L 72 0Z" fill="#FFFFFF"/>
</clipPath>
<g id="logo" clip-path="url(#clip-0)">
<g id="Vector">
<use xlink:href="#path0_fill" transform="translate(93.551 7)" fill="#FFBB20"/>
</g>
<g id="Vector">
<use xlink:href="#path0_fill" transform="translate(82.7755 7)" fill="#F26711"/>
</g>
<g id="Vector">
<use xlink:href="#path0_fill" transform="translate(72 7)" fill="#990000"/>
</g>
</g>
</g>
<defs>
<path id="path0_fill" d="M 8.35918 0L 0 0L 2.0898 8.5L 0 17L 8.35918 17L 10.449 8.5L 8.35918 0Z"/>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 824 B

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 9.513 100 80" enable-background="new 0 9.513 100 80.976" xml:space="preserve"><path d="M23.948,36.979h12.999v-3.166H23.948V36.979z M36.947,40.148H13.836v3.167h23.111V40.148z M36.947,46.48H13.836v3.168
h23.111V46.48z M36.947,52.814H13.836v3.164h23.111V52.814z M36.947,59.15H13.836v3.167h23.111V59.15z"/><g><path d="M97.389,9.513H67.1c-9.907,0-14.75,2.332-17.104,4.75c-2.35-2.418-7.194-4.75-17.101-4.75H2.605
C1.163,9.513,0,10.697,0,12.146v71.695c0,1.447,1.162,2.627,2.605,2.627h0.287h16.09h13.913c6.393,0,12.778,2.734,12.841,3.069
h0.038c1.299,0.971,1.307,0.951,2.605,0.951h3.466c1.321,0,1.387,0.021,2.565-1.215c0.21-0.361,6.815-2.806,12.688-2.806h13.91
h16.096h0.283c1.446,0,2.611-1.18,2.611-2.627V12.145C100,10.697,98.835,9.513,97.389,9.513z M46.071,19.039v65.646
c0,0-5.558-3.068-13.056-3.068c-1.837,0-27.741,0-27.741,0V14.37c0,0,25.903,0,27.741,0C47.529,14.37,46.071,19.039,46.071,19.039z
M78.909,55.998c-3.661,2.902-4.688,4.712-5.863,5.885c-1.172-1.173-2.154-3.045-5.862-5.885c-3.579-2.726-8.21-6.544-8.21-11.724
c0-7.61,9.381-10.537,14.072-3.5c4.688-7.038,14.073-4.111,14.073,3.555C87.119,49.515,82.434,53.211,78.909,55.998z"/><path d="M23.948,36.979h12.999v-3.166H23.948V36.979z M36.947,40.148H13.836v3.167h23.111V40.148z M36.947,46.48H13.836v3.168
h23.111V46.48z M36.947,52.814H13.836v3.164h23.111V52.814z M36.947,59.15H13.836v3.167h23.111V59.15z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -1,24 +0,0 @@
jQuery(function () {
var image_template = Handlebars.compile($('#image-template').html());
function populate_flickr(data, text_status) {
var ul = $("#flickr ul");
ul.empty();
jQuery.each($('photo', data), function(i, obj) {
var photo = $(obj);
var image = {
href: photo.attr('url_z'),
src: '/images/photos.jpg?20120121',
alt: photo.attr('title')
};
var li = $(image_template(image));
$('img', li).css('left', (i * -75) + 'px');
li.css("background-position", (i * -75) + 'px -75px');
ul.append(li);
});
$("a[rel^='prettyPhoto']").prettyPhoto({theme: "facebook"});
};
// Populate Flickr
jQuery.get("/photos.xml?20111208", {}, populate_flickr);
});