├── .eleventyignore ├── .gitignore ├── README.md ├── src ├── blog │ ├── index.md │ ├── posts.json │ ├── hotreload-with-ruby-on-rails-7.md │ ├── ruby-on-rails-7-with-ajax-axios.md │ ├── 2022-hamburg-marathon-rookie-run.md │ ├── rails-7-with-bootstrap-css.md │ └── 7-days-fasting-on-water.md ├── assets │ └── images │ │ ├── gs.png │ │ └── rails7-bootstrap-cover.png ├── _includes │ └── layouts │ │ ├── blog_index.njk │ │ ├── post.njk │ │ └── base.njk ├── index.html └── pages │ └── cv.html ├── google08bfa90b99e82e76.html ├── package.json ├── .eleventyComputed.js ├── OpenCode.md ├── .eleventy.js └── profile.txt /.eleventyignore: -------------------------------------------------------------------------------- 1 | _site/ 2 | node_modules/ 3 | README.md 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _site/ 2 | node_modules/ 3 | .opencode/ 4 | .env 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # gs.github.io 2 | 3 | 4 | run: 5 | npm run dev 6 | -------------------------------------------------------------------------------- /src/blog/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Blog 3 | layout: blog_index.njk 4 | --- 5 | -------------------------------------------------------------------------------- /google08bfa90b99e82e76.html: -------------------------------------------------------------------------------- 1 | google-site-verification: google08bfa90b99e82e76.html -------------------------------------------------------------------------------- /src/assets/images/gs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gs/gs.github.io/main/src/assets/images/gs.png -------------------------------------------------------------------------------- /src/blog/posts.json: -------------------------------------------------------------------------------- 1 | { 2 | "_11tyComputed": { 3 | "permalink": "/blog/{{ title | slug }}/index.html" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/assets/images/rails7-bootstrap-cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gs/gs.github.io/main/src/assets/images/rails7-bootstrap-cover.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gs-github-io-blog", 3 | "version": "1.0.0", 4 | "devDependencies": { 5 | "@11ty/eleventy": "^3.0.0" 6 | }, 7 | "scripts": { 8 | "build": "eleventy", 9 | "dev": "eleventy --serve" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.eleventyComputed.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | eleventyComputed: { 3 | permalink: data => { 4 | if (data.page && data.page.inputPath && data.page.inputPath.startsWith('./blog/') && data.title) { 5 | return `/blog/${data.title.replace(/\s+/g, '-').replace(/[^a-zA-Z0-9\-]/g, '').toLowerCase()}/index.html`; 6 | } 7 | return null; 8 | }, 9 | }, 10 | tags: ["blogPosts"] 11 | }; -------------------------------------------------------------------------------- /OpenCode.md: -------------------------------------------------------------------------------- 1 | # OpenCode Reference 2 | 3 | ## Build, Lint, Test Commands 4 | - Build: `npm run build` (outputs to `_site/`) 5 | - Develop (live-reload server): `npm run dev` 6 | - Deploy: `git push origin main` (updates GitHub Pages automatically) 7 | 8 | ## Blog Management 9 | - To add a post: add a .md file in `blog/` with frontmatter (title, date, description). 10 | - Images: place in `images/` or `blog/images/`, reference with `/images/...` or `/blog/images/...` in Markdown. 11 | - Blog posts are auto-discovered and sorted (newest first). URL: `/blog/{{ post-title }}` 12 | 13 | ## Code Style Guidelines 14 | - HTML and templates: use Bootstrap 5 (CDN) for layout, match `index.html` styling. 15 | - Indent with 2 spaces. 16 | - Use semantic HTML5 and double quotes for attributes. 17 | - Blog posts: Markdown with YAML frontmatter for title/date/description. 18 | - All images use `alt` attributes. 19 | - No secrets in code. 20 | - Keep site fast and minimal; do not add heavy JS frameworks. -------------------------------------------------------------------------------- /.eleventy.js: -------------------------------------------------------------------------------- 1 | module.exports = function(eleventyConfig) { 2 | // Passthrough copy for assets 3 | eleventyConfig.addPassthroughCopy("src/assets"); 4 | eleventyConfig.addPassthroughCopy("src/blog/images"); 5 | 6 | // Add permalink for CV page 7 | eleventyConfig.addCollection("cv", function(collectionApi) { 8 | return collectionApi.getFilteredByGlob("src/pages/cv.html"); 9 | }); 10 | 11 | // Date filter 12 | eleventyConfig.addFilter("date_ymd", function(value) { 13 | if (!value) return ''; 14 | const date = new Date(value); 15 | return date.toISOString().slice(0, 10); 16 | }); 17 | 18 | // Blog collection 19 | eleventyConfig.addCollection("blogPosts", function(collectionApi) { 20 | return collectionApi.getFilteredByGlob("src/blog/*.md") 21 | .filter(post => !post.data.draft && !post.inputPath.endsWith('src/blog/index.md')); 22 | }); 23 | 24 | return { 25 | dir: { 26 | input: "src", 27 | includes: "_includes", 28 | layouts: "_includes/layouts", 29 | data: "_data", 30 | output: "_site" 31 | }, 32 | templateFormats: ["njk", "md", "html"], 33 | markdownTemplateEngine: "njk", 34 | htmlTemplateEngine: "njk", 35 | dataTemplateEngine: "njk" 36 | }; 37 | }; -------------------------------------------------------------------------------- /src/blog/hotreload-with-ruby-on-rails-7.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "HotReload with Ruby On Rails 7" 3 | date: 2022-10-17 4 | description: "How to enable hot-reload in Ruby on Rails 7 using hotwire-livereload and Redis." 5 | layout: post.njk 6 | --- 7 | 8 | At [deliverists.io](http://www.deliverists.io) we build custom software and deliver quality products to our clients. Some time ago, we worked on a project with ClojureScript. 9 | 10 | There are many benefits to this language, but today I want to focus on the feature called `hot-reload`. The idea is super simple, yet powerful: the web page is reloaded on file save. This small but useful feature saved me a few keystrokes and allowed me to stay focused in the editor while seeing immediate changes in the browser. 11 | 12 | As you can see above, without moving out from my editor, the page reloads and I can see the changes immediately! Now… let's replicate that behavior in Ruby on Rails 7. 13 | 14 | --- 15 | 16 | ### Let's quickly build a new Ruby on Rails app 17 | 18 | ```sh 19 | gem install rails 20 | rails new test-app --css tailwind 21 | cd test-app 22 | ./bin/dev 23 | ``` 24 | 25 | --- 26 | 27 | ### Then we need to do a few configuration changes: 28 | 29 | 1. **Edit `Gemfile` and add [`hotwire-livereload`](https://github.com/kirillplatonov/hotwire-livereload) gem:** 30 | 31 | ```ruby 32 | group :development do 33 | gem "hotwire-livereload" 34 | end 35 | ``` 36 | 37 | 2. **Install with bundler** 38 | 39 | ```sh 40 | bundle install 41 | ``` 42 | 43 | 3. **Run installation** 44 | 45 | ```sh 46 | rails livereload:install 47 | ``` 48 | 49 | 4. **Install Redis (macOS with Homebrew)** 50 | 51 | ```sh 52 | brew install redis 53 | ``` 54 | 55 | 5. **Run Redis** 56 | 57 | ```sh 58 | brew services restart redis 59 | ``` 60 | 61 | 6. **Run Rails** 62 | 63 | ```sh 64 | ./bin/dev 65 | ``` 66 | 67 | Edit the file and see the changes! 68 | 69 | No more switching windows, hitting F5! That's a live and time saver. 70 | 71 | --- 72 | 73 | Have fun and keep coding, 74 | 75 | [Grzegorz](http://www.grzegorz-smajdor.com), founder of [deliverists.io](http://www.deliverists.io) 76 | -------------------------------------------------------------------------------- /src/_includes/layouts/blog_index.njk: -------------------------------------------------------------------------------- 1 | {% extends "layouts/base.njk" %} 2 | {% block content %} 3 |
4 |
5 |

