From b110d8ad498607117e4220acdc8d028b3d382f73 Mon Sep 17 00:00:00 2001 From: Ian Adam Naval Date: Wed, 8 Jan 2014 21:25:27 -0800 Subject: [PATCH 1/7] Simplified to two pages. --- src/server.py | 11 ---- src/static/css/about.css | 4 +- src/static/js/index.js | 109 ------------------------------------- src/templates/about.html | 48 ---------------- src/templates/base.html | 7 +-- src/templates/contact.html | 36 ------------ src/templates/index.html | 90 +++++++++++------------------- src/templates/labs.html | 15 +---- 8 files changed, 37 insertions(+), 283 deletions(-) delete mode 100644 src/static/js/index.js delete mode 100644 src/templates/about.html delete mode 100644 src/templates/contact.html diff --git a/src/server.py b/src/server.py index b5c4570..7f19ca3 100644 --- a/src/server.py +++ b/src/server.py @@ -10,17 +10,6 @@ def home(): return render_template('index.html') -@app.route('/contact') -def contact(): - return render_template('contact.html') - - - -@app.route('/about') -def about(): - return render_template('about.html') - - @app.route('/labs') def labs(): return render_template('labs.html') diff --git a/src/static/css/about.css b/src/static/css/about.css index 76ed954..ec5b479 100644 --- a/src/static/css/about.css +++ b/src/static/css/about.css @@ -8,10 +8,10 @@ img#me { float: left; } -img#me.fixed { +/*img#me.fixed { position: fixed; top: 48px; -} +}*/ #skills, #about-me, #hobbies { margin: 0; diff --git a/src/static/js/index.js b/src/static/js/index.js deleted file mode 100644 index 490c3c0..0000000 --- a/src/static/js/index.js +++ /dev/null @@ -1,109 +0,0 @@ -/** - * Gets the cummulative offset from the origin of a particular element by iteratively going through its parents. - **/ -function getCumulativeOffset(element) { - var left, top; - left = top = 0; - if (element != null && element.offsetParent) { - do { - left += element.offsetLeft; - top += element.offsetTop; - } while (element = element.offsetParent); - } - return { - x: left, - y: top - }; -}; - -/** - * Gets the scroll position. - */ -function getScrollY() { - var y = 0; - if (typeof( window.pageYOffset ) == 'number') { // Netscape - //x = window.pageXOffset; - y = window.pageYOffset; - } else if (document.body && ( document.body.scrollLeft || document.body.scrollTop)) { // DOM - //x = document.body.scrollLeft; - y = document.body.scrollTop; - } else if (document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop)) { // IE6 standards compliant mode - //x = document.documentElement.scrollLeft; - y = document.documentElement.scrollTop; - } - return y; -} - -var lastPosition = -1; - -/** - * Smoothly scrolls to a position. - **/ -function smoothScrollTo(target) { - var currentPosition = getScrollY(); - var delta = (target - currentPosition) / 6.0; - var nextStep = currentPosition + delta; - - // Check whether scrolling has been interrupted by the user. - var halted = false; - if (nextStep > lastPosition) { - halted = currentPosition > nextStep || currentPosition < lastPosition; - } else { - halted = currentPosition < nextStep || currentPosition > lastPosition; - } - - if (halted) { - lastPosition = -1; - return; - } - - window.scrollBy(0, delta); - - if (Math.abs(delta) >= 1) { - setTimeout('smoothScrollTo(' + target + ')', 50); - } else { - lastPosition = -1; - return; - } - lastPosition = currentPosition; -} - -/** - * Smoothly scrolls to an element. - */ -function scrollToElement(element) { - lastPosition = getScrollY(); - smoothScrollTo(getCumulativeOffset(document.getElementById(element)).y); -} - - -/** - * Scrolls up to the top. - */ -function scrollToTop() { - lastPosition = getScrollY(); - smoothScrollTo(0); -} - - -// Declare variables outside function for efficiency. -var nav = document.getElementById("nav"); -var me = document.getElementById("me"); -var headerHeight = getCumulativeOffset(nav).y; -if (me != null) var myHeight = getCumulativeOffset(me).y; - -/** - * Apples a CSS class to the navigation bar based on scroll position. - **/ -function onScroll() { - var scrollY = getScrollY(); - - nav.className = (scrollY > headerHeight) ? "scrolled" : "top"; - if (me != null) { - me.className = (scrollY > myHeight) ? "fixed" : ""; - } -} - -// Set up event listener. -window.onscroll = onScroll; -window.addEventListener("touchmove", onScroll, false); \ No newline at end of file diff --git a/src/templates/about.html b/src/templates/about.html deleted file mode 100644 index 150ef10..0000000 --- a/src/templates/about.html +++ /dev/null @@ -1,48 +0,0 @@ -{% extends "base.html" %} - -{% block title %} | About{% endblock %} -{% block nav_about %} class="selected" {% endblock %} -{% block extrastyle %}{% endblock %} - -{% block main %} - Picture of Ian Naval - -
-

