{"id":86,"date":"2018-09-04T15:43:06","date_gmt":"2018-09-04T15:43:06","guid":{"rendered":"http:\/\/giuliopepe.com\/?page_id=86"},"modified":"2021-03-20T17:54:45","modified_gmt":"2021-03-20T17:54:45","slug":"projects","status":"publish","type":"page","link":"http:\/\/giuliopepe.com\/?page_id=86","title":{"rendered":"Projects"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Eurocovid<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"741\" height=\"511\" src=\"http:\/\/giuliopepe.com\/wp-content\/uploads\/2020\/10\/screen.png\" alt=\"\" class=\"wp-image-164\" srcset=\"http:\/\/giuliopepe.com\/wp-content\/uploads\/2020\/10\/screen.png 741w, http:\/\/giuliopepe.com\/wp-content\/uploads\/2020\/10\/screen-300x207.png 300w\" sizes=\"(max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/figure>\n\n\n\n<p><a href=\"https:\/\/github.com\/pepicello\/eurocovid\">Eurocovid<\/a> is an interactive map displaying the current number of COVID-19 cases per 100,000 people as measured in the past 14 days. The data is automatically sourced from <a href=\"https:\/\/www.ecdc.europa.eu\">ECDC<\/a> and used to update the chart whenever new data is available. The frequency for certain regions is daily, but for others is weekly. Hovering on each region displays the region name, number of normalized cases, and the data update date. The <a href=\"https:\/\/github.com\/pepicello\/eurocovid\">code<\/a> is open source and is purely written in python + dash for visualization. The regional boundaries map is based on the geoJson files from <a href=\"https:\/\/ec.europa.eu\/eurostat\/web\/gisco\/geodata\/reference-data\/administrative-units-statistical-units\/nuts\">Eurostat<\/a>. The map is currently offline, but it can be easily deployed locally.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quant-arxiv sanity preserver<\/h2>\n\n\n\n<figure class=\"wp-block-gallery columns-1 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"1127\" height=\"885\" src=\"http:\/\/giuliopepe.com\/wp-content\/uploads\/2018\/09\/Screenshot-from-2018-09-05-12-16-55.png\" alt=\"\" data-id=\"114\" class=\"wp-image-114\" srcset=\"http:\/\/giuliopepe.com\/wp-content\/uploads\/2018\/09\/Screenshot-from-2018-09-05-12-16-55.png 1127w, http:\/\/giuliopepe.com\/wp-content\/uploads\/2018\/09\/Screenshot-from-2018-09-05-12-16-55-300x236.png 300w, http:\/\/giuliopepe.com\/wp-content\/uploads\/2018\/09\/Screenshot-from-2018-09-05-12-16-55-768x603.png 768w, http:\/\/giuliopepe.com\/wp-content\/uploads\/2018\/09\/Screenshot-from-2018-09-05-12-16-55-1024x804.png 1024w\" sizes=\"(max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p><a href=\"https:\/\/github.com\/pepicello\/quant-arxiv-sanity-preserver\">Quant-arxiv sanity preserver<\/a> is an academic paper management system aimed at simplifying and enhancing the job of being up to date in the quantitative finance literature, without having to scroll through tens of publications every day or decipher the ugly arXiv email digest which provides no indication of the relevance of each new paper. The platform allows to save, discuss and filter papers from <a href=\"https:\/\/arxiv.org\/archive\/q-fin\">arXiv \/q-fin<\/a> by showing the most popular papers every day and recommending new ones based on the papers saved in the library by the user. The project is open source, the code is available on <a href=\"https:\/\/github.com\/pepicello\/quant-arxiv-sanity-preserver\">GitHub<\/a>, and it is an adaptation to the world of quant finance of the already popular <a href=\"http:\/\/arxiv-sanity.com\">arxiv-sanity-preserver<\/a> by Andrej Karpathy. I am aiming to expand the source of papers beyond arXiv and add an email digest with customized frequency to provide updates only on relevant papers and reduce the clutter. Behind the scenes, TFIDF vectors are created to cluster papers and SVMs are trained for all users. The platform is currently offline, due to high hosting costs, but the code is free and open-source on <a href=\"https:\/\/github.com\/pepicello\/quant-arxiv-sanity-preserver\">GitHub<\/a>.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Library of Words<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/libraryofwords.info\/\"><img loading=\"lazy\" decoding=\"async\" width=\"1782\" height=\"1067\" src=\"http:\/\/giuliopepe.com\/wp-content\/uploads\/2018\/09\/Screenshot-from-2018-09-05-12-22-39.png\" alt=\"\" class=\"wp-image-116\" srcset=\"http:\/\/giuliopepe.com\/wp-content\/uploads\/2018\/09\/Screenshot-from-2018-09-05-12-22-39.png 1782w, http:\/\/giuliopepe.com\/wp-content\/uploads\/2018\/09\/Screenshot-from-2018-09-05-12-22-39-300x180.png 300w, http:\/\/giuliopepe.com\/wp-content\/uploads\/2018\/09\/Screenshot-from-2018-09-05-12-22-39-768x460.png 768w, http:\/\/giuliopepe.com\/wp-content\/uploads\/2018\/09\/Screenshot-from-2018-09-05-12-22-39-1024x613.png 1024w\" sizes=\"(max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><\/figure>\n\n\n\n<p>The <a href=\"http:\/\/giuliopepe.com\/libraryofwords\">Library of Words<\/a>\u00a0is a digital collection of pages filled with every possible combination of 320 words in the English language. The library starts with a page containing the single first word &#8220;a&#8221; and finishes with a page containing the last word &#8220;zyzzyvas&#8221;, repeated 320 times. The dictionary used in the library contains 443437 words from the English language. This means that every book, thought, love story, news tragedy, war, biography, scientific discovery or truth about the universe which has ever been written with those English words, or is yet to be written, is already present in this library. The concept of the Library of Words is based on the short story <em>La biblioteca de Babel<\/em> by Argentinian author and librarian Jorge Luis Borges. In the book, the library consisted of repeated adjacent hexagonal rooms with shelves on four walls, containing books filled with every possible combination of 29 characters (26 letters plus period, comma and space). In 2015, Jonathan Basile created a <a href=\"http:\/\/libraryofbabel.info\">digital version<\/a> of the library using a base-29 conversion system and a pseudo-random number generator to link a hypothetical book location with the text in the book. In the Library of Words I revisited Borges&#8217; idea and used a similar system to Basile&#8217;s algorithm to produce its pages.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">ShingleBot<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/shinglebot.com\"><img loading=\"lazy\" decoding=\"async\" width=\"979\" height=\"513\" src=\"http:\/\/giuliopepe.com\/wp-content\/uploads\/2018\/09\/Screenshot-from-2018-09-05-12-12-46.png\" alt=\"\" class=\"wp-image-113\" srcset=\"http:\/\/giuliopepe.com\/wp-content\/uploads\/2018\/09\/Screenshot-from-2018-09-05-12-12-46.png 979w, http:\/\/giuliopepe.com\/wp-content\/uploads\/2018\/09\/Screenshot-from-2018-09-05-12-12-46-300x157.png 300w, http:\/\/giuliopepe.com\/wp-content\/uploads\/2018\/09\/Screenshot-from-2018-09-05-12-12-46-768x402.png 768w\" sizes=\"(max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><\/figure>\n\n\n\n<p><a href=\"http:\/\/giuliopepe.com\/shinglebot\">ShingleBot<\/a> is more humorous side project I came up with while playing with the Library of Words. Knowing that human language <a href=\"https:\/\/www.ncbi.nlm.nih.gov\/pmc\/articles\/PMC4176592\/\">follows a simple mathematical form<\/a> &#8211; known as Zipf&#8217;s law &#8211; I was wondering how hard it would be to create semi-intelligible sentences by just using the Zipf&#8217;s distribution and few grammatical rules. The result is a generator of n-grams of words &#8211; aka shingles &#8211; which can lead to funny sentences. This is by far not the best way to achieve natural language. There are better and far more realistic methods, such as\u00a0Markov chain text generators, but it was fun to build and it was surprising to achieve decent-enough results with such a simple algorithm.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bad Scientist<\/h2>\n\n\n\n<p>I used to maintain a blog writing spurious posts about science and technology. I stopped writing on this blog, but you can have a look at the archive <a href=\"https:\/\/badscientistgp.blogspot.com\/\">here<\/a>.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Grep Linux<\/h2>\n\n\n\n<p>I also used to maintain a blog documenting my journey through self-learning how to operate various distributions of Linux, sharing various tips and tricks in BASH and beyond. I do not maintain the blog any longer, but you can look through the archive <a href=\"http:\/\/greplinuxgp.blogspot.com\/\">here<\/a>.<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eurocovid Eurocovid is an interactive map displaying the current number of COVID-19 cases per 100,000 people as measured in the past 14 days. The data is automatically sourced from ECDC and used to update the chart whenever new data is available. The frequency for certain regions is daily, but for others is weekly. Hovering on &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/giuliopepe.com\/?page_id=86\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Projects&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-86","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/giuliopepe.com\/index.php?rest_route=\/wp\/v2\/pages\/86"}],"collection":[{"href":"http:\/\/giuliopepe.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/giuliopepe.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/giuliopepe.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/giuliopepe.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=86"}],"version-history":[{"count":13,"href":"http:\/\/giuliopepe.com\/index.php?rest_route=\/wp\/v2\/pages\/86\/revisions"}],"predecessor-version":[{"id":177,"href":"http:\/\/giuliopepe.com\/index.php?rest_route=\/wp\/v2\/pages\/86\/revisions\/177"}],"wp:attachment":[{"href":"http:\/\/giuliopepe.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=86"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}