<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Notes on Jorge Israel Peña</title>
    <link>https://www.jip.dev/notes/</link>
    <description>Recent content in Notes on Jorge Israel Peña</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 27 Mar 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://www.jip.dev/notes/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Spring</title>
      <link>https://www.jip.dev/notes/spring/</link>
      <pubDate>Sun, 27 Mar 2022 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/spring/</guid>
      <description>Spring is an application framework and inversion of control container for Java.
These notes focus on Spring Boot, which is a distribution of Spring and related packages geared toward web application development.
Configuration Configuration applies based on a predefined precedence.
It appears that an application.yml in the test/resources/ completely shadows one in main/resources/. As a result, you can&amp;rsquo;t depend on necessary configuration to exist in the main and only overriding certain attributes in the test one.</description>
    </item>
    
    <item>
      <title>Spark</title>
      <link>https://www.jip.dev/notes/spark/</link>
      <pubDate>Thu, 18 Apr 2019 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/spark/</guid>
      <description>Spark is a tool for managing and coordinating the execution of tasks on large data across a cluster of computers. It is written in Scala.
Spark libraries exist for other languages, such as Python. Spark translates such code into code that can run on executor JVMs.
 Concepts The cluster that Spark tasks execute on is managed by a cluster manager such as Spark&amp;rsquo;s, YARN, or Mesos. These cluster managers provision resources to applications for them to do their work.</description>
    </item>
    
    <item>
      <title>Data Structures</title>
      <link>https://www.jip.dev/notes/data-structures/</link>
      <pubDate>Tue, 16 Oct 2018 10:43:48 -0700</pubDate>
      
      <guid>https://www.jip.dev/notes/data-structures/</guid>
      <description>Notes on Data Structures. I also have notes on algorithms and general problem solving.
 Heaps A priority queue is an abstract data type that allows adding elements and retrieving the smallest or largest element. Priority queues are useful for an unbounded sequence for which we want to retrieve the $M$ smallest elements at any given moment.
