ncona.com
Learning about computers
RustEmbedded / microcontrollersDatabasesDevOps / SRE / infrastructure
- Posts
- 503 from 1 May 2011 to 8 Oct 2025
- Posting
- now and then
- Kind
- personal blog
- Feed
- https://ncona.com/feed.xml
2025 10
- Building Google Cloud Storage Signed URLs
- Add Watermark to Images From The Browser
- Using gcloud-sdk to Work with Storage Buckets in Rust
- Introduction to Tonic for gRPC in Rust
- a little familiarity with tonic
- PostGIS - Working With Geospatial Data in PostgreSQL
- Adding Configurations to ESP-IDF projects
- Sharing the Clipboard. Linux, Vim, Tmux and Docker
- Internationalization (i18n) of Svelte Apps
- Building Web Servers with Axum
2024 30
- Firestore Transactions in Rust
- Error Handling in Rust
- Sending E-mails From Rust With Brevo
- Voltage Dividers for Logic Level Shifting
- Open Collector Output
- Handling Interrupts With ESP-IDF
- Pull Up and Pull Down Resistors
- Unit Testing Code for ESP32
- Building a Stand-Alone Library for ESP-IDF
- Configuring ESP32 to act as Access Point
- use ESP32 as a WiFi client
- B-Trees - Database storage internals
- Aligned and packed data in C and C++
- ESP32 Non-Volatile Storage (NVS)
- Neovim as ESP32 IDE with Clangd LSP
- modularize software written with esp-idf
- Introduction to ESP32 development
- asynchronous programming with Tokio
- Programming Concurrency in Rust
- Smart Pointers in Rust
- Rust References Lifetimes
- Traits, Rust's Interfaces
- send HTTP requests with Arduino
- Testing in Rust
- Introduction to Rust
- Using Arduino Language Server With Neovim
- resistors
- Using Arduino Serial Monitor From Linux
- Getting Started With Arduino UNO R4
- Introduction to KiCad for Circuit Design
2023 7
2022 17
- Instrumenting an Istio Cluster With Jaeger Tracing
- Introduction to Jaeger Tracing
- Generating a GPG key in a script
- Searching Related Documents With Elasticsearch
- get started with Elasticsearch
- Monitoring Kubernetes Resources with Fabric8 Informers
- Fabric8 Kubernetes Java Client
- Kubernetes Java Client
- Resource Management in Kubernetes - Requests and Limits
- Kubernetes ConfigMaps
- Command Line Efficiency With Tmux
- Verifying Github commits with GPG
- Dependency injection (Inversion of Control) in Spring framework
- Kubernetes networking with Istio
- concurrency
- Flyway - Version control for Databases in Java
- Jackson - Working with JSON in Java
2021 22
- Managing Kubernetes Objects With Yaml Configurations
- Immutables and Java
- Setting up LSP in Vim
- Implementing a Language Server Protocol client
- Managing Kubernetes Applications with Helm
- Introduction to Kubernetes
- Introduction to GraphQL
- Building a Spring Boot server with Bazel
- GKE - Insufficient regional quota to satisfy request: resource "IN_USE_ADDRESSES"
- an article explaining Protocol Buffers, gRPC, and showing how to use them with Java
- Introduction to JDBI
- Introduction to JDBC
- Dependency Injection with Dagger and Bazel
- introduction to Bazel
- Introduction to HTML Canvas
- React refs
- Google sign-in with Golang
- Introduction to Next JS - React framework
- Introduction to React JS
- Dealing with Firestore 10 limit when using IN operator
- Publishing a PWA to the Play Store with PWA builder
- Introduction to Google Cloud Run
2020 37
- Using Google Analytics on Progressive Web Apps
- Introduction to Google App Engine
- Emulating Unique Constraints in Google Firestore
- Running Google Firestore locally
- Introduction to Google Firestore
- Google Cloud Functions
- Identity and Access Management (IAM) with Google Cloud
- Monetizing a Jekyll blog with Adsense
- Introduction to Golang modules
- Introduction to Google Cloud CLI
- Java Lambdas
- Java Map::entryset
- Push notifications on web applications
- Introduction to Simple Workflow Service (SWF)
- The most useful git commands
- Introduction to CloudFormation
- Create diagrams with code using Graphviz
- Introduction to AWS VPC Gateway endpoints
- Introduction to AWS networking
- Setting up a bastion host on AWS
- Introduction to AWS NAT Gateway
- AWS CodePipeline
- Identity and Access Management with AWS
- Introduction to AWS CodeBuild
- Null terminated and length prefixed strings
- How hard drives work
- AWS CLI
- Introduction to Apache Ant
- Introduction to CircleCI
- Using testify for Golang tests
- Simple Back-ups with PostgreSQL
- Installing Ubuntu on an old computer - Broken graphics
- Unit testing Golang code
- PostgreSQL user management
- introduction to PostgreSQL
- Change video resolution using ffmpeg
- PostgreSQL - Connection refused
2019 38
- using service workers for caching
- Debugging assembly with GDB
- Concurrent data structures
- Pointers to members in C++
- Operator overloading in C++
- Configuring gnome terminal programmatically
- C++ value categories
- Exception handling in C++
- Configuring gnome properties programmatically
- Hide snap folder in Ubuntu
- How to configure Firefox programmatically
- Virtual functions in C++
- Inheritance in C++
- Enums in C++
- C-style arrays vs std::array
- C++ Generics / Templates
- Publishing a Conan package
- Creating a C++ package with Conan
- Variadic templates / functions in C++
- Passing functions as arguments in C++
- Using thread pools in C++
- consume packages using Conan
- Building a simple server with C++
- C++ Atomic types
- Using Condition Variables in C++
- Read-Write mutex with shared_mutex
- Building a C++ project with CMake
- Building and using a library in C++
- Using lsof to find who is using a file or socket
- Assembly - Variables, instructions and addressing modes
- Vim command line mode
- The Vim statusline
- Writing a vim plugin - Grepfrut
- introduction to assembly
- Load bash preferences when SSH to a host
- Lock hierarchies to avoid deadlocks
- Aggregate initialization in C++
- Variable initialization in C++
2018 27
- AVL Trees
- Binary Search Trees
- Spell and Grammar checking on vim
- Advanced top for system diagnosis
- Introduction to top for system diagnosis
- How to find how many cores your system has
- Container Linux by CoreOS
- Copy assignment and copy construction in C++
- mutexes in C++
- Ipv6
- Passing by reference to a thread in C++
- Android development with Docker
- Getting familiar with Terraform
- introduction to networking for Google Cloud
- Setting the search directory for Ctrlp vim plugin
- Terraform
- Taking over existing instances with Terraform
- Linux page cache
- File descriptors
- Sorting algorithms
- Stack and heap memory in C++
- introductory article to GDB
- futures, async, packaged tasks and promises
- Writing tests for C++ code
- threads
- Autotools
- C++ types, pointers and references
2017 27
- how header files work in C++
- Introduction to etcd
- distributed systems
- Raft for reaching consensus
- Playing with Kubernetes locally with Minikube
- Progressive Web Apps install banner
- Modify the name of the Desktop and Downloads folders on Ubuntu
- Disable SSLv3 in HAProxy
- Google auth with Beego
- Models in Beego
- Database migrations in Beego
- Introduction to Beego
- Dependency management with golangdep
- Introduction to GitLab
- Introduction to Bitbucket Pipelines
- Getting Rails to run in an Alpine container
- The Rabin-Karp algorithm
- Load testing a Rails app with Vegeta
- Update let’s encrypt certificate without restarting your server
- Securing your network with iptables
- Canister
- Simple strategy for MySQL backups
- Free centralized log management with Loggly
- House painting problem
- free SSL certificates using Let’s encrypt
- SSL termination
- SSL termination on load-balanced wordpress
2016 33
- Docker networking
- Showing records from MySQL tables with many columns
- Ruby Bundler
- Ruby gems
- creating installable web apps
- Introduction to MongoDB
- Introduction to Vagrant
- Monitoring machine metrics with Graphite
- HAProxy setup
- Encrypting an external drive using LUKS
- Android development with Docker
- Bitwise operations in Javascript
- Set up SSH keys for logging into your server
- SSH tunneling
- Installing Glide with Docker
- MySQL for production
- dependency management with Glide
- Avoid SSH connection timeout
- Golang: Dependency management done wrong
- Disable expandtab in Vim
- Go Language: Concurrency
- Go Language: The For loop
- Go Language: Slices
- Adding a drawer to your Android app
- Create a navigation menu for your Android app
- arrays in Go
- Using the Gradle wrapper on your Android project
- Add one to a number without using plus or minus sign
- Go Language: Methods and Interfaces
- ncona.com – Learning about computers
- introduction to Golang
- Debugging with tcpdump
- Restart a process automatically if it dies
2015 49
- Running Polymer tests with Docker
- Testing Polymer components using Web Component Tester
- Using Gerrit with MySQL
- Suspending processes
- Adjusting the width of Nerdtree navigator
- the same thing can be achieved using Docker
- introduction to Gerrit
- Uploading to an S3 bucket that contains dots using node SDK
- SSH to a running docker container
- Socket statistics with ss
- gms.StatusHelper Status from wire: INVALID_AUDIENCE status: null
- UI components library with React and Webpack
- Using Webpack with React
- React with Radium
- Temporarily disable Syntastic on Vim
- Quick Vim setup
- Introduction to Reworkcss
- Python virtual environments
- Introduction to PIP
- Oauth2
- Uuids
- Trunk development flow with git
- Introduction to React
- Writing ES6 with Babel
- Introduction to salt
- Polymer
- Introduction to Browserify
- Deploying node apps with Flightplan
- Unit testing angular with karma
- Git bisect
- Introduction to docker
- Web components
- Building modular apps with Angular - Part 2
- Building modular apps with Angular
- Maximum length palindromic subsequence
- Bash productivity tips
- Implementing Content Security Policy (CSP)
- The Fibonacci sequence
- Routing with angular
- Unique paths
- how JWT works
- Binary search
- Virtualization
- Using Google+ id tokens from an Android app
- how JavaScript numbers work
- how to sign-in to Google+ from an Android app
- Project scaffolding with Yeoman
- Enforce android coding style with checkstyle
- Unable to exclude PMD rule after upgrading to gradle 2
2014 51
- Sharing IDE configuration with EditorConfig
- Median of Integer Stream
- Search Unknown Length Array
- Watching JS variables for changes
- Kth Largest Element in Array
- CSS Flexbox
- Convert Array
- Change syntastic default syntax checker
- AngularJS vocabulary
- Algorithm to check if a word is a palindrome
- Binary Search Tree Check
- Transform word
- Linked List Remove Nodes
- Find Even Occurring Element
- Find frequency in sorted array
- Building an Android project from scratch using gradle
- Publishing an Android library to Sonatype central repository
- Consuming Android library with gradle
- Reverse Words in a String
- All permutations of a string
- Find Missing Element
- Combine Two Strings
- First Non Repeated Character in String
- Matrix region sum
- Check Balanced Parentheses
- Anagram strings
- generics in Java
- Largest Continuous Sum
- Dutch national flag problem
- Building an Android library with gradle
- Using ESLint to enforce JS coding conventions
- Creating a library for Android
- Array Pair Sum
- Building back stack correctly when coming from a notification on Android
- Schedule your Android app to do something periodically
- Setting up Google Analytics for Android
- Android UI Automation using Espresso
- Creating a grunt plugin
- Make vim Command-T ignore certain files
- Hash tables
- Configure syntastic to work fine with Android projects
- How to inspect your Android sqlite DB
- Customizing PMD rules
- Creating a Robolectric project from scratch with ant
- Consuming a REST service from Java (Android)
- Java code static analysis with Pmd
- Using Android lint to check for errors in your code
- Detect when Android emulator is ready
- Android Logcat Unexpected value from nativeGetEnabledTags: 0
- Failed to load libGL.so
- Publishing an Android app to the play store
2013 48
- Instant mock testing with PowerMock - Book Review
- Big O Notation
- Increase number of files Command-T will search
- Running simple web server on a folder
- Command line task manager for Linux
- Writing unit test for Android with Easymock
- Android emulator acceleration
- Introduction to Compass
- Trasfering files via SSH
- Hooking your github project to Travis-CI
- Android layouts and styles
- Unit testing Android Apps
- REST Services
- Using Android preferences for storage
- Different settings for different language in vim
- Git rebasing vs merging
- Changing your default name and e-mail on git
- Some things I learned about drawing on Android
- Drawing on an android view
- Debugging node apps using built in debugger
- Debugging Android applications
- Twitter Bootstrap
- Android Menus
- Creating a chrome extension
- Creating user interfaces with android (Part 2 of 2)
- Creating user interfaces with android (Part 1 of 2)
- Creating web applications with Node and Express
- Getting started with Raspberry Pi
- Writing JavaScript unit tests with venus.js
- Getting started with Jenkins Continuous Integration
- Why and how is dust.js asynchronous
- JS Dependency Management
- Create MySQL users
- Writing a simple Node.js server
- post about node.js
- Backbone routers
- Backbone collections
- Working with Git submodules
- Writting Django applications for your project
- Mixins functionality in PHP 5.4 – Traits
- creating an application from the command line
- Introduction to Backbone.js
- Making your local server accessible from anywhere
- Git hook to run code static analysis
- JavaScript Static Code Analysis Using JSLint
- Zend Framework Authorization
- Configuring Vim
- Introduction to Vim
2012 39
- Colorize git output
- Creating your own PHPCS standard
- Zend Framework Authentication
- Django environment setup
- PHP Code Static Analysis
- Profiling PHP applications with Xdebug
- PHP Warning: date(): It is not safe to rely on the system's timezone settings
- Javascript Inheritance
- Clear floating elements with CSS clearfix
- ncona.com – Learning about computers
- Debugging PHP code with xDebug
- Navigating the DOM with native JavaScript
- Making an object's protected and private members public using reflection
- Introduction to Syntactically Awesome Stylesheets (SASS)
- Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)'
- Zend Framework resource autoloading with appnamespace
- Setting environment variables
- Box shadows, the CSS 3 standard way
- Introduction to Object Oriented Programing in Python
- Gradient background, the CSS 3 standard way
- Creating functions with Python
- Contributing to OpenHatch project
- Rounded corners, the CSS 3 standard way
- Pushing and deleting remote branches with git
- sudo: unable to resolve host
- Local Apache and OpenSSL configuration
- Enabling mod-rewrite on Ubuntu
- ncona.com – Learning about computers
- Creating a batch file on windows
- Creating and applying patches with git
- Python Sequences - Part 2
- Python Sequences
- Python strings
- FileSync: File Synchronization plugin for notepad++
- Creating a test suite using Selenium 2 / Webdriver
- Running Selenium 2.0 / Webdriver tests
- Python lesson: Getting user input through the console. Bonus: handling an exception.
- Introduction to Python
- Configuring a quick and ugly local email server on Ubuntu
2011 26
- Using Table Data Gateway and Row Data Gateway design patterns in Zend Framework
- Using AJAX with Zend Framework
- Managing views with Zend Framework
- Test driven development with Zend Framework
- Using Zend_Application for bootstrapping
- Zend_Db_Table
- Zend_Loader_Autoloader
- Parsing configuration files with Zend_Config_Ini
- Self executing functions in javascript
- Dealing with Apache's limit on back-references when rewriting URLs
- Transforming XHTML documents with XSLT 1.0 and PHP
- Run PHP unit tests automatically using git hooks
- Getting more from git log
- How to delete a commit in git, local and remote
- Publish an extension to firefox directory
- Creating local virtual hosts with apache
- Using UTF-8 characters on an e-mail subject
- apache2: Could not reliably determine your servers’s fully qualified domain name, using 127.0.0.1 for ServerName
- Zend Framework Hello World
- Changing the color of a tab on a firefox extension
- Attaching event listeners to the current document on Firefox
- Detecting when a new tab or window is opened on Firefox
- Using Firefox preferences to store data
- Adding an icon to our Firefox extension
- Adding an icon to the status bar in a Firefox extension
- Firefox extensions development
Undated 42
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers
- ncona.com – Learning about computers