Blog

6 |

Insights, ideas, and updates from Grzegorz Smajdor

7 |
8 | 9 | 10 |
11 |
12 |
13 | All Posts 14 | Ruby on Rails 15 | Development 16 | Personal 17 |
18 |
19 |
20 | 21 |
22 | {% for post in collections.blogPosts | reverse %} 23 |
24 |
25 |
26 |
27 | Development 28 | {{ post.date | date_ymd }} 29 |
30 |

{{ post.data.title }}

31 |

{{ post.data.description or post.templateContent | striptags | truncate(100, true, '...') }}

32 |
33 | 36 |
37 |
38 | {% endfor %} 39 |
40 |
41 | 52 | {% endblock %} 53 | -------------------------------------------------------------------------------- /src/blog/ruby-on-rails-7-with-ajax-axios.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Ruby on Rails 7 with Ajax (axios)" 3 | date: 2022-10-29 4 | description: "Rails 7, AJAX with axios and stimulus. Fixing FormData issues." 5 | layout: post.njk 6 | --- 7 | 8 | Ruby on Rails is a fantastic framework. It’s easy to build your startup with, MVP product, and just enjoy ruby. However, it changes often, and it’s challenging to keep up with best practices. 9 | 10 | Currently, we have [turbo](https://github.com/hotwired/turbo-rails) built in, but I’m not fully up to date (yet!). 11 | 12 | Recently, I needed to make a simple AJAX request to check if a user exists. Turbo probably solves this, but I used the old approach — an HTML modal + [stimulus controller](https://github.com/hotwired/stimulus-rails) + [axios](https://axios-http.com/docs/intro): 13 | 14 | ### HTML modal 15 | ```html 16 |
17 | 18 |
19 | 20 |
21 |
22 | ``` 23 | 24 | ### Stimulus controller (check_user_email_controller.js) 25 | ```js 26 | import { Controller } from "@hotwired/stimulus" 27 | import axios from 'axios' 28 | 29 | export default class extends Controller { 30 | static targets = ['email', 'submit'] 31 | connect() { 32 | this.submitTarget.addEventListener('click', (e) => { 33 | e.preventDefault(); 34 | if (this.emailTarget.value.length === 0) { 35 | alert('Please provide an email.') 36 | } else { 37 | axios.get('api/users_by_emails', { 38 | params: { 39 | email: this.emailTarget.value 40 | }, headers: {'ACCEPT': 'application/json'} 41 | }).then(function (response) { 42 | // handle success 43 | }).catch(function (error) { 44 | // handle error 45 | }); 46 | } 47 | }); 48 | } 49 | } 50 | ``` 51 | 52 | I used `axios` for the AJAX GET request. 53 | 54 | To import axios (with importmaps): 55 | ```sh 56 | ./bin/importmap pin axios 57 | ``` 58 | 59 | And that’s it — or so I thought! 60 | 61 | ### Issue 62 | After installing the newest version (`axios@1.1.3`), AJAX stopped working and the console said: 63 | 64 | ![](https://miro.medium.com/v2/resize:fit:700/1*AEuzXh_Oy-p9gFByfQPf3w.png) 65 | 66 | ``` 67 | Failed to register controller: check-user-email (controllers/check_user_email_controller) TypeError: Cannot read properties of undefined (reading 'FormData') 68 | at index.js:162:32 69 | ``` 70 | 71 | Not sure why, but even StackOverflow couldn’t help. 72 | 73 | ### Fix 74 | You have to pin axios to version **0.27.2**: 75 | 76 | ```sh 77 | ./bin/importmap pin axios@0.27.2 78 | ``` 79 | 80 | Versions after 0.27.2 have the `FormData` issue. 81 | 82 | Not sure why newer versions break, or why Turbo could make this simpler (teach me in comments!). 83 | 84 | Happy coding! 85 | 86 | — Grzegorz 87 | -------------------------------------------------------------------------------- /src/blog/2022-hamburg-marathon-rookie-run.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "2022 — Hamburg Marathon Rookie Run" 3 | date: 2023-01-14 4 | description: "My first ever marathon in Hamburg, 2022. Story, struggle and finish. Originally published on Medium." 5 | layout: post.njk 6 | --- 7 | 8 |

9 | Marathon 10 |

11 | 12 |
Wow, we have already 2023, I finally decided to write about my first ever marathon run, which happened on 24th of April 2022. I will do my best to describe how and why I decided to run it, and what was happening with me, physically and mentally, during those 5 hours.
13 | 14 |

Btw, I’m signed up for next run — join me!

15 | 16 | ## Introduction 17 | I'm in my 40s, good health, software engineer, usually sitting at work—active for fun (running, walking, biking). Ran 10km sometimes, never did marathon prep, never followed a plan or diet. 18 | 19 | ## 1 week before the marathon 20 | April 17th, Hamburg. Saw a marathon poster—decided to run. Half marathon was booked, so I signed up for full. 21 | 22 | ## Preparation to run 23 | I rested a week before (sore calf). No other prep, just nerves! 24 | 25 | ## Marathon day 26 | Started in the last “K” block (estimate: 6h). Did quick math: “I’ll try for 5h!” 27 | 28 | **My kit:** 1 protein bar, phone, 2 Hot Wheel cars from my kids. 29 | 30 |

31 | Ready for the start 32 |

33 | 34 | ## Start + 5—10—15km 35 | Lots of cheering, crowded! I overtook people, picked somebody to follow, focused/locked in. Grabbed a banana and water for the first time while running. 36 | 37 | ## 17km — Snafu 38 | Got hungry—my pocket snack was missing (still in my backpack). Mini panic and “mental dip”. Spotted my pace-runner, snapped out of it. 39 | 40 | ## 20–25km — Family, then letdown 41 | Missed seeing my kids on the bridge. Second dip. Call with my wife: “see you at the finish line!” 42 | 43 | ## 28km — Struggling 44 | Hit the wall. Stopped running, walked. Leg pain. Grit. 45 | 46 |

47 | Not fun anymore! 48 |
Not fun anymore 49 |

50 | 51 | Still going, trying not to quit. 52 | 53 |

54 | I’m done! I will just walk. 55 |
I’m done! Walking mode. 56 |

57 | 58 | ## 30–40km — Pain and Push 59 | Grabbed bananas, gels, water at food stands. Tried short runs again. Sometimes pain was worse walking than running. Just moved forward, meter by meter. 60 | 61 |

62 | Head down. 1 meter more, just 1 meter more. 63 |
Head down. 1 meter more, just 1 meter more. 64 |

65 | 66 | ## The finish (42,195m) 67 | Saw the grandstand, finish line, finally waved at my family—hi-5s and tears. Crossed the line: 4h:53m! 68 | 69 |

70 | Finish line! 71 |

72 | 73 | ## Reflections 74 | Finishing was wild—never dreamed I could do it. “Average person, not athlete.” If you care, commit, and keep going, you’ll surprise yourself. 75 | 76 | — [Grzegorz](http://www.grzegorz-smajdor.com) 77 | -------------------------------------------------------------------------------- /src/blog/rails-7-with-bootstrap-css.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Rails 7 with Bootstrap CSS" 3 | date: 2022-01-05 4 | layout: post.njk 5 | description: "Step-by-step guide to setting up Rails 7 with Bootstrap CSS and JS, and adding custom styles. Originally published on Medium." 6 | --- 7 | 8 |

9 | Rails 7 with Bootstrap CSS 10 |

11 | 12 | Recently the Rails 7 went out and it includes a lot of changes and new features. What I want to focus on is generating a new Rails 7 app with Bootstrap CSS and Bootstrap JS. 13 | 14 | If you don’t want to read the article you can watch it here. 15 | 16 | **Disclaimer:** The commands with a `:` prefix are run from inside Vim. To understand how I use Vim with Rails, check my Ruby on Rails with Vim article. 17 | 18 | ## Create new app with Bootstrap 19 | 20 | Create a new Rails app using: 21 | 22 | ``` 23 | $ rails new app-with-bootstrap --css bootstrap 24 | ``` 25 | 26 | This will generate a new Rails app and download Bootstrap CSS and JS for you. 27 | 28 | ## Run app 29 | 30 | In Rails 7, the new way of running the server is: 31 | 32 | ``` 33 | $ ./bin/dev 34 | ``` 35 | 36 | This spins up a few processes, including the server and a watcher for CSS and JS files. 37 | 38 | ## Prepare a URL path 39 | 40 | The goal is to test Bootstrap CSS and JS on http://localhost:3000/home. To do this, edit `routes.rb` and configure it: 41 | 42 | ``` 43 | :Einitializer 44 | ``` 45 | 46 | Add: 47 | 48 | ``` 49 | root 'home#index' 50 | ``` 51 | 52 | After reloading, you’ll get an exception because `home_controller` isn’t defined yet. Let’s fix that. 53 | 54 | ## Generate controller home 55 | 56 | Generate the controller: 57 | 58 | ``` 59 | :Generate controller home 60 | ``` 61 | 62 | After refreshing, you’ll see an exception that the `index` action is missing. Add: 63 | 64 | ```ruby 65 | def index 66 | end 67 | ``` 68 | 69 | to `home_controller.rb`. 70 | 71 | Now, after refreshing, you’ll be missing the `index.html.erb` template. Create it: 72 | 73 | ``` 74 | :Eview home/index.html.erb 75 | ``` 76 | 77 | Add some text to it. When you refresh, you should see your template rendered. 78 | 79 | ## Verifying Bootstrap CSS and JS 80 | 81 | To verify Bootstrap is working, copy the modal HTML code from the Bootstrap page and paste it into your `home/index.html.erb` file. Refresh the page and click the "Launch demo modal" button—you should see the modal. 82 | 83 | ## Add custom styles 84 | 85 | To add custom styles, put your CSS in: 86 | 87 | ``` 88 | app/assets/stylesheets/custom.css 89 | ``` 90 | 91 | Then add the asset name to the Rails pipeline by editing `app/assets/config/manifest.js`: 92 | 93 | ```js 94 | //= custom.css 95 | ``` 96 | 97 | Finally, apply the styles in your application layout by editing `application.html.erb` and adding: 98 | 99 | ```erb 100 | <%= stylesheet_link_tag "custom", "data-turbo-track": "reload" %> 101 | ``` 102 | 103 | After refreshing, your modal should look different with your custom styles. 104 | 105 | --- 106 | 107 | This small tutorial guided you step by step on how to have a fully fledged Rails 7 app with Bootstrap CSS, Bootstrap JS, and your own custom styles. 108 | 109 | Watch the video version here. 110 | 111 | Have fun, 112 | 113 | Grzegorz 114 | -------------------------------------------------------------------------------- /profile.txt: -------------------------------------------------------------------------------- 1 | Contact 2 | grzegorz.smajdor@gmail.com 3 | www.linkedin.com/in/ 4 | grzegorzsmajdor (LinkedIn) 5 | grzegorz-smajdor.com (Personal) 6 | github.com/gs/watircuke (Other) 7 | github.com/maltize/sublime-text-2- 8 | ruby-tests (Other) 9 | Top Skills 10 | Training 11 | Engineering 12 | Mentoring 13 | Languages 14 | Polish (Native or Bilingual) 15 | English (Full Professional) 16 | German (Limited Working) 17 | Certifications 18 | Co-Active Coaching Fundamentals 19 | Grzegorz Smajdor 20 | Co-Founder / Mentor / Software Developer 21 | Greater Hamburg Area 22 | Summary 23 | Love to build great products and deliver value to the market. 24 | Experience 25 | Yelp 26 | Software Engineer 27 | November 2012 - Present (12 years 9 months) 28 | Hamburg Area, Germany 29 | - Lead many high scalable projects, from design to delivery. 30 | - Extending existing products and optimise their performance to fit the 31 | Enterprise businesses 32 | - Experienced in working with distributed teams across different time zones. 33 | - Experienced in building and designing RESTful services. 34 | - Worked on batches, processes, queues. 35 | - Mentoring new hires as well as experienced engineers. 36 | - Pushmaster deputy - responsible for deploying new code requests (new 37 | changes) to production 38 | - Relenge deputy - responsible for set repositories, tools for developing new 39 | services - 40 | deploying new services, changing configuration. 41 | - i18n deputy - responsible for translations workflow, extending localisations 42 | internal tools 43 | - Building real time dashboards / metrics in Splunk 44 | - Building new alerts and views for running batches / infrastructure / systems in 45 | SignalFx 46 | - Code reviews for other developers 47 | Deliverists.io 48 | Co-Founder & CTO 49 | July 2022 - Present (3 years 1 month) 50 | Custom software development agency. 51 | Page 1 of 4 52 | QYPE Gmbh 53 | Lead of Automation Tests and Ruby on Rails Developer 54 | July 2010 - November 2012 (2 years 5 months) 55 | Picking up Rails by passion and as a self learner, built an Automation Testing 56 | Tool(https://github.com/gs/watircukefm) that allowed me to become a QA 57 | Automation Lead and got me a job in an amazing startup that later was 58 | acquired and got me the opportunity to work for a company from California. 59 | Created Framework for Automate Web Testing (Cucumber + WebDriver + 60 | ROR web interface - ) 61 | Own OpenSource Project 62 | Ruby on Rails Developer 63 | November 2009 - April 2010 (6 months) 64 | Designing an application 65 | Designing and creating a database 66 | Implementing an application 67 | Setting up server machine 68 | JobPartners 69 | Software Tester 70 | January 2007 - April 2010 (3 years 4 months) 71 | Designing and implementing Automated Testing Tool using Ruby and Watir. 72 | The tool become a standard in the company and was used as an End-to-End 73 | testing tool during our main product release. 74 | Other responsibilites: 75 | Designing and executing tests 76 | Designing and running Performance Tests 77 | Creating reports using quality assurance software 78 | Participate in agile/scrum process 79 | Maintenance of QA Servers 80 | Maintenance of Application Management servers 81 | Running sanity checks on product releases 82 | Creating Test Cases, Test Scenarios 83 | Optician “Walczyk” 84 | Ruby on Rails Developer 85 | January 2009 - April 2009 (4 months) 86 | Page 2 of 4 87 | As passioned Rails Engineer, build a product tailed to the customer needs. 88 | Close work directly with client, direct communication and fully responsible for 89 | design of UI, 90 | design of API and delivery the product to the customer. 91 | PETERPOL 92 | Ruby on Rails Developer 93 | January 2008 - December 2008 (1 year) 94 | Designing an application 95 | Designing and creating a database 96 | Implementing an application 97 | Setting up the server machine 98 | FH AGA 99 | Ruby on Rails Developer 100 | June 2007 - October 2007 (5 months) 101 | Designing an application 102 | Designing and creating a database 103 | Implementing an application 104 | Setting up the server machine 105 | BenQ Poland Sp. z o. o. 106 | UMTS and Customization specialist 107 | 2006 - 2007 (1 year) 108 | Kwiaciarnia AGA 109 | Flower supplier and PHP developer 110 | February 1995 - October 2005 (10 years 9 months) 111 | - deliver flowers 112 | - buying supplies 113 | - developing www.kwiaciarnia-aga.pl in PHP 114 | Education 115 | Wyższa Szkoła Biznesu - National Louis University w Nowym Sączu 116 | Post Masters Degree Studies, Programming in Microsoft Visual 117 | Studio · (2009 - 2010) 118 | DePaul University 119 | Master of Science, Computer Science · (2003 - 2005) 120 | Page 3 of 4 121 | Wyższa Szkoła Biznesu - National Louis University w Nowym Sączu 122 | Master of Science, Computer Science · (2000 - 2005) 123 | Page 4 of 4 124 | -------------------------------------------------------------------------------- /src/_includes/layouts/post.njk: -------------------------------------------------------------------------------- 1 | {% extends "layouts/base.njk" %} 2 | {% block content %} 3 |
4 |
5 |
6 | 7 | 14 | 15 |
16 | 17 |
18 |
19 | Development 20 | {{ date | date_ymd }} 21 |
22 |

{{ title }}

23 |
24 | Grzegorz Smajdor 25 |
26 |

Grzegorz Smajdor

27 |

Software Engineer & CTO

28 |
29 |
30 |
31 | 32 | 33 |
34 | {{ content | safe }} 35 |
36 | 37 | 38 | 79 |
80 |
81 |
82 |
83 | 84 | 126 | {% endblock %} 127 | -------------------------------------------------------------------------------- /src/_includes/layouts/base.njk: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | {{ title or "Grzegorz Smajdor - Software Engineer, CTO & Mentor" }} 14 | 15 | 16 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 65 | 66 | 67 | 93 | 94 | {% block content %}{% endblock %} 95 | 96 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /src/blog/7-days-fasting-on-water.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "7 Days Fasting on Water" 3 | date: 2022-03-27 4 | description: "A personal journal and reflections on a 7-day water-only fast." 5 | layout: post.njk 6 | --- 7 | 8 | Yesterday, I just finished my challenge: **7 days fasting on water**, where I committed myself to only drink water for 7 days (no juices, no tea nor coffee and no food) and well… I survived! I have to admit that after this time, I feel much lighter (not just because I’ve lost ~5kg) but because my brain is sharper, and my taste and smell got more sensitive. I was journaling during this time and decided to share my experience. 9 | 10 | --- 11 | 12 | ## Day 1 13 | 14 | Starting strong, from morning, no food, just water… after a few hours I was hit by a big headache, even a migraine because of lack of caffeine. It was hard to focus on any mental activities so I had to do something physical and keep myself busy. I decided to do some cleaning and re-arrangement at home. 15 | Then cooking time came, I was cooking for family… the worst moment was that I couldn’t check how it tasted! I really, badly wanted to taste it… but NO! Luckily, the food was eatable — but not by me… :) 16 | When evening came, I got hungry… really hungry… everything was tempting, smelled nicely. However, the good thing was that the headache was gone! 17 | 18 | During 1st day, I think I drank 5–6 glasses of water 19 | Weight: 60.50 20 | 21 | --- 22 | 23 | ## Day 2 24 | 25 | I woke up as usual, ~5:30, there was a headache but much lighter than yesterday. I felt quite OK, but a little cold. Had to warm up some water and drink it to get warmer. 26 | All the food around me was tempting. Usually every 2nd day I run to the bakery in early morning for fresh bread and buns and prepare breakfast for kids to school. And… they smelled so nicely and tempting, but NO means NO! I drank a glass of hot water, it helped a lot. Afternoon, I was starving and would eat everything around. Evening cleaning after meals was also a pain — I would eat all the leftovers! 27 | I felt hungry during the whole day, although pretty stable. Headache was gone! Which was a great relief, however I was sweating a little bit. 28 | 29 | During 2nd day, I drank 5–6 glasses of warm water 30 | Weight: … did not check 31 | 32 | --- 33 | 34 | ## Day 3 35 | 36 | I got up this morning at 5:30am, quite refreshed. Did some meditation and around 6:15am went for a small morning run, small, as I got tired quickly and just decided to walk, as I got quickly out of breath. 37 | No headache. The whole day was pretty steady — no energy spikes. Quite calm. I have joint (knee) pain but it is not very bothersome. I felt a little revolution in my gut… but nothing serious. The energy level was steady, I did not feel any ups and downs. 38 | 39 | During 3rd day, I drank 5–6 glasses of warm water 40 | Weight: 58.7 41 | 42 | --- 43 | 44 | ## Day 4 45 | 46 | Morning quite OK, woke up ~6am this time, did some meditation. And went for a cup of warm water. Overall energy level is OK and I feel stable, but my head is playing tricks on me (I was dreaming about burger!). Basically, today I would eat everything that I can see! I have little doubts… ‘why am I doing this’, ‘what for’… as there is so much delicious food around me! I could just simply enjoy it. The most surprising thing was that I did not feel attracted to coffee. That was a BIG win! 47 | 48 | During 4th day, I drank 5–6 glasses of warm water 49 | Weight: 58.6 50 | 51 | --- 52 | 53 | ## Day 5 54 | 55 | Morning same as yesterday, same routine and interesting, feeling a lot of energy in the morning. Don’t feel like I need sleep anymore. Super light. During the day, all stable nothing special. The energy level low for physical activities but brain is working sharply. I did not feel hungry and had no urge to eat. 56 | 57 | Water: 5–6 glasses of warm water 58 | Weight: 58.40 59 | 60 | --- 61 | 62 | ## Day 6 63 | 64 | Well, 5:30am today, waking up seemed pretty easy and I got up fresh and recharged. I’m surprised how easy the wake up is. Today I feel a little cold and get chills over my skin. My hands have become quite dry and still the physical activities are quickly exhausting, but my mind is clear and I am getting a lot of tasks done, the focus and concentration are improving. 65 | 66 | Water: 5–6 glasses of warm water 67 | Weight: 56.40 68 | 69 | I’ve lost 2kg within 1 day! Could not believe that. 70 | 71 | --- 72 | 73 | ## Day 7 74 | 75 | Morning, easy at 5:40. Feeling stable and well. Body is functioning but I need to avoid activities. I get tired quickly. I’m not hungry at all, I just know that I will drink water and that will be enough for me. 76 | 77 | Water: 5–6 glasses of warm water 78 | Weight: … did not check 79 | 80 | --- 81 | 82 | ## Last day, the 8th day 83 | 84 | Great morning, 5:30 and I feel very good and full of energy. Basically daily habit, water, the same energy, no drops, no headache, no need for caffeine. All good. 85 | 86 | I know, that’s it, I’m done with fasting today and I’m going to eat. So my taste buds are starting to salivate — interesting, as I did not have this for 4 days. 87 | At noon, I decided to start my meal. This is shake made from boiled broccoli with carrots. Wow, delicious! Just one cup, not too much as my stomach had no food for 7 days. During the day drinking more glasses of warm water and the dinner same as lunch. 88 | 89 | Water: 5–6 glasses of warm water 90 | Weight: 54.80 91 | 92 | --- 93 | 94 | ## Conclusions 95 | 96 | In conclusion, I’m surprised that I was able to survive without food such a long time drinking just water. Usually I get hungry a lot and have to eat. But… this was different, firstly when I got hungry I drank water, but later in fasting I was just drinking not because I was hungry, but just I did not want to be dehydrated. You have to be careful not to starve yourself. 97 | 98 | I usually drank 2–3 coffees per day as I thought I can’t live without it, but during that time I proved myself that it’s not needed and my body is more stable without it. But still… will I be back to coffee…? ;) 99 | 100 | What is more, I’ve lost over 5 kg in a week. Mind got more clear and much easier to force myself to act, plan and execute. Got more focused. 101 | 102 | However, you have to be careful with physical activities because I quickly became breathless and could not exercise. So I gave up my morning run and cold showers. 103 | 104 | Now I will slowly get back to normal meals. For a few more days I will limit myself to cooked vegetables as soup. But I will also add avocado to them. For breakfast I plan to drink a low sodium broth (with turmeric, ginger and cinnamon) for 2–3 days. 105 | 106 | If you have any questions feel free to contact me! I wish you good luck! 107 | 108 | --- 109 | 110 | ## Disclosure 111 | 112 | Be aware, I did this fasting without any medical consultation, I did not prepare for it. I just thought about it and started the next day. Please check your health condition with your doctor before doing that. 113 | 114 | Wish you all the health, 115 | 116 | Grzegorz 117 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | Grzegorz Smajdor - Founder, CTO, Software Developer, Mentor, Consultant 19 | 20 | 21 | 28 | 29 | 30 |
31 | 32 | 58 |
59 |
60 | 61 |
62 |
63 |
64 |
65 | Grzegorz Smajdor profile picture 66 |
67 |

Hi, I'm Grzegorz Smajdor

68 |

Software Engineer, CTO & Mentor

69 |

Co-founder and CTO of Deliverists.IO - a software development agency specializing in Ruby on Rails, Python and Clojure solutions.

70 |
71 | My Services 72 | Book a Call 73 |
74 |
75 |
76 |
77 | 78 | 79 |
80 |
81 |
82 |
83 |

About Me

84 |

With over a decade of experience building web products, I've worked across startups and enterprises with distributed teams across different time zones.

85 |

I continuously build, deliver, and lead projects. My expertise enables me to successfully develop products for clients, provide consultancy for startups, and mentor engineers at various stages of their careers.

86 |

Whether you want to discuss your product, startup idea, or if you're a Junior or Senior software developer looking to enhance your career by becoming more effective and overcoming development challenges, I'm here to help.

87 |
88 |
89 |
90 |
91 | 92 | 93 |
94 |
95 |

My Services

96 |
97 |
98 |
99 |
100 |

Development & Consulting

101 |
102 |
103 |

Professional Services

104 |
    105 |
  • ✓ Product consultation and development
  • 106 |
  • ✓ Startup idea evaluation and implementation
  • 107 |
  • ✓ End-to-end product development
  • 108 |
  • ✓ Code quality improvement and best practices
  • 109 |
  • ✓ Technical problem-solving and architecture
  • 110 |
111 | Contact for Details 112 |
113 |
114 |
115 |
116 |
117 |
118 |

Mentoring 1:1

119 |
120 |
121 |

Career Growth

122 |
    123 |
  • ✓ Career advancement and challenge navigation
  • 124 |
  • ✓ Project leadership and estimation skills
  • 125 |
  • ✓ Effectiveness and time management improvement
  • 126 |
  • ✓ Team collaboration and communication skills
  • 127 |
  • ✓ Personalized guidance for your unique needs
  • 128 |
129 | Start Your Journey 130 |
131 |
132 |
133 |
134 |
135 |
136 | 137 | 138 |
139 |
140 |
141 |

Recent Articles

142 | View All 143 |
144 |
145 |
146 |
147 |
148 |
Rails 7 with Bootstrap CSS
149 |

Learn how to integrate Bootstrap with Rails 7 using the new asset pipeline.

150 |
151 | 154 |
155 |
156 |
157 |
158 |
159 |
Ruby on Rails 7 with AJAX/Axios
160 |

Implementing AJAX requests in Rails 7 using the Axios library.

161 |
162 | 165 |
166 |
167 |
168 |
169 |
170 |
Hot Reload with Ruby on Rails 7
171 |

Set up hot reloading in your Rails 7 application for a better development experience.

172 |
173 | 176 |
177 |
178 |
179 |
180 |
181 |
182 | 202 | 203 | 204 | -------------------------------------------------------------------------------- /src/pages/cv.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 61 | Grzegorz Smajdor - CV 62 | 63 | 64 | 65 | 91 | 92 |
93 |
94 |
95 |
96 |
97 | Grzegorz Smajdor profile picture 98 |
99 |

Curriculum Vitae

100 |

Software Engineer, CTO & Mentor

101 | 108 |
109 |
110 |
111 | 112 |
113 |

Quick Links

114 |
115 | Skills 116 | Work Experience 117 | Freelance Projects 118 | Education 119 | Certifications 120 |
121 |
122 |
123 | 124 | 125 |
126 |

Skills

127 |
128 |
129 | Software Development 130 | Mentoring 131 | Training 132 | Ruby on Rails 133 | Python 134 | PHP 135 | AI 136 | Automation 137 | DevOps 138 |
139 |
140 | 141 |
142 |

Work Experience

143 |
144 |
145 |

Deliverists.io - Co-Founder & CTO

146 |
147 |
148 |
149 | July 2022 - Present 150 | 3 years 1 month 151 |
152 |

We are a custom software development agency leveraging cutting-edge technologies such as AI, machine learning, and blockchain to deliver impactful solutions. Our expertise includes:

153 |
    154 |
  • AI Solutions: Tailored AI implementations to address complex business challenges.
  • 155 |
  • Technologies: Ruby on Rails, Python, and Clojure for innovative and scalable projects.
  • 156 |
  • Consultation & Mentorship: Providing strategic guidance for startups and mentoring engineers to achieve growth.
  • 157 |
158 |

We are dedicated to driving success for our clients through innovation and collaboration.

159 | 160 |
Key Projects
161 |
162 |
163 |
164 |
165 |
Swifty.so
166 |

An AI chat application enabling users to book flights, trains, and hotels for their business trips.

167 |

Automation: Fully automated integration with partners such as Benerails, Duffel API, Stripe, and Expedia.

168 |

Stack: Ruby on Rails, ReactJS, AWS, PostgreSQL

169 |
170 |
171 |
172 |
173 |
174 |
175 |
Evetly.com
176 |

A collaboration platform for scheduling events, inviting guests, organizing gifts, and more.

177 |

Integration: Features Google Maps and Stripe for seamless functionalities.

178 |

Stack: Ruby on Rails, Hotwire, PostgreSQL, Kamal

179 |
180 |
181 |
182 |
183 |
184 |
185 |
Football-Tracker.com
186 |

A Ruby on Rails application developed as a weekend side project with kids, designed to track football matches for Euro 2024.

187 |

Features: Match tracking, betting options, leaderboard

188 |

Stack: Ruby on Rails 8, Hotwire, Kamal

189 |
190 |
191 |
192 |
193 |
194 |
195 | 196 |
197 |
198 |

Yelp - Software Engineer

199 |
200 |
201 |
202 | November 2012 - Present 203 | 12 years 9 months 204 |
205 |

At Yelp, I have been instrumental in leading scalable projects and designing efficient RESTful services. My contributions include:

206 |
    207 |
  • Leadership: Mentoring engineers and managing distributed international teams.
  • 208 |
  • Metrics: Developed real-time dashboards and metrics in Splunk.
  • 209 |
  • Translation: Managed workflows as i18n deputy.
  • 210 |
211 |

My role emphasizes innovation, teamwork, and technical expertise to enhance user experiences.

212 |
213 |
214 | 215 |
216 |
217 |

QYPE Gmbh - Ruby on Rails Developer

218 |
219 |
220 |
221 | July 2010 - November 2012 222 | 2 years 5 months 223 |
224 |

During my tenure at QYPE Gmbh, I developed and contributed to:

225 |
    226 |
  • Automation Tool Development: Built an Automation Testing Tool using Cucumber, WebDriver, and Ruby on Rails interface.
  • 227 |
  • Web Automation Frameworks: Played a key role in developing frameworks for a California company post-acquisition.
  • 228 |
229 |
230 |
231 | 232 |
233 |
234 |

BenQ Poland Sp. z o. o. - UMTS and Customization Specialist

235 |
236 |
237 |
238 | 2006 - 2007 239 | 1 year 240 |
241 |

Responsible for customization and testing of UMTS mobile devices. The role involved working on advanced telecommunications technologies, ensuring product compatibility, and managing customization projects tailored to client requirements.

242 |
243 |
244 |
245 | 246 | 247 |
248 |

Freelance Projects

249 |
250 |
251 |
252 |
253 |

Optician "Walczyk"

254 |
255 |
256 |
257 | January 2009 - April 2009 258 | 4 months 259 |
260 |
Ruby on Rails Developer
261 |

Designed, built, and architected a tailored product for the client's needs. Worked closely with the client, providing feedback and iterating on designs. Fully responsible for UI design, API implementation, testing, and deploying the app successfully.

262 |
263 |
264 |
265 |
266 |
267 |
268 |

PETERPOL

269 |
270 |
271 |
272 | January 2008 - December 2008 273 | 1 year 274 |
275 |
Ruby on Rails Developer
276 |

Designed, built, and architected an application tailored to client requirements. Responsible for database creation, server setup, testing, and deploying the app. Worked in close collaboration with the client to ensure satisfaction.

277 |
278 |
279 |
280 |
281 |
282 |
283 |

FH AGA

284 |
285 |
286 |
287 | June 2007 - October 2007 288 | 5 months 289 |
290 |
PHP Developer
291 |

Designed, built, and architected an application tailored to client requirements. Responsibilities included database creation, server setup, testing, and deploying the app. Collaborated closely with the client to iterate and deliver a successful product.

292 |
293 |
294 |
295 |
296 |
297 | 298 | 299 |
300 |

Education

301 |
302 |
303 |
304 |
305 |

DePaul University

306 |
307 |
308 |

Master of Science

309 |

Computer Science

310 |

2003 - 2005

311 |
312 |
313 |
314 |
315 |
316 |
317 |

Wyższa Szkoła Biznesu - NLU

318 |
319 |
320 |

Master of Science

321 |

Computer Science

322 |

2000 - 2005

323 |
324 |
325 |
326 |
327 |
328 |
329 |

Wyższa Szkoła Biznesu - NLU

330 |
331 |
332 |

Post Masters Degree Studies

333 |

Programming in Microsoft Visual Studio

334 |

2009 - 2010

335 |
336 |
337 |
338 |
339 |
340 | 341 | 342 |
343 |

Certifications

344 |
345 |
346 |
347 | 348 |
Co-Active Coaching Fundamentals
349 |

Professional coaching certification

350 |
351 |
352 |
353 |
354 |
355 | 356 | 357 |
362 | 363 | 364 | 384 | 385 | 386 | --------------------------------------------------------------------------------