diff --git a/404.html b/404.html new file mode 100644 index 0000000..c26a70a --- /dev/null +++ b/404.html @@ -0,0 +1,78 @@ + + + + + + + + +Your awesome title | Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
+ +
+
+ + + + + + + + diff --git a/about/index.html b/about/index.html index a411654..4bf368e 100644 --- a/about/index.html +++ b/about/index.html @@ -1,54 +1,47 @@ - - - - - - About + + + + + +About | Your awesome title + + + + + + + + + + + + + + - -
+ - + - + + + - - -
+
@@ -59,20 +52,17 @@
-

This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at jekyllrb.com

+

This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at jekyllrb.com

-

You can find the source code for the Jekyll new theme at: - -jekyll - / +

You can find the source code for Minima at GitHub: +jekyll / minima

-

You can find the source code for Jekyll at - -jekyll - / +

You can find the source code for Jekyll at GitHub: +jekyll / jekyll

+
@@ -80,9 +70,7 @@
- - + diff --git a/assets/git.svg b/assets/git.svg deleted file mode 100644 index e93091e..0000000 --- a/assets/git.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/assets/linkedin.svg b/assets/linkedin.svg deleted file mode 100644 index f0976ce..0000000 --- a/assets/linkedin.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/assets/main.css b/assets/main.css index d341fb6..db9a885 100644 --- a/assets/main.css +++ b/assets/main.css @@ -140,17 +140,38 @@ pre { /** * Icons */ -.icon > svg { +.svg-icon { + width: 16px; + height: 16px; display: inline-block; - vertical-align: middle; } - .icon > svg path { - fill: #828282; } + fill: #828282; + padding-right: 5px; + vertical-align: text-top; } -.social-media-list .icon { - padding-right: 5px; } .social-media-list li + li { padding-top: 5px; } +/** + * Tables + */ +table { + margin-bottom: 30px; + width: 100%; + text-align: left; + color: #3f3f3f; + border-collapse: collapse; + border: 1px solid #e8e8e8; } + table tr:nth-child(even) { + background-color: #f7f7f7; } + table th, table td { + padding: 10px 15px; } + table th { + background-color: #f0f0f0; + border: 1px solid #dedede; + border-bottom-color: #c9c9c9; } + table td { + border: 1px solid #e8e8e8; } + /** * Site header */ @@ -280,7 +301,10 @@ pre { padding: 30px 0; } .page-heading { - font-size: 20px; } + font-size: 32px; } + +.post-list-heading { + font-size: 28px; } .post-list { margin-left: 0; diff --git a/assets/me.jpg b/assets/me.jpg new file mode 100644 index 0000000..0c0ffb7 Binary files /dev/null and b/assets/me.jpg differ diff --git a/assets/minima-social-icons.svg b/assets/minima-social-icons.svg new file mode 100644 index 0000000..f532010 --- /dev/null +++ b/assets/minima-social-icons.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/twitter.svg b/assets/twitter.svg deleted file mode 100644 index 3a85489..0000000 --- a/assets/twitter.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/css/base.css b/css/base.css index 0811aad..06c22ad 100644 --- a/css/base.css +++ b/css/base.css @@ -1,56 +1,61 @@ body { + background-color: #F5F5F5; + color: #464E46; + font-family: 'Open Sans Condensed', sans-serif; margin: 0; - padding: 0; } - body h1, body h2, body h3, body h4, body h5, body h6 { - font-family: "Raleway", sans-serif; } - body > header { + /* Panels */ } + body .panel { + width: 100vw; + height: 100vh; } + body .accent { + color: #2196F3; } + body #landing { display: flex; - padding: 0.5em 5%; - background-color: #fff; - position: fixed; - top: 0; - width: calc(100vw - 10%); } - body > header > img { - border-radius: 50%; } - body > header nav.sections { - flex: 0 1 auto; } - body > header nav.sections ul { - list-style: none; - padding: 0; } - body > header nav.sections ul li { - display: inline-block; } - body > header nav.sections ul li a { - padding: 1em; - text-decoration: none; - color: #000; - text-transform: uppercase; - font-family: 'Raleway', sans-serif; } - body > header nav.sections ul li a:first-child { - padding-left: 2em; } - body > header nav.social { + justify-content: center; + align-items: center; } + body #landing .content { display: flex; - align-items: center; - justify-content: center; - margin-left: auto; } - body > header nav.social a img { - max-height: 35px; - opacity: 0.7; - transition: 0.5s; } - body > header nav.social a:hover img { - opacity: 1; } - body > main { - max-width: 90%; - margin: 0 auto; } - body > main a { - background-color: rgba(184, 222, 255, 0.4); - text-decoration: none; - color: #000; - margin-bottom: -2px; - padding: 0 0.25em; } - body > main a:hover { - background-color: rgba(184, 222, 255, 0.8); } - body > main a:visited { - color: inherit; } - body > main aside.banner { - text-align: center; + justify-content: center; } + body #landing .content img { + border-radius: 50%; + max-width: 20%; } + body #landing .content .intro { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 1em; } + body #landing .content .intro h1 { + font-size: 4em; + margin: 0 0 0.5em 0; } + body #landing .content .intro h3 { + font-size: 1.5em; + margin: 0 0 0.5em 0; } + body #landing .content .intro p { + font-size: 1.2em; + margin: 0; } + body #landing .content .intro p .accent { + font-weight: bold; } + body #current_biz { + display: flex; + align-items: center; + flex-direction: column; } + body #current_biz > h1 { font-size: 4em; } + body #current_biz .content { + display: flex; + justify-content: flex-start; + flex-wrap: wrap; } + body #current_biz .content .card { + flex: 0 1 calc(20% - 1em); + font-size: 1.5em; + margin: 1em; } + body #current_biz .content .card .badge-accent, body #current_biz .content .card .btn-accent { + background-color: #2196F3; + transition: 0.25s; } + body #current_biz .content .card .badge { + font-size: 0.9em; + padding: 0.2em; } + body #current_biz .content .card .btn-accent { + width: 100%; } + body #current_biz .content .card .btn-accent:hover { + box-shadow: inset 1000px 0 0 0 rgba(0, 0, 0, 0.5); } diff --git a/current_work/2018/02/22/.html b/current_work/2018/02/22/.html new file mode 100644 index 0000000..5a5a08f --- /dev/null +++ b/current_work/2018/02/22/.html @@ -0,0 +1,82 @@ + + + + + + + + +TB2 & real-time news integration | Your awesome title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+ +
+

TB2 & real-time news integration

+ +
+ +
+ + +
+ + + + +
+ +
+
+ + + + + + + + diff --git a/current_work/2018/02/22/plaininbox.html b/current_work/2018/02/22/plaininbox.html new file mode 100644 index 0000000..b5e098c --- /dev/null +++ b/current_work/2018/02/22/plaininbox.html @@ -0,0 +1,82 @@ + + + + + + + + +PlainInbox | Your awesome title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+ +
+

PlainInbox

+ +
+ +
+

PlainInbox is a generalization of PlainEmail to arbitrary SMTP mailservers. The application provides a new kind of workflow that treats your inbox as a stack, reducing distraction while you process each piece of mail thrown your way.

+ +
+ + + + +
+ +
+
+ + + + + + + + diff --git a/feed.xml b/feed.xml index 4cbe5f9..c21c5a5 100644 --- a/feed.xml +++ b/feed.xml @@ -1,14 +1 @@ -Jekyll2017-12-30T00:13:11-05:00http://localhost:4000/Your awesome titleWrite an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description. -Welcome to Jekyll!2017-12-26T16:21:30-05:002017-12-26T16:21:30-05:00http://localhost:4000/jekyll/update/2017/12/26/welcome-to-jekyll<p>You’ll find this post in your <code class="highlighter-rouge">_posts</code> directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run <code class="highlighter-rouge">jekyll serve</code>, which launches a web server and auto-regenerates your site when a file is updated.</p> - -<p>To add new posts, simply add a file in the <code class="highlighter-rouge">_posts</code> directory that follows the convention <code class="highlighter-rouge">YYYY-MM-DD-name-of-post.ext</code> and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.</p> - -<p>Jekyll also offers powerful support for code snippets:</p> - -<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="k">def</span> <span class="nf">print_hi</span><span class="p">(</span><span class="nb">name</span><span class="p">)</span> - <span class="nb">puts</span> <span class="s2">"Hi, </span><span class="si">#{</span><span class="nb">name</span><span class="si">}</span><span class="s2">"</span> -<span class="k">end</span> -<span class="n">print_hi</span><span class="p">(</span><span class="s1">'Tom'</span><span class="p">)</span> -<span class="c1">#=&gt; prints 'Hi, Tom' to STDOUT.</span></code></pre></figure> - -<p>Check out the <a href="http://jekyllrb.com/docs/home">Jekyll docs</a> for more info on how to get the most out of Jekyll. File all bugs/feature requests at <a href="https://github.com/jekyll/jekyll">Jekyll’s GitHub repo</a>. If you have questions, you can ask them on <a href="https://talk.jekyllrb.com/">Jekyll Talk</a>.</p>You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve, which launches a web server and auto-regenerates your site when a file is updated. \ No newline at end of file +Jekyll2018-02-23T00:46:04-05:00http://localhost:4000/Your awesome titleWrite an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description.PlainInbox2018-02-22T22:33:16-05:002018-02-22T22:33:16-05:00http://localhost:4000/current_work/2018/02/22/plaininbox<p><strong>PlainInbox</strong> is a generalization of <a href="">PlainEmail</a> to arbitrary SMTP mailservers. The application provides a new kind of workflow that treats your inbox as a <em>stack</em>, reducing distraction while you process each piece of mail thrown your way.</p>PlainInbox is a generalization of PlainEmail to arbitrary SMTP mailservers. The application provides a new kind of workflow that treats your inbox as a stack, reducing distraction while you process each piece of mail thrown your way.TB2 &amp; real-time news integration2018-02-22T22:33:16-05:002018-02-22T22:33:16-05:00http://localhost:4000/current_work/2018/02/22/ \ No newline at end of file diff --git a/index.html b/index.html index 8fbc619..496f356 100644 --- a/index.html +++ b/index.html @@ -1,76 +1,2 @@ - - - - - - Hello! - - - - -
- - - - - - - -
- -
- - - -

My name is Marc and I am a Computer Engineering student at McGill University planning to graduate in May 2018. I am always open to hear about projects I could pitch into and would like to find full-time employment in the Toronto area starting Summer 2018. In the meantime, I would love to

- -

Formal training

- -

During my engineering training, I have worked extensively with Java, Python and C/C++, used MATLAB a handful of times and dabbled with analog and digital electronics using the Arduino and Raspberry Pi platforms. My coursework included experimentation with robotics through the Java-based Lego Mindstorms system and PIC microcontrollers/hand-soldered analog circuits, digital systems architecture using FPGAs and game development in the context of my senior design project which consists in the elaboration of a real-time news game engine for TB2: Mali’s Ancient Manuscripts, in collaboration with The Pulitzer Center.

- -

Journalism

- -

Between 2014 and 2017, I have served as Web editor at The McGill Daily, one of Canada’s oldest university publications, continually publishing since the early 1911. During my tenure, I handled web development requests related to any web content we published, and maintained the publication’s website and social media presence. I have also singlehandedly rebuild the website in the Summer of 2016 to meet new requirements from the editorial team.

- -

Since 2016, I have been involved in The Daily Publications’ Society Board of Directors, first as an editorial representative to The Daily and then as the Society’s Chairperson, starting July 2017.

- -

Teaching

- -

I have taught French for seven years at Cégep du Vieux-Montréal before starting to tutor and teach programming. I have been a Chegg Tutors tutor since 2013, providing assistance to hundreds of students with their Java, C/C++, Python, PHP, Javascript, MATLAB, Assembly and web development assignments, and taught introductory Python, Java and Web development for four semesters at the Students’ Society of McGill University’s MiniCourses program.

- -
- - - - - \ No newline at end of file +SOmething new coming soon. :) +--M \ No newline at end of file diff --git a/jekyll/update/2017/12/26/welcome-to-jekyll.html b/jekyll/update/2017/12/26/welcome-to-jekyll.html deleted file mode 100644 index 0f82ad6..0000000 --- a/jekyll/update/2017/12/26/welcome-to-jekyll.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - Welcome to Jekyll! - - - - - - -
- - - - - - - -
- -
-
-
- -
-

Welcome to Jekyll!

- -
- -
-

You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve, which launches a web server and auto-regenerates your site when a file is updated.

- -

To add new posts, simply add a file in the _posts directory that follows the convention YYYY-MM-DD-name-of-post.ext and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.

- -

Jekyll also offers powerful support for code snippets:

- -
def print_hi(name)
-  puts "Hi, #{name}"
-end
-print_hi('Tom')
-#=> prints 'Hi, Tom' to STDOUT.
- -

Check out the Jekyll docs for more info on how to get the most out of Jekyll. File all bugs/feature requests at Jekyll’s GitHub repo. If you have questions, you can ask them on Jekyll Talk.

- - -
- - -
- -
-
- - - - - - - - - diff --git a/js/base.js b/js/base.js new file mode 100644 index 0000000..e4bdc7f --- /dev/null +++ b/js/base.js @@ -0,0 +1,4 @@ +$(document).ready(( + + +) => {}); \ No newline at end of file diff --git a/js/svgDraw.js b/js/svgDraw.js new file mode 100644 index 0000000..ecd34e4 --- /dev/null +++ b/js/svgDraw.js @@ -0,0 +1,94 @@ +//helper functions, it turned out chrome doesn't support Math.sgn() +function signum(x) { + return (x < 0) ? -1 : 1; +} +function absolute(x) { + return (x < 0) ? -x : x; +} + +function drawPath(svg, path, startX, startY, endX, endY) { + // get the path's stroke width (if one wanted to be really precize, one could use half the stroke size) + var stroke = parseFloat(path.attr("stroke-width")); + // check if the svg is big enough to draw the path, if not, set heigh/width + if (svg.attr("height") < endY) svg.attr("height", endY); + if (svg.attr("width" ) < (startX + stroke) ) svg.attr("width", (startX + stroke)); + if (svg.attr("width" ) < (endX + stroke) ) svg.attr("width", (endX + stroke)); + + var deltaX = (endX - startX) * 0.15; + var deltaY = (endY - startY) * 0.15; + // for further calculations which ever is the shortest distance + var delta = deltaY < absolute(deltaX) ? deltaY : absolute(deltaX); + + // set sweep-flag (counter/clock-wise) + // if start element is closer to the left edge, + // draw the first arc counter-clockwise, and the second one clock-wise + var arc1 = 0; var arc2 = 1; + if (startX > endX) { + arc1 = 1; + arc2 = 0; + } + // draw tha pipe-like path + // 1. move a bit down, 2. arch, 3. move a bit to the right, 4.arch, 5. move down to the end + path.attr("d", "M" + startX + " " + startY + + " V" + (startY + delta) + + " A" + delta + " " + delta + " 0 0 " + arc1 + " " + (startX + delta*signum(deltaX)) + " " + (startY + 2*delta) + + " H" + (endX - delta*signum(deltaX)) + + " A" + delta + " " + delta + " 0 0 " + arc2 + " " + endX + " " + (startY + 3*delta) + + " V" + endY ); +} + +function connectElements(svg, path, startElem, endElem) { + var svgContainer= $("#svgContainer"); + + // if first element is lower than the second, swap! + if(startElem.offset().top > endElem.offset().top){ + var temp = startElem; + startElem = endElem; + endElem = temp; + } + + // get (top, left) corner coordinates of the svg container + var svgTop = svgContainer.offset().top; + var svgLeft = svgContainer.offset().left; + + // get (top, left) coordinates for the two elements + var startCoord = startElem.offset(); + var endCoord = endElem.offset(); + + // calculate path's start (x,y) coords + // we want the x coordinate to visually result in the element's mid point + var startX = startCoord.left + 0.5*startElem.outerWidth() - svgLeft; // x = left offset + 0.5*width - svg's left offset + var startY = startCoord.top + startElem.outerHeight() - svgTop; // y = top offset + height - svg's top offset + + // calculate path's end (x,y) coords + var endX = endCoord.left + 0.5*endElem.outerWidth() - svgLeft; + var endY = endCoord.top - svgTop; + + // call function for drawing the path + drawPath(svg, path, startX, startY, endX, endY); + +} + + + +function connectAll() { + // connect all the paths you want! + connectElements($("#svg1"), $("#path1"), $(".current1"), $(".current2")); + connectElements($("#svg1"), $("#path2"), $(".current2"), $(".current3")); + connectElements($("#svg1"), $("#path3"), $(".current3"), $(".current4") ); + +} + +$(document).ready(function() { + // reset svg each time + $("#svg1").attr("height", "0"); + $("#svg1").attr("width", "0"); + connectAll(); +}); + +$(window).resize(function () { + // reset svg each time + $("#svg1").attr("height", "0"); + $("#svg1").attr("width", "0"); + connectAll(); +}); \ No newline at end of file