|
| 1 | +# Andrés Pérez Gil - Personal Blog |
1 | 2 |
|
| 3 | +A personal blog about engineering, big data, and philosophy, powered by Jekyll and hosted on GitHub Pages. |
| 4 | + |
| 5 | +## About |
| 6 | + |
| 7 | +This blog contains personal thoughts and opinions on technology, software engineering, and philosophical topics. Posts cover various aspects of software development, data engineering, and reflections on the impact of technology on society. |
| 8 | + |
| 9 | +## Tech Stack |
| 10 | + |
| 11 | +- **Jekyll** - Static site generator (v3.9.5 via GitHub Pages) |
| 12 | +- **GitHub Pages** - Hosting platform with automatic deployment |
| 13 | +- **Minima** - Clean and minimal Jekyll theme (v2.5) |
| 14 | +- **Kramdown** - Markdown processor |
| 15 | +- **Rouge** - Syntax highlighter for code blocks |
| 16 | + |
| 17 | +## Prerequisites |
| 18 | + |
| 19 | +Before you begin, ensure you have the following installed: |
| 20 | + |
| 21 | +- **Ruby** (version 3.1.0 or compatible with GitHub Pages) |
| 22 | +- **Bundler** (gem package manager) |
| 23 | +- **Git** (for version control) |
| 24 | + |
| 25 | +To check your Ruby version: |
| 26 | +```bash |
| 27 | +ruby --version |
| 28 | +``` |
| 29 | + |
| 30 | +To install Bundler: |
| 31 | +```bash |
| 32 | +gem install bundler |
| 33 | +``` |
| 34 | + |
| 35 | +## Local Development Setup |
| 36 | + |
| 37 | +Follow these steps to run the site locally: |
| 38 | + |
| 39 | +1. **Clone the repository:** |
| 40 | + ```bash |
| 41 | + git clone https://github.com/khnumdev/khnumdev.github.io.git |
| 42 | + cd khnumdev.github.io |
| 43 | + ``` |
| 44 | + |
| 45 | +2. **Install dependencies:** |
| 46 | + ```bash |
| 47 | + bundle install |
| 48 | + ``` |
| 49 | + |
| 50 | +3. **Run the local development server:** |
| 51 | + ```bash |
| 52 | + bundle exec jekyll serve |
| 53 | + ``` |
| 54 | + |
| 55 | +4. **Access the site:** |
| 56 | + Open your browser and navigate to `http://localhost:4000` |
| 57 | + |
| 58 | +The site will automatically reload when you make changes to most files. Note that changes to `_config.yml` require restarting the server. |
| 59 | + |
| 60 | +## Creating a New Post |
| 61 | + |
| 62 | +### File Naming Convention |
| 63 | + |
| 64 | +Posts must follow this naming pattern in the `_posts/` directory: |
| 65 | +``` |
| 66 | +YYYY-MM-DD-title.markdown |
| 67 | +``` |
| 68 | + |
| 69 | +For example: `2024-01-15-my-new-post.markdown` |
| 70 | + |
| 71 | +### Required Front Matter |
| 72 | + |
| 73 | +Every post must include front matter at the beginning of the file: |
| 74 | + |
| 75 | +```yaml |
| 76 | +--- |
| 77 | +layout: post |
| 78 | +title: "Your Post Title" |
| 79 | +date: YYYY-MM-DD HH:MM:SS +0200 |
| 80 | +tags: tag1, tag2 |
| 81 | +categories: category1, category2 |
| 82 | +--- |
| 83 | +``` |
| 84 | + |
| 85 | +### Example Post Template |
| 86 | + |
| 87 | +Create a new file in `_posts/` directory: |
| 88 | + |
| 89 | +```markdown |
| 90 | +--- |
| 91 | +layout: post |
| 92 | +title: "My Awesome Blog Post" |
| 93 | +date: 2024-01-15 14:30:00 +0200 |
| 94 | +tags: technology, programming |
| 95 | +categories: tech, tutorial |
| 96 | +--- |
| 97 | + |
| 98 | +Your content starts here. You can use **Markdown** formatting. |
| 99 | + |
| 100 | +## Subheadings |
| 101 | + |
| 102 | +- Bullet points |
| 103 | +- Are supported |
| 104 | + |
| 105 | +Code blocks with syntax highlighting: |
| 106 | + |
| 107 | +```python |
| 108 | +def hello_world(): |
| 109 | + print("Hello, World!") |
| 110 | +``` |
| 111 | + |
| 112 | +And much more! |
| 113 | +``` |
| 114 | +
|
| 115 | +### Location |
| 116 | +
|
| 117 | +All blog posts should be placed in the `_posts/` directory at the root of the repository. |
| 118 | +
|
| 119 | +## Project Structure |
| 120 | +
|
| 121 | +``` |
| 122 | +khnumdev.github.io/ |
| 123 | +├── _posts/ # Blog post markdown files |
| 124 | +├── _config.yml # Site configuration |
| 125 | +├── _site/ # Generated site (not committed) |
| 126 | +├── .gitignore # Git ignore rules |
| 127 | +├── .ruby-version # Ruby version specification |
| 128 | +├── Gemfile # Ruby dependencies |
| 129 | +├── Gemfile.lock # Locked dependency versions |
| 130 | +├── LICENSE # Project license |
| 131 | +├── README.md # This file |
| 132 | +├── 404.html # Custom 404 error page |
| 133 | +├── links.md # Links page |
| 134 | +└── tutorials.md # Tutorials page |
| 135 | +``` |
| 136 | +
|
| 137 | +### Key Files |
| 138 | +
|
| 139 | +- **`_config.yml`** - Main configuration file for site settings, author info, social links, and plugins |
| 140 | +- **`Gemfile`** - Defines Ruby gems and dependencies for the project |
| 141 | +- **`_posts/`** - Contains all blog post markdown files |
| 142 | +- **`404.html`** - Custom error page for broken links |
| 143 | +- **`links.md`** & **`tutorials.md`** - Additional site pages |
| 144 | +
|
| 145 | +## Configuration |
| 146 | +
|
| 147 | +The site is configured through `_config.yml`. Key settings include: |
| 148 | +
|
| 149 | +- **Site metadata**: Title, description, email, social usernames |
| 150 | +- **Timezone**: `Europe/Madrid` (GMT+2) |
| 151 | +- **Pagination**: 5 posts per page |
| 152 | +- **Theme**: Minima |
| 153 | +- **Plugins**: Jekyll Feed, Jekyll Paginate, Jekyll SEO Tag |
| 154 | +
|
| 155 | +To modify site settings: |
| 156 | +
|
| 157 | +1. Open `_config.yml` |
| 158 | +2. Edit the desired values |
| 159 | +3. Restart the Jekyll server (changes to config require a restart) |
| 160 | +
|
| 161 | +### Available Configuration Options |
| 162 | +
|
| 163 | +- `title` - Site title displayed in header |
| 164 | +- `email` - Contact email address |
| 165 | +- `description` - Site description for SEO |
| 166 | +- `timezone` - Site timezone (default: Europe/Madrid) |
| 167 | +- `paginate` - Number of posts per page (default: 5) |
| 168 | +- `author` - Author information for SEO |
| 169 | +- `social` - Social media links for SEO |
| 170 | +
|
| 171 | +## Deployment |
| 172 | +
|
| 173 | +This site is automatically deployed via **GitHub Pages** when changes are pushed to the `main` branch. |
| 174 | +
|
| 175 | +### Deployment Process |
| 176 | +
|
| 177 | +1. Make your changes locally |
| 178 | +2. Test with `bundle exec jekyll serve` |
| 179 | +3. Commit your changes: |
| 180 | + ```bash |
| 181 | + git add . |
| 182 | + git commit -m "Your commit message" |
| 183 | + ``` |
| 184 | +4. Push to GitHub: |
| 185 | + ```bash |
| 186 | + git push origin main |
| 187 | + ``` |
| 188 | +5. GitHub Pages will automatically build and deploy your site within a few minutes |
| 189 | + |
| 190 | +The site is available at: `https://khnumdev.github.io/` |
| 191 | + |
| 192 | +### Build Status |
| 193 | + |
| 194 | +Check the Actions tab in the GitHub repository to monitor deployment status and view any build errors. |
| 195 | + |
| 196 | +## Theme Customization |
| 197 | + |
| 198 | +This site uses the **Minima** theme (v2.5). |
| 199 | + |
| 200 | +### Theme Documentation |
| 201 | + |
| 202 | +- [Minima GitHub Repository](https://github.com/jekyll/minima) |
| 203 | +- [Minima Customization Guide](https://github.com/jekyll/minima#customization) |
| 204 | + |
| 205 | +### Overriding Theme Defaults |
| 206 | + |
| 207 | +To customize the theme: |
| 208 | + |
| 209 | +1. **Override layouts**: Create files in `_layouts/` directory |
| 210 | +2. **Override includes**: Create files in `_includes/` directory |
| 211 | +3. **Custom CSS**: Create `assets/main.scss` and import the theme |
| 212 | +4. **Custom pages**: Add `.md` or `.html` files to the root directory |
| 213 | + |
| 214 | +Example custom CSS file (`assets/main.scss`): |
| 215 | + |
| 216 | +```scss |
| 217 | +--- |
| 218 | +--- |
| 219 | + |
| 220 | +@import "minima"; |
| 221 | + |
| 222 | +// Your custom CSS here |
| 223 | +``` |
| 224 | + |
| 225 | +## License |
| 226 | + |
| 227 | +This project is open source and available under the terms specified in the [LICENSE](LICENSE) file. |
| 228 | + |
| 229 | +## Contact |
| 230 | + |
| 231 | +- **Author**: Andrés Pérez Gil |
| 232 | + |
| 233 | +- **Twitter**: [@AndresPerezGil](https://twitter.com/AndresPerezGil) |
| 234 | +- **GitHub**: [@khnumdev](https://github.com/khnumdev) |
| 235 | +- **LinkedIn**: [andresperezgil](https://www.linkedin.com/in/andresperezgil) |
| 236 | + |
| 237 | +--- |
| 238 | + |
| 239 | +Built with ❤️ using Jekyll and GitHub Pages |
0 commit comments