From b80d292d41c1c433b7cd2235dddb8cef202c3f5b Mon Sep 17 00:00:00 2001 From: Panos Sakkos Date: Thu, 16 Jul 2015 01:21:35 +0200 Subject: [PATCH] Tag and pagination support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug fix: don’t include js for share buttons if not in the post page. --- _config.yml | 7 +- _includes/js.html | 78 ++++++++++--------- _includes/{blog.html => latest-post.html} | 2 +- _includes/navigation.html | 27 ++++--- _layouts/blog.html | 28 +++++-- _layouts/index.html | 6 +- _layouts/post.html | 2 +- _layouts/tag.html | 43 ++++++++++ .../2015-06-27-blogging-like-a-hacker.markup | 35 +++++++-- ...earned-from-assembling-a-3d-printer.markup | 52 +++++++++++-- .../2015-07-05-personal-jekyll-theme.markup | 20 +++-- _posts/2015-07-11-ads.markup | 53 +++++++++++++ about.html | 11 ++- blog.html | 4 +- blog/index.html | 6 ++ index.html | 1 + readme.markdown | 6 +- tags/hardware.html | 6 ++ tags/jekyll.html | 6 ++ tags/software.html | 6 ++ 20 files changed, 315 insertions(+), 84 deletions(-) rename _includes/{blog.html => latest-post.html} (89%) create mode 100644 _layouts/tag.html create mode 100644 _posts/2015-07-11-ads.markup create mode 100644 blog/index.html create mode 100644 tags/hardware.html create mode 100644 tags/jekyll.html create mode 100644 tags/software.html diff --git a/_config.yml b/_config.yml index 88e502979..470bff5f2 100755 --- a/_config.yml +++ b/_config.yml @@ -26,6 +26,9 @@ background-img: "/img/intro-bg.jpg" me-img: "/img/me.jpg" # Blog variables +paginate: 15 + +paginate_path: "blog/page:num" post-preview-words: 128 @@ -65,9 +68,9 @@ social: - title: "github" url: "https://github.com/PanosSakkos" - title: "linkedin" - url: "https://no.linkedin.com/in/PanosSakkos" + url: "http://no.linkedin.com/in/PanosSakkos" - title: "youtube" - url: "https://youtube.com/c/PanosSakkos" + url: "http://youtube.com/c/PanosSakkos" - title: "soundcloud" url: "https://soundcloud.com/psakkos/" diff --git a/_includes/js.html b/_includes/js.html index 197d818c0..64a590cde 100755 --- a/_includes/js.html +++ b/_includes/js.html @@ -21,47 +21,51 @@ {% endif %} +{% if page.section-type == "post" %} + -{% if site.twitter-share %} - -{% endif %} - -{% if site.fb-share %} -
- -{% endif %} + {% if site.twitter-share %} + + {% endif %} - - -{% if site.disqus-shortname %} - + {% if site.fb-share %} +
+ + {% endif %} + + + + {% if site.disqus-shortname %} + + + - + + {% endif %} - /* * * DON'T EDIT BELOW THIS LINE * * */ - (function () { - var s = document.createElement('script'); s.async = true; - s.type = 'text/javascript'; - s.src = '//' + disqus_shortname + '.disqus.com/count.js'; - (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s); - }()); - {% endif %} diff --git a/_includes/blog.html b/_includes/latest-post.html similarity index 89% rename from _includes/blog.html rename to _includes/latest-post.html index 4a8ecce14..0ef22269a 100644 --- a/_includes/blog.html +++ b/_includes/latest-post.html @@ -14,7 +14,7 @@

{{ post.date | date_to_string }} {{ post.content | truncatewords: site.post-preview-words | markdownify }} -

View more posts

+

View more posts

