rawfeed 0.0.1 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +21 -0
  3. data/README.md +153 -1
  4. data/_data/resume.yml +184 -0
  5. data/_includes/alert +3 -0
  6. data/_includes/chart +34 -0
  7. data/_includes/details +57 -0
  8. data/_includes/enddetails +2 -0
  9. data/_includes/endtabs +2 -0
  10. data/_includes/image +61 -0
  11. data/_includes/layout/blog_search.html +18 -0
  12. data/_includes/layout/data.liquid +8 -0
  13. data/_includes/layout/disqus.html +30 -0
  14. data/_includes/layout/footer.html +34 -0
  15. data/_includes/layout/giscus.html +21 -0
  16. data/_includes/layout/google_analytics.html +11 -0
  17. data/_includes/layout/head.html +59 -0
  18. data/_includes/layout/header.html +143 -0
  19. data/_includes/layout/maintenance.html +30 -0
  20. data/_includes/layout/paginator.html +35 -0
  21. data/_includes/socials +22 -0
  22. data/_includes/tabs +94 -0
  23. data/_includes/toc +160 -0
  24. data/_includes/video +10 -0
  25. data/_layouts/blog.html +46 -0
  26. data/_layouts/contact.html +285 -0
  27. data/_layouts/default.html +351 -0
  28. data/_layouts/error.html +15 -0
  29. data/_layouts/home.html +58 -0
  30. data/_layouts/page.html +9 -0
  31. data/_layouts/post.html +103 -0
  32. data/_layouts/resume.html +239 -0
  33. data/_layouts/tag.html +22 -0
  34. data/_layouts/tag_posts.html +27 -0
  35. data/_sass/base/_index.scss +63 -0
  36. data/_sass/base/_reset.scss +10 -0
  37. data/_sass/base/_typography.scss +0 -0
  38. data/_sass/components/_badges.scss +24 -0
  39. data/_sass/components/_button.scss +17 -0
  40. data/_sass/components/_forms.scss +42 -0
  41. data/_sass/components/_gifs.scss +5 -0
  42. data/_sass/components/_index.scss +5 -0
  43. data/_sass/components/_markdown.scss +454 -0
  44. data/_sass/includes/_footer.scss +45 -0
  45. data/_sass/includes/_header.scss +240 -0
  46. data/_sass/includes/_highlight.scss +87 -0
  47. data/_sass/includes/_index.scss +9 -0
  48. data/_sass/includes/_maintenance.scss +16 -0
  49. data/_sass/includes/_paginator.scss +22 -0
  50. data/_sass/includes/_rouge-dark.scss +81 -0
  51. data/_sass/includes/_rouge-light.scss +121 -0
  52. data/_sass/includes/_terminal.scss +208 -0
  53. data/_sass/layouts/_blog.scss +96 -0
  54. data/_sass/layouts/_contact.scss +55 -0
  55. data/_sass/layouts/_default.scss +14 -0
  56. data/_sass/layouts/_error.scss +18 -0
  57. data/_sass/layouts/_home.scss +19 -0
  58. data/_sass/layouts/_index.scss +10 -0
  59. data/_sass/layouts/_page.scss +5 -0
  60. data/_sass/layouts/_post.scss +109 -0
  61. data/_sass/layouts/_resume.scss +330 -0
  62. data/_sass/layouts/_tag-posts.scss +48 -0
  63. data/_sass/layouts/_tag.scss +22 -0
  64. data/_sass/main.scss +128 -0
  65. data/_sass/theme/_dark.scss +79 -0
  66. data/_sass/theme/_index.scss +13 -0
  67. data/_sass/theme/_light.scss +56 -0
  68. data/assets/css/style.scss +5 -0
  69. data/assets/images/avatar_back.png +0 -0
  70. data/assets/images/avatar_dark.png +0 -0
  71. data/assets/images/avatar_light.png +0 -0
  72. data/assets/images/favicon.png +0 -0
  73. data/assets/js/avatar.js +50 -0
  74. data/assets/js/default.js +148 -0
  75. data/assets/js/terminal.js +18 -0
  76. data/assets/js/toc.js +22 -0
  77. data/assets/json/blog_search.json +16 -0
  78. data/assets/vendor/bootstrap/css/bootstrap-grid.css +4124 -0
  79. data/assets/vendor/bootstrap/css/bootstrap-grid.css.map +1 -0
  80. data/assets/vendor/bootstrap/css/bootstrap-grid.min.css +7 -0
  81. data/assets/vendor/bootstrap/css/bootstrap-grid.min.css.map +1 -0
  82. data/assets/vendor/bootstrap/css/bootstrap-grid.rtl.css +4123 -0
  83. data/assets/vendor/bootstrap/css/bootstrap-grid.rtl.css.map +1 -0
  84. data/assets/vendor/bootstrap/css/bootstrap-grid.rtl.min.css +7 -0
  85. data/assets/vendor/bootstrap/css/bootstrap-grid.rtl.min.css.map +1 -0
  86. data/assets/vendor/bootstrap/css/bootstrap-reboot.css +488 -0
  87. data/assets/vendor/bootstrap/css/bootstrap-reboot.css.map +1 -0
  88. data/assets/vendor/bootstrap/css/bootstrap-reboot.min.css +7 -0
  89. data/assets/vendor/bootstrap/css/bootstrap-reboot.min.css.map +1 -0
  90. data/assets/vendor/bootstrap/css/bootstrap-reboot.rtl.css +485 -0
  91. data/assets/vendor/bootstrap/css/bootstrap-reboot.rtl.css.map +1 -0
  92. data/assets/vendor/bootstrap/css/bootstrap-reboot.rtl.min.css +7 -0
  93. data/assets/vendor/bootstrap/css/bootstrap-reboot.rtl.min.css.map +1 -0
  94. data/assets/vendor/bootstrap/css/bootstrap-utilities.css +4266 -0
  95. data/assets/vendor/bootstrap/css/bootstrap-utilities.css.map +1 -0
  96. data/assets/vendor/bootstrap/css/bootstrap-utilities.min.css +7 -0
  97. data/assets/vendor/bootstrap/css/bootstrap-utilities.min.css.map +1 -0
  98. data/assets/vendor/bootstrap/css/bootstrap-utilities.rtl.css +4257 -0
  99. data/assets/vendor/bootstrap/css/bootstrap-utilities.rtl.css.map +1 -0
  100. data/assets/vendor/bootstrap/css/bootstrap-utilities.rtl.min.css +7 -0
  101. data/assets/vendor/bootstrap/css/bootstrap-utilities.rtl.min.css.map +1 -0
  102. data/assets/vendor/bootstrap/css/bootstrap.css +10878 -0
  103. data/assets/vendor/bootstrap/css/bootstrap.css.map +1 -0
  104. data/assets/vendor/bootstrap/css/bootstrap.min.css +7 -0
  105. data/assets/vendor/bootstrap/css/bootstrap.min.css.map +1 -0
  106. data/assets/vendor/bootstrap/css/bootstrap.rtl.css +10842 -0
  107. data/assets/vendor/bootstrap/css/bootstrap.rtl.css.map +1 -0
  108. data/assets/vendor/bootstrap/css/bootstrap.rtl.min.css +7 -0
  109. data/assets/vendor/bootstrap/css/bootstrap.rtl.min.css.map +1 -0
  110. data/assets/vendor/bootstrap/js/bootstrap.bundle.js +7075 -0
  111. data/assets/vendor/bootstrap/js/bootstrap.bundle.js.map +1 -0
  112. data/assets/vendor/bootstrap/js/bootstrap.bundle.min.js +7 -0
  113. data/assets/vendor/bootstrap/js/bootstrap.bundle.min.js.map +1 -0
  114. data/assets/vendor/bootstrap/js/bootstrap.esm.js +5202 -0
  115. data/assets/vendor/bootstrap/js/bootstrap.esm.js.map +1 -0
  116. data/assets/vendor/bootstrap/js/bootstrap.esm.min.js +7 -0
  117. data/assets/vendor/bootstrap/js/bootstrap.esm.min.js.map +1 -0
  118. data/assets/vendor/bootstrap/js/bootstrap.js +5249 -0
  119. data/assets/vendor/bootstrap/js/bootstrap.js.map +1 -0
  120. data/assets/vendor/bootstrap/js/bootstrap.min.js +7 -0
  121. data/assets/vendor/bootstrap/js/bootstrap.min.js.map +1 -0
  122. data/assets/vendor/simple-jekyll-search.js +433 -0
  123. data/assets/vendor/simple-jekyll-search.min.js +6 -0
  124. data/lib/rawfeed/draft.rb +31 -0
  125. data/lib/rawfeed/installer.rb +37 -0
  126. data/lib/rawfeed/layout.rb +138 -0
  127. data/lib/rawfeed/page.rb +33 -0
  128. data/lib/rawfeed/post.rb +60 -0
  129. data/lib/rawfeed/resume.rb +59 -0
  130. data/lib/rawfeed/utils.rb +74 -0
  131. data/lib/rawfeed/version.rb +1 -1
  132. data/lib/rawfeed.rb +5 -7
  133. metadata +144 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6d2e5d358c0cc03e54b9046792970b8bd3991a45dae8e8623d8ab1a6891e021d
