Software Engineering Notebook (Albert Mata)
When you have been working with different technologies and programming languages for some years, it is easy to end up with lots of files, notes, snippets, gists, repos, bookmarks... many little pieces of useful information here and there. This Software Engineering Notebook is my attempt to keep all of them organized using an extremely simple system based on Markdown and Git.
58 notes so far. Last added: Improve font rendering in RStudio for Mac
Categories
- Android
- Bash
- C
- Genomics
- Git
- HTML
- iOS
- Java
- JavaScript
- Literature
- MongoDB
- Objective-C
- Programming
- Python
- R
- ReactNative
- Ruby
- Scala
- Scheme
- Unix
Android
Bash
C
Genomics
- Custom annotation tracks in BED format
- Custom annotation tracks in GFF format
- Needleman−Wunsch algorithm in Swift
- Python script to create ASCII art with BED custom tracks
Git
HTML
- Access battery information from a page
- Check if there is a network connection available or not
- Tell whether the page is currently visible or not
iOS
Java
JavaScript
Literature
- 97 cosas que todo arquitecto de software debería conocer (Spanish)
- Quote from Through the Looking-Glass and What Alice Found There
- Quotes from Coders at work. Reflections on the craft of programming
- Quotes from Core Data. Data Storage and Management for iOS, OS X, and iCloud
- Quotes from Effective Objective-C 2.0
MongoDB
- Delete documents: deleteOne() & deleteMany()
- Insert documents: insertOne() & insertMany()
- Select documents: find(), pretty(), count(), distinct()
- Update documents: updateOne() & updateMany()
Objective-C
- Add properties to categories
- Arrays of chars perform better than NSString
- Assign a value to a variable with a block of code
- Class clusters to group a number of private concrete subclasses under a public abstract superclass
- Code not compiling when using blocks inside a switch statement
- Equality and isEqual: in NSObject subclasses
- Filter arrays using blocks instead of predicates
- Implementation for Singleton design pattern
- NS_ENUM and NS_OPTIONS
- Stack blocks vs heap blocks
- Warnings in Xcode
Programming
Python
R
ReactNative
Ruby
Scala
- FunProg week 1: Functions & evaluations
- FunProg week 2: Higher order functions
- FunProg week 3: Data & abstraction
- FunProg week 4: Types & pattern matching
- FunProg week 5: Lists
- FunProg week 6: Collections
- FunProg week 7: Lazy evaluation
Scheme
Unix
About me
I am Albert, a Catalan software developer currently living in Barcelona. I started a business career after earning a Bachelor's Degree in Business Studies (2002). But soon after I became interested in software development, specifically in business-related applications, and started working as a programmer and went back to college. In 2008 I earned a Master's Degree in SAP Functional Consulting and some time later, in 2012, a second Bachelor's Degree in Computer Science. It's been a long journey full of interesting experiences... and it keeps going, as at this moment I am in the process of getting a second Master's Degree in Bioinformatics and Biostatistics (probably in 2019).
I love running, teaching, watching TV series, listening to podcasts, Apple devices and, of course, developing software. I have solid skills on database design, object-oriented programming, project management and UI and UX design.
How to create a notebook like this
For the last fifteen years or so I have used several blogging solutions: Blogger, WordPress, Octopress, Jekyll, Blogdown and even custom sites manually crafted using ASP (back in 2003), PHP (some years later), plain static HTML files (at different times)... None of those were what I really wanted to use, as I have always been looking for a system with these characteristics:
- It has to be extremely easy to use. When I am to add some content I do not want to run any command or use any template and follow some rigid rules. This way, if I stay away from my notebook for some time, I still will remember how to add some content when I get back.
- It has to be magic-free. If I have to install gems, dependency managers, clone some repository, go find where to add my content, run more commands... I will simply get bored and stop keeping my notebook up to date.
- It has to use a really basic technology stack, so that I do not feel I am even running any software but just creating files the same way I would do otherwise. Markdown and (basic) Git seem like a reasonable choice.
So I decided to create this system myself. I call it BlogGit, as it kind of resembles a blogging system and is totally based on Git. Feel free to use it to create your own notebook.
License
Everything in this repository is licensed under the MIT license. See LICENSE for further details.