commit 88df80ac54e3ebb312b7fc18b3bab5e362d6b7cf Author: Felipe M Date: Wed Dec 1 18:33:44 2021 +0000 deploy: 433f9ac71667b0dc4c74dcf4981e99308d2d771f diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..6a5e89f --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +fmartingr.com diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..79ea0d4 --- /dev/null +++ b/about/index.html @@ -0,0 +1,62 @@ + + + + + About | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ +

About

+
+

Hi! I'm Felipe, and I am a developer. Whatever that is.

+

I have been playing with code for a while now, but I also enjoy geeking around with computers, algorithms and other stuff; the less I know about it, the better! +Learning new things every day is my way of life.

+

I think that developers are like artists, writers and composers... we all make art. But we don't use strokes and colors, words or notes, we make it through code. And I really love it.

+

If you want to get in touch feel free to drop me a line.

+ + +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + diff --git a/blog/2012/11/23/amazon-s3-bucket-public-read-policy/index.html b/blog/2012/11/23/amazon-s3-bucket-public-read-policy/index.html new file mode 100644 index 0000000..72974d6 --- /dev/null +++ b/blog/2012/11/23/amazon-s3-bucket-public-read-policy/index.html @@ -0,0 +1,95 @@ + + + + + Amazon S3 bucket public read policy | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Amazon S3 bucket public read policy

+
+ Published on November 23, 2012 +
+ +
+ +

After migrating the blog to a PaaS service I had a proble that the disk space +was volatile and I had to store the images and binary files on another server +or CDN. After thinking for a while I decied to give a try to amazon S3.

+

Created a bucket that I'm going to use as CDN for now on, but geeking around I +saw that the permissions are modified by file, not by folder/bucket. Searching +aroung the docs I found the policies, that are JSON strings wich include +properties for the entire bucket.

+

For making a read-only public bucket you need this:

+
{
+  "Version": "2008-10-17",
+  "Statement": [{
+    "Sid": "AllowPublicRead",
+    "Effect": "Allow",
+    "Principal": {
+      "AWS": "*"
+    },
+    "Action": ["s3:GetObject"],
+    "Resource": ["arn:aws:s3:::/*"]
+  }]
+}
+
+

Replace <bucket name> for yours and apply changes. With this the entire +bucket will be publicy accesible, but if you want to be more restrictive, you +may specify a subfolder:

+
"Resource": ["arn:aws:s3:::<bucket>/<path>/*"]
+
+

Hope this helps.

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2012/12/20/howto-os-x-screenshots-without-shadows/index.html b/blog/2012/12/20/howto-os-x-screenshots-without-shadows/index.html new file mode 100644 index 0000000..8204df8 --- /dev/null +++ b/blog/2012/12/20/howto-os-x-screenshots-without-shadows/index.html @@ -0,0 +1,96 @@ + + + + + HowTo: OS X screenshots without shadows | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

HowTo: OS X screenshots without shadows

+
+ Published on December 20, 2012 +
+ +
+ +

The beautiful shadows that OS X brings to screenshots are good in some ways or +depending the purpose of the screenshot itself. But for other things are a +pain in the ass.

+

After some research I've found multiple ways to get rid of that shadows

+

1) The default setting

Since the terminal command allows you to deactivate the shadow I assumed that +there could be some defaults option for the same purpose. And it is!

+

With this two commands you can use the normal keybinds to do shadowless +screenshots:

+
defaults write com.apple.screencapture disable-shadow -bool true killall SystemUIServer`
+
+

To revert to the original status:

+
defaults write com.apple.screencapture disable-shadow -bool false killall SystemUIServer
+
+

2) The Grab utility

Open the Grab.app: Applications > Utilities > Grab, and under the Capture +menu you will find the Window option.

+

You can also use the SHIFT+CMD+W keybind -while Grab.app is focused-.

+

3) The terminal way

OS X provides us with the screencapture command, so we can hack around and +build our own scripts. A simple one that allows interactive capture without +shadow:

+
screencapture -i -o filename.png
+
+

A more complete one that saves the screenshot on the desktop with the datetime +as filename:

+
screencapture -i -o ~/Desktop/screenshot_`date +%Y%m%d_%H%M%S`.png
+
+

These are some ways I found. You can play around and make your own bash or +Automator scripts and improve it to your needs.

+

Hope this helps!

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/AdvancedNewFile-360.png b/blog/2012/12/21/my-sublimetext-2-workspace/AdvancedNewFile-360.png new file mode 100644 index 0000000..0fcfcef Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/AdvancedNewFile-360.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/AdvancedNewFile-640.png b/blog/2012/12/21/my-sublimetext-2-workspace/AdvancedNewFile-640.png new file mode 100644 index 0000000..0fcfcef Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/AdvancedNewFile-640.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/AdvancedNewFile.png b/blog/2012/12/21/my-sublimetext-2-workspace/AdvancedNewFile.png new file mode 100644 index 0000000..0fcfcef Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/AdvancedNewFile.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/GitGutter-360.png b/blog/2012/12/21/my-sublimetext-2-workspace/GitGutter-360.png new file mode 100644 index 0000000..c478b10 Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/GitGutter-360.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/GitGutter-640.png b/blog/2012/12/21/my-sublimetext-2-workspace/GitGutter-640.png new file mode 100644 index 0000000..5420dc2 Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/GitGutter-640.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/GitGutter.png b/blog/2012/12/21/my-sublimetext-2-workspace/GitGutter.png new file mode 100644 index 0000000..5420dc2 Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/GitGutter.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SidebarEnhancements-360.png b/blog/2012/12/21/my-sublimetext-2-workspace/SidebarEnhancements-360.png new file mode 100644 index 0000000..b4a30dd Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SidebarEnhancements-360.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SidebarEnhancements-640.png b/blog/2012/12/21/my-sublimetext-2-workspace/SidebarEnhancements-640.png new file mode 100644 index 0000000..0ffbf51 Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SidebarEnhancements-640.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SidebarEnhancements.png b/blog/2012/12/21/my-sublimetext-2-workspace/SidebarEnhancements.png new file mode 100644 index 0000000..0ffbf51 Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SidebarEnhancements.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SodaTheme-360.png b/blog/2012/12/21/my-sublimetext-2-workspace/SodaTheme-360.png new file mode 100644 index 0000000..6c29e77 Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SodaTheme-360.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SodaTheme-640.png b/blog/2012/12/21/my-sublimetext-2-workspace/SodaTheme-640.png new file mode 100644 index 0000000..3c0b3f9 Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SodaTheme-640.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SodaTheme.png b/blog/2012/12/21/my-sublimetext-2-workspace/SodaTheme.png new file mode 100644 index 0000000..3c0b3f9 Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SodaTheme.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SublimeCodeIntel-360.png b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeCodeIntel-360.png new file mode 100644 index 0000000..a48ea81 Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeCodeIntel-360.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SublimeCodeIntel-640.png b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeCodeIntel-640.png new file mode 100644 index 0000000..aa56b76 Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeCodeIntel-640.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SublimeCodeIntel.png b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeCodeIntel.png new file mode 100644 index 0000000..aa56b76 Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeCodeIntel.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SublimeLinter-360.png b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeLinter-360.png new file mode 100644 index 0000000..17ed0db Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeLinter-360.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SublimeLinter-640.png b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeLinter-640.png new file mode 100644 index 0000000..7e4fa5b Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeLinter-640.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SublimeLinter.png b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeLinter.png new file mode 100644 index 0000000..7e4fa5b Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeLinter.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SublimeRope-360.png b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeRope-360.png new file mode 100644 index 0000000..072ed4e Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeRope-360.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SublimeRope-640.png b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeRope-640.png new file mode 100644 index 0000000..2254fe0 Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeRope-640.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/SublimeRope.png b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeRope.png new file mode 100644 index 0000000..2254fe0 Binary files /dev/null and b/blog/2012/12/21/my-sublimetext-2-workspace/SublimeRope.png differ diff --git a/blog/2012/12/21/my-sublimetext-2-workspace/index.html b/blog/2012/12/21/my-sublimetext-2-workspace/index.html new file mode 100644 index 0000000..3fa1174 --- /dev/null +++ b/blog/2012/12/21/my-sublimetext-2-workspace/index.html @@ -0,0 +1,101 @@ + + + + + My SublimeText 2 workspace | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

My SublimeText 2 workspace

+
+ Published on December 21, 2012 +
+ +
+ +

Package Control

Essential. Install this and forget about downloading files, updating, … Choose +to use or not every other plugin, but this one is mandatory. Just install it.

+

Soda theme

The best theme I've seen for SublimeText. It's really clean and elegant. Don't +forget to use it's custom colors too!

+

"Soda
+theme"

+

SublimeLinter

Highlight potential errors using lint programs so you can keep your code +clean.

+

"Example of
+SublimeLinter"

+

SublimeCode Intel

Helps with autocomplete, allows jump-to and displays information of the +highlighted function on the status bar.

+

"Example of SublimeCode
+Intel"

+

SublimeRope [Python only!]

Add a lot of IDE-like features to python developers thanks to the rope +library.

+

"Example of
+SublimeRope"

+

Git & GitGutter

The first one is a tool to integrate git commands onto the command palette, +the second one inserts an icon in the gutter area whether a line has been +modified, added or removed.

+

"Example of
+GitGutter"

+

SideBarEnchancements

Add tons of functions to the sidebar contextual menu!

+

"SidebarEnhancements contextual
+menu"

+

AdvancedNewFile

This is the best. Create a new file just with a key combination, no popups, no +nothing. Just press CMD+ALT+N, write the full path -relative to your +project path- of the file you want to create and press enter.

+

"Example of
+AdvancedNewFile"

+

I use some other plugins, but this is my top. Do you use other really good +plugins not listed here? Tell me!

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/01/12/weekly-project-status-dropping-projects-hard/index.html b/blog/2013/01/12/weekly-project-status-dropping-projects-hard/index.html new file mode 100644 index 0000000..7397d62 --- /dev/null +++ b/blog/2013/01/12/weekly-project-status-dropping-projects-hard/index.html @@ -0,0 +1,141 @@ + + + + + Weekly project status: Dropping projects is hard | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Weekly project status: Dropping projects is hard

+
+ Published on January 12, 2013 +
+ +
+ +

+

Since I wrote the last post of +2012 I have been wondering if I +could finish -or at least, work- on all the projects or experiments I wanted +to. The answer was easy: no. I just don't have enough time for all the +stuff I want to do, so I have made some decisions about my projects.

+

Project herobrine …dropped!

"Early draft of Project
+Herobrine"

+

The first time I did something about this project was like 2010, as some of +you have guessed by the name of the project, its minecraft related. It was +intended to be a wowhead-like minecraft database but not only on PC.

+

Some features I wanted:

+
    +
  • Developed with django, returning json objects to the client.
  • +
  • Client MVC based with BackboneJS
  • +
  • Responsive design -so you can check with your tablet while play on your computer-
  • +
  • "no refresh" -backbone-
  • +
  • WebGL/Canvas block rendering
  • +
  • JS Redstone circuit maker
  • +
  • JS Dye maker
  • +
  • Homepage with random background featuring user's screenshots (above)
  • +
  • Interactive crafting/brewing/…
  • +
+

Finally I have to say goodbye to this jewel -and it's really hard because I +love minecraft and I wanted this to happen- because of various reasons: +minecraftwiki already contains a lot of +information -and it's really crowded-, the barrier of contents -I have to type +in all the minecraft items, blocks, biomes, etc- and that this wasn't really a +technical challenge -actually, some things are, but most of it are just +database relations and stuff-.

+

I want to prepare a future post with all the work I made on this project. +There's not much code but a lot of drafts and ideas that could help someone.

+

Project Serenity …dropped!

This was intended to be a way to simplify my jenkins business. Since I need a +lot of tasks like: compile, minify, copy, deploy, upload, test… I wanted an +app so I just define everything I need on a YAML file and call the app with +serenity <task>.

+

I have some drafts built, a base YAML file, and some features planned like +integrated tasks, custom tasks in the YAML file, configuration…

+

Haven't coded for this one yet, but fortunately I heard about +grunt who may be something very close at what I wanted +this one to be.

+

ZombiePress (github)

…dropped!

+

It's obvious. I was making my own blog software but since now I'm a proud +octopress user this is no longer needed. I will keep the repo online just for +making me feel nostalgic in the future.

+

BlueBird …dropped!

For all the iPad users… remember when Twitter changed the UI of the app? Did +you remember the old one? I do. The new interface is total crap, the other +was simply brilliant, and for me it was near the best one for an iOS app. I +was hoping to get a clone working in javascript, but my knowledge of touch +screens is not that good, I need to study more on the matter and thenmaybe +I will try again, but I'm pretty sure some javascript guru will do something +before that happens.

+

Project Amaranth

The bigger brother. Recently I started a Vampire: Dark Age game with some +friends and it remembered me to when I played rolegames over IRC. I started +thinking that a online interface for roleplaying will be nice to have, because +you can also use it in a live session to whisper, draw, etc. The brainstorm +started quick enough for me to consider making it.

+

Project RTC

Just born! -yesterday :P-. I want to make some kind of webRTC site to have +conversations without the need of register, just create a conversation, get a +link and you are set. It's more an experiment than a project itself.

+

Uvepe8 (github)

I'm very proud -in a useful way- of this one and of course I'm maintaining it.

+

For the ones who don't know, its sort of video-to-html5-canvas, a mix +between apple's and sublime text's, but mines support transparency -I needed +it-.

+

There are some features I want to implement shown on the README file and a +full code review.

+

Dharma (github)

An application to check for 404 links on websites, a lot of things could be +added to this, but for now is for playing around with threading, gevent and +that kind of things.

+

I have some other things in mind I want to try, but that deserves another +post -which is already in the works-.

+

Stay tuned for more updates, and as always, anything you want to say: comment, +tweet, mail or shout at me!

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/01/12/weekly-project-status-dropping-projects-hard/minecraft-database-360.png b/blog/2013/01/12/weekly-project-status-dropping-projects-hard/minecraft-database-360.png new file mode 100644 index 0000000..263a3a2 Binary files /dev/null and b/blog/2013/01/12/weekly-project-status-dropping-projects-hard/minecraft-database-360.png differ diff --git a/blog/2013/01/12/weekly-project-status-dropping-projects-hard/minecraft-database-640.png b/blog/2013/01/12/weekly-project-status-dropping-projects-hard/minecraft-database-640.png new file mode 100644 index 0000000..e26e09a Binary files /dev/null and b/blog/2013/01/12/weekly-project-status-dropping-projects-hard/minecraft-database-640.png differ diff --git a/blog/2013/01/12/weekly-project-status-dropping-projects-hard/minecraft-database.png b/blog/2013/01/12/weekly-project-status-dropping-projects-hard/minecraft-database.png new file mode 100644 index 0000000..d14ef98 Binary files /dev/null and b/blog/2013/01/12/weekly-project-status-dropping-projects-hard/minecraft-database.png differ diff --git a/blog/2013/01/12/weekly-project-status-dropping-projects-hard/weekly-project-status-banner-360.jpg b/blog/2013/01/12/weekly-project-status-dropping-projects-hard/weekly-project-status-banner-360.jpg new file mode 100644 index 0000000..5612094 Binary files /dev/null and b/blog/2013/01/12/weekly-project-status-dropping-projects-hard/weekly-project-status-banner-360.jpg differ diff --git a/blog/2013/01/12/weekly-project-status-dropping-projects-hard/weekly-project-status-banner-640.jpg b/blog/2013/01/12/weekly-project-status-dropping-projects-hard/weekly-project-status-banner-640.jpg new file mode 100644 index 0000000..51dba9c Binary files /dev/null and b/blog/2013/01/12/weekly-project-status-dropping-projects-hard/weekly-project-status-banner-640.jpg differ diff --git a/blog/2013/01/12/weekly-project-status-dropping-projects-hard/weekly-project-status-banner.jpg b/blog/2013/01/12/weekly-project-status-dropping-projects-hard/weekly-project-status-banner.jpg new file mode 100644 index 0000000..51dba9c Binary files /dev/null and b/blog/2013/01/12/weekly-project-status-dropping-projects-hard/weekly-project-status-banner.jpg differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/events-360.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/events-360.png new file mode 100644 index 0000000..20e3398 Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/events-360.png differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/events-640.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/events-640.png new file mode 100644 index 0000000..4960b28 Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/events-640.png differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/events.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/events.png new file mode 100644 index 0000000..4960b28 Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/events.png differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/header-360.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/header-360.png new file mode 100644 index 0000000..caecad9 Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/header-360.png differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/header-640.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/header-640.png new file mode 100644 index 0000000..caecad9 Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/header-640.png differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/header.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/header.png new file mode 100644 index 0000000..caecad9 Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/header.png differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/index.html b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/index.html new file mode 100644 index 0000000..0545086 --- /dev/null +++ b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/index.html @@ -0,0 +1,111 @@ + + + + + Tweeria: The MMORPG people without time can play | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Tweeria: The MMORPG people without time can play

+
+ Published on January 14, 2013 +
+ +
+ +

"Tweeria
+summary"

+

Many of us -or maybe not, but let's assume that- have played at least one +MMORPG game in our life and we know that it could be very time consuming. +Level up, going to instances, getting better year… and if you was hardcore +enough: scheduled raids.

+

As we grow up we notice that the time for this kind of things fade away, but +you still want to party with friends and get somepurples. Until I found +Tweeria, that brilliant idea of using your twitter posts to interact +with your alter-ego on a MMORPG world.

+

"My
+profile"

+

It shares some of the features of common MMORPGs but the good part is that +we don't need to do anything else that tweetfor many of them, so your +character makes an action for every tweet you post -I think it's not every +tweet, just a few in a period of time, haven't checked it-. You can defeat +NPCs, loot an item, going onto a dungeon alone… you can even save -or kill +:P- your friends if you mention or retweet them in your tweets.

+

"Upcoming and in-progress
+raids"

+

However, there are some things that needs user interaction: the raids. You can +have up to five scheduled raids at the same time but you need to join for it +manually. However, it's fast and easy: you just need to get into the events +page and join the event you want. For gear swapping, selling items and buying +spells you need to interact on the site too. According to the posts you can +craft items and spells but that part of the game does not work for me, so I +don't know how it works.

+

"Some tweeria stats
+windows"

+

Another thing you can do to interact with your character is using spells. For +that, you need to buy on the market first, and when you have them equipped, +you can cast one by tweeting !<spell shortcut> on a given tweet, the game +will use itautomagically.

+

Oh, did I mention that also have achievements?

+

"The beautiful
+map"

+

As I've said, it surprised me how the most basic idea can be developed into a +very enjoyable game. Unlike ogame, travian, and its brothers, you don't +need to check the site every minute. +But to be honest… I tweet more often since I play Tweeria.

+

If you want to check it out follow this link and join the world of +tweeria. You'll help me getting an +achievement! :D

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/map-360.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/map-360.png new file mode 100644 index 0000000..6c6048c Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/map-360.png differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/map-640.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/map-640.png new file mode 100644 index 0000000..a77a5c9 Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/map-640.png differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/map.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/map.png new file mode 100644 index 0000000..a77a5c9 Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/map.png differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/profile-360.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/profile-360.png new file mode 100644 index 0000000..1c74f6f Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/profile-360.png differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/profile-640.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/profile-640.png new file mode 100644 index 0000000..d473ec2 Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/profile-640.png differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/profile.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/profile.png new file mode 100644 index 0000000..d473ec2 Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/profile.png differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/stats-360.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/stats-360.png new file mode 100644 index 0000000..5cef4a0 Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/stats-360.png differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/stats-640.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/stats-640.png new file mode 100644 index 0000000..22915a7 Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/stats-640.png differ diff --git a/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/stats.png b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/stats.png new file mode 100644 index 0000000..22915a7 Binary files /dev/null and b/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/stats.png differ diff --git a/blog/2013/01/20/manga-recommendation-kamisama-no-iutoori-fujimura-akeji/index.html b/blog/2013/01/20/manga-recommendation-kamisama-no-iutoori-fujimura-akeji/index.html new file mode 100644 index 0000000..ac1c478 --- /dev/null +++ b/blog/2013/01/20/manga-recommendation-kamisama-no-iutoori-fujimura-akeji/index.html @@ -0,0 +1,85 @@ + + + + + Manga Recommendation: Kamisama no Iutoori (Fujimura Akeji) | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Manga Recommendation: Kamisama no Iutoori (Fujimura Akeji)

+
+ Published on January 20, 2013 +
+ +
+ +

"Kamisama no Iutoori \(FUJIMURA
+Akeji\)"

+

Summary

Takahata Shun's day at high school begins just as normal and boring as ever, +but it doesn't end that way. After his teacher's head explodes, he and his +classmates find themselves forced to play children's games, such as Daruma ga +Koronda (a game like Red Light/Green Light), with deadly stakes. With no idea +who is behind this mysterious deadly game session, and no way of knowing when +it will finally end, the only thing Shun and other students can do is keep +trying to win…

+

Volumes: 5 +Chapters: 21 (finished) +Genre: Action, Horror, School, Shonen, Supernatural +Story: Muneyuki Kaneshiro +Art: Akeji Fujimura

+

Thanks to @rsanchezbalo for his +recommendation!

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/01/20/manga-recommendation-kamisama-no-iutoori-fujimura-akeji/kamisama-no-iutoori-360.jpg b/blog/2013/01/20/manga-recommendation-kamisama-no-iutoori-fujimura-akeji/kamisama-no-iutoori-360.jpg new file mode 100644 index 0000000..9bea7c1 Binary files /dev/null and b/blog/2013/01/20/manga-recommendation-kamisama-no-iutoori-fujimura-akeji/kamisama-no-iutoori-360.jpg differ diff --git a/blog/2013/01/20/manga-recommendation-kamisama-no-iutoori-fujimura-akeji/kamisama-no-iutoori-640.jpg b/blog/2013/01/20/manga-recommendation-kamisama-no-iutoori-fujimura-akeji/kamisama-no-iutoori-640.jpg new file mode 100644 index 0000000..46b486c Binary files /dev/null and b/blog/2013/01/20/manga-recommendation-kamisama-no-iutoori-fujimura-akeji/kamisama-no-iutoori-640.jpg differ diff --git a/blog/2013/01/20/manga-recommendation-kamisama-no-iutoori-fujimura-akeji/kamisama-no-iutoori.jpg b/blog/2013/01/20/manga-recommendation-kamisama-no-iutoori-fujimura-akeji/kamisama-no-iutoori.jpg new file mode 100644 index 0000000..46b486c Binary files /dev/null and b/blog/2013/01/20/manga-recommendation-kamisama-no-iutoori-fujimura-akeji/kamisama-no-iutoori.jpg differ diff --git a/blog/2013/02/23/manga-recommendation-psyren/index.html b/blog/2013/02/23/manga-recommendation-psyren/index.html new file mode 100644 index 0000000..8844ab7 --- /dev/null +++ b/blog/2013/02/23/manga-recommendation-psyren/index.html @@ -0,0 +1,78 @@ + + + + + Manga recommendation: Psyren | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Manga recommendation: Psyren

+
+ Published on February 23, 2013 +
+ +
+ +

"Psyren"

+

Summary

Psyren follows the adventures of Ageha Yoshina, a high school student who is +chosen by Nemesis Q as a participant in the Psyren games. The games take place +in a world known initially as Psyren, which is revealed to be the real world a +decade in the future. Ageha and his friends attempt to alter the future and +save the world from becoming Psyren.

+

Volumes: 16 +Chapters: 145 (finished) +Genre: Action, Adventure, Game, Romance, Sci-Fi, Shounen, Super Power, Supernatural, Psychological +Story/Art: Tokashi Iwashiro

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/02/23/manga-recommendation-psyren/psyren-cover-360.png b/blog/2013/02/23/manga-recommendation-psyren/psyren-cover-360.png new file mode 100644 index 0000000..c750da9 Binary files /dev/null and b/blog/2013/02/23/manga-recommendation-psyren/psyren-cover-360.png differ diff --git a/blog/2013/02/23/manga-recommendation-psyren/psyren-cover-640.png b/blog/2013/02/23/manga-recommendation-psyren/psyren-cover-640.png new file mode 100644 index 0000000..118820f Binary files /dev/null and b/blog/2013/02/23/manga-recommendation-psyren/psyren-cover-640.png differ diff --git a/blog/2013/02/23/manga-recommendation-psyren/psyren-cover.png b/blog/2013/02/23/manga-recommendation-psyren/psyren-cover.png new file mode 100644 index 0000000..118820f Binary files /dev/null and b/blog/2013/02/23/manga-recommendation-psyren/psyren-cover.png differ diff --git a/blog/2013/02/23/where-buy-warcraft-books-ordered-storyline/index.html b/blog/2013/02/23/where-buy-warcraft-books-ordered-storyline/index.html new file mode 100644 index 0000000..1e75712 --- /dev/null +++ b/blog/2013/02/23/where-buy-warcraft-books-ordered-storyline/index.html @@ -0,0 +1,357 @@ + + + + + Where to buy Warcraft books ordered by storyline | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Where to buy Warcraft books ordered by storyline

+
+ Published on February 23, 2013 +
+ +
+ +

I've reunited a list with all the warcraft books sorted by the storyline of +the lore. Some of 'em occur at the same time so if you see the same book twice +that's the reason.

+

More info on WowWiki.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Book nameAmazon COMAmazon UKKindleBookDepository
Pre-game timeline events    
The war of the ancients Trilogy    
- The Well of EternityAmazon.comAmazon.co.ukKindleBookDepository
- The Demon SoulAmazon.comAmazon.co.ukKindleBookDepository
- The SunderingAmazon.comAmazon.co.ukKindleBookDepository
War of the Shifting Sands [Short story]Battle.net   
Rise of the HordeAmazon.comAmazon.co.ukKindleBookDepository
Unbroken [Short story]Battle.net   
Warcraft: Orcs and HumansThe first war   
Last GuardianAmazon.comAmazon.co.ukKindleBookDepository
Warcraft IIThe second war   
Tides of DarknessAmazon.comAmazon.co.ukKindleBookDepository
Beyond the Dark PortalAmazon.comAmazon.co.ukKindleBookDepository
Post-Warcraft II & Pre-Warcraft III    
Day of the DragonAmazon.comAmazon.co.ukKindleBookDepository
Lord of the ClansAmazon.comAmazon.co.ukKindleBookDepository
Of Blood and HonorAmazon.comAmazon.co.ukKindle
Road to Damnation [Short story]Battle.net   
Warcraft III: Reign of ChaosThe third war   
Arthas: Rise of the Lich KingAmazon.comAmazon.co.ukKindleBookDepository
Warcraft III: The Frozen Throne    
The war of the ancients Trilogy    
- The Well of EternityAmazon.comAmazon.co.ukKindleBookDepository
- The Demon SoulAmazon.comAmazon.co.ukKindleBookDepository
- The SunderingAmazon.comAmazon.co.ukKindleBookDepository
Cycle of HatredAmazon.comAmazon.co.ukKindleBookDepository
World of Warcraft    
War of the Shifting Sands [Short story]Battle.net   
WoW: The Burning Crusade    
Night of the DragonAmazon.comAmazon.co.ukKindleBookDepository
WoW: Wrath of the Lich King    
StormrageAmazon.comAmazon.co.ukKindleBookDepository
The Shattering: Prelude to CataclysmAmazon.comAmazon.co.ukKindleBookDepository
WoW: Cataclysm    
WolfheartAmazon.comAmazon.co.ukKindleBookDepository
Thrall: Twilight of the AspectsAmazon.comAmazon.co.ukKindleBookDepository
Jaina Proudmore: Tides of WarAmazon.comAmazon.co.ukKindleBookDepository
WoW: Mists of Pandaria    
    
+ +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/02/24/fringe-series-finale-my-oppinion/fringe-360.png b/blog/2013/02/24/fringe-series-finale-my-oppinion/fringe-360.png new file mode 100644 index 0000000..3764939 Binary files /dev/null and b/blog/2013/02/24/fringe-series-finale-my-oppinion/fringe-360.png differ diff --git a/blog/2013/02/24/fringe-series-finale-my-oppinion/fringe-640.png b/blog/2013/02/24/fringe-series-finale-my-oppinion/fringe-640.png new file mode 100644 index 0000000..8e19105 Binary files /dev/null and b/blog/2013/02/24/fringe-series-finale-my-oppinion/fringe-640.png differ diff --git a/blog/2013/02/24/fringe-series-finale-my-oppinion/fringe.png b/blog/2013/02/24/fringe-series-finale-my-oppinion/fringe.png new file mode 100644 index 0000000..8e19105 Binary files /dev/null and b/blog/2013/02/24/fringe-series-finale-my-oppinion/fringe.png differ diff --git a/blog/2013/02/24/fringe-series-finale-my-oppinion/index.html b/blog/2013/02/24/fringe-series-finale-my-oppinion/index.html new file mode 100644 index 0000000..f59c4fd --- /dev/null +++ b/blog/2013/02/24/fringe-series-finale-my-oppinion/index.html @@ -0,0 +1,131 @@ + + + + + Fringe series finale: My oppinion | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Fringe series finale: My oppinion

+
+ Published on February 24, 2013 +
+ +
+ +

+

Attention: This entry contains huge spoilers about the series finale of +Fringe. Also, lots of negative opinions, if you like the series or don't +understand how sarcasm works, leave.

+
+

I've spent the last weeks watching the show from where I dropped it -the third +season- and I can say that the final season is the worst of all. I don't know +if the show was losing audicence, if they only wanted to finish it, because I +don't know another reason to kill the show this way.

+

From now on I'm talking only about the fifth season, as should be the more +important and the one all of you -and myself- have fresh.

+
    +
  • The most stupid thing I remember: The tapes with the plan to get rid of the observers. +Walter had a plan to defeat the observers, a plan that he never tell anyone +until is destroyed from his mind by an observer. But, hey! He must have +recorded the plan or something. I mean, he is a very smart one. He did. He +recorded that he have a plan on a tape, but for knowing what it is you have to +swim accross a sea of amber to find another eight tapes with the details. OH +HOW SMART IS THAT! Just a stupid reason to keep characters busy. Without this +the entire fifth season is done in two-three chapters.

    +
  • +
  • The observers powers. +So, I can read minds and predict -in some way- the future. How can SOMEONE +DEFEAT YOU IF YOU CAN PREDICT WHAT ARE THEY GOING TO DO. And more, you SAW in +Walter's mind what the plan was. The observers boss is just… asshole.

    +
  • +
  • The plan. +Tons of VHS tapes with a specific plan of how to build a machine to generate a +wormhole, but in the last moment, hey! But the observers generate wormholes +for their supplies, let's use that! Let's put humanity's hope on a last moment +change! :D

    +
  • +
  • Olivia's powers. +You used your last cortexiphan -or however it's written- on revive yourself +from a headshot (LOL), then you get injected fours times, each for every +dimension swap you have to do. Despite the fact that just this sucks, there's +more: William Bell needed a lot of time just to unleash her powers, and now, +is not that she have the powers active, but also she knows how to swap +dimensions on her own will. Fascinating. Also, from this point Olivia don't +need fear to use her powers.

    +
  • +
  • The observers chip. +Peter removes a chip from a observer and the observer die. Removes it from +himself and nothing happen. And I'm not talking about how deep the chip was +jumping insinde the brain when Walter did the tests… just WTF, die already.

    +
  • +
  • Gun's agains the observers. +This is just a little thing: in our universe, Bell design some improved guns +-that apparently only the rebels have 21 years in the future…- that shoots +faster to deal with the observers. When Olivia travels to the alternative +universe, they don't have that guns but can kill observers without a problem.

    +
  • +
  • Time travel: +Apparently there's only one shot for a single one to time-travel: September +takes it. But when he's killed nothing prevents Walter for time traveling.

    +
  • +
  • Olivia vs. Observer Boss. +Apparently the energy needed to move a truck with the cortexiphan powers is +the electricity of the entire New York. That's efficient use of energy.

    +
  • +
+

There's more things, I'm sure, but I don't remember just now. Besides, there's +more than enough here.

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/02/27/manga-recommendation-enigma/enigma-cover-360.jpg b/blog/2013/02/27/manga-recommendation-enigma/enigma-cover-360.jpg new file mode 100644 index 0000000..91ecb4e Binary files /dev/null and b/blog/2013/02/27/manga-recommendation-enigma/enigma-cover-360.jpg differ diff --git a/blog/2013/02/27/manga-recommendation-enigma/enigma-cover-640.jpg b/blog/2013/02/27/manga-recommendation-enigma/enigma-cover-640.jpg new file mode 100644 index 0000000..de0b3f3 Binary files /dev/null and b/blog/2013/02/27/manga-recommendation-enigma/enigma-cover-640.jpg differ diff --git a/blog/2013/02/27/manga-recommendation-enigma/enigma-cover.jpg b/blog/2013/02/27/manga-recommendation-enigma/enigma-cover.jpg new file mode 100644 index 0000000..de0b3f3 Binary files /dev/null and b/blog/2013/02/27/manga-recommendation-enigma/enigma-cover.jpg differ diff --git a/blog/2013/02/27/manga-recommendation-enigma/index.html b/blog/2013/02/27/manga-recommendation-enigma/index.html new file mode 100644 index 0000000..cdd722b --- /dev/null +++ b/blog/2013/02/27/manga-recommendation-enigma/index.html @@ -0,0 +1,78 @@ + + + + + Manga recommendation: Enigma | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Manga recommendation: Enigma

+
+ Published on February 27, 2013 +
+ +
+ +

"Enigma"

+

Summary

Haiba Sumio is a student at a Tokyo High School with an interesting ability… +He occasionally falls asleep and wakes up with premonitions of the future +written out on his "Dream Diary". With this ability, Sumio helps out people in +trouble before anything bad happens, until one day when his peaceful life +completely changes.

+

Volumes: 7 +Chapters: 56 (finished) +Genre: Adventure, Mystery, School, Shounen, Supernatural +Story/Art: Sakaki, Kenji

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/02/27/server-going-slow-after-iptables-configuration-try/index.html b/blog/2013/02/27/server-going-slow-after-iptables-configuration-try/index.html new file mode 100644 index 0000000..e4fa741 --- /dev/null +++ b/blog/2013/02/27/server-going-slow-after-iptables-configuration-try/index.html @@ -0,0 +1,81 @@ + + + + + Server going slow after IPTables configuration? Try this | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Server going slow after IPTables configuration? Try this

+
+ Published on February 27, 2013 +
+ +
+ +

Recently I've started the migration of my company's servers to a new provider. +After checking that the OS installed on the -now- old servers was Ubuntu 8.04 +(holy shit), I decided to make a fresh install of CentOS 6.3, cleaning up all +the servers contents and setting up everything from scratch.

+

After setting my iptables rules (INPUT whitelisted, OUTPUT accept all) I +noticed a big delay on every connection made to my server. After checking a +lot of things, these two solved the issue:

+

Enable unilimited traffic on your loopback interface

iptables -A INPUT -i lo -j ACCEPT
+iptables -A OUTPUT -o lo -j ACCEPT
+
+

Enable traffic for connections started by your server

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
+
+

Hope this solves your issue as it did with mine.

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/06/24/zombiepress-is-here/index.html b/blog/2013/06/24/zombiepress-is-here/index.html new file mode 100644 index 0000000..0e4451a --- /dev/null +++ b/blog/2013/06/24/zombiepress-is-here/index.html @@ -0,0 +1,78 @@ + + + + + Zombiepress is here | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Zombiepress is here

+
+ Published on June 24, 2013 +
+ +
+ +

It finally happened. I got tired of octopress and decided to finish what I +started: my own blogging CMS.

+

It's a really modest thing built with django. I've added some thing to make it +easy to use (in my oppinion):

+
    +
  • settings.py main preferences (required for running the app) are set on environment variables instead of environment dependant settings files or the not so cool local_settings.py.
  • +
  • A a key->value preferences config in the admin (a simple django model with 3 fields) for settings that may be needed to modify in a live environment and would be a shame if it were on the settings.py file. In example, I use it to set some RSS preferences and the Disqus shortname for the blog comments. To disable blog comments I just need to uncheck the "pass to template" option on the required variable.
  • +
  • Theming: Not an absolute state of the art, but it's function works: a themes folder and a variable to select one on the settings.py, I just need to create the basic theme.
  • +
  • (experimental) Multilanguage support. A friend asked for a easy to use CMS with multilingual support, so I want to give it a shot. Since I never used django with managed multilingual content, it may be easy or it may be not. The code is there, someone has to try it.
  • +
+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/07/01/django-stampu-static-sites-with-django/django-stampu-360.png b/blog/2013/07/01/django-stampu-static-sites-with-django/django-stampu-360.png new file mode 100644 index 0000000..822b42d Binary files /dev/null and b/blog/2013/07/01/django-stampu-static-sites-with-django/django-stampu-360.png differ diff --git a/blog/2013/07/01/django-stampu-static-sites-with-django/django-stampu-640.png b/blog/2013/07/01/django-stampu-static-sites-with-django/django-stampu-640.png new file mode 100644 index 0000000..822b42d Binary files /dev/null and b/blog/2013/07/01/django-stampu-static-sites-with-django/django-stampu-640.png differ diff --git a/blog/2013/07/01/django-stampu-static-sites-with-django/django-stampu.png b/blog/2013/07/01/django-stampu-static-sites-with-django/django-stampu.png new file mode 100644 index 0000000..822b42d Binary files /dev/null and b/blog/2013/07/01/django-stampu-static-sites-with-django/django-stampu.png differ diff --git a/blog/2013/07/01/django-stampu-static-sites-with-django/index.html b/blog/2013/07/01/django-stampu-static-sites-with-django/index.html new file mode 100644 index 0000000..c77e690 --- /dev/null +++ b/blog/2013/07/01/django-stampu-static-sites-with-django/index.html @@ -0,0 +1,99 @@ + + + + + django-stampu: Static sites with django | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

django-stampu: Static sites with django

+
+ Published on July 01, 2013 +
+ +
+ +

+

After finishing zombiepress a friend of mine wanted to use it but asked for +some kind of conversion to static since he uploads its current blog to github. +That's how this project was born.

+
+

Django as a static site? Of course, it's possible, only if your project it's +using a simple backend infrastructure, it doesn't let users modify the +database, and also doesn't have contact forms or that kind of stuff. The +conversion of a blog into static content was really easy, in about 30 minutes +I had an alpha working -which is the 0.1.2 version uploaded in github/pypi-.

+

django-stampu is basically a crawler. Some people led me to solutions much +more complicated. (Ex. Running a command and let the computer work.) And I +didn't like that. I wanted a conversion of the site as I see it when running +the runserver command, for that purpose you have to follow all the internal +links of the site and save the items as *.html if the content-type matches. It +also saves the static files in the site, but I need to look further into that, +because it can't save files needed by css files yet, it only checks for +src/href attributes on all tags in html files.

+

Want to try it?

+
    +
  1. Install django-stampu: pip install django-stampu
  2. +
  3. Add it to your INSTALLED_APPS
  4. +
  5. Execute the command: python manage.py stamp
  6. +
  7. Check the _static folder.
  8. +
+

Easy, right? That's what I want to hear!

+

Keep in mind that this is a proof of concept, I need to improve lots of things +and add some configuration variables for people that want to customize their +sites.

+

If you want to contribute in any way, you can check the source code at +github.

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/07/04/extracting-data-from-obfuscated-java-code/diff-360.png b/blog/2013/07/04/extracting-data-from-obfuscated-java-code/diff-360.png new file mode 100644 index 0000000..c37bbd2 Binary files /dev/null and b/blog/2013/07/04/extracting-data-from-obfuscated-java-code/diff-360.png differ diff --git a/blog/2013/07/04/extracting-data-from-obfuscated-java-code/diff-640.png b/blog/2013/07/04/extracting-data-from-obfuscated-java-code/diff-640.png new file mode 100644 index 0000000..eeba295 Binary files /dev/null and b/blog/2013/07/04/extracting-data-from-obfuscated-java-code/diff-640.png differ diff --git a/blog/2013/07/04/extracting-data-from-obfuscated-java-code/diff.png b/blog/2013/07/04/extracting-data-from-obfuscated-java-code/diff.png new file mode 100644 index 0000000..42abedd Binary files /dev/null and b/blog/2013/07/04/extracting-data-from-obfuscated-java-code/diff.png differ diff --git a/blog/2013/07/04/extracting-data-from-obfuscated-java-code/header-360.png b/blog/2013/07/04/extracting-data-from-obfuscated-java-code/header-360.png new file mode 100644 index 0000000..324742b Binary files /dev/null and b/blog/2013/07/04/extracting-data-from-obfuscated-java-code/header-360.png differ diff --git a/blog/2013/07/04/extracting-data-from-obfuscated-java-code/header-640.png b/blog/2013/07/04/extracting-data-from-obfuscated-java-code/header-640.png new file mode 100644 index 0000000..76bf940 Binary files /dev/null and b/blog/2013/07/04/extracting-data-from-obfuscated-java-code/header-640.png differ diff --git a/blog/2013/07/04/extracting-data-from-obfuscated-java-code/header.png b/blog/2013/07/04/extracting-data-from-obfuscated-java-code/header.png new file mode 100644 index 0000000..76bf940 Binary files /dev/null and b/blog/2013/07/04/extracting-data-from-obfuscated-java-code/header.png differ diff --git a/blog/2013/07/04/extracting-data-from-obfuscated-java-code/index.html b/blog/2013/07/04/extracting-data-from-obfuscated-java-code/index.html new file mode 100644 index 0000000..231960f --- /dev/null +++ b/blog/2013/07/04/extracting-data-from-obfuscated-java-code/index.html @@ -0,0 +1,226 @@ + + + + + Extracting data from obfuscated java code | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Extracting data from obfuscated java code

+
+ Published on July 04, 2013 +
+ +
+ +

+

For those who don't know, I started a site a while ago minecraft related (yes, +the one I dropped). If you don't know what minecraft is (really?!), you can check the +official site, since this game can be a little +difficult to explain.

+

The project (which is online at +minecraftcodex.com) is just a database of +items, blocks, entities, etc. related to the game, but as in any other site of +this kind, entering all this information can lead to an absolute boredom. So +I thought... what if I can extract some of the data from the game +classfiles? That would be awesome! Spoiler alert I did it.

+

Think this as my personal approach to all steps below: it doesn't mean that they're the best solutions.

+
+

Unpackaging the jarfile and decompiling the classes

First of all, you have a minecraft.jar file that it's just a packaged set of +java compiled files, you can just tar -xf or unzip it into a folder:

+
unzip -qq minecraft.jar -d ./jarfile
+
+

With this we now have a folder called _jarfile__ _filled with all the jar +contents. We now need to use a tool to decompile all the compiled files into +.java files, because the data we're looking for it's hard-coded into the +source. For this purpose we're going to use JAD, +a java decompiler. With a single line of bash we can look for all the .class +files and decompile them into .java source code:

+
ls ./jarfile/*.class | xargs -n1 jad -sjava -dclasses &> /dev/null
+
+

All the class files have been converted and for ease of use, we've moved them +into a separate directory. But there's a lot of files! And also, when we open +one...

+
public class aea extends aeb
+{
+    public aea()
+    {
+    }
+
+    protected void a(long l, int i, int j, byte abyte0[], double d,
+            double d1, double d2)
+    {
+        a(l, i, j, abyte0, d, d1, d2, 1.0F + b.nextFloat() * 6F, 0.0F, 0.0F, -1, -1, 0.5D);
+    }
+    // ...
+}
+
+

Look at that beautiful obfuscated piece of code! This is getting more +interesting at every step: almost 1.600 java files with obfuscated source +code.

+

Searching for the data

I took the following approach: Since I know what I'm looking for (blocks, +items, etc) and I also know that the information is hard-coded into the +source, there must be some kind of string I can use to search all the files +and get only the ones that contains the pieces of information I look for. For +this test, I used the string "diamond":

+
$ grep diamond ./classes/*
+./classes/bfp.java:        "cloth", "chain", "iron", "diamond", "gold"
+./classes/bge.java:        "cloth", "chain", "iron", "diamond", "gold"
+./classes/kd.java:        w = (new kc(17, "diamonds", -1, 5, xn.p, k)).c();
+./classes/rf.java:        null, "mob/horse/armor_metal.png", "mob/horse/armor_gold.png", "mob/horse/armor_diamond.png"
+./classes/xn.java:        p = (new xn(8)).b("diamond").a(wh.l);
+./classes/xn.java:        cg = (new xn(163)).b("horsearmordiamond").d(1).a(wh.f);
+
+

As you can see, with a simple word we've filtered down to five files (from +1.521 in this test). Is proof that we can get some information from the source +code and we now to filter even more, looking around some files I selected +another keyword: flintAndSteel, works great here, but in a real example you +will need to use more than one keyword to look for data.

+
$ grep flintAndSteel ./classes/*
+./classes/xn.java:    public static xn k = (new xh(3)).b("flintAndSteel");
+
+

Only one file now, we're going to assume that all the items are listed there +and proceed to extract the information.

+

Parsing the items

This was the more complicated thing to do. I started doing some regular +expressions to matchs the values I wanted to extract, but soon that became +inneficient due to:

+
    +
  • The obfuscated code varies with every released version/snapshot -or it should.
  • +
  • The use of OOP difficulted method searching with RegEx matching, since the names could change from version to version, making the tool unusable on updates.
  • +
  • The need to modify the RegEx if something in the code changes, or if we want to extract some other value.
  • +
+

After some tests, I decided to convert the java code into python. For that, +I used simple find and match to get the lines that had the definitions I +wanted, something line this:

+
// As a first simple filter, we only use a code line if a double quote is found on it.
+// Then, regex: /new (?P<code>[a-z]{2}\((?P<id>[1-9]{1,3}).*\"(?P<name>\w+)\"\))/
+// ...
+T = (new xm(38, xo.e)).b("hoeGold");
+U = (new yi(39, aqh.aD.cE, aqh.aE.cE)).b("seeds");
+V = (new xn(40)).b("wheat").a(wh.l);
+X = (vr)(new vr(42, vt.a, 0, 0)).b("helmetCloth");
+Y = (vr)(new vr(43, vt.a, 0, 1)).b("chestplateCloth");
+// ...
+
+

Since that java code is not python evaluable, just convert it:

+
    +
  • Remove unmatched parenthesis and double definitions
  • +
  • Remove semicolons
  • +
  • Remove variable definitios
  • +
  • Converted arguments to string. This can be improved a lot, leaving decimals, converting floats to python notation, detecting words for string conversion, etc. Since for now I am not using any of the extra parameters this works for me.
  • +
  • Be careful with reserved python names! (and, all, abs, ...)
  • +
+
// Java: U = (new yi(39, aqh.aD.cE, aqh.aE.cE)).b("seeds");
+yi("39", "aqh.ad.cE", "aqh.aE.cE").b("seeds")
+// Java: bm = (new xi(109, 2, 0.3F, true)).a(mv.s.H, 30, 0, 0.3F).b("chickenRaw");
+xi("109", "2", "0.3F", "true").a("mv.s.H", "30", "0", "0.3F").b("chickenRaw")
+
+

Now I defined an object to match with the java code definitions when +evaluating:

+
class GameItem(object):
+    def __init__(self, game_id, *args):
+        self.id = int(game_id)
+
+    def __str__(self, *args):
+        return "<Item(%d: '%s')>" % (
+            self.id,
+            self.name
+        )
+
+    def method(self, *args):
+        if len(args) == 1 and isinstance(args[0], str):
+            "Sets the name"
+            self.name = args[0]
+        return self
+
+    def __getattr__(self, *args):
+        return self.method
+
+

As you can see, this class have a global "catch-all" method, since we don't +know the obsfuscated java names, that function will handle every call. In that +concrete class, we now that an object method with only one string parameter is +the one that define the item's name, and we do so in our model.

+

Now, we will evaluate a line of code that will raise and exception saying that +the class name <insert obfuscated class name here> is not defined. +With that, we will declare that name as an instance of the GameItem class, so +re-evaluating the code again will return a GameItem object:

+
try:
+    # Tries to evaluate the piece of code that we converted
+    obj = eval(item['code'])
+except NameError as error:
+    # Class name do not exist! We need to define it.
+    # Extract class name from the error message
+    # Defined somewhere else: class_error_regex = re.compile('name \'(?P<name>\w+)\' is not defined')
+    class_name = class_error_regex.search(error.__str__()).group('name')
+    # Define class name as instance of GameItem
+    setattr(sys.modules[__name__], class_name, type(class_name, (GameItem,), {}))
+    # Evaluate again to get the object
+    obj = eval(item['code'])
+
+

And with this, getting data from source code was possible and really helpful.

+

A lot of things could be improved from this to get even more information from +the classes, since after spending lot's of time looking for certain patterns +on the code I can say what some/most of the parameters mean, and that means +more automation on new releases!

+

Real use case

Apart from getting the base data for the site (all the data shown on minecraft +codex is directly mined from the source code), I made up a tool that shows +changes from the last comparision -if any. This way I can easily discover what +the awesome mojang team added to the game every snapshot they release:

+

+

This is the main tool I use for minecraft codex, is currently bound to the +site itself but I'm refactoring it to made it standalone and publish it on +github.

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/07/09/how-install-and-configure-yubikey-pam-module-archlinux/index.html b/blog/2013/07/09/how-install-and-configure-yubikey-pam-module-archlinux/index.html new file mode 100644 index 0000000..e3e45f9 --- /dev/null +++ b/blog/2013/07/09/how-install-and-configure-yubikey-pam-module-archlinux/index.html @@ -0,0 +1,129 @@ + + + + + How to install and configure the yubikey-pam module on archlinux | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

How to install and configure the yubikey-pam module on archlinux

+
+ Published on July 09, 2013 +
+ +
+ +

+

Not so long ago I've been gifted with a Yubikey. It's a two-auth hardware +solution with multiple auth methods (OTP, Challenge-response, OATH-HOTP and +static password). It easily scaled to one of my favourite and most useful +gadgets.

+

I've been a google authenticator user for a while, but the yubikey is just +much easier to work with: when configured, you only need to tap a button on +the usb stick to generate your key. You can use this in many ways, but in this +post I'm focusing on ssh authentication and how to install the yubico-pam +module into an Arch installation.

+

Installing the required packages

Thanks to the awesome arch community we already have the needed packages on +the AUR, these are: yubico-pam- +git, yubico-c-client- +git, yubikey- +personalization-git and +libyubikey. Keep in mind +that you may need to install more packages depending on your system +installation.

+

You can install that with your favourite AUR helper or using makepkg:

+
$ curl -O https://aur.archlinux.org/packages/li/libyubikey/libyubikey.tar.gz
+$ tar xvzf libyubikey.tar.gz
+$ cd libyubikey
+$ makepkg PKGBUILD
+# ...
+$ sudo pacman -U libyubikey-1.10-2-x86_64.pkg.tar.xz
+
+

Repeat that step for all the packages, in order: libyubikey, yubico-c- +client, yubikey-personalization and yubico-pam. If you have trouble +installing from the AUR refer to the appropiate wiki +page.

+

Configure the PAM module

Edit /etc/pam.d/sshd and add on top on the rest of the auth modules:

+
auth sufficient pam_yubico.so id=XXXX key=XXXX
+
+

You can obtain an ID/key conbination by registering your yubikey at this +page.

+

Authorization methods

Individual authorization mapping

If your server have multiple users this is the easiest method to let them +configure their yubikeys. You just need to create the file +$HOME/.yubico/authorized_yubikeys with the following contents:

+
<username>:<Yubikey token ID 1>[:<Yubikey token ID 2][:...]
+
+

The yubikey token identifier can be obtained by removing the last 32 +characters of any OTP value, and you can add more than one ID to the file.

+

Restart your ssh server to apply the changes.

+

Central authorization mapping

Create a file on /etc/yubikey_mappings that will contain all your users and +their respective yubikey token identifiers, like this:

+
<first username>:<Yubikey token ID 1>[:<Yubikey token ID 2][:...]
+<second username>:<Yubikey token ID 3>[:<Yubikey token ID 4][:...]
+
+

For this to work, you need to specify this file to the pam module authfile +parameter:

+
auth sufficient pam_yubico.so id=XXXX key=XXXX authfile=/etc/yubikey_mappings
+
+

After that estart your ssh server to apply the changes.

+

Logging in

The next time you're asked for a password on you ssh login you can use a +yubikey OTP instead of your current password -if you have any-.

+

This method works pretty well with authorized ssh keys as well, since you will +log-in automatically from a computer with a configured ssh key but an OTP -or +password- will be required for logging in from anywhere else.

+

Yubico-pam module | Github +Yubico | Home page

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/07/09/how-install-and-configure-yubikey-pam-module-archlinux/yubico-360.jpg b/blog/2013/07/09/how-install-and-configure-yubikey-pam-module-archlinux/yubico-360.jpg new file mode 100644 index 0000000..8a3cadf Binary files /dev/null and b/blog/2013/07/09/how-install-and-configure-yubikey-pam-module-archlinux/yubico-360.jpg differ diff --git a/blog/2013/07/09/how-install-and-configure-yubikey-pam-module-archlinux/yubico-640.jpg b/blog/2013/07/09/how-install-and-configure-yubikey-pam-module-archlinux/yubico-640.jpg new file mode 100644 index 0000000..2260f32 Binary files /dev/null and b/blog/2013/07/09/how-install-and-configure-yubikey-pam-module-archlinux/yubico-640.jpg differ diff --git a/blog/2013/07/09/how-install-and-configure-yubikey-pam-module-archlinux/yubico.jpg b/blog/2013/07/09/how-install-and-configure-yubikey-pam-module-archlinux/yubico.jpg new file mode 100644 index 0000000..2260f32 Binary files /dev/null and b/blog/2013/07/09/how-install-and-configure-yubikey-pam-module-archlinux/yubico.jpg differ diff --git a/blog/2013/08/10/warcraft-3-mac-wineskin/game-360.png b/blog/2013/08/10/warcraft-3-mac-wineskin/game-360.png new file mode 100644 index 0000000..817425f Binary files /dev/null and b/blog/2013/08/10/warcraft-3-mac-wineskin/game-360.png differ diff --git a/blog/2013/08/10/warcraft-3-mac-wineskin/game-640.png b/blog/2013/08/10/warcraft-3-mac-wineskin/game-640.png new file mode 100644 index 0000000..9061470 Binary files /dev/null and b/blog/2013/08/10/warcraft-3-mac-wineskin/game-640.png differ diff --git a/blog/2013/08/10/warcraft-3-mac-wineskin/game.png b/blog/2013/08/10/warcraft-3-mac-wineskin/game.png new file mode 100644 index 0000000..5d42987 Binary files /dev/null and b/blog/2013/08/10/warcraft-3-mac-wineskin/game.png differ diff --git a/blog/2013/08/10/warcraft-3-mac-wineskin/index.html b/blog/2013/08/10/warcraft-3-mac-wineskin/index.html new file mode 100644 index 0000000..16dd307 --- /dev/null +++ b/blog/2013/08/10/warcraft-3-mac-wineskin/index.html @@ -0,0 +1,116 @@ + + + + + Warcraft 3 on MAC with wineskin | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Warcraft 3 on MAC with wineskin

+
+ Published on August 10, 2013 +
+ +
+ +

A few days ago, I bought Warcraft III. I never finished it before, since I +didn't own the game, and lately I had this inner urge to play a game on the +Warcraft series. Since going back to World of Warcraft isn't an option, I +decided to rollback to the part of the Warcraft lore that is unknown to me.

+

Sadly after buying the game I discovered that they dropped support for the +game when Apple did the conversion of their hardware from powerpc to intel. +There was no way of running the mac version of the game on newer hardware, and +I even contacted Blizzard support about the matter, but the answer was the one +I feared: I had to use wine. This reminded me of the old days when I was a +linux user and this was needed in order to play anything on linux.

+

+

Installing the needed software

First of all, you will need to download +Wineskin, +as we're going to use this to "emulate" our windows environment. Also, +download the windows warcraft downloaders from your battle.net account.

+

Execute it and download the last engine (clicking on the plus symbol) and also +update the wrapper.

+

You should see your wineskin window similar to the one on the left.

+

Now you need to create a clean wrapper for your Warcraft III installation.

+

Creating the wrapper

Just click on the "Create New Blank Wrapper" button and give it a name. I will +go with "Warcraft III.app". It will ask you to install some mono/gecko +libraries needed for the wrapper. Just go with it and wait until all the +process finishes.

+

You will be prompted if you want to open the containing folder, do it since +now we need to configure our wrapper.

+

Now, right click the app you created and select "Show package contents".

+

Execute Wineskin.app, and select "Install software", on the next panel select +"Select setup executable" and go to the path of your warcraft 3 downloader, +that will prompt the installation menu when it finishes.

+

Install your warcraft as you would in a windows machine, and when you exit the +installer wineskin will ask for the main executable file, select "Warcraft +III.exe". After that, repeat the process with the Frozen Throne executable.

+

Configuration

We need to tweak some things before we can play, here's what I did:

+
    +
  • Go to set screen options and set windowed. Since I have a 16:9 screen and the game runs at 4:3, everything is streched. Maybe there's a 16:9 patch around the net.
  • +
  • I customized the icon with this one. You need to convert it to ICNS for using it with wineskin (you can use this online tool). Copy it into the package and select on the advanced options in the wineskin executable.
  • +
  • If you want to play with the frozen throne expansion, change the Windows EXE on the advanced settings panel to "Frozen Throne.exe".
  • +
  • Since wine can't play the cinematics, you can safely remove/rename the movies folder under the warcraft installation folder. (Default: drive_c/Program Files/Warcraft III)
  • +
  • Delete the game installers if you stored them into the wineskin package to keep the .app file size to a minimum.
  • +
+

Enjoy!

+

It's done! Store the Warcraft III.app somewhere if you don't want to repeat +the process if you delete the game.

+

Updates:

    +
  • Using the -opengl EXE flag will get you a smoother framerate. (thanks to Sylvain Prevost in the comments)
  • +
  • Suggested engine: WS9Wine1.7.2. (by Sylvain Prevost in the comments)
  • +
+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/08/10/warcraft-3-mac-wineskin/wineskin-360.png b/blog/2013/08/10/warcraft-3-mac-wineskin/wineskin-360.png new file mode 100644 index 0000000..f883531 Binary files /dev/null and b/blog/2013/08/10/warcraft-3-mac-wineskin/wineskin-360.png differ diff --git a/blog/2013/08/10/warcraft-3-mac-wineskin/wineskin-640.png b/blog/2013/08/10/warcraft-3-mac-wineskin/wineskin-640.png new file mode 100644 index 0000000..7ee8d05 Binary files /dev/null and b/blog/2013/08/10/warcraft-3-mac-wineskin/wineskin-640.png differ diff --git a/blog/2013/08/10/warcraft-3-mac-wineskin/wineskin.png b/blog/2013/08/10/warcraft-3-mac-wineskin/wineskin.png new file mode 100644 index 0000000..7ee8d05 Binary files /dev/null and b/blog/2013/08/10/warcraft-3-mac-wineskin/wineskin.png differ diff --git a/blog/2013/11/29/reading-data-ios-backups-manifestmbdb/index.html b/blog/2013/11/29/reading-data-ios-backups-manifestmbdb/index.html new file mode 100644 index 0000000..bfaf2e3 --- /dev/null +++ b/blog/2013/11/29/reading-data-ios-backups-manifestmbdb/index.html @@ -0,0 +1,233 @@ + + + + + Reading data from iOS backups: Manifest.mbdb | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Reading data from iOS backups: Manifest.mbdb

+
+ Published on November 29, 2013 +
+ +
+ +

Recently, I've been working on a tool to extract data from iOS backups, and one of the files that a backup have is the Manifest.mbdb (or mbdx for old versions).

The Manifest.mbdb is a binary file that contains records for the hashed files that the backup includes, the hashed files can be anything that a certain application requires or saved, from a image thumbnail to a sqlite3 database file.

Reading the file can be tricky, since the record itself have a variable length, so you can just split the file based on a delimiter, you need to read it byte to byte. I'm going to expose here the data structures this file contains:

+ + + + + + + + + + + + + + + + + + + + + + + +
String entity
TypeNameDescriptionNull value
uint16LenghtLength of the string0x0000
ASCII dataDataActual string of (length) size. Don't need to read this if length is null.nothing
+ + + + + + + + + + + + + + + + + + + + +
Property entity
TypeNameDescription
stringKeyKey of the property
stringvalueProperty value
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Record entity
TypeField nameDescriptionNull value
stringDomainApp domain 
stringPathPath to file0x0000
stringTarget 0xFFFF
stringHashSHA-1 hash of the file0xFFFF
stringEncription keyEncryption key -if any-0xFFFF
uint16ModeFile mode: +
    +
  • 0xAXXX: Symlink
  • +
  • 0x4000: Directory
  • +
  • 0x8000: File
  • +
+
 
uint64inode number  
uint32User ID  
uint32Group ID  
uint32Last modified timeEPOCH 
uint32Last accesed timeEPOCH 
uint32Created timeEPOCH 
uint64File size 0x0...0
uint8Flag0x1 to 0xB 
uint8Properties numberNumber of properties to follow with this record0x00
property[0...n]Property objectsEach property object -if any-nothing
--File nameSHA1(domain + path) 

More info:  The iPhone Wiki | This image I found

+ +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/12/05/howto-starbound-dedicated-server-linux-machine/index.html b/blog/2013/12/05/howto-starbound-dedicated-server-linux-machine/index.html new file mode 100644 index 0000000..22bee45 --- /dev/null +++ b/blog/2013/12/05/howto-starbound-dedicated-server-linux-machine/index.html @@ -0,0 +1,105 @@ + + + + + How to: Starbound dedicated server on a linux machine | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

How to: Starbound dedicated server on a linux machine

+
+ Published on December 05, 2013 +
+ +
+ +

Starbound logo

+

The day it's here! Starbound beta is finally here, and what could be better +than having a dedicated server to play with your friends? Let's get this done.

+

Install SteamCMD

Official documentation: https://developer.valvesoftware.com/wiki/SteamCMD

+

Basically you need to download it's shell script to manage steam apps, take +special attention to the lib32 section if you're running the server in a 64bit +machine.

+
wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
+tar xzf steamcmd_linux.tar.gz
+
+

Install Starbound on the server

You will need to login with your steam username here to download/update +starbound. Your account is not needed to keep the server running.

+
./steamcmd.sh
+# Steam updating and validating stuff
+Steam> login your_username_here
+# Your password WILL BE VISIBLE. But after a first login
+# your credentials will be cached so you don't need to
+# expose them everytime you need to use the steamcmd.
+Steam> app_update 211820
+# This will install starbound, it will take a while
+# depending on the server bandwidth.
+Steam> app_update 211820 validate
+# Validate installation, just in case.
+# I do this in two separate steps because -at least for me-
+# validating on a fresh install take a lot longer that
+# just installing and validating afterwards. Don't sure why.
+Steam> quit
+# Finished!
+
+

Start the server

Go to Steam/SteamApps/common/Starbound/linuxXX/ (where XX is 32 or 64 based +on your server architecture).

+

Launch launch_starbound_client.sh

+

If you want to use the universe you played on your computer, just upload the +universe folder found on your computer to the same folder where the server +script is.

+

Happy gaming!

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2013/12/05/howto-starbound-dedicated-server-linux-machine/starbound-logo-360.jpg b/blog/2013/12/05/howto-starbound-dedicated-server-linux-machine/starbound-logo-360.jpg new file mode 100644 index 0000000..921fc5c Binary files /dev/null and b/blog/2013/12/05/howto-starbound-dedicated-server-linux-machine/starbound-logo-360.jpg differ diff --git a/blog/2013/12/05/howto-starbound-dedicated-server-linux-machine/starbound-logo-640.jpg b/blog/2013/12/05/howto-starbound-dedicated-server-linux-machine/starbound-logo-640.jpg new file mode 100644 index 0000000..921fc5c Binary files /dev/null and b/blog/2013/12/05/howto-starbound-dedicated-server-linux-machine/starbound-logo-640.jpg differ diff --git a/blog/2013/12/05/howto-starbound-dedicated-server-linux-machine/starbound-logo.jpg b/blog/2013/12/05/howto-starbound-dedicated-server-linux-machine/starbound-logo.jpg new file mode 100644 index 0000000..921fc5c Binary files /dev/null and b/blog/2013/12/05/howto-starbound-dedicated-server-linux-machine/starbound-logo.jpg differ diff --git a/blog/2013/12/31/2013/index.html b/blog/2013/12/31/2013/index.html new file mode 100644 index 0000000..22c7c62 --- /dev/null +++ b/blog/2013/12/31/2013/index.html @@ -0,0 +1,87 @@ + + + + + 2013 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

2013

+
+ Published on December 31, 2012 +
+ +
+ +

According to the Gregorian calendar, a new year is coming.

+

I'm not gonna waste my time -nor yours- making promises, wishing things and +all that crappy stuff. 2012 has been good and bad, I want 2013 to stay that +way, but I will keep that to me and I'm going to expose what I've thought +about the blog and what I want to do with it during 2013.

+
    +
  • First of all, the #AppSunday thing: doing it. I've missed the last two because of the date and also I wasn't really in the mood to write a word either. I really want to do it, so I will keep writing a Sunday post about apps and stuff as long as I've something about to write.

    +
  • +
  • As for new technologies, the reason I do not write too much about developing is because I do not think I'm a good programmer. I can't think I'm either good nor bad for something I love. I develop just because I enjoy it, as I've the bless that it's also my job. But after a lot of thinking, I'm going to post some micro-entries about new things I'm using -that could be things you already know long time ago- like PaaS services, libraries and stuff in general. I've a draft about how to copy a mysql record with one SQL statement, for example. If people like the posts as I like writing them, I will keep on with it.

    +
  • +
  • Also, this last year has been really… complete? I've started a lot of new projects -I really mean it, a lot of things whisper around my mind and some of it already have drafts and time invested on them-, so I've thought writing about its evolution. I don't know if I will make individual posts of each project or a weekly summary of all of them -or at least the ones I've worked that week-, but I want to share experiences, problems, solutions, technologies, code… with you.

    +
  • +
  • I still don't know if I will write personal experiences/opinion posts. I assumed that I will decide it when the time comes.

    +
  • +
  • There won't be a "What I've done in the last six months" post anymore. The one that is already in the blog will be purged when the translation is completed.

    +
  • +
+

Now, get off the screen, eat a lot and get drunk. Today is the day.

+

Happy new year!

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2015/05/04/amazon-ec2-no-space-left-device/index.html b/blog/2015/05/04/amazon-ec2-no-space-left-device/index.html new file mode 100644 index 0000000..c3961ed --- /dev/null +++ b/blog/2015/05/04/amazon-ec2-no-space-left-device/index.html @@ -0,0 +1,112 @@ + + + + + Amazon EC2: No space left on device | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Amazon EC2: No space left on device

+
+ Published on May 04, 2015 +
+ +
+ +

So a funny thing happened today at out pre-production environment. I was +performing our pre-big-PR deployment when a beautiful error was shown in my +terminal:

+
cannot create X: No space left on device
+
+

What?! How could that be possible. I know that our environment don't have a +lot of bytes for us to play with but having the storage already full with our +database and other services outside this machine just wasn't possible. And I +was right.

+
fmartingr@pre-production:~$ df -h
+Filesystem      Size  Used Avail Use% Mounted on
+/dev/xvda1       59G   37G   21G  65% /
+none            4.0K     0  4.0K   0% /sys/fs/cgroup
+udev            2.0G   12K  2.0G   1% /dev
+tmpfs           396M  400K  395M   1% /run
+none            5.0M     0  5.0M   0% /run/lock
+none            2.0G     0  2.0G   0% /run/shm
+none            100M     0  100M   0% /run/user
+
+

What?! Now I sure don't understand a thing. I was laughing hysterically when +my brain just started working as I remembered an old friend: the +inode.

+
fmartingr@pre-production:~$ df -i
+Filesystem      Inodes   IUsed   IFree IUse% Mounted on
+/dev/xvda1     3932160 3932160       0  100% /
+none            505855       2  505853    1% /sys/fs/cgroup
+udev            504558     403  504155    1% /dev
+tmpfs           505855     332  505523    1% /run
+none            505855       1  505854    1% /run/lock
+none            505855       1  505854    1% /run/shm
+none            505855       4  505851    1% /run/user
+
+

Fk you. Our deploys are made using "isolated" builds. That is, we reinstall +pip/bower requirements for every build.** So each build take about ~50k +inodes, and we keep some in case some rollback is needed, but of course, +keeping two months old builds wasn't needed at all, so I made a script that +just deletes builds older than two weeks and our poor thing was happy again.

+

To search which folder of your server is eating the inode limit, you can run +this command:

+
find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -nr
+
+

This will show the path name and the inode count, keep going inside dirs to +get some detailed input, once found, just delete the files that are causing +havok.

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2015/05/07/manga-recommendation-dice-cube-changes-everything/cover-360.jpg b/blog/2015/05/07/manga-recommendation-dice-cube-changes-everything/cover-360.jpg new file mode 100644 index 0000000..a0ffd88 Binary files /dev/null and b/blog/2015/05/07/manga-recommendation-dice-cube-changes-everything/cover-360.jpg differ diff --git a/blog/2015/05/07/manga-recommendation-dice-cube-changes-everything/cover-640.jpg b/blog/2015/05/07/manga-recommendation-dice-cube-changes-everything/cover-640.jpg new file mode 100644 index 0000000..a0ffd88 Binary files /dev/null and b/blog/2015/05/07/manga-recommendation-dice-cube-changes-everything/cover-640.jpg differ diff --git a/blog/2015/05/07/manga-recommendation-dice-cube-changes-everything/cover.jpg b/blog/2015/05/07/manga-recommendation-dice-cube-changes-everything/cover.jpg new file mode 100644 index 0000000..a0ffd88 Binary files /dev/null and b/blog/2015/05/07/manga-recommendation-dice-cube-changes-everything/cover.jpg differ diff --git a/blog/2015/05/07/manga-recommendation-dice-cube-changes-everything/index.html b/blog/2015/05/07/manga-recommendation-dice-cube-changes-everything/index.html new file mode 100644 index 0000000..e25680d --- /dev/null +++ b/blog/2015/05/07/manga-recommendation-dice-cube-changes-everything/index.html @@ -0,0 +1,75 @@ + + + + + Manga recommendation: Dice - The cube that changes everything | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Manga recommendation: Dice - The cube that changes everything

+
+ Published on May 07, 2015 +
+ +
+ +

Dice

+

Summary

Dongtae is rock bottom in everything: Looks, grades, life, everything. But all +that might change. If you could change your life by playing a game, would you?

+

Type: Manhwa +Chapters: 93+ (ongoing) +Genre: Action, Drama, Fantasy, Psychological, Romance, School Life, Shounen, Slice Of Life, Supernatural, Webtoons +Story/Art: Yun Hyun Suk

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2015/05/14/manga-recommendation-kamisama-no-iutoori-ni/88875-360.jpg b/blog/2015/05/14/manga-recommendation-kamisama-no-iutoori-ni/88875-360.jpg new file mode 100644 index 0000000..a25617b Binary files /dev/null and b/blog/2015/05/14/manga-recommendation-kamisama-no-iutoori-ni/88875-360.jpg differ diff --git a/blog/2015/05/14/manga-recommendation-kamisama-no-iutoori-ni/88875-640.jpg b/blog/2015/05/14/manga-recommendation-kamisama-no-iutoori-ni/88875-640.jpg new file mode 100644 index 0000000..a25617b Binary files /dev/null and b/blog/2015/05/14/manga-recommendation-kamisama-no-iutoori-ni/88875-640.jpg differ diff --git a/blog/2015/05/14/manga-recommendation-kamisama-no-iutoori-ni/88875.jpg b/blog/2015/05/14/manga-recommendation-kamisama-no-iutoori-ni/88875.jpg new file mode 100644 index 0000000..a25617b Binary files /dev/null and b/blog/2015/05/14/manga-recommendation-kamisama-no-iutoori-ni/88875.jpg differ diff --git a/blog/2015/05/14/manga-recommendation-kamisama-no-iutoori-ni/index.html b/blog/2015/05/14/manga-recommendation-kamisama-no-iutoori-ni/index.html new file mode 100644 index 0000000..65ac2b6 --- /dev/null +++ b/blog/2015/05/14/manga-recommendation-kamisama-no-iutoori-ni/index.html @@ -0,0 +1,77 @@ + + + + + Manga recommendation: Kamisama no Iutoori Ni | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Manga recommendation: Kamisama no Iutoori Ni

+
+ Published on May 14, 2015 +
+ +
+ +

Dice

+

Summary

Starts at the same time as the prequel but it follows the survival story of +new characters, the ones who didn't go to school at the first day, who face +different challenges than those in the prequel.

+

Prequel: Kamisama no Iutoori +Chapters: 107 (ongoing) +Genre: Action, Horror, Shounen, Supernatural +Story: Muneyuki Kaneshiro +Art: Akeji Fujimura

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2015/07/18/piweek-viii/guild-empire_9xA43PS-360.png b/blog/2015/07/18/piweek-viii/guild-empire_9xA43PS-360.png new file mode 100644 index 0000000..63fa1ce Binary files /dev/null and b/blog/2015/07/18/piweek-viii/guild-empire_9xA43PS-360.png differ diff --git a/blog/2015/07/18/piweek-viii/guild-empire_9xA43PS-640.png b/blog/2015/07/18/piweek-viii/guild-empire_9xA43PS-640.png new file mode 100644 index 0000000..3960651 Binary files /dev/null and b/blog/2015/07/18/piweek-viii/guild-empire_9xA43PS-640.png differ diff --git a/blog/2015/07/18/piweek-viii/guild-empire_9xA43PS.png b/blog/2015/07/18/piweek-viii/guild-empire_9xA43PS.png new file mode 100644 index 0000000..650d8b3 Binary files /dev/null and b/blog/2015/07/18/piweek-viii/guild-empire_9xA43PS.png differ diff --git a/blog/2015/07/18/piweek-viii/index.html b/blog/2015/07/18/piweek-viii/index.html new file mode 100644 index 0000000..d8fb2f1 --- /dev/null +++ b/blog/2015/07/18/piweek-viii/index.html @@ -0,0 +1,131 @@ + + + + + PiWeek VIII | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

PiWeek VIII

+
+ Published on July 18, 2015 +
+ +
+ +

While writing this post all the content was deleted because of a hardware +problem and sadly this is less that I wrote originally. :(

+
+

+

This week have been awesome. After two years I finally went back to the +Personal Innovation Week for a second time, and as motivated as it were, I'm +planning to repeat at the end of the year. For those who don't know what a +ΠWEEK is, its site explains it very well: ΠWEEK +/paɪ wiːk/ is an original idea by Kaleidos and it consists in allowing +employees from participant technology companies to leave their ongoing work in +standby and dedicate an entire week to personal projects. The plan is to enjoy +a ΠWEEK every six months, particularly in December and July, and allow +employees to play and innovate.

+

Putting it simple: you can either present you own project for people to hop in +or you can join anothers team project and create something, play with new +technologies and of course, learn new stuff. This time the teams and projects +were incredible, I meet up with the Kaleidos team again after a long time (too +long!), played some Winjammers (and got beat every single time), but of +course, learn a few new things as you do every time you play around.

+

Our team

+

From left to right, top to bottom:

+ +

Our project

+

Our project, designed by Ramiro and some other friends is a really complex +game in which you take control of a guild and it's guild members playing +against other player's guilds.

+

Each turn, a player send every guild member to do some actions (line wood- +cutting, praying, breaking a leg to another guild member, etc) and that action +is dice-rolled witch success/failure results. Each member have it's own stats +and adquired conditions (buffs/debuffs) and so on. The MVP idea is to adquire +reputation and the guild who have the most reputation in turn 20 wins, but +there's a 30 page document with a lot of non-developed stuff for the game.

+

It's was really fun to make stuff different than my daily job routine, using +libraries (or just plain python types) than django. There's a world out there +and even if it was little things you end up always learning something new.

+

Honorable mentions

Even if my team end up winning this ΠWEEK, there was projects that also show +how much can you achieve in just five days with a smaill team, my personal two +favourites were:

+
    +
  • Zombie time!!, a multiplayer turn-based-and-real-time zombie survival game. This was expected since I love zombie games. They managed to get an almost fully playable game in just five days, be sure to check it out because it seemed really fun.
  • +
  • UXBox, an interactive wireflaming tool created because there aren't any real open source options out there.
  • +
+

But of course, there was a lot of projects and people working there, be sure +to check it out in the official piweek blog or +in the piweek github group.

+

Conclusion

+

The ΠWEEK is an awesome event and more companies should start leting their +people use a percentage of the time into personal projects, learning new stuff +and improving their knowledge. Or you can just join the ΠWEEK two weeks a year +so awesome people start making awesome stuff.

+

Really, if you are a developer and can join this event, do it, and if you are +their boss, let them do so!

+

_Post pictures by +@bameda, +@yamila_moreno and +@ilopmar_

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2015/07/18/piweek-viii/piweek-viii-presentations-360.jpg b/blog/2015/07/18/piweek-viii/piweek-viii-presentations-360.jpg new file mode 100644 index 0000000..10f7b75 Binary files /dev/null and b/blog/2015/07/18/piweek-viii/piweek-viii-presentations-360.jpg differ diff --git a/blog/2015/07/18/piweek-viii/piweek-viii-presentations-640.jpg b/blog/2015/07/18/piweek-viii/piweek-viii-presentations-640.jpg new file mode 100644 index 0000000..cfded3b Binary files /dev/null and b/blog/2015/07/18/piweek-viii/piweek-viii-presentations-640.jpg differ diff --git a/blog/2015/07/18/piweek-viii/piweek-viii-presentations.jpg b/blog/2015/07/18/piweek-viii/piweek-viii-presentations.jpg new file mode 100644 index 0000000..cfded3b Binary files /dev/null and b/blog/2015/07/18/piweek-viii/piweek-viii-presentations.jpg differ diff --git a/blog/2015/07/18/piweek-viii/piweek-viii-team-360.jpg b/blog/2015/07/18/piweek-viii/piweek-viii-team-360.jpg new file mode 100644 index 0000000..8cf4710 Binary files /dev/null and b/blog/2015/07/18/piweek-viii/piweek-viii-team-360.jpg differ diff --git a/blog/2015/07/18/piweek-viii/piweek-viii-team-640.jpg b/blog/2015/07/18/piweek-viii/piweek-viii-team-640.jpg new file mode 100644 index 0000000..c92eab2 Binary files /dev/null and b/blog/2015/07/18/piweek-viii/piweek-viii-team-640.jpg differ diff --git a/blog/2015/07/18/piweek-viii/piweek-viii-team.jpg b/blog/2015/07/18/piweek-viii/piweek-viii-team.jpg new file mode 100644 index 0000000..860d80e Binary files /dev/null and b/blog/2015/07/18/piweek-viii/piweek-viii-team.jpg differ diff --git a/blog/2015/07/22/manga-recommendation-one-punch-man/index.html b/blog/2015/07/22/manga-recommendation-one-punch-man/index.html new file mode 100644 index 0000000..42ab8f3 --- /dev/null +++ b/blog/2015/07/22/manga-recommendation-one-punch-man/index.html @@ -0,0 +1,81 @@ + + + + + Manga recommendation: One-punch man | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Manga recommendation: One-punch man

+
+ Published on July 22, 2015 +
+ +
+ +

Dice

+

Summary

In this new action-comedy, everything about a young man named Saitama screams +"AVERAGE," from his lifeless expression, to his bald head, to his unimpressive +physique. However, this average-looking fellow doesn't have your average +problem... He's actually a superhero that's looking for tough opponents! The +problem is, every time he finds a promising candidate he beats the snot out of +them in one punch. Can Saitama finally find an evil villain strong enough to +challenge him? Follow Saitama through his hilarious romps as he searches for +new bad guys to challenge!

+

Chapters: 46 (ongoing) +Genre: Action, Comedy, Parody, Sci-Fi, Super Power, Supernatural, Seinen +Story: Yusuke Murata +Art: ONE

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2015/07/22/manga-recommendation-one-punch-man/onepunchman_manga_cover-360.png b/blog/2015/07/22/manga-recommendation-one-punch-man/onepunchman_manga_cover-360.png new file mode 100644 index 0000000..b5d08de Binary files /dev/null and b/blog/2015/07/22/manga-recommendation-one-punch-man/onepunchman_manga_cover-360.png differ diff --git a/blog/2015/07/22/manga-recommendation-one-punch-man/onepunchman_manga_cover-640.png b/blog/2015/07/22/manga-recommendation-one-punch-man/onepunchman_manga_cover-640.png new file mode 100644 index 0000000..1481be4 Binary files /dev/null and b/blog/2015/07/22/manga-recommendation-one-punch-man/onepunchman_manga_cover-640.png differ diff --git a/blog/2015/07/22/manga-recommendation-one-punch-man/onepunchman_manga_cover.png b/blog/2015/07/22/manga-recommendation-one-punch-man/onepunchman_manga_cover.png new file mode 100644 index 0000000..1481be4 Binary files /dev/null and b/blog/2015/07/22/manga-recommendation-one-punch-man/onepunchman_manga_cover.png differ diff --git a/blog/2015/07/23/emacs-day-zero/emacs-360.png b/blog/2015/07/23/emacs-day-zero/emacs-360.png new file mode 100644 index 0000000..306ef05 Binary files /dev/null and b/blog/2015/07/23/emacs-day-zero/emacs-360.png differ diff --git a/blog/2015/07/23/emacs-day-zero/emacs-640.png b/blog/2015/07/23/emacs-day-zero/emacs-640.png new file mode 100644 index 0000000..eb4c677 Binary files /dev/null and b/blog/2015/07/23/emacs-day-zero/emacs-640.png differ diff --git a/blog/2015/07/23/emacs-day-zero/emacs-original-360.png b/blog/2015/07/23/emacs-day-zero/emacs-original-360.png new file mode 100644 index 0000000..fb38636 Binary files /dev/null and b/blog/2015/07/23/emacs-day-zero/emacs-original-360.png differ diff --git a/blog/2015/07/23/emacs-day-zero/emacs-original-640.png b/blog/2015/07/23/emacs-day-zero/emacs-original-640.png new file mode 100644 index 0000000..eaadb80 Binary files /dev/null and b/blog/2015/07/23/emacs-day-zero/emacs-original-640.png differ diff --git a/blog/2015/07/23/emacs-day-zero/emacs-original.png b/blog/2015/07/23/emacs-day-zero/emacs-original.png new file mode 100644 index 0000000..eaadb80 Binary files /dev/null and b/blog/2015/07/23/emacs-day-zero/emacs-original.png differ diff --git a/blog/2015/07/23/emacs-day-zero/emacs.png b/blog/2015/07/23/emacs-day-zero/emacs.png new file mode 100644 index 0000000..7cdd40e Binary files /dev/null and b/blog/2015/07/23/emacs-day-zero/emacs.png differ diff --git a/blog/2015/07/23/emacs-day-zero/index.html b/blog/2015/07/23/emacs-day-zero/index.html new file mode 100644 index 0000000..05dd8ed --- /dev/null +++ b/blog/2015/07/23/emacs-day-zero/index.html @@ -0,0 +1,84 @@ + + + + + Emacs: Day zero | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Emacs: Day zero

+
+ Published on July 23, 2015 +
+ +
+ +

They tricked me.

+

I was confortably on my Atom editor when I had to open this ugly thing.

+

+

I'm trying to make the change. Also, to make things easier I switched my +layout to US since all my servers have that keyboard layout but... my muscle +memory is really good, so I still miss a lot.

+

After a basic configuration yesterday, I thought that the best way to achieve +this was to change completely from one to another and that's what I've done, +work the entire day with this. At first I was slowed down a bit because I had +to configure some keybinding I was used to and install the basic addons I use +the most (and setup them emacs style), but after a short period I was mostly +used to the harm of my little finger. It still hurts.

+

It's a long way to go and this is only day zero but I will keep writing posts +every one or two weeks with my improvements as a newbie guide to emacs.

+

Also, my UI now looks more or less like this:

+

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2015/07/29/manga-recommendation-eden-no-ori/cage_of_eden_volume_1_cover-360.jpg b/blog/2015/07/29/manga-recommendation-eden-no-ori/cage_of_eden_volume_1_cover-360.jpg new file mode 100644 index 0000000..55c16c1 Binary files /dev/null and b/blog/2015/07/29/manga-recommendation-eden-no-ori/cage_of_eden_volume_1_cover-360.jpg differ diff --git a/blog/2015/07/29/manga-recommendation-eden-no-ori/cage_of_eden_volume_1_cover-640.jpg b/blog/2015/07/29/manga-recommendation-eden-no-ori/cage_of_eden_volume_1_cover-640.jpg new file mode 100644 index 0000000..55c16c1 Binary files /dev/null and b/blog/2015/07/29/manga-recommendation-eden-no-ori/cage_of_eden_volume_1_cover-640.jpg differ diff --git a/blog/2015/07/29/manga-recommendation-eden-no-ori/cage_of_eden_volume_1_cover.jpg b/blog/2015/07/29/manga-recommendation-eden-no-ori/cage_of_eden_volume_1_cover.jpg new file mode 100644 index 0000000..55c16c1 Binary files /dev/null and b/blog/2015/07/29/manga-recommendation-eden-no-ori/cage_of_eden_volume_1_cover.jpg differ diff --git a/blog/2015/07/29/manga-recommendation-eden-no-ori/index.html b/blog/2015/07/29/manga-recommendation-eden-no-ori/index.html new file mode 100644 index 0000000..7151e37 --- /dev/null +++ b/blog/2015/07/29/manga-recommendation-eden-no-ori/index.html @@ -0,0 +1,78 @@ + + + + + Manga recommendation: Eden no ori | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Manga recommendation: Eden no ori

+
+ Published on July 29, 2015 +
+ +
+ +

Dice

+

Summary

Akira and his classmates are travelling on a plane when it crashes onto an +island inhabited by species thought to have been extinct. The situation +becomes increasingly desperate as some of Akira's classmates are eaten alive, +while some kill others in desperation. Now Akira and a few other survivors are +trying to survive what seems to be a horrible nightmare.

+

Chapters: 185 (finished) +Genre: Action, Adventure, Comedy, Drama, Ecchi, Horror, Mystery, Psychological, Romance, Shounen, Tragedy +Story: Yamada Yoshinobu +Art: Yamada Yoshinobu

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2015/08/04/tmux-basics/index.html b/blog/2015/08/04/tmux-basics/index.html new file mode 100644 index 0000000..c732bf9 --- /dev/null +++ b/blog/2015/08/04/tmux-basics/index.html @@ -0,0 +1,177 @@ + + + + + Tmux basics | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Tmux basics

+
+ Published on August 04, 2015 +
+ +
+ +

+

Discovered it not a long time ago (and now replaced with the experimental +version of iterm2 because of goodies), +tmux deserves a lot of attention because it have lots of potential.

+

TMUX stands for Terminal Multiplexer. It lets you switch easily between +several programs in one terminal, detach them (they keep running in the +background) and reattach them to a different terminal. And do a lot more. +Yeah, they sell themselves well.

+

For the novices, it lets you have panels (split terminals) and windows just +with some keybinds, detaching from them (so they keep running) and with the +possibility of storing configurations for certain tasks, in which you need to +open a running server and editor and some watcher at the same time, just with +a command.

+

For example, if you are like in the top screenshot, pressing CTRL+b % +CTRL+b " changes the layout to this:

+

+

And those numbers with a tilde at the bottom? The open windows. You can open +more pressing CTRL+b c, like this:

+

+

This are the two basic things you will use everyday. Of course, there are +more stuff you can do, but for the basics I will list the more +frequent keybinds here to start using it right now.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Meta keyCTRL+b
Split pane horizontalMeta+"
Split pane verticalMeta+%
Swap paneMeta+o
Kill paneMeta+x
Toggle focus on current paneMeta+z
Show pane numbersMeta+q
Press a the number of the pane you want to focus when shown.
Break pane into windowMeta++
Restore window to paneMeta+-
Change pane layoutMeta+spacebar
Create new windowMeta+c
Switch to window #xMeta+<number>
Kill windowMeta+&
Next windowMeta+n
Previous windowMeta+p
List windowsMeta+w
Rename windowMeta+,
Find windowMeta+f
+ + + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2015/08/04/tmux-basics/tmux-360.png b/blog/2015/08/04/tmux-basics/tmux-360.png new file mode 100644 index 0000000..80ddceb Binary files /dev/null and b/blog/2015/08/04/tmux-basics/tmux-360.png differ diff --git a/blog/2015/08/04/tmux-basics/tmux-640.png b/blog/2015/08/04/tmux-basics/tmux-640.png new file mode 100644 index 0000000..770d1da Binary files /dev/null and b/blog/2015/08/04/tmux-basics/tmux-640.png differ diff --git a/blog/2015/08/04/tmux-basics/tmux-horver-360.png b/blog/2015/08/04/tmux-basics/tmux-horver-360.png new file mode 100644 index 0000000..1993053 Binary files /dev/null and b/blog/2015/08/04/tmux-basics/tmux-horver-360.png differ diff --git a/blog/2015/08/04/tmux-basics/tmux-horver-640.png b/blog/2015/08/04/tmux-basics/tmux-horver-640.png new file mode 100644 index 0000000..76d4ced Binary files /dev/null and b/blog/2015/08/04/tmux-basics/tmux-horver-640.png differ diff --git a/blog/2015/08/04/tmux-basics/tmux-horver.png b/blog/2015/08/04/tmux-basics/tmux-horver.png new file mode 100644 index 0000000..76d4ced Binary files /dev/null and b/blog/2015/08/04/tmux-basics/tmux-horver.png differ diff --git a/blog/2015/08/04/tmux-basics/tmux-window-360.png b/blog/2015/08/04/tmux-basics/tmux-window-360.png new file mode 100644 index 0000000..a0d4dad Binary files /dev/null and b/blog/2015/08/04/tmux-basics/tmux-window-360.png differ diff --git a/blog/2015/08/04/tmux-basics/tmux-window-640.png b/blog/2015/08/04/tmux-basics/tmux-window-640.png new file mode 100644 index 0000000..1017693 Binary files /dev/null and b/blog/2015/08/04/tmux-basics/tmux-window-640.png differ diff --git a/blog/2015/08/04/tmux-basics/tmux-window.png b/blog/2015/08/04/tmux-basics/tmux-window.png new file mode 100644 index 0000000..1017693 Binary files /dev/null and b/blog/2015/08/04/tmux-basics/tmux-window.png differ diff --git a/blog/2015/08/04/tmux-basics/tmux.png b/blog/2015/08/04/tmux-basics/tmux.png new file mode 100644 index 0000000..770d1da Binary files /dev/null and b/blog/2015/08/04/tmux-basics/tmux.png differ diff --git a/blog/2015/08/13/manga-recommendation-gamer/index.html b/blog/2015/08/13/manga-recommendation-gamer/index.html new file mode 100644 index 0000000..227792c --- /dev/null +++ b/blog/2015/08/13/manga-recommendation-gamer/index.html @@ -0,0 +1,79 @@ + + + + + Manga recommendation: The Gamer | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Manga recommendation: The Gamer

+
+ Published on August 13, 2015 +
+ +
+ +

+

Summary

Han Jee-Han, a normal high school student, suddenly develops a special power +where his entire world is shifted into a game-like setting. He can see the +power levels of people, look at the stats of a seemingly normal item, get +abilities, and even level up! Follow Han Jee-Han as he discovers how to use +this power, and maybe even where it came from.

+

Type: Manhwa +Chapters: 90+ (ongoing) +Genre: Action, Adventure, Comedy, School Life, Shounen, Supernatural +Story: Sung San-Young +Art: Sang-Ah

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2015/08/13/manga-recommendation-gamer/the-gamer-360.png b/blog/2015/08/13/manga-recommendation-gamer/the-gamer-360.png new file mode 100644 index 0000000..636ca5b Binary files /dev/null and b/blog/2015/08/13/manga-recommendation-gamer/the-gamer-360.png differ diff --git a/blog/2015/08/13/manga-recommendation-gamer/the-gamer-640.png b/blog/2015/08/13/manga-recommendation-gamer/the-gamer-640.png new file mode 100644 index 0000000..05c18c3 Binary files /dev/null and b/blog/2015/08/13/manga-recommendation-gamer/the-gamer-640.png differ diff --git a/blog/2015/08/13/manga-recommendation-gamer/the-gamer.png b/blog/2015/08/13/manga-recommendation-gamer/the-gamer.png new file mode 100644 index 0000000..05c18c3 Binary files /dev/null and b/blog/2015/08/13/manga-recommendation-gamer/the-gamer.png differ diff --git a/blog/2016/04/08/2016-updates/index.html b/blog/2016/04/08/2016-updates/index.html new file mode 100644 index 0000000..d4e2c4d --- /dev/null +++ b/blog/2016/04/08/2016-updates/index.html @@ -0,0 +1,80 @@ + + + + + 2016 updates | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

2016 updates

+
+ Published on April 08, 2016 +
+ +
+ +

It's sad but I always end up not writing in the blog for some reason. I will +post here a short TL;DR of what happened in the last months and some of the +stuff I want to do for the site (and what I've already done).

+
    +
  • First of all, I got promoted at my job (this was like... months ago!) which left me with even less time that before for personal stuff. I can't believe I'm saying this but when I get out of the office the last thing I want to do is sitting in front of my computer again.
  • +
  • Good part, I have been trying all the stuff at work I couldn't before and adding goodies to the dev team (automatic code reviews, unit testing, deployments, etc)
  • +
  • Bad stuff: now I develop less than before. :_
  • +
  • Also, I wasn't comfortable with how the editor on the site worked (it's a CKEditor) because I'm a big fan of markdown so I wasn't eager to do nothing until some day I did a clumsy implementation to support markdown conversion to HTML to the blog. I also added some other goodies.
  • +
  • More stuff to the mix? I got pretty much overwhelmed with all the things I had to/want to/should do on a daily basis so my workflow was chaotic. I have been trying new habits to sort everything out and now I'm more or less comfortable with the results. And I will write an entry about that :)
  • +
  • Related with the last one now I'm not giving up on reading all the stuff in "the read later vault" which until not so long ago was filled with diverse stuff and articles came in but not out.
  • +
  • I play a bit now! Since I have thoughts and days in order now I can rest from time to time to play some videogames. It was time to remove the dust from my 3DS.
  • +
+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2016/04/11/penguin-trials/index.html b/blog/2016/04/11/penguin-trials/index.html new file mode 100644 index 0000000..ea256c8 --- /dev/null +++ b/blog/2016/04/11/penguin-trials/index.html @@ -0,0 +1,96 @@ + + + + + The penguin trials | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

The penguin trials

+
+ Published on April 11, 2016 +
+ +
+ +

I've been using OS X for my workstation environment for about five or six +years now. I always say (and believe to this moment) that OS X is the most +comfortable environment for work.

+

It has an stable window manager, a terminal that does not suck and lot's of +software related to my daily activities. I can reinstall and have a fully +working environment from scratch in an hour or so (no hdd dupes, a full OS +installation).

+

I've been really comfortable with this for a long time, and with the last +features coming to windows +I thought that it was time to refresh my GNU/Linux rants and give it a try +again like I did to Android not so long ago.

+

So, here's the deal: Starting today I'm going to spend one month on a linux +environment at work to see how it goes. I think the starting transition will +be easier since at work most of the company tools are online or done via ssh, +and my most used app is emacs and I use it directly on a terminal.

+

The chosen penguin is: AntergOS (based on Arch +Linux, it simplified me the installation process) +with i3 as the window manager. I always wanted to try a +tiling wm so this is the best moment to do so, and Arch was my favourite OS +back at the time and I will know how to use most of the internals if it hasn't +changed a lot.

+

+

For now I just have installed my most common apps and I haven't tuned a bit +apart from the screensaver. I'm sure this will change in no time. I will try +to make weekly or biweekly entries with updates, or if things don't get out of +control just a summary after a month.

+

Let's see how it goes!

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2016/04/11/penguin-trials/wallpaper-360.png b/blog/2016/04/11/penguin-trials/wallpaper-360.png new file mode 100644 index 0000000..2b2c62a Binary files /dev/null and b/blog/2016/04/11/penguin-trials/wallpaper-360.png differ diff --git a/blog/2016/04/11/penguin-trials/wallpaper-640.png b/blog/2016/04/11/penguin-trials/wallpaper-640.png new file mode 100644 index 0000000..93e1b09 Binary files /dev/null and b/blog/2016/04/11/penguin-trials/wallpaper-640.png differ diff --git a/blog/2016/04/11/penguin-trials/wallpaper.png b/blog/2016/04/11/penguin-trials/wallpaper.png new file mode 100644 index 0000000..e3ad396 Binary files /dev/null and b/blog/2016/04/11/penguin-trials/wallpaper.png differ diff --git a/blog/2016/04/27/penguin-trials-after-two-weeks/dunst-360.png b/blog/2016/04/27/penguin-trials-after-two-weeks/dunst-360.png new file mode 100644 index 0000000..e35a444 Binary files /dev/null and b/blog/2016/04/27/penguin-trials-after-two-weeks/dunst-360.png differ diff --git a/blog/2016/04/27/penguin-trials-after-two-weeks/dunst-640.png b/blog/2016/04/27/penguin-trials-after-two-weeks/dunst-640.png new file mode 100644 index 0000000..e35a444 Binary files /dev/null and b/blog/2016/04/27/penguin-trials-after-two-weeks/dunst-640.png differ diff --git a/blog/2016/04/27/penguin-trials-after-two-weeks/dunst.png b/blog/2016/04/27/penguin-trials-after-two-weeks/dunst.png new file mode 100644 index 0000000..e35a444 Binary files /dev/null and b/blog/2016/04/27/penguin-trials-after-two-weeks/dunst.png differ diff --git a/blog/2016/04/27/penguin-trials-after-two-weeks/index.html b/blog/2016/04/27/penguin-trials-after-two-weeks/index.html new file mode 100644 index 0000000..6df17f7 --- /dev/null +++ b/blog/2016/04/27/penguin-trials-after-two-weeks/index.html @@ -0,0 +1,246 @@ + + + + + The penguin trials after two weeks | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

The penguin trials after two weeks

+
+ Published on April 27, 2016 +
+ +
+ +

It's been two weeks already and I will make a quick post with two subjects: +the stuff broken that needed to be fixed (from my point of view) and +improvements to the workstation that made my life easier.

+

After other two weeks I will post a summary with the good and bad parts.

+ + +

Stuff fixed

Lightdm black screen

After the first reboot the first problem appeared, the lightdm login window +was a black screen (accepting input but showing nothing). I remember that from +not so long ago when I tried to install linux on my home computer and that +happened, luckily it had a solution, I just needed to install lightdm-gtk- +greeter and replace it at the lightdm configuration.

+
# /etc/lightdm/lightdm.conf
+# ...
+greeter-session=lightdm-gtk-greeter
+# ...
+
+

Better font rendering for i3

The default fonts for the i3bar and so on are a bit clunky for my personal +taste so I changed the rendering from pango to xft and now it looks nice.

+
font xft:monospace 8
+
+

Better font rendering system wide (ala. OS X)

One of my worst problems with linux is the font rendering. Everything looks +worse than on OS X, that's a fact. Even people using linux desktops say it +when looking text on a OS X machine. Luckily I found infinality, a patch for +the font rendering in the freetype2 package that left my fonts almost +Macish.

+

I just installed the infinality-bundle following the official ArchLinux +Wiki entry on the subject +and used the setup for the Soft of OS X appareance editing the +/etc/profile.d/infinality-settings.sh using the ultimate5 configuration.

+
export INFINALITY_FT="ultimate5"
+
+

Just restart X to the settings to take effect. I haven't seen problems with +the infinality patch until now.

+

Improvements over the base system

Adding some background with feh

The most basic stuff! I don't really know if there's another way to do this +but looking around I found that using feh you can just point to an image +file and use that as wallpaper.

+

Just adding this to my i3 config file:

+
exec_always feh --bg ~/.config/i3/wallpaper.png
+
+

I want to improve it having a script that will iterate over png images inside +a folder and using one at random but since I don't need fancy stuff this will +work for now.

+

Running stuff when I log in

To start programs when you log in at your session adding them to your i3 +configuration seems like the way to go:

+
# Startup programs
+exec dropbox
+
+

Adding a lock screen with i3lock

Another thing I missed a lot. When I leave my desk I lock my computer so no +one can, just say, put a David Hasselhoff wallpaper on it or something, so +with i3lock, scrut, a bash script and a key binding I have a very nice +screen locker in place!

+
#!/bin/sh
+
+# Take screenshot
+scrot /tmp/lockscreen.png
+
+# Pixellate
+mogrify -scale 10% -scale 1000% /tmp/lockscreen.png
+
+# Lock screen with the image
+i3lock -i /tmp/lockscreen.png
+
+

And in the i3 config file:

+
bindsym $mod+l ~/.config/i3/i3lock.sh
+
+

More integrated notifications with dunst

Since the default desktop environment I installed was xfce4, the notifications +being shown was from them and it were horrible. Instead of that I installed +dunst.

+

dunst notifications

+

They are not the best looking notifications but are well integrated with the +system design and are highly customizable, they will change soon enough :)

+

Using the media keys for volume with alsa mixer

This was easy since I just need to bind the X media volume up and down to the +alsa mixer control app so I can use the keyboard to control the system volume +easily.

+
# Media keys
+bindsym XF86AudioRaiseVolume exec amixer -q set Master 4%+ unmute
+bindsym XF86AudioLowerVolume exec amixer -q set Master 4%- unmute
+
+

Using the media keys for media players with playerctl

By default my system didn't recognize the media keys for +play/pause/back/forward for any player but this was the easiest of them all. +Just installed playerctl and every app I used until now worked out of the +box. Even the forward/backwards keys for mpv which wasn't working for mpv +with mps-youtube on OS X are functional on my linux box!

+
# Media player controls
+bindsym XF86AudioPlay exec playerctl play-pause
+# bindsym XF86AudioPause exec playerctl pause
+bindsym XF86AudioNext exec playerctl next
+bindsym XF86AudioPrev exec playerctl previous
+
+

Removing the title bars for the windows

That was space I didn't need, it may seem stupid but... how often do you look +at the titlebar of the app you're using? Some like the browsers didn't even +have one! So I've removed the titlebars and left only 2px borders for the +application windows.

+
# Windows without titlebars
+for_window [class="^.*"] border pixel 2
+
+

Auto enable floating for pop-up windows

It was really annoying watching a google login window take half of the desktop +just for a moment to login into a service, so every window with the role of +popup is now floating by default.

+
# Browser popups floating
+for_window [window_role="pop-up"] floating enable
+
+

Using a custom i3bar with i3pystatus

Since most of the default information the i3bar was unnecesary I found out +about i3pystatus that allows you to use python modules to customize the i3bar +at will. Below are my config file and the i3bar.py I use for it.

+
from i3pystatus import Status
+from i3pystatus.updates import pacman, yaourt
+
+
+status = Status()
+
+# Pacman/Yaourt updates
+status.register("updates",
+                format="Updates: {count}",
+                format_no_updates="No updates",
+                backends=[pacman.Pacman(), yaourt.Yaourt()])
+
+# Displays clock like this:
+status.register("clock",
+                format="%a %-d %b %H:%M",)
+
+# CPU
+status.register('cpu_usage')
+
+# Memory
+status.register('mem',
+                format='{used_mem}/{total_mem}')
+
+# Shows the average load of the last minute and the last 5 minutes
+# (the default value for format is used)
+status.register("load", color='#00ff00')
+
+# Shows the address and up/down state of enp6s0
+status.register("network",
+                interface="enp6s0",
+                format_up="{v4cidr}")
+
+# Shows disk usage of /
+status.register("disk",
+                path="/",
+                format="{used}/{total}G [{avail}G]",)
+
+# Shows pulseaudio default sink volume
+status.register("pulseaudio",
+                format="♪{volume}",)
+
+status.run()
+
+
# .config/i3/config
+bar {
+    status_command ~/.config/i3/i3bar.py
+    position up
+}
+
+

Hide the mouse cursor when not needed

Using i3 I rely on the keyboard a lot, so much that sometimes my wireless +mouse turn itself off to save battery due to inactivity. That said, it's +really annoying for me having the cursor over text I'm writing or just sitting +there when I don't need it so I installed +unclutter and running it on +startup was very relieving.

+
# .config/i3/unclutter.sh
+#!/bin/bash
+unclutter &
+
+
# .config/i3/config
+exec ~/.config/i3/unclutter.sh
+
+

What's next?

There are still two weeks pending and even after all this tweaks the +customization is far from over! There are still stuff I miss a lot, like:

+
    +
  • Easily take screenshots with keybinds.
  • +
  • Better window switching.
  • +
  • Better dmenu launcher
  • +
  • Prevent the screenshoter from drawing the area selector on the screenshot taken. (xfce4-screenshoter)
  • +
  • ctrl+e/a for end and start of line global keybinds.
  • +
  • Use the scratchpad more and try to improve it.
  • +
+

See ya in two weeks!

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2016/12/21/new-site/index.html b/blog/2016/12/21/new-site/index.html new file mode 100644 index 0000000..a181035 --- /dev/null +++ b/blog/2016/12/21/new-site/index.html @@ -0,0 +1,82 @@ + + + + + New site | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

New site

+
+ Published on December 21, 2016 +
+ +
+ +

After a really long time I finally managed to spend some time redesigning and moving my blog to another platform, everyone already know that I tried really hard to create an editor that satisfied me while the answer was simpler.

+ + +

I like to reinvent the wheel (I don't even know if that expression exists or it's said like that in English, let me know! Apparently yes) but this time I got really far... like years far: I stopped writting because I did not find any editor confortable to the point I created my own blog application without success. This madness has to stop, there has to be something already there for me.

+

After trying almost every blog and static content generator out there I stumbled upon https://www.getlektor.com, a simple but really powerful static site generator that almost completely fit my needs.

+

After trying it a bit, I migrated the new theme I was making in a refactor of my old site to Flask (yikes!) and recreated the same site structure to do a final test.

+

I liked it.

+

But why? you may ask... Lektor's editor is worst that the one you made.

+

And you are right, Lektor's editor is just a textarea, but you forget one thing: all the content are plain text files that I can edit with whatever I want.

+

Having this flexibility is awesome, most of the content of the site is edited in either Emacs or Atom. Even if it was tricky at first because Lektor creates all the content in the same path I managed a -I'm sure overengineered- way to sort the files the way I wanted. Will improve it in the future when I know more about Lektor's internals.

+

The theme also reflects the change I've been noticing in the past year: I want simplicity, so the site is as simple as it gets.

+

Just a few colors, no CSS frameworks (only a simple grid) and everything is made up from scratch. It still needs a little enhancements but it wont get much further. Also I'm sure I left a few stuff broken when I migrated all the blog entries but everything will be fixed with time.

+

I hope this gives me more time and motivation to keep writing. There are a few old drafts from tools that I'm going to finish up, and... well, more stuff that will be shared with you in future posts. :)

+

P.S.: I do not forget that I owe you the conclusion of the penguin trials too!

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2016/12/26/a-week-for-personal-development/index.html b/blog/2016/12/26/a-week-for-personal-development/index.html new file mode 100644 index 0000000..36b14e1 --- /dev/null +++ b/blog/2016/12/26/a-week-for-personal-development/index.html @@ -0,0 +1,137 @@ + + + + + A week for personal development | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

A week for personal development

+
+ Published on December 26, 2016 +
+ +
+ +

Sadly, over time, my programming time at work is becoming less frequent. Doesn’t mean I don’t do stuff it’s just little by little most my time is spent on management things. Since I don’t want to get stalled and to give myself focus into other things I got last week off to see whatever I was capable of making. To my surprise it was time well spent.

+ + +

Side effect: instead of five or six days it was down to four or less cause you know, everyone is busy these days ;)

+
+

So, what did I do?

+

Used Lektor to build this site

This site on github

+

I finally managed to rebuild my site from scratch with lektor. Already wrote about this in a previous post.

+

Summary:

+
    +
  • 🔼 Read other people's code, which is nice.
  • +
  • 🔼 Made some goodies with Make, Gulp and Bash to automate stuff.
  • +
  • 🔼 Discovered that ARM servers are not so fun.
  • +
  • 🔽 It wasn't coding.
  • +
+

Natif

Natif on github

+

Simple app to use a website as a desktop application.

+

I wanted to do something with electron for some time now and since I use some webapps that I wanted outside of my browser this was a simple yet powerful ally for me.

+

I wanted it mostly to create a Netflix app because my main browser is Firefox and Netflix isn't working on it but I came into trouble when trying it out.

+

Summary:

+
    +
  • 🔼 Tried electron.
  • +
  • 🔼 Simple code, good results.
  • +
  • 🔽 Widevine.
  • +
  • 🔽 Packaging automation on release for every operating system without a decent server will force me to use jenkins, and I don't want to.
  • +
+

SymbolDoc

Symboldoc on github

+

Print a simple docstring based on a given python module and a symbol name.

+

I wanted to use abtract syntax trees for something thinking it was more difficult than it really were, and it came to a simple script that print a docstring for a symbol that also could be easily integrated into my emacs setup, forcing me to document my projects more.

+

Summary:

+
    +
  • 🔼 Used AST!
  • +
  • 🔼 Made tests.
  • +
  • 🔽 Understanding the AST wasn't as difficult as I expected.
  • +
+

Nout

Nout on github

+

Maybe in the future a note taking app.

+

After trying almost every note taking app out there mine are just files on a Notes folder written in markdown syntax. Thinking about what I needed, it came just to a couple features, so I thought that creating an index of my notes in a sqlite database would be enough. Parsing files to normalize the information and using simple queries to look up for the data.

+

Right now I only made the file watcher and the database storage, there's a pull request on the works with some tests. It's not usable yet.

+

Summary:

+
    +
  • 🔼 Forgot how fun was working with multithreading.
  • +
  • 🔼 Getting the mindset to start bigger projects.
  • +
  • 🔼 Now I know that fnmatch exists.
  • +
  • 🔽 Got the feeling that the components are not as modular as they should be.
  • +
  • 🔽 Not enough testing, solving it now.
  • +
  • 🔽 Not documented, but time was scarce.
  • +
+

Other stuff

Other things I did:

+
    +
  • Started reading the pragmatic programmer and started to feel that it was money really well invested. Highly recommended to every developer out there. (Thank you @RusEu and @MiguelGR)
  • +
  • Made a few Pull Requests to i3pystatus. Minor things but it felt rewarding.
  • +
  • Made a simple plugin for lektor. Not published yet.
  • +
  • Built a list of stuff to automate my laptop provisioning with Ansible even more.
  • +
  • Tuned a little bit more my i3 configuration.
  • +
  • Found out tools like codecov, scrutinizer and gemnasium.
  • +
  • Learn things about open source projects (guidelines, contribution, CI, ...).
  • +
  • Moved my site from a custom server to Firebase.
  • +
+

Things I miss:

+
    +
  • Doing something in another programming language. Not so long ago I tried golang and I got the feeling that I should have invested more time in this or a new one.
  • +
  • Lack of documentation but you know, when there's not enough time...
  • +
  • Focus on unit testing more than I did.
  • +
  • Related with the above, should have tried to use TDD or another different development process.
  • +
  • Not having a boilerplate to create projects and its integrations and base file tree, spent a lot of time doing it. It's silly because you're not creating tons of projects in a short period of time but it's a task that could be automated somehow.
  • +
+

Overall it felt really rewarding. I encourage everyone to get some time off to create new stuff, maintain your projects, create that tool you always wanted, research about that subject you read so long ago, etc.

+

I don't know when but I will surely repeat this.

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2017/01/31/why-i-preordered-the-nintendo-switch/index.html b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/index.html new file mode 100644 index 0000000..c07efe3 --- /dev/null +++ b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/index.html @@ -0,0 +1,93 @@ + + + + + Why I preordered the Nintendo Switch | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Why I preordered the Nintendo Switch

+
+ Published on January 31, 2017 +
+ +
+ +

As a gamer (casual gamers have feelings too) I pre-ordered the latest Nintendo Console that will be launched on March 3rd worldwide. This post is an opinion and description of my gaming habits and why they fit with this new system.

+ + +

Nintendo Switch Logo

+

Traveling to work will be more entertaining

I end up using about 1h+ on weekdays just traveling from/to work; like 4-5% of the total time in a given day. A lot.

+

While on the train I usually read books or articles from my instapaper account but this may be the best way to also play a bit and distract myself. I gotta go to work anyway so let's spent that time even better!

+

I don't like to play multiple games at once

Once upon a time I could just memorize everything I was doing in a given game and just remember it in the next play session, and if it still were that way this wont be a problem for me. Sadly I have to many things to keep track of already that where I should return because there is a secret entrance covered by a rock I should be able to break later with a bomb isn't one of them.

+

Having my 3DS for traveling and the PC or Wii U at home is a nuisance because this reason: keeping track of the progress of diferent stories is a pain, just like I don't read more than one book at a time.

+

The capabilities of the Switch for this are amazing because I can just play the same at home and outside it, both small and big screen.

+

TV and Handheld modes

+

I play in short sessions

Over time there are less and less gaming marathons mostly because I don't have enough time for them and the ones I still do are mostly because social gaming.

+

When I got distrated from work or need a rest or something I grab my Wii U and play a few levels for whatever game I had in that moment (for the curious, these days is Captain Toad: Treasure Tracker).

+

After about 20-30 min I got tired or just think that is enough and I come back to my daily tasks or into more important things.

+

I like Nintendo games (who doesn't?!)

With a few exceptions, most of the other system's AAA+ games are the typical that you find always in PC.

+

When looking for a system to get from the past generation I made a list of all the games that interested me and checked the top 10 games for every system. I ended up buying the Wii U because of that.

+

It's sad because the unique gaming styles that Nintendo create are usually only exploited by Nintendo itself.

+

Splatoon Gameplay

+

The third parties have no excuses now

This new console is more similar that the ones we already know: the user can play as if it were a normal system just with a screen and a gamepad (handheld or TV, don't care). There's no need to make up something new if they don't want to so they can just start creating or even porting old games.

+

Though I want to see how good and what developers achieve with that HD Rumble

+

Conclusion / TL;DR

I like the Switch, preordered it the moment it appeared on amazon, even made a page with a list of stuff you can preorder now (99.9% Spanish sites, sorry!). There are a few friends that are getting it too and we united in a telegram channel to discuss about it and keep posting information as it releases.

+

Now I just need to wait for a month for it to arrive and tell you how amazed or dissapointed I am.

+ + +
+ +

Edits

+

2017/04/23: Stroked the link to the pre-order items since I deleted that page.

+ + + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2017/01/31/why-i-preordered-the-nintendo-switch/nintendo_switch_logo-360.png b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/nintendo_switch_logo-360.png new file mode 100644 index 0000000..80cd4a5 Binary files /dev/null and b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/nintendo_switch_logo-360.png differ diff --git a/blog/2017/01/31/why-i-preordered-the-nintendo-switch/nintendo_switch_logo-640.png b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/nintendo_switch_logo-640.png new file mode 100644 index 0000000..6866c10 Binary files /dev/null and b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/nintendo_switch_logo-640.png differ diff --git a/blog/2017/01/31/why-i-preordered-the-nintendo-switch/nintendo_switch_logo.png b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/nintendo_switch_logo.png new file mode 100644 index 0000000..6866c10 Binary files /dev/null and b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/nintendo_switch_logo.png differ diff --git a/blog/2017/01/31/why-i-preordered-the-nintendo-switch/portability-360.jpg b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/portability-360.jpg new file mode 100644 index 0000000..618c264 Binary files /dev/null and b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/portability-360.jpg differ diff --git a/blog/2017/01/31/why-i-preordered-the-nintendo-switch/portability-640.jpg b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/portability-640.jpg new file mode 100644 index 0000000..2d8e55f Binary files /dev/null and b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/portability-640.jpg differ diff --git a/blog/2017/01/31/why-i-preordered-the-nintendo-switch/portability.jpg b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/portability.jpg new file mode 100644 index 0000000..2d8e55f Binary files /dev/null and b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/portability.jpg differ diff --git a/blog/2017/01/31/why-i-preordered-the-nintendo-switch/splatoon-360.png b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/splatoon-360.png new file mode 100644 index 0000000..0d3946c Binary files /dev/null and b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/splatoon-360.png differ diff --git a/blog/2017/01/31/why-i-preordered-the-nintendo-switch/splatoon-640.png b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/splatoon-640.png new file mode 100644 index 0000000..c745a1c Binary files /dev/null and b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/splatoon-640.png differ diff --git a/blog/2017/01/31/why-i-preordered-the-nintendo-switch/splatoon.png b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/splatoon.png new file mode 100644 index 0000000..c745a1c Binary files /dev/null and b/blog/2017/01/31/why-i-preordered-the-nintendo-switch/splatoon.png differ diff --git a/blog/2019/09/27/i-finished-playing-untitled-goose-game/badass-360.jpg b/blog/2019/09/27/i-finished-playing-untitled-goose-game/badass-360.jpg new file mode 100644 index 0000000..392c8b9 Binary files /dev/null and b/blog/2019/09/27/i-finished-playing-untitled-goose-game/badass-360.jpg differ diff --git a/blog/2019/09/27/i-finished-playing-untitled-goose-game/badass-640.jpg b/blog/2019/09/27/i-finished-playing-untitled-goose-game/badass-640.jpg new file mode 100644 index 0000000..6f90646 Binary files /dev/null and b/blog/2019/09/27/i-finished-playing-untitled-goose-game/badass-640.jpg differ diff --git a/blog/2019/09/27/i-finished-playing-untitled-goose-game/badass.jpg b/blog/2019/09/27/i-finished-playing-untitled-goose-game/badass.jpg new file mode 100644 index 0000000..904fec5 Binary files /dev/null and b/blog/2019/09/27/i-finished-playing-untitled-goose-game/badass.jpg differ diff --git a/blog/2019/09/27/i-finished-playing-untitled-goose-game/index.html b/blog/2019/09/27/i-finished-playing-untitled-goose-game/index.html new file mode 100644 index 0000000..88f6d5a --- /dev/null +++ b/blog/2019/09/27/i-finished-playing-untitled-goose-game/index.html @@ -0,0 +1,105 @@ + + + + + I finished playing Untitled Goose Game | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

I finished playing Untitled Goose Game

+
+ Published on September 27, 2019 +
+ +
+ +

Untitled Goose Game Logo

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PlatformNintendo Switch
Started2019/09/20
Finished2019/09/26
My rating7/10
Completed everything?No, all main to-dos and a few extras.
+ + +

I didn't even plan to buy this game. Seriously. I was eager to play the Link's Awakening remake that came out the same day on the Switch and was already waiting me in he mailbox. But I saw the trailer and I had to try it... just to be sure it was as absurd as it seemed.

+

UGS is a puzzle game (which isn't very clear just by watching the trailer) and it's fun while it lasts. It made me laugh during my entire playthrough considering in which ways could I torment the poor people near my pond, and it's also good as single player couch co-op since my player 2 was there telling me to do this and that to solve some to-do's. We enjoyed it.

+

But there is a very bad thing about it: is crazy short. I finished the main "storyline" in less han two hours with only one main to-do unsolved (dammit old man!). True, the game offer more "complicated" tasks after you finish but that didn't make me want go re-play it since it was (apparently) more of the same and some with time constraints.

+

Even though, I recommend you try this game when you when an offer pops up on your preferred store.

+

Badass Goose

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2019/09/27/i-finished-playing-untitled-goose-game/untitled_goose_game_logo-360.jpg b/blog/2019/09/27/i-finished-playing-untitled-goose-game/untitled_goose_game_logo-360.jpg new file mode 100644 index 0000000..eaec64f Binary files /dev/null and b/blog/2019/09/27/i-finished-playing-untitled-goose-game/untitled_goose_game_logo-360.jpg differ diff --git a/blog/2019/09/27/i-finished-playing-untitled-goose-game/untitled_goose_game_logo-640.jpg b/blog/2019/09/27/i-finished-playing-untitled-goose-game/untitled_goose_game_logo-640.jpg new file mode 100644 index 0000000..eaec64f Binary files /dev/null and b/blog/2019/09/27/i-finished-playing-untitled-goose-game/untitled_goose_game_logo-640.jpg differ diff --git a/blog/2019/09/27/i-finished-playing-untitled-goose-game/untitled_goose_game_logo.jpg b/blog/2019/09/27/i-finished-playing-untitled-goose-game/untitled_goose_game_logo.jpg new file mode 100644 index 0000000..eaec64f Binary files /dev/null and b/blog/2019/09/27/i-finished-playing-untitled-goose-game/untitled_goose_game_logo.jpg differ diff --git a/blog/2019/10/21/i-finished-reading-a-gathering-of-shadows/a-gathering-of-shadows-360.jpg b/blog/2019/10/21/i-finished-reading-a-gathering-of-shadows/a-gathering-of-shadows-360.jpg new file mode 100644 index 0000000..e41d8fe Binary files /dev/null and b/blog/2019/10/21/i-finished-reading-a-gathering-of-shadows/a-gathering-of-shadows-360.jpg differ diff --git a/blog/2019/10/21/i-finished-reading-a-gathering-of-shadows/a-gathering-of-shadows-640.jpg b/blog/2019/10/21/i-finished-reading-a-gathering-of-shadows/a-gathering-of-shadows-640.jpg new file mode 100644 index 0000000..d33e235 Binary files /dev/null and b/blog/2019/10/21/i-finished-reading-a-gathering-of-shadows/a-gathering-of-shadows-640.jpg differ diff --git a/blog/2019/10/21/i-finished-reading-a-gathering-of-shadows/a-gathering-of-shadows.jpg b/blog/2019/10/21/i-finished-reading-a-gathering-of-shadows/a-gathering-of-shadows.jpg new file mode 100644 index 0000000..d33e235 Binary files /dev/null and b/blog/2019/10/21/i-finished-reading-a-gathering-of-shadows/a-gathering-of-shadows.jpg differ diff --git a/blog/2019/10/21/i-finished-reading-a-gathering-of-shadows/index.html b/blog/2019/10/21/i-finished-reading-a-gathering-of-shadows/index.html new file mode 100644 index 0000000..32efaeb --- /dev/null +++ b/blog/2019/10/21/i-finished-reading-a-gathering-of-shadows/index.html @@ -0,0 +1,114 @@ + + + + + I finished reading A gathering of Shadows | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

I finished reading A gathering of Shadows

+
+ Published on October 21, 2019 +
+ +
+ +

A gathering of shadows cover

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SeriesShades of Magic #2
PreviousA Darker Shade of Magic
Started2019/09/24
Finished2019/10/19
My rating8/10
More infoGoodreads - V.E. Schwab website
+ + +

Continues months later the end of the first one keeping up after the events and allows the +us to follow the current life of the characters we met, how the <spoiler> +affected their lives and how it all goes on, taking it slow during the first half of the book +explaining the world(s) in detail until everything starts rolling and you get hooked +until a point where... the book ends!

+

Gladly, I'm reading this as a finished series, but I can't imagine fans of this reading the final +chapter having to wait for the third book (which I already started reading) to know what's next.

+

My personal opinion is: I got a bit bored at first. It goes really slow presenting characters to +the readers and keeping them traveling from here to there until the interesting starts happening, +but once I got there I couldn't stop.

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2019/11/20/i-finished-playing-the-legend-of-zelda-links-awakening/hero-360.jpg b/blog/2019/11/20/i-finished-playing-the-legend-of-zelda-links-awakening/hero-360.jpg new file mode 100644 index 0000000..d05aaa1 Binary files /dev/null and b/blog/2019/11/20/i-finished-playing-the-legend-of-zelda-links-awakening/hero-360.jpg differ diff --git a/blog/2019/11/20/i-finished-playing-the-legend-of-zelda-links-awakening/hero-640.jpg b/blog/2019/11/20/i-finished-playing-the-legend-of-zelda-links-awakening/hero-640.jpg new file mode 100644 index 0000000..fd99e7b Binary files /dev/null and b/blog/2019/11/20/i-finished-playing-the-legend-of-zelda-links-awakening/hero-640.jpg differ diff --git a/blog/2019/11/20/i-finished-playing-the-legend-of-zelda-links-awakening/hero.jpg b/blog/2019/11/20/i-finished-playing-the-legend-of-zelda-links-awakening/hero.jpg new file mode 100644 index 0000000..db9487f Binary files /dev/null and b/blog/2019/11/20/i-finished-playing-the-legend-of-zelda-links-awakening/hero.jpg differ diff --git a/blog/2019/11/20/i-finished-playing-the-legend-of-zelda-links-awakening/index.html b/blog/2019/11/20/i-finished-playing-the-legend-of-zelda-links-awakening/index.html new file mode 100644 index 0000000..aee283b --- /dev/null +++ b/blog/2019/11/20/i-finished-playing-the-legend-of-zelda-links-awakening/index.html @@ -0,0 +1,98 @@ + + + + + I finished playing The Legend of Zelda: Link's Awakening | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

I finished playing The Legend of Zelda: Link's Awakening

+
+ Published on November 20, 2019 +
+ +
+ +

The Legend of Zelda: Links Awakening logo

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PlatformNintendo Switch
Started2019/09/26
Finished2019/11/20
My rating8/10
Completed everything?No. Missing tiled dungeons, one item and one heart.
+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2019/12/08/i-finished-reading-a-conjuring-of-light/a-conjuring-of-light-360.jpg b/blog/2019/12/08/i-finished-reading-a-conjuring-of-light/a-conjuring-of-light-360.jpg new file mode 100644 index 0000000..38fed5c Binary files /dev/null and b/blog/2019/12/08/i-finished-reading-a-conjuring-of-light/a-conjuring-of-light-360.jpg differ diff --git a/blog/2019/12/08/i-finished-reading-a-conjuring-of-light/a-conjuring-of-light-640.jpg b/blog/2019/12/08/i-finished-reading-a-conjuring-of-light/a-conjuring-of-light-640.jpg new file mode 100644 index 0000000..8813f6b Binary files /dev/null and b/blog/2019/12/08/i-finished-reading-a-conjuring-of-light/a-conjuring-of-light-640.jpg differ diff --git a/blog/2019/12/08/i-finished-reading-a-conjuring-of-light/a-conjuring-of-light.jpg b/blog/2019/12/08/i-finished-reading-a-conjuring-of-light/a-conjuring-of-light.jpg new file mode 100644 index 0000000..8813f6b Binary files /dev/null and b/blog/2019/12/08/i-finished-reading-a-conjuring-of-light/a-conjuring-of-light.jpg differ diff --git a/blog/2019/12/08/i-finished-reading-a-conjuring-of-light/index.html b/blog/2019/12/08/i-finished-reading-a-conjuring-of-light/index.html new file mode 100644 index 0000000..a3103c9 --- /dev/null +++ b/blog/2019/12/08/i-finished-reading-a-conjuring-of-light/index.html @@ -0,0 +1,102 @@ + + + + + I finished reading A conjuring of light | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + + +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/01/01/2019/fujisan-360.jpg b/blog/2020/01/01/2019/fujisan-360.jpg new file mode 100644 index 0000000..05ddf13 Binary files /dev/null and b/blog/2020/01/01/2019/fujisan-360.jpg differ diff --git a/blog/2020/01/01/2019/fujisan-640.jpg b/blog/2020/01/01/2019/fujisan-640.jpg new file mode 100644 index 0000000..c5fd327 Binary files /dev/null and b/blog/2020/01/01/2019/fujisan-640.jpg differ diff --git a/blog/2020/01/01/2019/fujisan.jpg b/blog/2020/01/01/2019/fujisan.jpg new file mode 100644 index 0000000..c52a0ac Binary files /dev/null and b/blog/2020/01/01/2019/fujisan.jpg differ diff --git a/blog/2020/01/01/2019/index.html b/blog/2020/01/01/2019/index.html new file mode 100644 index 0000000..68a7921 --- /dev/null +++ b/blog/2020/01/01/2019/index.html @@ -0,0 +1,78 @@ + + + + + 2019 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

2019

+
+ Published on January 01, 2020 +
+ +
+ +

This is a brief summary of my last year in random order:

+
    +
  • Gained back my reading habits. I set myself a safe goal of 6 books and ended up reading 8.
  • +
  • Moved to an apartment with my player 2.
  • +
  • Gave away/sold a lot of my stuff in the process.
  • +
  • Got the habit of doing some regular exercise.
  • +
  • Lived in Japan for almost three months.
  • +
  • Said goodbye to my fellow coworkers of Reply.ai (I will miss you!)
  • +
+

Photo of Mt. Fuji made in my stay

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/01/01/2020/index.html b/blog/2020/01/01/2020/index.html new file mode 100644 index 0000000..3bf629a --- /dev/null +++ b/blog/2020/01/01/2020/index.html @@ -0,0 +1,76 @@ + + + + + 2020 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

2020

+
+ Published on January 01, 2021 +
+ +
+ +

What happened in 2020 in random order:

+
    +
  • Lost about ~15kg (~33lbs) of weight
      +
    • I have a way more balanced diet now and do exercise almost every day, though I still like cookies maybe a bit too much.
    • +
    +
  • +
  • Started working at Red Hat as a Software Maintenance Engineer. That happened exactly one year ago now.
  • +
+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/01/01/december-2020/ff9-360.jpg b/blog/2020/01/01/december-2020/ff9-360.jpg new file mode 100644 index 0000000..c446ac1 Binary files /dev/null and b/blog/2020/01/01/december-2020/ff9-360.jpg differ diff --git a/blog/2020/01/01/december-2020/ff9-640.jpg b/blog/2020/01/01/december-2020/ff9-640.jpg new file mode 100644 index 0000000..83b53d2 Binary files /dev/null and b/blog/2020/01/01/december-2020/ff9-640.jpg differ diff --git a/blog/2020/01/01/december-2020/ff9.jpg b/blog/2020/01/01/december-2020/ff9.jpg new file mode 100644 index 0000000..0cbe267 Binary files /dev/null and b/blog/2020/01/01/december-2020/ff9.jpg differ diff --git a/blog/2020/01/01/december-2020/image-360.jpg b/blog/2020/01/01/december-2020/image-360.jpg new file mode 100644 index 0000000..15a86c8 Binary files /dev/null and b/blog/2020/01/01/december-2020/image-360.jpg differ diff --git a/blog/2020/01/01/december-2020/image-640.jpg b/blog/2020/01/01/december-2020/image-640.jpg new file mode 100644 index 0000000..cf603f8 Binary files /dev/null and b/blog/2020/01/01/december-2020/image-640.jpg differ diff --git a/blog/2020/01/01/december-2020/image.jpg b/blog/2020/01/01/december-2020/image.jpg new file mode 100644 index 0000000..8be30d7 Binary files /dev/null and b/blog/2020/01/01/december-2020/image.jpg differ diff --git a/blog/2020/01/01/december-2020/index.html b/blog/2020/01/01/december-2020/index.html new file mode 100644 index 0000000..1d66079 --- /dev/null +++ b/blog/2020/01/01/december-2020/index.html @@ -0,0 +1,145 @@ + + + + + December 2020 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

December 2020

+
+ Published on January 01, 2021 +
+ +
+ +

Oh boy, here we go again. Christmas season is with us one more time.

+

For anyone that doesn't know me even a little: I don't like Christmas. It is the most consumerist period of the year, everything is packed with people (even in 2020, how's that even possible!). The only good thing is you can meet with some people even if it is a few meters away in a park freezing yourself.

+

image alt

+ + +

Projects

    +
  • Butterrobot has gone some improvements and it can be shipped now. The admin interface is now useable and the basic features are bundled in. I had to work a bit on how I abstracted queries and objects internally since it was a bit of a mess but I think it's way easier to understand now. I love dataclasses.

    +

    There's still a lot of work to do with testing and documentation.

    +
  • +
  • Slow progress on the Games Screenshot Manager. Don't get me wrong, it's functional and I already use it to manage my screenshots gallery but I need to automate some processes, add tests and get path cleaning to work properly. Also I'm missing some games that I'll need to fill out along with improvements on the Nintendo Switch department.

    +
  • +
  • I've started setting up Home Assistant way more seriously as you can see in my previous post. The project has grown a lot since I started playing with it and my journey to self-host is way far from being finished, but I already manage to unplug some chinese always-on-always-on-internet devices that I wasn't feeling super comfortable having on my network. Baby steps.

    +
  • +
  • We are getting better at 3D printing at home as well. After a lot of trial and error we managed to print some decent quality pieces on our Rotrics DexArm. We've had it since August and didn't start doing anything with it until now. Shame on us.

    +

    Hopefully I can get some Pi's cases done this month so I can put one or two cameras to keep an eye on it in case the print get stuck or any other problem we may have. And if this OctoPrint thingy works with our unit it would be awesome to have a Home Assistant panel dedicated to it. My backlog keeps growing and I keep getting older.

    +
  • +
  • I've set up my laptop from scratch, and since Antergos is gone now I've installed a base Arch Linux without any wrapper. I was very pleased to see that everything was working out of the box pretty easily.

    +
  • +
+

Books

    +
  • Finished reading The Magicians' Guild (Trudi Canavan)

    +

    I liked it, it's nothing super impressive but enjoyable for fantasy lovers, and I'm glad my reading habit came back, +I already have enough backlog as it is. I'm continuing with the trilogy with the next ones now:

    + +
  • +
+

TVShows and Movies

    +
  • Star Wars: Return of the Jedi
  • +
  • Star Wars: The force awakens
  • +
  • Star Wars: The last jedi

    +

    Star Wars Marathon continues!

    +

    Tried to watch Star Wars: Resistance but it just wasn't my kind of show, only watched three episodes. I hope I don't miss anything interesting in there. Should I at least watch the last season?

    +
  • +
  • Mandalorian

    +

    It's over now :(

    +

    A very good season, looking forward to all the new TV Shows and movies announced for Disney+ in the future (both from Star Wars and the Marvel Cinematic Universe).

    +

    While I love the series the Luke Skywalker reveal of the end killed it a bit for me (since I was expecting Ezra Bridger to show up). I don't understand the reasoning behind using CGI faces for these actors... if you're going to play with the character again just get a new actor with some resemblance the way you did it with Solo.

    I still don't understand on which position this leaves the last trilogy, the future seasons for Mandalorian and every other spin-off that Disney will launch, but well. They are doing a really good job with this, can't wait for the Ashoka show to air and whatever that final mention of Boba Fett was, it was about time this character was portrayed as he deserved.

  • +
  • The Blacklist

    +

    We're hooked.

    +
  • +
  • Alice in Borderland

    +

    It's seems like a good adaptation of the original manga, though it keep getting worse through the end. I think I will try to read the original, it's been a while I've immersed in a story like this since Kamisama if I recall correctly.

    +
  • +
+

Games

    +
  • Minecraft

    +
  • +
  • The legend of Zelda: Age of Calamity

    +

    I'm almost finished (I think!) but the game keep unlocking stuff on the map that I have to complete.

    +
  • +
  • Star Wars: The old republic

    +

    I was hoping to get on Fallen Order this month but Microsoft delayed the release of EA Play for Xbox Game Pass for PC until sometime next year, so to get rid of my latest Star Wars hype I started a new character on the MMORPG.

    +

    Star Wars The Old Republic launch to lightspeed

    +
  • +
  • Final Fantasy IX

    +

    I started this a good while ago and I have but forgotten the history until the point I'm in. I'm trying to remember and find my way now, since I have a bit extra time to play a "time consuming" game.

    +

    I can't recommend the Moguri Mod enough to anyone who wants to play this on PC. It's an abbysal difference from the base experience, special mention to the backgrounds and the font.

    +

    Final Fantasy IX Screenshot

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/01/01/december-2020/swtor-360.jpg b/blog/2020/01/01/december-2020/swtor-360.jpg new file mode 100644 index 0000000..a3db46e Binary files /dev/null and b/blog/2020/01/01/december-2020/swtor-360.jpg differ diff --git a/blog/2020/01/01/december-2020/swtor-640.jpg b/blog/2020/01/01/december-2020/swtor-640.jpg new file mode 100644 index 0000000..973999f Binary files /dev/null and b/blog/2020/01/01/december-2020/swtor-640.jpg differ diff --git a/blog/2020/01/01/december-2020/swtor.jpg b/blog/2020/01/01/december-2020/swtor.jpg new file mode 100644 index 0000000..e392d28 Binary files /dev/null and b/blog/2020/01/01/december-2020/swtor.jpg differ diff --git a/blog/2020/01/31/january/index.html b/blog/2020/01/31/january/index.html new file mode 100644 index 0000000..0ba070e --- /dev/null +++ b/blog/2020/01/31/january/index.html @@ -0,0 +1,142 @@ + + + + + January 2020 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

January 2020

+
+ Published on January 31, 2020 +
+ +
+ +

Munich in January

+

I didn't have much time for anything on January since I have spent more +time traveling than anything else: Being on my homecity for christmas, +traveling for work two times and then another conference just because.

+

At least the planes gave me some time to read and finish some pending +things, though I hope next month is more relaxed.

+ + +

Conferences

    +
  • DevConf, Brno 1

    +

    Not much to comment apart from feeling a complete newbie about +everything, but more on that on another post in the near future.

    +
  • +
+

TV Shows/Movies

    +
  • Watched The Witcher S01 2

    +

    I'm not sure if coming to the TV Show without having read the books +or played the games was good or bad, but I enjoyed it. Not sure why +some of the hate out there. It may be a bit difficult to put +everything together if you're not focusing on it (as it happened to +me), but it's a good fantasy show and I'm glad they renewed for a +second season.

    +
  • +
+

Books

    +
  • Stopped reading Prince of Thorns3

    +

    I didn't get involved with the story, the characters and so on. Only +read a few chapters but there are tons of books to read to stop on +one I wasn't enjoying. I may try again in the future.

    +
  • +
  • Started reading The last wish4

    +

    This was obvious, having watched the series it seems like an awesome +fanstasy world to explore and so far so good. Looking forward to the +game too.

    +
  • +
+

Games

    +
  • I started and dropped Pokemon Shield5 on record time. +Got some hype from a friend and from a recent announcement but it's +just the same as always and it bored me going through. Made to the +second or third gym and I just didn't want to turn on the Switch to +play, so...
  • +
+

Articles

Some stuff I've read over the month. Since I don't store a proper +history this is just what came to mind, but I'm going to try keeping a +record for the coming months. Also I'm going to use this as a pressure +point to read some more pending articles, at least to the point that +I read more than I add to my pocket account.

+
    +
  • There's No Such Thing as Knowing Your Computer 'All the Way to the +Bottom' 6
  • +
  • You should have a personal website 7
  • +
  • The boring technology behind a one person internet company 8
  • +
  • From 15,000 database connections to under 100: DigitalOcean's tale of +tech debt 9
  • +
  • What happens when you push to git.sr.ht, and why was it so slow? +10
  • +
  • How SSH port became 22 11
  • +
+ + + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/01/31/january/munich-360.jpg b/blog/2020/01/31/january/munich-360.jpg new file mode 100644 index 0000000..7f9b87f Binary files /dev/null and b/blog/2020/01/31/january/munich-360.jpg differ diff --git a/blog/2020/01/31/january/munich-640.jpg b/blog/2020/01/31/january/munich-640.jpg new file mode 100644 index 0000000..2184c2f Binary files /dev/null and b/blog/2020/01/31/january/munich-640.jpg differ diff --git a/blog/2020/01/31/january/munich.jpg b/blog/2020/01/31/january/munich.jpg new file mode 100644 index 0000000..1277889 Binary files /dev/null and b/blog/2020/01/31/january/munich.jpg differ diff --git a/blog/2020/03/01/february/image-360.jpg b/blog/2020/03/01/february/image-360.jpg new file mode 100644 index 0000000..2905bf4 Binary files /dev/null and b/blog/2020/03/01/february/image-360.jpg differ diff --git a/blog/2020/03/01/february/image-640.jpg b/blog/2020/03/01/february/image-640.jpg new file mode 100644 index 0000000..0a59310 Binary files /dev/null and b/blog/2020/03/01/february/image-640.jpg differ diff --git a/blog/2020/03/01/february/image.jpg b/blog/2020/03/01/february/image.jpg new file mode 100644 index 0000000..c6a4d9e Binary files /dev/null and b/blog/2020/03/01/february/image.jpg differ diff --git a/blog/2020/03/01/february/index.html b/blog/2020/03/01/february/index.html new file mode 100644 index 0000000..bda21d7 --- /dev/null +++ b/blog/2020/03/01/february/index.html @@ -0,0 +1,209 @@ + + + + + February 2020 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

February 2020

+
+ Published on March 01, 2020 +
+ +
+ +

After lots of flights and traveling around came the calm. A month to get +everything in order, sort my routine and start gettings things done.

+

The beach after a walk

+ + +

Conferences

    +
  • Fosdem 2020 1

    +

    We were nearby for DevConf so we just went a few days here. I forgot +how packed and difficult going to some tracks is... but we managed +to attend some interesting talks and meet with some friends there, +which is always a plus.

    +
  • +
+

TVShows/Movies

    +
  • Finished watching Friends, again. It was so my player 2 and I had a +20m episode series to watch at lunch/dinner. It still make me laugh.

    +
  • +
  • Finished watching The Good Place 2

    +

    Interesting show. The first season is what I liked the most, and +the show is a good overall to watch while eating or something, +short episodes (~20m), comical and with good actors. The show +mocks humanity in every way possible, the sad part is that most +of that is totally true! The ending kinda surprised me and made +me think a little bit.

    +
  • +
  • Started watching Money Heist 3

    +

    We flew through the entire first season in a flash, and we're now on +the second (which it doesn't seem as good as the first). I liked the +first one a lot, even if there were some stuff that didn't make much +sense. Totally recommended.

    +
  • +
+

Books

    +
  • Finished reading The last wish 4 by Andrzej Sapkowski

    +

    As many people I started reading this after watching the TV Show (but +haven't played the game yet).

    +

    I was scared that it would be too similar to I was already seen but to +my surprise, even though some of the events tell the "same story" (on +a sense) are different enough from what I saw on TV.

    +

    I did enjoy it though it was short in length, but in exchange you +don't necessarily need to continue reading the rest of the books if +you don't want to (right away) because it contains a tale per chapter +that even if they are a full story when read in full it doesn't put +the reader in a position where it needs to read the rest.

    +

    I recommend it if you like the fantasy genre, is a light read, short +and self-contained.

    +
  • +
  • Started reading The Magicians' Guild 5 by Trudi Canavan

    +
  • +
+

Videogames

    +
  • Started and quickly dropped (and refunded) Warcraft 3: Reforged +6

    +

    I didn't manage to finish the "classic" Warcraft 3 back in the day, so +even after the critics and so on I decided to give it a go. Huge +mistake. The game is not prepared for wide-screens, it doesn't help +that the UI covers most of the screen either, my units keep getting +stuck on trees around and the game crashed on me a few times (and I +only played the tutorial and one scenario). My first though was... +well, since I have the classic one on my account let's just play +that... but no, the classic version now download the Reforged game +with the classic graphic pack. Even if you are a HUGE Warcraft fan, +you shouldn't pay for this. Luckily Blizzard knows and they do instant +refunds for the game.

    +

    Blizzard, please release classic Warcraft III on Good Old Games as +you've done with the two previous entries. 7 I just +bought and downloaded them just in case you decide to Reforge +everything. 8

    +
  • +
  • Started and dropped Assasin's Creed Origins 9

    +

    I was in the mood of playing some of these open world games, and I had +this in my uPlay account already waiting as a gift for purchasing an +nvidia graphics card. The game looked good but it seems it was +horribly optimized since I had constant frame drops and AI glitches. +I tried some stuff to make it better but nothing worked. It killed the +inmersion so much that I just uninstalled it.

    +
  • +
  • Started playing Wolcen 10

    +

    To play with some friends (though I've played mainly by myself because +of schedule issues). It's an action RPG that aims to be good, but +has still some bugs (it released this month).

    +
  • +
  • Played some Clash Royale 11 and Animal Crossing: Pocket Camp +12 on mobile.

    +

    The first one just because, the other because of the hype of the next +Animal Crossing game releasing soon for the Switch.

    +
  • +
+

Articles

    +
  • Google Maps Hacks (incl. video) 13

    +

    On how the virtual world affects the physical world.

    +
  • +
  • Why Discord is switching from Go to Rust 14

    +

    Article from Discord Engineering on how they switched a specific piece +of their infrastructure to Rust.

    +
  • +
  • [VIDEO] OVER-TOURISM - Is sustainable tourism possible? - 観光公害 +15

    +

    An interesting video about how tourism has evolved in Japan over the +last years.

    +
  • +
  • Fucking laptops 16

    +

    The honest state of the laptop industry. It reminded me when I wanted +to switch my laptop and no option seemed good enough even in the +highest price ranges.

    +
  • +
  • The World We Leave Our Children: How I became a free software +extremist 17

    +
  • +
  • The boss who put everyone on $70k 18

    +
  • +
  • [VIDEO] How Crash Bandicoot Hacked The Original Playstation +19

    +

    I love this kind of war stories (as the series name) of what tricks +developers used to do to accomodate to old hardware. Really +interesting.

    +
  • +
+ + + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/04/01/march/image-360.jpg b/blog/2020/04/01/march/image-360.jpg new file mode 100644 index 0000000..9ec1d20 Binary files /dev/null and b/blog/2020/04/01/march/image-360.jpg differ diff --git a/blog/2020/04/01/march/image-640.jpg b/blog/2020/04/01/march/image-640.jpg new file mode 100644 index 0000000..8b120ce Binary files /dev/null and b/blog/2020/04/01/march/image-640.jpg differ diff --git a/blog/2020/04/01/march/image-original-360.jpg b/blog/2020/04/01/march/image-original-360.jpg new file mode 100644 index 0000000..ba0c5f6 Binary files /dev/null and b/blog/2020/04/01/march/image-original-360.jpg differ diff --git a/blog/2020/04/01/march/image-original-640.jpg b/blog/2020/04/01/march/image-original-640.jpg new file mode 100644 index 0000000..618774f Binary files /dev/null and b/blog/2020/04/01/march/image-original-640.jpg differ diff --git a/blog/2020/04/01/march/image-original.jpg b/blog/2020/04/01/march/image-original.jpg new file mode 100644 index 0000000..d215a7f Binary files /dev/null and b/blog/2020/04/01/march/image-original.jpg differ diff --git a/blog/2020/04/01/march/image.jpg b/blog/2020/04/01/march/image.jpg new file mode 100644 index 0000000..798c309 Binary files /dev/null and b/blog/2020/04/01/march/image.jpg differ diff --git a/blog/2020/04/01/march/index.html b/blog/2020/04/01/march/index.html new file mode 100644 index 0000000..7c93db6 --- /dev/null +++ b/blog/2020/04/01/march/index.html @@ -0,0 +1,172 @@ + + + + + March 2020 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

March 2020

+
+ Published on April 01, 2020 +
+ +
+ +

#StayAtHome #StopTheCurve

+

As everybody know (unless you live under a rock) this month the COVID-19 +hit hard on some European's countries, including mine. I have spent half +of the month staying inside in quarantine.

+

It's a weird sensation that gives you perspective even to the point that +going out to take the trash is a special (but dangerous, since people +here aren't taking this seriously) thing to do.

+

The good thing is that I had some time to move some thing out of my +backlog and I have no excuse to study some things now.

+

Since most pictures are taken from my living room window these days is +better to share how I spend time with friends. This is a screenshot of +Tabletop Simulator 1 while I play Zombiecide 2 3 +with my friends.

+
+

Playing Zombiecide with some friends online

+ + +

TVShows/Movies

    +
  • Up to date with Money Heist 4

    +

    The third part (first half of the second season?) is worst overall +compared to the previous heist, but good enough to have enough will +to watch it to the end.

    +
  • +
  • Watched The Boys Season 1 5

    +

    A good show about what could happen if super heroes where controlled +by a corporation.

    +
  • +
  • Rewatch: Rick and Morty Seasons 1 to 3 6

    +
  • +
  • Started wathing Dragon Ball 7

    +

    The first series, watched so long ago I don't even remember the story, +is a good show to watch while I cook as episodes are short.

    +
  • +
  • Started watching Gravity Falls 8

    +

    Recommended by a friend, to watch while we have lunch/dinner.

    +
  • +
+

Books

    +
  • Continued reading The Magicians' Guild 9 by Trudi Canavan

    +

    Haven't read much this month though. :(

    +
  • +
+

Videogames

    +
  • Started playing The Legend of Zelda: A link to the past 10

    +

    Don't kill me, but this is my first time playing it.

    +
  • +
  • Started playing Animal Crossing: New Horizons 11

    +

    I have been waiting for this for a long time.

    +
  • +
  • Played a bit of Guild Wars 2. Nostalgia. 12

    +
  • +
+

Articles

    +
  • [VIDEO] Nintendo NES Famicom Creator Interview 13
  • +
  • Working from Home: Lessons Learned Over 20 Years & a Shopping List +14
  • +
  • Before the DNS: How yours truly upstaged The NIC's Official +HOSTS.TXT 15
  • +
  • Decentralised SMTP is for the greater good 16
  • +
  • [VIDEO] NLNOG 2019 - DNS over HTTPS considerations - Bert +Hubert 17
  • +
  • [VIDEO] Spyro Had One of the Coolest Anti-Piracy Measures Ever +18
  • +
  • [VIDEO] Clever Anti Piracy on the Super Nintendo 19
  • +
  • The reckless, infinite scope of web browsers 20
  • +
  • [VIDEO] How the Nintendo GameCube Security was defeated +21
  • +
  • The mysterious origins of an uncrackable video game 22
  • +
  • Where do all the bytes come from? 23
  • +
  • Debunking "You should not run your mail server because mail is hard." +24
  • +
  • UpNext: eInk display for future events #diy 25
  • +
  • A short thread on a few Celeste game-feel things 26
  • +
+
+
+
  1. https://www.tabletopsimulator.com/

  2. +
  3. https://store.steampowered.com/app/468726/Tabletop_Simulator__Zombicide/

  4. +
  5. https://www.zombicide.com/en/

  6. +
  7. https://www.thetvdb.com/series/la-casa-de-papel

  8. +
  9. https://www.thetvdb.com/series/the-boys

  10. +
  11. https://www.thetvdb.com/series/rick-and-morty

  12. +
  13. https://www.thetvdb.com/series/dragon-ball

  14. +
  15. https://www.thetvdb.com/series/gravity-falls

  16. +
  17. https://www.goodreads.com/book/show/28249.The_Magicians_Guild

  18. +
  19. https://www.nintendo.es/Juegos/Super-Nintendo/The-Legend-of-Zelda-A-Link-to-the-Past-841179.html

  20. +
  21. https://www.nintendo.es/Juegos/Nintendo-Switch/Animal-Crossing-New-Horizons-1438623.html

  22. +
  23. https://www.guildwars2.com/en/

  24. +
  25. https://www.youtube.com/watch?v=EbL9OFlxwV8

  26. +
  27. https://blog.dustinkirkland.com/2020/03/working-from-home.html

  28. +
  29. https://iconia.com/before_the_dns.txt

  30. +
  31. https://poolp.org/posts/2019-12-15/decentralised-smtp-is-for-the-greater-good/

  32. +
  33. https://www.youtube.com/watch?v=pjin3nv8jAo

  34. +
  35. https://www.youtube.com/watch?v=4GYSeXLr5sY

  36. +
  37. https://www.youtube.com/watch?v=KLyK1FMwc8Q

  38. +
  39. https://drewdevault.com/2020/03/18/Reckless-limitless-scope.html

  40. +
  41. https://youtu.be/Uxjl_kD3imQ

  42. +
  43. http://www.bbc.com/future/story/20190919-the-maze-puzzle-hidden-within-an-early-video-game

  44. +
  45. https://www.freecodecamp.org/news/where-do-all-the-bytes-come-from-f51586690fd0/

  46. +
  47. https://poolp.org/posts/2019-08-30/you-should-not-run-your-mail-server-because-mail-is-hard/

  48. +
  49. http://brettcvz.com/projects/6-upnext

  50. +
  51. https://twitter.com/MattThorson/status/1238338574220546049

  52. +
+
+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/05/01/april/image-360.jpg b/blog/2020/05/01/april/image-360.jpg new file mode 100644 index 0000000..da88eef Binary files /dev/null and b/blog/2020/05/01/april/image-360.jpg differ diff --git a/blog/2020/05/01/april/image-640.jpg b/blog/2020/05/01/april/image-640.jpg new file mode 100644 index 0000000..4ba36c8 Binary files /dev/null and b/blog/2020/05/01/april/image-640.jpg differ diff --git a/blog/2020/05/01/april/image.jpg b/blog/2020/05/01/april/image.jpg new file mode 100644 index 0000000..18c72df Binary files /dev/null and b/blog/2020/05/01/april/image.jpg differ diff --git a/blog/2020/05/01/april/index.html b/blog/2020/05/01/april/index.html new file mode 100644 index 0000000..3faf7e1 --- /dev/null +++ b/blog/2020/05/01/april/index.html @@ -0,0 +1,185 @@ + + + + + April 2020 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

April 2020

+
+ Published on May 01, 2020 +
+ +
+ +

Weird month. It seems that quarantine finally caught up with me (and my +sleep schedule!). Since I cannot go to sleep when I want, I'm trying a +different approach... reading something at bed and waking up later. So +far so good.

+

This month I didn't read many articles/books (in fact, any book) but in +return I came back to reading some Manwha I had in my backlog. And I +have also invested some time in a few projects I'm currently +incubating.

+

I'm also on my way to self-host my own stuff, trying out software and +servers architectures so I can dog-food some of the stuff I use at +work, hopefully.

+

Screenshot of Final Fantasy VII: Remake main menu screen

+ + +

TVShows/Movies

    +
  • Money Heist (up to date)

    +

    This last season way less interesting than the others for my taste, +and they are extending this heist too much. It should had already +ended. But oh well...

    +
  • +
  • Mandalorian (ongoing)

    +

    Started watching this on Disney+, of course I had to! I'm just a few +episodes in and so far I'm loving it. Star Wars universe for the win.

    +
  • +
  • Gravity Falls (finished)

    +

    I only watched this because a friend told me that it would diverge +into some Rick-and-Morty-like shirt. And it didn't. I'm dissapointed +at my friends now.

    +
  • +
  • Dragon Ball (ongoing)

    +

    I'm slowly going through this one since I only watch it while I cook.

    +
  • +
  • The Lion King (2019)

    +

    Same old, same old. Why not? Environments are amazing.

    +
  • +
+

Books & Manwha

    +
  • The Magicians' Guild (Trudi Canavan)

    +

    Put on hold. Even though the book was interesting enough I didn't +bring myself to continue reading it. In exchange...

    +
  • +
  • DICE (ongoing)

    +

    I started DICE a long time ago, and it has been on my backlog for +the same period. Since I have a bit of IQ left at night, I gave it a +shot, and oh man, this one is good.

    +
  • +
  • The Gamer (ongoing)

    +

    This is esentially the exact same comment as above.

    +
  • +
+

Projects

There's no repository for this projects at the moment, I'm trying to +make projects public once I have something somewhat usable first, +so my accounts are not poluted with unfinished stuff. I will have my own +server for that soon™️.

+
    +
  • Butter Robot

    +

    On my current employeer we had the need of having some information +automatically posted in our channel reacting to different events. At +the beginning this was a simple python script reacting to a webhook +but as everything it has evolved. I'm making a simple bot framework +(Slack app & telegram) to generate bots, trying to make it easily +extensible via plugins which are just python classes than can be +exposed to the main package using entry points.

    +
  • +
  • Jeeves

    +

    I started this some months ago, is an automated task manager via +configuration files. You define tasks on a pipeline and can execute +it via CLI/Server. There's few code and it does near to nothing (can +execute scripts and call docker containers), but I have plans to have +a server so triggers can be set, flows to execute several pipelines, +etc. This has been on my head for years, so glad it's finally taking +shape.

    +
  • +
  • Unnamed photo collection viewer

    +

    I have been thinking about this for a while. There's no photo/video +management software that suit my needs right now, and even if there's +free/cheap alternatives out there I always have a copy of all my +collection just in case (you never know what could happen). So making +a viewer for all my collection should be the way to go, it wouldn't +have nice features (like automatic videos and all that stuff everyone +do nowadays) but I want a simple viewer, with a timeline, groups, that + do not edit my files without my explicit permissio (because + somtimes a wrong timezone or DST flag fork up a timeline).

    +
  • +
+

Videogames

    +
  • Animal Crossing: New Horizons

    +

    My daily fix. I'm just doing some daily stuff, events and all little +by little. The 3DS version made me a hardcore player, so I'm taking +this one with more zen. It's really impressive how have they +improved this game.

    +
  • +
  • Valorant and Tabletop Simulator (Zombicide DLC)

    +

    These two has been my social distancing vaccine for the month. We +continued with the Zombiecide campaigns and my friends and I managed +to get a Valorant beta from Twitch drops so I'm fragging like the +newbie I am.

    +
  • +
  • Final Fantasy VII: Remake

    +

    Ow yes... How couldn't I see this coming. With this #StayAtHome +thingy my hype for this came back until I finally bought it. With +the system and all. I'm just a few days in and so far is awesome! +Just keep in mind that there are DLC blocking some summons and all +that, but going through the story again, with new graphics, 2020 +cutscenes and characters have way more deep than in the vanilla +version... Right now I recommend it, but let's see what happens when +I finish it (or at least one third on the entire story...? Since this +is not the entire vanilla story)

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/06/01/may/butterrobot-360.png b/blog/2020/06/01/may/butterrobot-360.png new file mode 100644 index 0000000..a394aa0 Binary files /dev/null and b/blog/2020/06/01/may/butterrobot-360.png differ diff --git a/blog/2020/06/01/may/butterrobot-640.png b/blog/2020/06/01/may/butterrobot-640.png new file mode 100644 index 0000000..a394aa0 Binary files /dev/null and b/blog/2020/06/01/may/butterrobot-640.png differ diff --git a/blog/2020/06/01/may/butterrobot.png b/blog/2020/06/01/may/butterrobot.png new file mode 100644 index 0000000..a394aa0 Binary files /dev/null and b/blog/2020/06/01/may/butterrobot.png differ diff --git a/blog/2020/06/01/may/image-360.jpg b/blog/2020/06/01/may/image-360.jpg new file mode 100644 index 0000000..b77feb8 Binary files /dev/null and b/blog/2020/06/01/may/image-360.jpg differ diff --git a/blog/2020/06/01/may/image-640.jpg b/blog/2020/06/01/may/image-640.jpg new file mode 100644 index 0000000..7a43696 Binary files /dev/null and b/blog/2020/06/01/may/image-640.jpg differ diff --git a/blog/2020/06/01/may/image.jpg b/blog/2020/06/01/may/image.jpg new file mode 100644 index 0000000..1d66aad Binary files /dev/null and b/blog/2020/06/01/may/image.jpg differ diff --git a/blog/2020/06/01/may/index.html b/blog/2020/06/01/may/index.html new file mode 100644 index 0000000..f960616 --- /dev/null +++ b/blog/2020/06/01/may/index.html @@ -0,0 +1,198 @@ + + + + + May 2020 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

May 2020

+
+ Published on June 01, 2020 +
+ +
+ +

I can go out now. In those rare days with good weather here I can +take pictures like this.

+

A picture from the beach

+ + +

TVSHows/Movies

    +
  • Mandalorian (ongoing)

    +

    I say ongoing, but I think I have not watched it this month... the thing +is that I still have to finish it.

    +
  • +
  • Rick and Morty (ongoing)

    +

    Of course I'm up to date, don't be rickdiculous.

    +
  • +
  • Once upon a time (ongoing)

    +

    To kill time during lunch/dinner because my Player 2 likes it. Pretty +boring though. Only the first season is "good" in some way because the +premise is interesting, after that it all goes to shirt.

    +
  • +
+

Manwha

Same as last month.

+ +

And I have the urge to read One Piece but don't know from where +(legally) withouth investing a lot in physical copies...

+

Projects

Little progress on code this month, just making some tests and +concepts (because Memories required front-end work and I forgot +almost everything I knew about CSS).

+

Spent some time reworking my local infra from scratch. All the +services I had running were done with poorly manual labor and now I'm +working on provisioning everything using Ansible. I have to do the same +for my computers since I'm planning the new dotfiles from scratch too.

+
    +
  • Jeeves

    +

    Very little progress, just added a few tasks and so, the example here +is not working because docker is broken on my machine at the time of +writing, but it should work. Promise.

    +

    My problem with this is that until it has a proper server to trigger +tasks via webhooks, crons or other methods is just a lightweight +(and worst) Ansible wannabe.

    +
      $ jeeves execute Jeevesfile.yaml
    +  (i) Running flow from Jeevesfile.yaml
    +  === Running flow: Create synology-drive package
    +  ok! Running step [1/8]: Download x86_64 deb
    +  ok! Running step [2/8]: Calculate md5sum for x86_64 deb file
    +  ok! Running step [3/8]: Download i686 deb
    +  ok! Running step [4/8]: Calculate md5sum for i686 deb file
    +  ok! Running step [5/8]: Create build directory
    +  ok! Running step [6/8]: Parse PKGBUILD
    +  ok! Running step [7/8]: Create SRCINFO file
    +  Image 'archlinux:latest' does not exist container
    +  err Executing step [8/8]: Test install in container
    +
    +
  • +
  • Butterrobot

    +

    Spent some time refactoring code and thinking on what to use for +a simple admin interface to setup new features for the bots, enable or +disable plugins and all that.

    +

    Butterrobot !dice plugin

    +
  • +
  • Memories (previously Unnamed photo viewer)

    +

    Worked on reading the files from the filesystem and extracting the +mininmum required metadata for me to save on the database (to have +some search/filters going on). Also got some ideas depending on how the +files are stored (use folder names as "tags" to search for example).

    +

    Also played around with thumbnails, which are tricky to do depending on +the file, and I have a lot of variety (from standard JPEG to HEIC going +through 360 videos, etc.). I also noticed that I have a lot of files +with wrong metadata, which does not help at all with my testing.

    +

    Well, I have a simple frontend now, but everything is a very work in +progress (and those menu links are just dummy navigation).

    +

    I need to focus on implement a proper backend and decide on the main +features to implement in the first release, which should come with a +simple frontend and API for people to create their own.

    +

    Memories screenshot

    +
  • +
+

Videogames

    +
  • Animal Crossing: New Horizons

    +

    Just a daily routine trying to complete the monthly citteropedia.

    +
  • +
  • Final Fantasy VII: Remake

    +

    I think I'm almost through the end, just finishing up some side quests +prior to the final chapters. I'm having lots of fun, probably +because the slow pace so I don't finish it in just a few days.

    +

    I can't describe how awesome the soundtrack is, specially with the +nostalgia effect from the original.

    +
  • +
  • Terraria

    +

    The last update for Terraria came out this month and I'm going through +the content with a friend trying to go though all the content. Well, +not all content, since there is a lot. This game is a piece of +art, one of those rare gems that I wish I had more time to properly +enjoy it.

    +
  • +
  • Northgard

    +

    This has been on my Steam library for quite some time, and since the +Valhalla announcement I had the urge to play something Viking related. +Didn't play much (two scenarios I think). Is a fairly nice strategy +game but it has enough elements to make it enjoyable for a player like +me (because I'm not very good at them).

    +
  • +
  • Minecraft Dungeons:

    +

    Got this for the switch because I wanted to have something to spend a +few minutes in and kill some time and couldn't I be more worng.

    +

    My surprise has been the awful load times (2m+ to start playing from +the Switch main menu), sub-30 framerates and the awesome chance of the +game crashing when putting the console in sleep mode. The game is +fun to play from time to time (and I'm sure is way more fun in +multiplayer) but the Switch version is just so bad that no one should +buy it.

    +
  • +
  • Some Sea of Thieves and Valorant with friends to keep me close while social distancing, though I'm not sure I would keep playing since rebooting to Windows just to play some games is itching me a lot lately, rather buy what I can play on Linux and purchasing the rest on Switch or PS4 if needed.

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/06/01/may/memories-360.png b/blog/2020/06/01/may/memories-360.png new file mode 100644 index 0000000..31ed55b Binary files /dev/null and b/blog/2020/06/01/may/memories-360.png differ diff --git a/blog/2020/06/01/may/memories-640.png b/blog/2020/06/01/may/memories-640.png new file mode 100644 index 0000000..a46763a Binary files /dev/null and b/blog/2020/06/01/may/memories-640.png differ diff --git a/blog/2020/06/01/may/memories.png b/blog/2020/06/01/may/memories.png new file mode 100644 index 0000000..a46763a Binary files /dev/null and b/blog/2020/06/01/may/memories.png differ diff --git a/blog/2020/06/02/june/image-360.jpg b/blog/2020/06/02/june/image-360.jpg new file mode 100644 index 0000000..b423e7c Binary files /dev/null and b/blog/2020/06/02/june/image-360.jpg differ diff --git a/blog/2020/06/02/june/image-640.jpg b/blog/2020/06/02/june/image-640.jpg new file mode 100644 index 0000000..c8ae7ae Binary files /dev/null and b/blog/2020/06/02/june/image-640.jpg differ diff --git a/blog/2020/06/02/june/image.jpg b/blog/2020/06/02/june/image.jpg new file mode 100644 index 0000000..20fb26c Binary files /dev/null and b/blog/2020/06/02/june/image.jpg differ diff --git a/blog/2020/06/02/june/index.html b/blog/2020/06/02/june/index.html new file mode 100644 index 0000000..e10183c --- /dev/null +++ b/blog/2020/06/02/june/index.html @@ -0,0 +1,117 @@ + + + + + June 2020 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

June 2020

+
+ Published on June 02, 2020 +
+ +
+ +

We can travel now! Quarantine restrictions have been raised here, and we can go visit family. It's weird +seeing people with masks, cleaning its hands and so on (though not everyone eveytone). It gives me some Japan +nostalgia.

+

It hasn't been a productive month, and I don'tknow where time went. And that made me realize that I can't +do everything I want to do... I have to start dropping tasks from all kinds of hobbies and organize myself +way better. That is my homework for this summer.

+

On the road, finally

+ + +

Projects

Sad times here. The shock when you finally discover that time is not infinite.

+

Both the photo manager and the pseudo-CI/CD tool were fun, but I'm going to stop working of them for +the foreseable future. Both were monoliths that I can't schedule on my life right now.

+

Butterrobot I'm happy to continue with since we're going to dog-food it at work. Happy to say +that the app is now fully modular and you can install that and your own package with plugins and make +it work easily. Hopefully releasing it this month.

+

Infra has evolved too, I've simplified a lot of my services, turned down some things I wasn't using and +trying to save time on this as well. If there's a good alternative out there I'm probably using it.

+

And on that matter, I'm going to start moving all my repos to Github. I have them spread around github, +gitlab and sourcehut and it's causing me headaches. I will have my own gitea instance to mirror my repos +in case something happen with the cloud service and also to put there all tests and concepts (like the +two discontinued above) before making it available to the public (though they will be accessible, just not +so easy to find) so my github account isn't filled with unfinished stuff.

+

Games

    +
  • Animal Crossing: New Horizons

    +

    Still play ocasionally, finally burn-out got to me. I only turn on the game to get some of the collectibles and check some daily stuff, just a few minutes and definitely not daily as before.

    +
  • +
  • Terraria

    +

    Still on-going and very happy with it. I'm still shocked on the number of features included with this game, number +of items, progress, bosses and all for the price, after a lot of years.

    +
  • +
  • Final Fantasy VII: Remake

    +

    Didn't play much, almost to the end, time constraints and sharing the TV as main issues, but I'm very eager to get +to the end to see if anything non-trivial changed from the original.

    +
  • +
  • Reventure

    +

    Started playing this on my GPD WIN 2, it's awesome for quick runs and is funny so far, trying to discover + what crazy stuff to do in order to unlock the over one hundred endings this game has.

    +
  • +
  • Minecraft Dungeons:

    +

    Dropped for the obvious reasons I said last month.

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/08/02/july/image-360.jpg b/blog/2020/08/02/july/image-360.jpg new file mode 100644 index 0000000..8fb42cd Binary files /dev/null and b/blog/2020/08/02/july/image-360.jpg differ diff --git a/blog/2020/08/02/july/image-640.jpg b/blog/2020/08/02/july/image-640.jpg new file mode 100644 index 0000000..9dcaafe Binary files /dev/null and b/blog/2020/08/02/july/image-640.jpg differ diff --git a/blog/2020/08/02/july/image.jpg b/blog/2020/08/02/july/image.jpg new file mode 100644 index 0000000..3aedc85 Binary files /dev/null and b/blog/2020/08/02/july/image.jpg differ diff --git a/blog/2020/08/02/july/index.html b/blog/2020/08/02/july/index.html new file mode 100644 index 0000000..b7e813c --- /dev/null +++ b/blog/2020/08/02/july/index.html @@ -0,0 +1,158 @@ + + + + + July 2020 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

July 2020

+
+ Published on August 02, 2020 +
+ +
+ +

Summer is here!

+

Even without restrictions or quarantine is has been a weird month. Cases here are going up and down, +I don't want to go back to the gym (and I think I won't until next year), some restaurants and cafe +have closed permanently and the ones that are still standing are usually full (which is good). We're +just trying to go back to normal, step by step, and having some friends stay at home a few days +helped a lot.

+

A picture of myself from behind walking through a port

+ + +

This month I have focused on getting more organized. As I said last month +I badly needed it.

+

I have managed to move almost everything into my notion.so workspace. +I had some boards and notes here and there but Notion is so powerful and comfortable to use that I +just went all in. There's some cleanup to do, but my main points of interes are already there. I have +a board with my personal tasks and some metadata about them, and secondary boards for my hobbies +(Games, Books, TVShows, etc), Blog related posts, ... I may go into more detail in the future.

+
+
+ + + +
+
+ + + +
+

Related to this I'm also starting to cleanup every last drawer at home. I got a bit tired of not +knowing how much stuff I have so I'm making a full inventory of everything. It all started +reviewing how many of my clothers would still fit me after quarantine, and it snapped on me. I +don't know how much I own, and I think it happens to all of us at different levels.

+

With tech this is gonna be very difficult, I have managed to stash a lot (a lot) of cables +during the years. Just imagine how many HDMI and USB cables the average tech guy can get a hold +of... Arduinos, Raspberries... etc.

+

This will take time, but I'm very happy with the progress I already had and all the things I've +already donated or sold.

+

Projects

    +
  • My local infra is mostly done at this point. I just need to secure everything a bit more +but has been working fine (with some hiccups) for the past months. I may need to check some +networking alternatives and move all SSL negotiation to the main node (avoiding re-encrypting +traffic on a non-controlled node).

    +
  • +
  • Butterrobot got some love this month. I'm slowly setting up an automated CI/CD system to +deploy the application in my local infra, but I need to setup some other details as well. Source +code is already on Github though repository is private while I made last minute changes. I'm +hoping to release it this month.

    +
  • +
  • I'm also cleaning up my Home Assistant node. What that really means that I'm re-deploying a +new instance on a more powerful Raspberry Pi. I have been playing with this software for years +and my current pi is a bit underpowered and messy, so the plan is start from scratch trying to +make the connected devices local trying to avoid third-party clouds as much as possible and +document everything in some blog posts. Let see how that goes.

    +
  • +
+

TV Shows

I watched something!

+
    +
  • M.A.R.V.E.L.s Agents of Shield

    +

    Some chapters of the last season. This may be the worst season so far...? (At least the few I saw)

    +
  • +
  • The 100

    +

    Up to date with this one, without much focus because some interdimensional time thingy is not very +appealing to me, just want to know how it all ends. If it doesn't end this season, I'm done with it.

    +
  • +
  • Sword Art Online (Aincrad saga only)

    +

    Rewatched this one (a friend's fault) as series to have while cooking and doing chores. A bit complex +to read subtitles the same time you do other things, but since this is a re-watch... Now looking for +some other series with the same "protagonist sent to fantasy world" genre.

    +
  • +
+

Games

    +
  • Final Fantasy VII: Remake

    +

    I have gone through a bit more of the story, trying to enjoy the story till the end. And wait +another five years for the next chapter...?

    +
  • +
  • Reventure

    +

    Quick play sessions are quick. Oh my god this game has soooo many endings...

    +
  • +
  • Carrion

    +

    This has been on my radar for quite some time. It's a shame is so short! Finished in a few hours, but that didn't mean +is not great, because it is. Being the monster trapped wanted to go out instead of the "Hero" killing monsters is +a really appreciated change of perspective. The mechanics were amazing and the graphics gorgeous, it was very fun while it +lasted.

    +
  • +
  • Rick and Morty: Virtual Rick-ality

    +

    I got time to play some VR, and I had this in the backlog for quite some time. I love Rick and Morty and this was +a short and fun puzzle adventure, just what I expected. I could get on with the optional stuff but I just have too much +on backlog!

    +
  • +
+

Articles

I forgot to take note of the interesting ones this month. 😅

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/08/02/july/notion-games-360.png b/blog/2020/08/02/july/notion-games-360.png new file mode 100644 index 0000000..a9f1407 Binary files /dev/null and b/blog/2020/08/02/july/notion-games-360.png differ diff --git a/blog/2020/08/02/july/notion-games-640.png b/blog/2020/08/02/july/notion-games-640.png new file mode 100644 index 0000000..0440205 Binary files /dev/null and b/blog/2020/08/02/july/notion-games-640.png differ diff --git a/blog/2020/08/02/july/notion-games.png b/blog/2020/08/02/july/notion-games.png new file mode 100644 index 0000000..2533f0d Binary files /dev/null and b/blog/2020/08/02/july/notion-games.png differ diff --git a/blog/2020/08/02/july/notion-tasks-360.png b/blog/2020/08/02/july/notion-tasks-360.png new file mode 100644 index 0000000..45425dc Binary files /dev/null and b/blog/2020/08/02/july/notion-tasks-360.png differ diff --git a/blog/2020/08/02/july/notion-tasks-640.png b/blog/2020/08/02/july/notion-tasks-640.png new file mode 100644 index 0000000..31c180f Binary files /dev/null and b/blog/2020/08/02/july/notion-tasks-640.png differ diff --git a/blog/2020/08/02/july/notion-tasks.png b/blog/2020/08/02/july/notion-tasks.png new file mode 100644 index 0000000..be68288 Binary files /dev/null and b/blog/2020/08/02/july/notion-tasks.png differ diff --git a/blog/2020/09/02/august/image-360.jpg b/blog/2020/09/02/august/image-360.jpg new file mode 100644 index 0000000..5bda1de Binary files /dev/null and b/blog/2020/09/02/august/image-360.jpg differ diff --git a/blog/2020/09/02/august/image-640.jpg b/blog/2020/09/02/august/image-640.jpg new file mode 100644 index 0000000..d43ca09 Binary files /dev/null and b/blog/2020/09/02/august/image-640.jpg differ diff --git a/blog/2020/09/02/august/image.jpg b/blog/2020/09/02/august/image.jpg new file mode 100644 index 0000000..755d75c Binary files /dev/null and b/blog/2020/09/02/august/image.jpg differ diff --git a/blog/2020/09/02/august/index.html b/blog/2020/09/02/august/index.html new file mode 100644 index 0000000..1b33924 --- /dev/null +++ b/blog/2020/09/02/august/index.html @@ -0,0 +1,118 @@ + + + + + August 2020 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

August 2020

+
+ Published on September 02, 2020 +
+ +
+ +

Slowly going back to routine, this month has been well spent going out when possible and spending +time with friends and family, a thing that we couldn't do properly for some time now. Not much +"progress" on anything else for that matter.

+

A picture of the beach

+ + +

Projects

Didn't have much time to play around with projects this time, but in simple terms I've managed to +release the code for butterrobot for anyone to see +and shame my code and prepared the slack application for my team to use. I'll admit that is a bit +of a pain to play with several repositories at the same time, and github doesn't make this easy on +itself requiring authentication for the container registry... but well, so far it's working and +it's good to have room for improvement.

+

I've also received my Firewalla Gold and finally finished tidying up +my network infrastructure a bit, though it will require a bit more tuning but at least I can now +focus on what I've been eager to do: setup my home assistant for all the devices and automations +on my home, yay!

+

Books

+

Games

    +
  • Assemble with care: Played this on my phone and it was a short but +wonderful playthrough. It's a story-driven puzzle game, though puzzles are very easy since they are +secondary. Full voice acting makes this a calm and relaxing experience to do while on the move (or at +the beach!)

    +
  • +
  • Some more Reventure

    +
  • +
+

Articles

Mostly videos this time around, since I'm used to put something off-screen while I'm working. Some interesing stuff in +there, mostly videogame related.

+ + + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/10/01/september/image-360.jpg b/blog/2020/10/01/september/image-360.jpg new file mode 100644 index 0000000..a14ff40 Binary files /dev/null and b/blog/2020/10/01/september/image-360.jpg differ diff --git a/blog/2020/10/01/september/image-640.jpg b/blog/2020/10/01/september/image-640.jpg new file mode 100644 index 0000000..6749783 Binary files /dev/null and b/blog/2020/10/01/september/image-640.jpg differ diff --git a/blog/2020/10/01/september/image.jpg b/blog/2020/10/01/september/image.jpg new file mode 100644 index 0000000..6749783 Binary files /dev/null and b/blog/2020/10/01/september/image.jpg differ diff --git a/blog/2020/10/01/september/index.html b/blog/2020/10/01/september/index.html new file mode 100644 index 0000000..8b9885c --- /dev/null +++ b/blog/2020/10/01/september/index.html @@ -0,0 +1,115 @@ + + + + + September 2020 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

September 2020

+
+ Published on October 01, 2020 +
+ +
+ +

Very cool month, finally managed to have some hard earned holidays! I had the privilege of +going with some friends (even some I hadn't seen in a long time!) to an apartment near the beach, +and oh boy did I need that. I came back fully charged! Apart from that, not much movement in any +area.

+

Another picture of me at the beach, this time in Malaga

+ + +

Projects

I have refactored my local network a bit, bought a proper router with integrated firewall and monitoring, +and a new AP to get along with that. Next step will be re-creating my entire home-assistant instance from +scratch on a new raspberry pi. With that I will start a blog post series on every step I'm going to take, +sort of a tutorial sort of informative. You can do very cool things with it.

+

Not much time for anything else.

+

Books

    +
  • The Ballad of Songbirds and Snakes.

    +

    I read only a little more, either the good is not as impacting as the first one (it isn't) or +I'm completely gone with my reading habits again. I though I would enjoy this on my vacation time, but +I didn't end up hooked. I will probably drop this one, sadly.

    +
  • +
+

Games

    +
  • Super Mario 3D All-Stars: +Tried starting with Mario 64 first, but the camera and controls were so frustrating I ended up skipping it +and going directly to Sunshine. I've collected a few stars but I haven't sit down properly to get with it, +only playing on spare time between other things.

    +
  • +
  • Among Us: The new cool kid on the block, very +funny to play with friend over discord; guaranteed fun.

    +
  • +
+

Articles

I ended up doing a Telegram channel to paste interesting articles/videos as I see fit, this way I don't forget +taking notes that much. Now I only need to remember this channel exists...

+ + + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/church-360.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/church-360.jpg new file mode 100644 index 0000000..245330d Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/church-360.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/church-640.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/church-640.jpg new file mode 100644 index 0000000..c741905 Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/church-640.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/church.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/church.jpg new file mode 100644 index 0000000..dd9dc3c Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/church.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/cloud-sephiroth-360.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/cloud-sephiroth-360.jpg new file mode 100644 index 0000000..48c2e17 Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/cloud-sephiroth-360.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/cloud-sephiroth-640.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/cloud-sephiroth-640.jpg new file mode 100644 index 0000000..2e5c199 Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/cloud-sephiroth-640.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/cloud-sephiroth.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/cloud-sephiroth.jpg new file mode 100644 index 0000000..498a849 Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/cloud-sephiroth.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/index.html b/blog/2020/10/15/final-fantasy-vii-remake-my-review/index.html new file mode 100644 index 0000000..229d823 --- /dev/null +++ b/blog/2020/10/15/final-fantasy-vii-remake-my-review/index.html @@ -0,0 +1,100 @@ + + + + + Final Fantasy VII: Remake - My review | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Final Fantasy VII: Remake - My review

+
+ Published on October 15, 2020 +
+ +
+ +

I started the out of pure hype and even bought -again- a PlayStation 4 in the process, but haven't finished it until recently due to time constraints, lack of interest and having lost the initial momentum.

+

I will try to to a quick review of what I feel playing it and if there's something spoilery it will be obscured to avoid accidents; same with the pictures.

+

Final Fantasy VII: Remake Slash Screen

+ + +

Disclaimer: I've only finished the game, not completed it. I played quite a lot at the beginning but I lost momentum due to various reasons, the main one being lack of time to play (anything, not just this). I haven't completed all thropies for the game nor I have collected everything (and I don't intend to).

+
+

Music

This is just something one can't write about, let just say that playing with headphones was a really good idea from the beginning and that for me this is easily the best part of the game. They remastered the original soundtrack and made something amazing with it. Not better (I like the "original" a lot too), just different.

+

When you already played the vanilla game and appear on a zone that you only recognize because of it's music... it's awesome! That combat music remastered, traveling through Midgar, doing missions, the fanfare! While you don't have the classic fanfare tune once you win a battle, Barret will sometimes hum it if he's in your party, it's hilarious and very nice attention to detail.

+

The edition I bought came with a "mini soundtrack" CD with some music, but in my oppinion it should've been the entire OST, at least the game also allows you to collect some of the tracks in-game and let you play it from the menus.

+

Character development

+

They added more backstory and personality to our well known characters to make the first sections of the game way more enjoyable. Notable mention for how Jessie is handled, my favourite! Wedge is also very funny, more or less what my imagination created for him back in the day.

+

To add contrast to the previous point, there's a new character that appears out of nowhere: Roche, he is a SOLDIER and a boss battle in an expanded part of the story; he didn't have any backstory nor anything to him and then you just never meet him again. That was really weird, I expected to find it sometime later in the game (and there was the perfect moment to do so right at the end...).

+

Avalanche gets more human as it is not just the characters you meet, there are more people that know you and help the cause... and others that don't. It gives more life to the resistance group.

+

Sephiroth is shown several times, but they didn't add any meaningful explanation nor backstory to him, only some glimpses from flashbacks; then it becomes the final boss of the Remake with no explanation whatsoever. While I can understand the impact I think new players will be lost here.

+

The ending

+

Oh boy... I'm not sure I've understood the ending properly but I'm reluctant to read or watch anything related to it to avoid subconciously alter what it made me feel. If it meant what I think, it gave a lot of room for the next chapters to continue through. Whatever that's a good think or not... we'll see in a few years.

+

I liked what they did, though it was a bit of a mindfork. And if it was for me, who have played the original, I can't possibly understard what someone that didn't think about it.

+

Basically the succession of events happening in the remake is the same as the ones in the vanilla game (sort of) but at some point you encounter a new kind of creatures that you know nothing about preventing you from going _where you're not supposed to be_. These creatures are revealed to be called _Whispers_ -servants of destiny itself- that doesn't allow events to diverge from they path _its supposed to take_. Do you understand where this is going?

+

So, events continue and you end up in the Shinra building at the end, and you met Sephiroth. Maybe. After the touching reunion, **Sephiroth kills Barret** (OH MY GOD), but this whispers came to the rescue, because that's not supposed to happen, that was not _his destiny_.

+

Sephiroth ends up summoning the mother of all _Whispers_ and you need to fight it **in order to fight destiny itself**. Which you of course beat, and then the game ends, not after presenting you with a touching scene from Zack and Biggs still alive when they are not supposed to.

+

So my take for all of this is... you beat destiny so the characters in the remake doesn't need to follow the predestined path they required to follow, esentially breaking free from all the events happening in Final Fantasy VII. Aerith could live, Sephiroth could just not appear again, Zack could appear in future chapers, ... they managed to get free from the original in a very elegant way.

+

I liked this ending -and the possibilities it represent- a lot as a player that know the original... if I got it right.

+

Replayability

+

While thropies are a good initiative, some of them require to re-play some of the chapters of the game, one of them in particular requiring to play the entire game again in another difficulty mode. At least the game makes really easy to jump to any chapter of the game once you have completed it, in case you missed or left something for later.

+

I'm not a fan of this kind of tactics to make games longer as my main motivation to play a game is the story and gameplay, making the same things I've experienced already more difficult is not going to make me want to play the entire thing again. That said, some collectibles (the music discs in this case) are easy to obtain and I got them all without the need of any guides though I'm not sure if I would have come back for them.

+

This is how it finished for me:

+

The game current thropy completion on my account

+

No screenshots on the ending

+

This is a really stupid thing on my part, but I love taking screenshots, I have gigabytes of screenshots from PC, PS4 and Switch combined.

+

The last chapter for the Remake disables this possibility for users for some reason. I'm assuming it was to prevent a lot of screenshots/videos posted of the ending which were already out there anyway. Instead of that they prevented legitimate users of the feature from using it and make my screenshot collection bigger. Sad.

+

Conclusion

Maybe this is not a tech marvel as other games in this platform are, but they surely know how to play with a good story and nostalgia from us. At the beginning I was reluctant to know about any other chapter in this series, but the ending left me wondering... what they have in store for us?

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-7-360.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-7-360.jpg new file mode 100644 index 0000000..358597d Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-7-360.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-7-640.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-7-640.jpg new file mode 100644 index 0000000..70ff618 Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-7-640.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-7.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-7.jpg new file mode 100644 index 0000000..008108f Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-7.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-gone-360.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-gone-360.jpg new file mode 100644 index 0000000..8aa0576 Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-gone-360.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-gone-640.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-gone-640.jpg new file mode 100644 index 0000000..2ff8eb1 Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-gone-640.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-gone.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-gone.jpg new file mode 100644 index 0000000..64005c5 Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/sector-gone.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/splash-360.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/splash-360.jpg new file mode 100644 index 0000000..5e60934 Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/splash-360.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/splash-640.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/splash-640.jpg new file mode 100644 index 0000000..d809171 Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/splash-640.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/splash.jpg b/blog/2020/10/15/final-fantasy-vii-remake-my-review/splash.jpg new file mode 100644 index 0000000..b277ce3 Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/splash.jpg differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/trophies-360.png b/blog/2020/10/15/final-fantasy-vii-remake-my-review/trophies-360.png new file mode 100644 index 0000000..8199a43 Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/trophies-360.png differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/trophies-640.png b/blog/2020/10/15/final-fantasy-vii-remake-my-review/trophies-640.png new file mode 100644 index 0000000..624643e Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/trophies-640.png differ diff --git a/blog/2020/10/15/final-fantasy-vii-remake-my-review/trophies.png b/blog/2020/10/15/final-fantasy-vii-remake-my-review/trophies.png new file mode 100644 index 0000000..624643e Binary files /dev/null and b/blog/2020/10/15/final-fantasy-vii-remake-my-review/trophies.png differ diff --git a/blog/2020/11/01/october/image-360.jpg b/blog/2020/11/01/october/image-360.jpg new file mode 100644 index 0000000..59db0d3 Binary files /dev/null and b/blog/2020/11/01/october/image-360.jpg differ diff --git a/blog/2020/11/01/october/image-640.jpg b/blog/2020/11/01/october/image-640.jpg new file mode 100644 index 0000000..457f3d0 Binary files /dev/null and b/blog/2020/11/01/october/image-640.jpg differ diff --git a/blog/2020/11/01/october/image.jpg b/blog/2020/11/01/october/image.jpg new file mode 100644 index 0000000..a49083a Binary files /dev/null and b/blog/2020/11/01/october/image.jpg differ diff --git a/blog/2020/11/01/october/index.html b/blog/2020/11/01/october/index.html new file mode 100644 index 0000000..f7d5856 --- /dev/null +++ b/blog/2020/11/01/october/index.html @@ -0,0 +1,143 @@ + + + + + October 2020 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

October 2020

+
+ Published on November 01, 2020 +
+ +
+ +

And another month went by.

+

The view from the beach here is awesome

+ + +

Projects

I have started my slow journey into Golang and spend an skill boost day at work doing some stuff with it. Ended up +with a lot of tabs open but it was the most fun I have had for a while! If you're curious the result is on my +gurl repository, it's not complete (or useful) by any means, but I want to +expand it with new features while I learn some more.

+

In my spare time I've been working on a simple program to manage my game's screenshots, I have a lot over several +computers/operating systems and I want to organize them better to publish them on an online gallery. I'm starting +to enjoy Go quite a bit the more I do with it, even if it's only minor stuff.

+

Books

    +
  • The Magicians' Guild (Trudi Canavan)

    +

    Started again from the beginning, I just need to fit the reading habit into my schedule.

    +
  • +
+

TVShows and Movies

+

Games

    +
  • Final Fantasy VII: Remake

    +

    I finally put an end to it. My review in a separate post

    +
  • +
  • A Short Hike

    +

    A short (as the name implies) adventure of the path to hike a mountain and all the people you met in between. Love the art style and the simplicity of the game. +Liked the idea of having the achievements directly on the switch too, in-game. (I miss that from Steam on the Switch) +I'm a fan of this kind of games you can enjoy and put an end to them in a few hours.

    +
  • +
  • Terraria

    +

    My terraria state

    +

    We managed to complete it. Which in our case meant getting al achievements. It was a really fun +ride! This game is easily one of my favourites and for the price you can get it is completely a must, you get +an incredible amount of content and entertainment, better played with friends!

    +
  • +
  • Starbound

    +

    Terraria, but in space! And I have a MECH!

    +

    My mech in Starbound

    +
  • +
  • Graveyard Keeper

    +

    Got this for the Switch because it was supposed to be more linear and light than Stardew Valley, but upon +starting I got tons of things to do and it got a bit overwhelming for me right now, wanted something more +lightweight to play at the moment. On hold for now.

    +
  • +
  • 10 mg :)

    +

    This is a really small game (10mg stands for 10 minute games) as a tribute to the arcade classics with some kind of twist. +I got near 20 minutes of gameplay from this and it was fun to go through it :)

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/11/01/october/starbound-360.jpg b/blog/2020/11/01/october/starbound-360.jpg new file mode 100644 index 0000000..88acfb8 Binary files /dev/null and b/blog/2020/11/01/october/starbound-360.jpg differ diff --git a/blog/2020/11/01/october/starbound-640.jpg b/blog/2020/11/01/october/starbound-640.jpg new file mode 100644 index 0000000..88acfb8 Binary files /dev/null and b/blog/2020/11/01/october/starbound-640.jpg differ diff --git a/blog/2020/11/01/october/starbound.jpg b/blog/2020/11/01/october/starbound.jpg new file mode 100644 index 0000000..88acfb8 Binary files /dev/null and b/blog/2020/11/01/october/starbound.jpg differ diff --git a/blog/2020/11/01/october/terraria-360.jpg b/blog/2020/11/01/october/terraria-360.jpg new file mode 100644 index 0000000..6f0e65f Binary files /dev/null and b/blog/2020/11/01/october/terraria-360.jpg differ diff --git a/blog/2020/11/01/october/terraria-640.jpg b/blog/2020/11/01/october/terraria-640.jpg new file mode 100644 index 0000000..3db5e10 Binary files /dev/null and b/blog/2020/11/01/october/terraria-640.jpg differ diff --git a/blog/2020/11/01/october/terraria.jpg b/blog/2020/11/01/october/terraria.jpg new file mode 100644 index 0000000..3db5e10 Binary files /dev/null and b/blog/2020/11/01/october/terraria.jpg differ diff --git a/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/c5400-360.jpg b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/c5400-360.jpg new file mode 100644 index 0000000..418f185 Binary files /dev/null and b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/c5400-360.jpg differ diff --git a/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/c5400-640.jpg b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/c5400-640.jpg new file mode 100644 index 0000000..418f185 Binary files /dev/null and b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/c5400-640.jpg differ diff --git a/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/c5400.jpg b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/c5400.jpg new file mode 100644 index 0000000..418f185 Binary files /dev/null and b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/c5400.jpg differ diff --git a/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/dhcp-360.png b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/dhcp-360.png new file mode 100644 index 0000000..08d9ff2 Binary files /dev/null and b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/dhcp-360.png differ diff --git a/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/dhcp-640.png b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/dhcp-640.png new file mode 100644 index 0000000..08d9ff2 Binary files /dev/null and b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/dhcp-640.png differ diff --git a/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/dhcp.png b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/dhcp.png new file mode 100644 index 0000000..08d9ff2 Binary files /dev/null and b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/dhcp.png differ diff --git a/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/index.html b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/index.html new file mode 100644 index 0000000..3adac3a --- /dev/null +++ b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/index.html @@ -0,0 +1,114 @@ + + + + + Setting up TP-Link's Archer C5400 in AP mode | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Setting up TP-Link's Archer C5400 in AP mode

+
+ Published on November 08, 2020 +
+ +
+ +

I recently bought a firewall router for home to improve our general stability (ISP provided routers kinda suck) and +improve security at home. The more smart devices connected to the network the more concerned I become of this kind +of stuff.

+

In this case my problem was very simple: I have the firewall router and the access point router. My access point +router (TP-Link's Archer C5400) exposes it's own DHCP server over it's own LAN segment. For my firewall router to +work properly it has to recognise all devices on the network and with the access point creating it's own LAN, +everything connected via Wifi was showing up in the firewall as one device (the access point router).

+

Archer C5400

+ + +

The router's interface didn't allow me to set up AP mode, thus only letting me use it as a router. I contacted support +and they told me that the version the router I had (V1) didn't support AP mode only the newest version (V2, from 2017) +supported it, or some other latest devices.

+

I didn't want to gave up on my router because it improved my wireless performance at home significantly from the ISP +router and even some Unifi's I tried in the past but in the end I got an AX6000 to try it out (which was the newer +version of the one I have so I expected it to perform similarly). +We tested it for some days and wireless performance wasn't as good as with the C5400 and some of our devices lost +connectivity from time to time so I ended up returning it and keeping the one I had.

+

After thinking for a while and even considering looking for a C5400-V2 I tested to manually set it up on my access +point before wasting more money on devices, after all, I was very happy with this one. And to my surprise I could +enable AP mode on the router very easily.

+

Instructions

    +
  1. Connect to your C5400 via Wifi (Ethernet should work as well)

    +
  2. +
  3. Disconnect the WAN cable from the router (you will lose internet connection but you can access the C5400's web +interface)

    +

    Internet

    +
  4. +
  5. Disable DHCP. You will retain your lease until you reconnect again.

    +

    DHCP

    +
  6. +
  7. Give the router a free IP address from the range your router is exposing on it's LAN segment.

    +

    LAN

    +

    In this case the LAN segment is 192.168.1.0/24 and the DCHP esposes from the 192.168.1.150-200, +in order to have the IP easily accesible I gave it the 192.168.1.2 while the router is the 192.168.1.1.

    +
  8. +
  9. Connect an ethernet cable coming from the router to a LAN port (not WAN).

    +
  10. +
  11. Reboot your router.

    +
  12. +
+

After your access point has finished rebooting it should have the IP address you set on the LAN settings and +all devices connected to the access point should have their IP Addresses allocated by the router, successfuly +making the C5400 a proper access point.

+

I'm unsure if this works in other models as well, but I belive it should and if you came here looking for a +change give it a try and let me know if it worked for your model as well so I can update the post accordingly.

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/internet-360.png b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/internet-360.png new file mode 100644 index 0000000..155d30e Binary files /dev/null and b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/internet-360.png differ diff --git a/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/internet-640.png b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/internet-640.png new file mode 100644 index 0000000..35303e1 Binary files /dev/null and b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/internet-640.png differ diff --git a/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/internet.png b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/internet.png new file mode 100644 index 0000000..35303e1 Binary files /dev/null and b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/internet.png differ diff --git a/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/lan-360.png b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/lan-360.png new file mode 100644 index 0000000..0d64116 Binary files /dev/null and b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/lan-360.png differ diff --git a/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/lan-640.png b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/lan-640.png new file mode 100644 index 0000000..0d64116 Binary files /dev/null and b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/lan-640.png differ diff --git a/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/lan.png b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/lan.png new file mode 100644 index 0000000..0d64116 Binary files /dev/null and b/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/lan.png differ diff --git a/blog/2020/12/01/november/image-360.jpg b/blog/2020/12/01/november/image-360.jpg new file mode 100644 index 0000000..0bca563 Binary files /dev/null and b/blog/2020/12/01/november/image-360.jpg differ diff --git a/blog/2020/12/01/november/image-640.jpg b/blog/2020/12/01/november/image-640.jpg new file mode 100644 index 0000000..d27fcca Binary files /dev/null and b/blog/2020/12/01/november/image-640.jpg differ diff --git a/blog/2020/12/01/november/image.jpg b/blog/2020/12/01/november/image.jpg new file mode 100644 index 0000000..97853cd Binary files /dev/null and b/blog/2020/12/01/november/image.jpg differ diff --git a/blog/2020/12/01/november/index.html b/blog/2020/12/01/november/index.html new file mode 100644 index 0000000..5aac242 --- /dev/null +++ b/blog/2020/12/01/november/index.html @@ -0,0 +1,200 @@ + + + + + November 2020 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

November 2020

+
+ Published on December 01, 2020 +
+ +
+ +

Checking my images it seems this month I didn't have anything remarkable from the outside so... I just +wanted to share that this month I have given myself some very nice meals and I improved the +Katsu Curry recipe quite a bit. I'm not good at cooking by any means, but the relax you get +from listening to music while cooking some healthy food is pretty good.

+

This month I've made myself a lot of nice meals

+ + +

Projects

    +
  • Switch games json

    +

    I made a simple script to parse and expose the Nintendo Switch game list in JSON including the encrypted title ID +field that is used on the screenshots on the system. The JSON list is generated every day from the Switchbrew wiki +and exposed via Github pages.

    +

    The main problem here is that not every game is present on Switchbrew, so I'm unsure how to automate this without +asking people to pull request missing games or doing that myself (for the ones missing). I need to check if the same +title ID filed that is required to get the proper encrypted field is present on the eShop's API. If that's the case +it would be possible to get the list for all games easily.

    +
  • +
  • Games Screenshot Manager

    +

    Related to the one above, an application to fetch and sort all screenshots found from several providers and games. +Currently working for Steam, Nintendo Switch and some games on several operating systems. I'm starting to like this +golang thing. :D

    +
  • +
  • Butterrobot

    +

    I've been making slow progress with the admin interface. I'm trying to keep it as simple as possible: a way to +check which channels and plugins there are available and an option to enable plugins with channels allowing a +JSON configuration to be used with them, since the same plugin on a different channel would require a different +output. I hope to have something useful on December if my time allows.

    +
  • +
  • I've also spent some time playing with:

    +
      +
    • My Raspberries: Playing with different OSs, booting from USB, setting up Home Assistant properly, ...
    • +
    • Firewalla: Setting up my network devices, assigning IPs and understanding it's inner workflows a bit. I've +also setup Pi-Hole inside it as main DNS server replacing the one they use.
    • +
    • Alpine Linux: On the Pis and containers to understand the difference with other OSs.
    • +
    • Arch Linux: I'm currently starting from scratch my Dell XPS 13 using Arch Linux base, and while it's more work +than a Next, next, next, finish install I'm enjoying it quite a lot since the result you get is a minimal install.
    • +
    +
  • +
+
    +
  • I'm working on blog posts for the Arch Linux installation, Alpine on Raspberry and self-hosting my smart devices +using Home Assistant so the blog have more content than the monthly updates. Another mini-posts for the tools I +self-host myself will

    +
  • +
  • Infra side it seems that my docker services via an VPS as door from the internet through an SDN to my home server +keep achieving 100% uptime from some months now, only going down if I test something on a dev service.

    +

    Problem is that even if it works, the containerized setup with two load balancers, SDN and so on seems both +complex from my use case and useful if something goes wrong.

    +

    I'm considering either moving to a simpler approach (non-containerized) or go all-in containerd and use something +like k3s to orchestrate the server at home. I would have an excuse to add some Pis and clusterize +everything properly.

    +

    I still don't know the path I'm going to take with this.

    +
  • +
+

Books

    +
  • The Magicians' Guild (Trudi Canavan)

    +

    Ongoing. I try to read a chapter a day if time or focus allows. I'm actually enjoying the story so far, even if +reading anything magic related after Mistborn seems dull.

    +
  • +
+

TVShows and Movies

    +
  • Star wars: Rebels
  • +
  • Rogue One: A star-wars Story
  • +
  • Star Wars: A new hope
  • +
  • Star Wars: The empire strikes back

    +

    Star Wars Marathon continues!

    +
  • +
  • Bones

    +

    Slowly and steady our joker when we don't know what to put on TV over meals.

    +
  • +
  • Mandalorian

    +

    It's back! This is why I look forward to Fridays now.

    +
  • +
  • The Blacklist

    +

    I discovered this randomly because the trailer poped up on my Netflix feed. The premise seemed interesting +and James Spader is such a great actor... Not sure how I managed to convince the Player 2 to watch this but +it seems she's enjoying it too. Kinda different from what we usually watch together, but welcome nevertheless.

    +
  • +
+

Games

    +
  • Forager

    +

    I completed all the achievements a while ago, but the author decided to add more... so I just fire this up +from time to time to try and maintain Forager on my Steam Perfect Games list.

    +
  • +
  • Minecraft

    +

    Oh my, this again? It seems so. Some friends wanted to get on the blocky train again. I have been out of +Minecraft for a good while (years!) and it seems interesting to come back after all this time. There are +some new things to explore and since I didn't really "finish" the game back in the day... let's see how +this goes.

    +

    Spoiler alert: We spent more time constructing stuff rather than progressing through the game.

    +
  • +
  • Pyramida

    +

    From Sokpop, the creators of Simmiland. A simple village builder game that seems minimalistic and fun in +the same way their other games are. I don't play this often since a play session can last a while (as it happened +with Simmiland) but let's see if I manage to get every achievement.

    +
  • +
  • The legend of Zelda: Age of Calamity

    +

    The Nintendo game for this month, already going strong on my Switch. I wasn't really sure if I would enjoy a +musou game even if it was Nintendo related, but so far is looking really good. I didn't though that cutting +through hordes of bokoblins would be so satisfactory and fun! I'm still not sure if the lore is "canon" or if +it truly precedes Breath of the Wild as it seems to happen on a parallel timeline created +by a time traveler, but I'm eager to know how it ends, even if the finale is the same as the sequel.

    +
  • +
  • Magic: The gathering (physical)

    +

    This refers to the physical version of the game. We bought a starter kit and play against each other from +time to time. It's new for both of us so this is an interesting learning curve to share.

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/advanced_mode-360.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/advanced_mode-360.png new file mode 100644 index 0000000..7e52488 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/advanced_mode-360.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/advanced_mode-640.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/advanced_mode-640.png new file mode 100644 index 0000000..7e52488 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/advanced_mode-640.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/advanced_mode.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/advanced_mode.png new file mode 100644 index 0000000..7e52488 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/advanced_mode.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/base-360.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/base-360.png new file mode 100644 index 0000000..7a6e89e Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/base-360.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/base-640.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/base-640.png new file mode 100644 index 0000000..b5f89f4 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/base-640.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/base.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/base.png new file mode 100644 index 0000000..b5f89f4 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/base.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/chromecast-360.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/chromecast-360.png new file mode 100644 index 0000000..d564e61 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/chromecast-360.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/chromecast-640.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/chromecast-640.png new file mode 100644 index 0000000..746e898 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/chromecast-640.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/chromecast.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/chromecast.png new file mode 100644 index 0000000..746e898 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/chromecast.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/index.html b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/index.html new file mode 100644 index 0000000..e28d472 --- /dev/null +++ b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/index.html @@ -0,0 +1,274 @@ + + + + + Self-hosting my home with Home Assistant (part 1) | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Self-hosting my home with Home Assistant (part 1)

+
+ Published on December 20, 2020 +
+ +
+ +

Even if I've been a Home Assistant's user for quite some time I have never dedicated myself to have a truly stable and dedicated service at home. I always treated it more like a pet project than anything else, but this is changing now.

+

I have a fair amount of Smart Devices around the house and just as you come to expect they come from different companies, protocols and sizes. Each day it passes I'm more and more concerned about my privacy and the value of the hardware I do not truly own.

+

With this in mind I have started the journey of self-hosting! Which to put it simply is... every device that is in my home (with a few exceptions that you'll see later) will be controlled by this Home Assistance instance.

+ + +

Note: I wanted to install this on a USB Drive, but apparently that's still not supported for Home Assistant OS, so I'm stuck with an SD Card for now. Some time after starting working on this I heard about datactl but I will setup that sometime later.

+
+

Base Home Assistant OS using an SD Card

For this just stick to the official documentation. Only download the latest release from github and copy the img card to your SD Card with dd, Balena or the tool of choice.

+

Put the SD Card on your Pi, turn it on and let's get started.

+

Base installation

After booting, you will be welcome with a wizard installation. Just follow the basic instructions to generate the main user/account, and the name and location for your home assistant.

+

Bonus: Use some website like this to get your elevation if you're feeling picky.

+

After that, you will be greeted by something similar to this:

+

Base install after the wizard

+

Update the system

Go to your Supervisor tab and check if you have any pending updates.

+

Moving to MariaDB

The default database backend is SQLite, and that has it's limitations, so let's move everything to MariaDB before any other configuration.

+
    +
  1. Install the File editor addon from Supervisor > Add-ons > File editor and start it.
  2. +
  3. Install the MySQL addon from Supervisor > Add-ons > MariaDB
  4. +
  5. Once installed, go to the configuration tab and set a password
  6. +
  7. Under the Info tab start the MariaDB Service and enable the Watchdog service
  8. +
  9. Go to the file editor interface and edit the configuration.yaml file.
  10. +
  11. Add the configuration for the recorder integration:

    +
    recorder:
    + db_url: mysql://homeassistant:<password>@core-mariadb/homeassistant?charset=utf8
    + commit_interval: 5
    + purge_keep_days: 90
    +
    +history:
    +
    +

    In this case I also set data to be stored for 90 days and a 5s delay between disk writes (since I'm using an SD Card and their lifespan is not very long with abundant I/O).

    +

    More information on the documentation: recorder, history

    +
  12. +
  13. Restart Home Assistant for the changes to take effect under Configuration > Server Constrols > Restart.
  14. +
+

Backups

Now another if not the most important of them all, automatic snapshots in case something goes wrong.

+

Go to Configuration > Automations > Add automation, and in top-right hamburger menu press Edit as YAML.

+

This configuration will perform a Weekly Snapshot every Monday at 3.00 AM. It is a sensible default once Home Assistant is running, but if you're going to play with it you may need to consider more frequent backups.

+
alias: Weekly Snapshot
+description: 'Performs a weekly snapshot'
+mode: single
+trigger:
+  - platform: time
+    at: '03:00'
+condition:
+  - condition: time
+    weekday:
+      - mon
+action:
+  - service: hassio.snapshot_full
+    data:
+      name: 'weekly_{{ now().strftime(''%Y-%m-%d'') }}'
+
+

Keep in mind that this snapshots are stored on the /backup folder on the Home Assistant instance, you need to create a way of moving that out of the system. You can use other automation, SCP from another machine or any compatible tool of your choice.

+

Setting up accounts and users that will use the system

This used to be more complex a while ago, now you only need to go to Configuration > People and add the users you need.

+

Now you can even add the avatar directly from the interface! Back in the day you required to upload the file and fiddling with YAMLs.

+

Also, for some options and add-ons to display, you need to enable "Advanced mode" on your user profile page.

+

Advanced mode enabled on my user

+

SSH Access

Easily handled by an integration, as almost everything with Home Assistant.

+

For this add-on to show up you need to enable Advanced mode as shown in the previous step.

+
+

Just install the Terminal and SSH addon, add your ssh key under the configuration tab under the authorized_keys property, and expose a port for the SSH server on the host. After that Start the service and enable the Watchdog to monitor it in case it fails.

+

Enable SSL

Even if my home assistant installation is going to be LAN only (using a VPN to have external access) I always setup SSL in all my services and while there are some options when setting this up with Home Assistant, I went the nginx way since that's what I'm more comfortable with.

+

Go to Supervisor > Add-on Store and install the NGINX Home Assistant SSL proxy.

+

Put your files under /ssl connecting to the instance via SSH or using any file editor addon on the store.

+

Under its Configuration tab, set up the domain and path to the certificate and key files.

+
domain: homeassistant.local
+certfile: nginx/homeassistant.local/homeassistant.crt # Relative to /ssl
+keyfile: nginx/homeassistant.local/homeassistant.key # Relative to /ssl
+
+

There are a number of guides out there to generate self-signed certificates. I have my own Certificate Authority that use to sign certificates for my local services, that way I can just trust my own CA and every dependant certificate will work out of the box.

+

As a note, for this to work with the companion apps on iOS you need to generate the certificates with pretty specific requisites. Android worked as a charm.

+

Getting the Home Assistant Companion

Download the application from your phone's store and after logging in you can setup the sensors to be sent to Home Assistant, this will be linked to your account so you could perform automation with them on the server.

+

Apart from using the app to control your home devices, the sensors will be useful to generate automation in the future.

+

Another useful thing to setup here is the local (LAN) address to use when the phone is connected to Wifi at home, using an external hostname when connecting via VPN/RemoteControl.

+

The first automation: tell me about updates

I use an script to send notifications to all devices (persons) on the house, with the title and message parameter:

+
alias: Send Notifications
+sequence:
+  - service: notify.mobile_app_oneplus6
+    data:
+      title: '{{ title }}'
+      message: '{{ message }}'
+# Insert more notifcations into sequence
+mode: single
+variables:
+  title: null
+  message: null
+
+

And this automation will check when there are any updates and send a notification using the previous script with the version number that just came in:

+
alias: Update notification
+description: "Notify everyone when there's an update available"
+trigger:
+  - platform: state
+    entity_id: binary_sensor.updater
+    from: 'off'
+    to: 'on'
+condition: []
+action:
+  - service: script.send_notifications
+    data:
+      title: New Home Assistant Release
+      message: >-
+        Home Assistant  {{ state_attr('binary_sensor.updater', 'newest_version')
+        }}  is now available.
+mode: single
+
+

Update notification on my phone

+

Add system sensors

I want to control how the Raspberry is doing, so I'm going to enable some system sensors using the systemmonitor sensor.

+

Edit the configuration.yaml file and add the following:

+
sensor:
+  - platform: systemmonitor
+    resources:
+      - type: disk_use_percent
+      - type: memory_use_percent
+      - type: swap_use_percent
+      - type: load_1m
+      - type: load_5m
+      - type: load_15m
+      - type: processor_use
+      - type: processor_temperature
+      - type: last_boot
+      - type: throughput_network_in
+        arg: eth0
+      - type: throughput_network_out
+        arg: eth0
+
+

This requires a Home Assistant restart for the changes to take effect.

+

I also added a custom lovelace dashboard to monitor everything easily, here is the YAML configuration:

+
views:
+  - title: Overview
+    path: overview
+    icon: 'mdi:eye'
+    visible:
+      - user: be3b6f5bc71c49ff9be6830d545cb4e0
+    badges: []
+    cards:
+      - type: grid
+        cards:
+          - type: gauge
+            entity: sensor.processor_use_percent
+            min: 0
+            max: 100
+            name: Processor
+            severity:
+              green: 50
+              yellow: 75
+              red: 80
+          - type: gauge
+            entity: sensor.memory_use_percent
+            min: 0
+            max: 100
+            severity:
+              green: 50
+              yellow: 65
+              red: 75
+            name: Memory
+          - type: gauge
+            entity: sensor.disk_use_percent
+            min: 0
+            max: 100
+            name: Disk usage
+            severity:
+              green: 50
+              yellow: 60
+              red: 75
+          - type: gauge
+            entity: sensor.processor_temperature
+            min: 0
+            severity:
+              green: 45
+              yellow: 50
+              red: 55
+            max: 70
+            name: Temperature
+          - type: gauge
+            entity: sensor.load_5m
+            min: 0
+            max: 4
+            severity:
+              green: 1
+              yellow: 2
+              red: 3
+title: System
+
+

And here's a preview:

+

Home Assistant simple system monitor lovelace dashboard

+

Adding integrations

At this point if you already have devices on your network your Home Assistant will send you a notification like this:

+

Notification telling that devices where found on network

+

So I'm going to setup the base integrations with the server to start controlling some devices.

+

Chromecast

But you said self-hosted! Yeah, yeah... And I want to, but there's no real alternative to the Cast protocol to self host, the speakers with Chromecast devices are just so convenient...

+
+

One of the simplest things to set up, just go to your integrations and add it. It will prompt you to select in which rooms each Chromecast device is and that's it.

+

Chromecast configuration

+

Weather (OpenWeatherMap)

I'm going to use the OpenWeatherMap integration because it provides more sensors than the one setup by default.

+

You just need to register to the service and enable the integration under Configuration > Integrations > OpenWeatherMap, supply your API key and set the mode to onecall_hourly which will download 3h forecasts each hour, enough for the free tier.

+

I had to wait for an hour or so until the API Key was valid for the integration to use, it keep saying Invalid API Key until I received a confirmation email for my account.

+
+

Phillips Hue

Linking the Phillips Hue is super easy, you only need to add the Hue integration, select the bridge IP from the dropdown (or input one manually) and press the button on the bridge to confirm.

+

After selecting in which area the bridge and bulbs are in, you're good to go.

+

BONUS: Since the comunication is done via LAN with the bridge, the bridge itself doesn't need internet access to work (as I have mine blocked in my firewall). Also in my case this is only temporal since I will move every Zigbee device to a cluster controlled by Home Assistant.

+
+

Tuya (Smart Things)

This is one of the dependencies I have that I'm most eager to get rid off, but for now there are some smart plugs at home that I need to control.

+

Going to Configuration > Integrations > Add the Tuya is on the list; you need to enter your username, password and country code for the integration to communicate with the Tuya API, so your devices will require internet connection.

+

The plan is to try and flash the plugs with Tasmota to free them from the cloud and any new ones I'm getting will be Zigbee compatbile with the hopes on having only Zigbee smart plugs at home.

+

Closing

That was easy!

+

The folks at Home Assistant have been working on this so good that almost everything can be done from the interface now. I see any normal user working with this mostly plug and play from the UI which is amazing in my opinion.

+

In future post I will dive into my Zigbee configuration, InfluxDB, ESPHome, Alarms ... there's so much to do!

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/notification-360.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/notification-360.png new file mode 100644 index 0000000..ba17358 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/notification-360.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/notification-640.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/notification-640.png new file mode 100644 index 0000000..ba17358 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/notification-640.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/notification.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/notification.png new file mode 100644 index 0000000..ba17358 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/notification.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/preparing-360.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/preparing-360.png new file mode 100644 index 0000000..ba2a061 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/preparing-360.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/preparing-640.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/preparing-640.png new file mode 100644 index 0000000..b290474 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/preparing-640.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/preparing.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/preparing.png new file mode 100644 index 0000000..b290474 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/preparing.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/system_monitor-360.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/system_monitor-360.png new file mode 100644 index 0000000..fb73101 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/system_monitor-360.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/system_monitor-640.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/system_monitor-640.png new file mode 100644 index 0000000..437098e Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/system_monitor-640.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/system_monitor.png b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/system_monitor.png new file mode 100644 index 0000000..437098e Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/system_monitor.png differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/update_notification-360.jpg b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/update_notification-360.jpg new file mode 100644 index 0000000..211401d Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/update_notification-360.jpg differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/update_notification-640.jpg b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/update_notification-640.jpg new file mode 100644 index 0000000..9a03c2a Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/update_notification-640.jpg differ diff --git a/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/update_notification.jpg b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/update_notification.jpg new file mode 100644 index 0000000..6ebcd39 Binary files /dev/null and b/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/update_notification.jpg differ diff --git a/blog/2021/02/01/january-2021/fallen-order-360.jpg b/blog/2021/02/01/january-2021/fallen-order-360.jpg new file mode 100644 index 0000000..c66d08f Binary files /dev/null and b/blog/2021/02/01/january-2021/fallen-order-360.jpg differ diff --git a/blog/2021/02/01/january-2021/fallen-order-640.jpg b/blog/2021/02/01/january-2021/fallen-order-640.jpg new file mode 100644 index 0000000..455c0d7 Binary files /dev/null and b/blog/2021/02/01/january-2021/fallen-order-640.jpg differ diff --git a/blog/2021/02/01/january-2021/fallen-order.jpg b/blog/2021/02/01/january-2021/fallen-order.jpg new file mode 100644 index 0000000..dcccfa4 Binary files /dev/null and b/blog/2021/02/01/january-2021/fallen-order.jpg differ diff --git a/blog/2021/02/01/january-2021/image-360.jpg b/blog/2021/02/01/january-2021/image-360.jpg new file mode 100644 index 0000000..9a4aa49 Binary files /dev/null and b/blog/2021/02/01/january-2021/image-360.jpg differ diff --git a/blog/2021/02/01/january-2021/image-640.jpg b/blog/2021/02/01/january-2021/image-640.jpg new file mode 100644 index 0000000..926f414 Binary files /dev/null and b/blog/2021/02/01/january-2021/image-640.jpg differ diff --git a/blog/2021/02/01/january-2021/image.jpg b/blog/2021/02/01/january-2021/image.jpg new file mode 100644 index 0000000..b7d289c Binary files /dev/null and b/blog/2021/02/01/january-2021/image.jpg differ diff --git a/blog/2021/02/01/january-2021/index.html b/blog/2021/02/01/january-2021/index.html new file mode 100644 index 0000000..9b08bac --- /dev/null +++ b/blog/2021/02/01/january-2021/index.html @@ -0,0 +1,186 @@ + + + + + January 2021 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

January 2021

+
+ Published on February 01, 2021 +
+ +
+ +

Madrid snowed from the Coppernicus

+

Image credit: European Union, Copernicus Sentinel-2 imagery

+
+ + +

Projects

    +
  • Games Screenshot Manager: I've added a few +new providers to get screenshots from, some file naming fixes for Windows and the option to download covers +for games to create a nice gallery with them.

    +

    I still need to do some improvements on how options traverse through the CLI to providers to have a more +robust system in place, and also to allow some unused options on current providers, for example allow overriding +a provider's default input-path or anything else, along with custom arguments that providers may need.

    +
  • +
  • I've uploaded my gallery of screenshots online. I've made that using the above +and thumbsup along with some scripts to set it all together. I love the +result.

    +
  • +
  • Butterrobot has gone thorugh some small fixes as well. I'm +already using the new version at work and everything seems to be working fine. I need to add some proper testing +and review all the TODO coments I have laying around.

    +
  • +
  • We got a brand new NAS at home and I've been digging through hard drives and computers to start organizing all +my digital life in there. It's a work in progress that will take a lot of time.

    +
  • +
  • Home Assistant have a few improvements in terms of automations, lovelace dashboards and so on. Zigbee configuration +has been a bit of a hassle since every motion and door sensor stopped being paired with my zigbee stick so I'm +using a different integration to and so far everything seems to be working.

    +
  • +
  • I've started learning Godot. I've always wanted to make and publish a game, and in the +past (when I was very young) I made some small things using +DIV Games Studio, +Dark Basic and +BlitzBasic +but my career on game development ended abruptly, and there was that. Until today.

    +

    Even though I did some little game using Unity a few years back, Godot seems like a very powerful game development +enviroment, it exports to several platforms, it's easy to understand (though hard to master!) and it's open source.

    +

    Not looking a career on game development but at least to cross out something I've wanted to learn for quite some +time now.

    +
  • +
  • I'm thinking the best way of handling "guides" for the blog (as I started with the one for Home Assistant). Sometimes +I think a post is the better way because I can use as a note while I'm working on something, but lately I've been +thinking on setting up a simple wiki that could store the same content but be constantly updated and I can use it as +reference as well. I would have to find an easy way of storing the information and building it that is not overly +complicated and allows me freedom to have it as a bunch of markdown files on a folder.

    +
  • +
+

Books

    +
  • The high lord (Trudi Canavan)

    +

    Finished the trilogy. I'm sad to say that this was average (at best) for me... the real story starts happening in +the last book; pretty condensed for a trilogy while the first two only set ups the characters with nothing +interesting happening and to make things worse the ending feels pretty rushed and boring.

    +

    I read it through the end though, so it had the necessary components to me to be engaged.

    +
  • +
  • Started reading Masters of Doom

    +

    I couldn't decide for any fantasy series to read now, so I'm going to read something different and see how it goes.

    +
  • +
+

TVShows and Movies

    +
  • Star Wars: Rise of Skywalker

    +

    Star Wars Marathon finishes!

    +
  • +
  • The Blacklist

    +

    Reached Season 5.

    +

    We're debating if continuing with this or not. While I enjoy James Spader a lot on the show the main reason to watch +it is the hook they have on us with the parent - daughter - spy mystery situation. It was nice at first but after +five seasons we still don't have clear answers for anything and when they give us a glimpse of one, on the next +episode everyone seems to forget about it. It's frustrating. And the relationship between the to main characters is +annoying with their "Love, now hate, now maybe love?" behavior each episode...

    +
  • +
  • Wanda Vision

    +

    Slow start for the Marvel's Cinematic Universe on TV Shows. The first chapters are too much sitcom and very little "real +world" related. I hope this unfolds better in later episodes and that the other series that are yet to come are +better than this... I know that the last episode have more "Marvel" stuff, but it was one episode out of four released +to date... let's see how it goes on the fifth.

    +
  • +
+

Games

    +
  • The legend of Zelda: Age of Calamity

    +

    Finally rushed through the final parts of the main story. I liked the game but it got very repetitive and I grew +bored of farming items or stuff to unlock improvements for the characters, so I just finsihed the 3 or 4 last +story missions with my underlevel characters and called it a day.

    +

    Even at the end you got a lot of new stuff to unlock in the missions map, and that's gonna stay there for +the foreseable future.

    +
  • +
  • Final Fantasy IX

    +

    I played a bit through it, the problem is that last time I played was on spring 2019... I forgot almost everything about +the story so far (which I didn't like very much at the time, and I wasn't enjoying it now...) so I got almost through the +end when I decided I should move into other things.

    +
  • +
  • Star Wars: Jedi Fallen Order

    +

    Got this as a Christmas present and I'm slowly going through it. There are some bugs here and there, but I wanted to play +something Star Wars related and this seems the best thing at the moment. I love BD-1.

    +

    Jedi Fallen Order Screenshot

    +
  • +
  • I discovered RetroAchievements thanks to RetroArch, and I'm amazed and how the community +put this together for all of us. It works incredibly well (for the few I've tried so far) and you can even set up +retroarch to make a screenshot automatically once you unlock an achievement, how amazing is that?

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/03/01/february-2021/image-360.jpg b/blog/2021/03/01/february-2021/image-360.jpg new file mode 100644 index 0000000..30c35e6 Binary files /dev/null and b/blog/2021/03/01/february-2021/image-360.jpg differ diff --git a/blog/2021/03/01/february-2021/image-640.jpg b/blog/2021/03/01/february-2021/image-640.jpg new file mode 100644 index 0000000..be5ad3c Binary files /dev/null and b/blog/2021/03/01/february-2021/image-640.jpg differ diff --git a/blog/2021/03/01/february-2021/image.jpg b/blog/2021/03/01/february-2021/image.jpg new file mode 100644 index 0000000..fb502aa Binary files /dev/null and b/blog/2021/03/01/february-2021/image.jpg differ diff --git a/blog/2021/03/01/february-2021/index.html b/blog/2021/03/01/february-2021/index.html new file mode 100644 index 0000000..d9ce2e6 --- /dev/null +++ b/blog/2021/03/01/february-2021/index.html @@ -0,0 +1,154 @@ + + + + + February 2021 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

February 2021

+
+ Published on March 01, 2021 +
+ +
+ +

A month for changes! A lot of daily grind and planning new stuff for the future.

+

We still can't move freely around but restrictions are leaving us step by step, let's see how long it lasts here, at least I'm pretty happy that I can go to my favourite coffee shop even if it's for takeaway. After a few reluctant weeks our avocado started to rise! I'm trying to track it's growth with daily pics, but oh man it grows SO fast.

+

image alt

+
Our avocado is blooming nicely :)
+ +

Projects

    +
  • go-mangadex

    +

    A small golang library to perform requests to the MangaDex API, mainly as a side project for the one following this.

    +
  • +
  • mangadex2cbz

    +

    A work in progress converter of Mangadex collections to a comic book format readable on mobile devices. Right now it's a bit of a mess in a single function made as a proof of concept, but you can run it and it works. A lot of testing and corner cases need to be cut though, as for example the workflow don't take into account failed downloads and it will just follow and create the volume anyway.

    +
  • +
  • Games Screenshot Manager

    +

    I have been using this for a while (as you can check into my online gallery) and didn't put more thought into it, just minor refactors. I want to make a proper site and announcement though, and keep expanding on the providers. As a side note, I may start a community driven list of Switch games, since Switchbrew's list is not updated very actively and the other community project don't have much maintenance lately.

    +
  • +
  • fmartingr.com

    +

    I simplified the site design, removing the sidebar and using a simple header and footer. I may move from Lektor to Hugo as well, I've been doing some experiments with it for a possible wiki and it may fit. Also, is pretty fast.

    +
  • +
  • Godot Engine learning is still ongoing, doing some lesson games.

    +
  • +
  • I still have my local infra refactor pending, and I'm constantly switching between starting a k3s cluster or just continue as I am with simple docker containers running and manually setup

    +
  • +
+

Books

    +
  • Read Alice in Borderland

    +

    I wanted to know what happened after the Netflix's show left us with the cliffhanger, and I ended up discovering that there's more to it than just one storyline.

    +
  • +
  • Read Alice in Borderland Retry

    +

    A very short sequel to the original with the same protagonist, is not as good as the main history but I liked the twist at the end.

    +
  • +
  • Reading Alice in Border Road

    +

    Another twist to the same story, a bit boring at the beginning but it starts to grow on you once characters start developing.

    +
  • +
+

TVShows and Movies

    +
  • Re-started watching The Blacklist

    +

    The Player 2 wanted to gave it another show, so we're now at season 7...

    +
  • +
  • The Queen's Gambit

    +

    After a lot of people recommended it to us we managed to went through it over a weekend. I loved it, the character development and interaction, and the fact that it is a self-contained history in a few chapters (I'm growing fond of reading/watching only completed stories). I recommend it as well of course, even if you don't know anything about chess.

    +
  • +
  • Wanda Vision

    +

    Almost through the end! As predicted the following chapters were more Marvel than the ones last month, and it has evolved quite nicely. Finale this week.

    +
  • +
  • Futurama

    +

    With the addition of Star into Disney+ a bunch of TVShows and Movies where added, and Futurama has been on my backlog for quite too long.

    +
  • +
+

Games

    +
  • Super Mario Bros. 3D World

    +

    Super Mario 3D World Screenshot

    +

    Almost finished it already! I'm on the last world (I think!) and have mastered all previous worlds by getting all collectibles and so on. The only letdown I have with this is that a friend told me that I need to complete the game with all available characters to unlock everything, which of course I'm not going to do. Repeating the same thing 4 more times... Nintendo, are you crazy?

    +
  • +
  • Star Wars: Jedi Fallen Order

    +

    I didn't play much this month, mostly because Mario arrived and playing on the switch is way more conveniant than on the Playstation, but I want to try out is using remote play with my phone makes me more eager to sit a play through it.

    +
  • +
  • Overwatch

    +

    I removed the dust from my windows PC some days I just wanted to have some brainless pewpew for 15 minutes or so. I forgot how good this game it is for short play sessions.

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/03/01/february-2021/switch-mario3dworld-360.jpg b/blog/2021/03/01/february-2021/switch-mario3dworld-360.jpg new file mode 100644 index 0000000..d6545ca Binary files /dev/null and b/blog/2021/03/01/february-2021/switch-mario3dworld-360.jpg differ diff --git a/blog/2021/03/01/february-2021/switch-mario3dworld-640.jpg b/blog/2021/03/01/february-2021/switch-mario3dworld-640.jpg new file mode 100644 index 0000000..317f79f Binary files /dev/null and b/blog/2021/03/01/february-2021/switch-mario3dworld-640.jpg differ diff --git a/blog/2021/03/01/february-2021/switch-mario3dworld.jpg b/blog/2021/03/01/february-2021/switch-mario3dworld.jpg new file mode 100644 index 0000000..f3ac597 Binary files /dev/null and b/blog/2021/03/01/february-2021/switch-mario3dworld.jpg differ diff --git a/blog/2021/04/03/march-2021/image-360.jpg b/blog/2021/04/03/march-2021/image-360.jpg new file mode 100644 index 0000000..31ce7f7 Binary files /dev/null and b/blog/2021/04/03/march-2021/image-360.jpg differ diff --git a/blog/2021/04/03/march-2021/image-640.jpg b/blog/2021/04/03/march-2021/image-640.jpg new file mode 100644 index 0000000..8f838b8 Binary files /dev/null and b/blog/2021/04/03/march-2021/image-640.jpg differ diff --git a/blog/2021/04/03/march-2021/image.jpg b/blog/2021/04/03/march-2021/image.jpg new file mode 100644 index 0000000..c37439d Binary files /dev/null and b/blog/2021/04/03/march-2021/image.jpg differ diff --git a/blog/2021/04/03/march-2021/index.html b/blog/2021/04/03/march-2021/index.html new file mode 100644 index 0000000..99def70 --- /dev/null +++ b/blog/2021/04/03/march-2021/index.html @@ -0,0 +1,129 @@ + + + + + March 2021 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

March 2021

+
+ Published on April 03, 2021 +
+ +
+ +

Things are changuing!

+

image alt

+ + +

Personal

I'm switching ships! Next month I will be starting a new position at another company as a Golang Software Engineer. Yay!

+

Deciding to leave Red Hat has been hard, but it needed to be done. Most people assume I am crazy (and I can't blame them) but you need to be honest with yourself and find out what really makes you happy. Aim for that.

+

Projects

Didn't have much time this month to work on personal projects since I spent most of my free time doing some code challenges for several interviews I had. Funny thing that the position I'm going to work starting next month is not one of those.

+

That doesn't mean that I've not done things, just nothing tangible! I have some ideas here and there that I need to work on, specially for the games-screenshot-manager and switch-games-json but it require a bit of preparation in advance.

+

Books

    +
  • Read Alice in Border Road

    +

    I liked this one more that Retry, it presents the reader with the same premise but with a different objective/path for the protagonists. Definitely recommended if you liked the first instance.

    +
  • +
  • Read Doctor Aphra (2016 - 2019)

    +
  • +
  • Started reding Doctor Aphra (2020 - present)

    +

    I'm moving into comics now? I'm moving into comics now! I have been interested in reading some comics for a while, the main issue for me is that it's difficult to decide the start point. I wanted to read something from the Marvel universe but it is so vast that I ended up switching gears to this Star Wars issues that someone recommended me a while ago. And I loved it! My main issue is that the marvel unlimited app is shirt and I need to go and close/reopen the app every issue/several issues because some pages refuse to load... I'm not sure I will re-subscribe for a full year after this first month.

    +
  • +
+

TVShows and Movies

    +
  • Up to date with The Blacklist

    +

    We got to the end of Season 7 (the latest available on Netflix). Honestly, I don't want to watch it anymore.

    +
  • +
  • Started watching Suits

    +

    Thinking about a series that the Player 2 would like this one came to mind. I put the first episode to check and... we are at season 5 now.

    +
  • +
  • Finished Wanda Vision

    +

    It's over. I'm glad to say that the show got better and better the closest it got to the climax. I loved the ending and how this is going to fit into MCU's next phase.

    +
  • +
  • Started Falcon & The Winter Soldier

    +

    Like and old school action movie, at least the beginning. It's good to see that they are focusing different problems in this one compared to Wanda's.

    +
  • +
+

Games

    +
  • Super Mario Bros. 3D World

    +

    Almost almost finished. I made through all the courses and just two or three are incomplete (missing some star or the golden flag pole). I'm assuming once I do that more things would open up...

    +
  • +
  • Pokemon Sword & Pokemon GO

    +

    Player 2 has gotten me into Pokemon again. We're aiming to complete the pokedex this time, and another friend will play along as well. This series seems really easy compared to the last one I played (Pokemon Y), I'm always like 10 levels ahead or so. Maybe the fact that I'm catching all pokemon available in the routes as I go has something to do with it though.

    +
  • +
  • Animal Crossing: New Horizons

    +

    Barely connected a bit to get the Super Mario exclusive items and to confirm that my town and house is as dirty as it could be.

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/05/01/april-2021/beach-360.jpg b/blog/2021/05/01/april-2021/beach-360.jpg new file mode 100644 index 0000000..0d88168 Binary files /dev/null and b/blog/2021/05/01/april-2021/beach-360.jpg differ diff --git a/blog/2021/05/01/april-2021/beach-640.jpg b/blog/2021/05/01/april-2021/beach-640.jpg new file mode 100644 index 0000000..d8e00ac Binary files /dev/null and b/blog/2021/05/01/april-2021/beach-640.jpg differ diff --git a/blog/2021/05/01/april-2021/beach.jpg b/blog/2021/05/01/april-2021/beach.jpg new file mode 100644 index 0000000..646ca7f Binary files /dev/null and b/blog/2021/05/01/april-2021/beach.jpg differ diff --git a/blog/2021/05/01/april-2021/beach.mov b/blog/2021/05/01/april-2021/beach.mov new file mode 100644 index 0000000..a6a1999 Binary files /dev/null and b/blog/2021/05/01/april-2021/beach.mov differ diff --git a/blog/2021/05/01/april-2021/beach.mp4 b/blog/2021/05/01/april-2021/beach.mp4 new file mode 100644 index 0000000..8524f79 Binary files /dev/null and b/blog/2021/05/01/april-2021/beach.mp4 differ diff --git a/blog/2021/05/01/april-2021/beach.ogv b/blog/2021/05/01/april-2021/beach.ogv new file mode 100644 index 0000000..307cc09 Binary files /dev/null and b/blog/2021/05/01/april-2021/beach.ogv differ diff --git a/blog/2021/05/01/april-2021/image-360.jpg b/blog/2021/05/01/april-2021/image-360.jpg new file mode 100644 index 0000000..d9c69d7 Binary files /dev/null and b/blog/2021/05/01/april-2021/image-360.jpg differ diff --git a/blog/2021/05/01/april-2021/image-640.jpg b/blog/2021/05/01/april-2021/image-640.jpg new file mode 100644 index 0000000..70c75ed Binary files /dev/null and b/blog/2021/05/01/april-2021/image-640.jpg differ diff --git a/blog/2021/05/01/april-2021/image.jpg b/blog/2021/05/01/april-2021/image.jpg new file mode 100644 index 0000000..6f3b944 Binary files /dev/null and b/blog/2021/05/01/april-2021/image.jpg differ diff --git a/blog/2021/05/01/april-2021/index.html b/blog/2021/05/01/april-2021/index.html new file mode 100644 index 0000000..0db3cad --- /dev/null +++ b/blog/2021/05/01/april-2021/index.html @@ -0,0 +1,137 @@ + + + + + April 2021 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

April 2021

+
+ Published on May 01, 2021 +
+ +
+ +

image alt

+
Finally went to a good enough place to try out my drone filming skills!
+ +

Personal

Finally flied a bit with my Drone! I bought it cause a good offer came up, but here is usually very windy plus I need to go a bit far away to a flight allowed zone. And well even if it wasn't the perfect weather to film around it was very good to lose the fear to lose the drone around even when I couldn't see it because it was too far away.

+

Can't wait for better weather though! Videos have a very good quality and the shots are just amazing from up there.

+
+ +

Projects

    +
  • Preparing a community given approach to switch-games-json since the other repository I'm basing it off is not active since last year and PR suggestions are not being merged.

    +
  • +
  • games-screenshot-manager is going under a huge refactor since the proof of concept is working very well on my end (being using it for a few months now) so it's time to make the codebase more decent.

    +
  • +
  • Trying out hugo as a replacement for lektor for this blog. I still need to figure out if the benefits are worth it the time investment.

    +
  • +
  • After doing Go for a while figured out what a pain in the ass is to deploy/containerize python applications.

    +
  • +
+

Books

    +
  • Started reading Doctor Aphra (2020 - present)

    +

    I like it, but my subscription ended after trying it for a month, and since I haven't seen any improvement to the app and the pages loading I'm not paying it anymore... it's $10/mo of suffering anytime I want to just read for 10 minutes. It's a shame since people made a lot of recommendations to read Marvel related things, but I'm assuming I would just end up buying the tomes physically. Wait... maybe this was Marvel's plan all along?

    +
  • +
  • Reading The Gamer

    +

    I started this a while ago and I've came back to it. Since I didn't remember where chapter I was in I just started it again. And boy I am glad... I didn't remember a thing!

    +
  • +
  • Reaading DICE

    +

    Keeping the pace up a bit, I'm still far away from reaching the current episode, but it keeps getting interesting.

    +
  • +
+

TVShows and Movies

    +
  • Still watching Suits

    +

    We watch it at lunch/dinner time. Not that I'm enjoying it much anymore, but it's still way better than regular TV.

    +
  • +
  • Finished Falcon & The Winter Soldier

    +

    Oh man, only six episodes! The show was amazing, but I feel like a couple of extra episodes wouldn't have hurt character development. And now the wait until Loki premieres on June... :(

    +
  • +
  • Watched Invincible season 1

    +

    A pleasant surprise on Amazon Prime. I'm up to date and I'm liking it, it's start a bit childish but oh boy you're up to a surprise on the first episode. It seems is based on comics as well, so how knows if I would grow impatient and just read the comics instead of waiting for the next seasons.

    +
  • +
+

Games

    +
  • Super Mario Bros. 3D World

    +

    So. What is this madness Nintendo? Are you serious? Not only there's another world with both a crazy hard level to beat and an almost infinite star box, but now I'm supposed to beat every level with every character?

    +

    Super Mario 3D World trying to make me crazy

    +
  • +
  • Rhythm Tengoku (リズム天国 / Rhythm Heaven)

    +

    So I discovered this game on a friend's stream and I instantly fell in love. Got it second hand complete (with its box, manual and everything!). I have played various rhythm games over the years and let me tell you this one is hard. It measures your rhythm at the beginning and oh boy I'm up for a challenge here...

    +
    +
    +
    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/05/01/april-2021/rhythm-tengoku-01-360.jpg b/blog/2021/05/01/april-2021/rhythm-tengoku-01-360.jpg new file mode 100644 index 0000000..3137f96 Binary files /dev/null and b/blog/2021/05/01/april-2021/rhythm-tengoku-01-360.jpg differ diff --git a/blog/2021/05/01/april-2021/rhythm-tengoku-01-640.jpg b/blog/2021/05/01/april-2021/rhythm-tengoku-01-640.jpg new file mode 100644 index 0000000..f7f227e Binary files /dev/null and b/blog/2021/05/01/april-2021/rhythm-tengoku-01-640.jpg differ diff --git a/blog/2021/05/01/april-2021/rhythm-tengoku-01.jpg b/blog/2021/05/01/april-2021/rhythm-tengoku-01.jpg new file mode 100644 index 0000000..6ab4d8a Binary files /dev/null and b/blog/2021/05/01/april-2021/rhythm-tengoku-01.jpg differ diff --git a/blog/2021/05/01/april-2021/rhythm-tengoku-02-360.jpg b/blog/2021/05/01/april-2021/rhythm-tengoku-02-360.jpg new file mode 100644 index 0000000..32b62a6 Binary files /dev/null and b/blog/2021/05/01/april-2021/rhythm-tengoku-02-360.jpg differ diff --git a/blog/2021/05/01/april-2021/rhythm-tengoku-02-640.jpg b/blog/2021/05/01/april-2021/rhythm-tengoku-02-640.jpg new file mode 100644 index 0000000..f53cbea Binary files /dev/null and b/blog/2021/05/01/april-2021/rhythm-tengoku-02-640.jpg differ diff --git a/blog/2021/05/01/april-2021/rhythm-tengoku-02.jpg b/blog/2021/05/01/april-2021/rhythm-tengoku-02.jpg new file mode 100644 index 0000000..b993d8a Binary files /dev/null and b/blog/2021/05/01/april-2021/rhythm-tengoku-02.jpg differ diff --git a/blog/2021/05/01/april-2021/super-mario-3d-world-madness-360.jpg b/blog/2021/05/01/april-2021/super-mario-3d-world-madness-360.jpg new file mode 100644 index 0000000..f036261 Binary files /dev/null and b/blog/2021/05/01/april-2021/super-mario-3d-world-madness-360.jpg differ diff --git a/blog/2021/05/01/april-2021/super-mario-3d-world-madness-640.jpg b/blog/2021/05/01/april-2021/super-mario-3d-world-madness-640.jpg new file mode 100644 index 0000000..bc956ba Binary files /dev/null and b/blog/2021/05/01/april-2021/super-mario-3d-world-madness-640.jpg differ diff --git a/blog/2021/05/01/april-2021/super-mario-3d-world-madness.jpg b/blog/2021/05/01/april-2021/super-mario-3d-world-madness.jpg new file mode 100644 index 0000000..2877d46 Binary files /dev/null and b/blog/2021/05/01/april-2021/super-mario-3d-world-madness.jpg differ diff --git a/blog/2021/06/01/may-2021/air-purifier-automation-360.png b/blog/2021/06/01/may-2021/air-purifier-automation-360.png new file mode 100644 index 0000000..2bbe741 Binary files /dev/null and b/blog/2021/06/01/may-2021/air-purifier-automation-360.png differ diff --git a/blog/2021/06/01/may-2021/air-purifier-automation-640.png b/blog/2021/06/01/may-2021/air-purifier-automation-640.png new file mode 100644 index 0000000..5cd5568 Binary files /dev/null and b/blog/2021/06/01/may-2021/air-purifier-automation-640.png differ diff --git a/blog/2021/06/01/may-2021/air-purifier-automation.png b/blog/2021/06/01/may-2021/air-purifier-automation.png new file mode 100644 index 0000000..f69254d Binary files /dev/null and b/blog/2021/06/01/may-2021/air-purifier-automation.png differ diff --git a/blog/2021/06/01/may-2021/image-360.jpg b/blog/2021/06/01/may-2021/image-360.jpg new file mode 100644 index 0000000..8b4f936 Binary files /dev/null and b/blog/2021/06/01/may-2021/image-360.jpg differ diff --git a/blog/2021/06/01/may-2021/image-640.jpg b/blog/2021/06/01/may-2021/image-640.jpg new file mode 100644 index 0000000..1ca717f Binary files /dev/null and b/blog/2021/06/01/may-2021/image-640.jpg differ diff --git a/blog/2021/06/01/may-2021/image.jpg b/blog/2021/06/01/may-2021/image.jpg new file mode 100644 index 0000000..23f3161 Binary files /dev/null and b/blog/2021/06/01/may-2021/image.jpg differ diff --git a/blog/2021/06/01/may-2021/index.html b/blog/2021/06/01/may-2021/index.html new file mode 100644 index 0000000..9650cd9 --- /dev/null +++ b/blog/2021/06/01/may-2021/index.html @@ -0,0 +1,130 @@ + + + + + May 2021 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

May 2021

+
+ Published on June 01, 2021 +
+ +
+ +

image alt

+
The beauty of the north
+ +

Projects

    +
  • games-screenshot-manager I've refactored the project a bit and I'm working towards concurrency, documentation and adding playstation 5 support thanks to a friend which provided me some sample files.

    +
  • +
  • switch-games-json Updated the jobs tasks so it only runs weekly, since it's sources doesn't update that much. One of the upstream repositories seems unmaintained so I need to figure out how to handle community submissions real quick.

    +
  • +
  • Finished the Godot course I started a while ago. As with everything else I have more free time now and I was only a few lessons away. I learned a lot along the way though the course seemed a bit rushed towars the end. Even with it's downsides I have learned things way faster this way that I would've on my own. I'm planning the next steps now which will be some clones of other games to learn from more genres and familiar mechanics. Should make some interesting posts for the blog, but no promises.

    +
  • +
  • I've been updating my Home Assistant server automations a bit, using some sensors I had laying around to gain some quality of life at home. Some silly things like notifications when someone on Twitch is live are simple but useful, another to let us know if the light for our bathroom have been on for more than an hour, the same if the main door is left open and automating the air purifier in our bedroom (allergies season...) The automations UI needs a bit more love but doing stuff YAML only is easy as well so that's not a problem. I also created a bot on Telegram for all notifications, so we can have a proper history and I could also make some interactive ones directly there with buttons to answer.

    +

    Air purifier automation dashboard

    +
  • +
+

Books

My first Marvel Unlimited month came to an end and I have no plans to keep subscribed to it. Maybe I will buy some of the physical editions in the future for the interesting sagas I want to read, the application is just sooo painful.

+
    +
  • Dropped? The Gamer

    +

    I was interesting up until the point it started with a lot of Korean legends/folklore I have no context about, the story started getting boring so I just found myself not wanting to read it anymore.

    +
  • +
  • Reading DICE

    +

    Up to date! It seems that series is coming to an end soon.

    +
  • +
  • Continuing with Masters of Doom

    +
  • +
  • I'm still looking for some second-hand One Piece bundle around my country, so I can read the series from the beginning up until the last published volume here. Either that or they make every chapter available on the Jump app for a fee or something... (please!).

    +
  • +
+

TVShows and Movies

    +
  • Finished with Suits

    +

    Finally.

    +
  • +
  • Replaced the above with Bones

    +

    This one is way better at Lunch time and shorter episodes make it a really good fit.

    +
  • +
  • Started Star Wars: The Bad Batch

    +

    Another point of view for the Order 66 events. It seems okey-ish so far, but not as good as the latest Clone Wars season.

    +
  • +
  • Watched Friends: The Reunion

    +

    Watching this only makes me realize we're getting old fast.

    +
  • +
+

Games

    +
  • Finished Star Wars: Jedi Fallen Order (screenshot gallery)

    +

    I started it back in January but when I started taking classes for my driving exam I stopped playing with my PlayStation due to lack of time, but now that I have more free time it was about time to finish it.

    +

    It was a good enough story (as with Bad Batch, another point of view for Order 66), not long enough to get boring and not short enough to consider it a scam. I'm not going to complete it (maps are very big and I tend to get lost easily...) so I'm leaving it as it is.

    +
  • +
  • Started Horizon: Zero Dawn (screenshot gallery)

    +

    Starting to clean my backlog a bit, this is the next one. I'm pretty sure I'm not going to try and 100% it since there are tons of stuff to find around on the map, and I already invest too much time killing/looting everything in sight... but the story seems very good so far and the graphics and environment is amazing.

    +

    +
  • +
  • Still there: Rhythm Tengoku (リズム天国 / Rhythm Heaven)

    +

    Slowly enjoying it. Because it's hard. (And I'm not good at it.)

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/07/01/june-2021/image-360.jpg b/blog/2021/07/01/june-2021/image-360.jpg new file mode 100644 index 0000000..8ade916 Binary files /dev/null and b/blog/2021/07/01/june-2021/image-360.jpg differ diff --git a/blog/2021/07/01/june-2021/image-640.jpg b/blog/2021/07/01/june-2021/image-640.jpg new file mode 100644 index 0000000..1fc0a5d Binary files /dev/null and b/blog/2021/07/01/june-2021/image-640.jpg differ diff --git a/blog/2021/07/01/june-2021/image.jpg b/blog/2021/07/01/june-2021/image.jpg new file mode 100644 index 0000000..b1e3862 Binary files /dev/null and b/blog/2021/07/01/june-2021/image.jpg differ diff --git a/blog/2021/07/01/june-2021/index.html b/blog/2021/07/01/june-2021/index.html new file mode 100644 index 0000000..239a375 --- /dev/null +++ b/blog/2021/07/01/june-2021/index.html @@ -0,0 +1,161 @@ + + + + + June 2021 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

June 2021

+
+ Published on July 01, 2021 +
+ +
+ +

My birthday cake!

+
This was technically last month, but celebrated on June 1st. Happy cake day to me!
+ +

Books

    +
  • Up to date with DICE

    +

    The end is getting closer and closer, or so it seems!

    +
  • +
  • Read Shadow and Bone

    +

    Finished the first book of the Ghrisaverse recently, it reminded me of the Black Magician Trilogy though a lot of things happen on this book actually.

    +

    The magic system is a bit... weird. It isn't explained much and though they say it can be infinite the different level in power of characters is not very well expressed with very clear differences in the characters that show up.

    +

    Despite that it's fun to read because the storytelling is good and you start getting yourself inmersed in the life of the characters from the very beginning even if it's a very clear hero's journey.

    +
  • +
  • Started reading Siege and Storm

    +

    Continuing from the previous one, I haven't gotten very far on this one but even in five chapters they already untangled the first book cliffhanger, expecting more to happen and adding a bit of backstory to previously non-explained things.

    +
  • +
  • Started reading One Piece

    +

    Yes! I finally got a good pack of volumes from a second-hand online store and have tons to read. I haven't actually read the comics from the very beginning before and I'm getting surprised of some changes between the manga and the anime. I'm very happy I managed to get the collection on my shelf already after all this time, this is going to keep me busy for a few months :)

    +
  • +
  • Read Horizon Zero Dawn Volume #1

    +

    Got this one looking around art books online, and it was quite a surprise that they deciced to tell the history of Horizon's world in this format as well. The history follows a side-quest character shown in the game after the game's ending and while it's not very deep it presents new things to the world that would be present on the new game releasing this year.

    +
  • +
+

TVShows and Movies

    +
  • Lunch time:

    +
      +
    • Bones

      +

      Why do we keep choosing shows this long!

      +
    • +
    • One Piece

      +

      Player's 2 idea (never expected this, not complaining though!). Since episodes are very short (~20m) she get enough time to eat. The bad part is that I need to read the comics fast enough so anime doesn't catch up.

      +
    • +
    +
  • +
  • Ongoing with Star Wars: The Bad Batch

    +

    Very little has happened until this point, they need to start adding real conflict to the show because is getting a bit boring for my taste :(

    +
  • +
  • Started Loki

    +

    A-mazing. The first chapter is a bit of a introduction to everything so not much is it there, but since this is going to be a 6 episode only show I'm expecting the climax will come in episode 4-5 (4 aired yesterday but I don't have the time to watch it until tomorrow, so shush!). It's actually very good, the mix of seriousness and humor is very well done (and performed!) in the show.

    +
  • +
+

Games

    +
  • Finished Horizon: Zero Dawn (screenshot gallery)

    +

    Finished both the main story and the Frozen Wilds DLC, I enjoyed the story quite a lot to be honest. I like dystopian worlds and getting to know how did we get there.

    +

    The game was overall fun though repetitive (all missions are either kill or track, in essence). Side missions doesn't seem to expand the story in a very meaningful way so I just kept to the main storyline and did some sides that were either on my way or gave good rewards. I also had a lot of problems with my inventory, I got the resource expansion satchel the earliest I could because I'm a loot hoarder but after a few hours into the game I was always full and had to sell, scrap or throw stuff around to make room for items (specially blue ones because I didn't knew if I would need them for new gear or quests) and that persisted until the very end of the game.

    +

    The side collectibles around the world were just too many. When I finished the game I only had 4 text datapoints from the world, out of a bazillion. I want to know more about the Lore of the game but that's just ridiculous.

    +

    Apart from that, the art, storytelling, voice-acting, music department, etc was awesome and really immersive. The only thing I missed while playing is a good sound system to help with the immersion, but well, that's just a first world problem.

    +
  • +
  • Still in pain: Rhythm Tengoku (リズム天国 / Rhythm Heaven)

    +

    I have get gold medals up until the fourth tier, and I'm stuck on the rap game... I may be half way through it, more or less.

    +
  • +
  • Started One Piece: WORLD SEEKER (screenshot gallery)

    +

    Got this as a birthday present and I'm painfully going though it. I'm just playing because the story is supposed to be an Oda's original, but it just seems a bunch of different mechanics thrown together to make a game with One Piece's assets.

    +
  • +
  • Started Baba is you

    +

    Player #2 and I started couch-playing this cause we both like puzzle games, one takes the controller and we dig through the levels. I love the premise of the game and how simple interactions in the map change everything, and how player 2 and I look at the puzzles from different perspectives finding more than one solution to each level.

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/08/01/july-2021/image-360.jpg b/blog/2021/08/01/july-2021/image-360.jpg new file mode 100644 index 0000000..89035b2 Binary files /dev/null and b/blog/2021/08/01/july-2021/image-360.jpg differ diff --git a/blog/2021/08/01/july-2021/image-640.jpg b/blog/2021/08/01/july-2021/image-640.jpg new file mode 100644 index 0000000..0354886 Binary files /dev/null and b/blog/2021/08/01/july-2021/image-640.jpg differ diff --git a/blog/2021/08/01/july-2021/image.jpg b/blog/2021/08/01/july-2021/image.jpg new file mode 100644 index 0000000..5d9e389 Binary files /dev/null and b/blog/2021/08/01/july-2021/image.jpg differ diff --git a/blog/2021/08/01/july-2021/index.html b/blog/2021/08/01/july-2021/index.html new file mode 100644 index 0000000..97b3c71 --- /dev/null +++ b/blog/2021/08/01/july-2021/index.html @@ -0,0 +1,156 @@ + + + + + July 2021 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

July 2021

+
+ Published on August 01, 2021 +
+ +
+ +

My birthday cake!

+
On the good days that actually seems like summer we get some beaufiful landscapes like this.
+ +

Projects

Ever since I ended up on my current job I spend less and less time with the computer in the after-work hours, real life ™️ stuff and my numerous other hobbies tend to maintain me busy, so I've spent very little time with these things:

+
    +
  • switch-games-json I've started work on how people could contribute new entries to it. I have a working proof of concept and I have to import all currently data present on the internets before releasing it publicly.

    +
  • +
  • games-screenshot-manager Planning a big refactor since I use this very regularly and it works very well but it can be way faster that it is now.

    +
  • +
  • notion-to-ical: I'm working on a little service to convert a Notion calendar database into an iCal feed.

    +
  • +
  • 3D Printing. More like 3D calibrating since I didn't manage to find the proper attributes to print some pieces corretly, and since it a bit of trial and error it's taking its time.

    +
  • +
+

Books

    +
  • DICE

    +
  • +
  • One Piece: Volume 27 and beyond!

    +
  • +
  • Finished Siege and Storm

    +
  • +
  • Started reading Ruin and Rising

    +

    The last book of the Ghrisaverse trilogy, series seems a bit average until this point but it manages to keep me wanting to know what will happen next. I just hope this one doesn't end in a cliffhanger or with anything pending so I can start reading other series after that, since I've seen that there are other books based on this world.

    +
  • +
+

TVShows and Movies

    +
  • For lunch and dinner time One Piece

    +
  • +
  • Ongoing with Star Wars: The Bad Batch

    +

    This became an off-series, I just let it run in background while I do other things and I manage to keep track easily.

    +
  • +
  • Finished Loki

    +

    What a show, what a show! I loved the ending (though I expected a different character to appear) and their performance was just amazing, can't wait to see how this threads into the films and the next season. The MCU is doing an amazing work in this department.

    +
  • +
+

Games

    +
  • Finished! Rhythm Tengoku (リズム天国 / Rhythm Heaven)

    +

    I got all gold medals and beat the final drum minigame, and that's a wrap! I'm not going to put myself through unnecessary pain by doing all the perfect scores. It was ver difficult and a lot of fun, specially since I could play it in short sessions through the months.

    +
    + +
  • +
  • Stopped One Piece: WORLD SEEKER (screenshot gallery)

    +

    I stopped playing this one mostly because I wasn't enjoying it much, but also because I don't know where this is set in the One Piece storyline and I didn't want to spoil myself. I will continue with it once I reach the last One Piece volume.

    +
  • +
  • Still around with Baba is you

    +

    We still have this on our pipeline, Player 2 seems to enjoy it since loves puzzles.

    +
  • +
  • Started The legend of Zelda: Skyward Sword HD

    +

    Of course. I didn't progress much and I totaly hate the sword mechanic until the point that I almost drop it at the beginning... but I want to see it through the end since it's the first in the series, time will tell if I complete it or just finish the story.

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/08/01/july-2021/rhythm-tengoku.webm b/blog/2021/08/01/july-2021/rhythm-tengoku.webm new file mode 100644 index 0000000..7e220cd Binary files /dev/null and b/blog/2021/08/01/july-2021/rhythm-tengoku.webm differ diff --git a/blog/2021/09/12/august-2021/image-360.jpg b/blog/2021/09/12/august-2021/image-360.jpg new file mode 100644 index 0000000..b338531 Binary files /dev/null and b/blog/2021/09/12/august-2021/image-360.jpg differ diff --git a/blog/2021/09/12/august-2021/image-640.jpg b/blog/2021/09/12/august-2021/image-640.jpg new file mode 100644 index 0000000..58ede61 Binary files /dev/null and b/blog/2021/09/12/august-2021/image-640.jpg differ diff --git a/blog/2021/09/12/august-2021/image.jpg b/blog/2021/09/12/august-2021/image.jpg new file mode 100644 index 0000000..27d690c Binary files /dev/null and b/blog/2021/09/12/august-2021/image.jpg differ diff --git a/blog/2021/09/12/august-2021/index.html b/blog/2021/09/12/august-2021/index.html new file mode 100644 index 0000000..83cac60 --- /dev/null +++ b/blog/2021/09/12/august-2021/index.html @@ -0,0 +1,131 @@ + + + + + August 2021 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

August 2021

+
+ Published on September 12, 2021 +
+ +
+ +

My birthday cake!

+
Imagine waking up to this every day... sadly it only happens on vacation.
+ +

Really quick update since I've been either on vacation, visiting or being visited by family. Slowly going back to normal now.

+

Books

+

TVShows and Movies

    +
  • For lunch and dinner time One Piece

    +
  • +
  • Finished Star Wars: The Bad Batch

    +

    What a finale! It was really sad to see all that destruction on Kamino directly on a show, but we all knew that happened... It didn't have me hooking (or even paying attetion sometimes) but I want to know what's in store for the next season.

    +
  • +
+

Games

    +
  • On hold with The legend of Zelda: Skyward Sword HD

    +

    The controls are just awful... It's a shame because it has some interesting things in there but I just can't get on with it :(

    +
  • +
  • Started The legend of Zelda: The Minish Cup

    +

    Got my geared up GameBoy Advance SP loaded for the travel, and despite the RNG regarding the luck stones this game has aged really well in my oppinion.

    +
  • +
  • Still around with Baba is you

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/10/02/september-2021/image-360.jpg b/blog/2021/10/02/september-2021/image-360.jpg new file mode 100644 index 0000000..4850666 Binary files /dev/null and b/blog/2021/10/02/september-2021/image-360.jpg differ diff --git a/blog/2021/10/02/september-2021/image-640.jpg b/blog/2021/10/02/september-2021/image-640.jpg new file mode 100644 index 0000000..80bea5a Binary files /dev/null and b/blog/2021/10/02/september-2021/image-640.jpg differ diff --git a/blog/2021/10/02/september-2021/image.jpg b/blog/2021/10/02/september-2021/image.jpg new file mode 100644 index 0000000..2a00614 Binary files /dev/null and b/blog/2021/10/02/september-2021/image.jpg differ diff --git a/blog/2021/10/02/september-2021/index.html b/blog/2021/10/02/september-2021/index.html new file mode 100644 index 0000000..780c458 --- /dev/null +++ b/blog/2021/10/02/september-2021/index.html @@ -0,0 +1,147 @@ + + + + + September 2021 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

September 2021

+
+ Published on October 02, 2021 +
+ +
+ +

A picture of a beach about 45 minutes walking from my home

+
I love having this at _somewhat_ walking distance. Can you spot my shadow?
+ +

Projects & Personal

I manage to fulfill my "development needs" so much at work that I try to use my spare time in other hobbies nowadays. Not that I don't have pending things to do, I just don't feel like spending much time on the computer after work anymore.

+

The few things I have been doing are looking for an alternative to the Firewalla at home. I'm thinking on installing opnsense on the Firewalla SoC cause it just don't really suit my needs. The problem is that opened a whole set of questions again on how to setup and sort all network devices at home, how I'm going to manage (server and networking side) the public and private services I have and so on. I would like to try it before just giving up on my current router directly, so I need to setup this on a VM and start playing with it to check if it does the essential things I want it to do.

+

Another thing I have been spending time theses days is sorting out my note and habits management. I tend to scribble on paper and just forget about it for current projects, but sometimes I write something that should be more persistent over time. So good luck past/present/future me figuring out how to handle that.

+

On the habit side I'm trying out Habitify just to know how much of my work/personal/leisure time I spend "correctly". That's the best thing I found to track this kind of "tasks", but I don't like the subscription model at all... if anyone has a suggestion that is either self-hosted or single-payment please contact me.

+

Also, as always, I've been improving my Home Assistant instance with new things. But that's the usual once you enter this world.

+

Books

    +
  • Up to date with DICE

    +
  • +
  • Ongoing with One Piece: Volume 56.

    +
  • +
  • Finished Ruin and Rising

    +

    Talk about a long road... finally finished the trilogy. This final sprint has been a bit rough, and it almost made me read some pages a bit "diagonal" just to end it. Got really boring at the end if I must say. I do not plan on reading anything else for this saga.

    +
  • +
  • Started reading Japón con Jamón

    +

    This has been on my bookshelf for a year or so now. I just couldn't read anything Japan related because it reminded me a lot of the time I spent there. But well, after two years it's time to go on. Sadly it seems that it's not in anything but Spanish...

    +
  • +
+

TVShows and Movies

    +
  • For lunch and dinner time One Piece

    +
  • +
  • Watched Rick and Morty: Season 5

    +

    What an amazing season! The first two chapters were incredible, but the last two... oh my! I'm really glad I didn't spoil myself on social because I have enjoyed it a lot. I waited until all chapters were available in HBO so I could watch all chapters in a row. And oh my, I loved it! Not sure why people complain about this season -of course it has better and worse episodes- but overall it has been awesome. The worst part is waiting for the next season!

    +
  • +
  • Started Raised by wolves

    +

    I had it in store for some time and only two episodes in... it has everything I like: Sci-Fi, Dystopian setting, robots, etc. But... it is a bit weird. Maybe I don't understand the message of something.

    +
  • +
  • Started Star Wars: Visions

    +

    It's finally here! As a fan of Japanese animation is awesome to watch some of them allowed to create a history on a Star Wars related setting. I don't know what to expect but so far I liked every episode, specially the one from Trigger... their art style and storytelling is amazing. Though I would've like to know more of each history, I'm happy that episodes are 15 minutes long.

    +
  • +
  • Started Marvel's What if...?

    +

    Another that I was eager to watch this month and I managed to keep up to date until this point. I'm loving it so far and it seems that everything until this point is going to converge in the final episodes in one hell of a battle. I really hope they do more seasons.

    +
  • +
  • Started Y: The last man

    +

    I wasn't expecting much from this one, but a friend told me about it and I put it off focus while I was doing some chores. It's average for my taste but at least the premise seems... interesting? I don't know. Let's see how it goes.

    +
  • +
+

Games

    +
  • Finished The legend of Zelda: The Minish Cup

    +

    This game have grown old incredibly well. Mechanics, gameplay and even graphics are incredible. And I'm telling this in 2021 from a game that released in 2004, 17 years ago!

    +

    I played it on original hardware, a tuned GameBoy Advance SP with a FunnyPlaying LCD screen, and even if I liked the experience I had to play it through short sessions (maybe 30-60m tops) because the handhelds are so tiny that my fingers hurt a bit after some time. Also the SP is so narrow that my hands are almost touching. I'm not sure if I will play everything here, maybe only games that can be played for 10-15m (like Rhythm Tengoku) but I have my eye on Golden Sun 1&2 now... I'm glad I have emulation machines everywhere and a brand new GB Operator that I can use to play on a bigger screen and backup my games and saves.

    +
  • +
  • Finished Doki Doki Literature Club!

    +

    Not going to say anything. Just play it. It's four hours or so of gameplay. Play it.

    +
  • +
  • Still ongoing with Baba is you

    +

    We didn't manage to get much time to play, but we're slowly going through it.

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/10/11/storing-data-in-node-red-flows-using-context/index.html b/blog/2021/10/11/storing-data-in-node-red-flows-using-context/index.html new file mode 100644 index 0000000..3599d42 --- /dev/null +++ b/blog/2021/10/11/storing-data-in-node-red-flows-using-context/index.html @@ -0,0 +1,111 @@ + + + + + Storing data in Node-Red flows using contexts | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Storing data in Node-Red flows using contexts

+
+ Published on October 11, 2021 +
+ +
+ +

I've been adding some automations to my Home Assistant recently so it can inform us of takeaway menu changes for local restaurants. We have a few favourites and they usually offer different options each day so checking for updates and notifying us via our Telegram bot is pretty easy.

+ + +

Since I didn't want to use any library or custom program/service to analyze the page I'm relaying this kind of work to the Node-Red service in my Home Assistant instance. It's a server that is always working, easy to set up, work and iterate from, and I already have some integrations in place for notifications and other QoL, so it seemed like a 110% win.

+

Despite having used Node-Red for various purposes along the years I usually delegated state to different services, databases or the filesystem. Not sure why I didn't check if Node-Red had something built-in-- which of course it had.

+

Node-Red has this concept of context. By default a context is stored in memory only, and you can get/set values from a node or from function nodes very easily:

+

Node-Red Change node allows to make changes in contexts

+

You can also edit contexts programatically from function nodes using:

+
msg.contentSize = 123 // From another node
+flow.set("menuContentSize", msg.contentSize)
+var value = flow.get("menuContentSize")
+
+
+

In my case I wanted the data to persist service restarts and Node-Red provides a context store filesystem based which stores changes in memory and persists them to disk every 30 seconds, more than enough for my use case.

+

To enable it we need to modify the settings.js file of the Node-Red installation and add the appropriate contextStore parameters:

+
{
+  // ...
+  contextStorage: {
+    state: {
+      module: "localfilesystem",
+      base: "state" // This will store the data in ~/.node-red/state,
+    },
+    default: { module: "memory" }
+  },
+  // ...
+}
+
+

In this example I created a new context store called state using the filesystem module I talked before and additionally I set up the storage in a custom directory.

+
+

This way I can have two context stores: one in memory (the default) and one to store my custom states. You can create more for your use cases but keep in mind that you need to select a different dir for each of them so they wont collide. For more information check the implementation details.

+

In order to select an store to use you have a dropdown in the change node:

+

Node red change node with dropdown selection

+

Or use the third argumentflow.set(key, value, store)/flow.get(key, store) to select it programatically.

+
+

This allows for this very simple state checks in my case but allows for way more complex behaviors right out of the box.

+

I'm a very big fan of Node-Red. And I can use that so get notified of takaway menu changes now. Talk about a first world problem.

+ + + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-360.png b/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-360.png new file mode 100644 index 0000000..303a65a Binary files /dev/null and b/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-360.png differ diff --git a/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-640.png b/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-640.png new file mode 100644 index 0000000..6768f71 Binary files /dev/null and b/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-640.png differ diff --git a/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-dropdown-360.png b/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-dropdown-360.png new file mode 100644 index 0000000..e982b16 Binary files /dev/null and b/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-dropdown-360.png differ diff --git a/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-dropdown-640.png b/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-dropdown-640.png new file mode 100644 index 0000000..50b836c Binary files /dev/null and b/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-dropdown-640.png differ diff --git a/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-dropdown.png b/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-dropdown.png new file mode 100644 index 0000000..50b836c Binary files /dev/null and b/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-dropdown.png differ diff --git a/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node.png b/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node.png new file mode 100644 index 0000000..513772a Binary files /dev/null and b/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node.png differ diff --git a/blog/2021/11/02/october-2021/elechead-360.png b/blog/2021/11/02/october-2021/elechead-360.png new file mode 100644 index 0000000..5ddb786 Binary files /dev/null and b/blog/2021/11/02/october-2021/elechead-360.png differ diff --git a/blog/2021/11/02/october-2021/elechead-640.png b/blog/2021/11/02/october-2021/elechead-640.png new file mode 100644 index 0000000..2ee6464 Binary files /dev/null and b/blog/2021/11/02/october-2021/elechead-640.png differ diff --git a/blog/2021/11/02/october-2021/elechead.png b/blog/2021/11/02/october-2021/elechead.png new file mode 100644 index 0000000..2ee6464 Binary files /dev/null and b/blog/2021/11/02/october-2021/elechead.png differ diff --git a/blog/2021/11/02/october-2021/image-360.jpg b/blog/2021/11/02/october-2021/image-360.jpg new file mode 100644 index 0000000..0e9c348 Binary files /dev/null and b/blog/2021/11/02/october-2021/image-360.jpg differ diff --git a/blog/2021/11/02/october-2021/image-640.jpg b/blog/2021/11/02/october-2021/image-640.jpg new file mode 100644 index 0000000..8210813 Binary files /dev/null and b/blog/2021/11/02/october-2021/image-640.jpg differ diff --git a/blog/2021/11/02/october-2021/image.jpg b/blog/2021/11/02/october-2021/image.jpg new file mode 100644 index 0000000..257f8c0 Binary files /dev/null and b/blog/2021/11/02/october-2021/image.jpg differ diff --git a/blog/2021/11/02/october-2021/index.html b/blog/2021/11/02/october-2021/index.html new file mode 100644 index 0000000..a6e01ad --- /dev/null +++ b/blog/2021/11/02/october-2021/index.html @@ -0,0 +1,137 @@ + + + + + October 2021 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

October 2021

+
+ Published on November 02, 2021 +
+ +
+ +

A picture of myself from the back while I try to take a picture of a nice river reflection from a building

+
A ninja picture of me taking a picture
+ +

Books

    +
  • Ongoing with One Piece: Volume 67+

    +

    I'm completely on fire with this. I bought all pending volumes and now I just need to get up until the last volume. I forgot many things of these last story arcs so I'm enjoying it a lot more now.

    +
  • +
  • Finished DICE

    +

    I'm actually not sure if I liked the ending or not. Since I re-started the series not so long ago it seemed rushed to me, but it could be only a perception issue. I didn't like the character development on this last "games" but it surprised me how everything unfolded in the end. There's actually a last "epilogue" chapter that I haven't read yet and should be available today. Not sure what it could contain.

    +

    Anyway! It has been good overall, character development has been good (with some new characters and stories along the way), powers and usage are actually pretty interesting as well even though there are some very overpowered habilities in there. If you like similar stories you won't miss with this one.

    +

    I'm sorry if this fails as a review, but keep in mind that I started reading it years ago, so it is pretty difficult to get a complete picture to evaluate it.

    +
  • +
+

TVShows and Movies

    +
  • For lunch and dinner time One Piece: Reached Water 7 saga.

    +
  • +
  • Finished Star Wars: Visions

    +

    This one ended up lower than my expectations, mostly because the first episode was one of the (if not the) best. I love Trigger episodes becuase I loke their style and storytelling, but in most episodes there was a lightsaber here and there, and while I can understand that it's difficult to opt-out using force sensitive characters when they allow you to create and tell an official Star Wars story, I would have loved more without it.

    +

    I believe I've said it more than once on other shows... these are inmense worlds with a lot of possibilities and we end up recurring to the basics because it is what please us the fanbase.

    +
  • +
  • Finished Marvel's What if...?

    +

    Just amazing, and renewwd for a season two! I need to find out if some or more of this stories are available in the comics, I already bought one on a whim.

    +

    Next stop: Hawkeye.

    +
  • +
  • Started For all mankind

    +

    My discovery of the month. I'm already at the last episode of the second season and I'm loving this show! At first I though that I wouldn't like it because it didn't have much sci-fi thingies but in the end it has just enough for it to be an amazing show. It's more a drama than anything else but you end up hating or empathizing with the characters, their decissions and eveything around them. 100% recommended.

    +
  • +
  • Dropped Y: The last man

    +

    FX cancelled the series so there's no point anymore. Someone commented out that the comics are good so that could be the way to go.

    +
  • +
+

Games

    +
  • Finished Elec Head

    +

    I have been waiting on this since I saw a trailer somewhere on the internet and bought it the moment it released. It was crazy fun! Level design is amazing and the simple mechanics are just right. The only thing that game me the creeps is that there are some thing that you may just notice by pure chance. Since it's cheap and only a few hours of time, it's an obvious recommendation!

    +

    I achieved all Elec Head achievements. It wasn't easy at all!

    +
  • +
  • Here we go again... Animal Crossing: New Horizons

    +

    The final update is coming and the player 2 and myself have come back to our islands to do some preparations. Since it's the last update this is most likely the last time I will get hooked to the game.

    +
  • +
  • Still ongoing with Baba is you

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/11/15/home-assistant-battery-levels-at-a-glance/card-screenshot-360.png b/blog/2021/11/15/home-assistant-battery-levels-at-a-glance/card-screenshot-360.png new file mode 100644 index 0000000..99931e0 Binary files /dev/null and b/blog/2021/11/15/home-assistant-battery-levels-at-a-glance/card-screenshot-360.png differ diff --git a/blog/2021/11/15/home-assistant-battery-levels-at-a-glance/card-screenshot-640.png b/blog/2021/11/15/home-assistant-battery-levels-at-a-glance/card-screenshot-640.png new file mode 100644 index 0000000..932886e Binary files /dev/null and b/blog/2021/11/15/home-assistant-battery-levels-at-a-glance/card-screenshot-640.png differ diff --git a/blog/2021/11/15/home-assistant-battery-levels-at-a-glance/card-screenshot.png b/blog/2021/11/15/home-assistant-battery-levels-at-a-glance/card-screenshot.png new file mode 100644 index 0000000..0343214 Binary files /dev/null and b/blog/2021/11/15/home-assistant-battery-levels-at-a-glance/card-screenshot.png differ diff --git a/blog/2021/11/15/home-assistant-battery-levels-at-a-glance/index.html b/blog/2021/11/15/home-assistant-battery-levels-at-a-glance/index.html new file mode 100644 index 0000000..13627fe --- /dev/null +++ b/blog/2021/11/15/home-assistant-battery-levels-at-a-glance/index.html @@ -0,0 +1,96 @@ + + + + + Home Assistant battery levels at a glance | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Home Assistant battery levels at a glance

+
+ Published on November 15, 2021 +
+ +
+ +

I was talking recently about how many Zigbee devices are too many and how the most troublesome thing you can have is batteries dieing on you at the same time. If you install several devices at once and have it's batteries dead at the same it it's a bit of a hassle going to each one and replacing it (depending where you have them and how difficult is to replace).

+ + +

It came to me that if we could see the battery status of devices easily on a card this can be at least addressed by knowing which batteries are most discharged.

+

As context, since I'm usually playing with devices I use number as identifiers. For example, my motion sensors are named Motion Sensor #X (where X is an increasing number). This way it's ID is motion_sensor_1 and it's entities (entity type).motion_sensor_X_(attribute). I use this nomenclature everywhere so I can easily identify entities with the internal search (and because you need to have a method, always!).

+

So. I can get all entities that represent a battery by searching for _battery but I have no real means of translating that search into a card without a third party component called Auto entities.

+

This card allows to automatically populate lovelace cards with entities matching certain criteria which is what I'm looking for, and it's pretty easy to use as well!

+

I have a card on my dashboard with this configuration to display battery statuses accross my entities:

+
type: custom:auto-entities
+card:
+  type: entities
+  title: Battery statusq
+  state_color: true
+  show_header_toggle: true
+filter:
+  include:
+    - entity_id: '*_battery'
+sort:
+  method: state
+  numeric: true
+  reverse: true
+show_empty: true
+unique: entity
+
+

And this is how it looks:

+

Auto entities displaying the battery levels of the different devices at home

+

This card is very powerful, I already have a few other ideas on how to use it.

+

Check it out: Auto entities card

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-filtered-360.png b/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-filtered-360.png new file mode 100644 index 0000000..04b9d68 Binary files /dev/null and b/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-filtered-360.png differ diff --git a/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-filtered-640.png b/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-filtered-640.png new file mode 100644 index 0000000..a8c1758 Binary files /dev/null and b/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-filtered-640.png differ diff --git a/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-filtered.png b/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-filtered.png new file mode 100644 index 0000000..a8c1758 Binary files /dev/null and b/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-filtered.png differ diff --git a/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-list-360.png b/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-list-360.png new file mode 100644 index 0000000..9049f29 Binary files /dev/null and b/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-list-360.png differ diff --git a/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-list-640.png b/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-list-640.png new file mode 100644 index 0000000..85f4528 Binary files /dev/null and b/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-list-640.png differ diff --git a/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-list.png b/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-list.png new file mode 100644 index 0000000..3debb20 Binary files /dev/null and b/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-list.png differ diff --git a/blog/2021/11/30/how-i-organize-my-home-assistant-automations/index.html b/blog/2021/11/30/how-i-organize-my-home-assistant-automations/index.html new file mode 100644 index 0000000..d6ec34c --- /dev/null +++ b/blog/2021/11/30/how-i-organize-my-home-assistant-automations/index.html @@ -0,0 +1,79 @@ + + + + + How I organize my Home Assistant automations | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

How I organize my Home Assistant automations

+
+ Published on November 30, 2021 +
+ +
+ +

Automations in Home Assistant are the best thing after the cocoa discovery, I use them a lot for many different things and I'm always wondering how to solve the first world problem of the day. The hassle with it is that apart from a list and the search there are not much more options to filter, and when your automations grow it became a bit of a pain finding what you want.

+ + +

So the other day I decided to follow a "path" approarch to my automations. I'm using a subject, an action or element and then a description to name them:

+

(subject) / (action/element) / (short description)

+
+

+

This way Turn on the air purifier at night became air purifier / auto / turn on at night and I can filter by air purifier / to get all the automations related to the air purifier, the specific automatic behaviour by / auto (for this and other subjects), etc:

+

+

This is so much convenient than before though I'm sure I will keep iterating on this, at least now my list is ordered and I can easily find anything I want to toggle or edit.

+

I wonder how other Home Assistant users handle their automations, if you by any reason read this and have a better way, please let me know!.

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/12/01/november-2021/image-360.jpg b/blog/2021/12/01/november-2021/image-360.jpg new file mode 100644 index 0000000..68e0c0d Binary files /dev/null and b/blog/2021/12/01/november-2021/image-360.jpg differ diff --git a/blog/2021/12/01/november-2021/image-640.jpg b/blog/2021/12/01/november-2021/image-640.jpg new file mode 100644 index 0000000..78ccc58 Binary files /dev/null and b/blog/2021/12/01/november-2021/image-640.jpg differ diff --git a/blog/2021/12/01/november-2021/image.jpg b/blog/2021/12/01/november-2021/image.jpg new file mode 100644 index 0000000..4c03d71 Binary files /dev/null and b/blog/2021/12/01/november-2021/image.jpg differ diff --git a/blog/2021/12/01/november-2021/index.html b/blog/2021/12/01/november-2021/index.html new file mode 100644 index 0000000..05e4e3d --- /dev/null +++ b/blog/2021/12/01/november-2021/index.html @@ -0,0 +1,126 @@ + + + + + November 2021 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

November 2021

+
+ Published on December 01, 2021 +
+ +
+ +

Ramen dish from Ramen Kagura in Madrid, Spain

+
Mandatory visit to Ramen Kagura when visiting Madrid.
+ +

Books

All in with comics:

+ +

Also read Ask Iwata

+

TVShows and Movies

    +
  • "Finished" One Piece: Reached the end of the official spanish dub. We've replaced this with Bones

    +
  • +
  • Up to date with For all mankind

    +

    Already finished and with a nice cliffhanger for the next season. Didn't though I would enjoy a drama this much. I may be getting old.

    +
  • +
  • Watched Arcane

    +

    I thought I wouldn't enjoy this one since I'm not a League of Legends player (I've only player a couple matches like ten years ago...?) but I loved it. The art style is top-notch, the story, even going a bit fast at some points it was well explained through amazing visual compositions and the soundtrack is on par as well, loved how they used the mix of visuals and music to tell how Ekko and Jinx played in their fight at the end of the show. Can't wait for more seasons or other shows in this universe.

    +

    I'm assuming that people that know the world heroes from the games would know who's not going to die so I'm glad I'm not in that group on this one (though you could mostly tell anyway...). The same way I didn't get a lot of easter eggs on the show that current players mostly did.

    +
  • +
  • Watched Hellbound

    +

    As a note, I only watched the first chapter in the usual way you would watch a TV show (1x in VO). The rest I put on the English dub and a 1.5x speed so I could go though it offscreen while I did other things.

    +

    Not sure about why but I didn't like this one at all, and I wouldn't watch anything else if Netflix release more in the future. It's a very good premise but not very enjoyable on a TVShow I guess, everything happens so quickly and the impact didn't feel real. I started reading the manwha to check if it is any better.

    +
  • +
  • Started Hawkeye

    +

    The next from the Marvel universe. It seems pretty simple with a lot of comedy so far. Argument-wise doesn't seem like much at the moment.

    +
  • +
+

Games

    +
  • Started Hollow Knight

    +

    Had this on my backlog for years and since the Steam Deck is now officialy delayed and I won't get mine until next summer as the soonest I started with it the other day (so I haven't gotten very far). The art style is amazing and I still need to get used to the controls, but everyone says that this is a masterpiece so I had to start at some point.

    +
  • +
  • Still ongoing with Baba is you. Since we don't play much we are going veeeery slowly.

    +
  • +
  • Tried Marvel's Avengers but it had heavy frame drops on my PC so I just stopped trying.

    +
  • +
+

Articles

+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/12/31/from-zero-to-hero/index.html b/blog/2021/12/31/from-zero-to-hero/index.html new file mode 100644 index 0000000..f05cb4e --- /dev/null +++ b/blog/2021/12/31/from-zero-to-hero/index.html @@ -0,0 +1,252 @@ + + + + + Arch Linux on my Dell XPS | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Arch Linux on my Dell XPS

+
+ Published on December 31, 2021 +
+ +
+ +

Create install media

Install

    +
  • Follow the wiki
  • +
+
# Connect to the internet, the moment we do relector will update the mirrorlist
+iwctl station wlan0 connect <bssid>
+
+# Set up date and time
+timedatectl set-ntp true
+timedatectl set-timezone Europe/Madrid
+
+# Prepare the disk, the setup I used:
+# Disk #0: 512MB, Boot partition, UEFI type
+# Disk #1: 16384MB, SWAP, swap type
+# Disk #2: Rest of the disk, btrfs type
+# fdisk ...
+
+# Prepare the filesystems and the luks encryption
+mkfs.vfat -F32 /dev/nmve0n1p0
+mkswap /dev/nmve0n1p1
+cryptsetup luksFormat /dev/nvme0n1p2 # Password here
+cryptsetup open /dev/nvme0n1p2 luks
+mkfs.btrfs -L btrfs /dev/mapper/luks
+
+# Prepare the btrfs partition
+mkdir /mnt/luks
+mount -t btrfs /dev/mapper/luks /mnt/luks
+cd /mnt/luks
+btrfs subvolume create root
+btrfs subvolume create home
+btrfs subvolume create snapshots
+
+# Mount everything under /mnt
+mkdir /mnt/{home,boot}
+mount -o subvol=root,compress=lzo /dev/mapper/luks /mnt
+mount -o subvol=home,compress=lzo /dev/mapper/luks /mnt/home
+mount /dev/nvme0n1p0 /mnt/boot
+
+# Run pacstrap with several base packages:
+pacstrap /mnt \
+base \
+linux-lts linux-firmware \
+intel-ucode \
+terminus-font \ # Fonts in vconsole
+man-db man-pages \ # Man pages
+iwd sudo vim NetworkManager # Utilities
+
+# Generate the /etc/fstab file
+genfstab -L /mnt >> /mnt/etc/fstab
+
+# Check everything is correct, replace realtime with noatime and discard flags to
+# make flash drive last longer
+vim /mnt/etc/fstab
+
+# Enter into the system
+arch-chroot /mnt
+
+# Setup timedate
+timedatectl set-timezone Europe/Madrid
+
+# Sync the RTC from the system time (useful if dual booting)
+hwclock --systohc
+
+# Set the en_US.UTF-8 locale (uncomment)
+vim /etc/locale.gen
+locale-gen
+
+# Setup default locale
+echo 'LANG=en_US.UTF-8' > /etc/locale.conf
+
+# Setup keymap and font
+echo 'KEYMAP=us\nFONT=ter-232n' > /etc/vconsole.conf
+pacman -S physlock # To allow locking the computer when in VConsole
+
+# Setup the computer hostname
+echo 'deru' > /etc/hostname
+
+# Setup the hosts file
+echo '127.0.0.1 localhost\n::1 localhost\n127.0.1.1 deru.localdomain deru' > /etc/hosts
+
+# Set root password
+passwd
+
+# Setup init hooks to use systemd
+vim /etc/mkinitcpio.conf
+# Remove udev and add systemd, sd-vconsole and sd-encrypt
+
+# Regenerate initrd
+mkinitcpio -p linux-lts
+
+# Setup systemd-boot
+bootctl --path=/boot install
+
+# Create the bootloader entry for Arch
+LUKS_UUID=$(cryptsetup luksUUID /dev/nvme0n1p2)
+cat >/boot/loader/entries/arch.conf <<EOL
+title  Arch Linux (LTS)
+linux  /vmlinuz-linux-lts
+initrd /intel-ucode.img
+initrd /initramfs-linux-lts.img
+options rw luks.uuid=${LUKS_UUID} luks.name=${LUKS_UUID}=luks root=/dev/mapper/luks rootflags=subvol=root
+EOL
+
+# Setup bootloader
+echo 'default arch.conf' > /boot/loader/loader.conf
+
+# System ready!
+exit
+reboot
+
+# Login as root
+
+# Setup systemd-resolved
+systemctl enable --now systemd-resolved
+ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
+
+# Install and start netowrk manager
+systemctl enable --now NetworkManager
+
+# Connect to wifi if required
+nmcli d wifi connntect <ssid> password <pass>
+
+# Setup hibernate
+# Get the swap disk UUID (double check manually)
+sudo blkid | grep swap | sed -rn 's/^.* UUID=\"([a-z0-9\-]+)\".*$/\1/p'
+
+# Add the resume boot parameter
+vim /boot/loader/entries/arch.conf
+# Under options:
+# resume=UUID=<uuid>
+# Systemd should check automatically for the swap partition on GPT tables [1]
+
+# Setup suspend-then-hibernate
+vim /etc/systemd/login.conf
+# My enabled options:
+# HandlePowerKey=suspend-then-hibernate
+# HandleLidSwitch=suspend-then-hibernate
+# HandleLidSwitchExternalPower=suspend-then-hibernate
+# HandleLidSwitchDocked=ignore
+# IdleAction=suspend-then-hibernate
+# IdleActionSec=10min
+
+vim /etc/systemd/sleep.conf
+# Find HibernateDelaySec and set to 5min
+
+# All these will be into effect in next boot
+
+
    +
  • [ ] Boot in 1080p mode
  • +
  • [ ] Docked toggle
  • +
  • [ ] VConsole auto lock?
      +
    • [ ] IDLE toggle in VConsole?
    • +
    +
  • +
  • [ ] Hardware acceleration
  • +
+

Hardware acceleration

pacman -S vulkan-intel
+
+

Power

pacman -S tlp
+
+# Edit tlp configuration link power to prevent corruption on btrfs devices
+# /etc/tlp.conf
+# ...
+SATA_LINKPWR_ON_BAT=max_performance
+# ...
+
+

Enable and start tlp

systemctl enable --now tlp

+

Audio

pacman -S alsa-utils pulseaudio pulseaudio-alsa pavucontrol +systemctl start --user pulseaudio.socket

+

Bluetooth

pacman -S bluez bluez-utils
+modprobe btusb
+systemctl enable --now bluetooth
+bluetoothctl -- power on
+
+

Brightness control

pacman -S brightnessctl
+
+

Fonts

pacman -S otf-ipafont # Japanese
+pacman -S ttf-bitstream-vera # Default
+
+

Userspace

Enable multilib repos to install steam

+
useradd fmartingr
+pacman -S sway dmenu xorg-xwayland alacritty qutebrowser
+pacman -S mako # notifications
+# TODO notification history?
+
+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/12/31/my-home-with-home-assistant-part-2/index.html b/blog/2021/12/31/my-home-with-home-assistant-part-2/index.html new file mode 100644 index 0000000..6049756 --- /dev/null +++ b/blog/2021/12/31/my-home-with-home-assistant-part-2/index.html @@ -0,0 +1,144 @@ + + + + + Self-hosting my home: Grafana, InfluxDB, ESPHome | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Self-hosting my home: Grafana, InfluxDB, ESPHome

+
+ Published on December 31, 2021 +
+ +
+ +

InfluxDB

GRANT ALL ON "homeassistant" TO "homeassistant";
+
+

Grafana

...

+

ESP Home

...

+

Temperature and Humidity Monitors

...

+

Mi Flora

    +
  • Get MAC Address for the Mi flora

    +
      $ bluetoothctl scan on | grep -i flo
    +  [NEW] Device XX:XX:XX:XX:XX:XX Flower care
    +
    +
  • +
+
    +
  • Create a new ESP Home integration to track the sensor:

    +

    I name my sensors with numbers so I can write the number on them and identify them easily. You only need to assign sensors to rooms to have them easily available when looking for them on dashboards.

    +
      [...]
    +  # Sensors
    +  esp32_ble_tracker: # Required for BLE scanning
    +
    +  sensor:
    +  - platform: xiaomi_hhccjcy01
    +      mac_address: 'XX:XX:XX:XX:XX:XX'
    +      temperature:
    +      name: "Flora 1 Temperature"
    +      moisture:
    +      name: "Flora 1 Moisture"
    +      illuminance:
    +      name: "Flora 1 Illuminance"
    +      conductivity:
    +      name: "Flora 1 Soil Conductivity"
    +      battery_level:
    +      name: "Flora 1 Battery Level"
    +
    +
  • +
+
    +
  • Validate and upload the configuration to your ESP device.

    +
  • +
  • With that, you could already create a card with the sensors provided by the integration, but for better visual information a plant object can be created with aproppriate values. Information comes from the Mi Flora App, but someone dumped the database and it's available also on github.

    +

    From the spreadsheet:

    +
      +
    • Moisture: min_soil_moist/max_soil_moist
    • +
    • Temperature: min_temp/max_temp
    • +
    • Conductivity: min_soil_ec/max_soil_ec
    • +
    • Brightness: min_light_lux/max_light_lux
    • +
    +
  • +
+
    +
  • Create a plant monitor on the configuration.yaml file:

    +
      plant:
    +    parsley:
    +      sensors:
    +        moisture: sensor.flora_1_moisture
    +        battery: sensor.flora_1_battery
    +        temperature: sensor.flora_1_temperature
    +        conductivity: sensor.flora_1_soil_conductivity
    +        brightness: sensor.flora_1_illuminance
    +      min_moisture: 28
    +      max_moisture: 75
    +      min_battery: 20
    +      min_conductivity: 100
    +      max_conductivity: 2000
    +      min_temperature: 5
    +      max_temperature: 35
    +      min_brightness: 2500
    +      max_brightness: 55000
    +      check_days: 3
    +
    +
  • +
  • Restart Home Assistant for the changes to take effect.

    +
  • +
  • Add a Plant Status Card to your dashboard and select the plant you just created.

    +

    My parsley plant status card

    +
  • +
+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/12/31/my-home-with-home-assistant-part-2/plant-status-card-360.png b/blog/2021/12/31/my-home-with-home-assistant-part-2/plant-status-card-360.png new file mode 100644 index 0000000..e5eb3ff Binary files /dev/null and b/blog/2021/12/31/my-home-with-home-assistant-part-2/plant-status-card-360.png differ diff --git a/blog/2021/12/31/my-home-with-home-assistant-part-2/plant-status-card-640.png b/blog/2021/12/31/my-home-with-home-assistant-part-2/plant-status-card-640.png new file mode 100644 index 0000000..e5eb3ff Binary files /dev/null and b/blog/2021/12/31/my-home-with-home-assistant-part-2/plant-status-card-640.png differ diff --git a/blog/2021/12/31/my-home-with-home-assistant-part-2/plant-status-card.png b/blog/2021/12/31/my-home-with-home-assistant-part-2/plant-status-card.png new file mode 100644 index 0000000..e5eb3ff Binary files /dev/null and b/blog/2021/12/31/my-home-with-home-assistant-part-2/plant-status-card.png differ diff --git a/blog/2021/12/31/my-home-with-home-assistant-part-3/index.html b/blog/2021/12/31/my-home-with-home-assistant-part-3/index.html new file mode 100644 index 0000000..49b467a --- /dev/null +++ b/blog/2021/12/31/my-home-with-home-assistant-part-3/index.html @@ -0,0 +1,81 @@ + + + + + Self-hosting my home: Zigbee devices | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Self-hosting my home: Zigbee devices

+
+ Published on December 31, 2021 +
+ +
+ +

DeCONZ + Phoscon

    +
  • Install deconz addon
  • +
  • Add deconz integration
      +
    • Host: core_deconz
    • +
    +
  • +
+

Pairing everything

    +
  • Pair smart plug (show as light)
  • +
  • Pair motion sensor
  • +
  • Pair window/door sensors
  • +
  • Pair light detector
  • +
+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/2021/12/31/on-raspi-3-from-usb/index.html b/blog/2021/12/31/on-raspi-3-from-usb/index.html new file mode 100644 index 0000000..7b966c8 --- /dev/null +++ b/blog/2021/12/31/on-raspi-3-from-usb/index.html @@ -0,0 +1,136 @@ + + + + + Running Alpine Linux from USB on the Raspberry Pi 3 | Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + +
+

Running Alpine Linux from USB on the Raspberry Pi 3

+
+ Published on December 31, 2021 +
+ +
+ +
# Tested on Raspberry Pi 3
+# Create a Raspberry pi OS SD card
+sudo apt update
+sudo apt upgrade
+sudo rpi-update
+echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
+reboot
+
+# At this point the boot flag is enabled
+# Prepare the USB
+
+# Install Alpine to USB Drive
+# Format USB
+# Create two partitions:
+# - boot fat16
+# - root ext4
+tar xzvf ~/Downloads/alpine-rpi-3.12.1-armhf.tar.gz
+
+# boot/usercfg.txt:
+enable_uart=1 # Not sure I need this
+gpu_mem=32 # The minimal memory for the bootloader
+
+setup-alpine
+apk update
+apk add cfdisk e2fsprogs
+mkfs.ext4 /dev/sda2
+
+# Setup proper TZ
+apk add tzdata
+cp /usr/share/zoneinfo/Europe/Madrid /etc/localtime
+echo "Europe/Madrid" >  /etc/timezone
+apk del tzdata
+
+mount /dev/sda2 /mnt
+setup-disk -m sys /mnt
+mount -o remount,rw /media/sda1
+
+rm -f /media/sda1/boot/*
+cd /mnt
+rm boot/boot # Remove symlink
+
+mv boot/* /media/sda1/boot/
+rm -rf boot
+mkdir media/sda1
+
+ln -s media/sda1/boot boot
+
+# /mnt/etc/fstab
+# Remove cdrom
+# Add:
+/dev/sda1 /media/sda1 vfat default 0 0
+
+# Edit boot cmdline to boot from the ext partition
+# Add root=/dev/sda2
+
+# Reboot
+
+# After install
+
+# Set swclock (pi doesn't have a hwclock)
+rc-update add swclock boot
+rc-update del hwclock boot
+service hwclock stop
+service swclock start
+
+apk update
+apk upgrade
+
+ + +
+ + +
+
+ +
+ If you want to approach me directly about this post use the most appropriate channel + from the about page. +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 0000000..ee7cde4 --- /dev/null +++ b/blog/index.html @@ -0,0 +1,169 @@ + + + + + Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + +
+

November 2021

+
+ Published on December 01, 2021 +
+ +
+ +

Ramen dish from Ramen Kagura in Madrid, Spain

+
Mandatory visit to Ramen Kagura when visiting Madrid.
+

Read more »

+ +
+ + +
+
+ + + + +
+

How I organize my Home Assistant automations

+
+ Published on November 30, 2021 +
+ +
+ +

Automations in Home Assistant are the best thing after the cocoa discovery, I use them a lot for many different things and I'm always wondering how to solve the first world problem of the day. The hassle with it is that apart from a list and the search there are not much more options to filter, and when your automations grow it became a bit of a pain finding what you want.

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

Home Assistant battery levels at a glance

+
+ Published on November 15, 2021 +
+ +
+ +

I was talking recently about how many Zigbee devices are too many and how the most troublesome thing you can have is batteries dieing on you at the same time. If you install several devices at once and have it's batteries dead at the same it it's a bit of a hassle going to each one and replacing it (depending where you have them and how difficult is to replace).

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

October 2021

+
+ Published on November 02, 2021 +
+ +
+ +

A picture of myself from the back while I try to take a picture of a nice river reflection from a building

+
A ninja picture of me taking a picture
+

Read more »

+ +
+ + +
+
+ + + + +
+

Storing data in Node-Red flows using contexts

+
+ Published on October 11, 2021 +
+ +
+ +

I've been adding some automations to my Home Assistant recently so it can inform us of takeaway menu changes for local restaurants. We have a few favourites and they usually offer different options each day so checking for updates and notifying us via our Telegram bot is pretty easy.

+ +

Read more »

+ +
+ + +
+
+ + + +
+ +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/page/10/index.html b/blog/page/10/index.html new file mode 100644 index 0000000..203d212 --- /dev/null +++ b/blog/page/10/index.html @@ -0,0 +1,319 @@ + + + + + Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + +
+

PiWeek VIII

+
+ Published on July 18, 2015 +
+ +
+ +

While writing this post all the content was deleted because of a hardware +problem and sadly this is less that I wrote originally. :(

+
+

+

This week have been awesome. After two years I finally went back to the +Personal Innovation Week for a second time, and as motivated as it were, I'm +planning to repeat at the end of the year. For those who don't know what a +ΠWEEK is, its site explains it very well: ΠWEEK +/paɪ wiːk/ is an original idea by Kaleidos and it consists in allowing +employees from participant technology companies to leave their ongoing work in +standby and dedicate an entire week to personal projects. The plan is to enjoy +a ΠWEEK every six months, particularly in December and July, and allow +employees to play and innovate.

+

Putting it simple: you can either present you own project for people to hop in +or you can join anothers team project and create something, play with new +technologies and of course, learn new stuff. This time the teams and projects +were incredible, I meet up with the Kaleidos team again after a long time (too +long!), played some Winjammers (and got beat every single time), but of +course, learn a few new things as you do every time you play around.

+

Our team

+

From left to right, top to bottom:

+ +

Our project

+

Our project, designed by Ramiro and some other friends is a really complex +game in which you take control of a guild and it's guild members playing +against other player's guilds.

+

Each turn, a player send every guild member to do some actions (line wood- +cutting, praying, breaking a leg to another guild member, etc) and that action +is dice-rolled witch success/failure results. Each member have it's own stats +and adquired conditions (buffs/debuffs) and so on. The MVP idea is to adquire +reputation and the guild who have the most reputation in turn 20 wins, but +there's a 30 page document with a lot of non-developed stuff for the game.

+

It's was really fun to make stuff different than my daily job routine, using +libraries (or just plain python types) than django. There's a world out there +and even if it was little things you end up always learning something new.

+

Honorable mentions

Even if my team end up winning this ΠWEEK, there was projects that also show +how much can you achieve in just five days with a smaill team, my personal two +favourites were:

+
    +
  • Zombie time!!, a multiplayer turn-based-and-real-time zombie survival game. This was expected since I love zombie games. They managed to get an almost fully playable game in just five days, be sure to check it out because it seemed really fun.
  • +
  • UXBox, an interactive wireflaming tool created because there aren't any real open source options out there.
  • +
+

But of course, there was a lot of projects and people working there, be sure +to check it out in the official piweek blog or +in the piweek github group.

+

Conclusion

+

The ΠWEEK is an awesome event and more companies should start leting their +people use a percentage of the time into personal projects, learning new stuff +and improving their knowledge. Or you can just join the ΠWEEK two weeks a year +so awesome people start making awesome stuff.

+

Really, if you are a developer and can join this event, do it, and if you are +their boss, let them do so!

+

_Post pictures by +@bameda, +@yamila_moreno and +@ilopmar_

+ + +
+ + +
+
+ + + + +
+

Manga recommendation: Kamisama no Iutoori Ni

+
+ Published on May 14, 2015 +
+ +
+ +

Dice

+

Summary

Starts at the same time as the prequel but it follows the survival story of +new characters, the ones who didn't go to school at the first day, who face +different challenges than those in the prequel.

+

Prequel: Kamisama no Iutoori +Chapters: 107 (ongoing) +Genre: Action, Horror, Shounen, Supernatural +Story: Muneyuki Kaneshiro +Art: Akeji Fujimura

+ + +
+ + +
+
+ + + + +
+

Manga recommendation: Dice - The cube that changes everything

+
+ Published on May 07, 2015 +
+ +
+ +

Dice

+

Summary

Dongtae is rock bottom in everything: Looks, grades, life, everything. But all +that might change. If you could change your life by playing a game, would you?

+

Type: Manhwa +Chapters: 93+ (ongoing) +Genre: Action, Drama, Fantasy, Psychological, Romance, School Life, Shounen, Slice Of Life, Supernatural, Webtoons +Story/Art: Yun Hyun Suk

+ + +
+ + +
+
+ + + + +
+

Amazon EC2: No space left on device

+
+ Published on May 04, 2015 +
+ +
+ +

So a funny thing happened today at out pre-production environment. I was +performing our pre-big-PR deployment when a beautiful error was shown in my +terminal:

+
cannot create X: No space left on device
+
+

What?! How could that be possible. I know that our environment don't have a +lot of bytes for us to play with but having the storage already full with our +database and other services outside this machine just wasn't possible. And I +was right.

+
fmartingr@pre-production:~$ df -h
+Filesystem      Size  Used Avail Use% Mounted on
+/dev/xvda1       59G   37G   21G  65% /
+none            4.0K     0  4.0K   0% /sys/fs/cgroup
+udev            2.0G   12K  2.0G   1% /dev
+tmpfs           396M  400K  395M   1% /run
+none            5.0M     0  5.0M   0% /run/lock
+none            2.0G     0  2.0G   0% /run/shm
+none            100M     0  100M   0% /run/user
+
+

What?! Now I sure don't understand a thing. I was laughing hysterically when +my brain just started working as I remembered an old friend: the +inode.

+
fmartingr@pre-production:~$ df -i
+Filesystem      Inodes   IUsed   IFree IUse% Mounted on
+/dev/xvda1     3932160 3932160       0  100% /
+none            505855       2  505853    1% /sys/fs/cgroup
+udev            504558     403  504155    1% /dev
+tmpfs           505855     332  505523    1% /run
+none            505855       1  505854    1% /run/lock
+none            505855       1  505854    1% /run/shm
+none            505855       4  505851    1% /run/user
+
+

Fk you. Our deploys are made using "isolated" builds. That is, we reinstall +pip/bower requirements for every build.** So each build take about ~50k +inodes, and we keep some in case some rollback is needed, but of course, +keeping two months old builds wasn't needed at all, so I made a script that +just deletes builds older than two weeks and our poor thing was happy again.

+

To search which folder of your server is eating the inode limit, you can run +this command:

+
find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -nr
+
+

This will show the path name and the inode count, keep going inside dirs to +get some detailed input, once found, just delete the files that are causing +havok.

+ + +
+ + +
+
+ + + + +
+

How to: Starbound dedicated server on a linux machine

+
+ Published on December 05, 2013 +
+ +
+ +

Starbound logo

+

The day it's here! Starbound beta is finally here, and what could be better +than having a dedicated server to play with your friends? Let's get this done.

+

Install SteamCMD

Official documentation: https://developer.valvesoftware.com/wiki/SteamCMD

+

Basically you need to download it's shell script to manage steam apps, take +special attention to the lib32 section if you're running the server in a 64bit +machine.

+
wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
+tar xzf steamcmd_linux.tar.gz
+
+

Install Starbound on the server

You will need to login with your steam username here to download/update +starbound. Your account is not needed to keep the server running.

+
./steamcmd.sh
+# Steam updating and validating stuff
+Steam> login your_username_here
+# Your password WILL BE VISIBLE. But after a first login
+# your credentials will be cached so you don't need to
+# expose them everytime you need to use the steamcmd.
+Steam> app_update 211820
+# This will install starbound, it will take a while
+# depending on the server bandwidth.
+Steam> app_update 211820 validate
+# Validate installation, just in case.
+# I do this in two separate steps because -at least for me-
+# validating on a fresh install take a lot longer that
+# just installing and validating afterwards. Don't sure why.
+Steam> quit
+# Finished!
+
+

Start the server

Go to Steam/SteamApps/common/Starbound/linuxXX/ (where XX is 32 or 64 based +on your server architecture).

+

Launch launch_starbound_client.sh

+

If you want to use the universe you played on your computer, just upload the +universe folder found on your computer to the same folder where the server +script is.

+

Happy gaming!

+ + +
+ + +
+
+ + + +
+ +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/page/11/index.html b/blog/page/11/index.html new file mode 100644 index 0000000..a30b4a5 --- /dev/null +++ b/blog/page/11/index.html @@ -0,0 +1,622 @@ + + + + + Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + +
+

Reading data from iOS backups: Manifest.mbdb

+
+ Published on November 29, 2013 +
+ +
+ +

Recently, I've been working on a tool to extract data from iOS backups, and one of the files that a backup have is the Manifest.mbdb (or mbdx for old versions).

The Manifest.mbdb is a binary file that contains records for the hashed files that the backup includes, the hashed files can be anything that a certain application requires or saved, from a image thumbnail to a sqlite3 database file.

Reading the file can be tricky, since the record itself have a variable length, so you can just split the file based on a delimiter, you need to read it byte to byte. I'm going to expose here the data structures this file contains:

+ + + + + + + + + + + + + + + + + + + + + + + +
String entity
TypeNameDescriptionNull value
uint16LenghtLength of the string0x0000
ASCII dataDataActual string of (length) size. Don't need to read this if length is null.nothing
+ + + + + + + + + + + + + + + + + + + + +
Property entity
TypeNameDescription
stringKeyKey of the property
stringvalueProperty value
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Record entity
TypeField nameDescriptionNull value
stringDomainApp domain 
stringPathPath to file0x0000
stringTarget 0xFFFF
stringHashSHA-1 hash of the file0xFFFF
stringEncription keyEncryption key -if any-0xFFFF
uint16ModeFile mode: +
    +
  • 0xAXXX: Symlink
  • +
  • 0x4000: Directory
  • +
  • 0x8000: File
  • +
+
 
uint64inode number  
uint32User ID  
uint32Group ID  
uint32Last modified timeEPOCH 
uint32Last accesed timeEPOCH 
uint32Created timeEPOCH 
uint64File size 0x0...0
uint8Flag0x1 to 0xB 
uint8Properties numberNumber of properties to follow with this record0x00
property[0...n]Property objectsEach property object -if any-nothing
--File nameSHA1(domain + path) 

More info:  The iPhone Wiki | This image I found

+ +
+ + +
+
+ + + + +
+

Warcraft 3 on MAC with wineskin

+
+ Published on August 10, 2013 +
+ +
+ +

A few days ago, I bought Warcraft III. I never finished it before, since I +didn't own the game, and lately I had this inner urge to play a game on the +Warcraft series. Since going back to World of Warcraft isn't an option, I +decided to rollback to the part of the Warcraft lore that is unknown to me.

+

Sadly after buying the game I discovered that they dropped support for the +game when Apple did the conversion of their hardware from powerpc to intel. +There was no way of running the mac version of the game on newer hardware, and +I even contacted Blizzard support about the matter, but the answer was the one +I feared: I had to use wine. This reminded me of the old days when I was a +linux user and this was needed in order to play anything on linux.

+

+

Installing the needed software

First of all, you will need to download +Wineskin, +as we're going to use this to "emulate" our windows environment. Also, +download the windows warcraft downloaders from your battle.net account.

+

Execute it and download the last engine (clicking on the plus symbol) and also +update the wrapper.

+

You should see your wineskin window similar to the one on the left.

+

Now you need to create a clean wrapper for your Warcraft III installation.

+

Creating the wrapper

Just click on the "Create New Blank Wrapper" button and give it a name. I will +go with "Warcraft III.app". It will ask you to install some mono/gecko +libraries needed for the wrapper. Just go with it and wait until all the +process finishes.

+

You will be prompted if you want to open the containing folder, do it since +now we need to configure our wrapper.

+

Now, right click the app you created and select "Show package contents".

+

Execute Wineskin.app, and select "Install software", on the next panel select +"Select setup executable" and go to the path of your warcraft 3 downloader, +that will prompt the installation menu when it finishes.

+

Install your warcraft as you would in a windows machine, and when you exit the +installer wineskin will ask for the main executable file, select "Warcraft +III.exe". After that, repeat the process with the Frozen Throne executable.

+

Configuration

We need to tweak some things before we can play, here's what I did:

+
    +
  • Go to set screen options and set windowed. Since I have a 16:9 screen and the game runs at 4:3, everything is streched. Maybe there's a 16:9 patch around the net.
  • +
  • I customized the icon with this one. You need to convert it to ICNS for using it with wineskin (you can use this online tool). Copy it into the package and select on the advanced options in the wineskin executable.
  • +
  • If you want to play with the frozen throne expansion, change the Windows EXE on the advanced settings panel to "Frozen Throne.exe".
  • +
  • Since wine can't play the cinematics, you can safely remove/rename the movies folder under the warcraft installation folder. (Default: drive_c/Program Files/Warcraft III)
  • +
  • Delete the game installers if you stored them into the wineskin package to keep the .app file size to a minimum.
  • +
+

Enjoy!

+

It's done! Store the Warcraft III.app somewhere if you don't want to repeat +the process if you delete the game.

+

Updates:

    +
  • Using the -opengl EXE flag will get you a smoother framerate. (thanks to Sylvain Prevost in the comments)
  • +
  • Suggested engine: WS9Wine1.7.2. (by Sylvain Prevost in the comments)
  • +
+ + +
+ + +
+
+ + + + +
+

How to install and configure the yubikey-pam module on archlinux

+
+ Published on July 09, 2013 +
+ +
+ +

+

Not so long ago I've been gifted with a Yubikey. It's a two-auth hardware +solution with multiple auth methods (OTP, Challenge-response, OATH-HOTP and +static password). It easily scaled to one of my favourite and most useful +gadgets.

+

I've been a google authenticator user for a while, but the yubikey is just +much easier to work with: when configured, you only need to tap a button on +the usb stick to generate your key. You can use this in many ways, but in this +post I'm focusing on ssh authentication and how to install the yubico-pam +module into an Arch installation.

+

Installing the required packages

Thanks to the awesome arch community we already have the needed packages on +the AUR, these are: yubico-pam- +git, yubico-c-client- +git, yubikey- +personalization-git and +libyubikey. Keep in mind +that you may need to install more packages depending on your system +installation.

+

You can install that with your favourite AUR helper or using makepkg:

+
$ curl -O https://aur.archlinux.org/packages/li/libyubikey/libyubikey.tar.gz
+$ tar xvzf libyubikey.tar.gz
+$ cd libyubikey
+$ makepkg PKGBUILD
+# ...
+$ sudo pacman -U libyubikey-1.10-2-x86_64.pkg.tar.xz
+
+

Repeat that step for all the packages, in order: libyubikey, yubico-c- +client, yubikey-personalization and yubico-pam. If you have trouble +installing from the AUR refer to the appropiate wiki +page.

+

Configure the PAM module

Edit /etc/pam.d/sshd and add on top on the rest of the auth modules:

+
auth sufficient pam_yubico.so id=XXXX key=XXXX
+
+

You can obtain an ID/key conbination by registering your yubikey at this +page.

+

Authorization methods

Individual authorization mapping

If your server have multiple users this is the easiest method to let them +configure their yubikeys. You just need to create the file +$HOME/.yubico/authorized_yubikeys with the following contents:

+
<username>:<Yubikey token ID 1>[:<Yubikey token ID 2][:...]
+
+

The yubikey token identifier can be obtained by removing the last 32 +characters of any OTP value, and you can add more than one ID to the file.

+

Restart your ssh server to apply the changes.

+

Central authorization mapping

Create a file on /etc/yubikey_mappings that will contain all your users and +their respective yubikey token identifiers, like this:

+
<first username>:<Yubikey token ID 1>[:<Yubikey token ID 2][:...]
+<second username>:<Yubikey token ID 3>[:<Yubikey token ID 4][:...]
+
+

For this to work, you need to specify this file to the pam module authfile +parameter:

+
auth sufficient pam_yubico.so id=XXXX key=XXXX authfile=/etc/yubikey_mappings
+
+

After that estart your ssh server to apply the changes.

+

Logging in

The next time you're asked for a password on you ssh login you can use a +yubikey OTP instead of your current password -if you have any-.

+

This method works pretty well with authorized ssh keys as well, since you will +log-in automatically from a computer with a configured ssh key but an OTP -or +password- will be required for logging in from anywhere else.

+

Yubico-pam module | Github +Yubico | Home page

+ + +
+ + +
+
+ + + + +
+

Extracting data from obfuscated java code

+
+ Published on July 04, 2013 +
+ +
+ +

+

For those who don't know, I started a site a while ago minecraft related (yes, +the one I dropped). If you don't know what minecraft is (really?!), you can check the +official site, since this game can be a little +difficult to explain.

+

The project (which is online at +minecraftcodex.com) is just a database of +items, blocks, entities, etc. related to the game, but as in any other site of +this kind, entering all this information can lead to an absolute boredom. So +I thought... what if I can extract some of the data from the game +classfiles? That would be awesome! Spoiler alert I did it.

+

Think this as my personal approach to all steps below: it doesn't mean that they're the best solutions.

+
+

Unpackaging the jarfile and decompiling the classes

First of all, you have a minecraft.jar file that it's just a packaged set of +java compiled files, you can just tar -xf or unzip it into a folder:

+
unzip -qq minecraft.jar -d ./jarfile
+
+

With this we now have a folder called _jarfile__ _filled with all the jar +contents. We now need to use a tool to decompile all the compiled files into +.java files, because the data we're looking for it's hard-coded into the +source. For this purpose we're going to use JAD, +a java decompiler. With a single line of bash we can look for all the .class +files and decompile them into .java source code:

+
ls ./jarfile/*.class | xargs -n1 jad -sjava -dclasses &> /dev/null
+
+

All the class files have been converted and for ease of use, we've moved them +into a separate directory. But there's a lot of files! And also, when we open +one...

+
public class aea extends aeb
+{
+    public aea()
+    {
+    }
+
+    protected void a(long l, int i, int j, byte abyte0[], double d,
+            double d1, double d2)
+    {
+        a(l, i, j, abyte0, d, d1, d2, 1.0F + b.nextFloat() * 6F, 0.0F, 0.0F, -1, -1, 0.5D);
+    }
+    // ...
+}
+
+

Look at that beautiful obfuscated piece of code! This is getting more +interesting at every step: almost 1.600 java files with obfuscated source +code.

+

Searching for the data

I took the following approach: Since I know what I'm looking for (blocks, +items, etc) and I also know that the information is hard-coded into the +source, there must be some kind of string I can use to search all the files +and get only the ones that contains the pieces of information I look for. For +this test, I used the string "diamond":

+
$ grep diamond ./classes/*
+./classes/bfp.java:        "cloth", "chain", "iron", "diamond", "gold"
+./classes/bge.java:        "cloth", "chain", "iron", "diamond", "gold"
+./classes/kd.java:        w = (new kc(17, "diamonds", -1, 5, xn.p, k)).c();
+./classes/rf.java:        null, "mob/horse/armor_metal.png", "mob/horse/armor_gold.png", "mob/horse/armor_diamond.png"
+./classes/xn.java:        p = (new xn(8)).b("diamond").a(wh.l);
+./classes/xn.java:        cg = (new xn(163)).b("horsearmordiamond").d(1).a(wh.f);
+
+

As you can see, with a simple word we've filtered down to five files (from +1.521 in this test). Is proof that we can get some information from the source +code and we now to filter even more, looking around some files I selected +another keyword: flintAndSteel, works great here, but in a real example you +will need to use more than one keyword to look for data.

+
$ grep flintAndSteel ./classes/*
+./classes/xn.java:    public static xn k = (new xh(3)).b("flintAndSteel");
+
+

Only one file now, we're going to assume that all the items are listed there +and proceed to extract the information.

+

Parsing the items

This was the more complicated thing to do. I started doing some regular +expressions to matchs the values I wanted to extract, but soon that became +inneficient due to:

+
    +
  • The obfuscated code varies with every released version/snapshot -or it should.
  • +
  • The use of OOP difficulted method searching with RegEx matching, since the names could change from version to version, making the tool unusable on updates.
  • +
  • The need to modify the RegEx if something in the code changes, or if we want to extract some other value.
  • +
+

After some tests, I decided to convert the java code into python. For that, +I used simple find and match to get the lines that had the definitions I +wanted, something line this:

+
// As a first simple filter, we only use a code line if a double quote is found on it.
+// Then, regex: /new (?P<code>[a-z]{2}\((?P<id>[1-9]{1,3}).*\"(?P<name>\w+)\"\))/
+// ...
+T = (new xm(38, xo.e)).b("hoeGold");
+U = (new yi(39, aqh.aD.cE, aqh.aE.cE)).b("seeds");
+V = (new xn(40)).b("wheat").a(wh.l);
+X = (vr)(new vr(42, vt.a, 0, 0)).b("helmetCloth");
+Y = (vr)(new vr(43, vt.a, 0, 1)).b("chestplateCloth");
+// ...
+
+

Since that java code is not python evaluable, just convert it:

+
    +
  • Remove unmatched parenthesis and double definitions
  • +
  • Remove semicolons
  • +
  • Remove variable definitios
  • +
  • Converted arguments to string. This can be improved a lot, leaving decimals, converting floats to python notation, detecting words for string conversion, etc. Since for now I am not using any of the extra parameters this works for me.
  • +
  • Be careful with reserved python names! (and, all, abs, ...)
  • +
+
// Java: U = (new yi(39, aqh.aD.cE, aqh.aE.cE)).b("seeds");
+yi("39", "aqh.ad.cE", "aqh.aE.cE").b("seeds")
+// Java: bm = (new xi(109, 2, 0.3F, true)).a(mv.s.H, 30, 0, 0.3F).b("chickenRaw");
+xi("109", "2", "0.3F", "true").a("mv.s.H", "30", "0", "0.3F").b("chickenRaw")
+
+

Now I defined an object to match with the java code definitions when +evaluating:

+
class GameItem(object):
+    def __init__(self, game_id, *args):
+        self.id = int(game_id)
+
+    def __str__(self, *args):
+        return "<Item(%d: '%s')>" % (
+            self.id,
+            self.name
+        )
+
+    def method(self, *args):
+        if len(args) == 1 and isinstance(args[0], str):
+            "Sets the name"
+            self.name = args[0]
+        return self
+
+    def __getattr__(self, *args):
+        return self.method
+
+

As you can see, this class have a global "catch-all" method, since we don't +know the obsfuscated java names, that function will handle every call. In that +concrete class, we now that an object method with only one string parameter is +the one that define the item's name, and we do so in our model.

+

Now, we will evaluate a line of code that will raise and exception saying that +the class name <insert obfuscated class name here> is not defined. +With that, we will declare that name as an instance of the GameItem class, so +re-evaluating the code again will return a GameItem object:

+
try:
+    # Tries to evaluate the piece of code that we converted
+    obj = eval(item['code'])
+except NameError as error:
+    # Class name do not exist! We need to define it.
+    # Extract class name from the error message
+    # Defined somewhere else: class_error_regex = re.compile('name \'(?P<name>\w+)\' is not defined')
+    class_name = class_error_regex.search(error.__str__()).group('name')
+    # Define class name as instance of GameItem
+    setattr(sys.modules[__name__], class_name, type(class_name, (GameItem,), {}))
+    # Evaluate again to get the object
+    obj = eval(item['code'])
+
+

And with this, getting data from source code was possible and really helpful.

+

A lot of things could be improved from this to get even more information from +the classes, since after spending lot's of time looking for certain patterns +on the code I can say what some/most of the parameters mean, and that means +more automation on new releases!

+

Real use case

Apart from getting the base data for the site (all the data shown on minecraft +codex is directly mined from the source code), I made up a tool that shows +changes from the last comparision -if any. This way I can easily discover what +the awesome mojang team added to the game every snapshot they release:

+

+

This is the main tool I use for minecraft codex, is currently bound to the +site itself but I'm refactoring it to made it standalone and publish it on +github.

+ + +
+ + +
+
+ + + + +
+

django-stampu: Static sites with django

+
+ Published on July 01, 2013 +
+ +
+ +

+

After finishing zombiepress a friend of mine wanted to use it but asked for +some kind of conversion to static since he uploads its current blog to github. +That's how this project was born.

+
+

Django as a static site? Of course, it's possible, only if your project it's +using a simple backend infrastructure, it doesn't let users modify the +database, and also doesn't have contact forms or that kind of stuff. The +conversion of a blog into static content was really easy, in about 30 minutes +I had an alpha working -which is the 0.1.2 version uploaded in github/pypi-.

+

django-stampu is basically a crawler. Some people led me to solutions much +more complicated. (Ex. Running a command and let the computer work.) And I +didn't like that. I wanted a conversion of the site as I see it when running +the runserver command, for that purpose you have to follow all the internal +links of the site and save the items as *.html if the content-type matches. It +also saves the static files in the site, but I need to look further into that, +because it can't save files needed by css files yet, it only checks for +src/href attributes on all tags in html files.

+

Want to try it?

+
    +
  1. Install django-stampu: pip install django-stampu
  2. +
  3. Add it to your INSTALLED_APPS
  4. +
  5. Execute the command: python manage.py stamp
  6. +
  7. Check the _static folder.
  8. +
+

Easy, right? That's what I want to hear!

+

Keep in mind that this is a proof of concept, I need to improve lots of things +and add some configuration variables for people that want to customize their +sites.

+

If you want to contribute in any way, you can check the source code at +github.

+ + +
+ + +
+
+ + + +
+ +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/page/12/index.html b/blog/page/12/index.html new file mode 100644 index 0000000..0b0a6d5 --- /dev/null +++ b/blog/page/12/index.html @@ -0,0 +1,265 @@ + + + + + Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + +
+

Zombiepress is here

+
+ Published on June 24, 2013 +
+ +
+ +

It finally happened. I got tired of octopress and decided to finish what I +started: my own blogging CMS.

+

It's a really modest thing built with django. I've added some thing to make it +easy to use (in my oppinion):

+
    +
  • settings.py main preferences (required for running the app) are set on environment variables instead of environment dependant settings files or the not so cool local_settings.py.
  • +
  • A a key->value preferences config in the admin (a simple django model with 3 fields) for settings that may be needed to modify in a live environment and would be a shame if it were on the settings.py file. In example, I use it to set some RSS preferences and the Disqus shortname for the blog comments. To disable blog comments I just need to uncheck the "pass to template" option on the required variable.
  • +
  • Theming: Not an absolute state of the art, but it's function works: a themes folder and a variable to select one on the settings.py, I just need to create the basic theme.
  • +
  • (experimental) Multilanguage support. A friend asked for a easy to use CMS with multilingual support, so I want to give it a shot. Since I never used django with managed multilingual content, it may be easy or it may be not. The code is there, someone has to try it.
  • +
+ + +
+ + +
+
+ + + + +
+

Manga recommendation: Enigma

+
+ Published on February 27, 2013 +
+ +
+ +

"Enigma"

+

Summary

Haiba Sumio is a student at a Tokyo High School with an interesting ability… +He occasionally falls asleep and wakes up with premonitions of the future +written out on his "Dream Diary". With this ability, Sumio helps out people in +trouble before anything bad happens, until one day when his peaceful life +completely changes.

+

Volumes: 7 +Chapters: 56 (finished) +Genre: Adventure, Mystery, School, Shounen, Supernatural +Story/Art: Sakaki, Kenji

+ + +
+ + +
+
+ + + + +
+

Server going slow after IPTables configuration? Try this

+
+ Published on February 27, 2013 +
+ +
+ +

Recently I've started the migration of my company's servers to a new provider. +After checking that the OS installed on the -now- old servers was Ubuntu 8.04 +(holy shit), I decided to make a fresh install of CentOS 6.3, cleaning up all +the servers contents and setting up everything from scratch.

+

After setting my iptables rules (INPUT whitelisted, OUTPUT accept all) I +noticed a big delay on every connection made to my server. After checking a +lot of things, these two solved the issue:

+

Enable unilimited traffic on your loopback interface

iptables -A INPUT -i lo -j ACCEPT
+iptables -A OUTPUT -o lo -j ACCEPT
+
+

Enable traffic for connections started by your server

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
+
+

Hope this solves your issue as it did with mine.

+ + +
+ + +
+
+ + + + +
+

Fringe series finale: My oppinion

+
+ Published on February 24, 2013 +
+ +
+ +

+

Attention: This entry contains huge spoilers about the series finale of +Fringe. Also, lots of negative opinions, if you like the series or don't +understand how sarcasm works, leave.

+
+

I've spent the last weeks watching the show from where I dropped it -the third +season- and I can say that the final season is the worst of all. I don't know +if the show was losing audicence, if they only wanted to finish it, because I +don't know another reason to kill the show this way.

+

From now on I'm talking only about the fifth season, as should be the more +important and the one all of you -and myself- have fresh.

+
    +
  • The most stupid thing I remember: The tapes with the plan to get rid of the observers. +Walter had a plan to defeat the observers, a plan that he never tell anyone +until is destroyed from his mind by an observer. But, hey! He must have +recorded the plan or something. I mean, he is a very smart one. He did. He +recorded that he have a plan on a tape, but for knowing what it is you have to +swim accross a sea of amber to find another eight tapes with the details. OH +HOW SMART IS THAT! Just a stupid reason to keep characters busy. Without this +the entire fifth season is done in two-three chapters.

    +
  • +
  • The observers powers. +So, I can read minds and predict -in some way- the future. How can SOMEONE +DEFEAT YOU IF YOU CAN PREDICT WHAT ARE THEY GOING TO DO. And more, you SAW in +Walter's mind what the plan was. The observers boss is just… asshole.

    +
  • +
  • The plan. +Tons of VHS tapes with a specific plan of how to build a machine to generate a +wormhole, but in the last moment, hey! But the observers generate wormholes +for their supplies, let's use that! Let's put humanity's hope on a last moment +change! :D

    +
  • +
  • Olivia's powers. +You used your last cortexiphan -or however it's written- on revive yourself +from a headshot (LOL), then you get injected fours times, each for every +dimension swap you have to do. Despite the fact that just this sucks, there's +more: William Bell needed a lot of time just to unleash her powers, and now, +is not that she have the powers active, but also she knows how to swap +dimensions on her own will. Fascinating. Also, from this point Olivia don't +need fear to use her powers.

    +
  • +
  • The observers chip. +Peter removes a chip from a observer and the observer die. Removes it from +himself and nothing happen. And I'm not talking about how deep the chip was +jumping insinde the brain when Walter did the tests… just WTF, die already.

    +
  • +
  • Gun's agains the observers. +This is just a little thing: in our universe, Bell design some improved guns +-that apparently only the rebels have 21 years in the future…- that shoots +faster to deal with the observers. When Olivia travels to the alternative +universe, they don't have that guns but can kill observers without a problem.

    +
  • +
  • Time travel: +Apparently there's only one shot for a single one to time-travel: September +takes it. But when he's killed nothing prevents Walter for time traveling.

    +
  • +
  • Olivia vs. Observer Boss. +Apparently the energy needed to move a truck with the cortexiphan powers is +the electricity of the entire New York. That's efficient use of energy.

    +
  • +
+

There's more things, I'm sure, but I don't remember just now. Besides, there's +more than enough here.

+ + +
+ + +
+
+ + + + +
+

Manga recommendation: Psyren

+
+ Published on February 23, 2013 +
+ +
+ +

"Psyren"

+

Summary

Psyren follows the adventures of Ageha Yoshina, a high school student who is +chosen by Nemesis Q as a participant in the Psyren games. The games take place +in a world known initially as Psyren, which is revealed to be the real world a +decade in the future. Ageha and his friends attempt to alter the future and +save the world from becoming Psyren.

+

Volumes: 16 +Chapters: 145 (finished) +Genre: Action, Adventure, Game, Romance, Sci-Fi, Shounen, Super Power, Supernatural, Psychological +Story/Art: Tokashi Iwashiro

+ + +
+ + +
+
+ + + +
+ +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/page/13/index.html b/blog/page/13/index.html new file mode 100644 index 0000000..fdd8988 --- /dev/null +++ b/blog/page/13/index.html @@ -0,0 +1,600 @@ + + + + + Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + +
+

Where to buy Warcraft books ordered by storyline

+
+ Published on February 23, 2013 +
+ +
+ +

I've reunited a list with all the warcraft books sorted by the storyline of +the lore. Some of 'em occur at the same time so if you see the same book twice +that's the reason.

+

More info on WowWiki.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Book nameAmazon COMAmazon UKKindleBookDepository
Pre-game timeline events    
The war of the ancients Trilogy    
- The Well of EternityAmazon.comAmazon.co.ukKindleBookDepository
- The Demon SoulAmazon.comAmazon.co.ukKindleBookDepository
- The SunderingAmazon.comAmazon.co.ukKindleBookDepository
War of the Shifting Sands [Short story]Battle.net   
Rise of the HordeAmazon.comAmazon.co.ukKindleBookDepository
Unbroken [Short story]Battle.net   
Warcraft: Orcs and HumansThe first war   
Last GuardianAmazon.comAmazon.co.ukKindleBookDepository
Warcraft IIThe second war   
Tides of DarknessAmazon.comAmazon.co.ukKindleBookDepository
Beyond the Dark PortalAmazon.comAmazon.co.ukKindleBookDepository
Post-Warcraft II & Pre-Warcraft III    
Day of the DragonAmazon.comAmazon.co.ukKindleBookDepository
Lord of the ClansAmazon.comAmazon.co.ukKindleBookDepository
Of Blood and HonorAmazon.comAmazon.co.ukKindle
Road to Damnation [Short story]Battle.net   
Warcraft III: Reign of ChaosThe third war   
Arthas: Rise of the Lich KingAmazon.comAmazon.co.ukKindleBookDepository
Warcraft III: The Frozen Throne    
The war of the ancients Trilogy    
- The Well of EternityAmazon.comAmazon.co.ukKindleBookDepository
- The Demon SoulAmazon.comAmazon.co.ukKindleBookDepository
- The SunderingAmazon.comAmazon.co.ukKindleBookDepository
Cycle of HatredAmazon.comAmazon.co.ukKindleBookDepository
World of Warcraft    
War of the Shifting Sands [Short story]Battle.net   
WoW: The Burning Crusade    
Night of the DragonAmazon.comAmazon.co.ukKindleBookDepository
WoW: Wrath of the Lich King    
StormrageAmazon.comAmazon.co.ukKindleBookDepository
The Shattering: Prelude to CataclysmAmazon.comAmazon.co.ukKindleBookDepository
WoW: Cataclysm    
WolfheartAmazon.comAmazon.co.ukKindleBookDepository
Thrall: Twilight of the AspectsAmazon.comAmazon.co.ukKindleBookDepository
Jaina Proudmore: Tides of WarAmazon.comAmazon.co.ukKindleBookDepository
WoW: Mists of Pandaria    
    
+ +
+ + +
+
+ + + + +
+

Manga Recommendation: Kamisama no Iutoori (Fujimura Akeji)

+
+ Published on January 20, 2013 +
+ +
+ +

"Kamisama no Iutoori \(FUJIMURA
+Akeji\)"

+

Summary

Takahata Shun's day at high school begins just as normal and boring as ever, +but it doesn't end that way. After his teacher's head explodes, he and his +classmates find themselves forced to play children's games, such as Daruma ga +Koronda (a game like Red Light/Green Light), with deadly stakes. With no idea +who is behind this mysterious deadly game session, and no way of knowing when +it will finally end, the only thing Shun and other students can do is keep +trying to win…

+

Volumes: 5 +Chapters: 21 (finished) +Genre: Action, Horror, School, Shonen, Supernatural +Story: Muneyuki Kaneshiro +Art: Akeji Fujimura

+

Thanks to @rsanchezbalo for his +recommendation!

+ + +
+ + +
+
+ + + + +
+

Tweeria: The MMORPG people without time can play

+
+ Published on January 14, 2013 +
+ +
+ +

"Tweeria
+summary"

+

Many of us -or maybe not, but let's assume that- have played at least one +MMORPG game in our life and we know that it could be very time consuming. +Level up, going to instances, getting better year… and if you was hardcore +enough: scheduled raids.

+

As we grow up we notice that the time for this kind of things fade away, but +you still want to party with friends and get somepurples. Until I found +Tweeria, that brilliant idea of using your twitter posts to interact +with your alter-ego on a MMORPG world.

+

"My
+profile"

+

It shares some of the features of common MMORPGs but the good part is that +we don't need to do anything else that tweetfor many of them, so your +character makes an action for every tweet you post -I think it's not every +tweet, just a few in a period of time, haven't checked it-. You can defeat +NPCs, loot an item, going onto a dungeon alone… you can even save -or kill +:P- your friends if you mention or retweet them in your tweets.

+

"Upcoming and in-progress
+raids"

+

However, there are some things that needs user interaction: the raids. You can +have up to five scheduled raids at the same time but you need to join for it +manually. However, it's fast and easy: you just need to get into the events +page and join the event you want. For gear swapping, selling items and buying +spells you need to interact on the site too. According to the posts you can +craft items and spells but that part of the game does not work for me, so I +don't know how it works.

+

"Some tweeria stats
+windows"

+

Another thing you can do to interact with your character is using spells. For +that, you need to buy on the market first, and when you have them equipped, +you can cast one by tweeting !<spell shortcut> on a given tweet, the game +will use itautomagically.

+

Oh, did I mention that also have achievements?

+

"The beautiful
+map"

+

As I've said, it surprised me how the most basic idea can be developed into a +very enjoyable game. Unlike ogame, travian, and its brothers, you don't +need to check the site every minute. +But to be honest… I tweet more often since I play Tweeria.

+

If you want to check it out follow this link and join the world of +tweeria. You'll help me getting an +achievement! :D

+ + +
+ + +
+
+ + + + +
+

Weekly project status: Dropping projects is hard

+
+ Published on January 12, 2013 +
+ +
+ +

+

Since I wrote the last post of +2012 I have been wondering if I +could finish -or at least, work- on all the projects or experiments I wanted +to. The answer was easy: no. I just don't have enough time for all the +stuff I want to do, so I have made some decisions about my projects.

+

Project herobrine …dropped!

"Early draft of Project
+Herobrine"

+

The first time I did something about this project was like 2010, as some of +you have guessed by the name of the project, its minecraft related. It was +intended to be a wowhead-like minecraft database but not only on PC.

+

Some features I wanted:

+
    +
  • Developed with django, returning json objects to the client.
  • +
  • Client MVC based with BackboneJS
  • +
  • Responsive design -so you can check with your tablet while play on your computer-
  • +
  • "no refresh" -backbone-
  • +
  • WebGL/Canvas block rendering
  • +
  • JS Redstone circuit maker
  • +
  • JS Dye maker
  • +
  • Homepage with random background featuring user's screenshots (above)
  • +
  • Interactive crafting/brewing/…
  • +
+

Finally I have to say goodbye to this jewel -and it's really hard because I +love minecraft and I wanted this to happen- because of various reasons: +minecraftwiki already contains a lot of +information -and it's really crowded-, the barrier of contents -I have to type +in all the minecraft items, blocks, biomes, etc- and that this wasn't really a +technical challenge -actually, some things are, but most of it are just +database relations and stuff-.

+

I want to prepare a future post with all the work I made on this project. +There's not much code but a lot of drafts and ideas that could help someone.

+

Project Serenity …dropped!

This was intended to be a way to simplify my jenkins business. Since I need a +lot of tasks like: compile, minify, copy, deploy, upload, test… I wanted an +app so I just define everything I need on a YAML file and call the app with +serenity <task>.

+

I have some drafts built, a base YAML file, and some features planned like +integrated tasks, custom tasks in the YAML file, configuration…

+

Haven't coded for this one yet, but fortunately I heard about +grunt who may be something very close at what I wanted +this one to be.

+

ZombiePress (github)

…dropped!

+

It's obvious. I was making my own blog software but since now I'm a proud +octopress user this is no longer needed. I will keep the repo online just for +making me feel nostalgic in the future.

+

BlueBird …dropped!

For all the iPad users… remember when Twitter changed the UI of the app? Did +you remember the old one? I do. The new interface is total crap, the other +was simply brilliant, and for me it was near the best one for an iOS app. I +was hoping to get a clone working in javascript, but my knowledge of touch +screens is not that good, I need to study more on the matter and thenmaybe +I will try again, but I'm pretty sure some javascript guru will do something +before that happens.

+

Project Amaranth

The bigger brother. Recently I started a Vampire: Dark Age game with some +friends and it remembered me to when I played rolegames over IRC. I started +thinking that a online interface for roleplaying will be nice to have, because +you can also use it in a live session to whisper, draw, etc. The brainstorm +started quick enough for me to consider making it.

+

Project RTC

Just born! -yesterday :P-. I want to make some kind of webRTC site to have +conversations without the need of register, just create a conversation, get a +link and you are set. It's more an experiment than a project itself.

+

Uvepe8 (github)

I'm very proud -in a useful way- of this one and of course I'm maintaining it.

+

For the ones who don't know, its sort of video-to-html5-canvas, a mix +between apple's and sublime text's, but mines support transparency -I needed +it-.

+

There are some features I want to implement shown on the README file and a +full code review.

+

Dharma (github)

An application to check for 404 links on websites, a lot of things could be +added to this, but for now is for playing around with threading, gevent and +that kind of things.

+

I have some other things in mind I want to try, but that deserves another +post -which is already in the works-.

+

Stay tuned for more updates, and as always, anything you want to say: comment, +tweet, mail or shout at me!

+ + +
+ + +
+
+ + + + +
+

2013

+
+ Published on December 31, 2012 +
+ +
+ +

According to the Gregorian calendar, a new year is coming.

+

I'm not gonna waste my time -nor yours- making promises, wishing things and +all that crappy stuff. 2012 has been good and bad, I want 2013 to stay that +way, but I will keep that to me and I'm going to expose what I've thought +about the blog and what I want to do with it during 2013.

+
    +
  • First of all, the #AppSunday thing: doing it. I've missed the last two because of the date and also I wasn't really in the mood to write a word either. I really want to do it, so I will keep writing a Sunday post about apps and stuff as long as I've something about to write.

    +
  • +
  • As for new technologies, the reason I do not write too much about developing is because I do not think I'm a good programmer. I can't think I'm either good nor bad for something I love. I develop just because I enjoy it, as I've the bless that it's also my job. But after a lot of thinking, I'm going to post some micro-entries about new things I'm using -that could be things you already know long time ago- like PaaS services, libraries and stuff in general. I've a draft about how to copy a mysql record with one SQL statement, for example. If people like the posts as I like writing them, I will keep on with it.

    +
  • +
  • Also, this last year has been really… complete? I've started a lot of new projects -I really mean it, a lot of things whisper around my mind and some of it already have drafts and time invested on them-, so I've thought writing about its evolution. I don't know if I will make individual posts of each project or a weekly summary of all of them -or at least the ones I've worked that week-, but I want to share experiences, problems, solutions, technologies, code… with you.

    +
  • +
  • I still don't know if I will write personal experiences/opinion posts. I assumed that I will decide it when the time comes.

    +
  • +
  • There won't be a "What I've done in the last six months" post anymore. The one that is already in the blog will be purged when the translation is completed.

    +
  • +
+

Now, get off the screen, eat a lot and get drunk. Today is the day.

+

Happy new year!

+ + +
+ + +
+
+ + + +
+ +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/page/14/index.html b/blog/page/14/index.html new file mode 100644 index 0000000..4cb4b8d --- /dev/null +++ b/blog/page/14/index.html @@ -0,0 +1,209 @@ + + + + + Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + +
+

My SublimeText 2 workspace

+
+ Published on December 21, 2012 +
+ +
+ +

Package Control

Essential. Install this and forget about downloading files, updating, … Choose +to use or not every other plugin, but this one is mandatory. Just install it.

+

Soda theme

The best theme I've seen for SublimeText. It's really clean and elegant. Don't +forget to use it's custom colors too!

+

"Soda
+theme"

+

SublimeLinter

Highlight potential errors using lint programs so you can keep your code +clean.

+

"Example of
+SublimeLinter"

+

SublimeCode Intel

Helps with autocomplete, allows jump-to and displays information of the +highlighted function on the status bar.

+

"Example of SublimeCode
+Intel"

+

SublimeRope [Python only!]

Add a lot of IDE-like features to python developers thanks to the rope +library.

+

"Example of
+SublimeRope"

+

Git & GitGutter

The first one is a tool to integrate git commands onto the command palette, +the second one inserts an icon in the gutter area whether a line has been +modified, added or removed.

+

"Example of
+GitGutter"

+

SideBarEnchancements

Add tons of functions to the sidebar contextual menu!

+

"SidebarEnhancements contextual
+menu"

+

AdvancedNewFile

This is the best. Create a new file just with a key combination, no popups, no +nothing. Just press CMD+ALT+N, write the full path -relative to your +project path- of the file you want to create and press enter.

+

"Example of
+AdvancedNewFile"

+

I use some other plugins, but this is my top. Do you use other really good +plugins not listed here? Tell me!

+ + +
+ + +
+
+ + + + +
+

HowTo: OS X screenshots without shadows

+
+ Published on December 20, 2012 +
+ +
+ +

The beautiful shadows that OS X brings to screenshots are good in some ways or +depending the purpose of the screenshot itself. But for other things are a +pain in the ass.

+

After some research I've found multiple ways to get rid of that shadows

+

1) The default setting

Since the terminal command allows you to deactivate the shadow I assumed that +there could be some defaults option for the same purpose. And it is!

+

With this two commands you can use the normal keybinds to do shadowless +screenshots:

+
defaults write com.apple.screencapture disable-shadow -bool true killall SystemUIServer`
+
+

To revert to the original status:

+
defaults write com.apple.screencapture disable-shadow -bool false killall SystemUIServer
+
+

2) The Grab utility

Open the Grab.app: Applications > Utilities > Grab, and under the Capture +menu you will find the Window option.

+

You can also use the SHIFT+CMD+W keybind -while Grab.app is focused-.

+

3) The terminal way

OS X provides us with the screencapture command, so we can hack around and +build our own scripts. A simple one that allows interactive capture without +shadow:

+
screencapture -i -o filename.png
+
+

A more complete one that saves the screenshot on the desktop with the datetime +as filename:

+
screencapture -i -o ~/Desktop/screenshot_`date +%Y%m%d_%H%M%S`.png
+
+

These are some ways I found. You can play around and make your own bash or +Automator scripts and improve it to your needs.

+

Hope this helps!

+ + +
+ + +
+
+ + + + +
+

Amazon S3 bucket public read policy

+
+ Published on November 23, 2012 +
+ +
+ +

After migrating the blog to a PaaS service I had a proble that the disk space +was volatile and I had to store the images and binary files on another server +or CDN. After thinking for a while I decied to give a try to amazon S3.

+

Created a bucket that I'm going to use as CDN for now on, but geeking around I +saw that the permissions are modified by file, not by folder/bucket. Searching +aroung the docs I found the policies, that are JSON strings wich include +properties for the entire bucket.

+

For making a read-only public bucket you need this:

+
{
+  "Version": "2008-10-17",
+  "Statement": [{
+    "Sid": "AllowPublicRead",
+    "Effect": "Allow",
+    "Principal": {
+      "AWS": "*"
+    },
+    "Action": ["s3:GetObject"],
+    "Resource": ["arn:aws:s3:::/*"]
+  }]
+}
+
+

Replace <bucket name> for yours and apply changes. With this the entire +bucket will be publicy accesible, but if you want to be more restrictive, you +may specify a subfolder:

+
"Resource": ["arn:aws:s3:::<bucket>/<path>/*"]
+
+

Hope this helps.

+ + +
+ + +
+
+ + + +
+ +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/page/2/index.html b/blog/page/2/index.html new file mode 100644 index 0000000..4596393 --- /dev/null +++ b/blog/page/2/index.html @@ -0,0 +1,169 @@ + + + + + Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + +
+

September 2021

+
+ Published on October 02, 2021 +
+ +
+ +

A picture of a beach about 45 minutes walking from my home

+
I love having this at _somewhat_ walking distance. Can you spot my shadow?
+

Read more »

+ +
+ + +
+
+ + + + +
+

August 2021

+
+ Published on September 12, 2021 +
+ +
+ +

My birthday cake!

+
Imagine waking up to this every day... sadly it only happens on vacation.
+

Read more »

+ +
+ + +
+
+ + + + +
+

July 2021

+
+ Published on August 01, 2021 +
+ +
+ +

My birthday cake!

+
On the good days that actually seems like summer we get some beaufiful landscapes like this.
+

Read more »

+ +
+ + +
+
+ + + + +
+

June 2021

+
+ Published on July 01, 2021 +
+ +
+ +

My birthday cake!

+
This was technically last month, but celebrated on June 1st. Happy cake day to me!
+

Read more »

+ +
+ + +
+
+ + + + +
+

May 2021

+
+ Published on June 01, 2021 +
+ +
+ +

image alt

+
The beauty of the north
+

Read more »

+ +
+ + +
+
+ + + +
+ +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/page/3/index.html b/blog/page/3/index.html new file mode 100644 index 0000000..078b213 --- /dev/null +++ b/blog/page/3/index.html @@ -0,0 +1,176 @@ + + + + + Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + +
+

April 2021

+
+ Published on May 01, 2021 +
+ +
+ +

image alt

+
Finally went to a good enough place to try out my drone filming skills!
+

Read more »

+ +
+ + +
+
+ + + + + + + + + +
+

February 2021

+
+ Published on March 01, 2021 +
+ +
+ +

A month for changes! A lot of daily grind and planning new stuff for the future.

+

We still can't move freely around but restrictions are leaving us step by step, let's see how long it lasts here, at least I'm pretty happy that I can go to my favourite coffee shop even if it's for takeaway. After a few reluctant weeks our avocado started to rise! I'm trying to track it's growth with daily pics, but oh man it grows SO fast.

+

image alt

+
Our avocado is blooming nicely :)
+

Read more »

+ +
+ + +
+
+ + + + +
+

January 2021

+
+ Published on February 01, 2021 +
+ +
+ +

Madrid snowed from the Coppernicus

+

Image credit: European Union, Copernicus Sentinel-2 imagery

+
+ +

Read more »

+ +
+ + +
+
+ + + + +
+

December 2020

+
+ Published on January 01, 2021 +
+ +
+ +

Oh boy, here we go again. Christmas season is with us one more time.

+

For anyone that doesn't know me even a little: I don't like Christmas. It is the most consumerist period of the year, everything is packed with people (even in 2020, how's that even possible!). The only good thing is you can meet with some people even if it is a few meters away in a park freezing yourself.

+

image alt

+ +

Read more »

+ +
+ + +
+
+ + + +
+ +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/page/4/index.html b/blog/page/4/index.html new file mode 100644 index 0000000..39e82f3 --- /dev/null +++ b/blog/page/4/index.html @@ -0,0 +1,185 @@ + + + + + Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + +
+

Self-hosting my home with Home Assistant (part 1)

+
+ Published on December 20, 2020 +
+ +
+ +

Even if I've been a Home Assistant's user for quite some time I have never dedicated myself to have a truly stable and dedicated service at home. I always treated it more like a pet project than anything else, but this is changing now.

+

I have a fair amount of Smart Devices around the house and just as you come to expect they come from different companies, protocols and sizes. Each day it passes I'm more and more concerned about my privacy and the value of the hardware I do not truly own.

+

With this in mind I have started the journey of self-hosting! Which to put it simply is... every device that is in my home (with a few exceptions that you'll see later) will be controlled by this Home Assistance instance.

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

November 2020

+
+ Published on December 01, 2020 +
+ +
+ +

Checking my images it seems this month I didn't have anything remarkable from the outside so... I just +wanted to share that this month I have given myself some very nice meals and I improved the +Katsu Curry recipe quite a bit. I'm not good at cooking by any means, but the relax you get +from listening to music while cooking some healthy food is pretty good.

+

This month I've made myself a lot of nice meals

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

Setting up TP-Link's Archer C5400 in AP mode

+
+ Published on November 08, 2020 +
+ +
+ +

I recently bought a firewall router for home to improve our general stability (ISP provided routers kinda suck) and +improve security at home. The more smart devices connected to the network the more concerned I become of this kind +of stuff.

+

In this case my problem was very simple: I have the firewall router and the access point router. My access point +router (TP-Link's Archer C5400) exposes it's own DHCP server over it's own LAN segment. For my firewall router to +work properly it has to recognise all devices on the network and with the access point creating it's own LAN, +everything connected via Wifi was showing up in the firewall as one device (the access point router).

+

Archer C5400

+ +

Read more »

+ +
+ + +
+
+ + + + + + + + + +
+

Final Fantasy VII: Remake - My review

+
+ Published on October 15, 2020 +
+ +
+ +

I started the out of pure hype and even bought -again- a PlayStation 4 in the process, but haven't finished it until recently due to time constraints, lack of interest and having lost the initial momentum.

+

I will try to to a quick review of what I feel playing it and if there's something spoilery it will be obscured to avoid accidents; same with the pictures.

+

Final Fantasy VII: Remake Slash Screen

+ +

Read more »

+ +
+ + +
+
+ + + +
+ +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/page/5/index.html b/blog/page/5/index.html new file mode 100644 index 0000000..8a391b1 --- /dev/null +++ b/blog/page/5/index.html @@ -0,0 +1,190 @@ + + + + + Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + +
+

September 2020

+
+ Published on October 01, 2020 +
+ +
+ +

Very cool month, finally managed to have some hard earned holidays! I had the privilege of +going with some friends (even some I hadn't seen in a long time!) to an apartment near the beach, +and oh boy did I need that. I came back fully charged! Apart from that, not much movement in any +area.

+

Another picture of me at the beach, this time in Malaga

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

August 2020

+
+ Published on September 02, 2020 +
+ +
+ +

Slowly going back to routine, this month has been well spent going out when possible and spending +time with friends and family, a thing that we couldn't do properly for some time now. Not much +"progress" on anything else for that matter.

+

A picture of the beach

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

July 2020

+
+ Published on August 02, 2020 +
+ +
+ +

Summer is here!

+

Even without restrictions or quarantine is has been a weird month. Cases here are going up and down, +I don't want to go back to the gym (and I think I won't until next year), some restaurants and cafe +have closed permanently and the ones that are still standing are usually full (which is good). We're +just trying to go back to normal, step by step, and having some friends stay at home a few days +helped a lot.

+

A picture of myself from behind walking through a port

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

June 2020

+
+ Published on June 02, 2020 +
+ +
+ +

We can travel now! Quarantine restrictions have been raised here, and we can go visit family. It's weird +seeing people with masks, cleaning its hands and so on (though not everyone eveytone). It gives me some Japan +nostalgia.

+

It hasn't been a productive month, and I don'tknow where time went. And that made me realize that I can't +do everything I want to do... I have to start dropping tasks from all kinds of hobbies and organize myself +way better. That is my homework for this summer.

+

On the road, finally

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

May 2020

+
+ Published on June 01, 2020 +
+ +
+ +

I can go out now. In those rare days with good weather here I can +take pictures like this.

+

A picture from the beach

+ +

Read more »

+ +
+ + +
+
+ + + +
+ +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/page/6/index.html b/blog/page/6/index.html new file mode 100644 index 0000000..d984585 --- /dev/null +++ b/blog/page/6/index.html @@ -0,0 +1,209 @@ + + + + + Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + +
+

April 2020

+
+ Published on May 01, 2020 +
+ +
+ +

Weird month. It seems that quarantine finally caught up with me (and my +sleep schedule!). Since I cannot go to sleep when I want, I'm trying a +different approach... reading something at bed and waking up later. So +far so good.

+

This month I didn't read many articles/books (in fact, any book) but in +return I came back to reading some Manwha I had in my backlog. And I +have also invested some time in a few projects I'm currently +incubating.

+

I'm also on my way to self-host my own stuff, trying out software and +servers architectures so I can dog-food some of the stuff I use at +work, hopefully.

+

Screenshot of Final Fantasy VII: Remake main menu screen

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

March 2020

+
+ Published on April 01, 2020 +
+ +
+ +

#StayAtHome #StopTheCurve

+

As everybody know (unless you live under a rock) this month the COVID-19 +hit hard on some European's countries, including mine. I have spent half +of the month staying inside in quarantine.

+

It's a weird sensation that gives you perspective even to the point that +going out to take the trash is a special (but dangerous, since people +here aren't taking this seriously) thing to do.

+

The good thing is that I had some time to move some thing out of my +backlog and I have no excuse to study some things now.

+

Since most pictures are taken from my living room window these days is +better to share how I spend time with friends. This is a screenshot of +Tabletop Simulator 1 while I play Zombiecide 2 3 +with my friends.

+
+

Playing Zombiecide with some friends online

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

February 2020

+
+ Published on March 01, 2020 +
+ +
+ +

After lots of flights and traveling around came the calm. A month to get +everything in order, sort my routine and start gettings things done.

+

The beach after a walk

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

January 2020

+
+ Published on January 31, 2020 +
+ +
+ +

Munich in January

+

I didn't have much time for anything on January since I have spent more +time traveling than anything else: Being on my homecity for christmas, +traveling for work two times and then another conference just because.

+

At least the planes gave me some time to read and finish some pending +things, though I hope next month is more relaxed.

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

2019

+
+ Published on January 01, 2020 +
+ +
+ +

This is a brief summary of my last year in random order:

+
    +
  • Gained back my reading habits. I set myself a safe goal of 6 books and ended up reading 8.
  • +
  • Moved to an apartment with my player 2.
  • +
  • Gave away/sold a lot of my stuff in the process.
  • +
  • Got the habit of doing some regular exercise.
  • +
  • Lived in Japan for almost three months.
  • +
  • Said goodbye to my fellow coworkers of Reply.ai (I will miss you!)
  • +
+

Photo of Mt. Fuji made in my stay

+ + +
+ + +
+
+ + + +
+ +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/page/7/index.html b/blog/page/7/index.html new file mode 100644 index 0000000..3c4d6e4 --- /dev/null +++ b/blog/page/7/index.html @@ -0,0 +1,292 @@ + + + + + Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + + + + + + + + + + + + + + + + +
+

I finished playing Untitled Goose Game

+
+ Published on September 27, 2019 +
+ +
+ +

Untitled Goose Game Logo

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PlatformNintendo Switch
Started2019/09/20
Finished2019/09/26
My rating7/10
Completed everything?No, all main to-dos and a few extras.
+ +

Read more »

+ +
+ + +
+
+ + + + + + + + +
+ +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/page/8/index.html b/blog/page/8/index.html new file mode 100644 index 0000000..b6cc026 --- /dev/null +++ b/blog/page/8/index.html @@ -0,0 +1,208 @@ + + + + + Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + +
+

A week for personal development

+
+ Published on December 26, 2016 +
+ +
+ +

Sadly, over time, my programming time at work is becoming less frequent. Doesn’t mean I don’t do stuff it’s just little by little most my time is spent on management things. Since I don’t want to get stalled and to give myself focus into other things I got last week off to see whatever I was capable of making. To my surprise it was time well spent.

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

New site

+
+ Published on December 21, 2016 +
+ +
+ +

After a really long time I finally managed to spend some time redesigning and moving my blog to another platform, everyone already know that I tried really hard to create an editor that satisfied me while the answer was simpler.

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

The penguin trials after two weeks

+
+ Published on April 27, 2016 +
+ +
+ +

It's been two weeks already and I will make a quick post with two subjects: +the stuff broken that needed to be fixed (from my point of view) and +improvements to the workstation that made my life easier.

+

After other two weeks I will post a summary with the good and bad parts.

+ +

Read more »

+ +
+ + +
+
+ + + + +
+

The penguin trials

+
+ Published on April 11, 2016 +
+ +
+ +

I've been using OS X for my workstation environment for about five or six +years now. I always say (and believe to this moment) that OS X is the most +comfortable environment for work.

+

It has an stable window manager, a terminal that does not suck and lot's of +software related to my daily activities. I can reinstall and have a fully +working environment from scratch in an hour or so (no hdd dupes, a full OS +installation).

+

I've been really comfortable with this for a long time, and with the last +features coming to windows +I thought that it was time to refresh my GNU/Linux rants and give it a try +again like I did to Android not so long ago.

+

So, here's the deal: Starting today I'm going to spend one month on a linux +environment at work to see how it goes. I think the starting transition will +be easier since at work most of the company tools are online or done via ssh, +and my most used app is emacs and I use it directly on a terminal.

+

The chosen penguin is: AntergOS (based on Arch +Linux, it simplified me the installation process) +with i3 as the window manager. I always wanted to try a +tiling wm so this is the best moment to do so, and Arch was my favourite OS +back at the time and I will know how to use most of the internals if it hasn't +changed a lot.

+

+

For now I just have installed my most common apps and I haven't tuned a bit +apart from the screensaver. I'm sure this will change in no time. I will try +to make weekly or biweekly entries with updates, or if things don't get out of +control just a summary after a month.

+

Let's see how it goes!

+ + +
+ + +
+
+ + + + +
+

2016 updates

+
+ Published on April 08, 2016 +
+ +
+ +

It's sad but I always end up not writing in the blog for some reason. I will +post here a short TL;DR of what happened in the last months and some of the +stuff I want to do for the site (and what I've already done).

+
    +
  • First of all, I got promoted at my job (this was like... months ago!) which left me with even less time that before for personal stuff. I can't believe I'm saying this but when I get out of the office the last thing I want to do is sitting in front of my computer again.
  • +
  • Good part, I have been trying all the stuff at work I couldn't before and adding goodies to the dev team (automatic code reviews, unit testing, deployments, etc)
  • +
  • Bad stuff: now I develop less than before. :_
  • +
  • Also, I wasn't comfortable with how the editor on the site worked (it's a CKEditor) because I'm a big fan of markdown so I wasn't eager to do nothing until some day I did a clumsy implementation to support markdown conversion to HTML to the blog. I also added some other goodies.
  • +
  • More stuff to the mix? I got pretty much overwhelmed with all the things I had to/want to/should do on a daily basis so my workflow was chaotic. I have been trying new habits to sort everything out and now I'm more or less comfortable with the results. And I will write an entry about that :)
  • +
  • Related with the last one now I'm not giving up on reading all the stuff in "the read later vault" which until not so long ago was filled with diverse stuff and articles came in but not out.
  • +
  • I play a bit now! Since I have thoughts and days in order now I can rest from time to time to play some videogames. It was time to remove the dust from my 3DS.
  • +
+ + +
+ + +
+
+ + + +
+ +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/blog/page/9/index.html b/blog/page/9/index.html new file mode 100644 index 0000000..f042eee --- /dev/null +++ b/blog/page/9/index.html @@ -0,0 +1,318 @@ + + + + + Blog | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ + + + +
+

Manga recommendation: The Gamer

+
+ Published on August 13, 2015 +
+ +
+ +

+

Summary

Han Jee-Han, a normal high school student, suddenly develops a special power +where his entire world is shifted into a game-like setting. He can see the +power levels of people, look at the stats of a seemingly normal item, get +abilities, and even level up! Follow Han Jee-Han as he discovers how to use +this power, and maybe even where it came from.

+

Type: Manhwa +Chapters: 90+ (ongoing) +Genre: Action, Adventure, Comedy, School Life, Shounen, Supernatural +Story: Sung San-Young +Art: Sang-Ah

+ + +
+ + +
+
+ + + + +
+

Tmux basics

+
+ Published on August 04, 2015 +
+ +
+ +

+

Discovered it not a long time ago (and now replaced with the experimental +version of iterm2 because of goodies), +tmux deserves a lot of attention because it have lots of potential.

+

TMUX stands for Terminal Multiplexer. It lets you switch easily between +several programs in one terminal, detach them (they keep running in the +background) and reattach them to a different terminal. And do a lot more. +Yeah, they sell themselves well.

+

For the novices, it lets you have panels (split terminals) and windows just +with some keybinds, detaching from them (so they keep running) and with the +possibility of storing configurations for certain tasks, in which you need to +open a running server and editor and some watcher at the same time, just with +a command.

+

For example, if you are like in the top screenshot, pressing CTRL+b % +CTRL+b " changes the layout to this:

+

+

And those numbers with a tilde at the bottom? The open windows. You can open +more pressing CTRL+b c, like this:

+

+

This are the two basic things you will use everyday. Of course, there are +more stuff you can do, but for the basics I will list the more +frequent keybinds here to start using it right now.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Meta keyCTRL+b
Split pane horizontalMeta+"
Split pane verticalMeta+%
Swap paneMeta+o
Kill paneMeta+x
Toggle focus on current paneMeta+z
Show pane numbersMeta+q
Press a the number of the pane you want to focus when shown.
Break pane into windowMeta++
Restore window to paneMeta+-
Change pane layoutMeta+spacebar
Create new windowMeta+c
Switch to window #xMeta+<number>
Kill windowMeta+&
Next windowMeta+n
Previous windowMeta+p
List windowsMeta+w
Rename windowMeta+,
Find windowMeta+f
+ + + +
+ + +
+
+ + + + +
+

Manga recommendation: Eden no ori

+
+ Published on July 29, 2015 +
+ +
+ +

Dice

+

Summary

Akira and his classmates are travelling on a plane when it crashes onto an +island inhabited by species thought to have been extinct. The situation +becomes increasingly desperate as some of Akira's classmates are eaten alive, +while some kill others in desperation. Now Akira and a few other survivors are +trying to survive what seems to be a horrible nightmare.

+

Chapters: 185 (finished) +Genre: Action, Adventure, Comedy, Drama, Ecchi, Horror, Mystery, Psychological, Romance, Shounen, Tragedy +Story: Yamada Yoshinobu +Art: Yamada Yoshinobu

+ + +
+ + +
+
+ + + + +
+

Emacs: Day zero

+
+ Published on July 23, 2015 +
+ +
+ +

They tricked me.

+

I was confortably on my Atom editor when I had to open this ugly thing.

+

+

I'm trying to make the change. Also, to make things easier I switched my +layout to US since all my servers have that keyboard layout but... my muscle +memory is really good, so I still miss a lot.

+

After a basic configuration yesterday, I thought that the best way to achieve +this was to change completely from one to another and that's what I've done, +work the entire day with this. At first I was slowed down a bit because I had +to configure some keybinding I was used to and install the basic addons I use +the most (and setup them emacs style), but after a short period I was mostly +used to the harm of my little finger. It still hurts.

+

It's a long way to go and this is only day zero but I will keep writing posts +every one or two weeks with my improvements as a newbie guide to emacs.

+

Also, my UI now looks more or less like this:

+

+ + +
+ + +
+
+ + + + +
+

Manga recommendation: One-punch man

+
+ Published on July 22, 2015 +
+ +
+ +

Dice

+

Summary

In this new action-comedy, everything about a young man named Saitama screams +"AVERAGE," from his lifeless expression, to his bald head, to his unimpressive +physique. However, this average-looking fellow doesn't have your average +problem... He's actually a superhero that's looking for tough opponents! The +problem is, every time he finds a promising candidate he beats the snot out of +them in one punch. Can Saitama finally find an evil villain strong enough to +challenge him? Follow Saitama through his hilarious romps as he searches for +new bad guys to challenge!

+

Chapters: 46 (ongoing) +Genre: Action, Comedy, Parody, Sci-Fi, Super Power, Supernatural, Seinen +Story: Yusuke Murata +Art: ONE

+ + +
+ + +
+
+ + + +
+ +
+ +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + + + diff --git a/feed.xml b/feed.xml new file mode 100644 index 0000000..a8a0891 --- /dev/null +++ b/feed.xml @@ -0,0 +1,1864 @@ + +Felipe Martin's Blogurn:uuid:ceb84de2-e3c9-3d8c-8c2f-48a83004373d2021-12-01T00:00:00ZNovember 20212021-12-01T00:00:00Zurn:uuid:c5652c16-0570-32b9-9607-f8e1b4418435<p><img src="/blog/2021/12/01/november-2021/image-360.jpg" alt="Ramen dish from Ramen Kagura in Madrid, Spain"></p> +<div class="text-center">Mandatory visit to Ramen Kagura when visiting Madrid.</div><!-- readmore --> + +<h2 id="books">Books</h2><p>All in with comics:</p> +<ul> +<li><p>Ongoing with <a href="https://www.goodreads.com/series/57193-one-piece"><strong>One Piece</strong></a>: Volume 93, I'm almost there! A weekend without internet did marvels to my progess here :)</p> +</li> +<li><p>Read <a href="https://www.panini.es/shp_esp_es/marvel-must-have-civil-war-smust001-es01.html"><strong>Marvel's Must Have: Civil War</strong></a></p> +</li> +<li><p>Started <a href="https://www.webtoons.com/en/thriller/hellbound/list?title_no=3598"><strong>Hellbound</strong></a> to check if it's any better than the TV Show.</p> +</li> +</ul> +<p>Also read <a href="https://www.viz.com/ask-iwata"><strong>Ask Iwata</strong></a></p> +<h2 id="tvshows-and-movies">TVShows and Movies</h2><ul> +<li><p>"Finished" <a href="https://www.crunchyroll.com/es-es/one-piece"><strong>One Piece</strong></a>: Reached the end of the official spanish dub. We've replaced this with <a href="https://www.primevideo.com/detail/0HBVL22LMA40B0XBY30RUOC9EH/"><strong>Bones</strong></a></p> +</li> +<li><p>Up to date with <a href="https://tv.apple.com/us/show/for-all-mankind/umc.cmc.6wsi780sz5tdbqcf11k76mkp7"><strong>For all mankind</strong></a></p> +<p>Already finished and with a nice cliffhanger for the next season. Didn't though I would enjoy a drama this much. I may be getting old.</p> +</li> +<li><p>Watched <a href="https://www.netflix.com/title/81435684"><strong>Arcane</strong></a></p> +<p>I thought I wouldn't enjoy this one since I'm not a League of Legends player (I've only player a couple matches like ten years ago...?) but I <em>loved</em> it. The art style is top-notch, the story, even going a bit fast at some points it was well explained through amazing visual compositions and the soundtrack is on par as well, loved how they used the mix of visuals and music to tell how <span class="spoiler">Ekko and Jinx played in their fight at the end of the show<span>. Can't wait for more seasons or other shows in this universe.</p> +<p>I'm assuming that people that know the world heroes from the games would know who's <span class="spoiler">not going to die</span> so I'm glad I'm not in that group on this one (though you could mostly tell anyway...). The same way I didn't get a lot of easter eggs on the show that current players mostly did.</p> +</li> +<li><p>Watched <a href="https://www.netflix.com/title/81256675"><strong>Hellbound</strong></a></p> +<p>As a note, I only watched the first chapter in the usual way you would watch a TV show (1x in VO). The rest I put on the English dub and a 1.5x speed so I could go though it offscreen while I did other things.</p> +<p>Not sure about why but I didn't like this one at all, and I wouldn't watch anything else if Netflix release more in the future. It's a very good premise but not very enjoyable on a TVShow I guess, everything happens so quickly and the impact didn't feel real. I started reading the manwha to check if it is any better.</p> +</li> +<li><p>Started <a href="https://www.disneyplus.com/series/hawkeye/11Zy8m9Dkj5l"><strong>Hawkeye</strong></a></p> +<p>The next from the Marvel universe. It seems pretty simple with a lot of comedy so far. Argument-wise doesn't seem like much at the moment.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p>Started <a href="https://store.steampowered.com/app/367520/Hollow_Knight/"><strong>Hollow Knight</strong></a></p> +<p>Had this on my backlog for years and since the Steam Deck is now officialy delayed and I won't get mine until next summer as the soonest I started with it the other day (so I haven't gotten very far). The art style is amazing and I still need to get used to the controls, but everyone says that this is a masterpiece so I had to start at some point.</p> +</li> +<li><p>Still ongoing with <a href="https://store.steampowered.com/app/736260/Baba_Is_You/"><strong>Baba is you</strong></a>. Since we don't play much we are going veeeery slowly.</p> +</li> +<li><p>Tried <a href="https://www.xbox.com/es-ES/games/marvels-avengers"><strong>Marvel's Avengers</strong></a> but it had heavy frame drops on my PC so I just stopped trying.</p> +</li> +</ul> +<h2 id="articles-https//t-me/fmartingr-articles"><a href="https://t.me/fmartingr_articles">Articles</a></h2><ul> +<li><a href="https://erickhun.com/posts/nft-misconception-image-arent-on-blockchains/">NFT misconception: JPEG aren't on the Blockchain</a></li> +<li><a href="https://www.farhadg.com/my-genius-roommate">How My Genius Roommate Changed My Perspective</a></li> +<li>(video) <a href="https://youtu.be/esIL1W_QBns">Mew's Origins: A Story of Secrets, Rumors &amp; Legends Ft. mafmoefoe (Pokemon)</a></li> +<li>(video) <a href="https://youtube.com/watch?v=bJMFXdLQRyo&amp;feature=share">Nintendo 64DD: The REAL Reason it FAILED &amp; Nintendo's Would-Be Plans</a></li> +<li><a href="https://www.simplethread.com/20-things-ive-learned-in-my-20-years-as-a-software-engineer/">20 Things I've Learned in my 20 Years as a Software Engineer</a></li> +<li><a href="https://solar.lowtechmagazine.com/2018/09/how-to-build-a-lowtech-website/">How to Build a Low-tech Website?</a></li> +<li><a href="https://hynek.me/articles/semver-will-not-save-you/">Semantic Versioning Will Not Save You</a></li> +<li><a href="https://blog.cloudflare.com/what-is-web3/">Web3 — A vision for a decentralized web</a></li> +<li><a href="https://drewdevault.com/2021/11/16/Python-stop-screwing-distros-over.html">Python: Please stop screwing over Linux distros</a></li> +<li><a href="https://zachholman.com/posts/only-90s-developers/">Only 90s Web Developers Remember This</a></li> +<li>(video) <a href="https://youtu.be/CCOdQsZa15o">The Houses that Can't be Built in America - The Missing Middle</a></li> +<li><a href="https://notes.eatonphil.com/implementing-zip-in-go-unzipping.html">Implementing ZIP in Go</a></li> +<li><a href="https://ruurtjan.medium.com/understanding-kafka-with-factorio-74e8fc9bf181">Understanding Kafka with Factorio</a></li> +<li><a href="https://surfingcomplexity.blog/2021/11/28/i-have-no-idea-what-im-doing/">I have no idea what I’m doing</a></li> +<li><a href="https://batsov.com/articles/2021/11/28/firefox-is-the-only-alternative/">Firefox is the Only Alternative</a></li> +<li><a href="https://blog.asciinema.org/post/smaller-faster/">4x smaller, 50x faster · asciinema blog</a></li> +</ul> +How I organize my Home Assistant automations2021-11-30T00:00:00Zurn:uuid:285cad25-43a3-3729-a8b3-de5d576f3c3e<p>Automations in Home Assistant are the best thing after the cocoa discovery, I use them a lot for many different things and I'm always wondering how to solve the <em>first world problem</em> of the day. The hassle with it is that apart from a list and the search there are not much more options to filter, and when your automations grow it became a bit of a pain finding what you want.</p> +<!-- readmore --> + +<p>So the other day I decided to follow a "path" approarch to my automations. I'm using a subject, an action or element and then a description to name them:</p> +<blockquote><p><code>(subject) / (action/element) / (short description)</code></p> +</blockquote> +<p><img src="/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-list-360.png" alt=""></p> +<p>This way <em>Turn on the air purifier at night</em> became <code>air purifier / auto / turn on at night</code> and I can filter by <code>air purifier /</code> to get all the automations related to the air purifier, the specific automatic behaviour by <code>/ auto</code> (for this and other subjects), etc:</p> +<p><img src="/blog/2021/11/30/how-i-organize-my-home-assistant-automations/automations-filtered-360.png" alt=""></p> +<p>This is so much convenient than before though I'm sure I will keep iterating on this, at least now my list is ordered and I can easily find anything I want to toggle or edit.</p> +<p>I wonder how other Home Assistant users handle their automations, if you by any reason read this and have a better way, <a href="/about/">please let me know!</a>.</p> +Home Assistant battery levels at a glance2021-11-15T00:00:00Zurn:uuid:6a9e8b17-4ad4-3e57-b288-8c26bc1ceecb<p>I was talking recently about how many Zigbee devices are too many and how the most troublesome thing you can have is batteries dieing on you at the same time. If you install several devices at once and have it's batteries dead at the same it it's a bit of a hassle going to each one and replacing it (depending where you have them and how difficult is to replace).</p> +<!-- readmore --> + +<p>It came to me that if we could see the battery status of devices easily on a card this can be at least addressed by knowing which batteries are most discharged.</p> +<p>As context, since I'm usually playing with devices I use number as identifiers. For example, my motion sensors are named <em>Motion Sensor #X</em> (where <em>X</em> is an increasing number). This way it's ID is <code>motion_sensor_1</code> and it's entities <code>(entity type).motion_sensor_X_(attribute)</code>. I use this nomenclature everywhere so I can easily identify entities with the internal search (and because you need to have a method, always!).</p> +<p>So. I can get all entities that represent a battery by searching for <code>_battery</code> but I have no real means of translating that search into a card without <a href="https://github.com/thomasloven/lovelace-auto-entities">a third party component called <strong>Auto entities</strong></a>.</p> +<p>This card allows to <em>automatically populate lovelace cards with entities matching certain criteria</em> which is what I'm looking for, and it's pretty easy to use as well!</p> +<p>I have a card on my dashboard with this configuration to display battery statuses accross my entities:</p> +<div class="hll"><pre><span></span><span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">custom:auto-entities</span> +<span class="nt">card</span><span class="p">:</span> + <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">entities</span> + <span class="nt">title</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">Battery statusq</span> + <span class="nt">state_color</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">true</span> + <span class="nt">show_header_toggle</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">true</span> +<span class="nt">filter</span><span class="p">:</span> + <span class="nt">include</span><span class="p">:</span> + <span class="p p-Indicator">-</span> <span class="nt">entity_id</span><span class="p">:</span> <span class="s">&#39;*_battery&#39;</span> +<span class="nt">sort</span><span class="p">:</span> + <span class="nt">method</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">state</span> + <span class="nt">numeric</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">true</span> + <span class="nt">reverse</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">true</span> +<span class="nt">show_empty</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">true</span> +<span class="nt">unique</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">entity</span> +</pre></div> +<p>And this is how it looks:</p> +<p><img src="/blog/2021/11/15/home-assistant-battery-levels-at-a-glance/card-screenshot-640.png" alt="Auto entities displaying the battery levels of the different devices at home"></p> +<p>This card is very powerful, I already have a few other ideas on how to use it.</p> +<p>Check it out: <a href="https://github.com/thomasloven/lovelace-auto-entities">Auto entities card</a></p> +October 20212021-11-02T00:00:00Zurn:uuid:501d21b8-9067-3106-86b5-d94e4af78582<p><img src="/blog/2021/11/02/october-2021/image-360.jpg" alt="A picture of myself from the back while I try to take a picture of a nice river reflection from a building"></p> +<div class="text-center">A ninja picture of me taking a picture</div><!-- readmore --> + +<h2 id="books">Books</h2><ul> +<li><p>Ongoing with <a href="https://www.goodreads.com/series/57193-one-piece"><strong>One Piece</strong></a>: Volume 67+</p> +<p>I'm completely on fire with this. I bought all pending volumes and now I just need to get up until the last volume. I forgot many things of these last story arcs so I'm enjoying it a lot more now.</p> +</li> +<li><p>Finished <a href="https://www.webtoons.com/en/fantasy/dice/list?title_no=64"><strong>DICE</strong></a></p> +<p>I'm actually not sure if I liked the ending or not. Since I re-started the series not so long ago it seemed rushed to me, but it could be only a perception issue. I didn't like the character development on this last "games" but it surprised me how everything unfolded in the end. There's actually a last "epilogue" chapter that I haven't read yet and should be available today. Not sure what it could contain.</p> +<p>Anyway! It has been good overall, character development has been good (with some new characters and stories along the way), powers and usage are actually pretty interesting as well even though there are some very overpowered habilities in there. If you like similar stories you won't miss with this one.</p> +<p>I'm sorry <del>if</del> this fails as a review, but keep in mind that I started reading it years ago, so it is pretty difficult to get a complete picture to evaluate it.</p> +</li> +</ul> +<h2 id="tvshows-and-movies">TVShows and Movies</h2><ul> +<li><p>For lunch and dinner time <a href="https://www.crunchyroll.com/es-es/one-piece"><strong>One Piece</strong></a>: Reached Water 7 saga.</p> +</li> +<li><p>Finished <a href="https://www.disneyplus.com/series/the-bad-batch/4gMliqFxxqXC"><strong>Star Wars: Visions</strong></a></p> +<p>This one ended up lower than my expectations, mostly because the first episode was one of the (if not the) best. I love Trigger episodes becuase I loke their style and storytelling, but in most episodes there was a lightsaber here and there, and while I can understand that it's difficult to opt-out using force sensitive characters when they allow you to create and tell an official Star Wars story, I would have loved more without it.</p> +<p><strong>I</strong> believe I've said it more than once on other shows... these are inmense worlds with <strong>a lot</strong> of possibilities and we end up recurring to the basics because it is what please us the fanbase.</p> +</li> +<li><p>Finished <a href="https://www.disneyplus.com/series/what-if/7672ZVj1ZxU9"><strong>Marvel's What if...?</strong></a></p> +<p>Just amazing, and renewwd for a season two! I need to find out if some or more of this stories are available in the comics, I already bought one on a whim.</p> +<p>Next stop: Hawkeye.</p> +</li> +<li><p>Started <a href="https://tv.apple.com/us/show/for-all-mankind/umc.cmc.6wsi780sz5tdbqcf11k76mkp7"><strong>For all mankind</strong></a></p> +<p>My discovery of the month. I'm already at the last episode of the second season and I'm loving this show! At first I though that I wouldn't like it because it didn't have much <em>sci-fi thingies</em> but in the end it has just enough for it to be an amazing show. It's more a drama than anything else but you end up hating or empathizing with the characters, their decissions and eveything around them. 100% recommended.</p> +</li> +<li><p>Dropped <a href="https://www.disneyplus.com/series/y-the-last-man/6GhSTQBktm34"><strong>Y: The last man</strong></a></p> +<p>FX cancelled the series so there's no point anymore. Someone commented out that the comics are good so that could be the way to go.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p>Finished <a href="https://store.steampowered.com/app/1456880/ElecHead/"><strong>Elec Head</strong></a></p> +<p>I have been waiting on this since I saw a trailer somewhere on the internet and bought it the moment it released. It was crazy fun! Level design is amazing and the simple mechanics are just right. The only thing that game me the creeps is that there are some thing that you may just notice by pure chance. Since it's cheap and only a few hours of time, it's an obvious recommendation!</p> +<p><img src="/blog/2021/11/02/october-2021/elechead-360.png" alt="I achieved all Elec Head achievements. It wasn&#39;t easy at all!"></p> +</li> +<li><p>Here we go again... <a href="https://www.nintendo.es/Juegos/Nintendo-Switch/Animal-Crossing-New-Horizons-1438623.html"><strong>Animal Crossing: New Horizons</strong></a></p> +<p>The final update is coming and the player 2 and myself have come back to our islands to do some preparations. Since it's the last update this is most likely the last time I will get hooked to the game.</p> +</li> +<li><p>Still ongoing with <a href="https://store.steampowered.com/app/736260/Baba_Is_You/"><strong>Baba is you</strong></a></p> +</li> +</ul> +<h2 id="articles-https//t-me/fmartingr-articles"><a href="https://t.me/fmartingr_articles">Articles</a></h2><ul> +<li><p><strong>Tech</strong>:</p> +<ul> +<li><a href="https://fasterthanli.me/articles/beware-the-google-password-manager">Beware the Google Password Manager</a></li> +<li><a href="https://www.andrewjvpowell.com/articles/we-are-solar-powered/">We are now Solar Powered</a></li> +<li><a href="https://naehrdine.blogspot.com/2021/09/always-on-processor-magic-how-find-my.html">Always-on Processor magic: How Find My works while iPhone is powered off</a></li> +<li><a href="https://www.theverge.com/22684730/students-file-folder-directory-structure-education-gen-z">File not found: Professors are struggling to teach Gen Z</a></li> +<li><a href="https://slate.com/technology/2021/10/facebook-unfollow-everything-cease-desist.html">Facebook banned me for life because I help people use it less</a></li> +<li><a href="https://blog.cloudflare.com/october-2021-facebook-outage/">Understanding how Facebook disappeared from the Internet</a></li> +<li><a href="https://www.reddit.com/r/androiddev/comments/q4nltn/ads_are_now_able_to_bypass_google_play_to_install/?utm_source=share&amp;utm_medium=web2x&amp;context=3">Ads are now able to bypass Google Play to install apps WITHOUT user consent.</a></li> +<li><strong>Video</strong> <a href="https://www.youtube.com/watch?v=-wMU8vmfaYo">Why was Facebook down for five hours?</a></li> +</ul> +</li> +<li><p><strong>Gaming</strong>:</p> +<ul> +<li><strong>Video</strong> <a href="https://www.youtube.com/watch?v=jmAbunjFBkA">asobu meets indies #1: NamaTakahasi</a></li> +<li><strong>Video</strong> <a href="https://youtu.be/mmxFaCVYMCc">Japan's Arcades are DISAPEARING --- Is it time to say goodbye?</a></li> +<li><em>Spanish</em> <a href="https://www.anaitgames.com/articulos/mercurysteam-empleados-condiciones-trabajo/">Empleados de MercurySteam hablan sobre las condiciones de trabajo del estudio</a></li> +<li><strong>Video</strong> <a href="https://www.youtube.com/watch?v=bJMFXdLQRyo">Nintendo 64DD: The REAL reason it FAILED</a></li> +</ul> +</li> +<li><p><strong>Literature</strong>:</p> +<ul> +<li><a href="https://sive.rs/bp">Considerate book pricing</a></li> +</ul> +</li> +</ul> +Storing data in Node-Red flows using contexts2021-10-11T00:00:00Zurn:uuid:bac5ae30-20fe-3979-b315-360f02670198<p>I've been adding some automations to my Home Assistant recently so it can inform us of takeaway menu changes for local restaurants. We have a few favourites and they usually offer different options each day so checking for updates and notifying us via our Telegram bot is pretty easy.</p> +<!-- readmore --> + +<p>Since I didn't want to use any library or custom program/service to analyze the page I'm relaying this kind of work to the Node-Red service in my Home Assistant instance. It's a server that is always working, easy to set up, work and iterate from, and I already have some integrations in place for notifications and other QoL, so it seemed like a 110% win.</p> +<p>Despite having used Node-Red for various purposes along the years I usually delegated state to different services, databases or the filesystem. Not sure why I didn't check if Node-Red had something built-in-- which of course it had.</p> +<p>Node-Red has this concept of <em>context</em>. By default a context is stored in memory only, and you can get/set values from a node or from function nodes very easily:</p> +<p><img src="/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-360.png" alt="Node-Red Change node allows to make changes in contexts"></p> +<blockquote><p>You can also edit contexts programatically from function nodes using:</p> +<div class="hll"><pre><span></span><span class="nx">msg</span><span class="p">.</span><span class="nx">contentSize</span> <span class="o">=</span> <span class="mf">123</span> <span class="c1">// From another node</span> +<span class="nx">flow</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;menuContentSize&quot;</span><span class="p">,</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">contentSize</span><span class="p">)</span> +<span class="kd">var</span> <span class="nx">value</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;menuContentSize&quot;</span><span class="p">)</span> +</pre></div> +</blockquote> +<p>In my case I wanted the data to persist service restarts and Node-Red provides a context store filesystem based which stores changes in memory and persists them to disk every 30 seconds, more than enough for my use case.</p> +<p>To enable it we need to modify the <code>settings.js</code> file of the Node-Red installation and add the appropriate <code>contextStore</code> parameters:</p> +<div class="hll"><pre><span></span><span class="p">{</span> + <span class="c1">// ...</span> + <span class="nx">contextStorage</span><span class="o">:</span> <span class="p">{</span> + <span class="nx">state</span><span class="o">:</span> <span class="p">{</span> + <span class="nx">module</span><span class="o">:</span> <span class="s2">&quot;localfilesystem&quot;</span><span class="p">,</span> + <span class="nx">base</span><span class="o">:</span> <span class="s2">&quot;state&quot;</span> <span class="c1">// This will store the data in ~/.node-red/state,</span> + <span class="p">},</span> + <span class="k">default</span><span class="o">:</span> <span class="p">{</span> <span class="nx">module</span><span class="o">:</span> <span class="s2">&quot;memory&quot;</span> <span class="p">}</span> + <span class="p">},</span> + <span class="c1">// ...</span> +<span class="p">}</span> +</pre></div> +<blockquote><p>In this example I created a new context store called <em>state</em> using the filesystem module I talked before and additionally I set up the storage in a custom directory.</p> +</blockquote> +<p>This way I can have two context stores: one in memory (the default) and one to store my custom states. You can create more for your use cases but keep in mind that you need to select a different <code>dir</code> for each of them so they wont collide. For more information check <a href="https://nodered.org/docs/api/context/store/localfilesystem#implementation-details">the implementation details</a>.</p> +<p>In order to select an store to use you have a dropdown in the change node:</p> +<p><img src="/blog/2021/10/11/storing-data-in-node-red-flows-using-context/node-red-change-node-dropdown-360.png" alt="Node red change node with dropdown selection"></p> +<blockquote><p>Or use the third argument<code>flow.set(key, value, store)</code>/<code>flow.get(key, store)</code> to select it programatically.</p> +</blockquote> +<p>This allows for this very simple state checks in my case but allows for way more complex behaviors right out of the box.</p> +<p>I'm a very big fan of Node-Red. And I can use that so get notified of takaway menu changes now. Talk about a first world problem.</p> +<ul> +<li>References:<ul> +<li><a href="https://nodered.org/docs/user-guide/context">Node-Red: Context</a></li> +<li><a href="https://nodered.org/docs/api/context/store/localfilesystem#options">Node-Red: Local Filesystem context store</a></li> +</ul> +</li> +</ul> +September 20212021-10-02T00:00:00Zurn:uuid:22d63820-f121-35ca-b5ab-1f6b5b9f7dc8<p><img src="/blog/2021/10/02/september-2021/image-360.jpg" alt="A picture of a beach about 45 minutes walking from my home"></p> +<div class="text-center">I love having this at _somewhat_ walking distance. Can you spot my shadow?</div><!-- readmore --> + +<h2 id="projects-personal">Projects &amp; Personal</h2><p>I manage to fulfill my "development needs" so much at work that I try to use my spare time in other hobbies nowadays. Not that I don't have pending things to do, I just don't feel like spending much time on the computer after work anymore.</p> +<p>The few things I have been doing are looking for an alternative to the Firewalla at home. I'm thinking on installing opnsense on the Firewalla SoC cause it just don't really suit my needs. The problem is that opened a whole set of questions again on how to setup and sort all network devices at home, how I'm going to manage (server and networking side) the public and private services I have and so on. I would like to try it before just giving up on my current router directly, so I need to setup this on a VM and start playing with it to check if it does the essential things I want it to do.</p> +<p>Another thing I have been spending time theses days is sorting out my note and habits management. I tend to scribble on paper and just forget about it for current projects, but sometimes I write something that should be more persistent over time. So good luck past/present/future me figuring out how to handle that.</p> +<p>On the habit side I'm trying out <a href="https://habitify.me">Habitify</a> just to know how much of my work/personal/leisure time I spend "correctly". That's the best thing I found to track this kind of "tasks", but I don't like the subscription model at all... if anyone has a suggestion that is either self-hosted or single-payment please <a href="/about/">contact me</a>.</p> +<p>Also, as always, I've been improving my Home Assistant instance with new things. But that's the usual once you enter this world.</p> +<h2 id="books">Books</h2><ul> +<li><p>Up to date with <a href="https://www.webtoons.com/en/fantasy/dice/list?title_no=64"><strong>DICE</strong></a></p> +</li> +<li><p>Ongoing with <a href="https://www.goodreads.com/series/57193-one-piece"><strong>One Piece</strong></a>: Volume 56.</p> +</li> +<li><p>Finished <a href="https://www.goodreads.com/book/show/14061957-ruin-and-rising"><strong>Ruin and Rising</strong></a></p> +<p>Talk about a long road... finally finished the trilogy. This final sprint has been a bit rough, and it almost made me read some pages a bit "diagonal" just to end it. Got really boring at the end if I must say. I do not plan on reading anything else for this saga.</p> +</li> +<li><p>Started reading <a href="https://www.goodreads.com/book/show/48562648-jap-n-con-jam-n"><strong>Japón con Jamón</strong></a></p> +<p>This has been on my bookshelf for a year or so now. I just couldn't read anything Japan related because it reminded me a lot of the time I spent there. But well, after two years it's time to go on. Sadly it seems that it's not in anything but Spanish...</p> +</li> +</ul> +<h2 id="tvshows-and-movies">TVShows and Movies</h2><ul> +<li><p>For lunch and dinner time <a href="https://www.crunchyroll.com/es-es/one-piece"><strong>One Piece</strong></a></p> +</li> +<li><p>Watched <a href="https://es.hboespana.com/series/rick-and-morty/3be6e070-1044-4740-8478-2936de705e4c/season-5/2d8a1c0b-ad1c-46e2-aedd-475390b2d8da"><strong>Rick and Morty: Season 5</strong></a></p> +<p>What an amazing season! The first two chapters were incredible, but the last two... oh my! I'm really glad I didn't spoil myself on social because I have enjoyed it a lot. I waited until all chapters were available in HBO so I could watch all chapters in a row. And oh my, I loved it! Not sure why people complain about this season -of course it has better and worse episodes- but overall it has been awesome. The worst part is waiting for the next season!</p> +</li> +<li><p>Started <a href="https://es.hboespana.com/series/raised-by-wolves/607e39f2-6d7c-4d1a-85d2-278ad1e270a1/season-1/1c7157fc-ad39-46fe-a44f-3972e51a80e6"><strong>Raised by wolves</strong></a></p> +<p>I had it in store for some time and only two episodes in... it has everything I like: Sci-Fi, Dystopian setting, robots, etc. But... it is a bit weird. Maybe I don't understand the message of something.</p> +</li> +<li><p>Started <a href="https://www.disneyplus.com/series/the-bad-batch/4gMliqFxxqXC"><strong>Star Wars: Visions</strong></a></p> +<p>It's finally here! As a fan of Japanese animation is awesome to watch some of them allowed to create a history on a Star Wars related setting. I don't know what to expect but so far I liked every episode, specially the one from Trigger... their art style and storytelling is amazing. Though I would've like to know more of each history, I'm happy that episodes are 15 minutes long.</p> +</li> +<li><p>Started <a href="https://www.disneyplus.com/series/what-if/7672ZVj1ZxU9"><strong>Marvel's What if...?</strong></a></p> +<p>Another that I was eager to watch this month and I managed to keep up to date until this point. I'm loving it so far and it seems that everything until this point is going to converge in the final episodes in one hell of a battle. I really hope they do more seasons.</p> +</li> +<li><p>Started <a href="https://www.disneyplus.com/series/y-the-last-man/6GhSTQBktm34"><strong>Y: The last man</strong></a></p> +<p>I wasn't expecting much from this one, but a friend told me about it and I put it off focus while I was doing some chores. It's average for my taste but at least the premise seems... interesting? I don't know. Let's see how it goes.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p>Finished <a href="https://www.nintendo.es/Juegos/Game-Boy-Advance/The-Legend-of-Zelda-The-Minish-Cap-267486.html"><strong>The legend of Zelda: The Minish Cup</strong></a></p> +<p>This game have grown old incredibly well. Mechanics, gameplay and even graphics are incredible. And I'm telling this in 2021 from a game that released in 2004, 17 years ago!</p> +<p>I played it on original hardware, a tuned GameBoy Advance SP with a FunnyPlaying LCD screen, and even if I liked the experience I had to play it through short sessions (maybe 30-60m tops) because the handhelds are so tiny that my fingers hurt a bit after some time. Also the SP is so narrow that my hands are almost touching. I'm not sure if I will play everything here, maybe only games that can be played for 10-15m (like Rhythm Tengoku) but I have my eye on Golden Sun 1&amp;2 now... I'm glad I have emulation machines everywhere and a brand new <a href="https://www.epilogue.co/product/gb-operator">GB Operator</a> that I can use to play on a bigger screen and backup my games and saves.</p> +</li> +<li><p>Finished <a href="https://store.steampowered.com/app/698780/Doki_Doki_Literature_Club/"><strong>Doki Doki Literature Club!</strong></a></p> +<p>Not going to say anything. Just play it. It's four hours or so of gameplay. Play it.</p> +</li> +<li><p>Still ongoing with <a href="https://store.steampowered.com/app/736260/Baba_Is_You/"><strong>Baba is you</strong></a></p> +<p>We didn't manage to get much time to play, but we're slowly going through it.</p> +</li> +</ul> +<h2 id="articles-https//t-me/fmartingr-articles"><a href="https://t.me/fmartingr_articles">Articles</a></h2><ul> +<li><p><strong>Developers</strong>:</p> +<ul> +<li><a href="https://medium.com/@ighor/i-unlocked-nvidia-geforce-now-and-stumbled-upon-pirates-dc48a3f8ff7">I unlocked NVIDIA GeForce NOW and stumbled upon Pirates</a></li> +<li><a href="http://adrian.gaudebert.fr/blog/post/four-months-of-horizontal-game-production">Four Months of Horizontal Game Production - Blog | Adrian Gaudebert</a></li> +<li><a href="https://engineering.fb.com/2021/07/14/security/whatsapp-multi-device/">How WhatsApp enables multi-device capability</a></li> +<li><a href="https://drewdevault.com/2021/09/23/Nitter-and-other-internet-reclamation-projects.html">Nitter and other Internet reclamation projects</a></li> +<li><a href="https://h2x.sh/apple/">Start using tools again</a> (<em>leaving Apple's ecosystem</em>)</li> +<li><a href="https://habr.com/en/post/579714/">Disclosure of three 0-day iOS vulnerabilities and critique of Apple Security Bounty program</a></li> +<li><a href="https://people.freebsd.org/~gallatin/talks/euro2021.pdf">Serving Netflix Video at 400Gb/s on FreeBSD</a></li> +<li><a href="https://drewdevault.com/2021/09/27/Let-distros-do-their-job.html">Let distros do their job</a></li> +<li><a href="https://www.gamedeveloper.com/console/playdate-pulp-zero-to-video-game-in-60-seconds">Playdate Pulp: Zero to video game in 60 Seconds</a></li> +<li><a href="https://peguero.xyz/blog/google_and_facebook_i_am_facilitating_packet_filtering_to_block_your_tracking.html">Google and Facebook, I am facilitating packet filtering to block your tracking</a></li> +<li><a href="https://endtimes.dev/why-you-should-dither-images/#how-does-dithering-reduce-file-sizes">How does dithering reduce file sizes?</a></li> +</ul> +</li> +<li><p><strong>Games</strong>:</p> +<ul> +<li><a href="https://www.thegamer.com/how-ionizing-particle-outer-space-helped-super-mario-64-speedrunner-save-time/">How An Ionizing Particle From Outer Space Helped A Mario Speedrunner Save Time</a></li> +</ul> +</li> +<li><p><strong>Other</strong>:</p> +<ul> +<li><a href="https://www.atlasobscura.com/articles/why-we-picture-bombs-as-round-black-balls-with-a-burning-wick">Why we picture bombs as round black balls with a burning wick</a></li> +<li>[video] <a href="https://www.youtube.com/watch?v=yiw6_JakZFc">Can YOU fix climate change?</a></li> +</ul> +</li> +</ul> +August 20212021-09-12T00:00:00Zurn:uuid:97e43982-a82e-3947-846d-b9cda130b026<p><a href="/blog/2021/09/12/august-2021/image.jpg"><img src="/blog/2021/09/12/august-2021/image-360.jpg" alt="My birthday cake!"></a></p> +<div class="text-center">Imagine waking up to this every day... sadly it only happens on vacation.</div><!-- readmore --> + +<p>Really quick update since I've been either on vacation, visiting or being visited by family. Slowly going back to normal now.</p> +<h2 id="books">Books</h2><ul> +<li><p><a href="https://www.webtoons.com/en/fantasy/dice/list?title_no=64"><strong>DICE</strong></a></p> +</li> +<li><p><a href="https://www.goodreads.com/series/57193-one-piece"><strong>One Piece</strong></a>: Volume 41 and beyond!</p> +</li> +<li><p>Struggling to finish <a href="https://www.goodreads.com/book/show/14061957-ruin-and-rising"><strong>Ruin and Rising</strong></a></p> +</li> +<li><p>Finished <a href="https://www.goodreads.com/book/show/6612476-death-note---another-note"><strong>Death Note: Another Note</strong></a></p> +<p>All I can say is do not bother with it. I just want to read the original saga to compensate...</p> +</li> +</ul> +<h2 id="tvshows-and-movies">TVShows and Movies</h2><ul> +<li><p>For lunch and dinner time <a href="https://www.crunchyroll.com/es-es/one-piece"><strong>One Piece</strong></a></p> +</li> +<li><p>Finished <a href="https://www.disneyplus.com/series/the-bad-batch/4gMliqFxxqXC"><strong>Star Wars: The Bad Batch</strong></a></p> +<p>What a finale! It was really sad to see <span class="spoiler">all that destruction on Kamino</span> directly on a show, but we all knew that happened... It didn't have me hooking (or even paying attetion sometimes) but I want to know what's in store for the next season.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p>On hold with <a href="https://www.nintendo.es/Juegos/Nintendo-Switch/The-Legend-of-Zelda-Skyward-Sword-HD-1923575.html"><strong>The legend of Zelda: Skyward Sword HD</strong></a></p> +<p>The controls are just awful... It's a shame because it has some interesting things in there but I just can't get on with it :(</p> +</li> +<li><p>Started <a href="https://www.nintendo.es/Juegos/Game-Boy-Advance/The-Legend-of-Zelda-The-Minish-Cap-267486.html"><strong>The legend of Zelda: The Minish Cup</strong></a></p> +<p>Got my geared up GameBoy Advance SP loaded for the travel, and despite the RNG regarding the luck stones this game has aged really well in my oppinion.</p> +</li> +<li><p>Still around with <a href="https://store.steampowered.com/app/736260/Baba_Is_You/"><strong>Baba is you</strong></a></p> +</li> +</ul> +<h2 id="articles-https//t-me/fmartingr-articles"><a href="https://t.me/fmartingr_articles">Articles</a></h2><ul> +<li><p><strong>Art</strong>:</p> +<ul> +<li><a href="https://medium.com/@gameboynerd/the-art-of-game-boy-games-67cb8bb31d98">The Art of GameBoy games</a></li> +</ul> +</li> +<li><p><strong>Videogames</strong></p> +<ul> +<li>[twitter thread] <a href="https://twitter.com/JoelBurgess/status/1428008041887281157?s=20">Skyrim oral history - treasure fox</a></li> +<li>[twitter thread] <a href="https://twitter.com/The_Opponent/status/1430204227067027458?s=20">StarFighters76 map contributions on GameFaqs</a></li> +</ul> +</li> +<li><p><strong>Engineering</strong>:</p> +<ul> +<li><a href="https://palant.info/2021/08/02/data-exfiltration-in-keepa-price-tracker/">Data exfiltration in Keepa Price Tracker</a></li> +<li>[twitter thread] <a href="https://twitter.com/KevEdwardsRetro/status/1424457994553765891">NES Development in 1988</a></li> +<li><a href="https://www.pixelstech.net/article/1628407126-Will-nil-==-nil-be-true-in-GoLang">Why nil == nil be true in GoLang</a></li> +<li><a href="https://www.youtube.com/watch?v=HLWY7fCXUwE">It's just emulation! The challenge of selling old games</a></li> +<li><a href="https://www.ctrl.blog/entry/homenet-domain-name.html">What domain name to use for your home network</a></li> +<li><a href="https://jacobkiers.net/hod/">HTML over DNS</a></li> +</ul> +</li> +<li><p><strong>Other</strong></p> +<ul> +<li><a href="https://mkorostoff.github.io/1-pixel-wealth/">Wealth, shown to scale</a></li> +<li>[video] <a href="https://www.youtube.com/watch?v=Ftr9yY-YuYU">Can dogs tell the time?</a></li> +<li>[twitter thread] <a href="https://twitter.com/dguido/status/1424921645483966466">Scooter stolen with an Airtag inside it</a></li> +<li>[video] <a href="https://www.youtube.com/watch?v=SVvF_Qyq5F0">Are video games a global pandemic?</a></li> +</ul> +</li> +</ul> +July 20212021-08-01T00:00:00Zurn:uuid:97e7c909-765a-3043-9f64-07f1b6d89a5b<p><a href="/blog/2021/08/01/july-2021/image.jpg"><img src="/blog/2021/08/01/july-2021/image-360.jpg" alt="My birthday cake!"></a></p> +<div class="text-center">On the good days that actually seems like summer we get some beaufiful landscapes like this.</div><!-- readmore --> + +<h2 id="projects">Projects</h2><p>Ever since I ended up on my current job I spend less and less time with the computer in the after-work hours, real life ™️ stuff and my numerous other hobbies tend to maintain me busy, so I've spent very little time with these things:</p> +<ul> +<li><p><a href="https://github.com/fmartingr/switch-games-json">switch-games-json</a> I've started work on how people could contribute new entries to it. I have a working proof of concept and I have to import all currently data present on the internets before releasing it publicly.</p> +</li> +<li><p><a href="https://github.com/fmartingr/games-screenshot-manager">games-screenshot-manager</a> Planning a big refactor since I use this very regularly and it <a href="http://gallery.fmartingr.com">works very well</a> but it can be way faster that it is now.</p> +</li> +<li><p><strong>notion-to-ical</strong>: I'm working on a little service to convert a Notion calendar database into an iCal feed.</p> +</li> +<li><p>3D Printing. More like 3D calibrating since I didn't manage to find the proper attributes to print some pieces corretly, and since it a bit of trial and error it's taking its time.</p> +</li> +</ul> +<h2 id="books">Books</h2><ul> +<li><p><a href="https://www.webtoons.com/en/fantasy/dice/list?title_no=64"><strong>DICE</strong></a></p> +</li> +<li><p><a href="https://www.goodreads.com/series/57193-one-piece"><strong>One Piece</strong></a>: Volume 27 and beyond!</p> +</li> +<li><p>Finished <a href="https://www.goodreads.com/book/show/14061955-siege-and-storm"><strong>Siege and Storm</strong></a></p> +</li> +<li><p>Started reading <a href="https://www.goodreads.com/book/show/14061957-ruin-and-rising"><strong>Ruin and Rising</strong></a></p> +<p>The last book of the Ghrisaverse trilogy, series seems a bit average until this point but it manages to keep me wanting to know what will happen next. I just hope this one doesn't end in a cliffhanger or with anything pending so I can start reading other series after that, since I've seen that there are other books based on this world.</p> +</li> +</ul> +<h2 id="tvshows-and-movies">TVShows and Movies</h2><ul> +<li><p>For lunch and dinner time <a href="https://www.crunchyroll.com/es-es/one-piece"><strong>One Piece</strong></a></p> +</li> +<li><p>Ongoing with <a href="https://www.disneyplus.com/series/the-bad-batch/4gMliqFxxqXC"><strong>Star Wars: The Bad Batch</strong></a></p> +<p>This became an off-series, I just let it run in background while I do other things and I manage to keep track easily.</p> +</li> +<li><p>Finished <a href="https://www.disneyplus.com/series/loki/6pARMvILBGzF"><strong>Loki</strong></a></p> +<p>What a show, what a show! I loved the ending (though I expected a different character to appear) and their performance was just amazing, can't wait to see how this threads into the films and the next season. The MCU is doing an amazing work in this department.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p>Finished! <a href="https://rhythmheaven.fandom.com/wiki/Rhythm_Tengoku"><strong>Rhythm Tengoku (<em>リズム天国 / Rhythm Heaven</em>)</strong></a></p> +<p>I got all gold medals and beat the final drum minigame, and that's a wrap! I'm not going to put myself through unnecessary pain by doing all the perfect scores. It was ver difficult and a lot of fun, specially since I could play it in short sessions through the months.</p> +<div class="text-center"> + <video autoplay loop muted id="background" width="640" height="360"> + <source src="./rhythm-tengoku.webm" type="video/webm"> + <source src="./rhythm-tengoku.mp4" type="video/mp4"> + </video> +</div></li> +<li><p>Stopped <a href="https://store.playstation.com/es-es/product/EP0700-CUSA14054_00-OPWSK00APPLI0000"><strong>One Piece: WORLD SEEKER</strong></a> (<a href="http://gallery.fmartingr.com/PlayStation-4-ONE-PIECE-WORLD-SEEKER.html">screenshot gallery</a>)</p> +<p>I stopped playing this one mostly because I wasn't enjoying it much, but also because I don't know where this is set in the One Piece storyline and I didn't want to spoil myself. I will continue with it once I reach the last One Piece volume.</p> +</li> +<li><p>Still around with <a href="https://store.steampowered.com/app/736260/Baba_Is_You/"><strong>Baba is you</strong></a></p> +<p>We still have this on our pipeline, Player 2 seems to enjoy it since loves puzzles.</p> +</li> +<li><p>Started <a href="https://www.nintendo.es/Juegos/Nintendo-Switch/The-Legend-of-Zelda-Skyward-Sword-HD-1923575.html"><strong>The legend of Zelda: Skyward Sword HD</strong></a></p> +<p>Of course. I didn't progress much and I totaly hate the sword mechanic until the point that I almost drop it at the beginning... but I want to see it through the end since it's the first in the series, time will tell if I complete it or just finish the story.</p> +</li> +</ul> +<h2 id="articles-https//t-me/fmartingr-articles"><a href="https://t.me/fmartingr_articles">Articles</a></h2><ul> +<li><p><strong>Engineering</strong>:</p> +<ul> +<li><a href="https://github.com/golang/go/commit/7d7c6a97f8">First go language commit</a></li> +<li><a href="https://drewdevault.com/2021/07/04/Is-GitHub-a-derivative-work.html">Is GitHub a derivative work of GPL'd software?</a></li> +<li><a href="https://leveluppp.ghost.io/benchmarks-in-go-can-be-surprising/">Bencharmks in Go can be surprising</a></li> +<li><a href="https://michael.stapelberg.ch/posts/2021-07-10-linux-25gbit-internet-router-pc-build/">25 Gigabit Linux internet router PC build</a></li> +<li><a href="https://drewdevault.com/2021/07/28/The-next-YAML.html">My wish-list for the next YAML</a></li> +</ul> +</li> +<li><p><strong>Videogames</strong>:</p> +<ul> +<li><a href="https://github.com/golang/go/commit/7d7c6a97f8">A 23-Year Perfectionist Journey to Localize the Obscure 'Bahamut Lagoon'</a></li> +<li>[video] <a href="https://youtu.be/9Ki-kH751_8">How the Game Boy almost ruined Nintendo</a></li> +<li>[video] <a href="https://youtu.be/HyzD8pNlpwI">The ultimate Game Boy Talk (33c3)</a></li> +<li><a href="https://arstechnica.com/gaming/2021/07/museum-obtains-rare-demo-of-id-softwares-super-mario-bros-3-pc-port/">Museum obtains rare demo of id Software's Super Mario Bros 3 PC port</a></li> +<li><a href="https://arstechnica.com/features/2021/07/collectors-are-as-confused-as-you-are-about-that-1-56m-super-mario-64-sale/">Collectors are as confused as you are about that $1.56M Super Mario 64 sale</a></li> +<li><a href="https://arstechnica.com/gaming/2021/07/playdate-preview-you-wont-believe-how-fun-this-dorky-179-game-system-is/">Playdate preview: You won’t believe how fun this dorky, $179 game system is</a></li> +</ul> +</li> +<li><p><strong>Traveling</strong>:</p> +<ul> +<li>[video] <a href="https://www.youtube.com/watch?v=4EQ34L05pOw">Visiting All The Main Tourist Attractions In Kyoto - Completely Empty</a></li> +</ul> +</li> +<li><p><strong>News</strong>:</p> +<ul> +<li><a href="https://twitter.com/TrungTPhan/status/1414966594179006466">Disney+ success tweet</a></li> +<li><a href="https://nuclearmonster.com/2021/07/ethan-flibitijibibo-lee-may-retire-from-programming-due-to-valves-proton/">Ethan “flibitijibibo” Lee May Retire from Programming Due to Valve’s Proton</a></li> +<li><a href="https://eand.co/this-isnt-a-heatwave-it-s-a-dying-planet-ac1c9eb529d1">This Isn’t a Heatwave — It’s a Dying Planet</a></li> +<li>[video] <a href="https://youtu.be/9zDrp4pncDs">I Get MAD | Blizz's DISGUSTING Anti Customer Behavior EXPOSED</a></li> +</ul> +</li> +</ul> +June 20212021-07-01T00:00:00Zurn:uuid:826f6f5c-85e0-3e8a-af24-5a4aaa564bc0<p><a href="/blog/2021/07/01/june-2021/image.jpg"><img src="/blog/2021/07/01/june-2021/image-360.jpg" alt="My birthday cake!"></a></p> +<div class="text-center">This was technically last month, but celebrated on June 1st. Happy cake day to me!</div><!-- readmore --> + +<h2 id="books">Books</h2><ul> +<li><p>Up to date with <a href="https://www.webtoons.com/en/fantasy/dice/list?title_no=64"><strong>DICE</strong></a></p> +<p>The end is getting closer and closer, or so it seems!</p> +</li> +<li><p>Read <a href="https://www.goodreads.com/book/show/10194157-shadow-and-bone"><strong>Shadow and Bone</strong></a></p> +<p>Finished the first book of the Ghrisaverse recently, it reminded me of the <a href="https://www.goodreads.com/series/44134-the-black-magician-trilogy">Black Magician Trilogy</a> though a lot of things happen on this book actually.</p> +<p>The magic system is a bit... weird. It isn't explained much and though they say it can be infinite the different level in power of characters is not very well expressed with very clear differences in the characters that show up.</p> +<p>Despite that it's fun to read because the storytelling is good and you start getting yourself inmersed in the life of the characters from the very beginning even if it's a very clear <a href="https://en.wikipedia.org/wiki/Hero&#39;s_journey">hero's journey</a>.</p> +</li> +<li><p>Started reading <a href="https://www.goodreads.com/book/show/14061955-siege-and-storm"><strong>Siege and Storm</strong></a></p> +<p>Continuing from the previous one, I haven't gotten very far on this one but even in five chapters they already untangled the first book cliffhanger, expecting more to happen and adding a bit of backstory to previously non-explained things.</p> +</li> +<li><p>Started reading <a href="https://www.goodreads.com/series/57193-one-piece"><strong>One Piece</strong></a></p> +<p><strong>Yes!</strong> I finally got a good pack of volumes from a second-hand online store and have tons to read. I haven't actually read the comics from the very beginning before and I'm getting surprised of some changes between the manga and the anime. I'm very happy I managed to get the collection on my shelf already after all this time, this is going to keep me busy for a few months :)</p> +</li> +<li><p>Read <a href="https://www.goodreads.com/book/show/55978796-horizon-zero-dawn-vol-1"><strong>Horizon Zero Dawn Volume #1</strong></a></p> +<p>Got this one looking around art books online, and it was quite a surprise that they deciced to tell the history of Horizon's world in this format as well. The history follows a side-quest character shown in the game after the game's ending and while it's not very deep it presents new things to the world that would be present on the new game releasing this year.</p> +</li> +</ul> +<h2 id="tvshows-and-movies">TVShows and Movies</h2><ul> +<li><p>Lunch time:</p> +<ul> +<li><p><a href="https://www.primevideo.com/detail/0HBVL22LMA40B0XBY30RUOC9EH/"><strong>Bones</strong></a></p> +<p>Why do we keep choosing shows this long!</p> +</li> +<li><p><a href="https://www.crunchyroll.com/es-es/one-piece"><strong>One Piece</strong></a></p> +<p>Player's 2 idea (never expected this, not complaining though!). Since episodes are very short (~20m) she get enough time to eat. The bad part is that I need to read the comics fast enough so anime doesn't catch up.</p> +</li> +</ul> +</li> +<li><p>Ongoing with <a href="https://www.disneyplus.com/series/the-bad-batch/4gMliqFxxqXC"><strong>Star Wars: The Bad Batch</strong></a></p> +<p>Very little has happened until this point, they need to start adding real conflict to the show because is getting a bit boring for my taste :(</p> +</li> +<li><p>Started <a href="https://www.disneyplus.com/series/loki/6pARMvILBGzF"><strong>Loki</strong></a></p> +<p>A-mazing. The first chapter is a bit of a introduction to everything so not much is it there, but since this is going to be a 6 episode only show I'm expecting the climax will come in episode 4-5 (4 aired yesterday but I don't have the time to watch it until tomorrow, so shush!). It's actually very good, the mix of <em>seriousness</em> and <em>humor</em> is very well done (and performed!) in the show.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p>Finished <a href="https://www.playstation.com/en-us/games/horizon-zero-dawn/"><strong>Horizon: Zero Dawn</strong></a> (<a href="http://gallery.fmartingr.com/PlayStation-4-Horizon-Zero-Dawntm_-Complete-Edition.html">screenshot gallery</a>)</p> +<p>Finished both the main story and the Frozen Wilds DLC, I enjoyed the story quite a lot to be honest. I like dystopian worlds and getting to know <em>how did we get there</em>.</p> +<p>The game was overall fun though repetitive (all missions are either kill or track, in essence). Side missions doesn't seem to expand the story in a very meaningful way so I just kept to the main storyline and did some sides that were either on my way or gave good rewards. I also had a lot of problems with my inventory, I got the resource expansion satchel the earliest I could because I'm a loot hoarder but after a few hours into the game I was always full and had to sell, scrap or throw stuff around to make room for items (specially blue ones because I didn't knew if I would need them for new gear or quests) and that persisted until the very end of the game.</p> +<p>The side collectibles around the world were just too many. When I finished the game I only had 4 text datapoints from the world, out of a bazillion. I want to know more about the Lore of the game but that's just ridiculous.</p> +<p>Apart from that, the art, storytelling, voice-acting, music department, etc was awesome and really immersive. The only thing I missed while playing is a good sound system to help with the immersion, but well, that's just a first world problem.</p> +</li> +<li><p>Still in pain: <a href="https://rhythmheaven.fandom.com/wiki/Rhythm_Tengoku"><strong>Rhythm Tengoku (<em>リズム天国 / Rhythm Heaven</em>)</strong></a></p> +<p>I have get gold medals up until the fourth tier, and I'm stuck on the rap game... I may be half way through it, more or less.</p> +</li> +<li><p>Started <a href="https://store.playstation.com/es-es/product/EP0700-CUSA14054_00-OPWSK00APPLI0000"><strong>One Piece: WORLD SEEKER</strong></a> (<a href="http://gallery.fmartingr.com/PlayStation-4-ONE-PIECE-WORLD-SEEKER.html">screenshot gallery</a>)</p> +<p>Got this as a birthday present and I'm painfully going though it. I'm just playing because the story is supposed to be an Oda's original, but it just seems a bunch of different mechanics thrown together to make a game with One Piece's assets.</p> +</li> +<li><p>Started <a href="https://store.steampowered.com/app/736260/Baba_Is_You/"><strong>Baba is you</strong></a></p> +<p>Player #2 and I started couch-playing this cause we both like puzzle games, one takes the controller and we dig through the levels. I love the premise of the game and how simple interactions in the map change everything, and how player 2 and I look at the puzzles from different perspectives finding more than one solution to each level.</p> +</li> +</ul> +<h2 id="articles-https//t-me/fmartingr-articles"><a href="https://t.me/fmartingr_articles">Articles</a></h2><ul> +<li><p><strong>Videogames</strong>:</p> +<ul> +<li>[video] <a href="https://youtu.be/n0NJz0iA37k">The complete story of Square (part 1)</a></li> +<li>[video] <a href="https://www.youtube.com/watch?v=y8iLmKBlvUE">The Unexpected Success of Horizon Zero Dawn | 3 Years Later (Retrospective)</a></li> +<li>[video] <a href="https://www.youtube.com/watch?v=h9tLcD1r-6w">The Making of Horizon Zero Dawn</a></li> +<li>[video] <a href="https://youtu.be/tKH0x21rj1Y">Japan's Game Preservation Crisis</a></li> +<li><a href="https://medium.com/@obskyr/the-secret-origin-of-the-action-rpg-254a180079dd">The Secret Origin of the Action RPG</a></li> +<li><a href="https://www.vice.com/en/article/qj83yp/final-fantasy-remasters-reignite-controversies-over-pixel-art">Final Fantasy Remasters Reignite Controversies Over Pixel Art</a></li> +<li>[video] <a href="https://www.youtube.com/watch?v=MspqDuq5OZY">How Nintendo Failed Into Super Mario Kart | The Story Behind The Super Nintendo Classic</a></li> +</ul> +</li> +<li><p><strong>Hacking</strong>:</p> +<ul> +<li>[video] <a href="https://youtu.be/4ckjr9x214c">Mining Bitcoin on the Game Boy</a></li> +<li>[video] <a href="https://www.youtube.com/watch?v=7ybybf4tJWw">Doom on an IKEA TRÅDFRI lamp!</a></li> +<li><a href="https://gir.st/blog/greenpass.html">What's Inside the EU Green Pass QR Code?</a></li> +</ul> +</li> +<li><p><strong>TV Shows</strong>:</p> +<ul> +<li>[video] <a href="https://youtu.be/Umu19quwinI">The Strangely Melancholy Ending to The Good Place — Brandon Sanderson</a></li> +</ul> +</li> +<li><p><strong>Programming</strong>:</p> +<ul> +<li><a href="https://medium.com/@felipedutratine/how-to-organize-the-go-struct-in-order-to-save-memory-c78afcf59ec2">How to organize the go struct, in order to save memory</a></li> +</ul> +</li> +<li><p><strong>Other</strong>:</p> +<ul> +<li>[video] <a href="https://youtu.be/iKBs9l8jS6Q">Top 100 3D Renders from the Internet's Largest CG Challenge | Alternate Realities</a></li> +<li>[video] <a href="https://www.youtube.com/watch?v=wxWK0zb-9k8">Manga Kissa: Life in Japan’s Smallest Rooms | ASIAN BOSS</a></li> +</ul> +</li> +</ul> +May 20212021-06-01T00:00:00Zurn:uuid:59306a7f-2f1c-3316-a0be-0e7865446f8a<p><a href="/blog/2021/06/01/may-2021/image.jpg"><img src="/blog/2021/06/01/may-2021/image-360.jpg" alt="image alt"></a></p> +<div class="text-center">The beauty of the north</div><!-- readmore --> + +<h2 id="projects">Projects</h2><ul> +<li><p><a href="https://github.com/fmartingr/games-screenshot-manager"><strong>games-screenshot-manager</strong></a> I've refactored the project a bit and I'm working towards concurrency, documentation and adding playstation 5 support thanks to a friend which provided me some sample files.</p> +</li> +<li><p><a href="https://github.com/fmartingr/switch-games-json"><strong>switch-games-json</strong></a> Updated the jobs tasks so it only runs weekly, since it's sources doesn't update that much. One of the upstream repositories seems unmaintained so I need to figure out how to handle community submissions real quick.</p> +</li> +<li><p>Finished the Godot course I started a while ago. As with everything else I have more free time now and I was only a few lessons away. I learned a lot along the way though the course seemed a bit rushed towars the end. Even with it's downsides I have learned things way faster this way that I would've on my own. I'm planning the next steps now which will be some clones of other games to learn from more genres and familiar mechanics. Should make some interesting posts for the blog, but no promises.</p> +</li> +<li><p>I've been updating my Home Assistant server automations a bit, using some sensors I had laying around to gain some quality of life at home. Some silly things like notifications when someone on Twitch is live are simple but useful, another to let us know if the light for our bathroom have been on for more than an hour, the same if the main door is left open and automating the air purifier in our bedroom (allergies season...) The automations UI needs a bit more love but doing stuff YAML only is easy as well so that's not a problem. I also created a bot on Telegram for all notifications, so we can have a proper history and I could also make some interactive ones directly there with buttons to answer.</p> +<p><img src="/blog/2021/06/01/may-2021/air-purifier-automation-640.png" alt="Air purifier automation dashboard"></p> +</li> +</ul> +<h2 id="books">Books</h2><p>My first Marvel Unlimited month came to an end and I have no plans to keep subscribed to it. Maybe I will buy some of the physical editions in the future for the interesting sagas I want to read, the application is just sooo painful.</p> +<ul> +<li><p>Dropped? <a href="https://www.webtoons.com/en/action/the-gamer/list?title_no=88"><strong>The Gamer</strong></a></p> +<p>I was interesting up until the point it started with a lot of Korean legends/folklore I have no context about, the story started getting boring so I just found myself not wanting to read it anymore.</p> +</li> +<li><p>Reading <a href="https://www.webtoons.com/en/fantasy/dice/list?title_no=64"><strong>DICE</strong></a></p> +<p>Up to date! It seems that series is coming to an end soon.</p> +</li> +<li><p>Continuing with <a href="https://www.goodreads.com/book/show/222146.Masters_of_Doom"><strong>Masters of Doom</strong></a></p> +</li> +<li><p>I'm still looking for some second-hand One Piece bundle around my country, so I can read the series from the beginning up until the last published volume here. Either that or they make every chapter available on the Jump app for a fee or something... (please!).</p> +</li> +</ul> +<h2 id="tvshows-and-movies">TVShows and Movies</h2><ul> +<li><p>Finished with <a href="https://www.netflix.com/browse?jbv=70195800"><strong>Suits</strong></a></p> +<p>Finally.</p> +</li> +<li><p>Replaced the above with <a href="https://www.primevideo.com/detail/0HBVL22LMA40B0XBY30RUOC9EH/"><strong>Bones</strong></a></p> +<p>This one is way better at Lunch time and shorter episodes make it a really good fit.</p> +</li> +<li><p>Started <a href="https://www.disneyplus.com/series/the-bad-batch/4gMliqFxxqXC"><strong>Star Wars: The Bad Batch</strong></a></p> +<p>Another point of view for the Order 66 events. It seems <em>okey-ish</em> so far, but not as good as the latest Clone Wars season.</p> +</li> +<li><p>Watched <a href="https://es.hboespana.com/movies/friends-the-reunion/3b1f95c-013d98b33ff"><strong>Friends: The Reunion</strong></a></p> +<p>Watching this only makes me realize we're getting old <strong>fast</strong>.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p>Finished <a href="https://store.playstation.com/es-es/product/EP0006-CUSA12529_00-RESPAWNSWBIRDDOG"><strong>Star Wars: Jedi Fallen Order</strong></a> (<a href="http://gallery.fmartingr.com/PlayStation-4-STAR-WARS-Jedi_-Fallen-Ordertm.html">screenshot gallery</a>)</p> +<p>I started it <a href="/blog/2021/02/01/january-2021/#games">back in January</a> but when I started taking classes for my driving exam I stopped playing with my PlayStation due to lack of time, but now that I have more free time it was about time to finish it.</p> +<p>It was a good enough story (as with Bad Batch, another point of view for Order 66), not long enough to get boring and not short enough to consider it a scam. I'm not going to complete it (maps are very big and I tend to get lost easily...) so I'm leaving it as it is.</p> +</li> +<li><p>Started <a href="https://www.playstation.com/en-us/games/horizon-zero-dawn/"><strong>Horizon: Zero Dawn</strong></a> (<a href="http://gallery.fmartingr.com/PlayStation-4-Horizon-Zero-Dawntm_-Complete-Edition.html">screenshot gallery</a>)</p> +<p>Starting to clean my backlog a bit, this is the next one. I'm pretty sure I'm not going to try and 100% it since there are <strong>tons</strong> of stuff to find around on the map, and I already invest too much time killing/looting everything in sight... but the story seems very good so far and the graphics and environment is amazing.</p> +<p><img src="http://gallery.fmartingr.com/media/large/PlayStation%204/Horizon%20Zero%20Dawn%E2%84%A2_%20Complete%20Edition/2021-05-21_19-36-29.jpg" alt=""></p> +</li> +<li><p>Still there: <a href="https://rhythmheaven.fandom.com/wiki/Rhythm_Tengoku"><strong>Rhythm Tengoku (<em>リズム天国 / Rhythm Heaven</em>)</strong></a></p> +<p>Slowly enjoying it. Because it's hard. (And I'm not good at it.)</p> +</li> +</ul> +<h2 id="articles-https//t-me/fmartingr-articles"><a href="https://t.me/fmartingr_articles">Articles</a></h2><ul> +<li><a href="https://insidefmcg.com.au/2021/05/04/colgate-unveils-recyclable-toothpaste-tubes-and-offers-tech-to-rivals/">Colgate unveils recyclable toothpaste tubes – and offers tech to rivals - Inside FMCG</a></li> +<li><a href="https://www.polygon.com/2019/4/2/18286977/eve-online-explorer-10-year-journey-katia-sae">One player spent 10 years exploring every corner of Eve Online</a></li> +<li><a href="https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-single-server/">Scaling SQLite to 4MQPS on a Single Server (EC2 vs Bare Metal)</a></li> +<li><a href="https://drewdevault.com/2021/05/19/How-to-write-release-notes.html">How to write release notes</a></li> +<li><a href="https://kemenaran.winosx.com/posts/category-disassembling-links-awakening">Disassembling Link’s Awakening</a></li> +<li><a href="https://thewalrus.ca/why-recycling-doesnt-work/">Why recycling doesn't work</a></li> +</ul> +April 20212021-05-01T00:00:00Zurn:uuid:a44ec923-1cdc-3d3f-ac90-aa8de18c348c<p><a href="/blog/2021/05/01/april-2021/image.jpg"><img src="/blog/2021/05/01/april-2021/image-360.jpg" alt="image alt"></a></p> +<div class="text-center">Finally went to a good enough place to try out my drone filming skills!</div><!-- readmore --> + +<h2 id="personal">Personal</h2><p>Finally flied a bit with my Drone! I bought it cause a good offer came up, but here is usually very windy plus I need to go a bit far away to a flight allowed zone. And well even if it wasn't the perfect weather to film around it was very good to lose the fear to lose the drone around even when I couldn't see it because it was too far away.</p> +<p>Can't wait for better weather though! Videos have a very good quality and the shots are just amazing from up there.</p> +<div class="text-center"> + <video width="960" height="540" controls preload="none" playsinline poster="./beach-360.jpg"> + <source src="./beach.mov" type="video/mov"> + <source src="./beach.mp4" type="video/mp4"> + <source src="./beach.ogv" type="video/ogg"> + There's a video here, but your browser doesn't support `video` elements. + </video> +</div><h2 id="projects">Projects</h2><ul> +<li><p>Preparing a community given approach to <a href="https://github.com/fmartingr/switch-games-json"><strong>switch-games-json</strong></a> since the other repository I'm basing it off is not active since last year and PR suggestions are not being merged.</p> +</li> +<li><p><a href="https://github.com/fmartingr/games-screenshot-manager"><strong>games-screenshot-manager</strong></a> is going under a huge refactor since the proof of concept is working very well on my end (being using it for a few months now) so it's time to make the codebase more decent.</p> +</li> +<li><p>Trying out <a href="https://gohugo.io">hugo</a> as a replacement for lektor for this blog. I still need to figure out if the benefits are worth it the time investment.</p> +</li> +<li><p>After doing Go for a while figured out what a pain in the ass is to deploy/containerize python applications.</p> +</li> +</ul> +<h2 id="books">Books</h2><ul> +<li><p>Started reading <a href="https://www.marvel.com/comics/series/29161/star_wars_doctor_aphra_2020_-_present"><strong>Doctor Aphra (2020 - present)</strong></a></p> +<p>I like it, but my subscription ended after trying it for a month, and since I haven't seen any improvement to the app and the pages loading I'm not paying it anymore... it's $10/mo of suffering anytime I want to just read for 10 minutes. It's a shame since people made a lot of recommendations to read Marvel related things, but I'm assuming I would just end up buying the tomes physically. Wait... maybe this was Marvel's plan all along?</p> +</li> +<li><p>Reading <a href="https://www.webtoons.com/en/action/the-gamer/list?title_no=88"><strong>The Gamer</strong></a></p> +<p>I started this a while ago and I've came back to it. Since I didn't remember where chapter I was in I just started it again. And boy I am glad... I didn't remember a thing!</p> +</li> +<li><p>Reaading <a href="https://www.webtoons.com/en/fantasy/dice/list?title_no=64"><strong>DICE</strong></a></p> +<p>Keeping the pace up a bit, I'm still far away from reaching the current episode, but it keeps getting interesting.</p> +</li> +</ul> +<h2 id="tvshows-and-movies">TVShows and Movies</h2><ul> +<li><p>Still watching <a href="https://www.netflix.com/browse?jbv=70195800"><strong>Suits</strong></a></p> +<p>We watch it at lunch/dinner time. Not that I'm enjoying it much anymore, but it's still way better than regular TV.</p> +</li> +<li><p>Finished <a href="https://www.disneyplus.com/series/the-falcon-and-the-winter-soldier/4gglDBMx8icA"><strong>Falcon &amp; The Winter Soldier</strong></a></p> +<p>Oh man, only six episodes! The show was <strong>amazing</strong>, but I feel like a couple of extra episodes wouldn't have hurt character development. And now the wait until Loki premieres on June... :(</p> +</li> +<li><p>Watched <a href="https://www.primevideo.com/detail/0K677J96WQ96K6UY6BL15O70CO/"><strong>Invincible</strong></a> season 1</p> +<p>A pleasant surprise on Amazon Prime. I'm up to date and I'm liking it, it's start a bit childish but oh boy you're up to a surprise on the first episode. It seems is based on comics as well, so how knows if I would grow impatient and just read the comics instead of waiting for the next seasons.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p><a href="https://www.nintendo.es/Juegos/Nintendo-Switch/Super-Mario-3D-World-Bowser-s-Fury-1832228.html"><strong>Super Mario Bros. 3D World</strong></a></p> +<p>So. What is this madness Nintendo? Are you serious? Not only there's another world with both a crazy hard level to beat and an almost infinite star box, but now I'm supposed to beat every level with every character?</p> +<p><img src="/blog/2021/05/01/april-2021/super-mario-3d-world-madness-360.jpg" alt="Super Mario 3D World trying to make me crazy"></p> +</li> +<li><p><a href="https://rhythmheaven.fandom.com/wiki/Rhythm_Tengoku"><strong>Rhythm Tengoku (<em>リズム天国 / Rhythm Heaven</em>)</strong></a></p> +<p>So I discovered this game on a <a href="https://twitch.tv/vitiman">friend's stream</a> and I instantly fell in love. Got it second hand complete (with its box, manual and everything!). I have played various rhythm games over the years and let me tell you this one is <strong>hard</strong>. It measures your rhythm at the beginning and oh boy I'm up for a challenge here...</p> +<div class="grid"> +<div class="col-1-2"><img src="./rhythm-tengoku-01-360.jpg"></div> +<div class="col-1-2"><img src="./rhythm-tengoku-02-360.jpg"></div> +</div></li> +</ul> +<h2 id="articles-https//t-me/fmartingr-articles"><a href="https://t.me/fmartingr_articles">Articles</a></h2><ul> +<li><a href="https://www.paulosyibelo.com/2021/04/this-man-thought-opening-txt-file-is.html">This man thought opening a TXT file is fine, he thought wrong. </a></li> +<li><a href="https://secret.club/2021/04/03/runescape-heuristics.html">How Runescape catches botters, and why they didn’t catch me</a></li> +<li><strong>(tweet)</strong> <a href="https://twitter.com/NuSan_fx/status/1378759959815585795">I made a 4 kilobytes procedural image for @revision_party!</a></li> +<li><strong>(tweet)</strong> <a href="https://twitter.com/tarah/status/1380484339541151746?s=20">A plane took off 1200kg heavier than the pilot realized due to coded bias [...]</a></li> +<li><strong>(video)</strong> <a href="https://www.youtube.com/watch?v=vkzgcJGdUnA&amp;feature=youtu.be">Guidance By Railway Tracks</a></li> +<li><a href="https://fly.io/blog/docker-without-docker/">Docker without docker</a></li> +<li><a href="https://blog.djmnet.org/2019/08/02/why-do-long-options-start-with/">Why Do Long Options Start with Two Dashes?</a></li> +<li><a href="https://blog.djmnet.org/2019/08/02/why-do-long-options-start-with/">The Developer Certificate of Origin is a great alternative to a CLA</a></li> +<li><strong>(tweet)</strong> <a href="https://twitter.com/engineers_feed/status/1382351903334486018"><em>Germany has opened its first electrified highway for trucks near Frankfurt...</em></a></li> +<li><a href="http://blog.beforemario.com/2018/11/nintendos-office-and-factories-in-1970.html">Tour inside Nintendo headquarters in 1970</a></li> +<li><a href="https://secret.club/2021/04/20/source-engine-rce-invite.html">CVE-2021-30481: Source engine remote code execution via game invites</a></li> +</ul> +March 20212021-04-03T00:00:00Zurn:uuid:239e0619-969a-3bbf-be60-5a5e7c7b5a17<p>Things are changuing!</p> +<p><a href="/blog/2021/04/03/march-2021/image.jpg"><img src="/blog/2021/04/03/march-2021/image-360.jpg" alt="image alt"></a></p> +<!-- readmore --> + +<h2 id="personal">Personal</h2><p>I'm switching ships! Next month I will be starting a new position at another company as a Golang Software Engineer. Yay!</p> +<p>Deciding to leave Red Hat has been hard, but it needed to be done. Most people assume I am crazy (and I can't blame them) but you need to be honest with yourself and find out what really makes you happy. Aim for that.</p> +<h2 id="projects">Projects</h2><p>Didn't have much time this month to work on personal projects since I spent most of my free time doing some code challenges for several interviews I had. Funny thing that the position I'm going to work starting next month is not one of those.</p> +<p>That doesn't mean that I've not done things, just nothing tangible! I have some ideas here and there that I need to work on, specially for the <a href="https://github.com/fmartingr/games-screenshot-manager">games-screenshot-manager</a> and <a href="https://github.com/fmartingr/switch-games-json">switch-games-json</a> but it require a bit of preparation in advance.</p> +<h2 id="books">Books</h2><ul> +<li><p>Read <a href="https://mangadex.org/title/19613/alice-on-border-road"><strong>Alice in Border Road</strong></a></p> +<p>I liked this one more that Retry, it presents the reader with the same premise but with a different objective/path for the protagonists. Definitely recommended if you liked the first instance.</p> +</li> +<li><p>Read <a href="https://www.marvel.com/comics/series/22719/star_wars_doctor_aphra_2016_-_2019"><strong>Doctor Aphra (2016 - 2019)</strong></a></p> +</li> +<li><p>Started reding <a href="https://www.marvel.com/comics/series/29161/star_wars_doctor_aphra_2020_-_present"><strong>Doctor Aphra (2020 - present)</strong></a></p> +<p>I'm moving into comics now? I'm moving into comics now! I have been interested in reading some comics for a while, the main issue for me is that it's difficult to decide the start point. I wanted to read something from the Marvel universe but it is so vast that I ended up switching gears to this Star Wars issues that someone recommended me a while ago. And I loved it! My main issue is that the marvel unlimited app is <em>shirt</em> and I need to go and close/reopen the app every issue/several issues because some pages refuse to load... I'm not sure I will re-subscribe for a full year after this first month.</p> +</li> +</ul> +<h2 id="tvshows-and-movies">TVShows and Movies</h2><ul> +<li><p>Up to date with <a href="https://www.netflix.com/title/70281312"><strong>The Blacklist</strong></a></p> +<p>We got to the end of Season 7 (the latest available on Netflix). Honestly, I don't want to watch it anymore.</p> +</li> +<li><p>Started watching <a href="https://www.netflix.com/browse?jbv=70195800"><strong>Suits</strong></a></p> +<p>Thinking about a series that the Player 2 would like this one came to mind. I put the first episode to check and... we are at season 5 now.</p> +</li> +<li><p>Finished <a href="https://www.disneyplus.com/series/bruja-escarlata-y-vision/4arN6lqB6P3K"><strong>Wanda Vision</strong></a></p> +<p>It's over. I'm glad to say that the show got better and better the closest it got to the climax. I loved the ending and how this is going to fit into MCU's next phase.</p> +</li> +<li><p>Started <a href="https://www.disneyplus.com/series/the-falcon-and-the-winter-soldier/4gglDBMx8icA"><strong>Falcon &amp; The Winter Soldier</strong></a></p> +<p>Like and old school action movie, at least the beginning. It's good to see that they are focusing different problems in this one compared to Wanda's.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p><a href="https://www.nintendo.es/Juegos/Nintendo-Switch/Super-Mario-3D-World-Bowser-s-Fury-1832228.html"><strong>Super Mario Bros. 3D World</strong></a></p> +<p>Almost <strong>almost</strong> finished. I made through all the courses and just two or three are incomplete (missing some star or the golden flag pole). I'm assuming once I do that more things would open up...</p> +</li> +<li><p><a href="https://www.nintendo.es/Juegos/Nintendo-Switch/Pokemon-Espada-1522111.html"><strong>Pokemon Sword</strong></a> &amp; <a href="https://pokemongolive.com/en/"><em>Pokemon GO</em></a></p> +<p>Player 2 has gotten me into Pokemon again. We're aiming to complete the pokedex this time, and another friend will play along as well. This series seems really easy compared to the last one I played (Pokemon Y), I'm always like 10 levels ahead or so. Maybe the fact that I'm catching all pokemon available in the routes as I go has something to do with it though.</p> +</li> +<li><p><a href="https://www.nintendo.es/Juegos/Nintendo-Switch/Animal-Crossing-New-Horizons-1438623.html"><strong>Animal Crossing: New Horizons</strong></a></p> +<p>Barely connected a bit to get the Super Mario exclusive items and to confirm that my town and house is as dirty as it could be.</p> +</li> +</ul> +<h2 id="articles-https//t-me/fmartingr-articles"><a href="https://t.me/fmartingr_articles">Articles</a></h2><ul> +<li><a href="https://nee.lv/2021/02/28/How-I-cut-GTA-Online-loading-times-by-70/">How I cut GTA Online loading times by 70%</a></li> +<li><a href="https://jvns.ca/blog/things-your-manager-might-not-know/">Things your manager might now know</a></li> +<li><a href="https://blog.earthly.dev/using-apple-silicon-m1-as-a-cloud-engineer-two-months-in/">Using Apple Silicon (M1) as a cloud engineer, two months in</a></li> +<li><a href="https://drewdevault.com/2021/03/06/Corporate-surveillance-murder.html">The corporate surveillance machine is killing people</a></li> +<li><a href="https://www.youtube.com/watch?v=iLKTZr00xBg">Kid Asks Neil Tyson "Can A Black Hole Suck In Another Black Hole?" &amp; Gets His Mind Blown Away!</a></li> +<li><a href="https://watchnebula.com/videos/kento-bento-how-hong-kong-became-a-giant-refrigerator">Kento Bento — How Hong Kong Became a Giant Refrigerator</a></li> +<li><a href="https://www.youtube.com/watch?v=qWVTjMsv7AE">Solid - A Better Web (Simply Explained)</a></li> +<li><a href="https://tinyhack.com/2018/11/21/reverse-engineering-pokemon-go-plus/">Reverse Engineering Pokemon Go Plus</a></li> +<li>Old but gold: <a href="https://www.destroyallsoftware.com/talks/wat">wat</a></li> +<li><a href="https://twitter.com/Foone/status/1372766463556083715?s=20">Twitter thread about Duke Nukem 3D Level Engine</a></li> +<li><a href="https://drewdevault.com/2021/03/19/A-new-systems-language.html">We are building a new systems programming language</a></li> +<li><a href="https://blog.brixit.nl/do-you-really-want-linux-phones/">Do you really want linux phones</a></li> +<li><a href="https://youtube.com/watch?v=S-MaTH8WpOM">Goroutines: Under the Hood | Vicki Niu</a></li> +<li><a href="https://jvns.ca/blog/learn-how-things-work/">Get better at programming by learning how things work</a></li> +<li><a href="https://www.indiehackers.com/post/how-i-earn-a-living-selling-my-open-source-software-476f6bb07e">How I earn a living selling my open source software</a></li> +<li><a href="https://drewdevault.com/2021/03/29/The-worlds-dumbest-IRC-bot.html">The world's stupidest IRC bot</a></li> +</ul> +February 20212021-03-01T00:00:00Zurn:uuid:369d2604-dbf5-383d-bf4e-be81b7ed7406<p>A month for changes! A lot of daily grind and planning new stuff for the future.</p> +<p>We still can't move freely around but restrictions are leaving us step by step, let's see how long it lasts here, at least I'm pretty happy that I can go to my favourite coffee shop even if it's for takeaway. After a few reluctant weeks our avocado started to rise! I'm trying to track it's growth with daily pics, but oh man it grows SO fast.</p> +<p><a href="/blog/2021/03/01/february-2021/image.jpg"><img src="/blog/2021/03/01/february-2021/image-360.jpg" alt="image alt"></a></p> +<div class="text-center">Our avocado is blooming nicely :)</div><!-- readmore --> + +<h2 id="projects">Projects</h2><ul> +<li><p><a href="https://github.com/fmartingr/go-mangadex"><strong>go-mangadex</strong></a></p> +<p>A small golang library to perform requests to the MangaDex API, mainly as a side project for the one following this.</p> +</li> +<li><p><a href="https://code.fmartingr.dev/fmartingr/mangadex2cbz"><strong>mangadex2cbz</strong></a></p> +<p>A work in progress converter of Mangadex collections to a comic book format readable on mobile devices. Right now it's a bit of a mess in a single function made as a proof of concept, but you can run it and it works. A lot of testing and corner cases need to be cut though, as for example the workflow don't take into account failed downloads and it will just follow and create the volume anyway.</p> +</li> +<li><p><a href="https://github.com/fmartingr/games-screenshot-manager.git"><strong>Games Screenshot Manager</strong></a></p> +<p>I have been using this for a while (as you can check into <a href="http://gallery.fmartingr.com">my online gallery</a>) and didn't put more thought into it, just minor refactors. I want to make a proper site and announcement though, and keep expanding on the providers. As a side note, I may start a community driven list of Switch games, since Switchbrew's list is not updated very actively and the other community project don't have much maintenance lately.</p> +</li> +<li><p><a href="https://fmartingr.com"><strong>fmartingr.com</strong></a></p> +<p>I simplified the site design, removing the sidebar and using a simple header and footer. I may move from Lektor to Hugo as well, I've been doing some experiments with it for a possible wiki and it may fit. Also, is pretty fast.</p> +</li> +<li><p><a href="https://godotengine.org/"><strong>Godot Engine</strong></a> learning is still ongoing, doing some lesson games.</p> +</li> +<li><p>I still have my local infra refactor pending, and I'm constantly switching between starting a k3s cluster or just continue as I am with simple docker containers running and manually setup</p> +</li> +</ul> +<h2 id="books">Books</h2><ul> +<li><p>Read <a href="https://mangadex.org/title/2890/alice-in-borderland"><strong>Alice in Borderland</strong></a></p> +<p>I wanted to know what happened after the Netflix's show left us with the cliffhanger, and I ended up discovering that there's more to it than just one storyline.</p> +</li> +<li><p>Read <a href="https://mangadex.org/title/56129/alice-in-borderland-retry"><strong>Alice in Borderland Retry</strong></a></p> +<p>A very short sequel to the original with the same protagonist, is not as good as the main history but I liked the twist at the end.</p> +</li> +<li><p>Reading <a href="https://mangadex.org/title/19613/alice-on-border-road"><strong>Alice in Border Road</strong></a></p> +<p>Another twist to the same story, a bit boring at the beginning but it starts to grow on you once characters start developing.</p> +</li> +</ul> +<h2 id="tvshows-and-movies">TVShows and Movies</h2><ul> +<li><p>Re-started watching <a href="https://www.netflix.com/title/70281312"><strong>The Blacklist</strong></a></p> +<p>The Player 2 wanted to gave it another show, so we're now at season 7...</p> +</li> +<li><p><a href="https://www.netflix.com/title/80234304"><strong>The Queen's Gambit</strong></a></p> +<p>After a lot of people recommended it to us we managed to went through it over a weekend. I loved it, the character development and interaction, and the fact that it is a self-contained history in a few chapters (I'm growing fond of reading/watching only completed stories). I recommend it as well of course, even if you don't know anything about chess.</p> +</li> +<li><p><a href="https://www.disneyplus.com/series/bruja-escarlata-y-vision/4arN6lqB6P3K"><strong>Wanda Vision</strong></a></p> +<p>Almost through the end! As predicted the following chapters were more Marvel than the ones last month, and it has evolved quite nicely. Finale this week.</p> +</li> +<li><p><a href="https://www.disneyplus.com/series/futurama/4B9X20Pjihaf"><strong>Futurama</strong></a></p> +<p>With the addition of Star into Disney+ a bunch of TVShows and Movies where added, and Futurama has been on my backlog for quite too long.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p><a href="https://www.nintendo.es/Juegos/Nintendo-Switch/Super-Mario-3D-World-Bowser-s-Fury-1832228.html"><strong>Super Mario Bros. 3D World</strong></a></p> +<p><a href="/blog/2021/03/01/february-2021/switch-mario3dworld.jpg"><img src="/blog/2021/03/01/february-2021/switch-mario3dworld-360.jpg" alt="Super Mario 3D World Screenshot"></a></p> +<p>Almost finished it already! I'm on the last world (I think!) and have mastered all previous worlds by getting all collectibles and so on. The only letdown I have with this is that a friend told me that I need to complete the game with all available characters to unlock everything, which of course I'm not going to do. Repeating the same thing 4 more times... Nintendo, are you crazy?</p> +</li> +<li><p><a href="https://store.playstation.com/es-es/product/EP0006-CUSA12529_00-RESPAWNSWBIRDDOG"><strong>Star Wars: Jedi Fallen Order</strong></a></p> +<p>I didn't play much this month, mostly because Mario arrived and playing on the switch is way more conveniant than on the Playstation, but I want to try out is using remote play with my phone makes me more eager to sit a play through it.</p> +</li> +<li><p><a href="https://playoverwatch.com/en-us/"><strong>Overwatch</strong></a></p> +<p>I removed the dust from my windows PC some days I just wanted to have some brainless <em>pewpew</em> for 15 minutes or so. I forgot how good this game it is for short play sessions.</p> +</li> +</ul> +<h2 id="articles-https//t-me/fmartingr-articles"><a href="https://t.me/fmartingr_articles">Articles</a></h2><ul> +<li><a href="https://carltheperson.com/posts/10-things-linux">Getting better at Linux with 10 mini-projects</a></li> +<li><a href="https://hynek.me/articles/lie-vs-lay/">Lie vs Lay</a></li> +<li><a href="https://matklad.github.io//2021/02/06/ARCHITECTURE.md.html">ARCHITECTURE.md</a></li> +<li><a href="https://pgdash.io/blog/postgres-features.html?h=">PostgreSQL Features You May Not Have Tried But Should</a></li> +<li><a href="https://en.wikipedia.org/wiki/Timeline_of_the_far_future">Timeline ofthe far future</a></li> +<li><a href="https://robotmoon.com/ssh-tunnels/">Visual guide to SSH tunnels</a></li> +<li><a href="https://hackernoon.com/adding-a-pipe-operator-to-python-19a3aa295642">Adding a pipe operator to Python</a></li> +<li><a href="https://sagi.io/2018/09/dns-over-tls---thoughts-and-implementation/">DNS over TLS</a></li> +<li><a href="https://supercookie.me">Supercookie</a></li> +<li><a href="https://phabricator.wikimedia.org/T273741">Investigate unusual media traffic pattern for AsterNovi-belgii-flower-1mb.jpg on Commons</a></li> +<li><a href="https://drewdevault.com/2021/02/09/Rust-move-fast-and-break-things.html">Rust: "Move fast and break things" as a moral imperative</a></li> +<li><a href="https://www.linkedin.com/pulse/our-past-mistakes-slingshot-taiga6-release-pablo-ruiz-m%C3%BAzquiz/">Our past mistakes: Taiga 6</a></li> +<li><a href="https://blog.golang.org/experiment">Experiment, Simplify, Ship - Go</a></li> +<li><strong>video</strong> <a href="https://www.youtube.com/watch?v=Utf-A4rODH8">Building a container from scratch in Go</a></li> +<li><a href="https://popey.com/blog/2021/02/the-allure-of-the-terminal/">The allure of the terminal</a></li> +<li><a href="https://twitter.com/Foone/status/1360336044869099522">Researching an old laptop</a></li> +<li><a href="https://ervinbarta.com/2019/08/06/upcase-in-go-the-long-way-around/">Checking a character's case in Go, the long way around</a></li> +<li><a href="https://paleotronic.com/2018/06/15/confessions-of-a-disk-cracker-the-secrets-of-4am/">Confessions of a Disk Cracker: the secrets of 4am</a></li> +<li><a href="https://overreacted.io/goodbye-clean-code/">Goodbye, clean code</a></li> +<li><a href="https://support.apple.com/en-ng/guide/security/secbbd20b00b/1/web/1">Hardware microphone disconnect in Apple devices</a></li> +<li><a href="https://daisygames.wordpress.com/2021/02/20/how-i-made-hack-grid/">How I made hack grid</a></li> +<li><a href="https://blog.haschek.at/2021/how-i-heat-my-home-by-mining.html">How I heat my home by mining crypto currencies</a></li> +<li><a href="https://blog.cloudflare.com/encrypted-sni/">Encrypted SNI</a></li> +<li><a href="https://www.nytimes.com/2021/02/24/business/japan-anime.html">Anime is booming. So why are animators living in poverty?</a></li> +</ul> +January 20212021-02-01T00:00:00Zurn:uuid:80654cfb-2563-3dea-af41-58ca3d86846c<p><a href="https://www.copernicus.eu/en/media/image-day-gallery/madrid-covered-snow"><img src="/blog/2021/02/01/january-2021/image-360.jpg" alt="Madrid snowed from the Coppernicus"></a></p> +<blockquote><p>Image credit: European Union, Copernicus Sentinel-2 imagery</p> +</blockquote> +<!-- readmore --> + +<h2 id="projects">Projects</h2><ul> +<li><p><a href="https://github.com/fmartingr/games-screenshot-manager.git"><strong>Games Screenshot Manager</strong></a>: I've added a few +new providers to get screenshots from, some file naming fixes for Windows and the option to download covers +for games to create a nice gallery with them.</p> +<p>I still need to do some improvements on how options traverse through the CLI to providers to have a more +robust system in place, and also to allow some unused options on current providers, for example allow overriding +a provider's default <code>input-path</code> or anything else, along with custom arguments that providers may need.</p> +</li> +<li><p>I've uploaded my <a href="http://gallery.fmartingr.com">gallery of screenshots online</a>. I've made that using the above +and <a href="https://github.com/thumbsup/thumbsup">thumbsup</a> along with some scripts to set it all together. I love the +result.</p> +</li> +<li><p><a href="https://github.com/fmartingr/butterrobot.git"><strong>Butterrobot</strong></a> has gone thorugh some small fixes as well. I'm +already using the new version at work and everything seems to be working fine. I need to add some proper testing +and review all the <em>TODO</em> coments I have laying around.</p> +</li> +<li><p>We got a brand new NAS at home and I've been digging through hard drives and computers to start organizing all +my digital life in there. It's a work in progress that will take a lot of time.</p> +</li> +<li><p>Home Assistant have a few improvements in terms of automations, lovelace dashboards and so on. Zigbee configuration +has been a bit of a hassle since every motion and door sensor stopped being paired with my zigbee stick so I'm +using a different integration to and so far everything seems to be working.</p> +</li> +<li><p>I've started learning <a href="https://godotengine.org/">Godot</a>. I've always wanted to make and publish a game, and in the +past (<a href="https://www.youtube.com/watch?v=tAVVy_x3Erg">when I was very young</a>) I made some small things using +<a href="https://es.wikipedia.org/wiki/DIV_Games_Studio">DIV Games Studio</a>, +<a href="https://en.wikipedia.org/wiki/The_Game_Creators#DarkBASIC">Dark Basic</a> and +<a href="https://en.wikipedia.org/wiki/Blitz_BASIC">BlitzBasic</a> +but my career on game development ended abruptly, and there was that. Until today.</p> +<p>Even though I did some little game using Unity a few years back, Godot seems like a very powerful game development +enviroment, it exports to several platforms, it's easy to understand (though hard to master!) and it's open source.</p> +<p>Not looking a career on game development but at least to cross out something I've wanted to learn for quite some +time now.</p> +</li> +<li><p>I'm thinking the best way of handling "guides" for the blog (as I started with the one for Home Assistant). Sometimes +I think a post is the better way because I can use as a note while I'm working on something, but lately I've been +thinking on setting up a simple wiki that could store the same content but be constantly updated and I can use it as +reference as well. I would have to find an easy way of storing the information and building it that is not overly +complicated and allows me freedom to have it as a bunch of markdown files on a folder.</p> +</li> +</ul> +<h2 id="books">Books</h2><ul> +<li><p><a href="https://www.goodreads.com/book/show/28251.The_High_Lord"><strong>The high lord</strong></a> (<em>Trudi Canavan</em>)</p> +<p>Finished the trilogy. I'm sad to say that this was average (at best) for me... the real story starts happening in +the last book; pretty condensed for a trilogy while the first two only set ups the characters with nothing +interesting happening and to make things worse the ending feels pretty rushed and boring.</p> +<p>I read it through the end though, so it had the necessary components to me to be engaged.</p> +</li> +<li><p>Started reading <a href="https://www.goodreads.com/book/show/222146.Masters_of_Doom"><strong>Masters of Doom</strong></a></p> +<p>I couldn't decide for any fantasy series to read now, so I'm going to read something different and see how it goes.</p> +</li> +</ul> +<h2 id="tvshows-and-movies">TVShows and Movies</h2><ul> +<li><p><a href="https://www.disneyplus.com/movies/star-wars-the-last-jedi-episode-viii/1nCWFK1pmAI0"><strong>Star Wars: Rise of Skywalker</strong></a></p> +<p>Star Wars Marathon finishes!</p> +</li> +<li><p><a href="https://www.netflix.com/title/70281312"><strong>The Blacklist</strong></a></p> +<p>Reached Season 5.</p> +<p>We're debating if continuing with this or not. While I enjoy James Spader a lot on the show the main reason to watch +it is the hook they have on us with the parent - daughter - spy mystery situation. It was nice at first but after +<strong>five seasons</strong> we still don't have clear answers for anything and when they give us a glimpse of one, on the next +episode everyone seems to forget about it. It's frustrating. And the relationship between the to main characters is +annoying with their "Love, now hate, now maybe love?" behavior each episode...</p> +</li> +<li><p><a href="https://www.disneyplus.com/series/bruja-escarlata-y-vision/4arN6lqB6P3K"><strong>Wanda Vision</strong></a></p> +<p>Slow start for the Marvel's Cinematic Universe on TV Shows. The first chapters are too much sitcom and very little "real +world" related. I hope this unfolds better in later episodes and that the other series that are yet to come are +better than this... I know that the last episode have more "Marvel" stuff, but it was one episode out of four released +to date... let's see how it goes on the fifth.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p><a href="https://www.nintendo.es/Juegos/Nintendo-Switch/Hyrule-Warriors-La-era-del-cataclismo-1838129.html"><strong>The legend of Zelda: Age of Calamity</strong></a></p> +<p>Finally rushed through the final parts of the main story. I liked the game but it got very repetitive and I grew +bored of farming items or stuff to unlock improvements for the characters, so I just finsihed the 3 or 4 last +story missions with my underlevel characters and called it a day.</p> +<p>Even at the end you got a lot of new stuff to unlock in the missions map, and that's gonna stay there for +the foreseable future.</p> +</li> +<li><p><a href="https://store.steampowered.com/agecheck/app/377840/"><strong> Final Fantasy IX</strong></a></p> +<p>I played a bit through it, the problem is that last time I played was on spring 2019... I forgot almost everything about +the story so far (which I didn't like very much at the time, and I wasn't enjoying it now...) so I got almost through the +end when I decided I should move into other things.</p> +</li> +<li><p><a href="https://store.playstation.com/es-es/product/EP0006-CUSA12529_00-RESPAWNSWBIRDDOG"><strong>Star Wars: Jedi Fallen Order</strong></a></p> +<p>Got this as a Christmas present and I'm slowly going through it. There are some bugs here and there, but I wanted to play +something Star Wars related and this seems the best thing at the moment. I love BD-1.</p> +<p><a href="/blog/2021/02/01/january-2021/fallen-order.jpg"><img src="/blog/2021/02/01/january-2021/fallen-order-360.jpg" alt="Jedi Fallen Order Screenshot"></a></p> +</li> +<li><p>I discovered <a href="https://retroachievements.org">RetroAchievements</a> thanks to RetroArch, and I'm amazed and how the community +put this together for all of us. It works incredibly well (for the few I've tried so far) and you can even set up +retroarch to make a screenshot automatically once you unlock an achievement, how amazing is that?</p> +</li> +</ul> +<h2 id="articles-https//t-me/fmartingr-articles"><a href="https://t.me/fmartingr_articles">Articles</a></h2><ul> +<li>[video] <a href="https://youtu.be/Hu4H5ykBP0I">ACTION BUTTON REVIEWS The Final Fantasy VII Remake</a></li> +<li><a href="https://rosenzweig.io/blog/asahi-gpu-part-1.html">Rosenzweig – Dissecting the Apple M1 GPU, part I</a></li> +<li><a href="https://owlspace.xyz/cybersec/steam-login/">Steam's login method is kinda interesting</a></li> +<li><a href="https://lists.zx2c4.com/pipermail/wireguard/2020-December/006226.html">"Wireguard [sic]: great protocol, but skip the Mac app" blog post</a></li> +<li><a href="https://www.murilopereira.com/the-values-of-emacs-the-neovim-revolution-and-the-vscode-gorilla/">The values of Emacs, the Neovim revolution and the VSCode gorilla</a></li> +<li><a href="https://bugs.xdavidhu.me/google/2021/01/18/the-embedded-youtube-player-told-me-what-you-were-watching-and-more/">The Embedded YouTube Player Told Me What You Were Watching (and more)</a></li> +<li><a href="https://shkspr.mobi/blog/2021/01/thats-not-how-2fa-works/">That’s not how 2FA works</a></li> +<li><a href="https://gemini.circumlunar.space/docs/specification.html">Project Gemini</a></li> +<li>[gemini] <a href="gemini://drewdevault.com/2021/01/02/2021-01-02-Every-commit-should-be-perfect.gmi">Every commit should be perfect</a></li> +<li><a href="https://blog.nelhage.com/post/reflections-on-performance/">Reflections on software performance</a> </li> +<li><a href="https://www.reddit.com/r/gamedev/comments/l1vz6w/jumping_on_the_bandwagon_here_newbies_listen_to/">Jumping on the bandwagon here: Newbies, listen to the established wisdom. I spent 7 years trying to make ambitious games to "break in" to the industry. I wish I spent 7 years making achievable games. The only time I tried to make something achievable, it paid off and I got a AAA gig.</a></li> +<li><a href="https://scarpino.dev/posts/sway-and-the-dock-station.html">Andrea Scarpino - Sway and the Dock station</a></li> +<li><a href="https://www.nintendolife.com/news/2020/02/nes_creator_reveals_the_shocking_story_behind_that_infamous_flap">NES Creator Reveals The "Shocking" Story Behind That Infamous Flap</a></li> +<li><a href="https://jvns.ca/blog/2021/01/23/firecracker--start-a-vm-in-less-than-a-second/">Firecracker: start a VM in less than a second</a></li> +<li><a href="https://mohit.athwani.net/blog/understanding-the-fork-system-call-in-unix">Understanding the fork() system call in UNIX</a></li> +<li><a href="https://tuckersiemens.com/posts/node-example-com-is-an-ip-address/">node.example.com Is An IP Address</a></li> +<li><a href="https://drewdevault.com/2021/01/28/Use-open-platforms-or-else.html">Use open platforms — or else</a></li> +</ul> +December 20202021-01-01T00:00:00Zurn:uuid:ac985fb8-8844-304d-afd8-b5010d576994<p>Oh boy, here we go again. Christmas season is with us one more time.</p> +<p>For anyone that doesn't know me even a little: I don't like Christmas. It is the most consumerist period of the year, everything is packed with people (even in 2020, how's that even possible!). The only good thing is you can meet with some people even if it is a few meters away in a park freezing yourself.</p> +<p><a href="/blog/2020/01/01/december-2020/image.jpg"><img src="/blog/2020/01/01/december-2020/image-360.jpg" alt="image alt"></a></p> +<!-- readmore --> + +<h2 id="projects">Projects</h2><ul> +<li><p><a href="https://github.com/fmartingr/butterrobot"><strong>Butterrobot</strong></a> has gone some improvements and it can be shipped now. The admin interface is now useable and the basic features are bundled in. I had to work a bit on how I abstracted <em>queries</em> and <em>objects</em> internally since it was a bit of a mess but I think it's way easier to understand now. I love <a href="https://docs.python.org/3/library/dataclasses.html"><code>dataclasses</code></a>.</p> +<p>There's still a lot of work to do with testing and documentation.</p> +</li> +<li><p>Slow progress on the <a href="https://github.com/fmartingr/games-screenshot-manager"><strong>Games Screenshot Manager</strong></a>. Don't get me wrong, it's functional and I already use it to manage my screenshots gallery but I need to automate some processes, add tests and get path cleaning to work properly. Also I'm missing some games that I'll need to fill out along with improvements on the Nintendo Switch department.</p> +</li> +<li><p>I've started setting up Home Assistant way more seriously <a href="/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/">as you can see in my previous post</a>. The project has grown a lot since I started playing with it and my journey to self-host is way far from being finished, but I already manage to unplug some chinese <em>always-on-always-on-internet</em> devices that I wasn't feeling super comfortable having on my network. Baby steps.</p> +</li> +<li><p>We are getting better at 3D printing at home as well. After <strong>a lot</strong> of trial and error we managed to print some decent quality pieces on our Rotrics DexArm. We've had it since August and didn't start doing anything with it until now. Shame on us.</p> +<p>Hopefully I can get some Pi's cases done this month so I can put one or two cameras to keep an eye on it in case the print get stuck or any other problem we may have. And if this <a href="https://octoprint.org/">OctoPrint</a> thingy works with our unit it would be awesome to have a Home Assistant panel dedicated to it. My backlog keeps growing and I keep getting older.</p> +</li> +<li><p>I've set up my laptop from scratch, and since Antergos is gone now I've installed a base Arch Linux without any wrapper. I was very pleased to see that everything was working out of the box pretty easily.</p> +</li> +</ul> +<h2 id="books">Books</h2><ul> +<li><p>Finished reading <a href="https://www.goodreads.com/book/show/28249.The_Magicians_Guild"><strong>The Magicians' Guild</strong></a> (<em>Trudi Canavan</em>)</p> +<p>I liked it, it's nothing super impressive but enjoyable for fantasy lovers, and I'm glad my reading habit came back, +I already have enough backlog as it is. I'm continuing with the trilogy with the next ones now:</p> +<ul> +<li>Read <a href="https://www.goodreads.com/book/show/28250.The_Novice"><strong>The Novice</strong></a> (second part of the trilogy)</li> +<li>And started reading: <a href="https://www.goodreads.com/book/show/28251.The_High_Lord"><strong>The high lord</strong></a> (last installment)</li> +</ul> +</li> +</ul> +<h2 id="tvshows-and-movies">TVShows and Movies</h2><ul> +<li><a href="https://www.disneyplus.com/movies/star-wars-return-of-the-jedi-episode-vi/6QGKo5mjDBS8"><strong>Star Wars: Return of the Jedi</strong></a></li> +<li><a href="https://www.disneyplus.com/movies/star-wars-the-force-awakens-episode-vii/1LEKJPDPeMr7"><strong>Star Wars: The force awakens</strong></a></li> +<li><p><a href="https://www.disneyplus.com/movies/star-wars-the-last-jedi-episode-viii/1nCWFK1pmAI0"><strong>Star Wars: The last jedi</strong></a></p> +<p>Star Wars Marathon continues!</p> +<p>Tried to watch <strong>Star Wars: Resistance</strong> but it just wasn't my kind of show, only watched three episodes. I hope I don't miss anything interesting in there. Should I at least watch the last season?</p> +</li> +<li><p><a href="https://www.disneyplus.com/series/the-mandalorian/3jLIGMDYINqD"><strong>Mandalorian</strong></a></p> +<p>It's over now :(</p> +<p>A <strong>very good</strong> season, looking forward to all the new TV Shows and movies announced for Disney+ in the future (both from Star Wars and the Marvel Cinematic Universe).</p> +<p class="spoiler">While I love the series the Luke Skywalker reveal of the end killed it a bit for me (since I was expecting Ezra Bridger to show up). I don't understand the reasoning behind using CGI faces for these actors... if you're going to play with the character again just get a new actor with some resemblance the way you did it with Solo.</p><p class="spoiler">I still don't understand on which position this leaves the last trilogy, the future seasons for Mandalorian and every other spin-off that Disney will launch, but well. They are doing a really good job with this, can't wait for the Ashoka show to air and whatever that final mention of Boba Fett was, it was about time this character was portrayed as he deserved.</p></li> +<li><p><a href="https://www.netflix.com/title/70281312"><strong>The Blacklist</strong></a></p> +<p>We're hooked.</p> +</li> +<li><p><a href="/blog/2020/01/01/december-2020/"><strong>Alice in Borderland</strong></a></p> +<p>It's seems like a good adaptation of the original manga, though it keep getting worse through the end. I think I will try to read the original, it's been a while I've immersed in a story like this since Kamisama if I recall correctly.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p><a href="https://minecraft.net"><strong>Minecraft</strong></a></p> +</li> +<li><p><a href="https://www.nintendo.es/Juegos/Nintendo-Switch/Hyrule-Warriors-La-era-del-cataclismo-1838129.html"><strong>The legend of Zelda: Age of Calamity</strong></a></p> +<p>I'm almost finished (I think!) but the game keep unlocking stuff on the map that I have to complete.</p> +</li> +<li><p><a href="https://swtor.com"><strong>Star Wars: The old republic</strong></a></p> +<p>I was hoping to get on Fallen Order this month but <a href="https://news.xbox.com/en-us/2020/12/15/update-on-ea-play-xbox-game-pass-for-pc-2021/">Microsoft delayed the release of EA Play for Xbox Game Pass for PC</a> until sometime next year, so to get rid of my latest Star Wars hype I started a new character on the MMORPG.</p> +<p><img src="/blog/2020/01/01/december-2020/swtor-360.jpg" alt="Star Wars The Old Republic launch to lightspeed"></p> +</li> +<li><p><a href="https://store.steampowered.com/agecheck/app/377840/"><strong> Final Fantasy IX</strong></a></p> +<p>I started this a good while ago and I have but forgotten the history until the point I'm in. I'm trying to remember and find my way now, since I have a bit extra time to play a "time consuming" game.</p> +<p>I can't recommend the <a href="https://sites.google.com/view/moguri-mod/home">Moguri Mod</a> enough to anyone who wants to play this on PC. It's an abbysal difference from the base experience, special mention to the backgrounds and the font.</p> +<p><a href="/blog/2020/01/01/december-2020/ff9.jpg"><img src="/blog/2020/01/01/december-2020/ff9-360.jpg" alt="Final Fantasy IX Screenshot"></a></p> +</li> +</ul> +<h2 id="articles-https//t-me/fmartingr-articles"><a href="https://t.me/fmartingr_articles">Articles</a></h2><ul> +<li><a href="https://googleprojectzero.blogspot.com/2020/12/an-ios-zero-click-radio-proximity.html">An iOS zero-click radio proximity exploit odyssey</a></li> +<li><a href="https://www.raspberrypi.org/blog/designing-the-raspberry-pi-case-fan/">Designing the Raspberry Pi Case Fan</a></li> +<li><a href="https://debugger.medium.com/why-is-apples-m1-chip-so-fast-3262b158cba2">Why Is Apple’s M1 Chip So Fast?</a></li> +<li><a href="https://fabiensanglard.net/silicone/">These are called opportunities</a></li> +<li><a href="https://mondaynote.com/apple-silicon-m1-disruption-af11f639103a">Apple Silicon M1 Disruption</a></li> +<li><a href="https://roarmag.org/essays/win-back-the-internet/">Winning back the internet by building our own</a></li> +<li><a href="https://webdatarender.com/">Web data render</a></li> +<li><a href="https://youtu.be/-qPDLh1Xr-M">Do Kyoto's Japanese local want foreigners to return?</a></li> +<li><a href="https://chromeisbad.com">Chrome is Bad</a>?</li> +<li><a href="https://n-o-d-e.net/node_mini_server3.html">N-O-D-E Mini server v3</a></li> +<li><a href="https://betterdev.blog/minimal-safe-bash-script-template/">Minimal safe Bash script template</a></li> +<li><a href="https://netflixtechblog.com/life-of-a-netflix-partner-engineer-the-case-of-extra-40-ms-b4c2dd278513">Life of a Netflix Partner Engineer — The case of the extra 40 ms</a></li> +</ul> +Self-hosting my home with Home Assistant (part 1)2020-12-20T00:00:00Zurn:uuid:2f330d72-58f5-3fec-8fe1-06dfbc4ca4b6<p>Even if I've been a Home Assistant's user for quite some time I have never dedicated myself to have a truly stable and dedicated service at home. I always treated it more like a pet project than anything else, but this is changing now.</p> +<p>I have a fair amount of <em>Smart Devices</em> around the house and just as you come to expect they come from different companies, protocols and sizes. Each day it passes I'm more and more concerned about my privacy and the value of the hardware I do not truly own.</p> +<p>With this in mind I have started <strong>the journey of self-hosting!</strong> Which to put it simply is... every device that is in my home (with a few exceptions that you'll see later) will be controlled by this Home Assistance instance.</p> +<!-- readmore --> + +<blockquote><p>Note: I wanted to install this on a USB Drive, but apparently that's still not supported for <em>Home Assistant OS</em>, so I'm stuck with an SD Card for now. Some time after starting working on this I heard about <a href="https://www.home-assistant.io/blog/2020/12/13/home-assistant-os-release-5/#external-data-disk"><code>datactl</code></a> but I will setup that sometime later.</p> +</blockquote> +<h2 id="base-home-assistant-os-using-an-sd-card">Base Home Assistant OS using an SD Card</h2><p>For this just stick to the <a href="https://www.home-assistant.io/hassio/installation/">official documentation</a>. Only download the latest release <a href="https://github.com/home-assistant/operating-system/releases">from github</a> and copy the <em>img</em> card to your SD Card with <code>dd</code>, Balena or the tool of choice.</p> +<p>Put the SD Card on your Pi, turn it on and let's get started.</p> +<h2 id="base-installation">Base installation</h2><p>After booting, you will be welcome with a wizard installation. Just follow the basic instructions to generate the main user/account, and the name and location for your home assistant.</p> +<p>Bonus: Use some website <a href="https://www.freemaptools.com/elevation-finder.htm">like this</a> to get your elevation if you're feeling picky.</p> +<p>After that, you will be greeted by something similar to this:</p> +<p><a href="/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/base.png"><img src="/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/base-360.png" alt="Base install after the wizard"></a></p> +<h2 id="update-the-system">Update the system</h2><p>Go to your Supervisor tab and check if you have any pending updates.</p> +<h2 id="moving-to-mariadb">Moving to MariaDB</h2><p>The default database backend is SQLite, and that has it's limitations, so let's move everything to MariaDB before any other configuration.</p> +<ol> +<li>Install the File editor addon from <strong>Supervisor &gt; Add-ons &gt; File editor</strong> and start it.</li> +<li>Install the MySQL addon from <strong>Supervisor &gt; Add-ons &gt; MariaDB</strong></li> +<li>Once installed, go to the configuration tab and set a password</li> +<li>Under the Info tab start the MariaDB Service and enable the Watchdog service</li> +<li>Go to the file editor interface and edit the <code>configuration.yaml</code> file.</li> +<li><p>Add the configuration for the <a href="https://www.home-assistant.io/integrations/recorder/"><code>recorder</code></a> integration:</p> +<div class="hll"><pre><span></span><span class="nt">recorder</span><span class="p">:</span> + <span class="nt">db_url</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">mysql://homeassistant:&lt;password&gt;@core-mariadb/homeassistant?charset=utf8</span> + <span class="nt">commit_interval</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">5</span> + <span class="nt">purge_keep_days</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">90</span> + +<span class="nt">history</span><span class="p">:</span> +</pre></div> +<p>In this case I also set data to be stored for 90 days and a 5s delay between disk writes (since I'm using an SD Card and their lifespan is not very long with abundant I/O).</p> +<p>More information on the documentation: <a href="https://www.home-assistant.io/integrations/recorder/"><code>recorder</code></a>, <a href="https://www.home-assistant.io/integrations/history/"><code>history</code></a></p> +</li> +<li>Restart Home Assistant for the changes to take effect under <strong>Configuration &gt; Server Constrols &gt; Restart</strong>.</li> +</ol> +<h2 id="backups">Backups</h2><p>Now another if not the most important of them all, automatic snapshots in case something goes wrong.</p> +<p>Go to <strong>Configuration &gt; Automations &gt; Add automation</strong>, and in top-right hamburger menu press <strong>Edit as YAML</strong>.</p> +<p>This configuration will perform a Weekly Snapshot every Monday at 3.00 AM. It is a sensible default once Home Assistant is running, but if you're going to play with it you may need to consider more frequent backups.</p> +<div class="hll"><pre><span></span><span class="nt">alias</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">Weekly Snapshot</span> +<span class="nt">description</span><span class="p">:</span> <span class="s">&#39;Performs</span><span class="nv"> </span><span class="s">a</span><span class="nv"> </span><span class="s">weekly</span><span class="nv"> </span><span class="s">snapshot&#39;</span> +<span class="nt">mode</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">single</span> +<span class="nt">trigger</span><span class="p">:</span> + <span class="p p-Indicator">-</span> <span class="nt">platform</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">time</span> + <span class="nt">at</span><span class="p">:</span> <span class="s">&#39;03:00&#39;</span> +<span class="nt">condition</span><span class="p">:</span> + <span class="p p-Indicator">-</span> <span class="nt">condition</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">time</span> + <span class="nt">weekday</span><span class="p">:</span> + <span class="p p-Indicator">-</span> <span class="l l-Scalar l-Scalar-Plain">mon</span> +<span class="nt">action</span><span class="p">:</span> + <span class="p p-Indicator">-</span> <span class="nt">service</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">hassio.snapshot_full</span> + <span class="nt">data</span><span class="p">:</span> + <span class="nt">name</span><span class="p">:</span> <span class="s">&#39;weekly_{{</span><span class="nv"> </span><span class="s">now().strftime(</span><span class="se">&#39;&#39;</span><span class="s">%Y-%m-%d</span><span class="se">&#39;&#39;</span><span class="s">)</span><span class="nv"> </span><span class="s">}}&#39;</span> +</pre></div> +<p>Keep in mind that this snapshots are stored on the <code>/backup</code> folder on the Home Assistant instance, you need to create a way of moving that <strong>out</strong> of the system. You can use other automation, SCP from another machine or any compatible tool of your choice.</p> +<h2 id="setting-up-accounts-and-users-that-will-use-the-system">Setting up accounts and users that will use the system</h2><p>This used to be more complex a while ago, now you only need to go to <strong>Configuration &gt; People</strong> and add the users you need.</p> +<p>Now you can even add the avatar directly from the interface! Back in the day you required to upload the file and fiddling with YAMLs.</p> +<p>Also, for some options and add-ons to display, you need to enable "Advanced mode" on your user profile page.</p> +<p><img src="/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/advanced_mode-360.png" alt="Advanced mode enabled on my user"></p> +<h2 id="ssh-access">SSH Access</h2><p>Easily handled by an integration, as almost everything with Home Assistant.</p> +<blockquote><p>For this add-on to show up you need to enable Advanced mode as shown in the previous step.</p> +</blockquote> +<p>Just install the <strong>Terminal and SSH</strong> addon, add your ssh key under the configuration tab under the <code>authorized_keys</code> property, and expose a port for the SSH server on the host. After that Start the service and enable the Watchdog to monitor it in case it fails.</p> +<h2 id="enable-ssl">Enable SSL</h2><p>Even if my home assistant installation is going to be LAN only (using a VPN to have external access) I always setup SSL in all my services and while there are some options when setting this up with Home Assistant, I went the nginx way since that's what I'm more comfortable with.</p> +<p>Go to <strong>Supervisor &gt; Add-on Store</strong> and install the <strong>NGINX Home Assistant SSL proxy</strong>.</p> +<p>Put your files under <code>/ssl</code> connecting to the instance via SSH or using any file editor addon on the store.</p> +<p>Under its <strong>Configuration</strong> tab, set up the domain and path to the certificate and key files.</p> +<div class="hll"><pre><span></span><span class="nt">domain</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">homeassistant.local</span> +<span class="nt">certfile</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">nginx/homeassistant.local/homeassistant.crt</span> <span class="c1"># Relative to /ssl</span> +<span class="nt">keyfile</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">nginx/homeassistant.local/homeassistant.key</span> <span class="c1"># Relative to /ssl</span> +</pre></div> +<p>There are a number of guides out there to generate self-signed certificates. I have my own Certificate Authority that use to sign certificates for my local services, that way I can just trust my own CA and every dependant certificate will work out of the box.</p> +<p>As a note, for this to work with the companion apps on iOS you need to generate the certificates with <a href="https://support.apple.com/en-us/HT210176">pretty specific requisites</a>. Android worked as a charm.</p> +<h2 id="getting-the-home-assistant-companion">Getting the Home Assistant Companion</h2><p>Download the application from your phone's store and after logging in you can setup the sensors to be sent to Home Assistant, this will be linked to your account so you could perform automation with them on the server.</p> +<p>Apart from using the app to control your home devices, the sensors will be useful to generate automation in the future.</p> +<p>Another useful thing to setup here is the local (LAN) address to use when the phone is connected to Wifi at home, using an external hostname when connecting via VPN/RemoteControl.</p> +<h2 id="the-first-automation-tell-me-about-updates">The first automation: tell me about updates</h2><p>I use an script to send notifications to all devices (persons) on the house, with the <code>title</code> and <code>message</code> parameter:</p> +<div class="hll"><pre><span></span><span class="nt">alias</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">Send Notifications</span> +<span class="nt">sequence</span><span class="p">:</span> + <span class="p p-Indicator">-</span> <span class="nt">service</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">notify.mobile_app_oneplus6</span> + <span class="nt">data</span><span class="p">:</span> + <span class="nt">title</span><span class="p">:</span> <span class="s">&#39;{{</span><span class="nv"> </span><span class="s">title</span><span class="nv"> </span><span class="s">}}&#39;</span> + <span class="nt">message</span><span class="p">:</span> <span class="s">&#39;{{</span><span class="nv"> </span><span class="s">message</span><span class="nv"> </span><span class="s">}}&#39;</span> +<span class="c1"># Insert more notifcations into sequence</span> +<span class="nt">mode</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">single</span> +<span class="nt">variables</span><span class="p">:</span> + <span class="nt">title</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">null</span> + <span class="nt">message</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">null</span> +</pre></div> +<p>And this automation will check when there are any updates and send a notification using the previous script with the version number that just came in:</p> +<div class="hll"><pre><span></span><span class="nt">alias</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">Update notification</span> +<span class="nt">description</span><span class="p">:</span> <span class="s">&quot;Notify</span><span class="nv"> </span><span class="s">everyone</span><span class="nv"> </span><span class="s">when</span><span class="nv"> </span><span class="s">there&#39;s</span><span class="nv"> </span><span class="s">an</span><span class="nv"> </span><span class="s">update</span><span class="nv"> </span><span class="s">available&quot;</span> +<span class="nt">trigger</span><span class="p">:</span> + <span class="p p-Indicator">-</span> <span class="nt">platform</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">state</span> + <span class="nt">entity_id</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">binary_sensor.updater</span> + <span class="nt">from</span><span class="p">:</span> <span class="s">&#39;off&#39;</span> + <span class="nt">to</span><span class="p">:</span> <span class="s">&#39;on&#39;</span> +<span class="nt">condition</span><span class="p">:</span> <span class="p p-Indicator">[]</span> +<span class="nt">action</span><span class="p">:</span> + <span class="p p-Indicator">-</span> <span class="nt">service</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">script.send_notifications</span> + <span class="nt">data</span><span class="p">:</span> + <span class="nt">title</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">New Home Assistant Release</span> + <span class="nt">message</span><span class="p">:</span> <span class="p p-Indicator">&gt;-</span> + <span class="no">Home Assistant {{ state_attr(&#39;binary_sensor.updater&#39;, &#39;newest_version&#39;)</span> + <span class="no">}} is now available.</span> +<span class="nt">mode</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">single</span> +</pre></div> +<p><img src="/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/update_notification-360.jpg" alt="Update notification on my phone"></p> +<h2 id="add-system-sensors">Add system sensors</h2><p>I want to control how the Raspberry is doing, so I'm going to enable some system sensors using the <a href="https://www.home-assistant.io/integrations/systemmonitor"><code>systemmonitor</code></a> sensor.</p> +<p>Edit the <code>configuration.yaml</code> file and add the following:</p> +<div class="hll"><pre><span></span><span class="nt">sensor</span><span class="p">:</span> + <span class="p p-Indicator">-</span> <span class="nt">platform</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">systemmonitor</span> + <span class="nt">resources</span><span class="p">:</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">disk_use_percent</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">memory_use_percent</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">swap_use_percent</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">load_1m</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">load_5m</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">load_15m</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">processor_use</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">processor_temperature</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">last_boot</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">throughput_network_in</span> + <span class="nt">arg</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">eth0</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">throughput_network_out</span> + <span class="nt">arg</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">eth0</span> +</pre></div> +<p>This requires a Home Assistant restart for the changes to take effect.</p> +<p>I also added a custom lovelace dashboard to monitor everything easily, here is the YAML configuration:</p> +<div class="hll"><pre><span></span><span class="nt">views</span><span class="p">:</span> + <span class="p p-Indicator">-</span> <span class="nt">title</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">Overview</span> + <span class="nt">path</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">overview</span> + <span class="nt">icon</span><span class="p">:</span> <span class="s">&#39;mdi:eye&#39;</span> + <span class="nt">visible</span><span class="p">:</span> + <span class="p p-Indicator">-</span> <span class="nt">user</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">be3b6f5bc71c49ff9be6830d545cb4e0</span> + <span class="nt">badges</span><span class="p">:</span> <span class="p p-Indicator">[]</span> + <span class="nt">cards</span><span class="p">:</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">grid</span> + <span class="nt">cards</span><span class="p">:</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">gauge</span> + <span class="nt">entity</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">sensor.processor_use_percent</span> + <span class="nt">min</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">0</span> + <span class="nt">max</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">100</span> + <span class="nt">name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">Processor</span> + <span class="nt">severity</span><span class="p">:</span> + <span class="nt">green</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">50</span> + <span class="nt">yellow</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">75</span> + <span class="nt">red</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">80</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">gauge</span> + <span class="nt">entity</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">sensor.memory_use_percent</span> + <span class="nt">min</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">0</span> + <span class="nt">max</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">100</span> + <span class="nt">severity</span><span class="p">:</span> + <span class="nt">green</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">50</span> + <span class="nt">yellow</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">65</span> + <span class="nt">red</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">75</span> + <span class="nt">name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">Memory</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">gauge</span> + <span class="nt">entity</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">sensor.disk_use_percent</span> + <span class="nt">min</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">0</span> + <span class="nt">max</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">100</span> + <span class="nt">name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">Disk usage</span> + <span class="nt">severity</span><span class="p">:</span> + <span class="nt">green</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">50</span> + <span class="nt">yellow</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">60</span> + <span class="nt">red</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">75</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">gauge</span> + <span class="nt">entity</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">sensor.processor_temperature</span> + <span class="nt">min</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">0</span> + <span class="nt">severity</span><span class="p">:</span> + <span class="nt">green</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">45</span> + <span class="nt">yellow</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">50</span> + <span class="nt">red</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">55</span> + <span class="nt">max</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">70</span> + <span class="nt">name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">Temperature</span> + <span class="p p-Indicator">-</span> <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">gauge</span> + <span class="nt">entity</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">sensor.load_5m</span> + <span class="nt">min</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">0</span> + <span class="nt">max</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">4</span> + <span class="nt">severity</span><span class="p">:</span> + <span class="nt">green</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">1</span> + <span class="nt">yellow</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">2</span> + <span class="nt">red</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">3</span> +<span class="nt">title</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">System</span> +</pre></div> +<p>And here's a preview:</p> +<p><img src="/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/system_monitor-360.png" alt="Home Assistant simple system monitor lovelace dashboard"></p> +<h2 id="adding-integrations">Adding integrations</h2><p>At this point if you already have devices on your network your Home Assistant will send you a notification like this:</p> +<p><a href="/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/notification.png"><img src="/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/notification-360.png" alt="Notification telling that devices where found on network"></a></p> +<p>So I'm going to setup the base integrations with the server to start controlling some devices.</p> +<h3 id="chromecast">Chromecast</h3><blockquote><p>But you said self-hosted! Yeah, yeah... And I want to, but there's no real alternative to the Cast protocol to self host, the speakers with Chromecast devices are just so convenient...</p> +</blockquote> +<p>One of the simplest things to set up, just go to your integrations and add it. It will prompt you to select in which rooms each Chromecast device is and that's it.</p> +<p><a href="/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/chromecast.png"><img src="/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/chromecast-360.png" alt="Chromecast configuration"></a></p> +<h3 id="weather-openweathermap">Weather (OpenWeatherMap)</h3><p>I'm going to use the <a href="https://www.home-assistant.io/integrations/openweathermap/"><code>OpenWeatherMap</code></a> integration because it provides more sensors than the one setup by default.</p> +<p>You just need to <a href="https://openweathermap.org/">register to the service</a> and enable the integration under <strong>Configuration &gt; Integrations &gt; OpenWeatherMap</strong>, supply your API key and set the mode to <strong>onecall_hourly</strong> which will download 3h forecasts each hour, enough for the free tier.</p> +<blockquote><p>I had to wait for an hour or so until the API Key was valid for the integration to use, it keep saying <strong>Invalid API Key</strong> until I received a confirmation email for my account.</p> +</blockquote> +<h3 id="phillips-hue">Phillips Hue</h3><p>Linking the Phillips Hue is super easy, you only need to add the Hue integration, select the bridge IP from the dropdown (or input one manually) and press the button on the bridge to confirm.</p> +<p>After selecting in which area the bridge and bulbs are in, you're good to go.</p> +<blockquote><p><strong>BONUS:</strong> Since the comunication is done via LAN with the bridge, the bridge itself doesn't need internet access to work (as I have mine blocked in my firewall). Also in my case this is only temporal since I will move every Zigbee device to a cluster controlled by Home Assistant.</p> +</blockquote> +<h3 id="tuya-smart-things">Tuya (Smart Things)</h3><p>This is one of the dependencies I have that I'm most eager to get rid off, but for now there are some smart plugs at home that I need to control.</p> +<p>Going to <strong>Configuration &gt; Integrations &gt; Add</strong> the <strong>Tuya</strong> is on the list; you need to enter your username, password and country code for the integration to communicate with the Tuya API, so your devices will require internet connection.</p> +<p>The plan is to try and flash the plugs with Tasmota to free them from the <em>cloud</em> and any new ones I'm getting will be Zigbee compatbile with the hopes on having only Zigbee smart plugs at home.</p> +<h2 id="closing">Closing</h2><p>That was easy!</p> +<p>The folks at Home Assistant have been working on this so good that almost everything can be done from the interface now. I see any <em>normal</em> user working with this mostly plug and play from the UI which is amazing in my opinion.</p> +<p>In future post I will dive into my Zigbee configuration, InfluxDB, ESPHome, Alarms ... there's so much to do!</p> +November 20202020-12-01T00:00:00Zurn:uuid:5db01445-d9f0-346a-8c7d-aa1bcf6472ac<p>Checking my images it seems this month I didn't have anything remarkable from the outside so... I just +wanted to share that this month I have given myself some very nice meals and I improved the +Katsu Curry recipe quite a bit. I'm not good at cooking by any means, but the relax you get +from listening to music while cooking some healthy food is pretty good.</p> +<p><a href="/blog/2020/12/01/november/image.jpg"><img src="/blog/2020/12/01/november/image-360.jpg" alt="This month I&#39;ve made myself a lot of nice meals"></a></p> +<!-- readmore --> + +<h2 id="projects">Projects</h2><ul> +<li><p><a href="https://github.com/fmartingr/switch-games-json"><strong>Switch games json</strong></a></p> +<p>I made a simple script to parse and expose the Nintendo Switch game list in JSON including the encrypted title ID +field that is used on the screenshots on the system. The JSON list is generated every day from the Switchbrew wiki +and exposed via Github pages.</p> +<p>The main problem here is that not every game is present on Switchbrew, so I'm unsure how to automate this without +asking people to pull request missing games or doing that myself (for the ones missing). I need to check if the same +title ID filed that is required to get the proper encrypted field is present on the eShop's API. If that's the case +it would be possible to get the list for all games <em>easily</em>.</p> +</li> +<li><p><a href="https://github.com/fmartingr/games-screenshot-manager"><strong>Games Screenshot Manager</strong></a></p> +<p>Related to the one above, an application to fetch and sort all screenshots found from several providers and games. +Currently working for Steam, Nintendo Switch and some games on several operating systems. I'm starting to like this +<em>golang</em> thing. :D</p> +</li> +<li><p><a href="https://github.com/fmartingr/butterrobot"><strong>Butterrobot</strong></a></p> +<p>I've been making slow progress with the admin interface. I'm trying to keep it as simple as possible: a way to +check which channels and plugins there are available and an option to enable plugins with channels allowing a +JSON configuration to be used with them, since the same plugin on a different channel would require a different +output. I hope to have something useful on December if my time allows.</p> +</li> +<li><p>I've also spent some time playing with:</p> +<ul> +<li><strong>My Raspberries</strong>: Playing with different OSs, booting from USB, setting up Home Assistant properly, ...</li> +<li><strong>Firewalla</strong>: Setting up my network devices, assigning IPs and understanding it's inner workflows a bit. I've +also setup Pi-Hole inside it as main DNS server replacing the one they use.</li> +<li><strong>Alpine Linux</strong>: On the Pis and containers to understand the difference with other OSs.</li> +<li><strong>Arch Linux</strong>: I'm currently starting from scratch my Dell XPS 13 using Arch Linux base, and while it's more work +than a <em>Next, next, next, finish</em> install I'm enjoying it quite a lot since the result you get is a minimal install.</li> +</ul> +</li> +</ul> +<ul> +<li><p>I'm working on blog posts for the Arch Linux installation, Alpine on Raspberry and self-hosting my smart devices +using Home Assistant so the blog have more content than the monthly updates. Another mini-posts for the tools I +self-host myself will</p> +</li> +<li><p>Infra side it seems that my docker services via an VPS as door from the internet through an SDN to my home server +keep achieving 100% uptime from some months now, only going down if I test something on a dev service.</p> +<p>Problem is that even if it <em>works</em>, the containerized setup with two load balancers, SDN and so on seems both +complex from my use case and useful if something goes wrong.</p> +<p>I'm considering either moving to a simpler approach (non-containerized) or go all-in containerd and use something +like <a href="https://k3s.io">k3s</a> to orchestrate the server at home. I would have an excuse to add some Pis and clusterize +everything properly.</p> +<p>I still don't know the path I'm going to take with this.</p> +</li> +</ul> +<h2 id="books">Books</h2><ul> +<li><p><a href="https://www.goodreads.com/book/show/28249.The_Magicians_Guild"><strong>The Magicians' Guild</strong></a> (<em>Trudi Canavan</em>)</p> +<p>Ongoing. I try to read a chapter a day if time or focus allows. I'm actually enjoying the story so far, even if +reading anything magic related after Mistborn seems dull.</p> +</li> +</ul> +<h2 id="tvshows-and-movies">TVShows and Movies</h2><ul> +<li><a href="https://www.disneyplus.com/series/star-wars-rebels/64MCZgAzY0Zw"><strong>Star wars: Rebels</strong></a></li> +<li><a href="https://www.disneyplus.com/movies/rogue-one-a-star-wars-story/14CV6eSbygOA"><strong>Rogue One: A star-wars Story</strong></a></li> +<li><a href="https://www.disneyplus.com/movies/star-wars-a-new-hope-episode-iv/12fVeZxD2fWJ"><strong>Star Wars: A new hope</strong></a></li> +<li><p><a href="https://www.disneyplus.com/movies/star-wars-the-empire-strikes-back-episode-v/iqtDTZAewwYl"><strong>Star Wars: The empire strikes back</strong></a></p> +<p>Star Wars Marathon continues!</p> +</li> +<li><p><a href="https://www.primevideo.com/detail/0HBVL22LMA40B0XBY30RUOC9EH/"><strong>Bones</strong></a></p> +<p>Slowly and steady our <em>joker</em> when we don't know what to put on TV over meals.</p> +</li> +<li><p><a href="https://www.disneyplus.com/series/the-mandalorian/3jLIGMDYINqD"><strong>Mandalorian</strong></a></p> +<p>It's back! This is why I look forward to Fridays now.</p> +</li> +<li><p><a href="https://www.netflix.com/title/70281312"><strong>The Blacklist</strong></a></p> +<p>I discovered this randomly because the trailer poped up on my Netflix feed. The premise seemed interesting +and James Spader is such a great actor... Not sure how I managed to convince the Player 2 to watch this but +it seems she's enjoying it too. Kinda different from what we usually watch together, but welcome nevertheless.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p><a href="https://store.steampowered.com/app/751780/Forager/"><strong>Forager</strong></a></p> +<p>I completed all the achievements a while ago, but the author decided to add more... so I just fire this up +from time to time to try and maintain Forager on my Steam Perfect Games list.</p> +</li> +<li><p><a href="https://minecraft.net"><strong>Minecraft</strong></a></p> +<p>Oh my, this again? It seems so. Some friends wanted to get on the <em>blocky</em> train again. I have been out of +Minecraft for a good while (years!) and it seems interesting to come back after all this time. There are +some new things to explore and since I didn't really "finish" the game back in the day... let's see how +this goes.</p> +<p>Spoiler alert: We spent more time constructing stuff rather than <em>progressing</em> through the game.</p> +</li> +<li><p><a href="https://store.steampowered.com/app/1390010/pyramida/"><strong>Pyramida</strong></a></p> +<p>From Sokpop, the creators of Simmiland. A simple village builder game that seems minimalistic and fun in +the same way their other games are. I don't play this often since a play session can last a while (as it happened +with Simmiland) but let's see if I manage to get every achievement.</p> +</li> +<li><p><a href="https://www.nintendo.es/Juegos/Nintendo-Switch/Hyrule-Warriors-La-era-del-cataclismo-1838129.html"><strong>The legend of Zelda: Age of Calamity</strong></a></p> +<p>The Nintendo game for this month, already going strong on my Switch. I wasn't really sure if I would enjoy a +<em>musou</em> game even if it was Nintendo related, but so far is looking really good. I didn't though that cutting +through hordes of bokoblins would be so satisfactory and fun! I'm still not sure if the lore is "<em>canon</em>" or if +it truly precedes Breath of the Wild as <span class="spoiler">it seems to happen on a parallel timeline created +by a time traveler</span>, but I'm eager to know how it ends, even if the finale is the same as the sequel.</p> +</li> +<li><p><a href="https://magic.wizards.com/en"><strong>Magic: The gathering (physical)</strong></a></p> +<p>This refers to the physical version of the game. We bought a starter kit and play against each other from +time to time. It's new for both of us so this is an interesting learning curve to share.</p> +</li> +</ul> +<h2 id="articles-https//t-me/fmartingr-articles"><a href="https://t.me/fmartingr_articles">Articles</a></h2><ul> +<li><a href="https://drewdevault.com/2020/11/01/What-is-Gemini-anyway.html">What is this Gemini thing anyway, and why am I excited about it?</a></li> +<li><a href="https://www.jeffgeerling.com/blog/2020/raspberry-pi-400-teardown-and-review">Raspberry Pi 400: Teardown and Review</a></li> +<li><a href="https://podcasts.google.com/?feed=aHR0cHM6Ly9zZWxmaG9zdGVkLnNob3cvcnNz">(podcast) Self-Hosted Show</a></li> +<li><a href="https://www.youtube.com/watch?v=LWyAtbOhW2w">Why Arcades Are Still Thriving In Japan</a></li> +<li><a href="https://sneak.berlin/20201112/your-computer-isnt-yours/">Your computer isn't yours</a><ul> +<li><a href="https://blog.jacopo.io/en/post/apple-ocsp/">Does Apple really log every app you run? A technical look – Jacopo Jannone - blog</a></li> +<li><a href="https://social.wildeboer.net/@jwildeboer/105219402213708346">Response from Apple</a></li> +</ul> +</li> +<li><a href="https://drewdevault.com/2020/11/17/Better-than-DuckDuckGo.html">We can do better than DuckDuckGo</a></li> +<li><a href="https://raccoon.onyxbits.de/blog/bugreport-free-support/">No, "Open Source" does not mean "Includes Free Support"</a></li> +<li><a href="https://man7.org/linux/man-pages/man7/random.7.html">random(7)</a><ul> +<li><a href="https://security.stackexchange.com/questions/162507/getrandom-syscalls-relation-to-kernel-entropy-pool-state/175771#175771">GETRANDOM syscall</a></li> +</ul> +</li> +<li><a href="https://work.lisk.in/2020/11/20/even-faster-bash-startup.html">Even faster bash startup</a></li> +<li>(Spanish) <a href="https://youtu.be/FOxUAMuBtMM">La Revolución Mandaloriana que va a cambiar el cine</a></li> +<li><a href="http://boginjr.com/it/sw/dev/vinyl-boot/">Booting from a vinyl record</a></li> +<li><a href="https://medium.com/@_orcaman/when-too-much-concurrency-slows-you-down-golang-9c144ca305a">When too much concurrency slows you down (golang)</a></li> +<li><a href="https://filipnikolovski.com/posts/ebpf/">TIL: eBPF is awesome</a></li> +<li><a href="https://dgl.cx/2020/06/sqlite-json-support">SQLite as a document database</a></li> +<li><a href="https://rakhim.org/honestly-undefined/19/">Blogging vs. blog setups</a></li> +</ul> +Setting up TP-Link's Archer C5400 in AP mode2020-11-08T00:00:00Zurn:uuid:65d6a056-e8e2-3bec-baf5-f4a017725e53<p>I recently bought a firewall router for home to improve our general stability (ISP provided routers kinda suck) and +improve security at home. The more smart devices connected to the network the more concerned I become of this kind +of stuff.</p> +<p>In this case my problem was very simple: I have the firewall router and the access point router. My access point +router (TP-Link's Archer C5400) exposes it's own DHCP server over it's own LAN segment. For my firewall router to +work properly it has to recognise all devices on the network and with the access point creating it's own LAN, +everything connected via Wifi was showing up in the firewall as one device (the access point router).</p> +<p><img src="/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/c5400.jpg" alt="Archer C5400"></p> +<!-- readmore --> + +<p>The router's interface didn't allow me to set up AP mode, thus only letting me use it as a router. I contacted support +and they told me that the version the router I had (V1) didn't support AP mode only the newest version (V2, from 2017) +supported it, or some other latest devices.</p> +<p>I didn't want to gave up on my router because it improved my wireless performance at home significantly from the ISP +router and even some Unifi's I tried in the past but in the end I got an AX6000 to try it out (which was the newer +version of the one I have so I expected it to perform similarly). +We tested it for some days and wireless performance wasn't as good as with the C5400 and some of our devices lost +connectivity from time to time so I ended up returning it and keeping the one I had.</p> +<p>After thinking for a while and even considering looking for a C5400-V2 I tested to manually set it up on my access +point before wasting more money on devices, after all, I was very happy with this one. And to my surprise I could +enable AP mode on the router very easily.</p> +<h2 id="instructions">Instructions</h2><ol> +<li><p>Connect to your C5400 via Wifi (Ethernet should work as well)</p> +</li> +<li><p>Disconnect the WAN cable from the router (you will lose internet connection but you can access the C5400's web +interface)</p> +<p><img src="/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/internet.png" alt="Internet"></p> +</li> +<li><p>Disable DHCP. You will retain your lease until you reconnect again.</p> +<p><img src="/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/dhcp.png" alt="DHCP"></p> +</li> +<li><p>Give the router a free IP address from the range your router is exposing on it's LAN segment.</p> +<p><img src="/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/lan.png" alt="LAN"></p> +<p>In this case the LAN segment is <code>192.168.1.0/24</code> and the DCHP esposes from the <code>192.168.1.150</code>-<code>200</code>, +in order to have the IP easily accesible I gave it the <code>192.168.1.2</code> while the router is the <code>192.168.1.1</code>.</p> +</li> +<li><p>Connect an ethernet cable coming from the router to a LAN port (<strong>not WAN</strong>).</p> +</li> +<li><p>Reboot your router.</p> +</li> +</ol> +<p>After your access point has finished rebooting it should have the IP address you set on the LAN settings and +all devices connected to the access point should have their IP Addresses allocated by the router, successfuly +making the C5400 a proper access point.</p> +<p>I'm unsure if this works in other models as well, but I belive it should and if you came here looking for a +change give it a try and let me know if it worked for your model as well so I can update the post accordingly.</p> +October 20202020-11-01T00:00:00Zurn:uuid:e72b2df1-203c-3cff-9480-c63374f9abab<p>And another month went by.</p> +<p><a href="/blog/2020/11/01/october/image.jpg"><img src="/blog/2020/11/01/october/image-360.jpg" alt="The view from the beach here is awesome"></a></p> +<!-- readmore --> + +<h2 id="projects">Projects</h2><p>I have started my slow journey into Golang and spend an skill boost day at work doing some stuff with it. Ended up +with a lot of tabs open but it was the most fun I have had for a while! If you're curious the result is on my +<a href="https://github.com/fmartingr/gurl">gurl repository</a>, it's not complete (or useful) by any means, but I want to +expand it with new <em>features</em> while I learn some more.</p> +<p>In my spare time I've been working on a simple program to manage my game's screenshots, I have a lot over several +computers/operating systems and I want to organize them better to publish them on an online gallery. I'm starting +to enjoy Go quite a bit the more I do with it, even if it's only minor stuff.</p> +<h2 id="books">Books</h2><ul> +<li><p><a href="https://www.goodreads.com/book/show/28249.The_Magicians_Guild"><strong>The Magicians' Guild</strong></a> (<em>Trudi Canavan</em>)</p> +<p>Started again from the beginning, I just need to fit the reading habit into my schedule.</p> +</li> +</ul> +<h2 id="tvshows-and-movies">TVShows and Movies</h2><ul> +<li><p><a href="https://www.netflix.com/title/81254224"><strong>The social dilemma</strong></a></p> +<p>An interesting movie/documental about how social networks are not our friends. They didn't provide me with +anything I didn't knew, but should be interesting for less <em>techy</em> people to watch and understand they are +the product.</p> +</li> +<li><p><a href="https://www.disneyplus.com/movies/star-wars-the-phantom-menace-episode-i/2ezYynkgW1AH"><strong>Star Wars: The Phantom Menace</strong></a></p> +</li> +<li><a href="https://www.disneyplus.com/movies/star-wars-attack-of-the-clones-episode-ii/mgpYHGnzZW6N"><strong>Star Wars: Attack of the clones</strong></a></li> +<li><a href="https://www.disneyplus.com/series/star-wars-the-clone-wars/1wYXzjabXGVZ"><strong>Star Wars: The Clone Wars (animated movie)</strong></a></li> +<li><a href="https://www.disneyplus.com/series/star-wars-the-clone-wars/1wYXzjabXGVZ"><strong>Star Wars: The Clone Wars (animated series)</strong></a></li> +<li><a href="https://www.disneyplus.com/movies/star-wars-revenge-of-the-sith-episode-iii/4WvbqLFumNvi"><strong>Star Wars: Revenge of the Sith</strong></a></li> +<li><a href="https://www.disneyplus.com/movies/solo-a-star-wars-story/7ks3IYr1eU2P"><strong>Solo: A Star Wars story</strong></a></li> +<li><p><a href="https://www.disneyplus.com/series/star-wars-rebels/64MCZgAzY0Zw"><strong>Star wars: Rebels</strong></a></p> +<p>Star Wars Marathon!</p> +</li> +<li><p><a href="https://www.primevideo.com/detail/0HBVL22LMA40B0XBY30RUOC9EH/"><strong>Bones</strong></a></p> +<p>Our new show for lunch/dinner/off time. Player 2 totally loves this and was very happy to know we could watch +it in order, since on the TV Channels they emit it here episodes seem to be randomized for some reason, so you +could watch an episode of the second season followed by another from the last one.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p><a href="https://store.playstation.com/es-es/product/EP0082-CUSA07187_00-FFVIIREMAKE00000"><strong>Final Fantasy VII: Remake</strong></a></p> +<p>I finally put an end to it. <a href="/blog/2020/10/15/final-fantasy-vii-remake-my-review/">My review in a separate post</a></p> +</li> +<li><p><a href="https://www.nintendo.es/Juegos/Programas-descargables-Nintendo-Switch/A-Short-Hike-1821799.html"><strong>A Short Hike</strong></a></p> +<p>A short (as the name implies) adventure of the path to hike a mountain and all the people you met in between. Love the art style and the simplicity of the game. +Liked the idea of having the achievements directly on the switch too, in-game. (I miss that from Steam on the Switch) +I'm a fan of this kind of games you can enjoy and put an end to them in a few hours.</p> +</li> +<li><p><a href="https://store.steampowered.com/app/105600/Terraria/"><strong>Terraria</strong></a></p> +<p><img src="/blog/2020/11/01/october/terraria.jpg" alt="My terraria state"></p> +<p>We managed to <strong>complete it</strong>. Which in our case meant getting al achievements. It was a really fun +ride! This game is easily one of my favourites and for the price you can get it is completely a must, you get +an incredible amount of content and entertainment, better played with friends!</p> +</li> +<li><p><a href="https://store.steampowered.com/app/211820/Starbound/"><strong>Starbound</strong></a></p> +<p>Terraria, but in <strong>space</strong>! And I have a MECH!</p> +<p><img src="/blog/2020/11/01/october/starbound.jpg" alt="My mech in Starbound"></p> +</li> +<li><p><a href="https://www.nintendo.es/Juegos/Programas-descargables-Nintendo-Switch/Graveyard-Keeper-1579157.html"><strong>Graveyard Keeper</strong></a></p> +<p>Got this for the Switch because it was supposed to be more linear and light than Stardew Valley, but upon +starting I got tons of things to do and it got a bit overwhelming for me right now, wanted something more +lightweight to play at the moment. On hold for now.</p> +</li> +<li><p><a href="https://store.steampowered.com/app/1425380"><strong>10 mg :)</strong></a></p> +<p>This is a really small game (10mg stands for 10 minute games) as a tribute to the arcade classics with some kind of twist. +I got near 20 minutes of gameplay from this and it was fun to go through it :)</p> +</li> +</ul> +<h2 id="articles-https//t-me/fmartingr-articles"><a href="https://t.me/fmartingr_articles">Articles</a></h2><ul> +<li><a href="https://pulkitsharma07.github.io/2020/10/02/hacktoberfest-india/">Why most Hacktoberfest PRs are from India</a></li> +<li><a href="https://blog.brixit.nl/pinephone-camera-pt4/">PinePhone Camera pt4</a></li> +<li><a href="https://www.youtube.com/watch?v=EMs07SPo5rk">The Reason Some Say New York City Is Dead Forever</a></li> +<li><a href="https://www.pixelstech.net/article/1457585550-How-does-Base64-work">How does Base64 works</a></li> +<li><a href="https://adlrocha.substack.com/p/adlrocha-how-i-built-an-ipfs-crawler">How I built an IPFS crawler with libp2p</a></li> +<li><a href="https://datprotocol.github.io/how-dat-works/">How DAT works</a></li> +</ul> +Final Fantasy VII: Remake - My review2020-10-15T00:00:00Zurn:uuid:68be49be-24d7-3239-845f-f6f8b7414eb6<p>I started the out of pure hype and even bought -again- a PlayStation 4 in the process, but haven't finished it until recently due to time constraints, lack of interest and having lost the initial momentum.</p> +<p>I will try to to a quick review of what I feel playing it and if there's something spoilery it will be obscured to avoid accidents; same with the pictures.</p> +<p><a href="/blog/2020/10/15/final-fantasy-vii-remake-my-review/splash.jpg"><img src="/blog/2020/10/15/final-fantasy-vii-remake-my-review/splash-360.jpg" alt="Final Fantasy VII: Remake Slash Screen"></a></p> +<!-- readmore --> + +<blockquote><p>Disclaimer: I've only finished the game, not completed it. I played quite a lot at the beginning but I lost momentum due to various reasons, the main one being lack of time to play (anything, not just this). I haven't completed all thropies for the game nor I have collected everything (and I don't intend to).</p> +</blockquote> +<h2 id="music">Music</h2><p>This is just something one can't write about, let just say that playing with headphones was a really good idea from the beginning and that for me this is easily the best part of the game. They remastered the original soundtrack and made something amazing with it. Not better (I like the "original" a lot too), just different.</p> +<p>When you already played the vanilla game and appear on a zone that you only recognize because of it's music... it's awesome! That combat music remastered, traveling through Midgar, doing missions, the fanfare! <span class="spoiler">While you don't have the classic fanfare tune once you win a battle, Barret will sometimes hum it if he's in your party, it's hilarious and very nice attention to detail.</span></p> +<p>The edition I bought came with a "mini soundtrack" CD with some music, but in my oppinion it should've been the entire OST, <span class="spoiler">at least the game also allows you to collect some of the tracks in-game and let you play it from the menus.</span></p> +<h2 id="character-development">Character development</h2><p><a href="./sector-7.jpg"><img class="spoiler" src="./sector-7-360.jpg" /></a></p> +<p>They added more backstory and personality to our well known characters to make the first sections of the game way more enjoyable. Notable mention for how Jessie is handled, my favourite! Wedge is also very funny, more or less what my imagination created for him back in the day.</p> +<p>To add contrast to the previous point, there's a new character that appears out of nowhere: <span class="spoiler">Roche, he is a SOLDIER and a boss battle in an expanded part of the story</span>; he didn't have any backstory nor anything to him and then you just never meet him again. That was really weird, I expected to find it sometime later in the game (and there was the perfect moment to do so right at the end...).</p> +<p>Avalanche gets more human as it is not just the characters you meet, there are more people that know you and help the cause... and others that don't. It gives more life to the resistance group.</p> +<p>Sephiroth <span class="spoiler">is shown several times, but they didn't add any meaningful explanation nor backstory to him, only some glimpses from flashbacks; then it becomes the final boss of the Remake with no explanation whatsoever. While I can understand the impact I think new players will be lost here.</span></p> +<h2 id="the-ending">The ending</h2><p><a href="./cloud-sephiroth.jpg"><img class="spoiler" src="./cloud-sephiroth-360.jpg" /></a></p> +<p><span class="spoiler">Oh boy... I'm not sure I've understood the ending properly but I'm reluctant to read or watch anything related to it to avoid subconciously alter what it made me feel. If it meant what I think, it gave a lot of room for the next chapters to continue through. Whatever that's a good think or not... we'll see in a few years.</span></p> +<p><span class="spoiler">I liked what they did, though it was a bit of a mind<i>fork</i>. And if it was for me, who have played the original, I can't possibly understard what someone that didn't think about it.</span></p> +<p><span class="spoiler">Basically the succession of events happening in the remake is the same as the ones in the vanilla game (sort of) but at some point you encounter a new kind of creatures that you know nothing about preventing you from going _where you're not supposed to be_. These creatures are revealed to be called _Whispers_ -servants of destiny itself- that doesn't allow events to diverge from they path _its supposed to take_. Do you understand where this is going?</span></p> +<p><span class="spoiler">So, events continue and you end up in the Shinra building at the end, and you met Sephiroth. Maybe. After the touching reunion, **Sephiroth kills Barret** (OH MY GOD), but this whispers came to the rescue, because that's not supposed to happen, that was not _his destiny_.</span></p> +<p><span class="spoiler">Sephiroth ends up summoning the mother of all _Whispers_ and you need to fight it **in order to fight destiny itself**. Which you of course beat, and then the game ends, not after presenting you with a touching scene from Zack and Biggs still alive when they are not supposed to.</span></p> +<p><span class="spoiler">So my take for all of this is... you beat destiny so the characters in the remake doesn't need to follow the predestined path they required to follow, esentially breaking free from all the events happening in Final Fantasy VII. Aerith could live, Sephiroth could just not appear again, Zack could appear in future chapers, ... they managed to get free from the original in a very elegant way.</span></p> +<p><span class="spoiler">I liked this ending -and the possibilities it represent- a lot as a player that know the original... if I got it right.</span></p> +<h2 id="replayability">Replayability</h2><p><a href="./sector-gone.jpg"><img class="spoiler" src="./sector-gone-360.jpg" /></a></p> +<p>While thropies are a good initiative, some of them require to re-play some of the chapters of the game, one of them in particular requiring to play the entire game again in another difficulty mode. At least the game makes really easy to jump to any chapter of the game once you have completed it, in case you missed or left something for later.</p> +<p>I'm not a fan of this kind of tactics to make games longer as my main motivation to play a game is the story and gameplay, making the same things I've experienced already more difficult is not going to make me want to play the entire thing again. That said, some collectibles (<span class="spoiler">the music discs in this case</span>) are easy to obtain and I got them all without the need of any guides though I'm not sure if I would have come back for them.</p> +<p>This is how it finished for me:</p> +<p><img src="/blog/2020/10/15/final-fantasy-vii-remake-my-review/trophies.png" alt="The game current thropy completion on my account"></p> +<h2 id="no-screenshots-on-the-ending">No screenshots on the ending</h2><p><a href="./church.jpg"><img class="spoiler" src="./church-360.jpg" /></a></p> +<p>This is a really stupid thing on my part, but I <strong>love</strong> taking screenshots, I have gigabytes of screenshots from PC, PS4 and Switch combined.</p> +<p>The last chapter for the Remake disables this possibility for users for some reason. I'm assuming it was to prevent a lot of screenshots/videos posted of the ending which were already out there anyway. Instead of that they prevented legitimate users of the feature from using it and make my screenshot collection bigger. Sad.</p> +<h2 id="conclusion">Conclusion</h2><p>Maybe this is not a tech marvel as other games in this platform are, but they surely know how to play with a good story and nostalgia from us. At the beginning I was reluctant to know about any other chapter in this series, but the ending left me wondering... what they have in store for us?</p> +September 20202020-10-01T00:00:00Zurn:uuid:89a921fa-f777-3140-9d62-2584017197b5<p><strong>Very</strong> cool month, finally managed to have some hard earned holidays! I had the privilege of +going with some friends (even some I hadn't seen in a long time!) to an apartment near the beach, +and oh boy did I need that. I came back fully charged! Apart from that, not much movement in any +area.</p> +<p><a href="/blog/2020/10/01/september/image.jpg"><img src="/blog/2020/10/01/september/image-360.jpg" alt="Another picture of me at the beach, this time in Malaga"></a></p> +<!-- readmore --> + +<h2 id="projects">Projects</h2><p>I have <em>refactored</em> my local network a bit, bought a proper router with integrated firewall and monitoring, +and a new AP to get along with that. Next step will be re-creating my entire home-assistant instance from +scratch on a new raspberry pi. With that I will start a blog post series on every step I'm going to take, +sort of a tutorial sort of informative. You can do very cool things with it.</p> +<p>Not much time for anything else.</p> +<h2 id="books">Books</h2><ul> +<li><p><a href="https://www.goodreads.com/book/show/51901147-the-ballad-of-songbirds-and-snakes"><strong>The Ballad of Songbirds and Snakes</strong></a>.</p> +<p>I read only a little more, either the good is not as impacting as the first one (it isn't) or +I'm completely gone with my reading habits again. I though I would enjoy this on my vacation time, but +I didn't end up hooked. I will probably drop this one, sadly.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p><a href="https://www.nintendo.es/Juegos/Nintendo-Switch/Super-Mario-3D-All-Stars-1832369.html"><strong>Super Mario 3D All-Stars</strong></a>: +Tried starting with Mario 64 first, but the camera and controls were so frustrating I ended up skipping it +and going directly to Sunshine. I've collected a few stars but I haven't sit down properly to get with it, +only playing on spare time between other things.</p> +</li> +<li><p><a href="https://store.steampowered.com/app/945360/Among_Us/"><strong>Among Us</strong></a>: The new cool kid on the block, very +funny to play with friend over discord; guaranteed fun.</p> +</li> +</ul> +<h2 id="articles">Articles</h2><p>I ended up doing a <a href="https://t.me/fmartingr_articles">Telegram channel</a> to paste interesting articles/videos as I see fit, this way I don't forget +taking notes that much. Now I only need to remember this channel exists...</p> +<ul> +<li><a href="https://www.youtube.com/watch?v=z_KVEjhT4wQ">The design behind Super Mario Odyssey</a></li> +<li><a href="https://www.youtube.com/watch?v=vmIgjAM0uh0">Legend of Zelda: Breath of the Wild - An open world adventure</a></li> +<li><a href="https://www.youtube.com/watch?v=KHbQ6ti5BQ0">The magic of the first Legend of Zelda</a></li> +<li><a href="https://www.youtube.com/watch?v=hbzGO_Qonu0">How to keep players engaged (without being evil)</a></li> +<li><a href="https://www.youtube.com/watch?v=huPF3Gid7DE">How One Gameplay Decision Changed Diablo Forever</a></li> +<li><a href="https://www.youtube.com/watch?v=VscdPA6sUkc">Diablo: A classic game postmortem</a></li> +<li><a href="https://mango.pdf.zone/finding-former-australian-prime-minister-tony-abbotts-passport-number-on-instagram">When you browse Instagram and find former Australian Prime Minister Tony Abbott's passport number</a></li> +<li><a href="https://www.youtube.com/watch?v=_97zYunu2w0">Edmund McMillen Breaks Down His Game Design History (Meat Boy, Isaac &amp; More) | Noclip</a></li> +<li><a href="https://www.youtube.com/watch?v=zR1uEwjx7VI">Did Nintendo download a Mario ROM and sell it back to us? - Here's A Thing</a></li> +<li><a href="https://www.youtube.com/watch?v=Y47t9qLc9I4">Why Masks Work BETTER Than You'd Think</a></li> +<li><a href="https://www.youtube.com/watch?v=oCwQtZcLrVs">Mining Your Own Design: Crafting the Crafting System in Astroneer</a></li> +<li><a href="https://www.youtube.com/watch?v=ZR_JBgNEeVM">Skill-Building Series: Pixel Art and Animation in the Hi-Bit Age</a></li> +<li><a href="https://blog.robenkleene.com/2020/09/21/the-era-of-visual-studio-code/">The Era of Visual Studio Code</a></li> +<li><a href="https://twitter.com/katewillaert/status/1308881238145617920">The origins of the Super Mario fashion decision</a></li> +</ul> +August 20202020-09-02T00:00:00Zurn:uuid:555ac569-3472-3c3a-a9c9-b56f37466500<p>Slowly going back to routine, this month has been well spent going out when possible and spending +time with friends and family, a thing that we couldn't do properly for some time now. Not much +"progress" on anything else for that matter.</p> +<p><a href="/blog/2020/09/02/august/image.jpg"><img src="/blog/2020/09/02/august/image-360.jpg" alt="A picture of the beach"></a></p> +<!-- readmore --> + +<h2 id="projects">Projects</h2><p>Didn't have much time to play around with projects this time, but in simple terms I've managed to +release the code for <a href="https://github.com/fmartingr/butterrobot">butterrobot</a> for anyone to see +and shame my code and prepared the slack application for my team to use. I'll admit that is a bit +of a pain to play with several repositories at the same time, and github doesn't make this easy on +itself requiring authentication for the container registry... but well, so far it's working and +it's good to have room for improvement.</p> +<p>I've also received my <a href="https://firewalla.com/">Firewalla Gold</a> and finally finished tidying up +my network infrastructure a bit, though it will require a bit more tuning but at least I can now +focus on what I've been eager to do: setup my home assistant for all the devices and automations +on my home, yay!</p> +<h2 id="books">Books</h2><ul> +<li><p>Started reading <a href="https://www.goodreads.com/book/show/51901147-the-ballad-of-songbirds-and-snakes"><strong>The Ballad of Songbirds and Snakes</strong></a>.</p> +<p>Prequel to the Hunger Games, seems like a short enough book to get back with my reading habits again.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p><a href="https://www.assemblegame.com"><strong>Assemble with care</strong></a>: Played this on my phone and it was a short but +wonderful playthrough. It's a story-driven puzzle game, though puzzles are very easy since they are +secondary. Full voice acting makes this a calm and relaxing experience to do while on the move (or at +the beach!)</p> +</li> +<li><p>Some more <a href="https://store.steampowered.com/app/900270/Reventure/"><strong>Reventure</strong></a></p> +</li> +</ul> +<h2 id="articles">Articles</h2><p>Mostly videos this time around, since I'm used to put something off-screen while I'm working. Some interesing stuff in +there, mostly videogame related.</p> +<ul> +<li><a href="https://panic.com/blog/the-lightning-digital-av-adapter-surprise/">The lightning digital AV adapter surprise</a></li> +<li><a href="https://tinyprojects.dev/projects/snormal">Snormal: a wonderfully normal social network</a></li> +<li><a href="https://www.youtube.com/watch?v=4-k6j9g5Hzk">How Stardew Valley Was Made by Only One Person</a></li> +<li><a href="https://1940s.nyc/">New York's 1040 Street View</a></li> +<li><a href="https://youtu.be/lEplzHraw3c">Cuba's Underground Gaming Network</a></li> +<li><a href="https://www.linkedin.com/pulse/nyc-dead-forever-heres-why-james-altucher/">NYC IS DEAD FOREVER. HERE'S WHY</a></li> +<li>I think I watched <strong>all</strong> videos from <a href="https://www.youtube.com/user/mcfrosticles">The Gaming Historian Youtube channel</a></li> +<li><a href="https://www.youtube.com/watch?v=dLfLEYs7N3Y">The NODE nano server V2</a></li> +<li><a href="https://www.youtube.com/watch?v=7HOBQ7HifLE">How the Sony PS1 Security was defeated</a></li> +<li>Deciphering Japan series<ul> +<li><a href="https://www.youtube.com/watch?v=5dsD6FWfZHE">Why is Japan's gender gap so wide?</a></li> +<li><a href="https://www.youtube.com/watch?v=2ajH2Id5FY4">What's the cost of being the hardest workers in the world?</a></li> +<li><a href="https://www.youtube.com/watch?v=HQU-NeP_spU">Coping With A Super-Ageing Nation</a></li> +<li><a href="https://www.youtube.com/watch?v=BdDjmc8QbVg">What does it means to be Japanese?</a></li> +</ul> +</li> +</ul> +July 20202020-08-02T00:00:00Zurn:uuid:c3b10953-225c-32f3-a5f7-64bc93daa5ed<p>Summer is here!</p> +<p>Even without restrictions or quarantine is has been a weird month. Cases here are going up and down, +I don't want to go back to the gym (and I think I won't until next year), some restaurants and cafe +have closed permanently and the ones that are still standing are usually full (which is good). We're +just trying to go back to normal, step by step, and having some friends stay at home a few days +helped a lot.</p> +<p><a href="/blog/2020/08/02/july/image.jpg"><img src="/blog/2020/08/02/july/image-360.jpg" alt="A picture of myself from behind walking through a port"></a></p> +<!-- readmore --> + +<p>This month I have focused on getting more organized. As I said <a href="/blog/2020/06/02/june/">last month</a> +I badly needed it.</p> +<p>I have managed to move almost everything into my <a href="https://notion.so/">notion.so</a> workspace. +I had some boards and notes here and there but Notion is so powerful and comfortable to use that I +just went all in. There's some cleanup to do, but my main points of interes are already there. I have +a board with my personal tasks and some metadata about them, and secondary boards for my hobbies +(Games, Books, TVShows, etc), Blog related posts, ... I may go into more detail in the future.</p> +<div class="grid"> + <div class="col-1-2"> + <a href="./notion-tasks.png"> + <img src="./notion-tasks-320.png" /> + </a> + </div> + <div class="col-1-2"> + <a href="./notion-games.png"> + <img src="./notion-games-320.png" /> + </a> + </div> +</div><p>Related to this I'm also starting to cleanup every last drawer at home. I got a bit tired of not +knowing how much stuff I have so I'm making a full inventory of <em>everything</em>. It all started +reviewing how many of my clothers would still fit me after quarantine, and it snapped on me. I +don't know how much I own, and I think it happens to all of us at different levels.</p> +<p>With tech this is gonna be very difficult, I have managed to stash a lot (<strong>a lot</strong>) of cables +during the years. Just imagine how many HDMI and USB cables the average tech guy can get a hold +of... Arduinos, Raspberries... etc.</p> +<p>This will take time, but I'm very happy with the progress I already had and all the things I've +already donated or sold.</p> +<h2 id="projects">Projects</h2><ul> +<li><p>My <strong>local infra</strong> is mostly done at this point. I just need to secure everything a bit more +but has been working fine (with some hiccups) for the past months. I may need to check some +networking alternatives and move all SSL negotiation to the main node (avoiding re-encrypting +traffic on a non-controlled node).</p> +</li> +<li><p><strong>Butterrobot</strong> got some love this month. I'm <em>slowly</em> setting up an automated CI/CD system to +deploy the application in my local infra, but I need to setup some other details as well. Source +code is already on Github though repository is private while I made last minute changes. I'm +hoping to release it this month.</p> +</li> +<li><p>I'm also cleaning up my <strong>Home Assistant</strong> node. What that really means that I'm re-deploying a +new instance on a more powerful Raspberry Pi. I have been playing with this software for years +and my current pi is a bit underpowered and messy, so the plan is start from scratch trying to +make the connected devices local trying to avoid third-party clouds as much as possible and +document everything in some blog posts. Let see how that goes.</p> +</li> +</ul> +<h2 id="tv-shows">TV Shows</h2><p>I watched something!</p> +<ul> +<li><p><strong>M.A.R.V.E.L.s Agents of Shield</strong></p> +<p>Some chapters of the last season. This may be the worst season so far...? (At least the few I saw)</p> +</li> +<li><p><strong>The 100</strong></p> +<p>Up to date with this one, without much focus because some interdimensional time thingy is not very +appealing to me, just want to know how it all ends. If it doesn't end this season, I'm done with it.</p> +</li> +<li><p><strong>Sword Art Online (Aincrad saga only)</strong></p> +<p>Rewatched this one (a friend's fault) as series to have while cooking and doing chores. A bit complex +to read subtitles the same time you do other things, but since this is a re-watch... Now looking for +some other series with the same "protagonist sent to fantasy world" genre.</p> +</li> +</ul> +<h2 id="games">Games</h2><ul> +<li><p><a href="https://store.playstation.com/es-es/product/EP0082-CUSA07187_00-FFVIIREMAKE00000"><strong>Final Fantasy VII: Remake</strong></a></p> +<p>I have gone through a bit more of the story, trying to enjoy the story till the end. And wait +another five years for the next chapter...?</p> +</li> +<li><p><a href="https://store.steampowered.com/app/900270/Reventure/"><strong>Reventure</strong></a></p> +<p>Quick play sessions are quick. Oh my god this game has soooo many endings...</p> +</li> +<li><p><a href="https://www.xbox.com/en-US/games/carrion"><strong>Carrion</strong></a></p> +<p>This has been on my radar for quite some time. It's a shame is so short! Finished in a few hours, but that didn't mean +is not great, because it is. Being the monster trapped wanted to go out instead of the <em>"Hero"</em> killing monsters is +a really appreciated change of perspective. The mechanics were amazing and the graphics gorgeous, it was very fun while it +lasted.</p> +</li> +<li><p><a href="https://store.steampowered.com/app/469610/Rick_and_Morty_Virtual_Rickality/"><strong>Rick and Morty: Virtual Rick-ality</strong></a></p> +<p>I got time to play some VR, and I had this in the backlog for quite some time. I love Rick and Morty and this was +a short and fun puzzle adventure, just what I expected. I could get on with the optional stuff but I just have too much +on backlog!</p> +</li> +</ul> +<h2 id="articles">Articles</h2><p>I forgot to take note of the interesting ones this month. 😅</p> +June 20202020-06-02T00:00:00Zurn:uuid:080d5bf9-d3a9-3d73-a2d6-e733d3387a73<p>We can travel now! Quarantine restrictions have been raised here, and we can go visit family. It's weird +seeing people with masks, cleaning its hands and so on (though not everyone eveytone). It gives me some Japan +nostalgia.</p> +<p>It hasn't been a productive month, and I don'tknow where time went. And that made me realize that I can't +do everything I want to do... I have to start dropping tasks from all kinds of hobbies and organize myself +<strong>way</strong> better. That is my homework for this summer.</p> +<p><a href="/blog/2020/06/02/june/image.jpg"><img src="/blog/2020/06/02/june/image-360.jpg" alt="On the road, finally"></a></p> +<!-- readmore --> + +<h2 id="projects">Projects</h2><p>Sad times here. The shock when you finally discover that time is not infinite.</p> +<p>Both the <em>photo manager</em> and the <em>pseudo-CI/CD tool</em> were fun, but I'm going to stop working of them for +the foreseable future. Both were monoliths that I can't schedule on my life right now.</p> +<p><strong>Butterrobot</strong> I'm happy to continue with since we're going to <em>dog-food</em> it at work. Happy to say +that the app is now fully modular and you can install that and your own package with plugins and make +it work easily. Hopefully releasing it this month.</p> +<p>Infra has evolved too, I've simplified a lot of my services, turned down some things I wasn't using and +trying to save time on this as well. If there's a good alternative out there I'm probably using it.</p> +<p>And on that matter, I'm going to start moving all my repos to Github. I have them spread around github, +gitlab and sourcehut and it's causing me headaches. I will have my own gitea instance to mirror my repos +in case something happen with the cloud service and also to put there all tests and concepts (like the +two discontinued above) before making it available to the public (though they will be accessible, just not +so easy to find) so my github account isn't filled with unfinished stuff.</p> +<h2 id="games">Games</h2><ul> +<li><p><a href="https://animal-crossing.com/new-horizons"><strong>Animal Crossing: New Horizons</strong></a></p> +<p>Still play ocasionally, finally burn-out got to me. I only turn on the game to get some of the collectibles and check some daily stuff, just a few minutes and definitely not daily as before.</p> +</li> +<li><p><a href="https://store.steampowered.com/app/105600/Terraria/"><strong>Terraria</strong></a></p> +<p>Still on-going and very happy with it. I'm still shocked on the number of features included with this game, number +of items, progress, bosses and all for the price, after a lot of years.</p> +</li> +<li><p><a href="https://store.playstation.com/es-es/product/EP0082-CUSA07187_00-FFVIIREMAKE00000"><strong>Final Fantasy VII: Remake</strong></a></p> +<p>Didn't play much, almost to the end, time constraints and sharing the TV as main issues, but I'm very eager to get +to the end to see if anything non-trivial changed from the original.</p> +</li> +<li><p><a href="https://store.steampowered.com/app/900270/Reventure/"><strong>Reventure</strong></a></p> +<p>Started playing this on my GPD WIN 2, it's awesome for quick runs and is funny so far, trying to discover + what crazy stuff to do in order to unlock the over one hundred endings this game has.</p> +</li> +<li><p><a href="https://www.nintendo.es/Juegos/Programas-descargables-Nintendo-Switch/Minecraft-Dungeons-1749059.html"><strong>Minecraft Dungeons</strong></a>:</p> +<p>Dropped for the obvious reasons <a href="/blog/2020/06/01/may/">I said last month</a>.</p> +</li> +</ul> +<h2 id="articles">Articles</h2><ul> +<li><a href="https://www.youtube.com/watch?v=VAhHkJQ3KgY">Dwarf Fortress Creator Explains its Complexity &amp; Origins | Noclip Interview</a></li> +<li><a href="https://lbry.tv/@Lunduke:e/LinuxSucks2020:b">Linux Sucks 2020</a></li> +<li><a href="https://www.youtube.com/watch?v=tfUjl4owxTQ">The Untold Story Behind Astroneer's Difficult Development</a></li> +<li><a href="https://www.dedoimedo.com/computers/raspberry-pi-4-viable-desktop.html">Raspberry Pi 4 - a viable mini desktop?</a></li> +<li><a href="https://medium.com/@miko_89964/after-3-years-of-work-chrome-killed-my-extension-and-wont-tell-me-why-83a3f8d65cbc">After 3 Years of Work, Chrome Killed My Extension and Won’t Tell Me Why</a></li> +</ul> +May 20202020-06-01T00:00:00Zurn:uuid:fea5519a-718a-37b0-9ab4-2367d42244a1<p>I can go out now. In those rare days with good weather here I can +take pictures like this.</p> +<p><a href="/blog/2020/06/01/may/image.jpg"><img src="/blog/2020/06/01/may/image-360.jpg" alt="A picture from the beach"></a></p> +<!-- readmore --> + +<h1 id="tvshows/movies">TVSHows/Movies</h1><ul> +<li><p><strong>Mandalorian</strong> (ongoing)</p> +<p>I say ongoing, but I think I have not watched it this month... the thing +is that I still have to finish it.</p> +</li> +<li><p><strong>Rick and Morty</strong> (ongoing)</p> +<p>Of course I'm up to date, don't be <em>rickdiculous</em>.</p> +</li> +<li><p><strong>Once upon a time</strong> (ongoing)</p> +<p>To kill time during lunch/dinner because my Player 2 likes it. Pretty +boring though. Only the first season is "good" in some way because the +premise is interesting, after that it all goes to <em>shirt</em>.</p> +</li> +</ul> +<h1 id="manwha">Manwha</h1><p>Same as <a href="/blog/2020/05/01/april/">last month</a>.</p> +<ul> +<li><p><a href="https://www.webtoons.com/en/fantasy/dice/list?title_no=64&amp;page=1"><strong>DICE</strong></a> (ongoing)</p> +</li> +<li><p><a href="https://www.webtoons.com/en/action/the-gamer/list?title_no=88"><strong>The Gamer</strong></a> (ongoing)</p> +</li> +</ul> +<p>And I have the urge to read <em>One Piece</em> but don't know from where +(legally) withouth investing a lot in physical copies...</p> +<h1 id="projects">Projects</h1><p>Little progress on code this month, just making some tests and +concepts (because <em>Memories</em> required front-end work and I forgot +almost everything I knew about CSS).</p> +<p>Spent some time reworking my local infra from scratch. All the +services I had running were done with poorly manual labor and now I'm +working on provisioning everything using Ansible. I have to do the same +for my computers since I'm planning the new dotfiles from scratch too.</p> +<ul> +<li><p><strong>Jeeves</strong></p> +<p>Very little progress, just added a few tasks and so, the example here +is not working because docker is broken on my machine at the time of +writing, but it should work. Promise.</p> +<p>My problem with this is that until it has a proper server to trigger +tasks via webhooks, crons or other methods is just a lightweight +(and worst) Ansible <em>wannabe</em>.</p> +<div class="hll"><pre><span></span> $ jeeves execute Jeevesfile.yaml + (i) Running flow from Jeevesfile.yaml + === Running flow: Create synology-drive package + ok! Running step [1/8]: Download x86_64 deb + ok! Running step [2/8]: Calculate md5sum for x86_64 deb file + ok! Running step [3/8]: Download i686 deb + ok! Running step [4/8]: Calculate md5sum for i686 deb file + ok! Running step [5/8]: Create build directory + ok! Running step [6/8]: Parse PKGBUILD + ok! Running step [7/8]: Create SRCINFO file + Image &#39;archlinux:latest&#39; does not exist container + err Executing step [8/8]: Test install in container +</pre></div> +</li> +<li><p><strong>Butterrobot</strong></p> +<p>Spent some time refactoring code and thinking on what to use for +a simple admin interface to setup new features for the bots, enable or +disable plugins and all that.</p> +<p><img src="/blog/2020/06/01/may/butterrobot.png" alt="Butterrobot !dice plugin"></p> +</li> +<li><p><strong>Memories</strong> (previously <em>Unnamed photo viewer</em>)</p> +<p>Worked on reading the files from the filesystem and extracting the +mininmum required metadata for me to save on the database (to have +some search/filters going on). Also got some ideas depending on how the +files are stored (use folder names as "tags" to search for example).</p> +<p>Also played around with thumbnails, which are tricky to do depending on +the file, and I have a lot of variety (from standard JPEG to HEIC going +through 360 videos, etc.). I also noticed that I have a lot of files +with wrong metadata, which does <strong>not</strong> help at all with my testing.</p> +<p>Well, I have a simple frontend now, but everything is a very work in +progress (and those menu links are just dummy navigation).</p> +<p>I need to focus on implement a proper backend and decide on the main +features to implement in the first release, which should come with a +simple frontend and API for people to create their own.</p> +<p><img src="/blog/2020/06/01/may/memories.png" alt="Memories screenshot"></p> +</li> +</ul> +<h1 id="videogames">Videogames</h1><ul> +<li><p><a href="https://animal-crossing.com/new-horizons"><strong>Animal Crossing: New Horizons</strong></a></p> +<p>Just a daily routine trying to complete the monthly <em>citteropedia</em>.</p> +</li> +<li><p><a href="https://store.playstation.com/es-es/product/EP0082-CUSA07187_00-FFVIIREMAKE00000"><strong>Final Fantasy VII: Remake</strong></a></p> +<p>I think I'm almost through the end, just finishing up some side quests +prior to the final chapters. I'm having lots of fun, probably +because the slow pace so I don't finish it in just a few days.</p> +<p>I can't describe how awesome the soundtrack is, specially with the +nostalgia effect from the original.</p> +</li> +<li><p><a href="https://store.steampowered.com/app/105600/Terraria/"><strong>Terraria</strong></a></p> +<p>The last update for Terraria came out this month and I'm going through +the content with a friend trying to go though all the content. Well, +not <em>all</em> content, since there is <strong>a lot</strong>. This game is a piece of +art, one of those rare gems that I wish I had more time to properly +enjoy it.</p> +</li> +<li><p><a href="https://store.steampowered.com/app/466560/Northgard/"><strong>Northgard</strong></a></p> +<p>This has been on my Steam library for quite some time, and since the +Valhalla announcement I had the urge to play something Viking related. +Didn't play much (two scenarios I think). Is a fairly nice strategy +game but it has enough elements to make it enjoyable for a player like +me (because I'm not very good at them).</p> +</li> +<li><p><a href="https://www.nintendo.es/Juegos/Programas-descargables-Nintendo-Switch/Minecraft-Dungeons-1749059.html"><strong>Minecraft Dungeons</strong></a>:</p> +<p>Got this for the switch because I wanted to have something to spend a +few minutes in and kill some time and couldn't I be more worng.</p> +<p>My surprise has been the awful load times (2m+ to start playing from +the Switch main menu), sub-30 framerates and the awesome chance of the +game crashing when putting the console in sleep mode. The game is +<em>fun</em> to play from time to time (and I'm sure is way more fun in +multiplayer) but the Switch version is just so bad that no one should +buy it.</p> +</li> +<li><p>Some <a href="https://www.seaofthieves.com/"><strong>Sea of Thieves</strong></a> and <a href="https://beta.playvalorant.com"><strong>Valorant</strong></a> with friends to keep me close while social distancing, though I'm not sure I would keep playing since rebooting to Windows just to play some games is itching me a lot lately, rather buy what I can play on Linux and purchasing the rest on Switch or PS4 if needed.</p> +</li> +</ul> +<h1 id="articles">Articles</h1><ul> +<li><a href="https://thomask.sdf.org/blog/2019/11/09/take-care-editing-bash-scripts.html">Take care editing bash scripts</a></li> +<li><a href="https://www.tbray.org/ongoing/When/202x/2020/04/29/Leaving-Amazon">Bye, Amazon</a></li> +<li><a href="https://www.youtube.com/watch?v=gwF0L55kIgg">Sprite Analysis: Top-Down RPG Pixel Art (Pokémon)</a></li> +<li><a href="https://www.arp242.net/email-auth.html">Experiences with email-based login</a></li> +<li><a href="https://shouldiblockads.com/">Should I block ads?</a></li> +<li><a href="https://medium.com/@keivan/the-day-appget-died-e9a5c96c8b22">The day AppGet died</a></li> +<li><a href="https://nrkbeta.no/2020/05/26/how-our-99th-percentile-response-time-went-from-4000-ms-to-sub-10-ms/">How our 99th percentile response time went from 4000 ms to sub 10 ms</a></li> +<li><a href="https://lkml.org/lkml/2020/5/29/1038">Linus Torvalds Re: A wide monitor is for looking at lots of files.</a></li> +<li><a href="https://computers-are-fast.github.io/">Do you know how much your computer can do in a second?</a></li> +<li><a href="https://benwiser.com/blog/Making-game-engines-is-a-waste-of-time---I-probably-won%E2%80%99t-stop-making-them.html">Making game engines is a waste of time. I probably won't stop making them</a></li> +</ul> + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..ce2faeb --- /dev/null +++ b/index.html @@ -0,0 +1,77 @@ + + + + + Welcome to my site! | Felipe Martin + + + + + + + + + + + + +
+
+
+ +
+

Felipe Martín

+ +
+
+
+ +

Latest blog posts

+ + +
+ + +
+ + +
+ + +
+ + + + + + +
+
+
+ Site created using Lektor. Source code available in Github +
+ + + diff --git a/pubkey.txt b/pubkey.txt new file mode 100644 index 0000000..2dc3b2c --- /dev/null +++ b/pubkey.txt @@ -0,0 +1,380 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFj2XD4BEADbtfrOIjvgn5fnG/Z8eUw348IG/ERiheyed7EnCjk6MGcCgkfGNs4IsefG +RUGZOvJXzXMlj56T3nmMMvFEJ5/T6Zbu+eNLSYJC8yfkMsfHoSTJ83RDeJ/PVtwE3KbijiyU +C6wm+Gxo63Ef9V5vv/IOMc5CEtG3rF94j+v4wACl8LDnqH3IZZlCNfkXXxACqsLTvCWJhHj1 +r3GezBkBxiELCFcek1qISYoOdxZnpP804sk5IP8IYNXhdmxdsUbNQilLLA/Og+CmPcxzBN4n +3K4mWUfEDAwymkMkRC7PYimHdfu9pmJDV4S/4PwIOHElEOhseW7oOqe0PNnnm0mmVjcO04Uh +FK6TeBJJTnsSY1xVLi6Ni/K1F3/wnUV0e/fXNlItc9Qx69RXe3Gd1lUrreAWr3Z63h6gtzRv +xwBnTobemg3Xwm0XogtPtBhuaSxbt++YE1QRJ1jgW9ZcYevGrdMmSKyzFBL9w3blYcsMuZ4Z +PxxOWBWK6C+6Cfpaw5Wr9zPWnThpsS4Cw7iK/xX/U1IKZZJBk0FjRm9dbalvWG5YgFWAcabD +ZM735VPV27iL+9VxPL8rW1HQ8U4xfMtIyeEopEUq8N+4M0IQevm4lhFS/1hXLa91tBBPmV3E +jP9+q6GsQF0yjOokbLoMPD85f0w4cMASMA2HHSqrEJTpBaIDwwARAQABtCpGZWxpcGUgTWFy +dGluIEdhcmNpYSA8Zm1hcnRpbmdAcmVkaGF0LmNvbT6JAlQEEwEIAD4WIQT0na+XDN7rq/dE +P7Jxa8FHcV5xbwUCXg9QtQIbAwUJCWYBgAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRBx +a8FHcV5xbyqRD/42B3JLD8M4f/iJpUBA4jPeLAr1UtJoIBGBGHHo+gl4ZQFoS9/hbpwZzsVp +FFoQyYuSUBZNpoX4o9HG5A57Rx1MFYihWe3asfEAw2h7Ym4JYfynpiLTEg/DlKHeYVpcl/I5 +Xot16liIUaAGPBWh47i8DyTTfC+c2NC9pEC2cmXeciqz4vK3W19nw5c+gahQin33xK7gtrVe +/TRmdvf47nBcH/monkS3DFqZ1B0jY1bNDC7HqY+bYPUUpUDxXRMA+xiSiggwdMcDJlFEHj1s +mhEE57wLS7guFhUGvyffAoHyxhOvZgBDMgSeeVwWz4DMaA6cn9wolW3PTXV7EZLrxMN6RP+e +l5XFVgTd5tdJrzTVSdCawRFQJlVuUnax4MMNsBpniqDESzHQAk0On11MvtJ9Jddhls225jFR +WjX8t2CCrdH5m9ljPVH8zP0Xt28kq/1C5aWsw8N4vKOHejustUIiZ5OJ002Cn/HNh3wTkWz7 +LPAQUHkWxbhesVqDcrHMsZ9GW+kN0NC6cIIxsJAwaZP7sSKPWxxEGsOL2kMod2DctteD0Ejx +9ylri3gpIqs/sNcz3fiONhvH8ceU8UWuBWrWdg8y2nNeC5x9/YmRlY9m0PdrKqP88hYSSRXz +gxNX2tzXd85HpaHOk2NBkR5LIDDYcEtn20ZlgX5TP95boTBRerQsRmVsaXBlIE1hcnRpbiAo +Zm1hcnRpbmdyKSA8bWVAZm1hcnRpbmdyLmNvbT6JAj4EEwECACgFAlj2XD4CGwMFCQlmAYAG +CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEHFrwUdxXnFvwjAQAIL7yhaMA8euNWRTIKx/ +ejqX6FwGmTNC0TXD+ud+QlwnR5EzfcJeYdm2dGZySuzM266kXoU5t/bH0b6b6CqboTnn2i7z +p4JMMxsHKUldD3MH9a+lOaTaVVTfmkmqe7YNAAUogh6tvLZ0uKAIs0dzWDPhkVNERjRRoFyS +bz4Ico++guPWVEpt3+KulLCuUMCN0jiiSIx5dp3wiQq5gBOtgFFaknV6Me55bgW9Gofqx+dN +OVDVghRKPmUebqaqQMHbVb1vwra6n0BLVt5QyybC+rLzDqg3LGYhdqqkCo4I6pljBXCv2vmp +nW8Nt6zU+4C4grD6SGdihiZ5zzOWpT7JBDyawYurLJWn513CFrdROZN7b8aJWWL1X1KT6mGr +zHMDvjXzcOvu7fh6LYicWuSNcTwryxd+msPpJO906P+IpJiif83RynTBcHN3XHzEtER3r303 +Lv6oDKUWCSLYjhsVY5eI3X7Krz5PCYS1HCl7drazNahz3x0r3EVX96xlPEtOHfdhyzXpgw8i +qrZmyEwpdUJEAMKdvWnXdM3O+VlKp4kcV3Zn0+uCJwpxI88plPTIEoZi3CfuvmkGoWr8g4qh +rnRPR/GUzIkqJWXi2B2Fjc+DGYGV093GUWZmR7920ZwndsWz9tfwSOYhn5aLHXeyr1I1mTAo +PFaWglQ4A5PDxJMHiQJYBBMBCABCAhsDBQkJZgGABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIX +gBYhBPSdr5cM3uur90Q/snFrwUdxXnFvBQJeD1DMAhkBAAoJEHFrwUdxXnFvVz0P+QFq1OIx +Th8E4Q+4TFr5fhHn8D5crC+OYTwJISSMQgnqGJI3FL70C0GNlIPpfnS04c0WAMMgm4Qmaimx +ycc9Oe+hCRHig7ubARhhBKhJRqs5IOPpyW/NhylBZrVJhE9FCdj82XEi0a64JEiFMhaFOHiN +F9Wb3t6TjG4A6Uo5c/c/gNdS71GLzb9+4QVPxbvDm1cn7kmxcZC5ykhiQ/BRFk/vON2/4NgI +ExKF3DeHJm8BCLM9BRf6gUwDr/wLekJVmNSrdm+h8gNn9zCpS7IGJokZpA8oqWdhAcg8/puS +xuho2lieLuqW5Db7p0okFNi+7Zh7n7IqWFdq7mt3zf/5CMT8kNRyOMYcVyPyqbcmqzZGxeph +1El+6nD5hDOguh3UMa7Lt5QZp78Lagtpv+aI4rDf+IX1hkda5aYbcOWjxRk/zTI2kxjyj22q +NTs4vuuEC3BZJOckLl4lojGs68sizSAaPC3GQigd82BUy401sk0RtRveTladm62JOqynERdo +Tjm7sasn38ZNy7g9elgJltMkAHYNEKWcfQgTRlVcSUzlZrIDMnjJn/xT+alaOtE8qQM1aekO +DSEM1ps8KhpYxuLZcjkbHrFJnMeqnakII4uSdaDW0A4R7jnVaPdOqrgrJdwVT7gEVoXsx3Z1 +paT7m5L3HBKO+PoTzTbdiwhx9O8O0f8AABK90fsBEAABAQAAAAAAAAAAAAAAAP/Y/+AAEEpG +SUYAAQEAAAEAAQAA/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQu +JyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIy +MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgAhwCHAwEi +AAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF +BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYn +KCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SV +lpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz +9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQH +BQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBka +JicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKT +lJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz +9PX29/j5+v/aAAwDAQACEQMRAD8A9qspGht1RxjjkelRTclhu/GlaRS20EE+gqMsJGwR8o7+ +tdUYqOxyuTluc9D4U+3Xs8s7BISuQqNgsc9xik/4Re1vL1pp3kdI+AN2MAdB9K6kgRFZD0NY +Wu65Dp8TrJ5geTkbMDIzyM07vVjaWiOd8bXtvbaXBZRxOSMqGJ+6B2OfwNeWXO2SZ5gqKS2S +iDA/D0rrfFOqpqdwvlReXGBxlsk8dT71x985jgcjaSgOCBWc3zFQXKV5ZG2hQqDIxnI6VVZc +HofrWVI7sxLMST70kVzLC25HIP1rN0zVM1wmc8gYHQ96sCCNxlVC5HPNV9PvIblwkuFk7E9D +XQR2BkXOAF9qwneO5pFXMpbLygfLO4nJ3DsKY6FGwRwew7V0hs440VBxkfexmq0umeXcCOQg +FhkY5FZc5fKY5yx+UbV9AKlhtjMHldXEEXLlRyfYf54q6LcHzGICovBYLwP8TVe4m3bIV3JB +kgY4J+tUtSWiB7x5JN20AAbUQdEHoKiILAZHSpjaSRAl42X3YYqQBoXLZzt44PT6UwKm0AdK +KncE5ZelFAHuOiXsKSNZTylLluTubIf6Gt0YIBXGO2K8wuriQQrKFEsaAMsndAfeus8M+IIb +23S0mZUmXhcnAb6V3wqN7nLUh1Rv3DSm3YIRkf3jgCvPNXuY3MsUrG5bosjtwvrium1rWlDG +3tyGGcEj+I+n0rnbm0haMF4nluXy2EOD9fpSnUS0CEHuzkr5ETGzLDuSayriLzY3iK4De3Nd +fbaJK2om2KK8irvOW+RR7+prOvdOmbZK0WzHyucYII/pWLmaKJ5rMhjkZGGGU4NQNXUeJtIa +JFvo1BQYWQqD17H+n5VyrGtFLmVwtYTcVOQcEV3Xg/W4Z/8AQrxv3gGYmJ+97GuFRHlcKikk +9hU5hurF1lwykHIZexqJKMtGaRutUewXYtXiRlfywCWdZCAFz3HsfpWLcbBjDPhjsGIznPbA +OM57etYmm6z9uSGORdpXIxEwjDHBIBwM5J44I7ces9petb21vIotlcuQX3FSMHlXGOTjHc9i +Oc1rHCUlrui6VT2q5LWl+Hl8vxLl9HFJHDBZ3YYjhYuMu3rwSee2QBWA7tJKTzvB5B6g/Sti +SVGlaG1SG1iwxZZRIhZRk5yvUEevc4qpJZw3FlHcWuxZTxhMgMcZK4JPPX6/iMzVw0Y6w2Kg +1VSja01uvT7/AMxlvqEu9fN/exgEFGORjpWrDd2iabdQC3BuWceUxUEhO/PY++K52GVSDu5w +Og4qe3ungk84qjfKV57e/wBa5ldaMyZaYD95C0qq27I52iis152clhnjufSipGX18QXxhEDT +AxA52bRj8fWtzR7xJj5xYh0x8o7muHDGul8L4a6LMSEUfMeuK3b0IS1PQLCAyH7TcMeeAv8A +SrIlRJijkNjkY6r9KyXu5o1OQDlf3QHQ+lYs+omKYF2LTN1PQ/jjtWN2zS1joL6WSxsZEtVJ +aZt0k5OWI7VDa2872qGaJgkpwCDgk07Tbw3CbZTuD87T0PvXQ2dsbmcohDnbiMtwqiolOysU +oXZxerXNvHbtpcVs1xcTqFaPGce5PauGudFVdSexkgRe6XEDlk/M9fSvdYPDEWn6fLHcMklx +cKRNKiYLZ7Z64rj9S0C0j1GC0jcI8pOHk5CgdWx34H51tTqU9KcNZMmVKok6s7KCOEawtbFF +UMq5HX1qvKVIK5DKR0q7q3hu1N05F25JY4XeGOB37VlDRru3j86CeO5st2C6P909gR2PsM05 +UGru+xNLHU5tJdSiyfYbjcBmB+CPSty3uJnzNb7JJ2GJFbqSPuyAZ68nnnnOetZ93atGmyQh +gw7HpUWnTbd8EgDMFK/N3BrShVtox1qbi1OGjOisSoK25kknWT91OpO4IzDIK/kQfpn0qpPN +NYmI/wCj+fC3lqcKWwPutjr+ft61TPyA7GdMjBCMRkehxUHyr0ArVVdGrGkqnvKcdH1/Qadw +OQeauI6Pb4AO5iA4FUHmVQec/SmQzky9doIxXPON0ZJmi9qUyc4XHeilSQyRkHLpxuPeisCh +lnaJKZMyIAFJBY4/Ae9a1hL9kc5JTy1yABnis/ToBLyZY0ABJDnGQO31qxLMWJdAGcADYvXj +ire409DpbfV4Wt8yMAh6q3GPcf4VWmjge782O4EykZOOtcmsjO/P1xWnaAswz27VNrDvc7rR +kiYh2A4+4M8j61o30y29tJJFeJA8PzLuOMt/dHrXOWep/ZLXLZZgduM81LJoss8Bn1W1ubea +QfuZS3yJ6A//AF+awnbqdOHpylL3TqtB8SPqdu1penZdxDcGHRx6iud8XwyX87NbvskCBAT6 +d8frV3w7Y2rgWt98s8Z/dsGxkex710kOm2l080LruCPhT3HFYKbp1OaJ3ShCpTcZnj0WntBJ +Kl95ckJUoI+SSOxB7evelW4mhUWEK+RbSqVKhcH8/f8AM969Yn8G2bS7ypJqGfwrbuEVol+U +5BxW9TGSl8SOWngqUHeLPF5opYm2ykso+Ugnr6H61mXKPazpNjocEV69r3g1QvmQLuQj5x3H +vXAazpJhspExlox19a0p1lI2qYWU6bkuhkyXIxxzmqrzM9QwSZTy26jofatnS9OjmgkuZyxC +DKoFzn3x+f5Guq6POo0J1p8kTIx680mSrKR2NdNYm0ujJZv5ZznyyTkMQM7T6ZHQjGDXPTxC +G6kjDbgjkA+o9a3qUHCKle6ZyKqvaypPeJZjZkJ5IBoqJizNksT9TRXE0bFqO6cSZAA7YHSp +i5knLqNpJzx61EIcDpViFDuCkUNjRbijjuuHKxT9n/hb6+h96sCN7dtkyFGXtUccSqm5jwPW +qmq6hI1ukAY7F+6cc/TPp7VK1L2NW1We6n/0c8hgFO7qa9M8Of2iLc2eoRlnxhg/II968g0P +WpNOuI2AHB4Jr0tvHlq8EcyjEmMEk9T/AJzXPXjP7KOvDzjFasq+LbGTSriBreQKrPmNQeUP +cD2rrtNt54I0lkB3SKGYehxXnmreIU1TVYZnAIiA47GuusfEiyyLFKw+6PwrCcZcqOiNROTd +zp3mbHXpUMlww6/pVU3sJGVdcdetZ1zr9pAv3iz54ArL3marlW5tEjaS3TvmvKfGcsUepiOA +gxsMkDsfSt+88QzXkbLGwVTn5R1x6mubGkT6jO6QplQPnkI75roox5HzSIlWltDqcTqdqtvd +iWH7jYJHpmuk0VrabRhB5/k3BO3OBhsFjtyeBkMcH6+lS6p4L1UqGto/tOcgqn3hj271zGbz +TZ3jdJIJhw8ciY/MGu2E1NaMxp1Pqtfna0Zc8sacZVEu1mU7hkEjtzj/ACTWRI5llZwMbjnm +nyyySkl2z3wBgZ+gqOKNpZQgz7/SuuVZuCj0R5tSFN1XOCtclBIOcHpRUrIyEgcr6UVzXuKx +rRKHxiu80/4Z31xYrNNdw28rjcsTKTj/AHiOn61wEU211VMbs/WvVbT4gaLeadbDU2eKdRyV +QsCRwcEZrCv7SKXKa01F7nDa/oepaG5jvLdlGfllXlH+hrmWDSq2U+ma+g7HxToeqjyIbyF9 +3BilHX8DVk6BojP5n9jaaWPOfsqf4VksVbSS1LdBvZnzXKpwvy9qQSyou3dx79q+l20PR5EK +Po+nlT2+yp/hXNa18MNA1VGa0R9PuD91oiWTPup/oRVxxUXuhOjJHiUF0wI56ck+tbFjq0kY +aTPfqTyaztd0G+8O6pLYXseHToy/ddezD2rM81lxya2cVJaERm4naHX5jCFWTBJG5s9R6VGm +qhS75LO3GSev+FcnHM2AQfmq1ah5Jgq5b6VLppGqqtnbaLC15dIgAI6kkZwK9Bt1t4bVrO2Q +GZsA7V4GfU1xeg30GhXFql1GRC4JkfGTnt+HWuzPiXRQnyarapgZw7DiuCs235HpUUoq73Ir +LQVuUlGpF1vIWK+YrcEHkYH+elcN8TLcW9pYC5kSS7V3RJP4niwDz9DWn4h+KVrZB4tJCXdy +esxBEa/1Y/pXlWp6ze6zetd307TTN3PQD0A7CtsPRlzKb0MMTiE4uG/6FcknpWjDbG2gDvkM +3Lc84pmmwqJBNMucfdUn9av3RjltUbYwdT83PUGuuc9eU81Ip71dCCu49eKKrKzI25cge9FL +lfQLlx54beP9xMgb3IH9apS6tK6OhSMljlmGck+vWp4tNSPk/MfpT3hVOQtdLRmRQ3ksqKWJ +DL0bcc16B4O+JMmnFbDWXeW36JOeSn19R7153JKRx2FVHlJbJNY1KUZqzLhNxeh9V2Wo2Wow +rNaXEcqMMgqwNWyABk18r6fqV3ZOGs7uWFv9h8V0X/CW+J3g8v8AtOYqe4Az/KuKWGktmdUa +yfQ6z4tz2dze6fGjBriJGEm3nAOMA/rXmEkKhWJHPpWi8F3cP5km52JyWY5JPvTBazSyBNjF +j6CumnaEbXMJqUpXsZsUDvIqLkk9q7rwv4cMQ+0XKY7gGrvh7wosTrdXS5YcqCOldHeOsEJC +AcCuatXv7sTtw+Ht70jmvFEsaxjYvzKMCvMLy4aS5f5u9dZ4jv5C7IpwTwAK5eO3hAZ5mJbs +o7mtqEeWN2Y4mpzSsiOCNnyTnb61bhWNcAAL6tVYuzADPA6CpNrqoJOQa3ZzJljzSgKqxxnv +VsXYkibcF3enQCqax7Ytzg8/dNIi54zg9qlxTAnYKy5Ve/PtRTFORjjA70VQj03xV4SEVi2r +aYim3jfyp0M3mSBu7uRwDyBgVwMkRzyNv4167YWcfhM3sepXjfYdQzFFbNESzrnAdv7vB+tc +V4s8JjQb8KjyS2kqh4Zsghx+HeuhdjNnFTwk5+6azpoSD0Nb0lmvZzVSS0cdifpSaC5jBGzw +cGt3R9ZS0cJfQtLEf4l+8P8AGqLwMO1R7COo4qJQUlZlxk4u6PUtLttN1lAdPuY5SBkp0cfU +Hmt6z8NxwsHeMFh0JHSvEYneCVZYZHikU5VlJBH4iuz0f4m6xpyrFfIl/COMv8r/APfQ6/iD +XDVw0/sM7qeKj9tHpxtmA2qOBWbfWZETbugFRad8SPDl8AJ3ls5D1EqZXP1XP64q5qGvaFPZ +s0eq2bccYlGfy61wunUi9Ud0KtOS0Z4/q4W71GZYn+eNioQ/xfSsVwVYg8EdjU1+x+3zOrZD +OWUjvk05roXSKlxhZRwJMdf97/GvYjGySPFm7ybKqn5utXrGBbmY7shFGaoyI0T7XXBrX09o +4bQzMep6UyRt5CcAgYHQDPQVTCHk1ae73b96/Mehqu7DaCpz60gJbfy/+WnIPaiq5+cZHSin +YD3HSr7SvE62/huSW8aBGLxXEqr5nA+7nnAxn1qTxDo+pXOmPpdloqra2gOyaa73soHOVG4A +Z+lFFbbMjoeXPbv3x+FVpLY/3jRRVsSKzxsvXmq0irjuKKKkorMhHpTCcDpRRUjEynoacrAn +AzRRSAScYVGBPpVZunvRRUsCSO4+XypQXj7eq/T/AAqYBolCg7kc7lP/ANaiigYO2RgdB1pv +O3I6UUUkA8MpOBkLRRRTA//ZiQJUBBMBCAA+FiEE9J2vlwze66v3RD+ycWvBR3FecW8FAl4P +VigCGwMFCQlmAYAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQcWvBR3FecW/anA/6Ar/S +clVW45egAbHF4VeaLAktzuwlTW9zL2f8plCmbVibR/dXt6xSI86FaOb1JJBbE7JzFOc3fUrG +Pmu6s+vTmTmiBkPjyBlKl29mSzulVxDW7gOwVqwMsMWHo0flCG5mHY1cY/tTPTEhDoEQpsjW +L266IbNAvIyvylDmAtjvm2zyP6ZWzWRpMYlb2tuxgJAZbC8YG+NIA7zbTqZfuh0+IcHnpprF +x9YewNvFrhqQOQpZy5eUVHrWCvf0H/nbWjE89c3pY2qbjIKbF1v1luJcRBfyc1cBOIPsvQcr +krawEkEl/XPBo7KLLkTtnzxOhmYDalinsw8hrxFr8K1nIN5lDKC5vRzIwWEWKdFAUY9R4wz1 +OZsXT3mxlNseVnmuYmihgzPsqaRZ0J4Og2j/dS+5NvoNU5Fysy+e36mvoZja9EfvCiZUI7NW +UalRx2zwPa7D7JR0mK2F4f80RJubn01fcFoiUMKRjXtbWoAH+w926AMzl8mVoXBJfCM+hcsu +qQ9ArTLPc/ibXxFqxCMBFBGeiIywyU+7SQWKhx99yuohk4BTMpXFEnjuiSxsQvz/KzeUQAZb +9mz3YIkhhxab+BLJnVtjvL1MvngxkPzO57xx5sq/hL+GQZP2SpgXpsmNu26oUquqmQk+rg8F +QgAXjB7o+aKZXneXovFvDPCA/8tLalLR/wAAIXP/AAAhbgEQAAEBAAAAAAAAAAAAAAAA/9j/ +4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAA +A6ABAAMAAAABAAEAAKACAAQAAAABAAAA+qADAAQAAAABAAAA+gAAAAD/7QA4UGhvdG9zaG9w +IDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+/8IAEQgA+gD6 +AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAMCBAEFAAYHCAkKC//EAMMQAAEDAwIE +AwQGBAcGBAgGcwECAAMRBBIhBTETIhAGQVEyFGFxIweBIJFCFaFSM7EkYjAWwXLRQ5I0ggjh +U0AlYxc18JNzolBEsoPxJlQ2ZJR0wmDShKMYcOInRTdls1V1pJXDhfLTRnaA40dWZrQJChka +KCkqODk6SElKV1hZWmdoaWp3eHl6hoeIiYqQlpeYmZqgpaanqKmqsLW2t7i5usDExcbHyMnK +0NTV1tfY2drg5OXm5+jp6vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAQIAAwQFBgcI +CQoL/8QAwxEAAgIBAwMDAgMFAgUCBASHAQACEQMQEiEEIDFBEwUwIjJRFEAGMyNhQhVxUjSB +UCSRoUOxFgdiNVPw0SVgwUThcvEXgmM2cCZFVJInotIICQoYGRooKSo3ODk6RkdISUpVVldY +WVpkZWZnaGlqc3R1dnd4eXqAg4SFhoeIiYqQk5SVlpeYmZqgo6SlpqeoqaqwsrO0tba3uLm6 +wMLDxMXGx8jJytDT1NXW19jZ2uDi4+Tl5ufo6ery8/T19vf4+fr/2wBDAAwMDAwMDBQMDBQd +FBQUHScdHR0dJzEnJycnJzE7MTExMTExOzs7Ozs7OztHR0dHR0dTU1NTU11dXV1dXV1dXV3/ +2wBDAQ4PDxgWGCgWFihhQjZCYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh +YWFhYWFhYWFhYWFhYWH/2gAMAwEAAhEDEQAAAegOFTLAioZakz4oNM7dQQ0pH1cCJWSjQjao +nSDpyxCUXRFiIqYyqjSWkoRNSlWqNMV2sCXtlOSqMqwhS1BX1DUiARs3TSo2iJDtJE/kbxGE +QmUtodgoeXJkgWgiJcDpC8mohaa6CwrFaJYxCmWGjtrTRqoasIZYEFi/bxbxsaImKm1qVA9K +loUNgpUStqaDNkwpFk7ZYFg1EUyBSsVoLQ1YWHOP2V2ySsFTVzALRTsImMux1Rot6tgPYkR5 +5lZu+YL0zfSFTs6CIlLbLKmrRYVplJEIWmNFSocuHrurswXBxJUrloWoA8mhSdpTRrdMdcmh +ZaZ7GQ1XErc0CURo71yUVqu2W3WiyjTCk0CKlGIKI9lsFW1a8BOIkCb4RzOztnClwVg7VyNH +TNdANW4evgKNZ1Zmko8+kBMJkcxoK6IRSkxFSUKxGkalMOGxTKIlAnKmCqey0cU/M3ErOGC4 +GlsBRE0qwXbZ0rQ3E1VAuWZmAXg2UMDI+MbOZm2eZ8mSkrzeVIwiuWqoqiNSCFQJRhyCZzXO +Q74Fm3XZS6W1CvlCUBo0RwiSDUsb2h0euU4a6ch3oHN1MHrInT57aY2GitErTKtUqhYOcCUD +Ic2NZW1Dco7srIKaM72isWV7hqR5iIqZbNyF07xvogmtgyaz+sUZw3TmSJSQJomRG0qEldgQ +NWjI3IhC0mgoop0lvILpxXrBtj1KleybM1wNgGiV6oyaNgrsA1LTdVzWuIdG0yk8QtkEQIzh +vmuxDWOcNHlY/PVGq7xFG16aTcQjtuada+UwwLhSIuHMXFnXu01t5QrLQuY0jJa87G2ykw3M +st3LcUEDJlkwWBxtop46rVqevccZ0OWlloUphBAm45B0b4iyojja0V1hesctWLZbfXFUpKyp +XChSocU5HECyVwYJD5wGVppMQkWydTx9UFRrRiNYIpKlgIpbNWQ5UPLYNe6rXRvCla4piNUz +MVMqSLbTUxtV7U9C1cUySJgJBkRDBEiQSNVm6on2ej9RXuejYhoVgIdDjXVNrVa4jgwdMomJ +pRBO4jC5DSMqKUQU1bXM07Bu16TnyAoOmgJOkEOJFI04UO2mB6Gx42Ufs0c0dHLSvGmmaiAz +JsRFEctV1MIiKoiITpiuld87fNIqusrYc7BUmEksCFC0RSlUUnTAomIpWTqWmdSImBQUWoky +mlJ2raU0qU6v/9oACAEBAAEFAk91OmoQpLKFKKIylzcFY0+/TtT7wFWT94adywlNVMBlzE1L +PbT+cpVqGI/nahrpVn7gUxr3AdHR07+y+P38h9zychoas9lcPuVaVVdOxD07HUnp74PgfuIp +91VS6pDpVntx+/Eqr0ahR07AUZBHerCqiHiTUjsepokLGvdZZ746NY+8DRpXkMqMqq9S6qBr +qfu8A8j2yccnZanxegBGTHHXKjKdCKH7qVEOuRJPMOTKn9IxkQpNOx7FRPdJDUQTWjRIaVYZ +1ZViEDAFWTLAc0elD2CS6OjIo0l+0/bfQ6dKa06u4+8k17JT24Pi1klivbg1LyMgXGQMmR9z +gwWdGmgCelVKKpTvXR0+4Gl1ZVR1NavQtICXxahzFcsIQUl0o1KU6lhXcaNNXqXkWSo/dr90 +MPgzxJowx2Tq0xISy1tABZAdAzDVgMhlg/er9yp7UYYLqzp2AaR2KylolCmXL7KlEOrUirSp +KGo61ZY0P83pTgyWFMSB1B7B1o1KQBqGleSVspFcUh8WoF0qKdiwdPvD7g1Z+6NGC1K15JpG ++W6amNmJ8plD5bUijx1UGO4QxRrT2HcOopV0+7XREILKFIdGiSr/ADdqOnZSQpqS1DQsNLVV +11r0fcqwWe2inw+4hRqktaXXUasfeWKhR1UnRx6tYVWlGf5oEFkYurSxGKJDVoPaUAKfeXIz +qfItJoQSyyf5tR7JXRxyihkapNEmhzYPerK2VFl8Xy1Mgj7w/mKs9wp5PJgvJhTzZW86s9qE +tMdBo6pLXbpKe/H7yLdSmq1UGdP5gMF1eXYF1qxxSGVClCleKS8cVL9vtTT7iKZMKLUhC2q0 +fui37oX7mWq1lDNR3q6urq6sONLxYSAzqHNcJHdIZ76d0XFB7xGxKg/eUlKxPAYvvoDyxUJE +F1S1Sxock6l9wHXSun3KgPR1dWidSGiQLH3FDJJGv3EirSmjWGovLvR0+4R3qzTuOyFqQY7h +KnUHutYSDx7pTVoRTsstX8wD9yjo6feTKtLF0pm7LVIpf3AmrQinZTUWXR8P5qn81R4vF0aU +VaUU7Fqau1fu0+9JCEj+YBo0YqeLxYSwn7imr7wDP3A8WiWPO5ixP8yidSWiSNbxdHR0ZDm0 +SFMp/m6tcShIQVRyRYGjo6fzCJ5ENN0gsFKuxdxwYJDPV3T2qz91GKk1WiReEsf85WjE8ofv +UjVIpf3OLo0sn74VFEUxolZnxaypR7UdP5w/cq6fzNrwoHdez/Pn7qeH3//aAAgBAxEBPwG+ +wfth+jGQJpIPowIkO4hA7trKLjLIbTuix5HP0rJPDdO5KeOWJFUUdo7Nr6JBu2Mb5CAkfT8a +GALsaZR0jElMqNHvi+UdhIpIcQ+1zRs898ToNSUlkwybWZv6Fttt6AJLMfl3U7Xa12R0JpJv +utB7YjQn6QLy0iOkj9QS7J/WE0ZAyNn9n//aAAgBAhEBPwGuw/XPafoA/QL7ZRAeqYfk13Xr +aDpaJaXfCQ12HW0cvAfLt0GhOhGp7L0/o3Wg7D9ETLuRJvXZxfedCOyOsDx3yaTrSEHS+y+2 +mmtCdIHQ6U0W3cXciXZLQC0Cko7CExrtJ0A+kYh4bTLSP1DHsh9Wk432yxFfs/8A/9oACAEB +AAY/AvuaOvarq9OP+oaDh/PfD/UNB/PZEvT/AFdp/Pa96PX+e11/m6F0P3OIq6/cofu6Oh+5 +p96v3/Xt5n5P0Po8U6uqz9j0/mqHtQd+kOg4uh70+9o9Rq6I0dKPE+b9Hxr8HUcPua96Vena +jp2r2yP3Mv5j4h1HHzdKMlLyDUV/zWn39e1EvUvL71Q8k8C8lB4unkXT+bp97J4vp4/zOho9 +Xwep/m6dq/zOZ4+T1eoD6DX/AFFq6H+axDo6g6On6nV0/nvj31+9rxeSe9f9V0DrWvbR0en8 +5q/j96lO1R96qi/UOqXT+cr6dxl/M/H7+SXo6/zer+Dr/N0V3o6/zlfuU4h6fzlO+vev83Q/ +74OpLyi/D+aqdH0mrof9Q6PLtoz/ADAr36g+lT4h+0H7T9Xr/NUP3KJ496/f6u2h+9RQdRw/ +mAe/Gr9B92n3Ne3HTvq6j7pSXT/VVR92v+reL1fB1P8Av1qTVX++Cg/F5+R/mtdf5mo/nMA8 +F8XT+c6tH0n7ujr/ADdUcXU8Xl5/z3Htr/PdJL5h1dEJo8j/AKkof5o9h/qU/wAx/8QAMxAB +AAMAAgICAgIDAQEAAAILAREAITFBUWFxgZGhscHw0RDh8SAwQFBgcICQoLDA0OD/2gAIAQEA +AT8hcXkrdG1WbUXzVDwvVZk0dnq4IPl/zOKpEH/4CG5qd0ht+f8AmHzZ/wCI4KfrfuqRB/yP ++iEWa3RFFJL5G3uea0JOuayfbj/jVzuz5X7sN7vf/CLEvixY/wCRRKCt0nb5/wCxY/8AwrQs +WYLOZQRlVrwXiruqv/UKigCx4srccVVHeMjbHg1s/buw8LH/ADe7KkeP+TXiLxzfbSsUvmvo +/wCy3k//AAiKeGlBG1DXungpMyXgF6DL/FZmFTmo6voyhu2E5sZP/NNYvv8A/BxTLopBTxcN +a4qQx/8AhGKf69x0TcRzZdE31h8tAL6l84PNf+g8Hw1CpiYyazRRJ/zKaGd5VCf+ukUqv3Xa +rX/On/8AiRSWEYV3FVyD/Pf+rJiYeDFlo+RdlYmxxNxA/DbCfGkJ7/4MNmGL2ebMN+KsmlU5 +/wBj+0qzg4ryDLI6KTBNIHyVU7UYPDWZdf8A4Im8VHUWIMj/ABUAJGFcAMRx5/F4o5H790Hh +H4Fc5IclfYFKji7z/wA1N2qJwLPslFWmrJhRB6olD8UsOWyHZSUxYpL/AMGw5vrf+K5ygKh5 +vW4smVYz83s80HocP9qpdH3NIuTP5jukTDmIaCAQJ+/+DN8GtP8Ak0bIhs9UFfFNZWNHNzOq +ZZdM6WQMlUP22MyUiIh/VArFbzUnVzmKFanAn8WakHBN09HSjUi/wf8AlZHw/wCkvam/8R/y +a42k/N8FAy2CUzPFPPG43QaE5fVVA4ctey+dgaTcd+i8Li++yY2a6VShsSyfBryOWhARU7by +p8WP+zFNWeVsP/dsVgSsPvddh1elzVX1cSO6H1uiEr2/8QBaU+hWhVYHJ5oaj3ytgae7Mf8A +4Zr/AMCXn/8AAAGd3CiiXCxt7rJpYjagJxeJf+J4LqkTzWcL83Hs0Dx/b5q8UD0XlLiiMq/6 +SVf/AMA5RSzcfm8cVEoqmXCKAw6VVJlJcrDisE1SbVJeygTUtVT3Wq8KDkrQ+ViSn/gn/wDI +zS6RUMQVQLNKVtAX2BqFTltIsuLxK9tI0hRSKZyyIbisqoa/8U5Jf0Vhhc+DLDIkDfSf8xx/ +3F/slIZWX/ApSvVSci+LpFIPqpaVbKhYf8wH/Ej+v+AQxeF7/wCTYg9WLQ2BowfH/D/urDUL +lFNLHBlQqGm3qzNNcpfWNUT7XitWbNmz/wA4Dm8TxZJFMYpJHDGzksKjouJ63/hze/8ApY/4 +X+RK/wAPNetE47sP2oFQje0ygIXP/wABVDmgcWaXMUOy63Xdhz9bVGCDy2TD/hY/5H/Sh/xY +8KMP/ACgG3h/8ALKLZs2BzRNLEl7olmwuCrcViCH/kpx/wDgGTdLJ/yLFLMVoTQvDUq2sssF +3hYqNsvFlguMoq+b1aN2G3yz5rbq/wDwAlFzix3/AMLFIki0CQ9KFdlWk/8AH/kvFGKrpB/y +QIo+/wDrTxYy4GrHrhsTij8ZsSHiX/pD/gbNL6JN6ytYaT+7ui7+b/meej1C6IfShIEf8mkN +/wCJf9FeBeWw9FwinC9eigrz/D/vasgmtH/oaZnXujd/8kkeP/w75VTkff8A+A4/4WRs+kKb +zZ+6bsni5/0Fn/k2tlizVS/9hoR18Ui4ZdNQOV7Fe7Fmx/8AhPvFgXhYsf8AXVjXabCVVn/g +mwKO7RlvLn/4CJ0fmp9/9+X/AFSbDjTgf9RqqU+f+NipfMa4f8H/AND/AIJZ/wCQWdvPFilB +/wCIs2bP/OGo/Cp4pCW73/yNruKJi8VXw1y0bSps/wDCpHP/AOHGWP8AjX/s0Sh/+CzrKh/w +v+X/AMyQf9I/4Ys3i5/zLsS9ef8AmXa1/wDwPSxHf/wSJ/xqU5QzP/4p9vgf/hQ80kLnvzQh +f+lYuf8AGKlj/vFwsvdzRh8P/wCIBSWDHSyHKf8A4TiKwFT/AKMf88iXqjopF07/AMttRY// +AAxcgZPDckz/AFTJB+LFFH7/APHZqGHP/RLeC8tq6r/+CY+2616p1zjA4qIx/wBywWLFj/8A +CLRlzSfzt8kf8ykP/J8WTLjVDtUNk/5Nnz/+CeOaFo/dLOh5rUdf+RX/APANj/8AME/DWGlm +X/8AAf8AIKf8PZF/a/8AwNf/AMT/APh4f/iB/wAaf/g//9oADAMBAAIRAxEAABBQVZaCo2ps +TDhTBQQ2APGp0bN8+4zjTRQdqqFd4pEQS4IhvLnrLWzLHG4e4RTOk8vs2fMLHPPSN63OaOBU +RvR0mkq7JDkTQlAafNm7YeaQXP2UsuECC+b5ByeWt0uahANUMKae71anGSSormEMj0QBJ+Qt +JS4Cg2+JtZPARBNdgIdDw0jISrLLjkxBOsAd3eZCirWOuyS7AXyhNZZjPy7EoduTIWkABQzh +VXyht4HhYusFj2Hik0sIAuMdVO+8tcP/xAAzEQEBAQADAAECBQUBAQABAQkBABEhMRBBUWEg +cfCRgaGx0cHh8TBAUGBwgJCgsMDQ4P/aAAgBAxEBPxB2+Zx+Nn48iXIfwllnj+AzBsWWejly +Lblyh+9zIxnhz8OlhJdQSQL14Fd+b6nfVudT3By/f+E9yXCOOcR0MCGxVmVDQY+b5kMs8I0a +XUemzYS4ObL8Qzb4RvBIzLkPVc586WP3j8CN5lxjPnJHY2JWHuzbB58zgjmPwZbBKdy8HwRb +mF8y17+DGXzfBC84dsIDsjMfwBtH5ktiRKLbbY/LaxDNn8P4BHVr4+6s4E/h/wDBJ1bt+4MO +LD8b+Dcj+Yx6gsnzn4+vxCnUp3fIj0Pxn/4H/9oACAECEQE/EDMW8+8s8W238XVkcwmPE2GT +b4PmeanNtuTbD6NMhzbqQyOLct48IcmbcrM0Nlzyx+U8iRlq4hJm/jBrLB5kVpKIcnvFoPES +ceYdebLYfG0Ry82GYnobuX4j5k+Ydk9wOPYcvV8E+P4NZb9LLmGctlsN87czZ9fAgwo76aiE +Emw8yX3PUe5MaZsteIleHxbDMS+IZ5DiePMsl8Hiw4/gvok3zIXuaER5nCr6b4HP4UvoIByW +LKXYfjPo+Z4k3xKnctsON/H3HP4UPcD1MIMfxZP1j/4P4//aAAgBAQABPxAhP5qkhVtEoJHm +wqQ0wgBJPmhUkTqiRskJFxCC9vdLgEmS40EYmJykZ5eG+YJqT/xzihg3jfmyXMsTVhBk0hPf +HzWUnSYHqzOtABD2my4jmuG3jMcq8B5bCCf2ry3yZPNYT3/xFywvhRDeVBJJWnpjSJD8LOof ++LNgDUvFBTkKRMFR4Viaig7y6yqPAf1/N8w0kC6FWZBy0Dlq0BjUThDoueaqZLrzSg5a0FBP +ZNX+qNClS5qWP+gG/BUGXmsN83gdtkJUMXwUEHf1X7SVSd0gWR6K7L/wU4bw7eDx8VgmmYFU +JqBGrxI2omCYqAonASYH/lwclcv6PVGP6U8iwHFeHQqRLOB4vuy9XUkpeE2CvZ/FVkoYlRYw +hJxXSu+ryyyERQ8XNa/9ZEeP+RnC8TVkyQr5hyCuLsnBQFgX5Tk0h0OL/SkSTB3WSOvN5KX5 +yoSs3MT3UcFPVX4ijXwjzYK+6TjQXXXFdwvFliKM7Wq+CiDoYT3VUEPFih+moi8R4rIuStf+ +opKHND/iKE0gxPVfYF0e7PAyfVRFbN4K3ZHZYPfHNAkiPBkmqediynFUkLZoQSwl+KcuDTpe +824cQeLJzMRh7sWGHJx7+a7GcD/2xvCa+LEVRBn7qRKc1zOnFIosssSx1xWMM4f/AMRloSzB +MQOj0+NoCkPbAfbn6fdEkjUgH3z91wvYGTyE7/fip3h9zA/DCeJvPdiESR4Yg/dRbIbg8xUh +PpSQaQQ1kg5/NJyRo8OVQA/FZdfwL4nN2HPmjI8r3TSwM3yq9E5aZs3e9UDKwLbh8NiWHxPC +2TjHTUkXBFxBaf8AosBNRUJFmKLyWORISul7jn6mKUBMQRLwz81slADA9IOPuqQAV3g8R4f0 +1zXCY2g9c0xMBdidcc+KUZ3gnkex930oAIT5srX5oBOYILrizTkU0qux2FhSBgd/LWJKNtM8 +PYXcPlvVTSmsh24bGD666kHXxcLseebGE7wl0+MrgeOfZUiWL4r4uhhSYClwJqudVAnz1Udr +zLsP5Hf5sG2pBkzxnz37qyF44F9xEUY2E3iDg++J9VRLsnGxpr34ohFl4DwizexzZKSB8WQp +VplUmy5aozxTB9/m5jmajU+ahIcFT2DxWYGLFPKREy+KcdJw+6n8uVbO1LAPR9UZKJOTnpoM +QxeF7qEKZR50VxDXlOKZ8g+fVPIBo6eV8UCTIOz3HwVArMcvCxn5GGiBeECdcPz/ALV3eVGV +G6aU5OnVhjurmOPdj5s/8KgdVEK72qQl+bKTLMeoHi+NB+7w43xZXZrvidLBm1pxyhvc+L5Y +cjVSsA4LNWPqkNC7Uei+erLukYay25lAvAMVvLi7arhsEznWcZZ4iLMGD8UAf8fV2kaIoMaF +4EiHpvpf+FyDuoC1wq2X/Hqtk6cPdbC1y/0WdEmV2hPmcN54qdHBllJYl02w4ihKAFjcQwPB +HceaILnteVmzxCzER8Qn7swIOeoD3RRcSDik4adXocl2nnhrVmyxZqD3U4s3ApNB2bYslvov +GDWk4ny7LODm8Nj8PTYnY8XsSwIzeqrGzv5qlBvI0x+aBANSNm8xmhCv0BoYWP0uLfYzEeAs +tTLpz7rqkzfGCqc4v0+aqV1crpskVahUebL1YCrZqnAf+BTx+jctIDCNVE5aKAH3S8E78XTF +OzrzW0uO0pUcacrl4uRRiDrxYDE7Hn5rhxjiwnZZJN4o+T4WA/V4rD0+PigHIPNI5OSsHaKb +DQyxs2QeSvtZf+xWhVCwebCx7vM54a4oMjPV1Dz1Rt8qla4I0knnzWZQ5E8Fi4KJSzYduZry +EOpQmxlCfJ1VOK3Oz8WWPSooxV98OscXc3AoOrs38HCx8j38FDJnGB+EbZxp4pnlh0nr/klK +hqqy2WtUxSLCLx2othPq72ntOygzRSnN9LOAac2R/hHT5bq3uOfxZ/E6ShcCHdF+t3eVVKil +hEJvmoYTf2Kah4aqLqqdUAsTCT5YUhEccXnNvEGcH3TBTW4y/wDtcULzvcXanAQWaIz81g6m +siQ+qdV4un/25LCdVHpeKMAwKGFy8B+K4xw8nTTMxLShHZEXCuYq63r/AIKPBxQl9h4pd8c/ +FlKrUbkTmDZxApINa3FGON1qkcMn68Ve7wNxrLFEUlQyhonhwPJ8+S4jq4HDRUDNMECqwgAO +aTtWPATWVCC9XqSCwGCqTWs0xy0RUFPiS3BuXuiX9UlOax7JRA8jzZlVN0X4Y4bGx3l/uxOY +mV7X/VKto4mwUqKZQJfDQAq43Gx/wGQWAPej5qTI5j6syffLRkfNjaheqaM18CsbC1BT+SrP +Iu7p+Jo5wHdAzsTFcoDpoyFN6T4YrKy7Y/4LJxfwf8ApRKnqkClmSWbEXxZWGy/BRJLEWeR6 +qntNlYxF1LOebgH/AMpiFhtVTOZWRTKcpRElGYXTG81LJlDg8UY5eJ5VAEdK38VP+TWgYXBD +Cq5Fk/4KHm4A6v1UkZ8Ia8BByORYnOallJG+ljzcCl0c2DZqsHmyCFzzXgnubkzQRnF0jgOK +GDy+LFE8d2YaTmVMk4Pw1kXDZ45ySwDii/NmxeuZeWqRBzRMaueCjouTHCfzd6J6pEQ5lJ6+ +bGpHoYPupQD0f7LD6/b/AKo+k+Ba01+oSlwSduf1zXzGcjjfm4IvFWTvdJiKgJdaN7qSd+qB +6OVg0URlFE480jREd0RhMdlmTZEnFKuv/Mo86saMeamZaAik+rC26G4WRxokvSGzVp/jeHGg +JU2P+ilhiPns+G7nfnYfDUTmzBlleWr8KbvV5Q7Ukjiq5vIfNlET5vHD+awfABmppf2HzeTZ +sjor0BD1RMByPisCGn/N80bVRCSA1cq/1ZyKEyOPjiztj5Om6fw0IJ8bzS//AOFcNRj7rIcp +PxXpWhC6mXJa9UtKBYEh2pcbNoqf8zhcvukDoU9cJmyLOWpKG9tRixXkD/jxesfUv9VQ4Zs1 +obAqkZL82UkeTppRfS0yVNj/AI3fB+XxXiQkv5sQzNMsHV4XhCqPBxUQFZywSTZoLxYTWyjl +Iy7dWbwvPdeSuPSzqrScljzFgVhcVlRTRi5bJ4aLEvw0KNvbZC2ODooplVZsmBtCEizlUB8U +Yae0+VfqMANU0i2VaJYq+ClPdkiC75qmohOq0mUNlVq0pXzZ+LPqjTxZFToSkDHFUDbhVIt3 +g7oBZcPPP/ApWNiGzSrLnqjKa4nlaeW/Kr1vkJPt7+6wYkNRcNQe77FBUsf8U8lIPhHmjDiz +8VV0y8SRYih6rRtMU1M/DxX/AKKV4GrpxScnFcYpZCiOeH/iDqeKsp6+rDfTY6/9UGrSjQqP +VXYjmwfFJUmWAw+uX5sFI/R+OmgLi6r/AMGI7z82L9b4+KHJFZ4rRoSlEEnVCHtsBvNDtqff +/UXAyTDs81YBGe3O4rvKyRiJK0lQrbT/AMLA2RYWH+0+uynCPJz/ALWHR9prWFTJU2VnydN1 +Y9isjDZL9PZ2XixfHehRBRJmsTcrfURvKe7ONl2dn/xpcBGHc+I91ghE6azV81HXqamprUN0 +vNhOK1IryZTxAOofyohAf1/7YTEHguR5rAUQzhKflr02JCKcL3XcdFd4si6KecpHdkqVyIUC +P3QiuyEER1BFYWGMb+C+RMMQVHus/wDgwqJX2UFYXbLZsly5SFhoCIf+P/CHJ0eyqzQ6S6GI +mqBBzZvO1g7Z3P8AqTBOSWRkJ8xckf5ivFeK/wDRr/xr/wAd/wDCvF4v/wABdA8QN5Xv/o8t +Of8An//ZiQJUBBMBCAA+FiEE9J2vlwze66v3RD+ycWvBR3FecW8FAloq58gCGwMFCQlmAYAF +CwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQcWvBR3FecW+c6w/7BUwTKPo2bIz6iwqWko/w +1wFdDnXgZjHdts0K33zHtuz3AgutlZZCu9ItaxEX5Lq2W5rBX/KfKhtGgRyI55xilB3FiHBb +aYyLC7Sc68ay3B2r3rdsM68SMNPyCUSAcG0SwiCKu7v2LM7KoLW+/+zGvPoED0mF+nfE1pw/ +WyZc/chvVXpLQOc19A7MsOuBxzD1Ud0Z6Q9uJkrAmj9AJ2xNk72DthE4JPpHwoAY8xptQszX +Goyp6AQOMtWibR2lngBjrUl215mn2h0QohWlZKfIJZKETapRwLWxPwJKPOYjNAsNu/fUnizc +qKFU2E20E35bAuxlSwWsLw5bQKs0vYE7bMrfhYjk96D+Pxv4UmyacCY/cM/xgjy6dg9L0pfY +de1Juu/7SHOaZa7yiKX2B9lcoOQKIfG5PPiIvwQGlzZRSTQFOa+Geh7MqGbLv4fYEyH+TstA +Z96+O3/twoyoz8RrDZDAao4iAcS2weuk2tM+OunBwnPE9SRrDZFlXlBZ3w69r6mm8CQmFLMS +XR7CwuG0dt7azuFcXD3d+L2yQcE4ZzczVWbp7Xzzehoupjhots5mMhmBjj/EObBAILZoO+1p +z1f+6JNiyBKhbAPxMK3UDVYw8X2jh+P7KDcCLZQkLJPniOjL5k0KDmNPMA/smthbo5sB8SDp +j1S2lo6KjqzwnIO5Ag0EWPZcPgEQANK0PfaRzz50o+5i0ExQjRSe7F5CtbDwSxStnfWFG9ZO +u4Xit3rrtZw6LmkNbkh19S+/ov/dBBdU3n7xC0ZAb+1GoeLwD/VMADDuVh0TZunl74JIvlEJ +5l0DKoQH5i6fjZGrr6+t/oOWlMACrhzyRrGZNw97rs4PZ/NMq6kwYfpejXtgd4YEONUQk4Ss +gHTktnjwV53VWrb8Ueg44w1dhVwwu5BKVZqIdkfwtFA7PEKjAsJ4yhXZOeskzwbted9tiEcd +xtV8U40rV7iNV9UeONF1s4NUt2e7ZlaLK0IRQu1SjAiJJ7DczquRQw/xn3OhAk926/Iq8BUC +SRIj0s5egQYHWvpUC0RUFbN6jH+MTkoHIJdAyko7yK74eq7OykyhIU+ynUrBqzOaqeK2MEL6 +DOQpVnUCeQ3cuCZS9J4WqwzIHWtCticR4RckrUqxjgSfwSxMBngCxjWPIVE8nimkAPngpZd+ +PrRcUGgbyXb77EAUR41UGWw93y/Rr4VdA0hABWOg+NcgDLxCM5Am8vT9u9BG+rVxM/kUvp30 +DCuPkPjC37m9VEL59L/9TBGOgdj1x672wThggdciJs54pCb1K/0Xv/bSEdi+it0znn3aM5tD +Q58rBJltm7fSu87shIWE6opqBVUjU2CyH7Bvy3xvYw4sqmHaaPE5M90Or1OeuORtABEBAAGJ +AiUEGAECAA8FAlj2XD4CGwwFCQlmAYAACgkQcWvBR3FecW/Pgg//dmXzNvaQxbyxuHoMMfdE +oqkZQz4JY8Q563zpffxXNITX7p1Cmge3yccAk/KnIdsGTVrsbTj4Jp4t0yGPpI2ekTOZi8rA +64dm5XBo0fRVz51osCoTr0LAokebKn5jyratoMaidQlCg6Dc3aWpfTHyBzx9PkRli6+RZclE +nG43gW9Ag77es1blGuTSwrhuZ2P/+9ii+XfdbarjyQcuBdKWfOIi7A48nNDiXXYHn35g0sxt +ohU4gTPU2OTCEHdec4cTqJkJv+bhGWLJSOfh8qMpQ+vGANkEmb+4b72NslJ+3VK+zko95nCV +P6nwimpeTmyrsRzpxOSa5JuCUv9VV9WmdRHZCWkhIAuEHpED9cMaZLdAMrMjmZVRDvylDKZi +9EtKswAUZMgm4XXzoE61CSFZHNd9MwYfMkpV28DTlszSscoS0yKUdOyko9ySYC/hktI6azwM +cCUcx1aUYnjtSWdP2+1+zLLMPjGovEA/VL90U9sesntmWf3XXmmcQTc7TtWMRJVh2Yh+kpTI +BrUSH+GoyW/7nUD2n/Hb/1D0SvXQ37QaxyMhE4a+ZTMrLOqZIGChAH42+CIqmJi8Y7O+vwFQ +5URSEMisXXRd2jn4cPsdVoVIbPa9N6gvWKuCggKnnmX4fRn/H8pm0/A/WOG0kknZp447mmk6 +vD9pSUu8A1brD5q5Ag0EWx1LvwEQAK1GiX8GGumYrme0wtxMV2LtlSh/2FX+N/dyGqTpEnQj +pJH4mNvRKKuFYYguUl9n2BAEw9QPXJk+j/9RL79D8OB6M0qWVbR4YYD0A4kVgqC++BaGBOqx +7omhSFJNgE2C8kMmMxr37+KjfVJj3zAA0rDfShS2VS+grCcW4+lEaQHUzdH99F7qsB5DzKdm +E25d7NcU34zupbc8XpGK2q8NXKrLfVlsJQG4zPVDC41RwySe8rfFy1DqQGXdKmYDXgBfQK4z +2wWF1vjT/EewwVoYviUNOOP1UfXrc5L7HOtH1gueU/DMeCskVQwfBjcdmkufKY/cBCPetwGF +uHIwrhdZVYYu0JuqM1xTAWk5qeC4qKF77qXHQNwXVRlGpjlkVols98jwgkhE7CIUYgCAQ9B9 +LUS3MFi4+ul/uQtmF2FcHgvzGmAUVrb8ayGkfCLcebu0lYA0KnAd+Gm/VcF7izjJhhdh1Hla +7zduIeHbo4xX4LYPTnnf+wjTfq7aep5adnbdhsmTeg6r629EX5v5Lrvq8evepUARwYGIBFjP +wQXaBGLMoR0IesuUvcuY88i/pqqfEc0EWw1ZBodwAQsRwqH7bO5RcMopFxAjD5EsyQbIH0kn +b9uR3/++mRS0SsBYytIaWH0fRA5fdHf4KvjhlOAJD6mz7xe1DFXVtyIJ0DghQZJVABEBAAGJ +AjYEKAEIACAWIQT0na+XDN7rq/dEP7Jxa8FHcV5xbwUCW0xq3AIdAAAKCRBxa8FHcV5xb0Vm +EACHRNOfbQn+K4GU131FlX/TTj5vsEHFZISvVJ1ifqdT7NOaVW2KOwNzSOWLSw0oJuBRQIVC +NXbiYaurgQO0E35BvOVTRGQVyAP1ePj/AqS9lUCv155G8fBM3zfl+Ittq+WDRus5ZZg3BUxW +hzl+fMBY6/2ZN/lGAFJ9I/gUr74n5D4WIC+3Kxsm4Yf/+8se7gkh2rHaZKIVUxRcmkxQ+2oR +isZG9T13HIMfc633OE5aVRMaheF7RYZcOpMfh3ItjDhRyRjz8K96/ZU09nIgcYiTgVskpb6+ +42schp07iHCjTKURUzPInb2BAouU6aotD8xHCdtDaby5bMH9+d/0ZEa5sOrP9i2lwPDkjcVe +ObxU67wjnoMc5N57vDo8p0BvTch/L+IBWc4+WpbAUNyK2ICU/6H2MpUUef/CuQ9nWuJbB3Xh +vsZklWY9fkPPqFvdYYfZxjtWYL1xoFGMTC2JCGYX1wiaxLQlE8Vp6kZb3n6YYvmbf8/ycZuF +mhQhzLX9O2Gh9QbDfSQmXTqkn8/IDJp6Xck2Y6Q5iVBMhCOgE2CGmpUoPKISL3+E5qGbh8d9 +E1r/TwiaTQBjsXwzHQaoc8VcOhRePBk3b/XsJXaevakYd1JO0WNAVAbIFGNlQZQy3YWSPDt0 +uFmeDak6EZEFpmgkRvej9C4TXrwM6mznus7Z1okEcgQYAQgAJhYhBPSdr5cM3uur90Q/snFr +wUdxXnFvBQJbHUu/AhsCBQkHhh+AAkAJEHFrwUdxXnFvwXQgBBkBCAAdFiEEETgweQbNJq7k +iOC5yifJzOBX1k0FAlsdS78ACgkQyifJzOBX1k35AQ/9EzNarYdM75GaNstQO3HqEdlbDOfy +ULgSnad1+87fXf9CtvXkaY9BapfwfRJDj9iRkdfw0vMPCdGO7UBXKo6QqmQ52Zy6N50OwCop +oEayh/SCHknwTH8KWl9gts93ZHlQuLZoWGWkRXsesTbBn4PI+1ium6XdqQE6tnzwa9RLT3qd +vH1ASYzlUneYwDwSe3Vy7j7YDRC9HAFuY2w8xLvDBTpPgHQRSy2na/lUs54AgHTmIa/wFRDy +prKAJO0oFZCv5q0nfokF3FCFi4NjQff/hhTE5kQRR2Y9p86OsWFnPpt2IBYcjLfM5n5oKAGy +hkSsQJBtk+l3qxQ58soJ9nbE/b3TXc9JcGTiD3DnnaSPavlifRVolm55SAOOrsvCjFppEvsb +W/ybSJ4a3PZmxR1Pqgblvdsd/V4NTmJvpl7vRhOQhg9a/UV4pFRUnb098rxX1gi8vCxvkmS0 +hHG7mDn3AfKZ36kwjJ19p9oYtk9g/YwEAv0xVKLiR08a2iRE8YHyzB5zQ/goBA5vbX2qh4BR +Mcf4lTnMY7TZykSagw24BFLTad51j9fjwvdyFNNvHPufa9uckh5FsKc65Pw08JqAj7A8hvk2 +OquTewYo6knU696uH8e+cmQ1wrm77jmDZbhkTtlpNbKyvdT2MEDTG8+MGvQhYOyYDUkH5iY2 +fXu7ExWVxA/+JMsbZokv1q+vNSn/gF4szWhHMqtHSgZku0hZ56+/G+ZKxIDYUaMX/k8IZoWi +pue+FIqEkljyZhLg0Wnw9iL2oc7hWQWvtb0p9s1F/ANhAiLXTPPmUjOtq8P+LHRF2jPzXyR/ +19fD6VYA6htEUqUQWi7F3ZRP2xyNGi6BTLsJE6Xx4EcUquF1g6m24Y1PtDslSETha2gmB9q/ +sngfOJ+OtdnQOkOBOJxXJni63QBfFfbtOhJBYo4Udrg0fuStv+cvb0FCzWrR9mnxG+VfyLu0 +D6AN0lgg2rylIxzacBY5QJurfzOq3lvv6TvmDOCpCSxX1fHtLCNAslim+G0e8NnVLpGVN9V1 +d3QBpMEWXZhwSqnwAyM2VWsyBjeriu5ylD5QIqDkFe7mCbsWtL8IvyYCFZruEjeWeMsncdMq +KBGCdFD9eSD0VM93EYByfcbVjLS7xpwo8cLiiHrEH7jXdatk6dU8Fdh8kSmn/X5Gb948imAS +jP/o7yLRgCR+bu4OBFtaRQGrWJIz25s4UWGdaERzhZe3b4wyG/wWTkxN23s1P5hU96p/aTUA +ZEwK5Qr6kKpJP8cmcWyuS9fg5vd9wsu/0jVWnIVKihn/MgxW774GrcfAcZB47H+AFpLNBLO0 +ga7Vc38c8OptkHtjZBNdqrQ0up+FqwhTZar9f4EpOWucTes= +=aVl0 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..5ef5963 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,74 @@ + + + https://fmartingr.com/ + https://fmartingr.com/blog/ + https://fmartingr.com/blog/2021/12/01/november-2021/ + https://fmartingr.com/blog/2021/11/30/how-i-organize-my-home-assistant-automations/ + https://fmartingr.com/blog/2021/11/15/home-assistant-battery-levels-at-a-glance/ + https://fmartingr.com/blog/2021/11/02/october-2021/ + https://fmartingr.com/blog/2021/10/11/storing-data-in-node-red-flows-using-context/ + https://fmartingr.com/blog/2021/10/02/september-2021/ + https://fmartingr.com/blog/2021/09/12/august-2021/ + https://fmartingr.com/blog/2021/08/01/july-2021/ + https://fmartingr.com/blog/2021/07/01/june-2021/ + https://fmartingr.com/blog/2021/06/01/may-2021/ + https://fmartingr.com/blog/2021/05/01/april-2021/ + https://fmartingr.com/blog/2021/04/03/march-2021/ + https://fmartingr.com/blog/2021/03/01/february-2021/ + https://fmartingr.com/blog/2021/02/01/january-2021/ + https://fmartingr.com/blog/2020/01/01/december-2020/ + https://fmartingr.com/blog/2020/12/20/self-hosting-my-home-with-home-assistant-part-1/ + https://fmartingr.com/blog/2020/12/01/november/ + https://fmartingr.com/blog/2020/11/08/setting-up-tp-link-archer-c5400-in-ap-mode/ + https://fmartingr.com/blog/2020/11/01/october/ + https://fmartingr.com/blog/2020/10/15/final-fantasy-vii-remake-my-review/ + https://fmartingr.com/blog/2020/10/01/september/ + https://fmartingr.com/blog/2020/09/02/august/ + https://fmartingr.com/blog/2020/08/02/july/ + https://fmartingr.com/blog/2020/06/02/june/ + https://fmartingr.com/blog/2020/06/01/may/ + https://fmartingr.com/blog/2020/05/01/april/ + https://fmartingr.com/blog/2020/04/01/march/ + https://fmartingr.com/blog/2020/03/01/february/ + https://fmartingr.com/blog/2020/01/31/january/ + https://fmartingr.com/blog/2020/01/01/2019/ + https://fmartingr.com/blog/2019/12/08/i-finished-reading-a-conjuring-of-light/ + https://fmartingr.com/blog/2019/11/20/i-finished-playing-the-legend-of-zelda-links-awakening/ + https://fmartingr.com/blog/2019/10/21/i-finished-reading-a-gathering-of-shadows/ + https://fmartingr.com/blog/2019/09/27/i-finished-playing-untitled-goose-game/ + https://fmartingr.com/blog/2017/01/31/why-i-preordered-the-nintendo-switch/ + https://fmartingr.com/blog/2016/12/26/a-week-for-personal-development/ + https://fmartingr.com/blog/2016/12/21/new-site/ + https://fmartingr.com/blog/2016/04/27/penguin-trials-after-two-weeks/ + https://fmartingr.com/blog/2016/04/11/penguin-trials/ + https://fmartingr.com/blog/2016/04/08/2016-updates/ + https://fmartingr.com/blog/2015/08/13/manga-recommendation-gamer/ + https://fmartingr.com/blog/2015/08/04/tmux-basics/ + https://fmartingr.com/blog/2015/07/29/manga-recommendation-eden-no-ori/ + https://fmartingr.com/blog/2015/07/23/emacs-day-zero/ + https://fmartingr.com/blog/2015/07/22/manga-recommendation-one-punch-man/ + https://fmartingr.com/blog/2015/07/18/piweek-viii/ + https://fmartingr.com/blog/2015/05/14/manga-recommendation-kamisama-no-iutoori-ni/ + https://fmartingr.com/blog/2015/05/07/manga-recommendation-dice-cube-changes-everything/ + https://fmartingr.com/blog/2015/05/04/amazon-ec2-no-space-left-device/ + https://fmartingr.com/blog/2013/12/05/howto-starbound-dedicated-server-linux-machine/ + https://fmartingr.com/blog/2013/11/29/reading-data-ios-backups-manifestmbdb/ + https://fmartingr.com/blog/2013/08/10/warcraft-3-mac-wineskin/ + https://fmartingr.com/blog/2013/07/09/how-install-and-configure-yubikey-pam-module-archlinux/ + https://fmartingr.com/blog/2013/07/04/extracting-data-from-obfuscated-java-code/ + https://fmartingr.com/blog/2013/07/01/django-stampu-static-sites-with-django/ + https://fmartingr.com/blog/2013/06/24/zombiepress-is-here/ + https://fmartingr.com/blog/2013/02/27/manga-recommendation-enigma/ + https://fmartingr.com/blog/2013/02/27/server-going-slow-after-iptables-configuration-try/ + https://fmartingr.com/blog/2013/02/24/fringe-series-finale-my-oppinion/ + https://fmartingr.com/blog/2013/02/23/manga-recommendation-psyren/ + https://fmartingr.com/blog/2013/02/23/where-buy-warcraft-books-ordered-storyline/ + https://fmartingr.com/blog/2013/01/20/manga-recommendation-kamisama-no-iutoori-fujimura-akeji/ + https://fmartingr.com/blog/2013/01/14/tweeria-mmorpg-people-without-time-can-play/ + https://fmartingr.com/blog/2013/01/12/weekly-project-status-dropping-projects-hard/ + https://fmartingr.com/blog/2013/12/31/2013/ + https://fmartingr.com/blog/2012/12/21/my-sublimetext-2-workspace/ + https://fmartingr.com/blog/2012/12/20/howto-os-x-screenshots-without-shadows/ + https://fmartingr.com/blog/2012/11/23/amazon-s3-bucket-public-read-policy/ + https://fmartingr.com/about/ + diff --git a/static/css/style.css b/static/css/style.css new file mode 100644 index 0000000..d2cd633 --- /dev/null +++ b/static/css/style.css @@ -0,0 +1 @@ +@font-face{font-family:'andada';src:url("../fonts/andada-regular-webfont.woff2") format("woff2");src:url("../fonts/andada-regular-webfont.woff") format("woff");font-weight:normal;font-style:normal}@font-face{font-family:'andada';src:url("../fonts/andada-bold-webfont.woff2") format("woff2");src:url("../fonts/andada-bold-webfont.woff") format("woff");font-weight:bold;font-style:normal}@font-face{font-family:'andada';src:url("../fonts/andada-bolditalic-webfont.woff2") format("woff2");src:url("../fonts/andada-bolditalic-webfont.woff") format("woff");font-weight:bold;font-style:italic}@font-face{font-family:'andada';src:url("../fonts/andada-italic-webfont.woff2") format("woff2");src:url("../fonts/andada-italic-webfont.woff") format("woff");font-weight:normal;font-style:italic}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.grid{background:white;margin:0 0 20px 0}.grid:after{content:"";display:table;clear:both}[class*='col-']{float:left;padding-right:20px}.grid [class*='col-']:last-of-type{padding-right:0}.col-2-3{width:66%}.col-1-3{width:33%}.col-1-2{width:49%}.col-1-4{width:24%}.col-1-8{width:12.5%}.grid-pad{padding:20px 0 20px 20px}.grid-pad [class*='col-']:last-of-type{padding-right:20px}body{font-family:"andada";font-size:1.1em;line-height:1.5em;padding:24px}.center{margin:0 auto;max-width:920px}a{text-decoration:underilne;color:#c24e4a}a.no-underline{text-decoration:none}hr{border:0px;margin:1em 0 1em 0;border-top:#CCC 1px solid}p:first-child{margin-top:0}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-bold{font-weight:bold}.text-size-small{font-size:.8em}.text-size-normal{font-size:1.4em}.text-size-enormous{font-size:5em}.float-right{float:right}.float-left{float:left}.clearfloat{clear:both}.display-block{display:block}.block-info{background-color:#f5e3e3;padding:12px}.page-content{margin:0 auto;flex-direction:row;max-width:980px}@media (max-width: 767px){.page-content{display:block;width:100%}}header{text-align:right}header h1{margin-top:0;font-size:1.5em}header .avatar{float:left;width:70px;margin:0 auto;margin-right:12px}header .avatar img{border-radius:12%}header nav a{display:inline-block;padding-left:20px}header .social{list-style:none;padding:0}@media (max-width: 767px){.main-content{width:100%}}*:target{background-color:#f5e3e3}h1{font-size:1.7em}h2{font-size:1.5em}h3{font-size:1.3em}footer{text-align:center;font-size:0.8em}article.blog-post .title{margin-bottom:0.3em}article.blog-post .info{font-size:0.9em}article.blog-post .content{margin-top:1em;text-align:justify}article.blog-post .content img{border-radius:6px;display:block;margin:0 auto;max-width:100%}article.blog-post .content img{box-shadow:0 1px 3px rgba(0,0,0,0.2)}article.blog-post .content li>p{margin:0}article.blog-post .content li{margin-bottom:1em}article.blog-post .footnotes a:visited{color:#dc9996}blockquote{display:block;background:#eee;font-style:italic;padding:15px 20px 15px 20px;font-family:Georgia, serif;color:#666;text-align:justify}blockquote p{margin:0}kbd{padding:0.1em 0.6em;border:1px solid #ccc;font-size:11px;font-family:Arial,Helvetica,sans-serif;background-color:#f7f7f7;color:#333;-moz-box-shadow:0 1px 0px rgba(0,0,0,0.2),0 0 0 2px #fff inset;-webkit-box-shadow:0 1px 0px rgba(0,0,0,0.2),0 0 0 2px #fff inset;box-shadow:0 1px 0px rgba(0,0,0,0.2),0 0 0 2px #fff inset;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;display:inline-block;margin:0 0.1em;text-shadow:0 1px 0 #fff;line-height:1.4;white-space:nowrap}img.spoiler{filter:blur(25px);transition-property:-webkit-filter;transition-duration:.2s}div.spoiler,span.spoiler,section.spoiler,p.spoiler{filter:blur(5px);transition-property:-webkit-filter;transition-duration:.2s}.spoiler:hover,.spoiler:focus{filter:blur(0px)}.project{display:inline-block;width:49%}.project img{max-height:250px}.project.project-work-sites{width:24%}@media (max-width: 767px){.project{display:block;width:100% !important}}table{margin:0 0 40px 0;width:100%;box-shadow:0 1px 3px rgba(0,0,0,0.2)}table th{background:#c24e4a;color:white;font-weight:bold}table tr{background:#f6f6f6}table tr:nth-of-type(odd){background:#e9e9e9}table td,table th{padding:6px}code{color:#000000;background-color:#f0f0f0;padding:5px;border-radius:5px}.hll pre{color:#000000;background-color:#f0f0f0;padding:10px;overflow:scroll}pre{line-height:125%;margin:0}span.linenos{color:#000000;background-color:#f0f0f0;padding-left:5px;padding-right:5px}td.linenos pre.special{color:#000000;background-color:#ffffc0;padding-left:5px;padding-right:5px}span.linenos.special{color:#000000;background-color:#ffffc0;padding-left:5px;padding-right:5px}.hll .hll{background-color:#ffffcc}.hll .c{color:#408080;font-style:italic}.hll .err{border:1px solid #FF0000}.hll .k{color:#008000;font-weight:bold}.hll .o{color:#666666}.hll .ch{color:#408080;font-style:italic}.hll .cm{color:#408080;font-style:italic}.hll .cp{color:#BC7A00}.hll .cpf{color:#408080;font-style:italic}.hll .c1{color:#408080;font-style:italic}.hll .cs{color:#408080;font-style:italic}.hll .gd{color:#A00000}.hll .ge{font-style:italic}.hll .gr{color:#FF0000}.hll .gh{color:#000080;font-weight:bold}.hll .gi{color:#00A000}.hll .go{color:#888888}.hll .gp{color:#000080;font-weight:bold}.hll .gs{font-weight:bold}.hll .gu{color:#800080;font-weight:bold}.hll .gt{color:#0044DD}.hll .kc{color:#008000;font-weight:bold}.hll .kd{color:#008000;font-weight:bold}.hll .kn{color:#008000;font-weight:bold}.hll .kp{color:#008000}.hll .kr{color:#008000;font-weight:bold}.hll .kt{color:#B00040}.hll .m{color:#666666}.hll .s{color:#BA2121}.hll .na{color:#7D9029}.hll .nb{color:#008000}.hll .nc{color:#0000FF;font-weight:bold}.hll .no{color:#880000}.hll .nd{color:#AA22FF}.hll .ni{color:#999999;font-weight:bold}.hll .ne{color:#D2413A;font-weight:bold}.hll .nf{color:#0000FF}.hll .nl{color:#A0A000}.hll .nn{color:#0000FF;font-weight:bold}.hll .nt{color:#008000;font-weight:bold}.hll .nv{color:#19177C}.hll .ow{color:#AA22FF;font-weight:bold}.hll .w{color:#bbbbbb}.hll .mb{color:#666666}.hll .mf{color:#666666}.hll .mh{color:#666666}.hll .mi{color:#666666}.hll .mo{color:#666666}.hll .sa{color:#BA2121}.hll .sb{color:#BA2121}.hll .sc{color:#BA2121}.hll .dl{color:#BA2121}.hll .sd{color:#BA2121;font-style:italic}.hll .s2{color:#BA2121}.hll .se{color:#BB6622;font-weight:bold}.hll .sh{color:#BA2121}.hll .si{color:#BB6688;font-weight:bold}.hll .sx{color:#008000}.hll .sr{color:#BB6688}.hll .s1{color:#BA2121}.hll .ss{color:#19177C}.hll .bp{color:#008000}.hll .fm{color:#0000FF}.hll .vc{color:#19177C}.hll .vg{color:#19177C}.hll .vi{color:#19177C}.hll .vm{color:#19177C}.hll .il{color:#666666} diff --git a/static/fonts/andada-bold-webfont.woff b/static/fonts/andada-bold-webfont.woff new file mode 100644 index 0000000..42822c6 Binary files /dev/null and b/static/fonts/andada-bold-webfont.woff differ diff --git a/static/fonts/andada-bold-webfont.woff2 b/static/fonts/andada-bold-webfont.woff2 new file mode 100644 index 0000000..f86a962 Binary files /dev/null and b/static/fonts/andada-bold-webfont.woff2 differ diff --git a/static/fonts/andada-bolditalic-webfont.woff b/static/fonts/andada-bolditalic-webfont.woff new file mode 100644 index 0000000..33dc946 Binary files /dev/null and b/static/fonts/andada-bolditalic-webfont.woff differ diff --git a/static/fonts/andada-bolditalic-webfont.woff2 b/static/fonts/andada-bolditalic-webfont.woff2 new file mode 100644 index 0000000..ed48782 Binary files /dev/null and b/static/fonts/andada-bolditalic-webfont.woff2 differ diff --git a/static/fonts/andada-italic-webfont.woff b/static/fonts/andada-italic-webfont.woff new file mode 100644 index 0000000..d428d6d Binary files /dev/null and b/static/fonts/andada-italic-webfont.woff differ diff --git a/static/fonts/andada-italic-webfont.woff2 b/static/fonts/andada-italic-webfont.woff2 new file mode 100644 index 0000000..5367697 Binary files /dev/null and b/static/fonts/andada-italic-webfont.woff2 differ diff --git a/static/fonts/andada-regular-webfont.woff b/static/fonts/andada-regular-webfont.woff new file mode 100644 index 0000000..16e84d9 Binary files /dev/null and b/static/fonts/andada-regular-webfont.woff differ diff --git a/static/fonts/andada-regular-webfont.woff2 b/static/fonts/andada-regular-webfont.woff2 new file mode 100644 index 0000000..8828676 Binary files /dev/null and b/static/fonts/andada-regular-webfont.woff2 differ diff --git a/static/images/avatar.jpg b/static/images/avatar.jpg new file mode 100644 index 0000000..4f7a8a5 Binary files /dev/null and b/static/images/avatar.jpg differ diff --git a/static/images/favicon.ico b/static/images/favicon.ico new file mode 100644 index 0000000..0266ebd Binary files /dev/null and b/static/images/favicon.ico differ