diff --git a/_includes/navigation.html b/_includes/navigation.html index ff9fc0fe9..b90b6de6d 100755 --- a/_includes/navigation.html +++ b/_includes/navigation.html @@ -5,7 +5,7 @@ - {% if page.name == "index.html" %} + {% if page.section-type == "index" %} {% else %} @@ -20,32 +20,37 @@ - {% for p in site.pages_list %} - {% if page.name == "index.html" %} - + {% if page.section-type == "index" %} + + + {% for p in site.pages_list %}
  • {{ p[0] }}
  • - {% else %} - {% if page.name == 'blog.html' and p[0] == "Blog" %} + {% endfor %} + + {% else %} + + {% for p in site.pages_list %} + {% if page.section-type == "blog" and p[0] == "Blog" %}
  • {{ p[0] }}
  • {% elsif p[0] == "Blog" %}
  • - {{ p[0] }} + {{ p[0] }}
  • {% else %}
  • {{ p[0] }}
  • {% endif %} - {% endif %} - {% endfor %} + {% endfor %} + + {% endif %} + - - diff --git a/_layouts/blog.html b/_layouts/blog.html index 00cfd55dc..d31ca0984 100644 --- a/_layouts/blog.html +++ b/_layouts/blog.html @@ -11,12 +11,30 @@
    - {{ page.content | markdownify }} + {{ page.content | markdownify }} - {% for post in site.posts %} -

    {{ post.date | date_to_string }} . {{ post.category }} . {{ post.title }} Comments

    - {% endfor %} + {% for post in paginator.posts %} +

    {{ post.date | date_to_string }} . {{ post.category }} . {{ post.title }} Comments

    + {% endfor %} + +
    @@ -24,7 +42,7 @@

    {{ post.date | date_to_string }} . {{ p
    - {% include social-buttons.html %} + {% include social-buttons.html %}
    diff --git a/_layouts/index.html b/_layouts/index.html index 6033c87a5..3757cbff1 100755 --- a/_layouts/index.html +++ b/_layouts/index.html @@ -10,14 +10,14 @@ {% include header.html %} {% for page in site.pages %} - + {% if page.section-type == "about" %} {% include about.html %} - {% elsif page.section-type == "blog" %} + {% elsif page.section-type == "latest-post" %} - {% include blog.html %} + {% include latest-post.html %} {% elsif page.section-type == "career" %} diff --git a/_layouts/post.html b/_layouts/post.html index 3e19b3afd..12205c429 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -15,7 +15,7 @@

    {{ page.title }}

    {{ page.date | date_to_string }} . {{ page.category }} . Comments

    {% for tag in page.tags %} - #{{ tag }} + #{{ tag }} {% endfor %}

    diff --git a/_layouts/tag.html b/_layouts/tag.html new file mode 100644 index 000000000..3e243c2be --- /dev/null +++ b/_layouts/tag.html @@ -0,0 +1,43 @@ + + + + {% include head.html %} + + + + {% include navigation.html %} + +
    +
    +
    + +
    +
    + {% assign tag = page.title %} +

    #{{ tag }}

    + {% for post in site.posts %} + {% if post.tags contains tag %} +

    {{ post.date | date_to_string }} . {{ post.category }} . {{ post.title }} Comments

    + {% endif %} + {% endfor %} +
    +
    + +
    +
    +
    + +
    +
    +
    + {% include social-buttons.html %} +
    +
    +
    + + {% include footer.html %} + + {% include js.html %} + + + diff --git a/_posts/2015-06-27-blogging-like-a-hacker.markup b/_posts/2015-06-27-blogging-like-a-hacker.markup index 8c341cf74..9620f56ed 100644 --- a/_posts/2015-06-27-blogging-like-a-hacker.markup +++ b/_posts/2015-06-27-blogging-like-a-hacker.markup @@ -1,17 +1,40 @@ --- layout: post +section-type: post title: Blogging Like a Hacker category: tech +tags: [ 'jekyll' ] --- -I don't remember exactly how many blogs I created the past years, but this one feels like the one. I had one blog on Tumblr and three or four on Wordpress. Tumblr's brand didn't align with my vision of my blog. I wanted a truly personal blog. A blog where I could share my thoughts mainly on technology but at the same time, keep it open to explore other areas. For example, at some point I might wanted to blog about music or personal thoughts on a viral and important matter, you name it. Tumblr wasn't the right place for this purpose because its brand is purely recreational. On the other hand, Wordpress had a more elastic brand. You can use it for whatever purpose you want, but it was too complicated for me and of course the the output blog was too heavy, given how little control you have on the generated code. Moreover, migrating a blog was a pain in the ass. After creating and deleting several blogs, I gave up Wordpress. One week ago a friend told me about Jekyll and I decided to give it a try. An easy decision, given my zero options at the time. +I don't remember exactly how many blogs I created the past years, but this one feels like the one. +I had one blog on Tumblr and three or four on Wordpress. +Tumblr's brand didn't align with my vision of my blog. +I wanted a truly personal blog. +A blog where I could share my thoughts mainly on technology but at the same time, keep it open to explore other areas. +For example, at some point I might wanted to blog about music or personal thoughts on a viral and important matter, you name it. Tumblr wasn't the right place for this purpose, because its brand is purely recreational. On the other hand, Wordpress has a more elastic brand. You can use it for whatever purpose you want, but it was too complicated for me and of course the produced code was too heavy, given how little control you have on the generated code. Moreover, migrating a blog was a pain in the ass. After creating and deleting several blogs, I gave up Wordpress. One week ago a friend told me about Jekyll and I decided to give it a try. +An easy decision, given my zero options at the time. -First of all, its origins are in GitHub, a company that I really appreciate and support. My personal opinion about GitHub is that they changed our field, by transforming the day-to-day interaction with the best version control system into a User Experience. Git is complicated but powerfull and GitHub's client Apps for Mac and Windows made it easy and playful to use. Also their web access promoted coding as a social network, which was ingenious because it worked as a motivation for people to open source their work and help others. Back to Jekyll. Yes, reading that it was created in GitHub was more than enought for me to invest my time on it. And yes, Jekyll needs some time invested, given that it's not a CMS which means that you have to get your hands dirty. +First of all, its origins are in GitHub, a company that I really appreciate and support. +My personal opinion about GitHub is that they changed our field, by transforming the day-to-day interaction with the best version control system into a UX. +Git is complicated but powerful and GitHub's client Apps for Mac and Windows made it easy and playful to use. +Also their web access promoted coding as a social network, which was ingenious because it worked as a motivation for people to open-source their work and help others. +Back to Jekyll. Yes, reading that it was created in GitHub was more than enough for me to invest my time on it. +And yes, Jekyll needs some time invested on it, given that it's not a CMS, which means that you have to get your hands dirty. -I started from the official documentation, but soon I realized that it would be more fun to not reinvent the wheel, but fork an existing open source blog that I liked. I searched a few themes, chose the Timeline and started playing with it. Most of Jekyll themes are sleek and simple, but Timeline won me because of the Timeline Career page (duh). Also I loved the white on black text, because it improves significantly the reading experience and my vision was to create a website/blog that people would enjoy to spend a few minutes on it without getting tired. The first day that I spent on Jekyll was to understand how it works and the result was to just replace existing placeholders and variables to create my Timeline. But that wasn't enought, I needed a blog. I couldn't spend more than one day at the time, so I just published it for free on GitHub Pages. I hadn't used GitHub Pages for a while, so I had forgoten how awesome it is to just push your changes to origin/master and update your website out of the box. Also I was thrilled that I was able to use Emacs as my editor. My geek inside me was overwhelmed. +I started from the official documentation, +but soon I realized that it would be more fun to not reinvent the wheel, +but fork an existing open-source blog that I liked. +I searched a few themes, chose the Timeline and started playing with it. +Timeline is a mashup of the popular Agency and Grayscale themes. +Most Jekyll themes are sleek and mobile first responsive, +but Timeline won me because of the Career page Timeline (duh). +Also I loved the white on black text, because it improves significantly the reading experience and my vision was to create a website/blog that people would enjoy to spend a few minutes on it without getting tired. +The first day that I spent on Jekyll was to understand how it works and the result was to just replace existing placeholders and variables to create my Timeline. But that wasn't enough, I needed a blog. I couldn't spend more than one day at the time, so I just published it for free on GitHub Pages. I hadn't used GitHub Pages for a while, so I had forgoten how awesome it is to just push your changes to origin/master and get your website deployed with them out of the box. Also I was thrilled that I was able to use Emacs as my editor. My geek inside me was overwhelmed. The only downside with GitHub Pages, is that they don't allow dynamic pages (yes, Jekyll is producing static pages!), for security reasons. -One week later, I was able to spend one more day on it. The goal was to somehow integrate the Blogging feature in the Timeline theme, but preety soon I realized that Timeline's Career functionality was hijacking the Blogging capabilities of Jekyll. Bummer. This feature was one of the two main reasons that I picked Timeline, but lacking the Blog feature was not an option. I wanted it badly. I tried to see if I could manipulate Jekyll in order to support both the Career and Blog features, but in order to manage that I had to hack Jekyll and I had only one day to spend on this. So I ripped off Career's generated HTML code into a file and started reading how to use Jekyll's API to create a Blog. This post was my most valuable resource. After a while and a bug fix on Timeline I was there. I opened the website from my phone to see how it renders and it was rendering as expected. By the way, I fixed a bug on my navigation bar from my bed, using my phone, by editing a source file on GitHub. How awesome is that? +One week later, I was able to spend one more day on it. The goal was to somehow integrate the Blogging feature in the Timeline theme, but pretty soon I realized that Timeline's functionality was hijacking the Blogging capabilities of Jekyll, because it was rendering the posts as timeline events. Bummer. This feature was one of the two main reasons that I picked Timeline, but lacking the Blog feature was not an option, I wanted it badly. I tried to see if I could manipulate Jekyll in order to support both the Timeline and Blog features, but in order to manage that I had to hack Jekyll and I had only one day to spend on this. So I ripped off Timeline's generated HTML code into a file and started reading how to use Jekyll's API to create a Blog. This post was my most valuable resource. After a while and a bug fix on Timeline I was there. I opened the website from my phone to see how it renders and it was rendering as expected (thanks to Bootstrap). +By the way, I fixed a bug on my navigation bar from my bed, using my phone, by editing a source file on GitHub. +How awesome is that? -Writing blog posts using Markdown and Emacs is exciting and keeping my draft posts on git branches is kick-ass. The next logical step is to make the ripped off Career page HTML autogenerated by defining custom Jekyll variables and then open source it. +Writing blog posts using Markdown and Emacs is exciting and keeping my draft posts on git branches is kick-ass. The next logical step is to make the ripped off Timeline HTML autogenerated, by defining custom Jekyll variables and then open-source it. git commit -a -m "Finished post" git checkout master @@ -19,3 +42,5 @@ Writing blog posts using n IKEA DIY 3D printer. It was gazillion of bolts, nuts, wires, motors, rods and tiny plastic pieces which I couldn't imagine that they could assemble a 3D printer. I got cold feet, believing that we will miss a piece and everything will collapse in front of us. Whenever I have dealt with hardware so far, I was always frightened. You don't call methods, you screw bolts, and they have to be screwed properly, not too tight and not too loose. It's not uncommon that testing will not be applicable, you just assemble, hit a big button and if every component works, then you call it a day. You can't copy-paste hardware, you don't have a versioning control system git to undo steps in an instance, you are on your own and mistakes can literally make your project fall apart. And on top of these, we shouldn't touch the rods with bare hands, because they would corrode. Bottom line, hardware always made me feel nervous and from the point of creating personal pet-projects, suddenly I had to collaborate with others in order to build a pyramid. It was the similar feeling that you get when you start at your first job after finishing your studies. +A few weeks ago the Garage team of my office got a little present, an IKEA DIY 3D printer. +It was zillions of bolts, nuts, wires, motors, rods and tiny plastic pieces which I couldn't imagine that they could assemble a 3D printer. +I panicked, believing that we will miss a piece and everything will collapse in front of us. +Whenever I have dealt with hardware so far, I was always frightened. +You don't call methods, you screw bolts, and they have to be screwed properly, not too tight and not too loose. +It's not uncommon that testing will not be applicable. +You will assemble, hit a big button and if every component works, then you call it a day. +You can't copy-paste hardware, you don't have a versioning control system git to undo steps in an instance, +you are on your own and mistakes can literally make your project fall apart. +And on top of these, we shouldn't touch the rods with bare hands, because they would corrode. +Hardware always made me feel nervous and from the point of creating personal pet-projects, +suddenly I had to collaborate with others in order to build a pyramid. +It was the similar feeling that you get when you start at your first job after finishing your studies. -My panic monster instructed me immediately to sort all the numbered bags per category (bolts, nuts and miscellaneous) in order to access them efficiently. Like a real life index, which proved to be valuable during the first hours. We broke down the project into a few independent branches and started following the respective instructions. These instructions were practically our software spec equivalents in our new hardware world. They were very detailed and with plenty of images, which made you wish all the software specs to be like these. Because you knew exactly what you had to do. As a result, the only way you could introduce a bug, was by missing a step of the instructions or misunderstanding one. As you can imagine, we missed and misread steps and we realized our mistakes during each individual integration. Just like in the software world. The very first mistake that we discovered was when trying to mount the control board on the box. The bottom side of the box was not placed in the correct orientation, which blocked the card reader of the board. The result of this? We spent 45 minutes of unscrewing and screwing more than 60 bolts and nuts. We made 5 more mistakes, which most of them happened because we were tired (the first session lasted 12.5 hours, following a full working day). Every one of them cost us time (in the order of half-hours) but also mentally, because we had to take several steps back in order to make one correct step forward. For the later cost, the most expensive mistake was when just before the end, we realized that 4 nuts were missing from the belt clamps. In this case we had to unmount the whole printer head in order to fix them and this process took us one more session of 3 hours. One good habit which prevented us from introducing more bugs was that we code hardware-reviewed each other. We didn't keep this safety net during the whole process, it was happening organically when we were taking breaks. +My panic monster instructed me immediately to sort all the numbered bags per category (bolts, nuts and miscellaneous) in order to access them efficiently. +Like a real life index, which proved to be valuable during the first hours. +We broke down the project into a few independent branches and started following the respective instructions. +These instructions were practically our software spec equivalents in our new hardware world. +They were very detailed and with plenty of images, which made you wish all the software specs to be like these. +Because you knew exactly what you had to do. +As a result, the only way you could introduce a bug, was by missing a step of the instructions or misunderstanding one. +As you can imagine, we missed and misread steps and we realized our mistakes during each individual integration. +Just like in the software world. +The very first mistake that we discovered was when trying to mount the control board on the box. +The bottom side of the box was not placed in the correct orientation, which blocked the card reader of the board. +The result of this? +We spent 45 minutes of unscrewing and screwing more than 60 bolts and nuts. +We made 5 more mistakes, which most of them happened because we were tired (the first session lasted 12.5 hours, following a full working day). +Every one of them cost us time (in the order of half-hours) but also mentally, because we had to take several steps back in order to make one correct step forward. +For the later cost, the most expensive mistake was when just before the end, we realized that 4 nuts were missing from the belt clamps. +In this case we had to unmount the whole printer head in order to fix them and this process took us one more session of 3 hours. +One good habit which prevented us from introducing more bugs was that we code hardware-reviewed each other. +We didn't keep this safety net during the whole process, it was happening organically when we were taking breaks. -Summarizing, being organized is usefull and it will probably prevent a few bugs. Even if you have the perfect spec, you will introduce bugs. The more careful you are, the less bugs you will introduce and the more tired you are, the less careful you become. The bugs will show up during integration. When something fails, we will fix it. It's not the end of the world, it just takes time and it hurts your motivation. And finally, you need a team, both for having fun during the creative process and as a safety net to each other. +Summarizing, being organized is useful and it will probably prevent a few bugs. +Even if you have the perfect spec, you will introduce bugs. +The more careful you are, the less bugs you will introduce and the more tired you are, the less careful you become. +The bugs will show up during integration. +When something fails, we will fix it. +It's not the end of the world, it just takes time and it hurts your motivation. +And finally, you need a team, for having fun during the creative process, for agility and as a safety net to each other. ###Photos - +parts @@ -21,7 +59,7 @@ Summarizing, being organized is usefull and it will probably prevent a few bugs. Board fix - +control board @@ -29,6 +67,6 @@ Summarizing, being organized is usefull and it will probably prevent a few bugs. - +complete - +first print diff --git a/_posts/2015-07-05-personal-jekyll-theme.markup b/_posts/2015-07-05-personal-jekyll-theme.markup index 2f98d27e1..2f279db87 100644 --- a/_posts/2015-07-05-personal-jekyll-theme.markup +++ b/_posts/2015-07-05-personal-jekyll-theme.markup @@ -1,15 +1,25 @@ --- layout: post +section-type: post title: "{ Personal } Jekyll Theme" category: tech +tags: [ 'jekyll' ] --- -As I wrote before, I wanted to open source the current theme because I believe that it adds value to the existing Jekyll themes. Also, I feel that I owe it back to the community, because without the existing code that I forked, I would never have the current blog. And I love this blog. +As I wrote before, +I wanted to open-source the current theme because I believe that it adds value to the existing Jekyll themes. +Also, I feel that I owe it back to the community, because without the existing code that I forked, I would never have the current blog. +And I love this blog. -The value of *{ Personal }* is that it enables blogging in the Timeline theme (which is a mashup of the popular Agency and Grayscale themes) it personalizes more the theme by focusing on its owner, it makes it easy to customize the website from Jekyll's config and it offers a cool 404 page. +The value of *{ Personal }* is that it enables blogging in the Timeline theme +(which is a mashup of the popular Agency and Grayscale themes), +it personalizes more the theme by focusing on its owner, +it makes it easy to customize the website from Jekyll's config and it offers a cool 404 page. -The visual touches that I believe that make the theme a bit more personal, is the owner's picture in the home page, in combination with the blurred background. Moreover, Grayscale's neutral glyphicon of the header is replaced by a black and white version of the favicon. +The visual touches that I believe that make the theme a bit more personal, +is the owner's picture in the home page, and the blurred background, because it forces the eye to focus on the owner's photo. +Moreover, Grayscale's neutral glyphicon of the header is replaced by a black and white version of the favicon. -The repo lives here and it's under pull request for Jekyll Themes and indexed in Jekyll's themes wiki. +The repo lives here and it's under pull request for Jekyll Themes and indexed in Jekyll's themes wiki. Of course, the theme will evolve over the time and as soon as time permits, the blog will support discovery with hashtags. @@ -17,4 +27,4 @@ Don't forget to support the repo by starring it ;) -

    \ No newline at end of file +

    diff --git a/_posts/2015-07-11-ads.markup b/_posts/2015-07-11-ads.markup new file mode 100644 index 000000000..b25672c09 --- /dev/null +++ b/_posts/2015-07-11-ads.markup @@ -0,0 +1,53 @@ +--- +layout: post +section-type: post +title: "Ad Hell" +category: tech +tags: [ 'software' ] +--- +I never click on ads, because I don't see any value in them. +During the last ten years I clicked (intentionally) on literally one ad from a wallet company. +But, this company would be also my first result in my (incognito) Google search. +And I was actually planning to buy a slim card wallet, I didn't start googling because of the ad. +So, did I buy the product of the ad? +Yes. +Did the ad convince me to buy the product? +No. +An image of a product with a catchy phrase will never convince me to buy it. +I want to do my research and evaluate my options before buying anything. +After I evaluated a few of the "slim card wallets" Google results, I chose the one from the ad, for specific reasons, irrelevant to the displayed ad. +3650 days, 1 intentionally clicked ad, 0 value, 3 hours of my life so far wasted on closing tabs from ads that I clicked by mistake. +This is clearly a broken experience of the web. + +Have you tried to browse the web with AdBlock? +The web is just beautiful without ads. +The fact that Google removed it from Play store, +indicates that it caught their attention, which means that there is a significant number of people who vouch for an ad-less web. +Ads are killing the UX and make products look cheap. + +90% of Google's revenues come from ads, +and this makes them really aggressive. +YouTube is frustrating its users by forcing them to watch an ad before watching their video. +And until recently, Google was placing an ad at exactly the same point where the first search result was normally, but with a latency in its rendering. +As a result, I was clicking one ad on every search for several days (muscle memory). +I'm pretty sure that they made a ton of money from this hack, but they just broke even more their UX. + +Microsoft has started adding ads in its products. +Skype is wasting my pixels and my battery on ads and I was really disappointed when I read about (optionally) displaying app ads on the lockscreen of Windows 10. +Facebook has also ads, but at least they don't display them at their Messenger, WhatsApp and Instagram apps. +On the other hand, I haven't seen any ads in Apple products. +This is what I would do in any of my products. +But someone could argue that offering an ad-free paid version of it, is a better option. +This is a trend coming from smartphone apps which was also adopted by Amazon at their Kindle series, +by offering a cheaper model stuffed with ads, next to their normal model. + +If you really care about delivering a delightful experience, then you shouldn't bundle any ads to it, or at least you should compromise with the opt-in/out model. +Make your users love your product so much, that they would pay for it, like Apple, Spotify and many more companies did. +Don't forget that WhatsApp's and Instagram's value was defined by their enormous user base. +Which means that until the io bubble bursts, you can stick to a totally free of charge service, with the hope of grooming a few millions of users. +And if your users don't love your product enough to pay for it, don't blame them. +Blame yourself and improve the experience that you offer. + +P.S.: How to disable Skype ads. + +P.P.S.: Olivia pointed out "Technically, in any 10 year interval there would have been 2 leap years, therefore 3,652 days" diff --git a/about.html b/about.html index deae76c7f..605c1c9c0 100755 --- a/about.html +++ b/about.html @@ -5,6 +5,13 @@ --- ## About -Thanks for dropping by. I hope that it will not waste your time, but in case it does, at least I tried. Originally from Athens, Greece, I started my adventures in Computer Science and Technology from University of Athens where I received my Bachelor in Computer Science and Master in Software Engineering. Between those, I spent a creative year in Geneva, Switzerland where I worked at CERN as a Computer Security researcher. During my Master studies I worked as a Machine Learning researcher for the KDD lab, supervised by Dimitrios Gunopulos. During the summer of my Master studies, I spent my summer in Oslo, Norway, as an intern for Microsoft Development Center Norway, which won me and became my first working place in my post-academic life. +Thanks for dropping by. I hope that it will not waste your time, but in case it does, at least I tried. +Originally from Athens, Greece, I started my adventures in Computer Science and Technology from University of Athens where I received my Bachelor in Computer Science and Master in Software Engineering. +Between those, I spent a creative year in Geneva, Switzerland where I worked at CERN as a Computer Security researcher. +While attending my master's, I was working as a Machine Learning researcher for the KDD lab, supervised by Dimitrios Gunopulos. +During my last summer break of my studies, I moved to Oslo, Norway, as an intern for Microsoft Development Center Norway. +That place won me and became my first working place in my post-academic life. -But, apart from being a cool guy geek, I enjoy playing and composing music, messing with hardware, playing card games, yo-yoing and collecting comic books and vinyls. In general, my mind can zone out during any form of creative act. Opinions expressed here are mine. +But, apart from being a cool guy geek, +I enjoy playing and composing music, messing with hardware, playing card games, yo-yoing and collecting comic books and vinyls. +In general, my mind can zone out during any form of creative act. Opinions expressed here are mine. diff --git a/blog.html b/blog.html index 585d51875..1017128bf 100644 --- a/blog.html +++ b/blog.html @@ -1,6 +1,4 @@ --- -layout: blog -section-type: blog -title: Blog +section-type: latest-post --- ## Blog diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 000000000..71c0e28f1 --- /dev/null +++ b/blog/index.html @@ -0,0 +1,6 @@ +--- +layout: blog +section-type: blog +title: Blog +--- +##Blog diff --git a/index.html b/index.html index e2731ee53..89dbe7ff5 100755 --- a/index.html +++ b/index.html @@ -1,5 +1,6 @@ --- layout: index +section-type: index title: --- Hope you are visiting while not in your Dark Playground diff --git a/readme.markdown b/readme.markdown index 99fb48c1a..fbb1705fe 100755 --- a/readme.markdown +++ b/readme.markdown @@ -18,6 +18,8 @@ * Blogging functionality * Preview of the latest post in the home page * Archive page + * Pagination + * #tags * Facebook, Twitter and Reddit share buttons * Disqus comments * Control of your website and blog through the site's config file @@ -48,7 +50,7 @@ ## Customizing your website from the config -Even if you have no experience with Jekyll you can personalize your website from the config file (_config.yml). This section describes the available variables and how they change the content of your website. +Even if you have no experience with Jekyll you can personalize your website from the config file (\_config.yml). This section describes the available variables and how they change the content of your website. ### Favicon ```` @@ -121,7 +123,7 @@ reddit-share: True ```` ### Timeline Events -The Timeline is displayed in the Career section of the homepage. Each event consists of a date (when did the event started and ended), an image and a description. +The Timeline is displayed in the Career section of the homepage. Each event consists of a date (when did the event started and ended), an image and a description. ```` events: - image: "/img/career/microsoft.jpg" diff --git a/tags/hardware.html b/tags/hardware.html new file mode 100644 index 000000000..84003fc89 --- /dev/null +++ b/tags/hardware.html @@ -0,0 +1,6 @@ +--- +layout: tag +section-type: tag +title: hardware +--- +## Tag diff --git a/tags/jekyll.html b/tags/jekyll.html new file mode 100644 index 000000000..02131831d --- /dev/null +++ b/tags/jekyll.html @@ -0,0 +1,6 @@ +--- +layout: tag +section-type: tag +title: jekyll +--- +## Tag diff --git a/tags/software.html b/tags/software.html new file mode 100644 index 000000000..5dd0cfd03 --- /dev/null +++ b/tags/software.html @@ -0,0 +1,6 @@ +--- +layout: tag +section-type: tag +title: software +--- +## Tag