Travis CI Pricing Change - Usage based Billing

"Welcome to Travis CI!"

This morning I waked up to an email titled Welcome to Travis CI!.

Travis CI is a cloud-based Continuous Integration platform that automatically compiles and tests my code whenever I push a commit to GitHub, and warns me by email if there is an error. I started using Travis CI in 2014, so it feels weird to receive a "welcome" email today.

The email reads:

You are on Free.

You have 1,000 credits left - these will begin counting down automatically as soon as you run your first build. You can use your credits to build on both private and open-source repositories using Linux, macOS, and Windows OS. 1,000 credits will be replenished automatically monthly. Additional Credits purchase is not available for Free Plan.

Where does GMT-0456 Timezone Come From?

Recently, someone on the DCTech Slack community asked why the Date.prototype.toDateString function is having an off-by-one error:

new Date("2020-10-17").toDateString();
"Fri Oct 16 2020"

My immediate response was: timezone. The group then proceeded to discover that the Date constructor would interpret a date-only string as being in UTC timezone. Washington, DC uses Eastern Daylight Time that is four hours behind UTC, so the timezone of the constructed Date object is 20:00:00 local time on the previous date. Since toDateString uses local time, it prints as the previous date.

After that, I started testing some boundary conditions:

new Date("0001-01-01").toString()
"Sun Dec 31 0000 19:03:58 GMT-0456 (Eastern Standard Time)"

new Date("0000-01-01").toString()
"Fri Dec 31 -0001 19:03:58 GMT-0456 (Eastern Standard Time)"

Wandering in Las Vegas

After being busy with virtual conferences and hackathons, I finally got some time to return to my virtual travels. This week I'm going to Las Vegas, the entertainment capital of the world.

Welcome to Fabulous Las Vegas sign, 2013-12-17

Am I in Las Vegas?

Christmas 2011, after visiting San Diego and Los Angeles theme parks, two schoolmates and I drove 6 hours to Las Vegas. We walked around the vicinity of our hotel, and saw what appears to be Statue of Liberty in front of a hotel. From what I remember from watching The Amazing Race (paid link), this statue should be in New York. Although my geographic knowledge was limited at the time, I knew we were not in New York. Instead, we were in front of New York-New York Hotel and Casino, designed to evoke the New York City skyline. This Statue of Liberty is a smaller replica of the real thing.

Statue of Liberty replica in front of New York-New York Hotel and Casino, 2011-12-26

NDN-DPDK: NDN Forwarding at 100 Gbps on Commodity Hardware

Presented at: 7th ACM Conference on Information-Centric Networking (ICN 2020)

Since the Named Data Networking (NDN) data plane requires name-based lookup of potentially large tables using variable-length hierarchical names as well as per-packet state updates, achieving high-speed NDN forwarding remains a challenge. In order to address this gap, we developed a high-performance NDN router capable of reaching forwarding rates higher than 100 Gbps while running on commodity hardware. In this paper we present our design and discuss its tradeoffs. We achieved this performance through several optimization techniques that include adopting better algorithms and efficient data structures, as well as making use of the parallelism offered by modern multi-core CPUs and multiple hardware queues with user-space drivers for kernel bypass. Our open-source forwarder is the first software implementation of NDN to exceed 100 Gbps throughput while supporting the full protocol semantics. We also present the results of extensive benchmarking carried out to assess a number of performance dimensions and to diagnose the current bottlenecks in the packet processing pipeline for future scalability enhancements. Finally, we identify future work which includes hardware-assisted ingress traffic dispatching, dynamic load balancing across forwarding threads, and novel caching solutions to accommodate on-disk content stores.

Read full paper at ACM Digital Library: NDN-DPDK: NDN Forwarding at 100 Gbps on Commodity Hardware

NDN-DPDK logo

NDNts Demo at NDN Community Meeting 2020

NDN Community Meeting is an annual event that brings together a large community of researchers from academia, industry, and government, as well as users and other parties interested in the development of Named Data Networking (NDN) technology. Having no peer review process, it is a prime opportunity to showcase my personal projects to the community. I demo'ed my ndn-js home surveillance camera at NDNcomm 2018. This time, I decide to demo my flagship product, NDNts: NDN Libraries for the Modern Web.

The Demo Video