4
- data.tar.gz: 8193da0a776b071864677c47fec44e9b447257e9827bd37f5b9adeab72e37006
3
+ metadata.gz: 43082a78e1bebe2c53968549b49153fd41a042890a97c8ef2a6246f6e34d5721
4
+ data.tar.gz: c0bcceeb789e3f13f21456c06be92110f7cd24d368016fa2e6369b1573edb599
5
5
  SHA512:
6
- metadata.gz: 80529a3258120a6b3e9f80b44e07636c0c3ebf40935c78d701dc9b4824ac4eb07ace9b63c66e55b2e84781365c4805902195703578aa1135e31aad54f6e7dcef
7
- data.tar.gz: 9f9e911ffe04f196527754427d25fce3576f288c5470d02fd753b6ee26dff528f7be5b190493a07193a417ea4cf95cd0c2eed6cd5fbc883a9aee484bbebb96d2
6
+ metadata.gz: 176ea97f55511d81489e3a13cb520523b5a09f394c1d2b5f0cdb5fefb9b1dfff9c17762096b344e6d07b145cb202aa7771abf42dd95ce0387f4584bef4b2b842
7
+ data.tar.gz: 7e9a264722e5396bf5928108677ec010fb83e7ea6eef85f28b3ff81d6abf66f06ac9c53f8f0bfa2b44b5abf4e51ef5c7818c98eaa8c5ce30bc62dd977a043b23
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2025 William C. Canin <william.costa.canin@gmail.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md CHANGED
@@ -1,2 +1,154 @@
1
- # rawfeed
1
+ <p align="center">
2
+ <img src=".github/logo.png" alt="Rawfeed" width="150">
3
+ <br>
4
+ <small>Rawfeed — A raw Jekyll theme for minimalists</small>
5
+ <br>
6
+ <a href="https://williamcanin.github.io/rawfeed" target="_blank">Theme Preview</a>
7
+ </p>
2
8
 