Skills

-

General Programming

- -

Web

- -

Android

- -

Administrative

- -
-
-

About Me

-

My name is Ian. I make things with computers. Sometimes you'll find me - doing various other activities like playing the piano or ukulele, but more - often then not I am sitting in front of a screen working on my long list - of projects. Hope to see you around the Web.

-
-{% endblock main %} diff --git a/src/templates/base.html b/src/templates/base.html index d21ed17..53035ba 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -38,9 +38,9 @@
diff --git a/src/templates/index.html b/src/templates/index.html index 57bf1f1..d49f6d8 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -3,41 +3,86 @@ {% block extrastyle %}{% endblock %} {% block main %} - -
-

Portfolio

-

View Resume

-
- -
-

About

- Picture of Ian Naval +
+ Picture of Ian Naval -
+

Skills

  • Learns fast.
  • Meets deadlines.
  • Works well with teammates.
  • -
  • Clean, well-documented and efficient code.
  • -
  • Years of experience with Linux and UNIX-based Web servers.
  • -
  • Proficient in Python, JavaScript, HTML, CSS, SQL, Java, Ruby, PHP, and C++.
  • -
  • Experience with Flask, Django, node.js, and AngularJS.
  • +
  • Years of experience with Linux.
  • +
  • Well-documented and efficient code.
-
-

Facts

    -
  • Likes potatoes, music and language.
  • -
  • Received that bag of potatoes for Christmas.
  • +
  • Allergic to fish.
  • +
  • Big fan of potatoes.
  • +
  • Not allergic to shelfish.
  • Does not own those glasses.
  • +
  • Received potatoes for Christmas.
+ +
+

Technologies

+
+ Logos for HTML, CSS, JavaScript, PostgreSQL, MySQL, Python, Ruby, Java, C++, PHP, Flask, Django, Rails, Angular, Node.js, and Git +
+
-
+
+

Portfolio

+ + +
+ +
+ WPI ACM Mirrors screenshot +

WPI ACM Mirrors

+

GNU/Linux mirrors for WPI folk.

+
+ +
+ WPI ACM Website screenshot +

WPI ACM Website

+

Homepage for the WPI ACM chapter.

+
+ +
+ SMS Fixer screenshot +

SMS Fixer

+

Helps restore Android texts from Google Voice.

+
+ +
+ MathHammer screenshot +

MathHammer 40k

+

Damage stats calculator app for WarHammer 40k.

+
+ +
+ SMSpammer screenshot +

SMSpammer

+

App for spamming text messages. (With permission.)

+
+ +
+ Potato Ipsum screenshot +

Potato Ipsum

+

Lorem ipsum generator. With potatoes.

+
+ +
+
+ +

Contact

Information is on my résumé.

+

Weekly Calendar

+
{% endblock main %} diff --git a/src/templates/labs.html b/src/templates/labs.html index 071fbf9..917b25b 100644 --- a/src/templates/labs.html +++ b/src/templates/labs.html @@ -3,10 +3,9 @@ {% block title %} | Labs{% endblock %} {% block main %} -

Labs

+
+

Labs

Welcome to my lab! This where I run all my experimental stuff.

-

Click here to see what I'm - working on this very moment (if anything).

-

Active Projects

- +

Click here to see what I'm working on this very moment (if anything).