NDNts is a set of libraries with many different features, where do I start? I decide to select a subset of unique features that are not found in any other library:

  • The Endpoint API that enhances face by automatically handling repetitive tasks such as Interest retransmissions and packet signing/verification, so that app developers can focus on the application logic.
  • An implementation of trust schemas.
  • NDN Certificate Management protocol implementation, including a graphical user interface for the certificate authority component.

I also threw in two web applications:

Getting Started with NDNts Web Application using webpack

This article shows how to get started with NDNts, Named Data Networking (NDN) libraries for the modern web. In particular, it demonstrates how to write a consumer-only web application that connects to the NDN testbed, transmits a few Interests, and gets responses. This application uses JavaScript programming language and webpack module bundler.

Prepare the System

To use NDNts, you must have Node.js. As of this writing, NDNts works best with Node.js 14.x, and you should install that version. The easiest way to install Node.js is through Node Version Manager (nvm) or Node Version Manager (nvm) for Windows.

On Ubuntu 18.04, you can install nvm and Node.js with the following commands:

$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash
$ nvm install 14
Now using node v14.14.0 (npm v6.14.8)

Install Debian 10 on Netgate SG-2220 via Serial Port with iSCSI Disk

I get my hands on a Netgate SG-2220 network computer. It comes preinstalled with either pfSense firewall software, or CentOS in the case of DPDK-in-a-box edition. However, I'm more familiar with Debian based operating systems. Can I install Debian on the Netgate SG-2220?

The Console Port

Hardware specification of the Netgate SG-2220 includes:

  • Intel Atom C2338 processor, dual core at 1.7 GHz
  • 2GB RAM
  • 4GB eMMC storage
  • one USB 2.0 port
  • two 1 Gbps Ethernet adapters

Notably missing is a VGA or HDMI port to connect to a monitor. Instead, this computer offers a mini-USB "console port". It is a UART serial port with a USB-UART bridge chip already included, unlike the C.H.I.P $9 computer that only provides serial over pin headers.

NDNts nightly build

NDNts nightly build is a set of NPM-compatible tarballs compiled automatically from the development branch of NDNts, Named Data Networking (NDN) libraries for the modern web. They are built by the Continuous Integration (CI) system and uploaded to the NDNts nightly build website: ndnts-nightly.ndn.today. Homepage of that website displays a list of URIs of available tarballs.

How to install NDNts nightly build

You can find available tarballs on NDNts nightly build website: ndnts-nightly.ndn.today.

To install a tarball as a local dependency within the current project, you can execute something like:

$ npm install https://ndnts-nightly.ndn.today/packet.tgz
+ @ndn/packet@0.0.20200822-nightly.a471902
added 5 packages from 3 contributors and audited 5 packages in 1.612s
found 0 vulnerabilities

I Earned $100 with One Tweet

Apple Card is a new credit card product offered by Apple. In February, Apple Card ran an ad campaign on Twitter:

Apple Card has no fees.

Not Apple Card has every possible fee.

So if your credit card is not Apple Card, maybe it should be.

Upon seeing this advertisement, I thought: Apple Card is not the only credit card that has no fees; my oldest credit card, Discover Card, also does not charge fees. Moreover, Discover Card has higher rewards in certain categories than Apple Card. Thus, I tweeted a reply under their ad, mimicking their grammar:

Apple Card has no fees and measly 2% rewards unless you buy from Apple. Discover Card has no fees and up to 5% rewards in rotating category, which is grocery stores this quarter. So if your credit card is not Discover Card, maybe it should be.

Twitterverse thinks I'm hilarious. They liked and retweeted my reply, so that it quickly became the top reply under the Apple Card ad, and everyone who expands the ad would see it.

Wandering in Los Angeles

This week, I virtually travel to Los Angeles, California, a city that I visited many times.

The Airport

Los Angeles International Airport (LAX) is one of the busiest airports in the United States. At a distance of 90 minutes flight time, LAX is the nearest major international airport from Tucson where I attended grad school. Therefore, I often find myself transiting in LAX.

LAX sign, 2019-03-06

Since I entered United States for the first time nine year ago, I transited through LAX 10 times, including 8 flights to/from China and 2 flights to/from Honolulu, Hawaii. Occasionally I have a long connection time. During that time,