9
+ # Requirements
10
+
11
+ | Required | Version | How to verify | How to install |
12
+ | -------- | ------- | ------------- | --------------------------------- |
13
+ | Git | >= 2 | `git -v` | [Git](http://git-scm.com/) |
14
+ | Ruby | >= 3.0 | `ruby -v` | [Ruby](https://www.ruby-lang.org) |
15
+ | Gem | >= 3.0 | `gem -v` | **Ruby** contains **Gem** |
16
+ | Bundler | >= 2.0 | `bundler -v` | `gem install bundler` |
17
+ | NodeJs | >= 20 | `node -v` | [NodeJS](https://nodejs.org) |
18
+ | Npm | >= 9 | `npm -v` | **NodeJS** contains **Npm** |
19
+
20
+ # Features
21
+
22
+ - [x] One-command installation (via Unix|PowerShell);
23
+ - [x] A terminal emulator on the home page with commands;
24
+ - [x] Commands for manipulating page headers, posts and drafts in markdown;
25
+ - [x] Smart floating TOC in posts;
26
+ - [x] Theme change: light/dark;
27
+ - [x] Chart in posts;
28
+ - [x] Stylized Markdown;
29
+ - [x] Avatar opens in modal with inversion animation for each different theme (light/dark);
30
+ - [x] Enables and Disables weblog;
31
+ - [x] Home page with about or blog, you decide with one command;
32
+ - [x] A quick search field on the weblog using keyword and date;
33
+ - [x] Weblog pagination;
34
+ - [x] YouTube video in weblog posts;
35
+ - [x] Social network link on the home page or by command in the terminal;
36
+ - [x] Feed in weblog;
37
+ - [x] SEO-rich website;
38
+ - [x] Entire site minified in build: html, images, css and javascript.
39
+ - [x] Maintenance page;
40
+ - [x] Comments on blog posts with Giscus or Disqus (only in production [jekyll build]);
41
+ - [x] Google Analytics (only in production [jekyll build]);
42
+
43
+ # Installation
44
+
45
+ In the terminal/Command Prompt, run the commands below according to the OS.
46
+
47
+ **Unix:**
48
+
49
+ ```shell
50
+ curl -fsSL https://raw.githubusercontent.com/williamcanin/rawfeed/refs/heads/main/tools/installer/unix/install.sh | sh
51
+ ```
52
+
53
+ **Windows:**
54
+
55
+ ```shell
56
+ iwr -useb https://raw.githubusercontent.com/williamcanin/rawfeed/refs/heads/main/tools/installer/win/install.ps1 | iex
57
+ ```
58
+
59
+ # Usage
60
+
61
+ **(1)** - Install dependencies:
62
+
63
+ ```shell
64
+ npm install
65
+ ```
66
+
67
+ **(2)** - For **rawfeed** manipulation commands, use:
68
+
69
+ ```shell
70
+ npm run help
71
+ ```
72
+
73
+ # Settings
74
+
75
+ ## Avatar
76
+
77
+ **(1)** - Create the folder directory: `assets/images`.
78
+
79
+ **(2)** - Place your website's images (.jpg|.png) inside this `assets/images` directory.
80
+
81
+ > Recommendation: Use a 4x4 image.
82
+
83
+ **(3)** - In the `_config.yml` file, in the `section: [avatar]`, change the value of "`avatar.image`"
84
+ to the name of your images. For example:
85
+
86
+ ```yml
87
+ avatar:
88
+ open: true
89
+ flip: true
90
+ # note: the image (.jpg|.png) will be searched in the directory: assets/images/
91
+ image:
92
+ front:
93
+ light: your_image_light.png
94
+ dark: your_image_dark.png
95
+ back: your_image_back.png
96
+ ```
97
+
98
+ ## Posts
99
+
100
+ Creating a blog post is very easy, first you create a draft (`npm run draft`) and after you finish
101
+ the draft, you move it to the post with the command `npm run posts`.
102
+
103
+ > Note: If you start the server (`npm run serve`), drafts will appear in posts, but they will not
104
+ go into production mode (`npm run build`).
105
+
106
+ **Comments:**
107
+
108
+ Post comments use [Giscus](https://giscus.app) or [Disqus](https://disqus.com),
109
+ configurable in the `_config.yml` file under `section: [blog]`. Whichever one you choose,
110
+ you must set the appropriate settings in the `_config.yml` file under `section: [blog]`, and
111
+ each post must have `comments: true` set.
112
+
113
+ To learn more about both, such as how to set them up, visit [Giscus](https://giscus.app) or
114
+ [Disqus](https://disqus.com).
115
+
116
+ # For developer
117
+
118
+ **Clone and install:**
119
+
120
+ ```shell
121
+ git clone https://github.com/williamcanin/rawfeed.git; cd rawfeed; npm install
122
+ ```
123
+
124
+ **Manage gem:**
125
+
126
+ **(1)** - Compile the gem:
127
+
128
+ ```shell
129
+ npm run gem
130
+ ```
131
+
132
+ **(2)** - Publish the gem:
133
+
134
+ ```shell
135
+ npm run publish
136
+ ```
137
+
138
+ For more tasks, see: `bundle exec rake --tasks`
139
+
140
+ ## Donation
141
+
142
+ Click on the image below to be redirected the donation forms:
143
+
144
+ <div class="donate">
145
+ <a href="https://github.com/williamcanin/donations/blob/main/README.md">
146
+ <img width="160" height="100" src="https://raw.githubusercontent.com/williamcanin/donations/main/svg/donate/donate-hand.svg" alt="Donations"/>
147
+ </a>
148
+ </div>
149
+
150
+ See the list of our [CONTRIBUTORS](CONTRIBUTING.md).
151
+
152
+ # License
153
+
154
+ The theme is available as open source under the terms of [this License](https://github.com/williamcanin/rawfeed/blob/dev/LICENSE.txt).
data/_data/resume.yml ADDED
@@ -0,0 +1,184 @@
1
+ # --------------------------------------------------------------------------------------------------
2
+ # Note: Two pages is acceptable for experienced professionals. Stick to the one-page rule if you
3
+ # have less than 10 years of experience, or two pages if you're senior/academic.
4
+ # Do not put exaggerated information.
5
+ # --------------------------------------------------------------------------------------------------
6
+
7
+ # section: [Full name]
8
+ full_name: John A. Doe
9
+
10
+ # section: [Photo]
11
+ photo:
12
+ space: false
13
+
14
+ # section: [Buttons]
15
+ buttons:
16
+ print:
17
+ enable: true
18
+ text: print
19
+
20
+ # ---------------------------------------- SIDEBAR -------------------------------------------------
21
+ sidebar:
22
+ # section: [Contact]
23
+ contact:
24
+ enable: true
25
+ caption: Contact
26
+ items:
27
+ - key: Email
28
+ value: contact@johndoe.com
29
+ link: #
30
+ - key: Site
31
+ value: johndoe.com
32
+ link: https://github.com/williamcanin/rawfeed
33
+ - key: Phone
34
+ value: +1 9 99999-9999
35
+ link: #
36
+ - key: GitHub
37
+ value: "@rawfeed"
38
+ link: https://github.com/williamcanin/rawfeed
39
+
40
+ # section: [Personal Details]
41
+ # IMPORTANT!!!: "Personal details" are sensitive data. For security reasons, enable it ONLY if
42
+ # you're printing it; never leave it exposed online.
43
+ personal_details:
44
+ enable: false
45
+ caption: Personal Details
46
+ items:
47
+ - title: DOB
48
+ value: 1901/01/01
49
+ - title: City
50
+ value: Boston
51
+ - title: State
52
+ value: Massachusetts
53
+ - title: Nationality
54
+ value: American
55
+ - title:
56
+ value: Valid Driver's License
57
+
58
+ # section: [Languages]
59
+ languages:
60
+ enable: true
61
+ caption: Languages
62
+ names:
63
+ - value: English
64
+ - value: Portuguese
65
+ - value: Spanish
66
+
67
+ # section: [Education]
68
+ education:
69
+ enable: true
70
+ caption: Education
71
+ section:
72
+ - degree: MSc in Informatics
73
+ time: 2014-2016
74
+ university: Ionian University
75
+ link: https://github.com/williamcanin/rawfeed
76
+
77
+ - degree: BSc in Computer Science
78
+ time: 2010-2014
79
+ university: XYZ University
80
+ link: #
81
+
82
+ # section: [Skills]
83
+ skills:
84
+ enable: true
85
+ caption: Skills
86
+ section:
87
+ - group: OS
88
+ tools: [Linux, Windows]
89
+ - group: Programming
90
+ tools: [C, Rust, Python, Javascript]
91
+ - group: Frameworks
92
+ tools: [React, Node.js]
93
+ - group: DevOps
94
+ tools: [Docker, Kubernetes]
95
+ - group: Others
96
+ tools: [Git, AWS]
97
+
98
+ # ---------------------------------------- BODY ----------------------------------------------------
99
+ body:
100
+ # section: [Sumary]
101
+ # Note: The "Sumary" should be a concise paragraph (3-4 lines) that presents your profile,
102
+ # your main expertise, and your greatest impact. It is your initial "advertisement."
103
+ sumary:
104
+ enable: true
105
+ caption: Sumary
106
+ content: |
107
+ Senior Software Engineer and Researcher with **8 years of experience** in the full systems
108
+ development lifecycle. Proficient in high-performance languages (**Rust**, **C++**, **Python**) and
109
+ front-end frameworks (**React**). Focused on systems optimization, having **reduced latency by
110
+ 20%** in new modules and worked in applied research at Microsoft.
111
+
112
+ # section: [Experience]
113
+ # Always start the bullet point with a past tense verb.
114
+ experience:
115
+ enable: true
116
+ caption: Experience
117
+ section:
118
+ - role: Software Engineer
119
+ description: Backend Optimization & Infrastructure
120
+ company: Google
121
+ link: https://about.google
122
+ time: 2020-Present
123
+ details: |
124
+ - I developed and launched **Module X**, reducing **latency by 20%** on the backend and
125
+ increasing **user satisfaction (KPIs)**.
126
+ - I improved the **CI/CD pipeline** for **Go** and **C++** by integrating **Kubernetes**
127
+ and **Docker**, speeding up deployments by **15%**.
128
+ - I led the migration of **legacy microservices** to **TypeScript** and **Angular**,
129
+ resulting in a more scalable and maintainable architecture.
130
+
131
+ - role: Researcher
132
+ description:
133
+ company: Microsoft
134
+ link: https://microsoft.com
135
+ time: 2016-2020
136
+ details: |
137
+ - I conducted research and development of **algorithm Y** (using **Python** and **TensorFlow**),
138
+ reducing the error **rate by 10%** compared to the previous solution.
139
+ - I have published two conference papers on **Machine Learning** models, contributing to the
140
+ advancement of the field of Natural Language Processing (NLP).
141
+ - I collaborated with engineering teams to deploy **Keras** and **Matlab** models in production
142
+ environments, impacting **millions of platform** users.
143
+
144
+ # section: [Publications]
145
+ # Full links will only appear in print mode. Online and PDF modes are clickable.
146
+ publications:
147
+ enable: true
148
+ caption: Publications
149
+ section:
150
+ - title: Presentation of the functionality of F47X1 chip
151
+ link: https://github.com/williamcanin/rawfeed
152
+ authors: John A. Doe, Jane Doe
153
+ conference: Conference Tech Central Park, 2016
154
+
155
+ # section: [Projects]
156
+ # Full links will only appear in print mode. Online and PDF modes are clickable.
157
+ projects:
158
+ enable: true
159
+ caption: Projects
160
+ section:
161
+ - title: Support for the F47X1 chip in the Linux kernel
162
+ link: https://github.com/williamcanin/rawfeed
163
+ details: |
164
+ - I implemented the F47X1 chip to recognize macOS applications with plug-play on USB 3.1
165
+
166
+ - title: Facial Functionality Tool in Gemini
167
+ link: #
168
+ details: |
169
+ - Together with a group of 4 people, **I conducted** research on the new version of **Gemini** in
170
+ Gemini's facial recognition on mobile.
171
+
172
+ # section: [Volunteering]
173
+ # Full links will only appear in print mode. Online and PDF modes are clickable.
174
+ volunteering:
175
+ enable: true
176
+ caption: Volunteering
177
+ section:
178
+ - role: AI Professor
179
+ company: Seeds of Tomorrow Engineering School
180
+ link: https://github.com/williamcanin/rawfeed
181
+ time: 2020-2022
182
+ details: |
183
+ - I led a class of **Computer Engineering** students in the modern **AI course**.
184
+ It was over **170 hours** of classes.
data/_includes/alert ADDED
@@ -0,0 +1,3 @@
1
+ <div class="alert alert-{{ include.type | default: 'info' }}">
2
+ {{ include.content | markdownify }}
3
+ </div>
data/_includes/chart ADDED
@@ -0,0 +1,34 @@
1
+ <canvas class="chart" id="chart-{{ include.label | slugify }}"> </canvas>
2
+
3
+ <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
4
+ <script>
5
+ document.addEventListener("DOMContentLoaded", function () {
6
+ const ctx = document.getElementById("chart-{{ include.label | slugify }}");
7
+ if (!ctx) return;
8
+ new Chart(ctx, {
9
+ type: "{{ include.type | default: 'line' }}",
10
+ data: {
11
+ labels: "{{ include.labels }}".split(","),
12
+ datasets: [{
13
+ label: "{{ include.label | default: 'Dataset' }}",
14
+ data: "{{ include.data }}".split(",").map(Number),
15
+ borderColor: "{{ include.color | default: '#00bfff' }}",
16
+ backgroundColor: "{{ include.color | default: '#00bfff' }}33",
17
+ fill: true,
18
+ tension: 0.3,
19
+ borderWidth: 2,
20
+ pointRadius: 4,
21
+ pointHoverRadius: 6
22
+ }]
23
+ },
24
+ options: {
25
+ responsive: true,
26
+ plugins: { legend: { display: true, labels: { color: '#444444' } } },
27
+ scales: {
28
+ x: { ticks: { color: '#131313' }, grid: { color: '#111111' } },
29
+ y: { ticks: { color: '#131313' }, grid: { color: '#111111' } }
30
+ }
31
+ }
32
+ });
33
+ });
34
+ </script>
data/_includes/details ADDED
@@ -0,0 +1,57 @@
1
+ <div class="details-start" data-summary="{{ include.summary | escape }}"></div>
2
+
3
+ <script>
4
+ (function(){
5
+ if (window.__jekyll_details_setup) return;
6
+ window.__jekyll_details_setup = true;
7
+
8
+ function initDetails(){
9
+ const starts = document.querySelectorAll('.details-start');
10
+ starts.forEach(start => {
11
+ const summary = start.getAttribute('data-summary') || 'Detalhes';
12
+
13
+ let end = start.nextSibling;
14
+ while(end && !(end.nodeType === 1 && end.classList.contains('details-end'))){
15
+ end = end.nextSibling;
16
+ }
17
+ if(!end) return;
18
+
19
+ let node = start.nextSibling;
20
+ const content = [];
21
+ while(node && node !== end){
22
+ const next = node.nextSibling;
23
+ if(node.nodeType === Node.ELEMENT_NODE || (node.nodeType === Node.TEXT_NODE && node.textContent.trim())){
24
+ content.push(node.cloneNode(true));
25
+ }
26
+ node = next;
27
+ }
28
+
29
+ const details = document.createElement('details');
30
+ const sum = document.createElement('summary');
31
+ sum.textContent = summary;
32
+ details.appendChild(sum);
33
+
34
+ const wrapper = document.createElement('div');
35
+ wrapper.className = 'details-content-wrapper';
36
+
37
+ content.forEach(el => wrapper.appendChild(el));
38
+
39
+ details.appendChild(wrapper);
40
+
41
+ start.parentNode.insertBefore(details, start);
42
+ let cur = start;
43
+ while(cur){
44
+ const next = cur.nextSibling;
45
+ cur.remove();
46
+ if(cur === end) break;
47
+ cur = next;
48
+ }
49
+ });
50
+ }
51
+
52
+ if(document.readyState === 'loading')
53
+ document.addEventListener('DOMContentLoaded', initDetails);
54
+ else
55
+ initDetails();
56
+ })();
57
+ </script>
@@ -0,0 +1,2 @@
1
+ <!-- enddetails -->
2
+ <div class="details-end"></div>
data/_includes/endtabs ADDED
@@ -0,0 +1,2 @@
1
+ <!-- endtabs -->
2
+ <div class="tabs-end" aria-hidden="true"></div>
data/_includes/image ADDED
@@ -0,0 +1,61 @@
1
+ {%- assign right_style = "float: right; margin-left: 10px;" -%}
2
+ {%- assign left_style = "float: left; margin-right: 10px;" -%}
3
+ {%- assign bottom_style = "margin-bottom: 15px;" -%}
4
+
5
+ {%- assign w = include.width | default: "" -%}
6
+ {%- if w != "" -%}
7
+ {%- if w contains '%' -%}
8
+ {%- assign wrapper_width = w -%}
9
+ {%- elsif w contains 'px' -%}
10
+ {%- assign wrapper_width = w -%}
11
+ {%- else -%}
12
+ {%- assign wrapper_width = w | append: 'px' -%}
13
+ {%- endif -%}
14
+ {%- else -%}
15
+ {%- assign wrapper_width = 'auto' -%}
16
+ {%- endif -%}
17
+
18
+ {%- if include.align == "center" -%}
19
+ <figure class="img-include-wrapper img-include-align-center" style="width: {{ wrapper_width }};">
20
+ <img
21
+ src="{{ include.src }}"
22
+ alt="{{ include.title | default: include.caption | escape }}"
23
+ style="display:block; width:100%; height: {{ include.height | default: 'auto' }}; border-radius: {{ include.border-radius | default: 0 }}px; border: 2px solid {{ include.border-color | default: '#ddd' }};" />
24
+ {%- if include.caption -%}
25
+ <figcaption class="img-include-caption">{{ include.caption }}</figcaption>
26
+ {%- endif -%}
27
+ </figure>
28
+
29
+ {%- elsif include.align == "right" -%}
30
+ <figure class="img-include-wrapper img-include-align-right" style="{{ right_style }} width: {{ wrapper_width }};">
31
+ <img
32
+ src="{{ include.src }}"
33
+ alt="{{ include.title | default: include.caption | escape }}"
34
+ style="display:block; width:100%; height: {{ include.height | default: 'auto' }}; border-radius: {{ include.border-radius | default: 0 }}px; border: 2px solid {{ include.border-color | default: '#ddd' }};" />
35
+ {%- if include.caption -%}
36
+ <figcaption class="img-include-caption">{{ include.caption }}</figcaption>
37
+ {%- endif -%}
38
+ </figure>
39
+
40
+ {%- elsif include.align == "left" -%}
41
+ <figure class="img-include-wrapper img-include-align-left" style="{{ left_style }} width: {{ wrapper_width }};">
42
+ <img
43
+ src="{{ include.src }}"
44
+ alt="{{ include.title | default: include.caption | escape }}"
45
+ style="display:block; width:100%; height: {{ include.height | default: 'auto' }}; border-radius: {{ include.border-radius | default: 0 }}px; border: 2px solid {{ include.border-color | default: '#ddd' }};" />
46
+ {%- if include.caption -%}
47
+ <figcaption class="img-include-caption">{{ include.caption }}</figcaption>
48
+ {%- endif -%}
49
+ </figure>
50
+
51
+ {%- else -%}
52
+ <figure class="img-include-wrapper" style="width: {{ wrapper_width }};">
53
+ <img
54
+ src="{{ include.src }}"
55
+ alt="{{ include.title | default: include.caption | escape }}"
56
+ style="display:block; width:100%; height: {{ include.height | default: 'auto' }}; border-radius: {{ include.border-radius | default: 0 }}px; border: 2px solid {{ include.border-color | default: '#ddd' }};" />
57
+ {%- if include.caption -%}
58
+ <figcaption class="img-include-caption">{{ include.caption }}</figcaption>
59
+ {%- endif -%}
60
+ </figure>
61
+ {%- endif -%}
@@ -0,0 +1,18 @@
1
+ {%- if site.blog.search.enable -%}
2
+ <div class="row blog-search" aria-hidden="true">
3
+ <div class="col-sm">
4
+ <div class="blog-search__wapper">
5
+ <strong>»</strong><input id="blog-search__input" type="text" class="blog-search__input" placeholder="{{ site.text.blog.search.placeholder }}" aria-label="{{ site.blog.search.placeholder }}">
6
+ <button id="blog-search__btn-clean" class="blog-search__btn-clean" type="button">
7
+ {{ site.text.blog.search.button_clean.text }}
8
+ </button>
9
+ </div>
10
+ </div>
11
+
12
+ <div id="blog-search__results-wrapper" class="row disabled">
13
+ <h2 class="blog-subtitle">[&nbsp;{{ site.text.blog.search.results | default: "results" }}&nbsp;]</h2>
14
+ <ul id="blog-search__results" class="row blog-list"></ul>
15
+ </div>
16
+
17
+ </div>
18
+ {%- endif -%}
@@ -0,0 +1,8 @@
1
+ {%- assign project_url = "https://github.com/williamcanin/rawfeed" -%}
2
+ {%- assign theme_name = "rawfeed" -%}
3
+ {%- assign data_cv = site.data.cv -%}
4
+ {%- assign home_url = "/" | relative_url -%}
5
+ {%- assign blog_url = "/blog/" | relative_url -%}
6
+ {%- assign search_url = "/blog/?search=open" | relative_url -%}
7
+ {%- assign tags_url = "/blog/tags/" | relative_url -%}
8
+ {%- assign feed_url = "/feed.xml" | relative_url -%}
@@ -0,0 +1,30 @@
1
+ {% if site.blog.post.comments.disqus.shortname != "" %}
2
+ <div class="row comments">
3
+ <h1 class="comments-title">[&nbsp;{{ site.text.post.comments | default: "comments" }}&nbsp;]</h1>
4
+ <div class="comments-content">
5
+ <div id="disqus_thread"></div>
6
+ <script>
7
+ /**
8
+ * RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES
9
+ */
10
+ var disqus_shortname = '{{ site.blog.post.comments.disqus.shortname }}';
11
+
12
+ // The unique URL for the discussion, usually the post's permalink.
13
+ var disqus_config = function () {
14
+ this.page.url = '{{ page.url | absolute_url }}'; // Replace with your full permalink
15
+ this.page.identifier = '{{ page.id }}'; // Unique ID for the discussion, use page.id or page.url
16
+ this.page.disable_ads = true; // disabled ads
17
+ this.page.recommendations = false; // disabled recommendations
18
+ };
19
+
20
+ (function() {
21
+ var d = document, s = d.createElement('script');
22
+ s.src = '//' + disqus_shortname + '.disqus.com/embed.js';
23
+ s.setAttribute('data-timestamp', +new Date());
24
+ (d.head || d.body).appendChild(s);
25
+ })();
26
+ </script>
27
+ <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
28
+ </div>
29
+ </div>
30
+ {% endif %}
@@ -0,0 +1,34 @@
1
+ {%- include layout/data.liquid -%}
2
+
3
+ <footer class="container-fluid fixed-bottom footer">
4
+ {%- if site.footer.top_button.enable -%}
5
+ <div class="row top">
6
+ <div class="col-sm d-flex justify-content-end">
7
+ <!-- old: <a id="top-link" class="top-link" href="#top"><i class="fa-regular fa-square-caret-up"></i></a> -->
8
+ <a id="top-link" class="top-link" href="#top">^</a>
9
+ </div>
10
+ </div>
11
+ {%- endif -%}
12
+
13
+ <div class="row footer-wrapper">
14
+
15
+ {%- if site.text.footer.copyright -%}
16
+ <div class="col-sm">
17
+ <div class="footer-copyright">{{ site.title | default: theme_name }}&nbsp;{{ site.text.footer.copyright }}</div>
18
+ </div>
19
+ {%- endif -%}
20
+
21
+ {%- if site.text.footer.message -%}
22
+ <div class="col-sm">
23
+ <div class="footer-message">{{ site.text.footer.message }}</div>
24
+ </div>
25
+ {%- endif -%}
26
+
27
+ <div class="col-sm">
28
+ <div class="footer-made-by">
29
+ Using the <a href="{{ project_url }}" target="_blank" rel="noopener noreferrer">{{ theme_name }}</a> theme for <a href="https://jekyllrb.com" target="_blank" rel="noopener noreferrer">Jekyll</a>.
30
+ </div>
31
+ </div>
32
+
33
+ </div>
34
+ </footer>
@@ -0,0 +1,21 @@
1
+ {%- if site.blog.post.comments.giscus.repo != "" and site.blog.post.comments.giscus.category_id != "" -%}
2
+ <div class="row comments">
3
+ <h1 class="comments-title">[&nbsp;{{ site.text.post.comments | default: "comments" }}&nbsp;]</h1>
4
+ <div class="row comments-content">
5
+ <script src="https://giscus.app/client.js"
6
+ data-repo="{{ site.blog.post.comments.giscus.repo }}"
7
+ data-repo-id="{{ site.blog.post.comments.giscus.repo_id }}"
8
+ data-category-id="{{ site.blog.post.comments.giscus.category_id }}"
9
+ data-mapping="{{ site.blog.post.comments.giscus.mapping | default: 'pathname' }}"
10
+ data-strict="0"
11
+ data-reactions-enabled="{{ site.blog.post.comments.giscus.reactions_enabled | default: 1 }}"
12
+ data-emit-metadata="0"
13
+ data-input-position="bottom"
14
+ data-theme="{{ site.blog.post.comments.giscus.theme_light | default: 'light' }}"
15
+ data-lang="{{ site.blog.post.comments.giscus.lang | default: 'en' }}"
16
+ crossorigin="anonymous"
17
+ async>
18
+ </script>
19
+ </div>
20
+ </div>
21
+ {%- endif -%}
@@ -0,0 +1,11 @@
1
+ <script>
2
+ if(!(window.doNotTrack === "1" || navigator.doNotTrack === "1" || navigator.doNotTrack === "yes" || navigator.msDoNotTrack === "1")) {
3
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
4
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
5
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
6
+ })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
7
+
8
+ ga('create', '{{ site.google.analytics.id }}', 'auto');
9
+ ga('send', 'pageview');
10
+ }
11
+ </script>