+
{% endblock main %} From e6e440d9cd66792a747822b102f0bd94eb4da68d Mon Sep 17 00:00:00 2001 From: Ian Adam Naval Date: Tue, 28 Jan 2014 01:50:46 -0500 Subject: [PATCH 5/7] Incorporated feedback from webdevRefinery. --- src/static/css/portfolio.css | 28 ++++++++++++++-- src/static/css/portfolio.scss | 32 +++++++++++++++++-- src/static/css/style.css | 22 +++++++++---- src/static/img/ian-280.jpg | Bin 0 -> 28021 bytes src/static/img/{ian.jpg => ian-original.jpg} | Bin src/templates/base.html | 10 +++--- src/templates/index.html | 22 ++++++------- src/templates/labs.html | 4 +-- 8 files changed, 87 insertions(+), 31 deletions(-) create mode 100644 src/static/img/ian-280.jpg rename src/static/img/{ian.jpg => ian-original.jpg} (100%) diff --git a/src/static/css/portfolio.css b/src/static/css/portfolio.css index 61c82e2..cb035b2 100644 --- a/src/static/css/portfolio.css +++ b/src/static/css/portfolio.css @@ -37,7 +37,7 @@ text-align: center; background-color: #e8e8e8; color: #000; - box-shadow: 4px 4px 6px #000; + box-shadow: 2px 2px 10px #0F0907; flex: 1 0 auto; } .portfolio-item p { margin: 0; @@ -45,10 +45,31 @@ /* iPhone */ @media only screen and (min-device-width: 320px) and (max-device-width: 568px) { + #header { + font-size: .8em; } + + .section { + padding: 8px; } + + .about-section { + margin: 0; + max-width: 288px; } + + .about-section ul { + padding: 0; + list-style: none; } + + .portfolio-items { + padding: 0; } + .portfolio-item { + margin: 8px 0 0; width: 256px; } - #calendar { + .technology-list img { + width: 100%; } + + #calendar, #calendar-label { display: none; } } .screenshot { margin: 0; @@ -58,7 +79,8 @@ #calendar { width: 100%; max-width: 1320px; - height: 480px; } + height: 480px; + border: 0; } /* Force image on its own line for two-column layout */ @media only screen and (min-width: 691px) and (max-width: 1054px) { diff --git a/src/static/css/portfolio.scss b/src/static/css/portfolio.scss index c0f85de..c7dfcb4 100644 --- a/src/static/css/portfolio.scss +++ b/src/static/css/portfolio.scss @@ -46,7 +46,7 @@ text-align: center; background-color: #e8e8e8; color: #000; - box-shadow: 4px 4px 6px #000; + box-shadow: 2px 2px 10px #0F0907; flex: 1 0 auto; p { @@ -59,11 +59,38 @@ @media only screen and (min-device-width : 320px) and (max-device-width : 568px) { + #header { + font-size: .8em; + } + + .section { + padding: 8px; + } + + .about-section { + margin: 0; + max-width: 288px; + } + + .about-section ul { + padding: 0; + list-style: none; + } + + .portfolio-items { + padding: 0; + } + .portfolio-item { + margin: 8px 0 0; width: 256px; } - #calendar { + .technology-list img { + width: 100%; + } + + #calendar, #calendar-label { display: none; } } @@ -78,6 +105,7 @@ and (max-device-width : 568px) { width: 100%; max-width: 1320px; height: 480px; + border: 0; } /* Force image on its own line for two-column layout */ diff --git a/src/static/css/style.css b/src/static/css/style.css index 2adaf06..fac4309 100644 --- a/src/static/css/style.css +++ b/src/static/css/style.css @@ -16,7 +16,7 @@ h1, h2, h3, h4 { /* Header */ #header { margin: 0; - padding: 16px; + padding: 16px 0 0; text-align: center; background: #222; color: #0f0; @@ -30,16 +30,19 @@ h1, h2, h3, h4 { } #tagline { - margin: 0; + margin: 0 auto; + padding: 0 0 8px; font-size: .9em; - color: #39e639; + color: #72bbfa; + border-bottom: 1px solid #fff; + width: 304px; } /* Navigation */ #nav { width: 100%; - margin: 16px 0 0; + margin: 8px 0 0; padding: 0; text-align: center; } @@ -52,13 +55,17 @@ h1, h2, h3, h4 { } #nav li { + /*width: 61px;*/ + margin: 0; display: inline-block; list-style: none; - padding: 0 1em 0; + padding: 4px 8px; + background-color: #fff; + border-radius: 2px 2px 0 0; } #nav a { - color: #b9f73e; + color: #428bca; } /* Main body */ @@ -95,6 +102,7 @@ h1, h2, h3, h4 { margin: 0; padding: .5em; clear: both; - background: #fff; + background: #222; + color: #fff; font-size: 1em; } diff --git a/src/static/img/ian-280.jpg b/src/static/img/ian-280.jpg new file mode 100644 index 0000000000000000000000000000000000000000..25210b9c9410c8caad99fae1446c1772dc438348 GIT binary patch literal 28021 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 KF>vGG>i+`U<#pcx literal 0 HcmV?d00001 diff --git a/src/static/img/ian.jpg b/src/static/img/ian-original.jpg similarity index 100% rename from src/static/img/ian.jpg rename to src/static/img/ian-original.jpg diff --git a/src/templates/base.html b/src/templates/base.html index 81e9b42..f1bfacd 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -8,17 +8,15 @@ - + {% block extrastyle %}{% endblock extrastyle %} - -