├── README.md ├── on-computer-science.md ├── on-cooking.md ├── on-crypto.md ├── on-extensions-chrome.js ├── on-extensions-sketchup.md ├── on-js-dom-html-css.html ├── on-js-frontend-frameworks.js ├── on-lisps-and-ml.md ├── on-native-methods-js-vs-ruby-vs-python.js ├── on-native-methods-tricks-quirks.js ├── on-native-methods-tricks-quirks.rb ├── on-other.md ├── on-polish-language.md ├── on-portuguese-law.md ├── on-portuguese-tax-system.md ├── on-toolbox.md ├── on-trades.md ├── trail-guide-self-publishing.md └── trail-guide-web-development.md /README.md: -------------------------------------------------------------------------------- 1 | # Notebook 2 | 3 | My half-baked notes on: 4 | 5 | - my [digital toolbox](on-toolbox.md).[^1] 6 | - bookmarks (tree-shaked frequently) on [basics of computer science](on-computer-science.md). 7 | - trail guides on [self learn web development](trail-guide-web-development.md) and [self-publishing](trail-guide-self-publishing.md). 8 | - javascript [native](on-native-methods-tricks-quirks.js), [DOM](on-js-dom-html-css.html), [frontend](on-js-frontend-frameworks.js) and [chrome extensions](on-extensions-chrome.js). 9 | - ruby [native](on-native-methods-tricks-quirks.rb) and [sketchup extensions](on-extensions-sketchup.md). 10 | - [lisps and ML](on-lisps-and-ml.md). 11 | - programming languages [of cryptocurrencies](on-crypto.md). 12 | - portuguese [taxes](on-portuguese-tax-system.md) and [law](on-portuguese-law.md). 13 | - [polish language](on-polish-language.md) and learning methodology. 14 | - [cooking](on-cooking.md) and [trades](on-trades.md). 15 | - architectural [projects](https://www.pinterest.pt/archimodels), [drawings](https://archidrawings.tumblr.com) and [scale models](https://archimodels.tumblr.com). 16 | 17 | [^1]: Most tools are not brand new but I keep them sharp. -------------------------------------------------------------------------------- /on-computer-science.md: -------------------------------------------------------------------------------- 1 | # Computer science for noobs 2 | 3 | - [functional programming](https://www.lihaoyi.com/post/WhatsFunctionalProgrammingAllAbout.html) 4 | - [the elm architecture (TEA)](https://medium.com/@l.mugnaini/the-elm-architecture-tea-animation-3efc555e8faf) 5 | - [react](https://learnreact.design/posts/what-is-react) 6 | - [modern CSS](https://medium.com/actualize-network/modern-css-explained-for-dinosaurs-5226febe3525) 7 | - [regex](https://www.janmeppe.com/blog/regex-for-noobs) 8 | - [sqlite](https://tech.marksblogg.com/sqlite3-tutorial-and-guide.html) 9 | - [emacs](https://learnxinyminutes.com/docs/emacs) 10 | - [naming stuff](https://leanpub.com/elementsofclojure/read_sample) 11 | - [web design](https://anthonyhobday.com/sideprojects/saferules/) 12 | - [ux](https://archive.is/ry2Kc) 13 | - [calculus](https://calculusmadeeasy.org/) 14 | 15 | ### Playgrounds 16 | 17 | - [freecodecamp](https://www.freecodecamp.org) - [exercism](https://exercism.io) - [codewars](https://www.codewars.com) 18 | - [HTML](https://no-gravity.github.io/html_editor/#) & CSS: [grid](https://grid.layoutit.com), [masonry generator](https://w3bits.com/tools/masonry-generator) and [zen garden](http://www.csszengarden.com/ 19 | ) - [flexbox](https://www.joshwcomeau.com/css/interactive-guide-to-flexbox) 20 | - javascript: [runJS](https://runjs.app) - [questions](https://github.com/lydiahallie/javascript-questions) - [1loc](https://1loc.dev) - [prettier](https://prettier.io/playground) 21 | - python: [rhonny](https://thonny.org) - [snakify](https://snakify.org/pt) 22 | - regex: [101](https://regex101.com) - [regexr](https://regexr.com) - [rubular](https://rubular.com) - [crosswords](http://regexcrossword.com) 23 | - SQL: [SQLPD](https://sqlpd.com) - [sqlime](https://sqlime.org) 24 | 25 | ### Level up 26 | 27 | - JS: [weekly](https://javascriptweekly.com/issues) - [exploring](https://exploringjs.com) - [way](https://github.com/thejsway/thejsway) - [YDKJS](https://github.com/getify/You-Dont-Know-JS) - [info](https://javascript.info) - [eloquent](https://eloquentjavascript.net) - [modern](https://mbeaudru.github.io/modern-js-cheatsheet) - [human](https://read.humanjavascript.com) - [data science](http://js4ds.org) 28 | - functional programming: [for JS people](https://medium.com/@chetcorcos/functional-programming-for-javascript-people-1915d8775504) - [jargon](https://github.com/hemanth/functional-programming-jargon) - [light](https://github.com/getify/Functional-Light-JS) - [allonge](https://leanpub.com/javascriptallongesix/read) - [jargon](https://github.com/hemanth/functional-programming-jargon) 29 | - basic apps: [spreadsheet](https://jsfiddle.net/ondras/o3tzx1px) - [data table](https://github.com/piecioshka/simple-data-table) - [notes](https://github.com/tmm/notational) - [calculator](https://insect.sh) - [chrome extension](https://github.com/abhiomkar/good-quotes) 30 | - games: [JS1K](https://js1k.com) - [JS13K](https://js13kgames.com) - [traffic simulation](https://traffic-simulation.de) - [minesweeper](http://xem.github.io/MiniSweeper) - [tetris](http://binaryify.github.io/vue-tetris) - [rogue](https://nluqo.github.io/broughlike-tutorial) - [maze](https://observablehq.com/@mbostock/best-first-search) - [path finding](http://qiao.github.io/PathFinding.js/visual) - [doom](https://www.playfuljs.com/a-first-person-engine-in-265-lines) - [night drive](https://incoherency.co.uk/blog/stories/nightdrive.html) 31 | - data viz: [with JS](https://jsdatav.is/intro.html) - [threeJS fundamentals](https://threejsfundamentals.org) - [3d.js](https://www.d3indepth.com) 32 | - graphics & webGL: [raytracer](https://www.gabrielgambetta.com/tiny-raytracer.html) [source](https://jsfiddle.net/vz5aZ/2) - [water](http://madebyevan.com/webgl-water) - [waves](https://david.li/waves) [source](https://jsfiddle.net/zyAzg) - [fluids](https://paveldogreat.github.io/WebGL-Fluid-Simulation) - [cloths](https://aatishb.com/drape) - [particles](https://minimal.be/lab/fluGL) - [generative](http://weavesilk.com/?ika) - [inspirograph](https://nathanfriend.io/inspirograph) - [gears](https://brm.io/gears) - [fractals](http://js1k.com/2016-elemental/demo/2552) - [text](https://tholman.com/texter) - [golfing](https://aem1k.com) - [glisp](https://glisp.app) 33 | - other: [nuejs](https://nuejs.org/blog/rethinking-reactivity/) - [chrome apps](https://www.youtube.com/watch?v=i2Z_nKRgDyU) 34 | - CSS frameworks: bulma - tailwind - minimal [1](https://dohliam.github.io/dropin-minimal-css)/[2](https://andybrewer.github.io/mvp)/[3](https://watercss.kognise.dev) - [tufte CSS](https://edwardtufte.github.io/tufte-css) - [shuffle.dev](https://shuffle.dev) 35 | - themes, icons & vectors: themes [1](https://www.tumblr.com/themes)/[2](https://jez.io/pandoc-markdown-css-theme)/[3](https://github.com/Stavrospanakakis/jekyll-cv)/[4](https://chr15m.github.io/DoodleCSS)/[5](https://prpl.dev) - [noun project](https://thenounproject.com) - [vectors](https://www.humaaans.com) - [svg shapes](https://tool.graphics/shapes) - [streamlinehq](https://www.streamlinehq.com/icons) - [tabler](https://tabler-icons.io) 36 | - fonts: [google](https://fonts.google.com) - [what the font](onts.com/WhatTheFont) - [iosevka](https://typeof.net/Iosevka) - [firacode](https://github.com/tonsky/FiraCode) - [inter](https://rsms.me/inter) - [public sans](https://public-sans.digital.gov) - [national park](https://nationalparktypeface.com) - [web fonts](https://beautifulwebtype.com) - [nerdfonts](https://www.nerdfonts.com) - [braille](https://www.brailleinstitute.org/freefont) 37 | - colors: [colourcode](https://colourco.de) - [uigradients](https://uigradients.com) - [patterns bookmarklet](https://bradjasper.com/subtle-patterns-bookmarklet) - [colorbox](https://colorbox.io/) - [huemint](https://huemint.com/brand-intersection) 38 | - pixel art: [aseprite](https://www.aseprite.org) - [isometric maps](https://isometricmaps.com) - [ditherpaint](https://beyondloom.com/tools/ditherpaint.html) - [tutorials](http://saint11.org/blog/pixel-art-tutorials) 39 | - ruby: [weekly](https://rubyweekly.com/issues) - [for beginners](http://ruby-for-beginners.rubymonstas.org/index.html) - [poignant guide](http://poignant.guide) - [shell scripting](https://www.devdungeon.com/content/enhanced-shell-scripting-ruby) - [http requests](https://www.twilio.com/blog/5-ways-make-http-requests-ruby) - [style guide](https://rubystyle.guide) 40 | - python: weekly [1](https://www.pythonweekly.com/archive)/[2](https://pycoders.com/issues) - [automate boring stuff with python](https://automatetheboringstuff.com)- [practical](https://practicalpython.yasoob.me/toc.html) - [tutorial](https://docs.python.org/3/tutorial/appetite.html) - [resources](https://learnbyexample.github.io/py_resources/intermediate.html) 41 | - golang: [weekly](https://golangweekly.com/issues) - [practical go](https://www.practical-go-lessons.com) - [games in go](https://threedots.tech/post/making-games-in-go/) 42 | - regex: learn [1](https://github.com/ziishaned/learn-regex)/[2](https://regexlearn.com) - [for regular folk](https://refrf.shreyasminocha.me) - [beyond](https://github.com/VerbalExpressions) 43 | - data: [dbeaver](https://dbeaver.io) - sql client [1](https://franchise.cloud)/[2](https://sqlnotebook.com)/[3](https://rosefinchapp.com)/[4](https://sqlitestudio.pl) - [evidence](https://www.evidence.dev) - [jsoncrack](https://jsoncrack.com/) - [jailer](https://wisser.github.io/Jailer/data-browsing.html) - [prql](https://prql-lang.org) - [trailbase](https://trailbase.io) 44 | - maths: [functors, applicatives and monads](https://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html) - [calculus with derivatives](https://adit.io/posts/2018-02-18-Introduction-To-Calculus-With-Derivatives.html) - matrix[1](https://www.dhruvonmath.com/2018/12/31/matrices)/[2](https://mathenchant.wordpress.com/2023/06/16/what-is-a-matrix) - [modes, medians and means](http://www.johnmyleswhite.com/notebook/2013/03/22/modes-medians-and-means-an-unifying-perspective)/[3](https://pballew.blogspot.com/2023/09/pythagoras-and-matrices.html) - [this day in math](https://pballew.blogspot.com) - lectures [1](https://www.youtube.com/watch?v=1r6893ga_So)/[2](https://www.youtube.com/watch?v=UcWsDwg1XwM)/[3](https://www.youtube.com/watch?v=8p02DtmyQhU) - [hexagonal grids](https://www.redblobgames.com/grids/hexagons) - [3blue1brown](https://www.youtube.com/c/3blue1brown/videos) - [mathologer](https://www.youtube.com/c/Mathologer/videos) - [map of math](https://www.youtube.com/watch?v=OmJ-4B-mS-Y) - [linear algebra](http://immersivemath.com/ila/index.html) 45 | - crypto: [howtoweb3](https://www.howtoweb3.guide) - [scaffold eth](https://github.com/scaffold-eth/scaffold-eth) - [zkintro](https://zkintro.com/articles/programming-zkps-from-zero-to-hero) - [with python](https://www.youtube.com/watch?v=NxZ_cl8MUEU) 46 | - other: [practical typography](https://practicaltypography.com) - [excel](https://www.youtube.com/watch?v=0nbkaYsR94c) - sicp [1](https://github.com/sarabander/sicp)/[2](https://github.com/ldct/isicp) - [xahlee](http://xahlee.info/comp/comp_lang_tutorials_index.html) - [learnByExample](https://learnbyexample.github.io/books) - [emacs news](https://sachachua.com/blog/category/emacs-news) - [janet](https://janet.guide/) - [forth](http://ratfactor.com/forth/the_programming_language_that_writes_itself.html) - [mark mahoney](https://markm208.github.io) - [rust exercises](https://rust-exercises.com/100-exercises/) - [haskell mooc](https://haskell.mooc.fi/) 47 | 48 | --- 49 | 50 | ## Documentation 51 | 52 | - cheatsheets: [learn X in Y minutes](https://learnxinyminutes.com) - [rosetta code](http://rosettacode.org/wiki/Rosetta_Code) - [rosetta.alhur.es](https://rosetta.alhur.es) - [hyperpolyglot](http://hyperpolyglot.org) - [syntax across languages](http://rigaux.org/language-study/syntax-across-languages.html) - [vim cheatsheet](http://michael.peopleofhonoronly.com/vim/) 53 | - docs: [devdocs](https://devdocs.io) - [mdn web docs](https://developer.mozilla.org/en-US) - [zealdocs](https://zealdocs.org) 54 | - autocompleters: [tabnine](https://tabnine.com) - [kite](https://www.kite.com) 55 | - boilerplate: [1](https://boilerplatedeals.com)/[2](http://ec2-16-171-47-81.eu-north-1.compute.amazonaws.com) 56 | 57 | ## Benchmarks 58 | 59 | - [computer languages speed](https://benchmarksgame-team.pages.debian.net/benchmarksgame) 60 | - web frameworks speed: [benchmarker](https://web-frameworks-benchmark.netlify.app/result) - [techempower](https://www.techempower.com/benchmarks) - [browserbench](https://browserbench.org/Speedometer3.0/) 61 | 62 | ## Trends 63 | 64 | - computer languages popularity: [redmonk](https://redmonk.com/rstephens/files/2021/08/redmonk-language-rankings-june-2021-1536x1225.png) - [githut](https://madnight.github.io/githut) - [stackoverflow](https://insights.stackoverflow.com/trends) 65 | - JS ecosystem: [npm](https://www.npmtrends.com) - [moiva](https://moiva.io) - [best of](https://bestofjs.org) - [awesome](https://github.com/sorrycc/awesome-javascript) 66 | - github: [dev community](https://octoverse.github.com) - [octotrends](https://octotrends.com) - [rankings](https://evanli.github.io/Github-Ranking) 67 | - HN: [posting](https://toddwschneider.com/dashboards/hacker-news-trends) - [hiring](https://www.hntrends.com) 68 | - [where innovation happens](https://pldb.io/blog/whereInnovation.html) -------------------------------------------------------------------------------- /on-cooking.md: -------------------------------------------------------------------------------- 1 | # Notes on amateur cooking 2 | 3 | ### Signature dishes 4 | 5 | You should have a few signature dishes. Having a full grasp of cuisine is less relevant than having some optimized recipes. Your friends want to eat well and want to do it now. 6 | 7 | Mine are: 8 | 9 | - 2 breakfasts: sweet french toast, scrambled eggs 10 | - 3 Starters: vegetable soup, homemade ramen, homemade pizza 11 | - 3 Fishes: roasted salmon with black beans, bacalhau à brás, tuna pasta 12 | - 3 Meats: fried chicken, spaghetti carbonara, hamburguer 13 | - 3 Desserts: cream tart, cookie cake, chocolate mousse 14 | 15 | ## Noob level 16 | 17 | ### Pasta 18 | 19 | - Pasta is one of easiest plates you can cook. Most mistakes will not make a big change on results. Most likely it will be eatable or even tasty. 20 | 21 | ## Advanced level 22 | 23 | ### Baking 24 | 25 | - Mistakes are less forgiving in baking. 26 | 27 | #### Home oven pizza recipe 28 | 29 | - 250ml of flour (a weighing scale is not an essential tool for amateurs). Prefer type 65 flour without self raising, you'll use live ferment. 30 | - 100ml of water. Prefer tepid water (~35C) to contribute to a good environment for live ferment. 31 | - full coffee spoon of salt. 32 | - 5 grams of live ferment. 33 | 34 | Dough: dissolve the ferment and salt in the water. Only then pour the flour preferably using a sieve (you don't want to make cement). Mix. Reserve it in a hot (~30C) place and wait 4 hours or more. 35 | 36 | Baking: wait until home oven gets maximum temperature. Bake in the oven's bottom until half cooked. Take it out and put toppings. Finish baking it in the oven's middle. 37 | 38 | Results: better than frozen pizza. Guaranteed. 39 | 40 | ## Level up 41 | 42 | - [Italian food](https://www.youtube.com/c/StefanoBarbatoChef/videos) - [French guy cooking](https://www.youtube.com/@FrenchGuyCooking/videos)- [Portuguese bachelor food](https://www.youtube.com/c/TuganaCozinha/videos) 43 | - [Recipe radar](https://www.reciperadar.com) - [196 flavours](https://www.196flavors.com) - [Modernist cuisine](https://modernistcuisine.com/all-recipes)- [Cooking for engineers](http://www.cookingforengineers.com) - [Food map](https://www.foodmap.in) 44 | 45 | ### Nerd level 46 | 47 | - [Nutrients on ingredients](https://ryanatkn.github.io/nutrients-per-calorie/#/compare) - [Grim grains](https://grimgrains.com) 48 | - [Computerized recipes](https://web.archive.org/web/20021105191447/http://anthus.com/Recipes/CompCook.html) - [Cooklang](https://web.archive.org/web/20241005183211/https://cooklang.org/) 49 | - Some theory on: [pizza](http://www.varasanos.com/PizzaRecipe.htm) - [mayonnaise](http://lup.lub.lu.se/luur/download?func=downloadFile&recordOId=8916120&fileOId=8916126) - [Food timeline](https://foodtimeline.org) 50 | 51 | ### Tips 52 | 53 | - The freezer (+ ice tray) is your friend. Most food "waste" that we usually discard can be freezed: any drink (wine, champagne, juice, coffee, etc), buttermilk, herbs (or herbs + olive oil), fruits, etc. 54 | 55 | -------------------------------------------------------------------------------- /on-crypto.md: -------------------------------------------------------------------------------- 1 | # On crypto 2 | 3 | ### Main and [contract] programming languages on TOP50 coins 4 | 5 | - go: 6 | - [solidity / EVM] [ethereum](https://github.com/ethereum) - [bnb](https://github.com/bnb-chain) - [polygon](https://github.com/maticnetwork) - [avalanche](https://github.com/ava-labs) - [arbitrum](https://github.com/OffchainLabs) - [optimism](https://github.com/ethereum-optimism/optimism) 7 | - [cosmwasm] [cosmos](https://github.com/cosmos) - [injective](https://github.com/InjectiveLabs) - [cronos](https://github.com/crypto-org-chain/cronos) 8 | - [chainlink](https://github.com/smartcontractkit) - [filecoin](https://github.com/filecoin-project/) - [vechain](https://github.com/vechain) - [mantle](https://github.com/mantlenetworkio) 9 | - rust: 10 | - [rust] [solana](https://github.com/solana-labs) 11 | - [[ink](https://github.com/paritytech/ink)] [polkadot](https://github.com/paritytech) 12 | - [[motoko](https://sdk.dfinity.org/docs/language-guide/motoko.html)] [internet computer](https://github.com/dfinity) 13 | - [solidity / EVM] [near](https://github.com/near) 14 | - [kaspa](https://github.com/kaspanet) (migrating from go) 15 | - [move] [aptos](https://github.com/aptos-labs) - [sui](https://github.com/MystenLabs/sui) 16 | - [clarity lisp] [stacks](https://github.com/blockstack) 17 | - c++ / c: 18 | - [bitcoin](https://github.com/bitcoin/bitcoin) & forks ([bch](https://gitlab.com/bitcoin-cash-node), [litecoin](https://github.com/litecoin-project), [dogecoin](https://github.com/dogecoin), [monero](https://github.com/monero-project/monero)) - [xrp](https://github.com/ripple) - [stellar](https://github.com/stellar) 19 | - [funC] [toncoin](https://github.com/ton-blockchain) 20 | - java: 21 | - [solidity / EVM] [tron](https://github.com/tronprotocol) - [hedera](https://github.com/hashgraph) 22 | - haskell: 23 | - [[plutus](https://github.com/input-output-hk/plutus)] [cardano](https://github.com/input-output-hk) 24 | 25 | ### Crypto analysis 26 | 27 | - news: [coinmarket](https://coinmarketcap.com/headlines/news/) 28 | - technical: rainbow [btc](https://www.blockchaincenter.net/en/bitcoin-rainbow-chart)/[eth](https://www.blockchaincenter.net/ethereum-rainbow-chart) - [coin season](https://www.blockchaincenter.net/altcoin-season-index) - [trending coins](https://www.blockchaincenter.net/en/trending-coins) - [hall of fame](https://www.blockchaincenter.net/crypto-top-10-hall-of-fame) - [ath](https://www.blockchaincenter.net) - [%winners](https://app.intotheblock.com) 29 | - fundamental: [history](https://cryptorank.io) - [tvl](https://defillama.com/chains) - [L2beat](https://l2beat.com/scaling/summary) - [reports](https://messari.io/research/protocol-reporting) - [revenue](https://cryptofees.info) - [tps](https://chainspect.app/dashboard) - [devs](https://www.developerreport.com) - [defi](https://defieducation.substack.com/archive?sort=new) - [unlocks](https://coinmarketcap.com/token-unlocks/) 30 | - promos: binance [1](https://www.binance.com/en/support/announcement/latest-binance-news?c=49&navId=49)/[2](https://www.binance.com/en/support/announcement/latest-activities?c=93&navId=93) 31 | - fees: withdrawal [binance](https://www.binance.com/en/fee/cryptoFee) (usdt-BEP20)/[kucoin](https://www.kucoin.com/pt/vip/privilege) (trx)/[gate](https://www.gate.io/pt/fee/)/[all](https://withdrawalfees.com) - [L2](https://l2fees.info) 32 | - [stocks](https://finance.yahoo.com/world-indices) -------------------------------------------------------------------------------- /on-extensions-chrome.js: -------------------------------------------------------------------------------- 1 | // A Chrome extension has the following files: 2 | // * A manifest.json file 3 | // * Optional: One or more HTML files (unless the extension is a theme) 4 | // * Optional: One or more JavaScript files 5 | // * Optional: Any other files your extension needs. e.g. image files 6 | 7 | // But how to create a basic Chrome extension? 8 | // Create a simple manifest.json and a JS file. 9 | 10 | // e.g. manifest.json file 11 | 12 | { 13 | "manifest_version": 2, //v1 will not work anymore 14 | "name": "My Extension", 15 | "version": "0.1", 16 | "content_scripts": [ 17 | { 18 | "matches": [""], // or specific pages: "https://mail.google.com/*" 19 | "js": ["extension.js"] 20 | } 21 | ] 22 | } 23 | 24 | // e.g extension.js file 25 | // By default, Chrome injects content scripts after the DOM is complete. 26 | 27 | alert("Hello from your Chrome extension!"); 28 | 29 | // You can already load it on chrome://extensions/ with developer mode activated. 30 | // After making changes, just come back here to update the extension. -------------------------------------------------------------------------------- /on-extensions-sketchup.md: -------------------------------------------------------------------------------- 1 | # Notes on Sketchup extensions 2 | 3 | ```ruby 4 | # HOW TO KNOW RUBY VERSION ON MY SKETCHUP: 5 | # constant inspectable on any ruby console 6 | # RUBY_VERSION # -> 2.2.4 (on sketchup 2017) 7 | 8 | # HOW TO LOAD A SKETCHUP EXTENSION: 9 | # window / extension manager / install extension / select RBZ file 10 | # RBZ files are renamed ZIP files packing all necessary files to the extension 11 | 12 | # HOW TO MAKE A SKETCHUP EXTENSION: 13 | # minimum: a ruby file 14 | # extra: images, htmls, more ruby files 15 | 16 | # BASIC EXTENSION IN SKETCHUP (ruby file only) 17 | 18 | require 'sketchup.rb' 19 | ``` 20 | 21 | [Sketchup Ruby API](https://ruby.sketchup.com/) -------------------------------------------------------------------------------- /on-js-dom-html-css.html: -------------------------------------------------------------------------------- 1 | 98 | 99 | <body> 100 | 101 | <header> <nav> <main> <section> <article> <footer> 102 | 103 | <div> 104 | <p> <h1> <h2> <h3> <h4> <h5> <h6> 105 | <br> <span> <hr> 106 | <b> <i> <em> 107 | 108 | <a href=""> 109 | <figure> <picture> <img src=""> 110 | 111 | <ul> <ol> <dl> <li> <!-- Ordered list | unordered list | detailed list --> 112 | <table> <td> <th> <tr> 113 | 114 | <button> <input type="" name=""> <textarea> 115 | <canvas> <video> <audio> 116 | 117 | <noscript> 118 | 119 | <style> 120 | html { 121 | background: red; 122 | background-color: white; 123 | background-image: ""; 124 | background-repeat: ; 125 | 126 | color: ; 127 | font: ; 128 | text-align: ; 129 | 130 | float: ; 131 | height: ; 132 | width: ; 133 | } 134 | </style> -------------------------------------------------------------------------------- /on-js-frontend-frameworks.js: -------------------------------------------------------------------------------- 1 | /* BASIC COUNTER: */ 2 | 3 | 4 | // vanilla JS // // jquery: imperative - no build step // 5 | 6 | <script> <script> 7 | $(document).ready(function() { 8 | var counter = 0; var counter = 0; 9 | document.getElementById("app").innerHTML = counter; $('#app').html(counter) //show initial value of counter 10 | function increment(){ $('#increment').click(function() { 11 | counter++; counter++; 12 | document.getElementById("app").innerHTML = counter; $('#app').html(counter) 13 | } }); 14 | function decrement(){ $('#decrement').click(function() { 15 | counter--; counter--; 16 | document.getElementById("app").innerHTML = counter; $('#app').html(counter) 17 | } }); 18 | }) 19 | 20 | </script> </script> 21 | 22 | <h1 id="app"></h1> <h1 id="app"></h1> 23 | <button onClick="increment()">+</button> <button id="increment">+</button> 24 | <button onClick="decrement()">-</button> <button id="decrement">-</button> 25 | 26 | 27 | // vue: declarative code - no build step // 28 | 29 | <script> 30 | new Vue({ 31 | el: '#app', 32 | data: { 33 | counter: 0 34 | }, 35 | methods: { 36 | increment() {this.counter++}, 37 | decrement() {this.counter--} 38 | } 39 | }) 40 | </script> 41 | 42 | <div id="app"> 43 | <h1>{{ counter }}</h1> 44 | <button @click="increment">+</button> // instead of calling a method we could simply say: 45 | <button @click="decrement">-</button> // counter++ or counter-- 46 | </div> 47 | 48 | 49 | // hyperapp: declarative and functional code ///// 50 | // implies Babel build step ////////////////////// 51 | const state = { 52 | counter: 0 53 | } 54 | const actions = { 55 | changeCounter: value => state => ({ counter: state.counter + value }) 56 | } 57 | const view = (state, actions) => ( 58 | <div> 59 | <h1>{state.counter}</h1> 60 | <button onclick={() => actions.changeCounter(1)}>+</button> 61 | <button onclick={() => actions.changeCounter(-1)}>-</button> 62 | </div> 63 | ) 64 | app(state, actions, view, document.getElementById('app')) 65 | 66 | <div id="app"></div> 67 | 68 | 69 | // react ///////////////////////////////////////// 70 | // implies Babel build step ////////////////////// 71 | class App extends React.Component { 72 | constructor(props) { 73 | super(props); //required 74 | this.state = {counter: 0} 75 | } 76 | changeCounter(value) { 77 | this.setState({counter: this.state.counter + value}) 78 | } 79 | render() {return( 80 | <div> 81 | <h1>{ this.state.counter }</h1> 82 | <button onClick={this.changeCounter.bind(this, 1)}>+</button> 83 | <button onClick={this.changeCounter.bind(this, -1)}>−</button> 84 | </div> 85 | )} 86 | } 87 | ReactDOM.render(<App />, document.getElementById('app')) 88 | 89 | <div id="app"></div> 90 | 91 | 92 | /* CAPTURING USER INPUT: */ 93 | 94 | 95 | // jquery: imperative code - no build step /////// 96 | <script> // with continuous user input capture 97 | $(function() { 98 | //keypress wouldn't include delete key, keyup does. 99 | //We also query the div id app and find the other elements so that we can reduce lookups 100 | $('#app').keyup(function(e) { 101 | var userInput = $(this).find('#answerBox').val() 102 | $(this).find('.answer').empty() 103 | $(this).find('.answer').append(userInput) 104 | }) 105 | }) 106 | </script> 107 | 108 | <script> // with single event user input capture 109 | $(function() { 110 | $('#app').change(function(e) { 111 | var userInput = $(this).find('#answerBox').val() 112 | $(this).find('.answer').append(userInput) 113 | }) 114 | }) 115 | </script> 116 | 117 | <div id="app"> 118 | <label for="answerBox">Answer:</label> 119 | <input id="answerBox" type="text" /> 120 | <p>Your answer is: <span class="answer"></span></p> 121 | </div> 122 | 123 | 124 | // vue: declarative code - no build step ///////// 125 | <script> 126 | new Vue({ 127 | el: '#app', 128 | data: { 129 | answer: '' 130 | } 131 | }) 132 | </script> 133 | 134 | <div id="app"> 135 | <label for="answer">Answer:</label> 136 | <input id="answer" type="text" v-model="answer"/> // with countinuous user input capture 137 | <input id="answer" type="text" v-model.lazy="answer"/> // with single user input capture 138 | <p>Your answer is: <span>{{ answer }}</span></p> 139 | </div> 140 | 141 | 142 | /* HIDING AND SHOWING: */ 143 | 144 | 145 | // jquery: imperative code - no build step /////// 146 | <script> 147 | $(function() { 148 | $('button').on('click', function() { 149 | $('#hello').toggle() //$('#hello').toggleClass('red') would style the element 150 | $(this).attr('aria-expanded', ($(this).attr('aria-expanded') == "false" ? true : false)) 151 | }) 152 | }) 153 | </script> 154 | 155 | <div id="app"> 156 | <button aria-expanded="false">Toggle Panel</button> 157 | <p id="hello">hello</p> 158 | </div> 159 | 160 | 161 | // vue: declarative code - no build step ///////// 162 | <script> 163 | new Vue({ 164 | el: '#app', 165 | data: { 166 | active: false 167 | } 168 | }) 169 | </script> 170 | 171 | <div id="app"> 172 | <button @click="active = !active" :aria-pressed="active ? 'true' : 'false'">Toggle me</button> 173 | <p v-if="active">hello</p> <!-- If this button would work a lot it is preferable to use v-show instead 174 | <p :class="{ red: active }">Sometimes I need to be styled differently</p> --> 175 | </div> 176 | 177 | 178 | /* HIDING AND SHOWING 2: */ 179 | 180 | 181 | // jquery: imperative code - no build step /////// 182 | <script> 183 | $(function() { 184 | $('button').hide() 185 | $('#textarea').keyup(function() { 186 | if (textarea.val().length > 0) { 187 | $('button').show() 188 | } else { 189 | $('button').hide(); 190 | } 191 | }) 192 | }) 193 | </script> 194 | 195 | <div id="app"> 196 | <label for="textarea">What is your favorite kind of taco?</label> 197 | <textarea id="textarea"></textarea> 198 | <button>Let us know!</button> 199 | </div> 200 | 201 | 202 | // vue: declarative code - no build step ///////// 203 | <script> 204 | new Vue({ 205 | el: '#app', 206 | data() { 207 | return { 208 | tacos: '' 209 | } 210 | } 211 | }) 212 | </script> 213 | 214 | <div id="app"> 215 | <label for="textarea">What is your favorite kind of taco?</label> 216 | <textarea id="textarea" v-model="tacos"></textarea> 217 | <button v-show="tacos">Let us know!</button> 218 | </div> 219 | 220 | 221 | // How jquery work.. 222 | 223 | 224 | $('one string! describing the elements you want to select').jqueryMethod().pipingMethodsPossible() 225 | 226 | 227 | // HACKERRANK exercise 228 | // Return a count of the total number of objects 'o' satisfying o.x == o.y. 229 | // Parameter: an array of objects with integer properties 'x' and 'y' 230 | 231 | // solution jsArray.filter 232 | function getCount(objects) { 233 | return objects.filter(object => object.x == object.y).length; 234 | } 235 | 236 | // solution for .. of 237 | function getCount(objects) { 238 | let count = 0 239 | for (let o of objects) { 240 | if (o.x == o.y) count++ 241 | } 242 | return count 243 | } 244 | 245 | // solution for .. ín 246 | function getCount(objects) { 247 | let count = 0; 248 | for (let o in objects) { 249 | if (objects[o].x == objects[o].y) count++ 250 | } 251 | return count 252 | } 253 | 254 | // solution jsArray.forEach 255 | function getCount(objects) { 256 | let count = 0; 257 | objects.forEach(function (o) { 258 | if (o.x == o.y) count++ 259 | }) 260 | return count 261 | } -------------------------------------------------------------------------------- /on-lisps-and-ml.md: -------------------------------------------------------------------------------- 1 | # Lisps 2 | 3 | - clojure: [get started](https://calva.io/get-started-with-clojure/) - [clojure radar](https://www.juxt.pro/radar) - [news aggregator](http://planet.clojure.in) - [koans](http://clojurescriptkoans.com/) - [cursive](https://cursive-ide.com) - [docs](https://clojuredocs.org/quickref) 4 | - books on: 5 | - clojure: [brave](https://www.braveclojure.com/) - [elements](https://leanpub.com/elementsofclojure/read_sample) - [design patterns](http://mishadoff.com/blog/clojure-design-patterns) - [by example](https://kimh.github.io/clojure-by-example) 6 | - clojurescript: [unraveled](https://funcool.github.io/clojurescript-unraveled) - [transforming data](http://langintro.com/cljsbook) - [learn](https://www.learn-clojurescript.com/) 7 | - racket: [beautiful racket](https://beautifulracket.com) - [how to design programs](https://htdp.org) 8 | 9 | ## Clojurescript tooling 10 | 11 | I've tried most avaliable solutions: 12 | 13 | - vscode + calva: I couldn't understand the fuss around it. I didn't even manage to connect a repl.. 14 | - atom + chlorine: simple solution. a text editor and a repl. I used lumo. Not without quirks of course. 15 | - emacs + cider: emacs is an old beast that after my fifth or sixth trial along the years I really believe that worths to tame. It certainly would become loyal for life. For now, I did't get even as far as installling cider.. 16 | - intellij + cursive: simple solution but it feels heavy for a drifter. 17 | - sublime + sublimerepl: basic support. 18 | 19 | # Elm 20 | 21 | ```elm 22 | -- ELM 23 | 24 | typicalAssigment : Num 25 | typicalAssigment = 24 -- assigment is a like a function without arguments 26 | 27 | typicalFunction : Num -> Num -> Num 28 | typicalFunction x y = 2 * x + 2 * y -- typical function with signature 29 | 30 | functionPatternMatching : Num -> String 31 | functionPatternMatching 1 = "one" 32 | functionPatternMatching 2 = "two" 33 | functionPatternMatching 3 = "three" 34 | functionPatternMatching x = "out of range" 35 | ``` 36 | Relevant elm links: [news aggregator](https://elm-news.com/) -------------------------------------------------------------------------------- /on-native-methods-js-vs-ruby-vs-python.js: -------------------------------------------------------------------------------- 1 | /* JS vs Ruby vs Python native methods (not exaustive) 2 | =================================================== */ 3 | 4 | /* Native methods that return a boolean by inspecting if... */ 5 | 6 | //pyString.startswith() | .endswith() 7 | Array.isArray(jsDatatype) // it's an array 8 | 9 | /* Native methods to acess and return the index of... */ 10 | 11 | jsArray.findIndex() // the first element that pass a test 12 | //rubyArray.index() | .rindex() ## the first|last element that pass a test 13 | jsArrayOrString.indexOf() | .lastIndexOf() // the first|last match of a specified value 14 | //pyArray.index() 15 | jsString.search() // the first substring or REGEX match 16 | //pyString.index() | .rindex() ## the first|last substring match or error if not found 17 | //pyString.find() ## the first substring match 18 | 19 | /* Native methods to acess and return... */ 20 | 21 | jsString.match() // matches against a REGEX 22 | //rubyString.match() or rubyString[regex] 23 | jsString.charAt() | .charCodeAt() // the char|unicode of the char at a specified index 24 | jsArrayOrString[index] // the char or element at a specified index 25 | //rubyArrayOrString[index|index,length|range] 26 | //rubyArray.fetch() ## similar but throws error if index out of bounds 27 | //rubyArray.first | .last | .sample(n) ## first|last element|random n element(s) 28 | //rubyArray.take(n) | .drop(n) ## first n elements | elements but the first n 29 | jsArray.find() // the first element that passes a test 30 | 31 | /* Native methods to mutate by... */ 32 | 33 | jsArray.shift() | .pop() // removing first|last element. Returns that element 34 | //pyArray.pop() ## removing the element at a given index 35 | jsArray.splice() // adding/removing elements 36 | //pyArray.append() | .extend() ## adding element|elements to the end of the array 37 | //pyArray.insert() ## adding elements at a given index 38 | jsArray.copyWithin() // copying elements to and from specified positions 39 | jsArray.fill() // filling from a start to an end index with a static value 40 | //pyArray.clear() ## clear all elements 41 | jsArray.reverse() | .sort() // reversing the order|sorting the elements 42 | //pyArray.reverse() | .sort() 43 | jsArray.forEach() // calling a function on each element 44 | 45 | /* Native methods to create a new array... */ 46 | 47 | jsArray.filter() // with every element that pass a test 48 | //pyArray.filter() 49 | jsArray.map() // with the result of calling a function on each element 50 | //pyArray.map() 51 | jsString.split() // with substrings 52 | Array.from(jsIterableObject) // from an iterable object 53 | 54 | /* Native methods to return... */ 55 | 56 | jsArray.reduce() | .reduceRight() // a single value by reducing (left-right|right-left) 57 | jsArray.entries() | .keys() | .values() // an iterator with key-value pairs|keys|values for each index 58 | 59 | /* Native methods to create a new string/array... */ 60 | 61 | jsArrayOrString.concat() // joining two or more strings/arrays 62 | //rubyArray.concat() ## rubyArray.concat() mutates it! 63 | jsArrayOrString.slice() // with a selected part 64 | //pyArrayOrString.slice() 65 | 66 | /* Native methods to create a new string... */ 67 | 68 | jsString.trim() | .trimStart() | .trimEnd() // removing whitespace from both ends|left|right 69 | //pyString.strip() | .lstrip() | .rstrip() 70 | jsString.replace() // with a value or REGEX replacing another value 71 | //pyString.replace() ## with a value replacing another value 72 | jsString.substr() | .substring() // with chars from an index and length|two indexes 73 | jsString.toLowerCase() | .toUpperCase() // converted to lowercase|uppercase 74 | //pyString.lower() |.upper()| .capitalize() | .swapcase() 75 | jsArray.join() // by joining all elements (can define a separator) 76 | //rubyString.join() 77 | jsDatatype.toString() // by convertion and returns the result 78 | //rubyDatatype.to_s 79 | jsDate.toDateString() // converting the readable part of a date 80 | JSON.stringify() | .parse() // from an object|object from a JSON string 81 | 82 | /* Native jsDate methods to... */ 83 | 84 | jsDate.getFullYear() | .setFullYear() // get|set year as a four digit number (yyyy) 85 | jsDate.getMonth() | .setMonth() // get|set month as a number (0-11) 86 | jsDate.getDate() | .setDate() // get|set day as a number (1-31) 87 | jsDate.getHours() | .setHours() // get|set hour (0-23) 88 | jsDate.getMinutes() | .setMinutes() // get|set minute (0-59) 89 | jsDate.getSeconds() | .setSeconds() // get|set second (0-59) 90 | jsDate.getMilliseconds() | .setMilliseconds() // get|set millisecond (0-999) 91 | jsDate.getTime() | .setTime() // get|set time (milliseconds since January 1, 1970) 92 | jsDate.getDay() // get weekday as a number (0-6) 93 | jsDate.now() | .parse() // return millisecs since 01-01-1970 until now|provided date 94 | 95 | /* JS regular expressions */ 96 | /* syntax: /pattern/modifiers; */ 97 | 98 | var regex = /w3schools/i; // e.g. w3schools is a pattern, i is a modifier 99 | 100 | jsRegex.test(string) // search a string for a pattern and returns true or false 101 | jsRegex.exec(string) // search a string for a pattern and returns the found text or null 102 | 103 | /* REGEX patterns to match... */ 104 | 105 | [abc] [^abc] // any of the characters between|not between the brackets range 106 | [0-9] [^0-9] // any of the digits between|NOT between the brackets range 107 | (x|y) // any of the alternatives separated with | 108 | 109 | . // a single character, except newline or line terminator 110 | \b \B // a match at the beginning/end|not at the beginning/end of a word 111 | \w \W // a word|non-word character 112 | \d \D // a digit|non-digit character 113 | \s \S // a whitespace|non-whitespace character 114 | \t \v // a tab|vertical tab character 115 | \n // a new line character 116 | \0 // a NUL character 117 | \f // a form feed character 118 | \r // a carriage return character 119 | \xxx \xdd // the character specified by an octal number xxx|hexadecimal number dd 120 | \uxxxx // the Unicode character specified by a hexadecimal number xxxx 121 | 122 | n* n+ n? // any string that contains 0+|1+|0 or 1 occurrences of n 123 | n{X} // any string that contains a sequence of X n's 124 | n{X,Y} // any string that contains a sequence of X to Y n's 125 | n{X,} // any string that contains a sequence of at least X n's 126 | ^n n$ // any string with n at the beginning/end of it 127 | ?=n ?!n // any string that is followed|not followed by a specific string n 128 | 129 | /* REGEX modifiers to... */ 130 | 131 | i // case-insensitive matching 132 | g // global match (all matches rather than stopping after first match) 133 | m // multiline matching 134 | x // ignore whitespace 135 | 136 | /* JS Math object relevant methods and properties that return... */ 137 | 138 | Math.pow() | x ** y // the value of x to the power of y 139 | Math.sqrt() | .cbrt() // the square|cubic root of x 140 | Math.random() // a random number between 0 and 1 141 | Math.PI | .SQRT2 // PI|square root of 2 142 | Math.max() | .min() // the number with the max|min value 143 | //pyArray.max | .min 144 | Math.floor() | .ceil() | .round() // rounds downwards|upwards|to the nearest integer 145 | Math.trunc() | .abs() // the integer part|the absolute value of a number 146 | 147 | /* JS properties to... */ 148 | 149 | jsArrayOrString.length // return the number of elements 150 | //pyArrayOrString.len() 151 | jsDatatype.constructor // return the function that created the datatype object's prototype 152 | jsDatatype.prototype // add properties and methods to a datatype -------------------------------------------------------------------------------- /on-native-methods-tricks-quirks.js: -------------------------------------------------------------------------------- 1 | /* JS NATIVE METHODS (NOT EXAUSTIVE) 2 | ================================= */ 3 | 4 | 5 | // ARRAY NATIVE METHODS 6 | 7 | // To mutate by... 8 | jsArray.shift() | .pop() // removing first|last element. Returns that element 9 | jsArray.splice() | .length = n // adding/removing elements 10 | jsArray.copyWithin() // copying elements to and from specified positions 11 | jsArray.fill() // filling from a start to an end index with a static value 12 | jsArray.reverse() | .sort() // reversing the order|sorting the elements 13 | jsArray.forEach() // calling a function on each element 14 | 15 | // To create a new array... 16 | jsArray.map() // with the result of calling a function on each element 17 | jsArray.filter() // with every element that pass a test 18 | jsArray.slice() // with a selected part 19 | jsArray.concat() // joining two or more arrays 20 | jsArray.join() // by joining all elements (can define a separator) 21 | 22 | // To get... 23 | jsArray.reduce() | .reduceRight() // a single value by reducing (left-right|right-left) 24 | 25 | // To inspect if... (return a boolean) 26 | jsArray.includes() // contains the specified element 27 | jsArray.every() | .some() // every|any element pass a test 28 | Array.isArray(jsDatatype) // it's an array 29 | 30 | // To access and return the index of... 31 | jsArray.findIndex() // the first element that pass a test 32 | jsArray.indexOf() | .lastIndexOf() // the first|last match of a specified value 33 | 34 | // To access and return the element... 35 | jsArray[index] // at a specified index 36 | jsArray.find() // that is the first that passes a test 37 | 38 | // To get an array... 39 | Array.from(jsIterableObject) // from an iterable object 40 | 41 | 42 | 43 | 44 | // STRING NATIVE METHODS 45 | 46 | // To create a new string... 47 | jsString.concat() // joining two or more strings 48 | jsString.slice() // with a selected part 49 | jsString.substr() | .substring() // with chars from an index and length|two indexes 50 | jsString.trim() | .trimStart() | .trimEnd() // removing whitespace from both ends|left|right 51 | jsString.toLowerCase() | .toUpperCase() // converted to lowercase|uppercase 52 | jsString.replace() // with a value or REGEX replacing another value 53 | 54 | // To create a new array... 55 | jsString.split() // with substrings 56 | 57 | // To inspect if... (return a boolean). 58 | jsString.includes() // contains the specified chars 59 | jsString.startsWith() | .endsWith() // begins|ends with specified chars 60 | 61 | // To access and return the index of... 62 | jsString.search() // the first substring or REGEX match 63 | jsString.indexOf() | .lastIndexOf() // the first|last match of a specified value 64 | 65 | // To acess and return... 66 | jsString.match() // matches against a REGEX 67 | jsString[index] | .charAt() | .charCodeAt() // the char|unicode of the char at a specified index 68 | 69 | 70 | 71 | 72 | // OBJECT NATIVE METHODS 73 | 74 | delete jsObject.property // deleting properties of an object 75 | jsObject.entries() | .keys() | .values() // an iterator with key-value pairs|keys|values for each index 76 | jsObject.isPrototypeOf(anotherJsObject) 77 | jsObject.hasOwnProperty('') 78 | jsObject.propertyIsEnumerable('') // tell if a property is enumerable (if for-in will work) 79 | jsObject.valueOf(); // return string, number, or boolean representation (usually string) 80 | 81 | 82 | 83 | 84 | // DATE NATIVE METHODS 85 | 86 | new Date // returns a date object with actual 'now' time and date 87 | new Date(2011, 9, 22) // October(!) 22, 2011. January as 0-month! Timezone = LOCAL 88 | new Date('January 12, 2012') 89 | Date.now() | .parse() // return millisecs since 01-01-1970 until now|provided date 90 | 91 | jsDate.getFullYear() | .setFullYear() // get|set year as a four digit number (yyyy) 92 | jsDate.getMonth() | .setMonth() // get|set month as a number (0-11) 93 | jsDate.getDate() | .setDate() // get|set day as a number (1-31) 94 | jsDate.getHours() | .setHours() // get|set hour (0-23) 95 | jsDate.getMinutes() | .setMinutes() // get|set minute (0-59) 96 | jsDate.getSeconds() | .setSeconds() // get|set second (0-59) 97 | jsDate.getMilliseconds() | .setMilliseconds() // get|set millisecond (0-999) 98 | jsDate.getTime() | .setTime() // get|set time (milliseconds since January 1, 1970) 99 | jsDate.getDay() // get weekday as a number (0-6), 0 = Sunday, 6 = Saturday 100 | 101 | jsDate.toDateString() // converting the readable part of a date 102 | 103 | 104 | 105 | 106 | // JS REGULAR EXPRESSIONS 107 | 108 | // syntax: /pattern/modifiers; 109 | var regex = /w3schools/i; // e.g. w3schools is a pattern, i is a modifier 110 | 111 | jsRegex.test(string) // search a string for a pattern and returns true or false 112 | jsRegex.exec(string) // search a string for a pattern and returns the found text or null 113 | 114 | // Patterns to match... 115 | [abc] [^abc] // any of the characters between|not between the brackets range 116 | [0-9] [^0-9] // any of the digits between|NOT between the brackets range 117 | (x|y) // any of the alternatives separated with | 118 | 119 | . // a single character, except newline or line terminator 120 | \b \B // a match at the beginning/end|not at the beginning/end of a word 121 | \w \W // a word|non-word character 122 | \d \D // a digit|non-digit character 123 | \s \S // a whitespace|non-whitespace character 124 | \t \v // a tab|vertical tab character 125 | \n // a new line character 126 | \0 // a NUL character 127 | \f // a form feed character 128 | \r // a carriage return character 129 | \xxx \xdd // the character specified by an octal number xxx|hexadecimal number dd 130 | \uxxxx // the Unicode character specified by a hexadecimal number xxxx 131 | 132 | n* n+ n? // any string that contains 0+|1+|0 or 1 occurrences of n 133 | n{X} // any string that contains a sequence of X n's 134 | n{X,Y} // any string that contains a sequence of X to Y n's 135 | n{X,} // any string that contains a sequence of at least X n's 136 | ^n n$ // any string with n at the beginning/end of it 137 | ?=n ?!n // any string that is followed|not followed by a specific string n 138 | 139 | // Modifiers to... 140 | i // case-insensitive matching 141 | g // global match (all matches rather than stopping after first match) 142 | m // multiline matching 143 | x // ignore whitespace 144 | 145 | 146 | 147 | 148 | // JS MATH NATIVE METHODS AND PROPERTIES 149 | 150 | // To return... 151 | Math.pow() | x ** y // the value of x to the power of y 152 | Math.sqrt() | .cbrt() // the square|cubic root of x 153 | Math.random() | .floor(Math.random() * 27) // a random number between 0 and 1 | 0 and 27 154 | Math.PI | .SQRT2 // PI|square root of 2 155 | Math.max() | .min() // the number with the max|min value 156 | Math.floor() | .ceil() | .round() // rounds downwards|upwards|to the nearest integer 157 | Math.trunc() | .abs() // the integer part|the absolute value of a number 158 | 159 | isFinite() 160 | parseFloat('070.53.76') // 70.53 - leading zero ignored, one decimal point allowed, 2nd one is stop point 161 | parseInt('', radix) // radix is optional 162 | 163 | 0x2c // 44 - starting with '0x' means hex number (2×16 + 12(c) = 44) 164 | 023 // 19 - starting with '0' means octal number (2×8 + 3 = 19) 165 | 5e-6 // 0.000005 - "e-notation" 166 | 167 | jsNumber.toString(8) | .toString(16) // Convert to string with octal|hexadecimal number 168 | jsDatatype.toString() // by convertion and returns the result 169 | 170 | 171 | 172 | 173 | // JS PROPERTIES AND OPERATORS 174 | 175 | // Properties that... 176 | jsArrayOrString.length // return the number of elements 177 | jsDatatype.constructor // return the function that created the datatype object's prototype 178 | jsDatatype.prototype // add properties and methods to a datatype 179 | JSON.stringify() | .parse() // from an object|object from a JSON string 180 | 181 | // Operators that return... 182 | typeof something // its primitive type ('string', 'number', 'boolean', 'object', 'undefined') 183 | something instanceof anotherthing // its reference type (RegExp, Array, etc.) 184 | 185 | 186 | 187 | 188 | /* JS TRICKS & QUIRKS (NOT EXAUSTIVE) 189 | ================================= */ 190 | 191 | 'a' < 3 // False. JS tries to convert 'a' into a number but becomes NaN. Anything compared with NaN is false 192 | 'Boy' > 'ant' // False, upper-case letters ASCII value is smaller than on lower-case. 193 | 5 + '5' // '55'. if either is a string, the other is converted and concatenated 194 | null == undefined // true 195 | Number(null) // 0 196 | 197 | 198 | 199 | 200 | /* VARIABLES 201 | 202 | There isn't block-level scope, only function level scope. So variables inside blocks (for, if) are global. */ 203 | 204 | var whatever; // Sets variable whatever to value "undefined", a JavaScript type. 205 | globalVar = null; // Deference a global variable I'm not using anymore 206 | 207 | var a = 5, b = a; // a = 6; b = 5! The b = a assignment copied the primitive 5 into both 208 | a += 1; // primitive types pass value, not reference. 209 | 210 | var a = {}, b = a; // Both are references to the object that now has a property, 211 | a.name = 'Dog' // it's only one object, the assignment copied the reference, so b.name = 'dog ' 212 | // but if now say a = null, b is still a reference to the object! 213 | 214 | i++ // "prefix" increment, changing the value before continuing evaluation. 215 | ++i // "postfix" increment, changing the value after the containing statement has been evaluated. 216 | // If alone, no difference. If part of another statement (age++ / 2) big difference! 217 | 218 | 219 | 220 | 221 | /* LOOPS 222 | 223 | The Boolean() function is performed, converting to either true or false. 224 | Boolean(9) is true. Boolean(0) is false. 225 | Boolean("hi") is true. Boolean("") is false. 226 | Boolean(anyObject) is true. Boolean(null) is false. */ 227 | 228 | if (expression) {statement} else {statement} 229 | 230 | do {statement} while (expression) // it executes at least once 231 | while (expression) {statement} // it might not execute 232 | 233 | for(var i=0; i < 10; i++) {statement} 234 | for(;;) {statement} // infinite loop 235 | for(var propName in jsObject) {document.write("key: " + propName + " value: " + person[prop])} // loop on an object 236 | 237 | switch(animal){ 238 | case 'cow': giveHay(); break; 239 | case 'rabbit': giveCarrots(); break; 240 | default: rest(); break; 241 | } 242 | 243 | 244 | 245 | 246 | /* FUNCTIONS 247 | 248 | - You define a function with parameters. You call a function with arguments. 249 | - Closures are functions that have access to variables from another function's scope. 250 | You do it by creating a function inside a function. */ 251 | 252 | function sum (x, y) {return x + y} // Function declarations are executed before any other code. 253 | var sum = function (x, y) {return x + y} // Function expressions are executed in order, like any variable assignment. 254 | 255 | function() {go()}() // Wrong. Function declarations can't be immediately followed by parens. 256 | (function() {go()})() // But function expressions can. Surrounding parens turn function declaration into expression. 257 | 258 | 259 | 260 | 261 | // ARRAYS 262 | 263 | new Array('x') // New array with x as an element 264 | new Array(3) // New empty array with length 3 265 | 266 | var propName = 'age'; 267 | person[propName] // Same as person.age. Bracket notation allows variables as property names. 268 | person.age 269 | 270 | 271 | 272 | 273 | // PRACTICAL TRICKS 274 | 275 | // Getting a random element from any array. 276 | randomIndex = Math.floor(Math.random() * arr.length) 277 | randomElement = arr[randomIndex] 278 | 279 | // If y is not null or false, it uses y and never evaluates z. Otherwise it uses z. 280 | var x = y || z; 281 | 282 | // Function that sums all arguments provided 283 | function sum() { 284 | for(var i=0; i < arguments.length; i++) {total += arguments[i]}; 285 | return total 286 | } 287 | 288 | // Alert in 4 seconds. Then clear a setTimeout 289 | setTimeout(function() {alert('Boo!')}, 4000) 290 | clearTimeout() 291 | 292 | // Alert 5 times then stop 293 | var num = 0; 294 | function alertOrStop() { 295 | num += 0; 296 | if (num <= 5) {alert('Alert ' + num); setTimeout(alertOrStop, 2000)} 297 | else {alert('OK, done.')} 298 | } 299 | alertOrStop() -------------------------------------------------------------------------------- /on-native-methods-tricks-quirks.rb: -------------------------------------------------------------------------------- 1 | # RUBY NATIVE METHODS (NOT EXAUSTIVE) 2 | # =================================== 3 | 4 | 5 | # ARRAY NATIVE METHODS 6 | 7 | # To mutate by... 8 | rubyArray.unshift() | .push() or << # adding element to the start|end of the array 9 | rubyArray.shift | .shift(n) | .pop | .pop(n) # removing first|first n|last|last n element(s). Returns them 10 | rubyArray.delete_at() # removing the element at a given index. Returns that element 11 | rubyArray.insert() # adding/removing elements 12 | rubyArray.concat() # joining two or more arrays 13 | rubyArray.fill() # filling from a start to an end index with a static value 14 | rubyArray.clear | .compact! # clear all |'nil' elem 15 | rubyArray.reverse! | .sort! | .shuffle! # reversing the order|sorting|shuffle the elements 16 | rubyArray.reverse_each {} | .each_index {} # on reverse order|with the index as the argument 17 | rubyArray.drop_while {} # deleting elements while they pass a test and stops when don't 18 | rubyArray.reject! {} | .select! # keeping every element that pass a test|fail a test 19 | rubyArray.delete_if {} | .keep_if {} # aliases 20 | rubyArray.each {} | .cycle(n) {} # calling a function on each element|n times 21 | 22 | # To create a new array... 23 | rubyArray.select {} | .reject {} # with every element that pass a test|fail a test 24 | rubyArray.map {} # with the result of calling a function on each element 25 | rubyArray.flatten | .shuffle | .uniq | .sort | .reversed # with one dimension|shuffled|unique|sorted|reversed elements 26 | rubyString.chars # with substrings 27 | rubyArray.slice() # with a selected part 28 | rubyString.join() # by joining all elements (can define a separator) 29 | 30 | # To inspect if... (return a boolean) 31 | rubyArray.all? {} | .any? {} # every|any element pass a test 32 | rubyArray.include?() | .empty? # contains the specified element/chars | length = 0 33 | 34 | # To access and return the index of... 35 | rubyArray.index() | .rindex() # the first|last element that pass a test or specified value 36 | 37 | # To access and return... 38 | rubyArray[index|index,length|range] # the char or element at a specified index 39 | rubyArray.fetch() # similar but throws error if index out of bounds 40 | rubyArray.first | .last | .sample(n) # first|last element|random n element(s) 41 | rubyArray.take(n) | .drop(n) # first n elements | elements but the first n 42 | rubyArray.bsearch {} # the first element that passes a test 43 | 44 | 45 | 46 | 47 | # STRING NATIVE METHODS 48 | 49 | # To mutate the string... 50 | rubyString.reverse! # rubyStrings can mutate also 51 | rubyString.downcase!| .upcase! | .capitalize! | .swapcase! 52 | 53 | # To create a new string... 54 | rubyString.slice() # with a selected part 55 | rubyString.concat() # joining two or more strings 56 | rubyString.tr() | .gsub() | .sub() # with a value|REGEX|first REGEX ocurrence replacing a value 57 | rubyString.strip | .lstrip | .rstrip # removing whitespace from both ends|left|right 58 | rubyString.downcase | .upcase | .capitalize | .swapcase # converted to lowercase|uppercase 59 | rubyString.concat() # joining two or more strings 60 | rubyDatatype.to_s # by convertion and returns the result 61 | 62 | # To inspect if... (return a boolean) 63 | rubyString.include?() | .empty? # contains the specified chars | length = 0 64 | rubyString.start_with?() | .end_with?() # begins|ends with specified chars 65 | 66 | # To access and return the index of... 67 | rubyString.index() | .rindex() # the first|last substring or REGEX match 68 | 69 | # To access and return... 70 | rubyString[index|index,length|range] # the char or element at a specified index 71 | rubyString.match() | rubyString[regex] # matches against a REGEX 72 | 73 | 74 | 75 | 76 | # OTHER NATIVE METHODS 77 | 78 | # Get a new date 79 | Date.new() 80 | Date.parse('') | Time.parse('') # convert a string into a date|time 81 | Date.today | Time.now 82 | 83 | JSON.stringify() | .parse() # from an object|object from a JSON string 84 | 85 | # Ruby regular expressions 86 | rubyString.scan(regex) # search for a pattern and returns an array with all matches 87 | 88 | # Ruby Math object relevant methods and properties that return... 89 | rubyArray.max | .min # the number with the max|min value 90 | 0x2c # 44 - starting with '0x' means hex number (2×16 + 12(c) = 44) 91 | 023 # 19 - starting with '0' means octal number (2×8 + 3 = 19) 92 | 5e-6 # 0.000005 - "e-notation" 93 | 94 | # Ruby properties to... 95 | rubyObject.invert # get a new object with keys as values and viceversa 96 | rubyArrayOrStringorObject.length or .size 97 | 98 | 99 | 100 | 101 | # PRACTICAL TRICKS 102 | # ================ 103 | 104 | load 'file.rb' # import a file 105 | 106 | require 'library' # import a library 107 | gem 'gemname' 108 | gem 'gemname', '>= 3.0' # require a gem with specific version 109 | 110 | {} | Hash.new | Hash[k, v, k, v] # to make a new hash 111 | [] | Array.new | %w() | obj.to_a | Array(obj) # to make a new array 112 | 113 | # case statement 114 | case answer 115 | when 'y', 'yes' # y or yes 116 | puts 'OK' 117 | when 'no' 118 | puts 'Oh.' 119 | else 120 | puts '?' 121 | end 122 | 123 | # command line 124 | ruby -e 'puts "ruby to execute"' # e: "execute" -------------------------------------------------------------------------------- /on-other.md: -------------------------------------------------------------------------------- 1 | # Other stuff 2 | 3 | ## Shopping 4 | 5 | ### Mobile (PT) 6 | 7 | - aquario / tiendamovil 8 | - refurbished computers: onbit 9 | 10 | ### Shoe (PT) 11 | 12 | - Promo: [footwear](https://www.extremefootwear.pt/pt/homem/calcado/sneakers_243-573.html?c=1&ft=dGFtYW5ob3x8MlwzN1wyOFwzXDM4&p=4) - [bzr](https://www.bzronline.com/pt/promocoes-homem/sapatilhas_1341-905.html) - [decathlon](https://www.decathlon.pt/homem/calcado-e-botas-homem/f-partner_decathlonpartner/f-size_42-21_43-8?Ns=sku.modelLowestPrice%7C0%7C%7Csku.activePrice%7C0%7C%7Csku.availability%7C1) - [sport zone](https://www.sprintersports.com/pt/promocoes-calcado-homem?sort=priceasc&tallas=42,42.5,43,43.5&origin=web) - [trekkinn](https://www.tradeinn.com/trekkinn/pt/calcado-homem-columbia/3012/347/x#fq=id_familia=3012&sort=precio_win_159;asc&fe=&pf=@talla=EU%2042,EU%2042.5,EU%2043@&start=0) - spartoo 13 | - Trail / desportivo: [trekkinn](https://www.tradeinn.com/trekkinn/pt/calcado-homem-columbia/3012/347/x#fq=id_familia=3012&sort=precio_win_159;asc&fe=&pf=@marca=347,128,179@talla=EU%2042,EU%2042.5,EU%2043@&start=0) - [bazar desportivo](https://www.bzronline.com/pt/bazar-desportivo/bazar-desportivo-saldos_2521.html?ft=Z2FtYXx8MXx8fGdlbmVyb3x8OVwxMHx8fGZhbWlsaWF8fDN8fHxjYXRlZ29yaWF8fDMzXDI5fHx8c2VtZXN0cmV8fDJcMTU=) 14 | 15 | ## Tumblr themes 16 | 17 | - [1](https://themes.stashfamily.com/themes/ten-toes/)/[2](https://felixkwan.github.io/mgt/)/[3](https://forsa-theme.tumblr.com/page/2)/[4](https://hachi-theme.tumblr.com)/[5](https://kaze-theme.tumblr.com)/[6](https://hellodirty.com/) 18 | 19 | ## Domains 20 | 21 | - [namecheap coupons](https://www.newcoupons.info/namecheap-renewal-coupon) -------------------------------------------------------------------------------- /on-polish-language.md: -------------------------------------------------------------------------------- 1 | # Polish language - basics 2 | 3 | - language level: [english](https://englishtests.online/) 4 | - methodology: [tim Ferriss one](https://tim.blog/2009/01/20/learning-language/) and [two](https://tim.blog/2014/03/21/how-to-learn-a-foreign-language-2/) - [learn these words first](https://learnthesewordsfirst.com/) - [basic english](http://ogden.basic-english.org) - [numbers in korean](https://www.ryanestrada.com/countingkorean/index.html) 5 | - level up: [clozemaster](https://www.clozemaster.com/l/pol-eng) - [wikibook](https://en.wikibooks.org/wiki/Polish) - [youglish](https://youglish.com/polish) - [forvo](https://forvo.com/languages-pronunciations/pl/) - [learning polish from the streets](https://www.youtube.com/playlist?list=PLA5UIoabheFN7GIhcfUGQT2S5_U5sWnhK) - [readini](https://readini.com) - [grammar](https://mowicpopolsku.com/polish-grammar/cases/locative) - [ilang](https://ilang.io) - [polyglot](https://www.youtube.com/user/poliglotta80/videos) - [etymology](https://www.youtube.com/user/Alliterative/videos) - [daily exercises](https://app.fluentsubs.com/exercises/daily) 6 | 7 | <!-- 8 | - Don’t waste time on more than learning more than a handful of conjugations for primarily first-person singular (I) and second-person singular (you) in the past, present, and future tenses, along with common phrases that illustrate them. Throw in a few auxilaries (to want to V, to need to V, to like to V, etc.) Make it your goal to screw up as often as possible in uncontrolled environments. Explicitly ask friends to correct you and reward them with thanks and praise when they catch you spouting nonsense, particularly the small understandable mistakes. !!! Before you invest (or waste) hundreds and thousands of hours on a language, you should deconstruct it. !!! learn language: films, manga, phrasebook, dictionary, flashcards. Consider a new language like a new sport. analogy. advantages and train. learn conjugations for “helping” verbs like “to want,” “to need,” “to have to,” “should,” etc. In Spanish and many others, this allows you to express yourself with “I need/want/must/should” + the infinite of any verb. Learning the variations of a half dozen verbs gives you access to all verbs. This doesn’t help when someone else is speaking, but it does help get the training wheels off self-expression as quickly as possible. 9 | - The apple is red. It is John’s apple. I give John the apple. I give John the apple. We give him the apple. He gives it to John. She gives it to him. I must give it to him. I want to give it to her. 10 | --> 11 | 12 | ```yaml 13 | ja ty on-ona my wy oni 14 | dla mnie dla ciebie dla państwa # for me/you 15 | u mnie u ciebie u niego - niej # at you 16 | mój twój jego - jej nasz wasz ich # mine / yours / his () 17 | 18 | swój # my, your, his own (sounds more polish) 19 | 20 | # masculine/feminine on past tense formation: e -> a; i -> y; l -> ł 21 | jestem..byłem jesteś..byłeś jest...był+a są.....byli # być (be) 22 | mam....miałem masz...miałeś ma....miał+a mają..mieli # mieć (have) 23 | 24 | idę...szedłem idziesz idzie..szedł idą....szli # iść (go specific) 25 | chodzić [chodzę..chodziłem] # go non-specific 26 | idziesz do szkoły? / chodzisz do szkoły? # are you going to school? / do you go to school? 27 | chodź tu! / idź! # come here! / go! (imperativo) 28 | 29 | wyjść [wyjdę..wyszedłem] # exit (sair) 30 | robić [robię....robiłem] # do 31 | móc [ mogę.....mogłem] # can 32 | używać # use 33 | poznać # get to know you 34 | wiedzieć, znać # know 35 | spotkać # meet 36 | kupić # buy 37 | chcieć # want 38 | 39 | Polish verbs are either perfective (imply completion) or imperfective (imply ongoing action with no sense of completion). 40 | Perfective verbs are normally created by adding a prefix (do, na, od, po, prze, przy, s, u, wy, z, za) to an imperfective verb, 41 | but not always - the prefix might also change the meaning slightly (e.g. "pisać" means "to write" and "napisać" "to have written", 42 | but "przepisać" means "to rewrite" or "to copy the writing") 43 | 44 | tu, tutaj, oto - tam # here - there 45 | ten (ta, to, tym ...) - tamten # this - that 46 | i - lub, albo, czy # and - or 47 | w # in (na) 48 | z # with (de / com) 49 | a # ??? 50 | o # about 51 | 52 | od - do # from - to 53 | przez # by (através) 54 | przed - po # before - after 55 | nad - pod # above - under 56 | około # about (aproximadamente) 57 | blisko - daleko # near - far 58 | 59 | już # already (já) 60 | teraz - wkrótce # now - soon (agora - em breve) 61 | wczoraj - dzisiaj - jutro # yesterday - today - tomorrow 62 | zawsze - nigdy # always - never 63 | 64 | wszystko - nic # everything - nothing 65 | zaledwie, ledwo # barely (mal...) 66 | prawie, niemal # almost (quase) 67 | kilka, niektóre, trochę # some, few (alguns) 68 | bardziej/więcej niż - mniej niż # more than - less than 69 | trudny - łatwy # hard - easy 70 | 71 | może # maybe 72 | zależy # depends 73 | ale # but 74 | jednak # however 75 | bo, dlatego # because 76 | 77 | skąd? skąd jesteś? # from where (de onde) 78 | dokąd? # to where (para onde) 79 | gdzie? gdzie jest..? # where / where is .. 80 | kiedy? kiedy jest..? # when (quando) 81 | kto? # who (quem) 82 | co? co to jest? # what (o que / o que é isto) 83 | jaki? # what (qual) 84 | jak? jak masz na imię? # how (como / como te chamas) 85 | dlaczego?, czemu? # why 86 | ile? ile to kostuje? # how much (quanto / quanto custa) 87 | tanie - droższe # cheap - expensive 88 | jeżeli, jeśli, gdyby # if (inicio da frase) 89 | 90 | zero 91 | jeden pierwszy jede.nascie 92 | dwa drugi dwa+nascie dwa+dzieścia dwieście * 93 | trzy trzy+nascie trzy+dzieścia trzy+sta 94 | cztery czter.nascie czter.dzieścia cztery+sta ** 95 | pięć pięt.nascie pięć+dziesiąt pięć+set * 96 | sześć szes.nascie sześć+dziesiąt szećś.et ** 97 | siedem siedem+nascie siedem+dziesiąt siedem+set 98 | osiem osiem+nascie osiem+dziesiąt osiem+set 99 | dziewięc dziewięt.nascie dziewięć+dziesiąt dziewięć+set * 100 | dziesięc sto tysiąc 101 | 102 | poniedziałek stycz.eń lipi.ec wiosna 103 | wtorek luty sierpi.eń lato 104 | środa marz.ec wrzesi.eń jesień 105 | czwartek kwieci.eń październik zima 106 | piątek maj listopad 107 | sobota czerwi.ec grudzi.eń 108 | niedziela 109 | 110 | # word formation (empiric..) 111 | związkowiec - związek # syndicalist - syndicAT 112 | rolnik - rolnic+two # agricultor - agricultURE 113 | wart - wartość # value - valueNESS 114 | 115 | # substantives 116 | ending with consonant (dead) or A (alive) # masculine: nóż / kolega 117 | ending with A # feminine: łyżka 118 | ending with O # neutral: oko 119 | 120 | # 7 declinations 121 | nominative # neutral 122 | genitive # possession 123 | vocative 124 | acusative 125 | instrumental 126 | dative 127 | locative 128 | ``` -------------------------------------------------------------------------------- /on-portuguese-law.md: -------------------------------------------------------------------------------- 1 | # Portuguese Law 2 | 3 | ### Direito da edificação 4 | 5 | - [Legislação base](#legislação-base) 6 | - [Destaque de parcela](#destaque-de-parcela) 7 | - Terrenos em avos 8 | 9 | ### Direito da propriedade de imóveis 10 | 11 | - [Cadastro predial: cadernetas predial urbana ou rural](#cadastro-predial) 12 | - [Custos na compra de imóveis](#custos-na-compra-de-imóveis) 13 | - [Custos na venda de imóveis](#custos-na-venda-de-imóveis) 14 | - [contrato compra venda](https://www.idealista.pt/news/imobiliario/habitacao/2019/06/04/39857-contrato-de-compra-e-venda-a-arma-que-protege-compradores-e-vendedores-de-imoveis#O%20que%20acontece%20em%20caso%20de%20incumprimento) 15 | 16 | ### Direito das transmissões (heranças) 17 | 18 | - [Um parente próximo faleceu, como proceder?](#um-parente-próximo-faleceu-como-proceder) 19 | - [E se houver só um herdeiro?](#e-se-houver-só-um-herdeiro) 20 | 21 | ### Como funciona na Europa? 22 | 23 | [Buying home](http://www.buyingmyhome.eu/) - [Couples](http://www.coupleseurope.eu/) - [Succession law](http://www.successions-europe.eu/) 24 | 25 | 26 | 27 | ## Direito da edificação: 28 | 29 | ### Legislação base 30 | 31 | - RJUE: Regime Jurídico da urbanização e Edificação ([DL555/99](http://www.pgdlisboa.pt/leis/lei_mostra_articulado.php?nid=625&tabela=leis)). 32 | - RGEU: Regulamento Geral de Edificações Urbanas ([DL38382/51](http://www.pgdlisboa.pt/leis/lei_mostra_articulado.php?nid=1217&tabela=leis)). 33 | 34 | 35 | ### Destaque de parcela 36 | 37 | - Isenção de licença ou autorização cumprindo as condições: 38 | - dentro de perimetro urbano: se as parcelas resultantes do destaque confrontarem com arruamentos públicos. 39 | - fora de perimetro urbano: 40 | - Se na parcela destacada só for construído um edifício exclusivamente habitacional até 2 fogos; 41 | - e a parcela restante respeitar a área mínima fixada no projecto de intervenção em espaço rural em vigor ou, quando este não exista, a área de unidade de cultura fixada nos termos da lei geral para a região respectiva. 42 | - Nos 10 anos seguintes, só é possível destacar outra parcela na área correspondente ao prédio originário através de loteamento. 43 | 44 | [Fonte](www.arquitectura.pt/forum/forums/topic/10215-destaque-de-parcela) 45 | 46 | 47 | 48 | 49 | ## Direito da propriedade de imóveis: 50 | 51 | ### Cadastro predial 52 | 53 | Consulta de [cadastro predial rural](http://www.dgterritorio.pt/cadastro/cadastro_geometrico_da_propriedade_rustica__cgpr_/consultar_seccoes_cadastrais/). 54 | 55 | 56 | ### Custos na compra de imóveis 57 | 58 | 59 | - Escritura de imóvel através da [Balcão Casa Pronta](https://www.casapronta.pt/CasaPronta/conteudos/postos_atendimento.jsp) (375€ sem hipoteca a 700€ com hipoteca) ou notário (~ 400€ sem hipoteca a 800€ com hipoteca). 60 | - IMT: Simulador [Apemip](http://apemip.info/info/IMT.cfm). Em resumo: HPPs e/ou imóveis mais baratos pagam menos. 61 | - Isenção para HPPs com preço de venda e valor patrimonial até 92K€ (115K€ na Madeira e Açores). 62 | - O IMT é pago antes da escritura! 63 | - Imposto de Selo: 0,8% sobre o valor da venda (ou valor patrimonial se este for mais alto). 64 | - Custos bancários e registo provisório: ~ 250€ (~ 500€ no caso de crédito à habitação). 65 | 66 | 67 | ### Custos na venda de imóveis 68 | 69 | 70 | - 2º via licença utilização: ~ 40€ na Camara Municipal. 71 | - 2º via ficha técnica habitação: ~ 100€ na Camara Municipal. 72 | - Certificado energético: ~ 200€ (aumenta consoante a área do imóvel). 73 | - Certidão predial permanente: 15€ por cada fração (válida por 6 meses) 74 | - Direitos de preferência: 15€ por anúncio (válido por 6 meses). 75 | - Mais-valias: 76 | - *maisValias = preçoVenda - (preçoCompra x coeficienteInflação) - despesasTransmissão – despesasValorização* 77 | - Despesas de transmissão: IMT, escrituras, certificado energético e comissões e faturadas ao proprietário. 78 | - Despesas de valorização: obras efetuadas nos últimos 12 anos e faturadas ao proprietário. 79 | - Se o preço de venda for inferior ao valor patrimonial terá de se comprovar no Fisco ou este não será considerado para o cálculo de mais-valias. 80 | - Se tiver herdado o imóvel considera-se o valor patrimonial na data da transmissão. 81 | - Onde calcular? Com o simulador [Dr.Finanças](https://www.doutorfinancas.pt/calculadora-de-mais-valias-imoveis/) ou [Deco](https://www.deco.proteste.pt/casa/comprar-vender-casa/simule-e-poupe/quanto-pago-ao-fisco-pela-venda-da-minha-casa). [Alguns exemplos práticos](https://www.doutorfinancas.pt/irs/irs-mais-valias-em-imoveis-e-exclusao-de-tributacao/). 82 | - Em que situações estou isento? 83 | - Habitações e terrenos rústicos comprados antes de 1989. 84 | - Se reinvestir os recursos próprios (*preçoVenda – amortizaçãoEmpréstimoImóvelVendido*) na compra de outro imóvel para habitação própria e permanente (HPP). 85 | - Onde declarar no IRS? Anexo G. 86 | - A mais-valia pode ficar suspensa até 36 meses caso tenha vendido uma HPP e assinalar a intenção de comprar outra HPP. 87 | - Se tiver comprado outra HPP antes de vender a antiga, tem 24 meses o fazer e calcular a mais-valia. 88 | - Apenas se considera 50% da mais-valia para efeitos de tributação em residentes fiscais. 89 | - Outros custos possíveis: 90 | - Comissões imobiliárias: 2% a 6% do valor de venda. 91 | - Cancelamento de hipoteca: 50€ na Conservatória do Registo Predial. 92 | 93 | <!-- 94 | isenção justificada por um artigo do Código do IMT que prevê que a aquisição de imóveis para revenda no prazo máximo de três anos não está sujeita a este imposto. Mas o Código do IMT também prevê que, para que fiquem isentas deste imposto, as entidades beneficiárias devem exercer “normal e habitualmente” a atividade de revenda, o que deve ser comprovado com as contas do ano anterior ao das operações em causa. 95 | --> 96 | 97 | 98 | ## Direito das transmissões (heranças): 99 | 100 | ### Um parente próximo faleceu, como proceder? 101 | 102 | Em resumo: 103 | 104 | - *Registo do óbito:* efectuado, normalmente pela funerária, numa conservatória do registo civil (prazo 48h). 105 | - *Participação do óbito ao Fisco*, até 3 meses a contar do início do mês seguinte à data da morte, pelo cabeça-de-casal da herança na área de residencia do falecido com entrega de: 106 | - fotocópia de certidão de óbito e cartões de cidadão(CC) dos herdeiros e falecido. 107 | - modelo 1 do Imposto de Selo com uma relação de bens. 108 | - *Habilitação de herdeiros.* Entrega no IRN (instituto dos Registos e do Notariado) de: 109 | - declaração pelo cabeça de casal que identifica os herdeiros e o falecido (nome completo, o estado civil, a naturalidade e residência, assim como a referência se algum destes é menor). 110 | - certidão de óbito e casamento do falecido (o balcão das heranças trata disso). 111 | - cada herdeiro tem apresentar uma certidão de nascimento (o balcão das heranças trata disso). 112 | - cada herdeiro tem ainda de assinar uma procuração para poder ser representado pelo cabeça de casal. 113 | 114 | 115 | ### E se houver só um herdeiro? 116 | 117 | Em teoria é igual. Na prática, a habilitação de herdeiros é desnecessária. 118 | 119 | Como há apenas um herdeiro a herança é sempre sua. Isto é, deixando os imóveis em nome da herança indivisa do falecido, usufrui igualmente dos mesmos e poupa significativamente em Imposto de Selo (0,8% sobre o valor dos imóveis) e novas escrituras (~ 500€). 120 | 121 | - Posso vender sem chegar a ter o imóvel em meu nome? Sim. 122 | - Como obter uma caderneta predial do imóvel (ex. alteração contratos de electricidade/água)? À herança indivisa foi atribuido um NIF. Basta pedir uma password de acesso ao site das Finanças e imprimir a caderneta predial. -------------------------------------------------------------------------------- /on-portuguese-tax-system.md: -------------------------------------------------------------------------------- 1 | # Portuguese tax system for noobs (2024) 2 | 3 | 4 | 5 | 6 | 7 | 8 | ### Como trabalhar em Portugal: 9 | 10 | #### Trabalho Dependente 11 | 12 | - Trabalhador dependente: contrato de trabalho 13 | 14 | #### Trabalho Independente 15 | 16 | - [Trabalhador esporádico: ato isolado](#trabalhador-esporádico-ato-isolado) 17 | - [Trabalhador independente / empresário em nome individual](#trabalhador-independente-empresário-em-nome-individual) 18 | - EIRL: Estabelecimento Individual de Responsabilidade Limitada 19 | 20 | #### Sociedade 21 | 22 | - [LDA: Sociedade por quotas](#lda-sociedade-por-quotas) 23 | - [SA: Sociedade anónima](#sa-sociedade-anónima) 24 | 25 | 26 | 27 | 28 | 29 | 30 | ### Impostos directos em Portugal: 31 | 32 | #### Sobre o rendimento 33 | - [IRS: Imposto sobre o Rendimento das Pessoas Singulares](#irs-imposto-sobre-o-rendimento-das-pessoas-singulares) 34 | - [IRC: Imposto sobre o Rendimento das Pessoas Coletivas](#irc-imposto-sobre-o-rendimento-das-pessoas-coletivas) 35 | - SS: Segurança Social 36 | 37 | #### Sobre as vendas 38 | - [IVA: Imposto sobre o Valor Acrescentado](#iva-imposto-sobre-o-valor-acrescentado) 39 | - [IMT: Imposto Municipal sobre as Transmissões Onerosas de Imóveis](#imt-imposto-municipal-sobre-as-transmissões-onerosas-de-imóveis) 40 | 41 | #### Sobre a propriedade 42 | - [IMI: Imposto Municipal sobre Imóveis](#imi-imposto-municipal-sobre-imóveis) 43 | - [IUC: Imposto Único de Circulação](#iuc-imposto-Único-de-circulação) 44 | 45 | #### Sobre as transmissões (heranças) 46 | 47 | - [Imposto de selo](#imposto-de-selo) 48 | 49 | 50 | 51 | 52 | 53 | 54 | ### FAQ: 55 | 56 | - [Fatura](#fatura) 57 | - [CAE: Classificação Portuguesa das Actividades Económicas](#cae-classificação-portuguesa-das-actividades-económicas) 58 | - [IES: Informação Empresarial Simplificada](#ies-informação-empresarial-simplificada) 59 | - [IAS: Indexante dos Apoios Sociais](#valores-indexantes) 60 | - [SMN: Salário Mínimo Nacional](#valores-indexantes) 61 | - [Quanto custa um TOC?](#quanto-custa-um-toc) 62 | - [Notas sobre o preenchimento da declaração do IRS](#notas-sobre-o-preenchimento-da-declaração-do-IRS) 63 | - [Categorias de rendimentos e anexo onde devem ser declarados](#categorias-de-rendimentos-e-anexo-onde-devem-ser-declarados) 64 | - [Quanto tempo devo arquivar as declarações de impostos?](#quanto-tempo-devo-arquivar-as-declarações-de-impostos) 65 | 66 | 67 | 68 | 69 | 70 | 71 | ## Formas de trabalho em Portugal: 72 | 73 | ### Trabalhador esporádico: ato isolado 74 | 75 | - Constituição: não é necessário abrir atividade nas Finanças; 76 | - Documento fiscal: ato isolado. Pode ser utilizado mais de uma vez, mas se os atos e as entidades se repetirem ao longo dos anos (tornando o serviço previsível) *ou* se o valor do mesmo for superior a €25k, abrir atividade é obrigatório. 77 | - IRS: categoria B. 78 | - IVA: cobrança obrigatória e devolução ao Fisco até ao final do mês seguinte. 79 | - Segurança social: 80 | - Pagamento mensal facultativo. 81 | - O trabalhador ao emitir um ato isolado não perde o direito ao subsídio de desemprego. Suspende-o temporariamente (pelo mesmo valor recebido) e não o cancela definitivamente. 82 | 83 | 84 | 85 | 86 | 87 | 88 | ### Trabalhador independente / Empresário em nome individual 89 | 90 | - Quais as diferenças entre TI e ENI: 91 | - TI presta serviços da lista anexa ao CIRS, art.151. 92 | - ENI tem uma actividade do CAE; 93 | - Alguns detalhes no acesso à Segurança Social. 94 | - Responsabilidade sobre o património individual: total. 95 | - Constituição: abertura de atividade nas Finanças sem capital inicial. 96 | - Encerramento: presencialmente ou através do site da AT. 97 | - Documento fiscal: fatura ou recibo verde. 98 | - TOC: só é obrigatório se houver contabilidade organizada. 99 | - IRS: categoria B. 100 | - Regime de cálculo IRS: 101 | - Simplificado, se o volume de vendas for inferior a €200k. 102 | - Dispensado de TOC e IES. 103 | - Assume-se uma margem de 75% de rendimento colectável sobre os *serviços* e 15% sobre as *vendas*. As despesas não são (até 2017 pelo menos) consideradas ao contrário do que acontece com a contabilidade organizada. 104 | - Contabilidade organizada, por opção ou volume de vendas superior a €200k. 105 | - Obrigatório TOC e IES. 106 | - O cálculo do rendimento segue as regras do CIRC mas com limitação dos custos que se podem considerar. Regra geral, quanto maior o negócio e sempre que os custos forem superiores a 25% dos rendimentos será proveitoso escolher este regime. 107 | - Pagamento adiantado IRS: 108 | - Retenções na fonte: 109 | - Quem faz: quem recebe mais de €10k anuais e passe recibos a entidades com contabilidade organizada. 110 | - Quanto: 25% (atividades no CIRS, art.151). Taxas reduzidas (CIRS, art.101): 20%, 16.5% e 11.5% (prestação serviços por ENIs). 111 | - Pagamentos por conta: 112 | - Quem está sujeito: isento nos três primeiros anos. Após esta data poderá ser notificado pelo Fisco (CIRS, art.102) 113 | - Quanto: valor indicado na nota de liquidação do IRS do *penúltimo* ano. 114 | - Quando: 3 pagamentos anuais (Julho, Setembro e Dezembro). 115 | - IVA: 116 | - Opcional. Cobrança obrigatória caso tenha contabilidade organizada ou rendimentos superiores a €10k no ano anterior. 117 | - Declaração trimestral (ou mensal para rendimentos superiores a €500k) 118 | - Segurança Social: 119 | - Pagamento mensal obrigatório (excepto acumule c/ trabalho dependente c/ montante mínimo de um [IAS](#valores-indexantes) e não tenha rendimento da categoria B superior a 4 IAS) 120 | - Quem possui contabilidade organizada(?), a partir de 2019, em Janeiro, Abril, Julho e Outubro deverá declarar à SS os rendimentos obtidos no trimestre anterior para apuramento da prestação a pagar no trimestre seguinte. [Exemplo](https://www.dropbox.com/s/23thixqodz9fsao/V%C3%ADdeo%20-%20Exemplo%20TI%201.pdf?dl=0). 121 | - Baixa médica após 30 dias. 122 | - Acesso a subsidio de desemprego após 2 anos se houver: 123 | - cessação de atividade (só ENIs). (DL.12/2013) 124 | - 80% da atividade numa só entidade (só Trab. Independentes). 125 | 126 | 127 | 128 | 129 | 130 | 131 | ### LDA: Sociedade por Quotas 132 | 133 | - Nas sociedades por quotas, a seguir ao nome escolhido para a mesma, acrescenta-se: 134 | - *Unipessoal Lda* se houver só um sócio. 135 | - *Lda* se houver vários sócios. 136 | - Responsabilidade sobre o património individual: limitada. 137 | - Constituição: nova entidade jurídica criada na Empresa na Hora. Capital social mínimo de 1€. Cada sócio fica com uma quota da sociedade que lhe confere o direito a uma parte dos lucros e que poderá vender posteriormente (com os outros sócios a terem o direito de preferencia). 138 | - TOC: obrigatório. 139 | - IRC. 140 | - RCBE (Registro Central do Beneficiário Efectivo) 141 | - Segurança Social: gerentes com acesso a subsidio de desemprego após 2 anos se houver cessação de atividade. (DL.12/2013) 142 | 143 | 144 | 145 | 146 | 147 | 148 | ### SA: Sociedade Anónima 149 | 150 | - Forma jurídica burocráticamente exigente para negócios de grande dimensão e que requiram muito financiamento. 151 | - Constituição: nova entidade jurídica criada na Empresa na Hora. Capital social mínimo de €50k dividido por ações de igual valor. Mínimo 5 sócios (ou um único sócio, se este for uma sociedade). 152 | - Responsabilidade sobre o património individual: limitada ao valor das acções que possui. 153 | - TOC: obrigatório. 154 | - IRC. 155 | 156 | 157 | 158 | 159 | 160 | 161 | ## Impostos directos em Portugal: 162 | 163 | ### IRS: Imposto sobre o Rendimento das Pessoas Singulares 164 | 165 | - Quem está sujeito: [rendimentos](#categorias-de-rendimentos-e-anexo-onde-devem-ser-declarados) obtidos em território português por pessoas singulares (residentes ou não-residentes). 166 | 167 | - Quanto: 168 | - residentes habituais em território português. (Escalões 2024 - valores arredondados) 169 | 170 | ESCALÕES: TAXA TAXA MÉDIA 171 | Até €7,7k: 13.25% 13.25% 172 | Entre €7.7k e 11.6k: 18% 14.85% 173 | Entre €11.6k e 16.5k: 23% 17.25% 174 | Entre €16.5k e 21.3k: 26% 19.24% 175 | Entre €21.3k e 27.1k: 32.75% 22.14% 176 | Entre €27.1k e 39.8k: 37% 26.86% 177 | Entre €39.8k e 52k: 43.5% 30.77% 178 | Entre €52k e 81.2k: 45% 35.89% 179 | Superior a 81,2k: 48% 180 | 181 | - residentes não-habituais no últimos 5 anos (válido nos 10 anos seguintes).[^1] 182 | 183 | Rendimentos obtidos em Portugal: 20% (sem direito a deduções!) 184 | Rendimentos provenientes de outros paises: 0% 185 | 186 | - Atenuantes fiscais.[^2] 187 | 188 | - Quando: 2º trimestre (IRS do ano anterior). [Notas sobre o preenchimento da declaração do IRS](#notas-sobre-o-preenchimento-da-declaração-do-IRS). 189 | 190 | 191 | 192 | 193 | 194 | 195 | ### IRC: Imposto sobre o Rendimento das Pessoas Coletivas 196 | 197 | - Quem está sujeito: rendimentos (incluindo os obtidos fora do país) obtidos por pessoas coletivas com sede (com ou sem estabelecimento estável) em território português. 198 | - Quanto: Taxa IRC + Derrama (cobrada pelos municípios portugueses c/ máx 1.5% e revista anualmente. [Valores p/ 2022](https://info.portaldasfinancas.gov.pt/pt/informacao_fiscal/legislacao/instrucoes_administrativas/Documents/Oficio_circulado_20237_2022.pdf)) 199 | 200 | Taxas IRC (2022): 201 | 21% - Continente 202 | 14.7% (Desconto de 30%) - Madeira 203 | 14.7% (Desconto de 30%) - Açores 204 | 5% - Offshore da Madeira (até 2027) 205 | (PMEs: taxa reduzida nos primeiros €15k) 206 | 207 | - Atenuantes fiscais. [^3] 208 | 209 | - Forma geral de cálculo: contabilidade organizada (Com volume de negócios inferior a €200k anuais pode optar pelo regime simplicado). 210 | 211 | 212 | 213 | 214 | 215 | 216 | ### IVA: Imposto sobre o Valor Acrescentado 217 | 218 | - Quem está sujeito: 219 | - Sociedades e Trabalhadores Esporádicos (Ato isolado). 220 | - ENIs / Trab. Independentes com volume de negócios superior a €10k no ano anterior *ou* por opção *ou* no regime de contabilidade organizada. 221 | - Nota: algumas actividades estão isentas de IVA (ver CIVA). 222 | - Quando: declaração até dia 20 (e pagamento até dia 25) do segundo mês seguinte ao trimestre (ou mês - no regime mensal) a que dizem respeito os serviços. 223 | 224 | 225 | 226 | 227 | 228 | 229 | ### IMT: Imposto Municipal sobre as Transmissões Onerosas de Imóveis 230 | 231 | - Quem está sujeito: comprador do imóvel. 232 | - [Quanto](https://www.doutorfinancas.pt/simulador-imt): depende do valor e finalidade da compra (habitação permanente ou não). 233 | 234 | 235 | 236 | 237 | 238 | 239 | ### IMI: Imposto Municipal sobre Imóveis 240 | 241 | - Quem está sujeito: proprietários e usufrutuários de imóveis, a 31 de dezembro do ano a que o mesmo respeitar. 242 | - Quanto: 243 | 244 | prédios rústicos: 0,8% sobre o valor patrimonial tributário (VPT); 245 | prédios urbanos: 0,4% a 0,8% sobre o VPT; 246 | prédios urbanos avaliados 'recentemente': 0,2% a 0,5% sobre o VPT. 247 | 248 | - Isenção de IMI: 249 | - devido a baixos rendimentos e VPT. 250 | - após a compra das primeiras duas HPPs (habitação própria e permanente) e solicitada nos 60 dias seguintes. 251 | 252 | - Quando: Maio (tranches ao longo do ano para valores elevados). 253 | 254 | 255 | 256 | 257 | 258 | 259 | ### IUC: Imposto Único de Circulação 260 | 261 | - Quem está sujeito: proprietários de veículos motorizados terrestre. 262 | - Quanto: varia segundo a cilindrada e ano de matrícula do veículo. 263 | - Quando: anualmente até ao final do mês de aniversário da matrícula do veículo. 264 | 265 | 266 | 267 | 268 | 269 | 270 | ### Imposto de selo 271 | 272 | Taxa sobre as transmissões (heranças e doações). Regra geral: 273 | 274 | - Isenção para conjuges, ascendentes e descendentes apesar da obrigação de declarar os bens ao fisco (Modelo 1 do Imposto de Selo). 275 | - 10% para outros herdeiros. 276 | - Nos imóveis, acresce uma taxa de 0,8%, liquidada inclusivamente pelos herdeiros considerados isentos(?). 277 | 278 | 279 | 280 | 281 | 282 | 283 | ## FAQ: 284 | 285 | ### Fatura 286 | 287 | - Quando emitida em formato electrónico, deve ter um certificado seguro, de forma a garantir a autenticidade. Se não for possível, deve ser enviada em papel, assinada e carimbada. 288 | - O comerciante deverá registrar as faturas na AT até dia 12 do mês seguinte. 289 | 290 | 291 | 292 | 293 | 294 | 295 | ### CAE: Classificação Portuguesa das Actividades Económicas 296 | 297 | Códigos de classificação específicos de empresas, segundo o ramo de atividade, para controle fiscal e estatistico. 298 | 299 | 300 | 301 | 302 | 303 | 304 | ### IES: Informação Empresarial Simplificada 305 | 306 | - Quem entrega: 307 | - Sociedades, EIRLs; 308 | - ENIs/Trab. Independentes com Contabilidade Organizada. 309 | - Quando: anualmente até 15 Julho. 310 | - Quanto: €85 até 5 dias úteis após a entrega. 311 | 312 | Intercâmbio internacional de informações sobre o IVA: [VIES](https://ec.europa.eu/taxation_customs/vies/vatRequest.html?locale=pt) 313 | 314 | 315 | 316 | 317 | 318 | 319 | ### Valores indexantes 320 | 321 | - IAS (Indexante dos Apoios Sociais) 2023 = 480€ 322 | - SMN (Salário Mínimo Nacional) 2023 = 760€ x 14 meses 323 | 324 | 325 | 326 | 327 | 328 | 329 | ### Quanto custa um TOC? 330 | 331 | Valores *referência* para contabilidade: 332 | - ENI no regime simplificado com pouca faturação: 250€/trimestre. 333 | - Sociedade Unipessoal com pouca faturação: 150€/mês. 334 | 335 | 336 | 337 | 338 | 339 | 340 | ### Notas sobre o preenchimento da declaração do IRS 341 | 342 | - A declaração de IRS não é obrigatória com baixos rendimentos. No entanto ter uma prova de rendimentos simplifica diversas situações. 343 | - Anexo B: rendimentos brutos de trabalho independente sem IVA. 344 | - Anexo SS: *regra geral* é obrigatório para quem tem rendimentos da categoria B. Excepção para quem só passou atos isolados. 345 | - Anexo H: para apresentar valores de faturas divergentes do fornecido pelo fisco. 346 | - Deduções especificas (4104€) para categoria A/H e B (por opção e >80% à mesma entidade. Favorável para rendimentos até 10K anuais) 347 | - Mínimo de existência para categoria A/H e B (excepto comerciantes e agricultores) 348 | - Como declarar rendimentos de fundos de investimento no IRS? 349 | - Fundos nacionais: desde 2015 é efectuada retenção na fonte de 28% sobre os rendimentos obtidos com fundos nacionais. Assim não é necessário declarar excepto opte pelo englobamento. 350 | - Fundos estrangeiros: declaração obrigatória no anexo J segundo o método FIFO. [Mais informação](http://www.big.pt/pdf/irs/faqs_irs_2017.pdf). 351 | 352 | 353 | 354 | 355 | 356 | 357 | ### Categorias de rendimentos e anexo onde devem ser declarados 358 | 359 | Anexo A: Trabalho dependente e pensões 360 | Anexo B: Empresariais e profissionais 361 | Anexo C: Empresariais e profissionais (contabilidade organizada) 362 | Anexo E: Capitais 363 | Anexo F: Prediais 364 | Anexo G: Incrementos patrimoniais (mais-valias) 365 | Anexo H: Beneficios fiscais e deduções 366 | Anexo J: Rendimentos obtidos no estrangeiro 367 | Anexo L: Residente não habitual 368 | 369 | 370 | 371 | 372 | 373 | 374 | ### Quanto tempo devo arquivar as declarações de impostos? 375 | 376 | IRS: 4 anos (CIRS, art.128). Com contabilidade organizada de rendimentos categoria B: 12 anos (CIRS, arts.117/118). 377 | IRC: 12 anos. 378 | IVA: 12 anos (10 anos para rendimentos categoria B obtidos por pessoas singulares sem contabilidade organizada). 379 | 380 | 381 | 382 | 383 | 384 | 385 | [^1]: Tax regime for [non residents](http://www.livinginportugal.com/en/moving-to-portugal/tax-regime-for-non-habitual-residents/). More [info](https://paulomarques-saberfazer-fazersaber.blogs.sapo.pt/regime-fiscal-dos-ex-residentes-para-61945) 386 | [^2]: Despesas de saúde, educação, etc. Guardar apenas as facturas inseridas *manualmente* na AT (caso o comerciante não o faça). 387 | [^3]: Criação de emprego jovem, quotizações empresariais, custos ligados ao combate à desertificação e ao desenvolvimento de zonas mais desfavoráveis e deduções consideradas pelo estatuto de mecenato, etc. 388 | 389 | 390 | <!-- 391 | ## IVA de Caixa 392 | 393 | Em 2014 chegou um novo regime de contabilidade opcional para as empresas portuguesas – o IVA de caixa. 394 | O que é? 395 | É um regime que permite que as empresas entreguem o valor do IVA ao Estado apenas depois da cobrança das faturas emitidas aos clientes. É facultativo e estruturado de forma simplificada. 396 | Quem pode aderir ao regime? 397 | Todas as PMEs que tenham um volume de negócios inferior a 500 mil euros e com atividade aberta há mais de um ano. 398 | Quem não pode aderir? 399 | O regime não é aplicável a importações, exportações e atividades conexas, transmissões e aquisições intracomunitárias de bens, prestações intracomunitárias de serviços, operações em que o adquirente é devedor do imposto, e ainda operações em que os sujeitos passivos têm relações especiais. 400 | Quem são as empresas que mais podem beneficiar do regime? 401 | Empresas com prazos de recebimento maiores que os prazos de pagamento – reduzindo-se, através deste sistema, o impacto na tesouraria e os custos associados à entrega do IVA ao Estado. 402 | Como aderir ao sistema? 403 | Para aderir ao regime no ano de 2014 e seguintes, as empresas devem comunicar a decisão à Autoridade Tributária e Aduaneira (AT), por via eletrónica, no Portal das Finanças, até 31 de outubro de cada ano. As empresas aderentes terão de permanecer no novo regime por dois anos. 404 | Faturas 405 | As faturas devem ser emitidas numa série especial e conter a menção “IVA – regime de caixa”. 406 | 407 | ## Contratação de Recursos Humanos 408 | 409 | Regimes para contratar funcionários/colaboradores 410 | Existem vários regimes de contratos de trabalho que variam de acordo com o tempo dispendido pelo funcionário/colaborador ou outras condições. Segundo a Lei nº7/2009, poderá propor um dos seguintes: 411 | - Contrato de trabalho a termo certo/incerto/sem termo; 412 | - Contrato-promessa de trabalho; 413 | - Contrato para prestação subordinada de teletrabalho; 414 | - Contrato de trabalho com trabalhador estrangeiro; 415 | - Contrato de trabalho em comissão de serviço; 416 | - Contrato de trabalho com pluralidade de empregadores; 417 | - Contrato de trabalho a tempo parcial ou contrato de pré-reforma. 418 | 419 | #### Formação 420 | De acordo com a Lei nº7/2009, o empregador é obrigado a oferecer 35 horas de formação anuais. Na prática, esta formação abrange um número limitado e determinado de trabalhadores no mesmo ano, e não todos os funcionários da empresa. 421 | 422 | #### Horários 423 | Nos princípios da lei, em Portugal, o período máximo de trabalho semanal é de 40 horas e diário de oito horas, tendo o trabalhador o direito a pelo menos um dia de folga (semanal). 424 | Para não sobrecarregar os trabalhadores, existe um período de descanso definido para que estes não exerçam funções por mais de cinco horas seguidas. Este “intervalo” não deve ser inferior a uma hora ou superior a duas. De um modo geral, o trabalhador tem direito a um período de descanso de, pelo menos, onze horas seguidas entre dois períodos diários de trabalho consecutivos. 425 | Compete ao empregador determinar o horário de trabalho do trabalhador, dentro dos limites da lei, designadamente do regime de período de funcionamento aplicável. 426 | 427 | #### Tipos de Rescisão de Contratos de Trabalho 428 | 429 | Um contrato de trabalho é aquele pelo qual uma pessoa se obriga, mediante retribuição, a prestar uma atividade a outrem, sob a autoridade desta. Desta forma, existem várias formas de terminar um contrato de trabalho, havendo em várias situações direitos e deveres a cumprir, tanto da parte do empregador como do trabalhador. 430 | a) Caducidade (termo do contrato, reforma do trabalhador ou impossibilidade de o trabalhador executar a sua tarefa ou de o empregador admitir); 431 | b) Revogação por Mútuo Acordo (quando a empresa e o funcionário alcançam um acordo para cessar o contrato) 432 | c) Rescisão de Contrato pelo empregador por justa causa (comportamento culposo do trabalhador que levará a despedimento e nenhuma indemnização); 433 | d) Despedimento Coletivo (por iniciativa do empregador, realizado no período de três meses a pelo menos dois ou cinco trabalhadores); 434 | e) Despedimento por Extinção de Posto de Trabalho (sobretudo, movida por motivos de ordem económica); 435 | f) Despedimento por Inadaptação (por ex: erros contínuos que promovem riscos para a segurança); 436 | g) Rescisão de Contrato por iniciativa do Trabalhador com justa causa (inclui, portanto, indemnização e direito a subsídio de desemprego); 437 | h) Denúncia pelo Trabalhador (término de contrato parte do trabalhador, independente da justa causa, mediante aviso com antecedência mínima de 30 dias). 438 | 439 | #### Como elaborar um Contrato de Trabalho 440 | 441 | Os diplomas mais importantes a levar em conta na sua elaboração são o Código do Trabalho e a Lei nº 85, 2009 de 27 de agosto. 442 | O que deverá constar obrigatoriamente no contrato 443 | - Identificação das partes (empresa e funcionário); 444 | - Local de Trabalho; 445 | - Horários de Trabalho; 446 | - Funções a desempenhar pelo contratado; 447 | - Valor da remuneração e outros prémios; 448 | - Data do documento e data de entrada em vigor; 449 | - Indicação dos prazos de aviso prévio para denúncia ou rescisão de contrato. 450 | - Indicação dos prazos de período experimental; 451 | 452 | #### Quanto custa um trabalhador à empresa 453 | 454 | - Salário: Para efeitos de exemplo, assumimos que o referido trabalhador tomará partido de um salário bruto de 1200 €. Ora para calcular o valor de mobilização necessário à empresa anualmente no que respeita a salários deverá multiplicar este valor por 14 (meses) e dividi-lo posteriormente por 12, apurando assim o seu custo médio mensal e cada um dos subsídios de férias e Natal (o mesmo cálculo será feito para a SS e Seguro de Acidentes de Trabalho). 455 | No exemplo: 1.200€ x 14 = 16.800€ / 12 = 1.400€ 456 | 457 | - Contribuições para a Segurança Social: No total, a TSU corresponde a 34% do salário bruto, sendo que cabe às empresas pagar uma taxa de 23% e aos trabalhadores pagam os restantes 11%. 458 | No exemplo: 1.200€ x 23% = 276€ 459 | 276€ x 14 = 3.864€ / 12 = 322€ 460 | Seguro de Acidentes de Trabalho 461 | Obrigatório para todas as empresas, independentemente da dimensão e número de trabalhadores e, em média, pode rondar 1% dos rendimentos globais a segurar. 462 | No exemplo: 1.200€ x 1% = 12€ 463 | 12€ x 14 = 168€ / 12 = 14 464 | 465 | - Subsídio de Alimentação: O limite de isenção de incidência de IRS e de TSU do subsídio de refeição depositado em conta juntamente com o ordenado é de 4,27 euros por dia, enquanto o limite daquele pago sob a forma de cartão bancário pré-pago (cartões refeição) é de 6,83 euros antes de ser sujeito a impostos. Para chegarmos ao valor anual que respeita este subsídio, apenas necessitamos de multiplicar uma média de 21 dias de subsídio de alimentação por mês durante 11 meses (aqui não entra o mês de férias). 466 | No exemplo (depósito conjunto com ordenado): 467 | 4,27€ x 21 dias úteis = 89,67€ x 11 meses = 986,37€ / 12 = 82,20€ 468 | No exemplo (cartão refeição): 469 | 6,83€ x 21 dias úteis = 143,43€ x 11 meses = 1.577,73€ / 12 = 131,48€ 470 | 471 | - Custos complementares: 472 | Existem custos extra que deverão ser levados em conta, como aqueles afetos a formação, medicina no trabalho, auditorias, etc. 473 | 474 | - Contas finais: 475 | Custo médio mensal (considerando o uso de cartão de alimentação): 1.867,48€ 476 | Custo anual total: 22.409,76€ 477 | 478 | ## Acidente de Trabalho 479 | 480 | Um acidente de trabalho é todo e qualquer acidente que se verifique no local e no tempo de trabalho, incluindo no trajeto de ida ou regresso ou noutros locais diretamente relacionados e do qual resulte lesão corporal, perturbação funcional ou doença que provoque redução na capacidade de trabalho ou de ganho ou mesmo a morte. 481 | Considera-se como acidente de trabalho, o ocorrido: 482 | 1. No trajeto, normalmente utilizado e durante o período ininterrupto habitualmente gasto, de ida e de regresso entre: 483 | a) o local de residência e o local de trabalho; 484 | b) quaisquer dos locais já referidos e o local de pagamento da retribuição, ou o local onde deva ser prestada assistência ou tratamento decorrente de acidente de trabalho; 485 | c) o local de trabalho e o de refeição; 486 | d) o local onde, por determinação da entidade empregadora, o trabalhador presta qualquer serviço relacionado com o seu trabalho e as instalações que constituem o seu local de trabalho habitual; 487 | 2. Quando o trajeto normal tenha sofrido interrupções ou desvios determinados pela satisfação de necessidades atendíveis do trabalhador, bem como por motivo de força maior ou caso fortuito; 488 | 3. No local de trabalho, quando no exercício do direito de reunião ou de atividade de representação dos trabalhadores; 489 | 4. Fora do local ou tempo de trabalho, na execução de serviços determinados ou consentidos pela entidade empregadora; 490 | 5. Na execução de serviços espontaneamente prestados e de que possa resultar proveito económico para a entidade empregadora; 491 | 6. No local de trabalho, quando em frequência de curso de formação profissional ou, fora, quando exista autorização da entidade empregadora; 492 | 7. Durante a procura de emprego nos casos de trabalhadores com processo de cessação de contrato de trabalho em curso; 493 | 8. No local de pagamento da retribuição; 494 | 9. No local onde deva ser prestada qualquer forma de assistência ou tratamento decorrente de acidente de trabalho. 495 | Um acidente de trabalho deve sempre ser comunicado à Autoridade para as Condições do Trabalho, no prazo de 24 horas após o acidente. 496 | 497 | 498 | ## Declaração de Remunerações 499 | 500 | A declaração de remunerações (DR) é um documento onde “constam todas as quantias pagas ao trabalhador que são objeto de descontos e respetivas taxas contributivas aplicadas”, segundo a Segurança Social. 501 | A entrega da DR é uma obrigação mensal das entidades empregadoras e desde 2013 que a entrega é feita através de um único canal de acesso, denominado Declaração Mensal de Remunerações (DMR), que permite às entidades empregadoras procederem, num mesmo momento, à entrega das Declarações de Remunerações à Segurança Social e da Declaração Mensal de Remunerações-AT à Autoridade Tributária e Aduaneira. 502 | Estas obrigações declarativas podem ser cumpridas online, quer através do portal das Finanças, quer através do portal da Segurança Social, devendo as entidades empregadoras efetuar a entrega das Declarações a cada uma das entidades. A entrega deve ser efetuada até ao dia 10 do mês seguinte ao do pagamento ou colocação à disposição dos rendimentos do trabalho dependente, e eventuais erros devem ser corrigidos no prazo de 30 dias. 503 | 504 | 505 | ## Portugal 2020 506 | 507 | Sucessor do Quadro de Referência Estratégica Nacional (QREN), o Portugal 2020 é um acordo entre Portugal e a Comissão Europeia que enquadrará os apoios estruturais da União Europeia para o desenvolvimento económico do nosso país entre 2014 e 2020, tendo como focos de atividade prioritária o setor privado e o emprego. Portugal vai receber 25 mil milhões € e definiu os Objetivos Temáticos para estimular o crescimento e a criação de Emprego, as intervenções necessárias para os concretizar e as realizações e os resultados esperados com estes financiamentos. 508 | Há 5 grandes prioridades: estimular a produção de bens e serviços transacionáveis, internacionalização da economia e a qualificação do perfil de especialização da economia portuguesa; reforçar o investimento na educação e em iniciativas dirigidas à empregabilidade; integração das pessoas em risco de pobreza e combate à exclusão social; promoção da coesão e competitividade territoriais; apoio ao programa da reforma do Estado contribuindo para a racionalização, modernização e capacitação institucional da Administração Pública. 509 | --> -------------------------------------------------------------------------------- /on-toolbox.md: -------------------------------------------------------------------------------- 1 | # On digital tools 2 | 3 | (updated: 2025-04-13) 4 | 5 | function: TOOLS I USE // alternatives I may use or check if necessary 6 | 7 | ### generalist 8 | 9 | - os: WIN7 + IOS + ANDROID // debian - chromeos 10 | - antivirus: AVAST 11 | - launcher: LISTARY5 // wox[go] - cerebroapp[js] 12 | - browser: CHROME + SAFARI + FFDEV // [arc](https://arc.net/search) 13 | - llm: DEEPSEEK + CHATGPT + GROK + CLAUDE + QWEN + LLAMA + GEMINI // [leaderboard](https://lmarena.ai/?leaderboard) - [tools](https://aicode.danvoronov.com/tools) 14 | - chat: SIGNAL + WHATSAPP // telegram - [texts](https://texts.com) 15 | - mail: GMAIL // protonmail - tutanota 16 | - web search // google 17 | - cloud // gdrive 18 | 19 | ### office 20 | 21 | - notes: SUBLIME3 // [zen journal](https://thezenjournal.com) 22 | - writing: SUBLIME3 + WORD2010 23 | - translator: LLM // [wiki translator](https://wikitranslator.github.io) 24 | - research: EXCEL2010 // [zotero](https://www.zotero.org) - docfetch - [overleaf](https://www.overleaf.com) 25 | - converter // pandoc - [epub.to](https://epub.to) 26 | - calc: EXCEL2010 // [numbr](https://numbr.dev) 27 | - accounting: EXCEL2010 + FACTURAMA // [plain text](https://plaintextaccounting.org) 28 | - presentations // [descript](https://www.descript.com) 29 | - flowcharts // [excalidraw](https://excalidraw.com) - [tldraw](https://www.tldraw.com) - [autodraw](https://www.autodraw.com) - [nomnoml](https://nomnoml.com) - [minimator](https://minimator.app) 30 | - proj management // trello - [taiga](https://www.taiga.io) - [self hosted kanban](https://personalkanban.js.org) - [taskjuggler](https://taskjuggler.org) 31 | - forms & mail lists: SUBSTACK // gdocs - mailchimp 32 | - automate // [nimble text](https://nimbletext.com) - [blaze](https://blaze.today) - ahk 33 | - other: [justdeleteme](https://backgroundchecks.org/justdeleteme) - [flameshot](https://flameshot.org) 34 | 35 | ### dev 36 | 37 | - text editor: SUBLIME3 // vscode & cursor - zed - [hackerman](https://hackerman.ai) 38 | - vibe coding // bolt - devin - [replit](https://replit.com) - [retool](https://retool.com) 39 | - cloud // [vscode.dev](https://vscode.dev) - gitpod 40 | - snippets // [jsfiddle](https://jsfiddle.net) - [gistdumber](https://gist.dumber.app) 41 | - terminal: CONEMU // vscode - hyper.is 42 | - repl // node - ruby - python - janet 43 | - domains: NAMECHEAP // [namelantern](https://namelantern.com) 44 | - hosting: 45 | - cms: TUMBLR // shopify 46 | - static: NETLIFY // github - [jamstack](https://jamstack.org/generators) 47 | - app VERCEL // google app engine - firebase - [fly.io](https://fly.io) 48 | - analytics: [GOATCOUNTER](https://www.goatcounter.com) // [counter.dev](https://counter.dev) - [fathom](https://usefathom.com) 49 | - apis // twilio - [open meteo](https://open-meteo.com/en/docs) - [public apis](https://github.com/public-apis/public-apis) 50 | - ux & frontend // figma - [moqups](https://moqups.com) - [marvelapp](https://marvelapp.com) - [framer](https://www.framer.com) - [penpot](https://penpot.app) - [polypane](https://polypane.app) 51 | - mac only // [sketch](https://www.sketch.com) - [kiteapp](https://kiteapp.co) - [paintcodeapp](https://www.paintcodeapp.com) 52 | 53 | ### graphics 54 | 55 | - cad: AUTOCAD2012[lisp] // revit - archicad - [hestus](https://www.hestus.co) - [zoo.dev](https://zoo.dev) 56 | - 3d & render: SKETCHUP17[rb2.2] // blender[py] - D5render - lumion - [rerenderai](https://rerenderai.com) 57 | - raster & vectors: PHOTOSHOP6[js] // firefly - [affinity](https://affinity.serif.com) - [photopea](https://www.photopea.com) - [dpaint](https://www.stef.be/dpaint) - [geometrize](https://www.geometrize.co.uk) - [photo animator](https://www.myheritage.com.pt/deep-nostalgia) - [colorize pics](https://palette.fm/color/filters) - [background remover](https://www.photoroom.com/background-remover) - code pics [1](https://carbon.now.sh)/[2](https://chalk.ist) 58 | - image collection: LOCAL + PINTEREST // unsplash - pexels - dribbble - behance 59 | - other // [qgis](https://qgis.org) - [gmaps area calculator](https://www.daftlogic.com/projects-google-maps-area-calculator-tool.htm#) 60 | 61 | ### downtime 62 | 63 | - music: YOUTUBE // [1by1_mp3](https://mpesch3.de/1by1.html) - [music for programming](https://musicforprogramming.net) - radio [1](http://radio.garden)/[2](https://app.radiooooo.com) - [nature sounds](https://rainbowhunt.com) 64 | - books [1](https://pt.annas-archive.org)/[2](https://www.gutenberg.org/ebooks/search/?sort_order=release_date)/[3](https://marhamilresearch4.blob.core.windows.net/gutenberg-public/Website/browse.html)/[4](https://openlibrary.org) 65 | - readers: 66 | - feeds: FEEDLY 67 | - twitter X // nitter 68 | - reddit // [reddtok](https://reddtok.vercel.app) 69 | - wikipedia // [wikitok](https://wikitok.vercel.app) 70 | - hn: [daily top10](https://www.daemonology.net/hn-daily) // paper [1](https://hackerherald.com)/[2](https://www.wolfgangfaust.com/project/paper-hn) - [feeds](https://hnrss.github.io) - [summary](https://hackyournews.com) - analysis [1](https://deephn.org)/[2](https://hn-summary.github.io)/[3](https://top-hn-stories.adhikasp.my.id) - [alt frontend](https://www.modernhn.com) 71 | - srs // anki2 72 | - weather: WINDGURU // [windy](https://www.windy.com) - [lightnings](https://www.blitzortung.org/en/live_lightning_maps.php) 73 | - travel: 74 | - lodge: AIRBNB + BOOKING 75 | - flights: SKYSCANNER // [flight connections](https://www.flightconnections.com) - [google flights](https://www.google.com/travel/flights) - [kiwi](https://www.kiwi.com) - [going](https://www.going.com) - [flybnb](https://flybnb.io) 76 | - maps // trails [1](https://trailrouter.com)/[2](https://www.wikiloc.com)/[3](https://veloplanner.com) - [flightradar](https://www.flightradar24.com) - boatradar [1](https://www.marinetraffic.com)/[2](https://www.vesselfinder.com) 77 | - osm // randomstreetview [1](https://randomstreetview.com)/[2](https://neal.fun/wonders-of-street-view) - instantstreetview [1](https://www.instantstreetview.com)/[2](https://showmystreet.com) - virtual walks [1](https://www.citywalki.com)/[2](https://www.youtube.com/channel/UCBcVQr-07MH-p9e2kRTdB3A/videos)/[3](https://www.youtube.com/channel/UCQ-JKqNo_T0yoeDZff1y7Kw/videos)/[4](https://www.youtube.com/c/keeezi/videos)/[5](https://www.youtube.com/@Rambalac/videos)/[6](https://www.youtube.com/c/lylehsaxon/videos)/[7](https://www.youtube.com/c/ActionKid/videos)/[8](https://travel-remotely.netlify.app)/[9](https://www.youtube.com/c/RailCowGirl/videos)/[10](https://www.youtube.com/@ErikGrankvist/videos) 78 | - geoarbitrage // living costs [1](https://www.expatistan.com/cost-of-living)/[2](https://www.numbeo.com/cost-of-living)/[3](https://neilkakkar.com/salary-calculator-by-city.html) - [nomads](https://nomads.com) 79 | - other // [e-sims](https://www.monito.com/en/esim) - [trains](https://www.seat61.com) 80 | - fintech: REVOLUT + PAYPAL // n26 - swissquote - degiro 81 | - shopping // vetted.ai 82 | - gaming // [itch.io](https://itch.io) - [boardgamearena](https://pt.boardgamearena.com) - [playok](https://www.playok.com) 83 | - stats: [our world in data](https://ourworldindata.org) - collections [1](https://en.numista.com)/[2](https://en.ucoin.net)/[3](https://colnect.com/pt/stamps) - [plants](https://www.getanyplant.com/plants) 84 | - other: [taskrabbit](https://www.taskrabbit.com) -------------------------------------------------------------------------------- /on-trades.md: -------------------------------------------------------------------------------- 1 | # Trades 2 | 3 | ## Electricity 4 | 5 | - 1.15 KVA ~ 5 Amps (small apartment in PT during the 70s) 6 | - 3.45 KVA ~ 15 Amps (small apartment in PT) 7 | - 12 Amps when standby, 20 Amps when working (apollo 13) 8 | - 50 KVA (domestic limit from local authorities in PT) 9 | 10 | - [mobile solar power](https://www.mobile-solarpower.com) 11 | 12 | ## Mechanics 13 | 14 | - cars // [how a car works](https://www.howacarworks.com) - [animated engines](https://animatedengines.com) - [sizes](https://www.carsized.com) 15 | 16 | ## Sysadmin 17 | 18 | ### Domain settings on Github pages 19 | 20 | - It seems to be preferable to use the *www* subdomain instead of the apex domain. 21 | - On your domain provider advanced DNS tab, set: 22 | 23 | A record from @ to 185.199.108.153 24 | A record from @ to 185.199.109.153 25 | A record from @ to 185.199.110.153 26 | A record from @ to 185.199.111.153 27 | CNAME from www to yourdomain.extension 28 | 29 | ### Tumblr 30 | 31 | - [tumblr tags](https://tags.circumfluo.us) 32 | 33 | ### Linux distros 34 | 35 | Tested: 36 | 37 | - Mint (polished - 1G standby) 38 | - Manjaro (advanced / xfce - 750mb standby) 39 | - Lubuntu (fastest - 400MB standby) 40 | 41 | ## Hardware 42 | 43 | - [lowcost pcs](https://lowcostminipcs.com/) 44 | 45 | ## Design 46 | 47 | - architectural competitions: [pt](http://encomenda.oasrs.org/concursos)/[fi](https://www.safa.fi/kilpailut)/[si](https://zaps.si/?m_id=natecaji_aktualni)/[cz](https://cceamoba.cz/en) 48 | - design: [rules](https://www.vitsoe.com/gb/about/good-design) - [vietname](https://vietgd.com)- [computer](https://habr.com/en/post/437912) 49 | - [models shop](https://www.modulor.de/en) - [textures](https://www.textureking.com) 50 | 51 | ## Learn 52 | 53 | - [woodworking](https://www.youtube.com/c/ChrisSalomone1/videos) 54 | - music: lilybin - hacklily - abcjs - [ableton](https://learningmusic.ableton.com) 55 | - history: [1](https://www.youtube.com/c/OverSimplified/videos)/[2](https://www.youtube.com/@BrasaodeArmas/videos)/[3](https://www.youtube.com/@ImperiosAD/videos) 56 | - economy: [1](https://www.core-econ.org/the-economy/v1/book/text/0-3-contents.html) 57 | - 58 | - curiosidades: [1](https://www.youtube.com/user/iberethenorio/videos) 59 | 60 | ## Other 61 | 62 | - [instructions manuals](https://manuzoid.com) 63 | 64 | <!-- 65 | https://goperf.dev/ 66 | https://hilariusbookbinder.substack.com/p/the-average-college-student-today 67 | https://tim.blog/2025/01/13/the-no-book/ | https://tim.blog/2025/02/20/for-less-anxiety-and-more-life-treat-your-to-do-list-like-a-diner-menu/ 68 | https://seeinglogic.com/posts/visual-readability-patterns/ 69 | https://lifeweeks.app/ | https://blinpete.github.io/life-calendar | https://incoherency.co.uk/timeline | https://github.com/clairefro/obsidian-plugin-chronos 70 | https://webcurios.co.uk/ 71 | https://idx.dev/ 72 | https://font-tester.foxcraft.tech/ 73 | https://findpiclocation.com/ 74 | https://crawshaw.io/blog/programming-with-llms | https://harper.blog/2025/02/16/my-llm-codegen-workflow-atm/ | https://thebullshitmachines.com/ 75 | https://hn-wrapped.kadoa.com/galfarragem | https://www.gitpodcast.com/slowernews/hamster-system | https://star-history.com/ 76 | https://wd13.ca/quiz/ 77 | https://play.google.com/store/apps/details?id=np.com.njs.autophotos&hl=en_US&gl=US 78 | https://realtytrends.io/demo/map 79 | https://cascii.app/ | https://q.uiver.app/ 80 | https://cot.rs/ | https://tuono.dev/ | https://referencecollection.com/references/rust_reference.rs.html 81 | https://tweakcn.com/editor/theme | https://scrtwpns.com/mixbox/ | https://outsideir35.com/ | https://obsessjobs.com/ 82 | https://blog.daviddodda.com/how-i-automated-my-job-application-process-part-1 | https://uphunt.io/ | https://topjobstoday.com/ | https://weloveproduct.co/ | https://remotejobsly.com | https://www.unlistedjobs.com | https://chromewebstore.google.com/detail/linkedin-to-resume-by-cvg/bhdcmampnnhholkenaahdeaddmodmeem | https://www.levels.fyi 83 | https://en.wikipedia.org/wiki/Michel_Onfray 84 | https://entropicthoughts.com/haskell-procedural-programming 85 | https://graymirror.substack.com/p/4-principles-of-any-next-regime 86 | https://heyopenspot.com/ 87 | https://news.ycombinator.com/item?id=42832026 88 | https://jacksonpollock.org/ | https://paveldogreat.github.io/WebGL-Fluid-Simulation/ 89 | https://lite.xlwings.org/ 90 | https://taylor.town/5w | https://taylor.town/cheat-materials 91 | https://voids.blog/2025/02/14/breaking-infinitys-grip-the-finite-capacity-based-system/ 92 | https://writings.stephenwolfram.com/2024/10/on-the-nature-of-time/ 93 | https://www.artofmanliness.com/character/motivation-theories/ | https://www.artofmanliness.com/people/social-skills/the-ancient-art-of-saying-no-plutarch-s-guide-to-breaking-free-from-people-pleasing/ 94 | https://www.construction-physics.com/p/understanding-solar-energy 95 | https://www.figgie.com/ | https://speedwrite.com/ | https://getpickle.ai/ 96 | https://www.quantamagazine.org/mathematical-thinking-isnt-what-you-think-it-is-20241118/ | https://www.lostartoflogarithms.com/ | https://www.desmos.com/calculator?lang=pt-BR 97 | https://www.trymasterkey.com/ 98 | https://www.youtube.com/watch?v=EPVifrHSPEc -- (blockchain vs blockdag) 99 | https://roadmap.sh/ | https://www.codedex.io/ 100 | https://writingexamples.com/ | https://writewithharper.com/ 101 | https://hdo.app/ | https://pikashow.su/ 102 | https://fxtop.com/ | https://www.e-leiloes.pt/ 103 | https://walkkumano.com/koyabound/ | https://endtime-instruments.org/ | https://craigmod.com/ | https://www.nomad.pt/lider/claudia-santos/ 104 | https://github.com/anshulmittal712/habit-tracker | https://github.com/mnfst/manifest | https://github.com/nickjj/plutus 105 | https://fancyword.abi-countdown.de/ | https://tma.live/ | https://llplayer.com/ 106 | https://artifactguesser.com/ | https://www.kanjideck.com/ | https://memalign.github.io/m/spacetrader/index.html | https://steamtok.com/ 107 | https://iterraai.co.uk/ | https://www.co.dev/ | https://www.faststartup.dev/ | https://deepseek.edgeone.app/ | https://lovable.dev/ | https://metaschool.so/templates 108 | https://uiblocks.xyz/ | https://same.new/ | https://layoutit.com/ 109 | https://www.runningreality.org/projects/28 | https://learningsynths.ableton.com/ 110 | hardware: https://daylightcomputer.com/product 111 | astro + vercel + sveltekit | https://vanjs.org | https://nuejs.org/ 112 | https://eva.town | https://days.sonnet.io | https://hackerstations.com/setups/pcalves/ 113 | https://tinyawards.net/ 114 | https://ideaharbor.xyz 115 | https://www.techtalksweekly.io/p/100-most-watched-software-engineering 116 | 117 | 118 | [AU](https://www.realestate.com.au/buy) 119 | [BR](https://www.zapimoveis.com.br) 120 | [CZ](https://www.sreality.cz) 121 | [DE](https://www.immobilienscout24.de) 122 | [ES](https://www.idealista.com) 123 | [FI](https://www.etuovi.com) 124 | [GR](https://en.spitogatos.gr) 125 | [IT](https://www.idealista.it) 126 | [LT](https://www.remax.lt/paieska) 127 | [PL](https://www.otodom.pl) 128 | [PT](https://www.idealista.pt) 129 | [RU](https://www.cian.ru) 130 | [SE](https://www.hemnet.se) 131 | [UK](https://www.rightmove.co.uk) 132 | [other countries](https://www.similarweb.com/pt/top-websites/category/business-and-consumer-services/real-estate) 133 | [EU](https://homestra.com) 134 | 135 | - cheap: EU [1](https://www.instagram.com/cheappropertyeu)/[2](https://www.propertyunder20k.com)/[3](https://realting.com/property-for-sale/world?page=1&movemap-input=1&slug=property-for-sale&Estate%5Bgeo_id%5D=-1&Estate%5BminPrice%5D=5000&Estate%5BmaxPrice%5D=25000&Estate%5Bcurrency%5D=EUR&Estate%5Bx1%5D=-35.15625000000001&Estate%5By1%5D=-22.43134015636061&Estate%5Bx2%5D=61.34765625000001&Estate%5By2%5D=61.18562468142283&Estate%5Bzoom%5D=3&sort=price_usd) - ES [1](https://www.spainhouses.net/en/sale-houses-spain/cheap/lower-price.html)/[2](https://www.eyeonspain.com/spanish-property/for-sale/find-country/spain/apartments-and-flats,houses-and-villas,plots-land-and-ruins,mobile-and-log-homes?max-price=50000&orderby=price-ascending) - [IT](https://casea1euro.it) 136 | - [preços habitação PT](https://www.idealista.pt/media/relatorios-preco-habitacao) - [IVA 6% serviços imóveis p/ uso exclusivo hab](https://www.idealista.pt/news/financas/fiscalidade/2019/10/03/41051-iva-de-6-em-obras-apenas-para-imoveis-destinados-a-habitacao-esclarece-fisco) - [E-leilões](https://e-leiloes.pt)/[como funciona](https://www.economias.pt/e-leiloes) - [fazer escritura](https://casavo.com/pt/blog/como-fazer-escritura-imovel) 137 | 138 | ## Business models - examples 139 | 140 | - experiences: [the worst tours](https://theworsttours.weebly.com) - [trekking guides](https://andrewskurka.com) - [rent scenario](https://www.unchartedbooks.com/adventurers-club.php) - [restaurant & bed](https://www.brushlandeatinghouse.com) - [workaway](https://www.workaway.info) - rent cabins [1](https://www.cabinscape.com)/[2](https://getaway.house) - [rent houses](https://www.silentliving.pt) - [rent boats](https://www.skipperi.com/rent-a-boat) 141 | - dreams (lifestyle): nomadic [1](https://www.nomadicmatt.com)/[2](https://sofianaaustralia.com)/[3](https://craigmod.com) - [cabinland](https://www.youtube.com/c/Cabinland/videos) - [wild foods](https://alexandermcnaughton.com) 142 | - kits: [farm](https://farmfromabox.com) - Aframe [1](https://avrame.com)/[2](https://dubldom.com/eu) - cabin [1](https://buildcover.com)/[2](https://www.kodasema.com/pt) 143 | - real estate: selected [1](https://www.fantasticfrank.de)/[2](https://www.themodernhouse.com) - [private islands](http://www.vladi-private-islands.de) - [house shares](https://www.altacasa.com) - [openrent](https://www.openrent.co.uk) - [mimahousing](https://www.mimahousing.com) - [rural properties](https://www.rural-properties.com) 144 | - research: [creative](https://www.densediscovery.com) - [exclusive](https://www.wowhaus.co.uk) or cheap houses [1](https://www.instagram.com/cheapoldhouses)/[2](https://www.instagram.com/cheapirishhouses) 145 | - graphics: [brand + logo + domain package](https://www.brandbucket.com) - [$495 logos](https://logo.pizza) - crowdsource [1](https://www.crowdspring.com)/[2](https://draftss.com)/[3](https://www.manypixels.co) 146 | - services: [cleaning](https://www.maidsinblack.com) 147 | - accomodation: [long term](https://www.uniplaces.com) - [student](https://www.studentville.pt/en) - [short term](https://freespirit-house.com) 148 | - capital: [1](https://shl.vc)/[2](https://www.generalcatalyst.com)/[3](https://www.tinycapital.com) 149 | - consulting: [1](https://hashref.com)/[2](https://roybarber.com)/[3](https://consulting.joreteg.com)/[4](https://desktopneo.com) - [on real estate](https://www.zeonamcintyre.com) 150 | - mailbox money: [printable place cards](https://www.placecard.me) 151 | - geoarbitrage: [mturk](https://www.mturk.com/worker) - [kolotibablo](https://kolotibablo.com/main/home) 152 | - books: [mousebookclub](https://mousebookclub.com) - [waldenpond](https://waldenpond.press) 153 | - other: art [1](https://en.redcollectors.com)/[2](https://www.zagirovart.com) - [mini materials](https://www.minimaterials.com) - [car leasing](https://www.lingscars.com) - [spiedlife](https://www.spiedlife.com) - [vintage furniture](https://www.vinterior.co) - [allekinos](https://allekinos.de) 154 | 155 | ## Career 156 | 157 | - moocs & certificates: [classcentral](https://classcentral.com) - [microsoft](https://docs.microsoft.com/en-us/learn) - [elements of AI](https://elementsofai.com) - [apple](https://training.apple.com) - [near certificate](https://www.near.university/courses/near-certified-developer) - [upskill](https://upskill.pt/faqs) - [AWS](https://aws.amazon.com/pt/certification) 158 | - poland: [PT_PL](http://ppcc.pl) - wroclaw [1](https://www.monterail.com/careers)/[2](https://10clouds.com/careers) 159 | - job boards: remote [1](https://www.beefrii.com)/[2](https://freshremote.work)/[3](https://weworkremotely.com)/[4](https://remotefriendly.com)/[5](https://remoteok.com) ([stats](https://remoteok.com/remote-work-statistics)) - [relocate](https://relocate.me) - [nocsdegree](https://www.nocsdegree.com/jobs) - [nocv](https://no-cv.com) - [sidejobs](https://sidequestjobs.com) - [4 day week](https://4dayweek.io/remote-jobs) - YC [1](https://www.ycombinator.com/jobs)/[2](https://www.workatastartup.com/jobs)/[3](https://whoishiring.io) - [germantechjobs](https://germantechjobs.de) - [landingjobs](https://landing.jobs) - [futureweb](https://futureweb.vc) - [nploy](https://nploy.net) - [polychain](https://jobs.polychain.capital/companies) 160 | - head hunting: [triplebyte](https://triplebyte.com) - [hired](https://hired.com/talent) - [hackerrank](https://www.hackerrank.com) - [hackajob](https://hackajob.co) - [curated job boards](https://jobboardsearch.com) 161 | 162 | https://sive.rs/book | https://www.chrisgregory.me/books | https://www.thinknewsletter.com/book 163 | [ciechanow.ski](https://ciechanow.ski/archives) - [pudding.cool](https://pudding.cool) | https://marginalia-search.com/ | https://indieblog.page/ | https://pluralistic.net/ 164 | 165 | - podcasts: [lex](https://lexfridman.com/podcast) - [tyler](https://conversationswithtyler.com/episodes) - [conversas do fim do mundo](https://observador.pt/programas/conversas-do-fim-do-mundo) - [milhao](https://www.youtube.com/@CdK_podcast/videos) 166 | 167 | ## Gaming 168 | 169 | - games: [generals.io](http://generals.io) - [lord of the manor](http://www.lordofthemanor.io) - [zty.pe](https://zty.pe) - [nation states](https://www.nationstates.net) - [cosmoteer](https://cosmoteer.net) - dwarf fortress - gnomoria - nethack + volture (gui) - rimworld - prison architect - don't starve - curious expedition - stardew valley - undertale - Baba Is You - [guriddo](https://www.guriddo.app) - geo [1](https://www.geoguessr.com)/[2](https://geotastic.net)/[3](https://www.explordle.com/map/wor) - [princejs](https://princejs.com) - [painted ocean](https://thapen.itch.io/painted-ocean) - [open dune](https://www.openra.net) 170 | - chess & classics: [tactics](https://www.chesstactics.org) - [checkmatechamp](https://www.checkmatechamp.net) - [kb gambit](https://vole.wtf/kilobytes-gambit) - [how to learn](https://www.alexcrompton.com/blog/how-to-learn-chess) - [bgammon](https://bgammon.org) 171 | - tabletop + D&D: [TLDR](https://github.com/miserlou/dnd-tldr) - [dungeon magazines](https://archive.org/details/dungeonmagazine?sort=titleSorter) - [sounds](https://tabletopy.com) - [escape team](https://www.escape-team.com) - [scopa](https://en.wikipedia.org/wiki/Scopa) 172 | - trivia: [busysimulator](https://busysimulator.com) - [svelte macos](https://macos-web.app) - [space elevator](https://neal.fun/space-elevator)/[solar system](https://joshworth.com/dev/pixelspace/pixelspace_solarsystem.html) - [reuse old calendar](https://whencanireusethiscalendar.com) - [this word does not exist](https://www.thisworddoesnotexist.com) - [nownownow](https://nownownow.com) - [the useless web](https://theuselessweb.com) - [floor796](https://floor796.com) - [weird games](https://wfgames.net) - [chromatone](https://chromatone.center) - [noise](https://noise.jake.fun) - scarfolk [1](https://scarfolk.blogspot.com)/[2](https://www.collectorsweekly.com/articles/visiting-scarfolk) - [spooky](https://scrinshoted.github.io) 173 | --> -------------------------------------------------------------------------------- /trail-guide-self-publishing.md: -------------------------------------------------------------------------------- 1 | # self-publishing 2 | *Trail guide to self publish books.* 3 | 4 | After trailing it (as an housing architect), I'm mapping the best path I know to self publish a book.<br> 5 | It might be useful to others doing this lonely journey. 6 | 7 | - [Choosing tools](#choosing-tools) 8 | - [My productivity system](#my-productivity-system) 9 | - [Choosing a self publisher](#choosing-a-self-publisher) 10 | 11 | 12 | --- 13 | ## Choosing tools 14 | 15 | Markdown, Latex, MS Word, Indesign or Scrivener? 16 | - Markdown if you want to publish digitally. 17 | - Latex if you want to print it with maximum quality. 18 | - MS Word if you want to keep it simple (and unproductive). 19 | - Scrivener if you are writing a novel. 20 | - Indesign (or Scribus) if the design of your publication is crucial. 21 | 22 | 23 | --- 24 | ## My productivity system 25 | 26 | - I write Markdown on a text editor. Then convert it to Word via [Pandoc](http://pandoc.org/): 27 | 28 | pandoc myFile.md -f markdown_github -t docx -o myFile.docx 29 | 30 | - And finally I adjust style and publish it as PDF on MS Word. 31 | 32 | Why? 33 | - A text editor is an 'order of magnitude' more productive than a word processor. 34 | - I can still print it with reasonable quality without learning Latex or Indesign. 35 | 36 | 37 | --- 38 | ## Choosing a self publisher 39 | 40 | [Amazon](https://kdp.amazon.com/) to self publish paperbacks is the obvious choice. 41 | 42 | 43 | --- 44 | ## To investigate 45 | 46 | [Pollen](https://docs.racket-lang.org/pollen/) - A book is a (Racket Lisp) program. 47 | -------------------------------------------------------------------------------- /trail-guide-web-development.md: -------------------------------------------------------------------------------- 1 | # web-development 2 | *Trail guide to learn web-development.* 3 | 4 | After trailing it (as an housing architect), I'm mapping the best path I know to learn web-development.<br> 5 | It might be useful to others doing this lonely journey. 6 | 7 | 8 | ### 1. Starting 9 | 10 | - [Choosing languages](#choosing-languages) 11 | - [Choosing tools](#choosing-tools) 12 | 13 | ### 2. HTML+CSS (graphical user interface for the web browser) 14 | 15 | - [Installing HTML+CSS](#installing-htmlcss) 16 | - [Learning HTML+CSS](#learning-htmlcss) 17 | 18 | ### 3. Javascript (everywhere) 19 | 20 | - [Installing Javascript (front-end Javascript)](#installing-javascript-front-end-javascript) 21 | - [Installing Node.js (server-side Javascript)](#installing-nodejs-server-side-javascript) 22 | - [Learning Javascript](#learning-javascript) 23 | 24 | ### 4. Ruby (server-side) 25 | 26 | - [Installing Ruby](#installing-ruby) 27 | - [Learning Ruby](#learning-ruby) 28 | 29 | ### 5. Next? 30 | 31 | - [Elm?](#elm) 32 | - [Installing Elm](#installing-elm) 33 | - [Learning Elm](#learning-elm) 34 | 35 | 36 | 37 | --- 38 | ## 1. Starting 39 | 40 | ### Choosing languages 41 | 42 | After rambling with several languages <sup id="refnote1">[1](#footnote1)</sup>, beyond HTML+CSS, I chose [Javascript](https://nodejs.org/en/) and [Ruby](https://www.ruby-lang.org/). Resuming: 43 | 44 | 45 | #### HTML/CSS (graphical user interface for the web browser) 46 | 47 | - To build a graphical user interface (GUI) for the web browser you must use HTML/CSS directly or indirectly. 48 | - There are specific toolkits to build GUIs for every system but HTML/CSS is eating their marketshare. 49 | 50 | 51 | #### Javascript (everywhere) 52 | 53 | - Pros: 54 | - you can use it everywhere: front-end (from the classical [Jquery](https://jquery.com/) and React & [derivates](http://infernojs.org/) to my bets: [Vue](https://vuejs.org/) and [Svelte](https://svelte.technology/)), back-end and even native (using [Electron](http://electron.atom.io/) and [React native](http://facebook.github.io/react-native/)). 55 | - faster than Ruby due to constant corporation work on browsers' JS engines. 56 | 57 | - Cons: 58 | - javascript is ugly. [Coffeescript](http://coffeescript.org/) makes JS more palatable but it's out of fashion and one more language to learn. 59 | - everything changes everyday, terrible for noobs as us. 60 | - slower than native platform languages (Java on Android, Swift on IOS/OSX or .NET on Windows) 61 | 62 | 63 | #### Ruby (server-side) 64 | 65 | - Pros: 66 | - mature. 67 | - concise and elegant - this is VERY important for someone with my background. (created by a [Japanese](https://en.wikipedia.org/wiki/Yukihiro_Matsumoto)) 68 | - great for web dev ([Rails](http://rubyonrails.org/), [Sinatra](http://www.sinatrarb.com/), [Jekyll](https://jekyllrb.com/), [Discourse](http://www.discourse.org/) .. ) 69 | - great *glue* to automate tasks <sup id="refnote2">[2](#footnote2)</sup>. Even on [Sketchup](http://ruby.sketchup.com/) .. 70 | 71 | - Cons: 72 | - slowish (but there is [MRuby](https://mruby.org/) and [Crystal](https://crystal-lang.org/). 73 | - dying (or being re-invented?). 74 | 75 | 76 | 77 | --- 78 | ### Choosing tools 79 | 80 | If you're using a Windows PC (like me), get: 81 | 82 | - [ConEmu](https://conemu.github.io/), a nice command line (yes, it's necessary, get used). 83 | - [Sublime Text](https://www.sublimetext.com/), a fast text editor (it will be your main tool, the developer's autocad.. ).<br> 84 | There are several valid options <sup id="refnote3">[3](#footnote3)</sup> but for now stick with Sublime. 85 | 86 | 87 | 88 | --- 89 | ## 2. HTML+CSS (graphical user interface for the web) 90 | 91 | ### Installing HTML+CSS 92 | 93 | - Good news: every browser has a HTML+CSS engine already installed. Open any HTML+CSS files and they will render on your browser. 94 | 95 | 96 | 97 | --- 98 | ### Learning HTML+CSS 99 | 100 | - By being interested in web development, you probably know the basics. Just take a look on [Flexbox](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes) and you're good to go for now.<br>As HTML+CSS became more powerful, classic JS libraries like [Masonry](http://masonry.desandro.com/) to improve CSS seem outdated. 101 | 102 | 103 | 104 | --- 105 | ## 3. Javascript (everywhere) 106 | 107 | ### Installing Javascript (front-end Javascript) 108 | 109 | - Good news: every browser has a Javascript engine already installed <sup id="refnote4">[4](#footnote4)</sup>! Just click F12 on most browsers and the REPL will open! Or embed a JS file on a HTML file and it will run also. 110 | 111 | 112 | 113 | --- 114 | ### Installing Node.js (server-side Javascript) 115 | 116 | - Now install [Node JS](https://nodejs.org/en/) <sup>[4](#footnote4)</sup>. NPM (Node package manager) will also be installed. 117 | - On [ConEmu](https://conemu.github.io/) type *node*. You're on Node.js REPL now. To exit, press *Ctrl + d*. 118 | - To install a [node package](https://www.npmjs.com/), on command line type *npm install package-name* 119 | 120 | 121 | 122 | --- 123 | ### Learning Javascript 124 | 125 | - Take a look on [Javascript (Learn X in Y minutes)](https://learnxinyminutes.com/docs/javascript/) to get an overview of the language. 126 | - [Style guide](https://github.com/airbnb/javascript) and [Xahlee JS course](http://xahlee.info/js/js.html). 127 | - To easily evaluate scripts, do it inside the same directory you keep them. 128 | 129 | ``` 130 | // On command line navigate to your script's folder. e.g: 131 | > cd desktop/scripts 132 | 133 | // Now you can evaluate a JS file directly (you can omit the extension). Just type: 134 | > node expFile 135 | ``` 136 | 137 | 138 | 139 | --- 140 | ## 4. Ruby (back-end) 141 | 142 | ### Installing Ruby 143 | 144 | - Now install [Ruby](https://www.ruby-lang.org/en/documentation/installation/). 145 | - On command line (ConEmu) type *irb*. You're on Ruby REPL now. To exit, press *Ctrl + d*. 146 | - To install a ruby package ([gem](https://rubygems.org/)), on command line type *gem install package-name* 147 | 148 | 149 | 150 | --- 151 | ### Learning Ruby 152 | 153 | - Take a look on [Ruby (Learn X in Y minutes)](https://learnxinyminutes.com/docs/ruby/) to get an overview of the language. 154 | - Ruby looks good, isn't it? Use this [style guide](https://github.com/bbatsov/ruby-style-guide) as role model. 155 | - To easily evaluate scripts, do it inside the same directory you keep them. 156 | ``` 157 | # On command line navigate to your script's folder. e.g: 158 | > cd desktop/scripts 159 | 160 | # Now you can evaluate a ruby file directly. Just type: 161 | > ruby exp_file.rb 162 | ``` 163 | 164 | 165 | 166 | --- 167 | ## 5. Next? 168 | 169 | ### Elm? 170 | 171 | - Pros: 172 | - concise and elegant - this is VERY important for someone with my background. 173 | - opinionated. A bunch of decisions were already made for us. Great for noobs .. 174 | - human readable error messages when something goes wrong! 175 | - allow you to *dream* with a better world with no unreadable JS .. 176 | 177 | - Cons: 178 | - immature AKA breaking changes and few information about it. 179 | 180 | 181 | ### Installing Elm 182 | 183 | - Elm code is compiled to JS and Elm itself works as a Node.js package. So first install [Node JS](https://nodejs.org/en/) (if you didn't do it yet) and then [Elm](https://www.npmjs.com/package/elm) with NPM (Node package manager). 184 | - On [ConEmu](https://conemu.github.io/) type *elm repl*. You're on Elm REPL now. To exit, press *Ctrl + d*. 185 | 186 | 187 | 188 | --- 189 | ### Learning Elm 190 | 191 | - Take a look on [Elm (Learn X in Y minutes)](https://learnxinyminutes.com/docs/elm/) to get an overview of the language. 192 | - Read the [Elm guide](http://guide.elm-lang.org/) (from the language creator). 193 | - Elm looks good, isn't it? Unfortunately there isn't a mature style guide yet. So for now look [here](http://elm-lang.org/docs/style-guide), [here](https://github.com/NoRedInk/elm-style-guide) and [here also](https://github.com/ohanhi/elm-style-guide). 194 | 195 | 196 | 197 | --- 198 | <sup>Notes:</sup><br> 199 | <sup><a name="footnote1">1</a> - Python, Go, Coffeescript and [functional programming](https://en.wikipedia.org/wiki/Functional_programming) stuff (Elixir, Elm, Clojure & Lisps, Haskell, Purescript, OCaml, F#, Scala..). [↩](#refnote1)</sup><br> 200 | <sup><a name="footnote2">2</a> - Like Python. [↩](#refnote2)</sup><br> 201 | <sup><a name="footnote3">3</a> - Specially [VScode](https://code.visualstudio.com/).. but also emacs and vim.[↩](#refnote3)</sup><br> 202 | <sup><a name="footnote4">4</a> - Google Chrome and Node use V8 JS engine. [↩](#refnote4)</sup> --------------------------------------------------------------------------------