The data structure commonly used to back a priority queue is an array embedding the contents of a complete binary tree in level-order that maintains two invariants:</description>
    </item>
    
    <item>
      <title>GraphQL</title>
      <link>https://www.jip.dev/notes/graphql/</link>
      <pubDate>Thu, 24 May 2018 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/graphql/</guid>
      <description>GraphQL is a query language for APIs. It can be used to describe queries and mutations which do exactly what the consumer wants, in a way that mirrors the way the data is returned by the API, in a way that removes the need for multiple round-trip requests.
 Queries Queries have the same shape as their result.
{hero{name}}{ &amp;#34;data&amp;#34;: { &amp;#34;hero&amp;#34;: { &amp;#34;name&amp;#34;: &amp;#34;R2-D2&amp;#34; } } } Sub-selection of fields can be made in queries:</description>
    </item>
    
    <item>
      <title>TypeScript</title>
      <link>https://www.jip.dev/notes/typescript/</link>
      <pubDate>Sun, 29 Apr 2018 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/typescript/</guid>
      <description>Basic Types They&amp;rsquo;re all lowercase. There is boolean, number, and string.
Arrays are expressed as Array&amp;lt;T&amp;gt; or with the syntax sugar T[].
Tuple types are expressed as [T, U] and constructed with the same bracket syntax. Tuple members are accessed via index as with arrays. Any indices outside of the known members are given a union type of all of the types of the known members. For example, if a tuple contains two members known to be a string and a number, then indices above 1 get the union type string | number.</description>
    </item>
    
    <item>
      <title>Python</title>
      <link>https://www.jip.dev/notes/python/</link>
      <pubDate>Wed, 14 Mar 2018 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/python/</guid>
      <description>Python is a beautifully simple, no-nonsense language. In fact, it is so simple and straightforward, that oftentimes its users can become very productive with it right away, avoiding the deep dive into the language to see what truly makes it special. It&amp;rsquo;s very popular with data science, data visualization, machine learning, and many other tasks.
These are notes from the book Python in a Nutshell and Fluent Python.
 A long line can be split into two lines by ending the first line with a backslash \.</description>
    </item>
    
    <item>
      <title>JavaScript</title>
      <link>https://www.jip.dev/notes/javascript/</link>
      <pubDate>Wed, 07 Mar 2018 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/javascript/</guid>
      <description>Identifying arrays isn&amp;rsquo;t always possible to do with instanceof. For example, if an array is passed between two browser frames, each page has its own global context, so instanceof won&amp;rsquo;t work because the array will be an instance of the other frame&amp;rsquo;s Array. Instead, Array.isArray() should be used.</description>
    </item>
    
    <item>
      <title>Kubernetes</title>
      <link>https://www.jip.dev/notes/kubernetes/</link>
      <pubDate>Thu, 23 Nov 2017 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/kubernetes/</guid>
      <description>Kubernetes automates the distribution and scheduling of application containers across a cluster in an efficient way. Docker itself is adding support for Kubernetes as well.
 Clusters A cluster consists of a master that coordinates the cluster and Nodes that run applications. A cluster that handles production traffic should have at least three Nodes.
The master coordinates all activities in a cluster, such as scheduling applications, maintaining their desired state, scaling them, and rolling out new updates.</description>
    </item>
    
    <item>
      <title>Docker</title>
      <link>https://www.jip.dev/notes/docker/</link>
      <pubDate>Mon, 20 Nov 2017 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/docker/</guid>
      <description>Docker is a container infrastructure project facilitating the creation and execution of containers through the use of resource isolation features such as Linux&amp;rsquo; cgroups and kernel namespaces.
 Terminology An image is a self-contained executable package. A container is an instance of an image. The distinction is similar to an executable binary and process instances of it, except that an image is generally self-contained so that it doesn&amp;rsquo;t depend on system-wide dependencies, for example, and unlike a process, a container runs in a restricted environment 1 separate from the host system.</description>
    </item>
    
    <item>
      <title>Vue.js</title>
      <link>https://www.jip.dev/notes/vue/</link>
      <pubDate>Sat, 26 Aug 2017 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/vue/</guid>
      <description>Vue Instance The Vue function can be used to create a Vue instance, which by convention is often named vm for &amp;ldquo;ViewModel.&amp;rdquo; The Vue function takes an options object.
Upon creation, all properties found in its data object are registered with the reactivity system. Only the data properties that existed at instantiation time are reactive.
const data = { a: 1 }; const vm = new Vue({ data }); vm.</description>
    </item>
    
    <item>
      <title>Browser Extensions</title>
      <link>https://www.jip.dev/notes/browser-extensions/</link>
      <pubDate>Sat, 26 Aug 2017 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/browser-extensions/</guid>
      <description>I will mostly be focusing on the Chrome Extensions API, but I will do so with a bias towards the &amp;ldquo;standardized&amp;rdquo; portion of it, the Browser Extensions standard, as adopted by FireFox in the form of the WebExtensions API.
 Portability Mozilla seems to be the only one making an effort to provide documentation for the APIs with consideration for other browsers, such as detailing the discrepancies. They have a document on differences between FireFox and Chrome&amp;rsquo;s implementation of the APIs.</description>
    </item>
    
    <item>
      <title>PostgreSQL</title>
      <link>https://www.jip.dev/notes/postgresql/</link>
      <pubDate>Mon, 07 Aug 2017 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/postgresql/</guid>
      <description>PostgreSQL is an extremely robust and popular open source relational database management system (RDBMS). The third-party open source PostGIS extension further adds geospatial capabilities.
 Architecture A PostgreSQL session consists of a server process postgres which manages the database files, accepts connections, and performs database actions. PostgreSQL handles multiple concurrent connections by forking a process for each connection.
Databases A database can be created using the createdb command and removed with the dropdb command.</description>
    </item>
    
    <item>
      <title>Ruby</title>
      <link>https://www.jip.dev/notes/ruby/</link>
      <pubDate>Tue, 18 Apr 2017 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/ruby/</guid>
      <description>Ruby is a dynamic interpreted language. It gained widespread adoption for web development following the release of Ruby on Rails. Early on its dynamic metaprogramming facilities were abused, as was evident in Ruby on Rails.
 The rbconfig package contains constants with information about the local Ruby installation, particularly in the RbConfig::CONFIG hash.
   Term Contents     rubylibdir standard library   bindir CLI tools   archdir arcitecture-specific extensions/libraries   sitedir own/third-party extensions/libraries   vendordir third-party extensions/libraries   sitelibdir own extensions (Ruby)   sitearchdir own extensions (C)    Loading Files Ruby&amp;rsquo;s load path is accessible through the global variable $:.</description>
    </item>
    
    <item>
      <title>Ruby on Rails</title>
      <link>https://www.jip.dev/notes/ruby-on-rails/</link>
      <pubDate>Mon, 30 Jan 2017 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/ruby-on-rails/</guid>
      <description>Bundler Bundler performs dependency resolution on the entire list of dependencies.
The install command should be invoked whenever dependencies are modified.
Gemfile The :require option can be used to specify the gem to use when it differs from the name.
gem &amp;#39;webmock&amp;#39;, require: &amp;#39;webmock/rspec&amp;#39; The :path option can be used to use a local gem.
gem &amp;#39;nokogiri&amp;#39;, path: &amp;#39;~/code/nokogiri&amp;#39; A git source repository can be used with the :git option to load a gem as long as it has a .</description>
    </item>
    
    <item>
      <title>Unreal Engine</title>
      <link>https://www.jip.dev/notes/unreal-engine/</link>
      <pubDate>Sat, 17 Dec 2016 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/unreal-engine/</guid>
      <description>Unreal Engine is an industry grade, robust game engine. While previous engines offered UnrealScript for implementing new behavior, Unreal Engine 4 uses C++ exclusively along with visual programming &amp;ldquo;Blueprints&amp;rdquo; that generate bytecode by default.
 Editor Pressing F in the camera pane will move the camera to focus onto the selected object.
Pressing and holding ALT while dragging left-click will orbit the focused object, while dragging right-click will zoom in and out of the object.</description>
    </item>
    
    <item>
      <title>Objective-C</title>
      <link>https://www.jip.dev/notes/objective-c/</link>
      <pubDate>Sat, 21 May 2016 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/objective-c/</guid>
      <description>Although Swift has been released, there is still a considerable iOS/Cocoa ecosystem which is built on Objective-C.
 Types The BOOL type is an alias for an integer with variants YES and NO set to 1 and 0 respectively. Since these are integers, it&amp;rsquo;s not advised to explicitly compare to YES because an affirmative value can be any non-zero value.
Explicit integer types can be used such as UInt32 for an unsigned 32-bit integer or SInt16 for a signed 16-bit integer.</description>
    </item>
    
    <item>
      <title>Git</title>
      <link>https://www.jip.dev/notes/git/</link>
      <pubDate>Wed, 04 May 2016 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/git/</guid>
      <description>When merging a feature branch it&amp;rsquo;s generally preferable to preserve the fact that the commits come from the feature branch for historical purposes. However, if the destination branch (e.g. master) hasn&amp;rsquo;t diverged, a merge by default will be fast-forward, essentially resetting the master to the feature branch, thereby erasing any trace of a merge ever taking place, let alone from which branch.
To force git to perform a non-fast-forwarding merge, use the --no-ff option:</description>
    </item>
    
    <item>
      <title>Cryptography</title>
      <link>https://www.jip.dev/notes/cryptography/</link>
      <pubDate>Wed, 04 May 2016 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/cryptography/</guid>
      <description>Diffie-Hellman key exchange works by agreeing on two publicly shared values: a large prime number $q$ and a primitive root $g$. Alice and Bob each generate a secret key&amp;mdash;a large random number&amp;mdash;$x_a$ and $x_b$ respectively, and each raise the primitive root to the power of the secret key, modulo the large prime number.
 $$ \begin{align*} y_a &amp;= g^{x_a} \bmod q \\ y_b &amp;= g^{x_b} \bmod q \end{align*} $$  The results are sent to each other and the shared key is computed by raising the received value to the secret key modulo the primitive root.</description>
    </item>
    
    <item>
      <title>Networking</title>
      <link>https://www.jip.dev/notes/networking/</link>
      <pubDate>Fri, 22 Apr 2016 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/networking/</guid>
      <description>Switching The Address Resolution Protocol (ARP) can be used to obtain the MAC address of a given IP address. It does this by broadcasting a query to which the matching target IP address responds with the IP address via unicast. A mapping for that IP address to that MAC address is then added to the ARP table.
When a host on a hub-interconnected LAN wants to send a packet to another host on the same hub, it does so by broadcasting the packet to every host.</description>
    </item>
    
    <item>
      <title>Linux</title>
      <link>https://www.jip.dev/notes/linux/</link>
      <pubDate>Fri, 22 Apr 2016 00:00:00 +0000</pubDate>
      
      <guid>https://www.jip.dev/notes/linux/</guid>
      <description>What follows are notes on the Linux and POSIX APIs.
 System Calls System calls can negatively impact user-mode application performance by evicting user-mode cache entries.
Processors often have various protection levels. For example x86 has 4, where ring 3 is the lowest privilege (for applications) and ring 0 is the highest privilege (for operating systems). Some instructions trap into the operating system which swtiches to ring 0, which can access all resources and execute all instructions.</description>
    </item>
    
  </channel>
</rss>