<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>acesubido</title>
    <description></description>
    <link>https://acesubido.net/</link>
    <atom:link href="https://acesubido.net/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Fri, 11 Nov 2022 21:27:59 -0500</pubDate>
    <lastBuildDate>Fri, 11 Nov 2022 21:27:59 -0500</lastBuildDate>
    <generator>Jekyll v4.2.0</generator>
    
      <item>
        <title>Why I leased a brand new car instead of financed?</title>
        <description>&lt;p&gt;Recently leased a 2021 Civic.&lt;/p&gt;

&lt;p&gt;For background:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;I’m a newcomer, arrived March 2021. 0 credit history. But I have work.&lt;/li&gt;
  &lt;li&gt;I drove a used 2008 Vios (Toyota) back in my home country. Bought that Vios in 2014, so I know how to buy and scope out a used car. I roughly have an idea of what maintenance items I have to watch out for.&lt;/li&gt;
  &lt;li&gt;Before leasing the Civic, I was renting a car for $800/mo. Enterprise up’d their rates last month to $1K so I was in a hurry to get a car.&lt;/li&gt;
  &lt;li&gt;Live in Stittsville. Not exactly a commute-friendly city so a car is needed for most errands.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I want a Civic/Corolla, because that’s what I’m used to. Here’s what I found out looking for used Civics/Corollas in Ottawa:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Looked through 4-5 dealerships looking for a used car.&lt;/li&gt;
  &lt;li&gt;2017/2018 Certified Pre-owned reaches into 18K-20K (tax included).&lt;/li&gt;
  &lt;li&gt;I’m already at Full G. Car insurance and Interest rates are absurdly high for a newcomer, regardless if it’s new or not. Interest rates at 4.99%-6.99%. Insurance at $270-$390 per month. Looked through Sonnet, TDInsurance, Scotia, Economical, and BelAir. TD gave me the lowest.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Brand New Car:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Warranty for 3 years. 0.99% interest rate.&lt;/li&gt;
  &lt;li&gt;Used car payments are almost the same due to the interest rates I get being a newcomer.&lt;/li&gt;
  &lt;li&gt;Looked into getting a new car instead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Went for a new car instead:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;I know how much it costs to maintain a used car in my country, but I don’t know how much it costs here. &lt;/li&gt;
  &lt;li&gt;I can have coolant tanks and fans replaced for CAD$300 back in my home country, but I don’t know if the income-expense ratio for car repairs are the same here. &lt;/li&gt;
  &lt;li&gt;I also have little idea on winters. &lt;/li&gt;
  &lt;li&gt;I’m dealing with so much right now just settling, paying rent/utilities, and moving, might as well save myself the maintenance headache and go for the new car if the difference in monthly payments is small due to 2 things as a newcomer: high interest rates and high insurance payments. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So onto thinking about Financing vs. Leasing:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Finance 0.99%
DP: CAD$5000
Payments: CAD$385.5 x 60mos = 23,130
Total Out: CAD$28,130

Lease 0.99%
DP: CAD$2500
Payments: CAD$285 x 48mos = 13,680
Buy out after 4 years: $10,330.
Total w/ Buy out: CAD$26,510
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here’s why I went for Leasing (I got approved for 4 years):&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;If I finance, I’m gonna DP a large amount of capital and monthly payments to a car during a time where my settlement isn’t final yet. It doesn’t sound right. I’m not fully settled yet and don’t have enough breathing room to have $5,000 and $100 more per month stuck at a utility. I don’t know the unexpected expenses and premiums as an immigrant.&lt;/li&gt;
  &lt;li&gt;“Lease and Buy out” vs. “Finance Total Out” roughly costs the same due to these low interest rates. I have more $100 cashflow per month if I lease.&lt;/li&gt;
  &lt;li&gt;For context. A 2017 lease return sells for $17K at current market rates in Ottawa. My buy out is $10,330 by 2025, I’m pretty sure by then I can sell my 2021 Civic for around $12K-$15K (depending on the popularity of ICE vehicles at a rapidly electrifying automobile industry).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This might be different for other cars (Corolla, Elantra, etc.). As far as all my calculations go, leasing the heavily discounted 2021 Civic from a newcomer’s perspective is a better financial decision than financing it.&lt;/p&gt;
</description>
        <pubDate>Tue, 03 Aug 2021 12:51:00 -0400</pubDate>
        <link>https://acesubido.net/2021/08/03/why-i-leased-instead-of-financed.html</link>
        <guid isPermaLink="true">https://acesubido.net/2021/08/03/why-i-leased-instead-of-financed.html</guid>
        
        <category>personal</category>
        
        <category>napkin math</category>
        
        
      </item>
    
      <item>
        <title>Rails.logger.silence and threading</title>
        <description>&lt;p&gt;So we have this block inside an initializer:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;user_id_lookup: proc do |env|
  Rails.logger.silence do
    # Code for selecting a UserID based on an access token
  end
end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This is executed by a library called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;message_bus&lt;/code&gt;. MessageBus is a simple gem that allows your rails server to publish messages to subscribers.&lt;/p&gt;

&lt;h3 id=&quot;problem&quot;&gt;Problem&lt;/h3&gt;

&lt;p&gt;We introduced this silence block lately to avoid logging sensitive information such as tokens. The problem was, after a while, we noticed that the server wasn’t logging anything at all!&lt;/p&gt;

&lt;h3 id=&quot;debugging&quot;&gt;Debugging&lt;/h3&gt;

&lt;p&gt;Checking out the logs, we noticed that the logs always stop after it tries running that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;user_id_lookup&lt;/code&gt; block. We quickly tried removing that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Rails.logger.silence&lt;/code&gt; block, and the logs went about on its way.&lt;/p&gt;

&lt;p&gt;After much reading, it looks like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Rails.logger.silence&lt;/code&gt; actually replaces the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;log_level&lt;/code&gt; of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;logger&lt;/code&gt; during that block. Seeing that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;message_bus&lt;/code&gt; runs these &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;proc&lt;/code&gt;’s in different threads, reassigning that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;log_level&lt;/code&gt; to a singleton like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Rails.logger&lt;/code&gt; feels like entering a cave of dragons fighting over the same gold stash.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Thread 1 starts
Thread 1 gets the current Rails.logger level     (level 1)
Thread 1 silences the current Rails.logger       (level 0)
Thread 2 starts
Thread 2 gets the current Rails.logger level     (level 0)
Thread 1 returns back the old Rails.logger level (level 1)
Thread 1 finishes                                (level 1)
Thread 2 silences the current Rails.logger       (level 0)
Thread 2 returns back the old Rails.logger level (level 0)
Thread 2 finishes                                (level 0)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The way to solve this would be to instantiate a new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Logger&lt;/code&gt; for that thread, instead of mutating the singleton &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Rails.logger&lt;/code&gt;. Another way would be to override &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ActiveRecord::LogSubscriber#debug&lt;/code&gt;, this makes me think of coding up a gem that can filter the params of a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WHERE&lt;/code&gt; clause.&lt;/p&gt;
</description>
        <pubDate>Mon, 21 Oct 2019 00:00:00 -0400</pubDate>
        <link>https://acesubido.net/2019/10/21/rails-logger-silence-and-threading.html</link>
        <guid isPermaLink="true">https://acesubido.net/2019/10/21/rails-logger-silence-and-threading.html</guid>
        
        <category>ruby</category>
        
        <category>work</category>
        
        
      </item>
    
      <item>
        <title>Circuit Breaking in Ruby</title>
        <description>&lt;h3 id=&quot;what-is-circuit-breaking&quot;&gt;What is Circuit Breaking?&lt;/h3&gt;

&lt;p&gt;Imagine you’ve got a piece of code making multiple remote calls: some 3rd party, some internal. Then out of nowhere, you get a timeout error. Your whole stack collapses, and you get a raise exception in Bugsnag. Of course, we’d want our application to degrade gracefully. If it’s network related issue, one way to make it degrade gracefully is to keep retrying the call instead of blowing up in the first sight of a network-related exception like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TimeoutError&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Michael Nygard popularized the Circuit Breaker pattern to prevent this kind of catastrophic cascade. It’s a pattern where you wrap those calls in a loop where it keeps retrying once it rescues a network-related exception.&lt;/p&gt;

&lt;p&gt;Here’s what it looks like using Ruby:&lt;/p&gt;

&lt;p&gt;Use either &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;yammer/circuitbox&lt;/code&gt; or the more straightforward &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ooyala/retries&lt;/code&gt;. Here’s what it looks like with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;retries&lt;/code&gt; gem:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;exception_list = [
  HTTPClient::ReceiveTimeoutError,
  # etc.
]

with_retries(max_tries: 3, rescue: exception_list) do |attempt_number|
  # Call an external service that CAN be prone to failures
end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;That’ll keep retrying that block of code 3 times in a randomized interval. Even if it encounters raised errors in that exception list — a simple pattern to make your application work a little smoother.&lt;/p&gt;

</description>
        <pubDate>Fri, 11 Oct 2019 00:00:00 -0400</pubDate>
        <link>https://acesubido.net/2019/10/11/circuit-breaking-in-ruby.html</link>
        <guid isPermaLink="true">https://acesubido.net/2019/10/11/circuit-breaking-in-ruby.html</guid>
        
        <category>ruby</category>
        
        <category>work</category>
        
        
      </item>
    
      <item>
        <title>Part 2 - Napkin Math: Owning a yacht</title>
        <description>&lt;p&gt;&lt;a href=&quot;/2019/09/20/napkin-math-owning-a-yacht.html&quot;&gt;Ever since Part 1&lt;/a&gt;, I’ve gone down the rabbit hole. The rabbit hole of yachting. After much research and some helpful DM’s in twitter, here’s some stuff I learned:&lt;/p&gt;

&lt;h2 id=&quot;cliff-notes&quot;&gt;Cliff Notes&lt;/h2&gt;

&lt;dl&gt;
  &lt;dt&gt;Size&lt;/dt&gt;
  &lt;dd&gt;Based on various forums, the perfect boat size for a beginner is something below 40ft. The smaller it is, the easier it is to captain and maintain.&lt;/dd&gt;
  &lt;dt&gt;Marinas&lt;/dt&gt;
  &lt;dd&gt;Marina’s are the lifeblood of the maritime industry. They offer water, fuel, electricity (shore power), sewage disposal, local maintenance shops/services, and shelter from storms (typhoon breakers).

    &lt;p&gt;I’ve underestimated the expenses from mooring (to secure to a buoy) and berthing (parking on a dock) yachts. Usually, a marina has a yacht club; for example, Subic Bay’s membership is 250,000PHP. &lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

    &lt;p&gt;Expensive? Well, if you want to berth your 40ft. yacht on Subic Bay, they charge 45,000PHP/month for non-members, and 15,000PHP/month for members &lt;sup id=&quot;fnref:2&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;. In the long run, getting that membership is a sweeter deal.&lt;/p&gt;

    &lt;p&gt;Want to moor off of Coron? It’s 250PHP/day. &lt;sup id=&quot;fnref:3&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:3&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; Thinking about where your homeport should be is critical to what your yacht can offer if you decide to start making it into a business.&lt;/p&gt;
  &lt;/dd&gt;
  &lt;dt&gt;Price&lt;/dt&gt;
  &lt;dd&gt;Of course, to purchase a Yacht made overseas, you’ll have to import it. The Philippines has a 20% tax on top of Yachts as they are “recreational”, along with sports cars (Ferrari, Lamborghini). On top of that, there’s 12% VAT and 0%-65% CIF based on its value.

    &lt;p&gt;That high entry point makes locally made boats and second-hand boats from the PH (or the ASEAN region, 0% import tariffs) very economical. You’ll get way cheaper yachts compared to importing a boat from an international manufacturer.&lt;/p&gt;
  &lt;/dd&gt;
  &lt;dt&gt;Maintenance&lt;/dt&gt;
  &lt;dd&gt;Maintaining a small yacht is more manageable, pick a famous brand as well, and you’ll have an easier time getting parts. Popular brands that have dealers in the Philippines are Princess, Azimut, Sunseeker, Searay, Lagoon, and Beneteau.&lt;/dd&gt;
  &lt;dt&gt;Certifications&lt;/dt&gt;
  &lt;dd&gt;If you plan to use your yacht for commercial purposes, you’ll need to get the proper licenses and certifications from the Maritime Authority of the Philippines. After getting the appropriate registration, your commercial yacht will be subject to inspections.&lt;/dd&gt;
  &lt;dt&gt;Yacht Characteristics&lt;/dt&gt;
  &lt;dd&gt;
    &lt;h6 id=&quot;sail-or-power&quot;&gt;Sail or Power&lt;/h6&gt;

    &lt;p&gt;For the price, Sailboats and Catamarans (sail) are cheaper than Motor Yachts. Usually lists for half the price of what a motor yacht and the fuel consumption is a fraction of what a motor yacht uses.&lt;/p&gt;

    &lt;p&gt;For speed, a 40ft family cruising sailboat can top 8-11 knots. A motor yacht can do double or triple that. It depends if your passengers like the journey or the destination.&lt;/p&gt;

    &lt;h6 id=&quot;fuel-consumption&quot;&gt;Fuel consumption&lt;/h6&gt;

    &lt;p&gt;I’ve grossly underestimated fuel consumption on a motor yacht.  A 40ft 2016 Beneteau Gran Turismo 40 can consume &lt;strong&gt;17gal/hr (64liters/hr) at 23.6kts (43kph)&lt;/strong&gt;. &lt;sup id=&quot;fnref:4&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:4&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

    &lt;p&gt;The previous yacht, which is around 76ft., could eat up way way more than 4 gallons/hr. Depending on the speed of the cruise, the size/number of engine(s), the electricity usage and the hull. 200kPHP/month is way too low for a yacht that size.&lt;/p&gt;

    &lt;h6 id=&quot;motor-boat-types&quot;&gt;Motor Boat Types&lt;/h6&gt;

    &lt;p&gt;Cruisers are fast because their hulls are meant to skip on top of the water. Recreational Trawlers have full or semi-displacement hulls, meaning they’re designed to cut through the water; this makes them slower than cruisers. Recreational Trawlers run at lower speeds, but it gives them exceptional range in one tank of fuel; this means the majority of them are designed to be a little more livable and seaworthy (rolls less with swelling waves and can handle bad weather).&lt;/p&gt;
  &lt;/dd&gt;
&lt;/dl&gt;

&lt;h3 id=&quot;ideal-yacht&quot;&gt;Ideal Yacht&lt;/h3&gt;

&lt;p&gt;When choosing a yacht, you’ll need to list needs. On the top of my heads, here are my needs:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Size: I’m just starting out, I want something under 40ft.&lt;/li&gt;
  &lt;li&gt;Engines: I want 2 engines, just in case 1 fails, I can limp back to port.&lt;/li&gt;
  &lt;li&gt;Speed: I want to to cruise at around 11-13kts consuming at least 7-9gal/hr. I’d rather trade speed for fuel efficiency.&lt;/li&gt;
  &lt;li&gt;Charter: I don’t need something bluewater, just for coastal cruising, hopping islands, no more than 25NM away from shore. Trawlers make an ideal boat for this. I can imagine starting by just cruising and having dinner near MOA for the Fireworks Olympics and New Year’s Eve celebrations, then go up and make day trips to Corregidor from Manila Bay.&lt;/li&gt;
  &lt;li&gt;Accomodations: Sleeps at least 4-6 adults.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Based on this, if I were to buy a brand new yacht, I can safely say that these are my contenders:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.beneteau.com/en/swift-trawler/swift-trawler-35&quot;&gt;Beneteau Swift Trawler 35&lt;/a&gt;. (Can go for the 41 Sedan, because I can install Solar Panels).&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://minorcayachts.com/minorca-islander-34-yacht-for-sale/&quot;&gt;Minorca Islander 34&lt;/a&gt;. Though this only sleeps 2 couples.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.greenlinehybrid.si/yacht/greenline-39/&quot;&gt;Greenline 39 Hybrid-Electric&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are all under 500KUSD brand new, so getting a 2nd-hand could make the capital expense cheaper.&lt;/p&gt;

&lt;h2 id=&quot;napkin-math&quot;&gt;Napkin Math&lt;/h2&gt;

&lt;p&gt;Based on what we’ve learned the new table of finances if you took a smaller motor yacht:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/blog/napkin-math-part-2-plan.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Some notes on this setup:&lt;/p&gt;

&lt;h4 id=&quot;expense&quot;&gt;Expense&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;This plan assumes our homeport is Puerto Galera or Laiya Beach.&lt;/li&gt;
  &lt;li&gt;Opted to hire a part-time engineer that will keep after the yacht and act as a deckhand/skipper.&lt;/li&gt;
  &lt;li&gt;I’m making the number up with Marine Hull Insurance. I don’t know if that’s even the right premium.&lt;/li&gt;
  &lt;li&gt;Rule of thumb is that expenses for a yacht are 10%-20% of the purchase price. At 3.3M PHP annual expenses, we’re around 15%, and we might even be underestimating maintenance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;revenue&quot;&gt;Revenue&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;At this 56% utilization, you’ll get back your CapEx in 16 years.&lt;/li&gt;
  &lt;li&gt;Use a Sailboat or Catamaran. You can offer cheaper rates since you’re burning less fuel.&lt;/li&gt;
  &lt;li&gt;The real problem with a yacht is marketing your yacht and planning where your yacht should be to maximize charters.&lt;/li&gt;
  &lt;li&gt;You can probably lease out your yacht since you’re part of a yacht club. That’s extra cash. You can also offer day-trips to Corregidor or Subic.&lt;/li&gt;
  &lt;li&gt;Some couples upload videos on Youtube channels and get on Patreon as well. A couple even lets their Patreon subscribers do a 1-day cruise with them for free.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;At this 56% utilization, you’ll get back your CapEx in 16 years.&lt;/li&gt;
  &lt;li&gt;Use a Sailboat or Catamaran. You can offer cheaper rates since you’re burning less fuel.&lt;/li&gt;
  &lt;li&gt;The real problem with a yacht is marketing your yacht and planning where your yacht should be to maximize charters.&lt;/li&gt;
  &lt;li&gt;You can probably lease out your yacht since you’re part of a yacht club. That’s extra cash. You can also offer day-trips to Corregidor or Subic.&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Some couples upload videos on Youtube channels and get on Patreon as well. A couple even lets their Patreon subscribers do a 1-day cruise with them for free.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;Annual yacht profits would win over putting your CapEx in 3% government bonds. Although, with bonds, you’d retain your cash, only inflation devalues it. With a yacht, a yacht depreciates 10% of its value per year.&lt;/li&gt;
  &lt;li&gt;In the end, 28M is a lot of money. You could buy a lot of real estate and even beach resorts with that kind of money.&lt;/li&gt;
  &lt;li&gt;Yachts are for the rich, and they’re all about having fun doing this.&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
&lt;h4 id=&quot;references&quot;&gt;References&lt;/h4&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;http://www.gwclubshares.com/ &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;http://subicbayyachtclub.ph/marina-berthingrates.html &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:3&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;https://www.philippineyachtcharter.com/busuanga_coron_moorings.php &lt;a href=&quot;#fnref:3&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:4&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;https://www.youtube.com/watch?v=OyrKAljjk6U &lt;a href=&quot;#fnref:4&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Fri, 27 Sep 2019 00:00:00 -0400</pubDate>
        <link>https://acesubido.net/2019/09/27/part-2-napkin-math-owning-a-yacht.html</link>
        <guid isPermaLink="true">https://acesubido.net/2019/09/27/part-2-napkin-math-owning-a-yacht.html</guid>
        
        <category>napkin math</category>
        
        
      </item>
    
      <item>
        <title>Owning what I write</title>
        <description>&lt;p&gt;I’ve been writing on different platforms for most of my online life. I’ve blogged on:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Livejournal&lt;/li&gt;
  &lt;li&gt;Multiply&lt;/li&gt;
  &lt;li&gt;Tumblr&lt;/li&gt;
  &lt;li&gt;Blogger / Blogspot&lt;/li&gt;
  &lt;li&gt;Wordpress&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and the latest is Medium.&lt;/p&gt;

&lt;p&gt;Lately, I’ve been thinking: “what if Medium also goes down, or stops being relevant?” Then I thought, maybe it’s just time for me to own my content. For starters, I’ll start writing back here and keep my Medium.com inactive. That’s the first thing I’ll be doing.&lt;/p&gt;

&lt;p&gt;I’ve mulled around the idea of paying for blog hosting, like svbtle or posthaven to ensure that it stays online. I think I’ll opt for this git repo for now.&lt;/p&gt;
</description>
        <pubDate>Wed, 25 Sep 2019 00:00:00 -0400</pubDate>
        <link>https://acesubido.net/2019/09/25/owning-what-i-write.html</link>
        <guid isPermaLink="true">https://acesubido.net/2019/09/25/owning-what-i-write.html</guid>
        
        <category>personal</category>
        
        
      </item>
    
      <item>
        <title>Napkin math: Owning a yacht</title>
        <description>&lt;p&gt;&lt;a href=&quot;/2019/09/27/part-2-napkin-math-owning-a-yacht.html&quot;&gt;Update: Part 2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I used to do the Daily UI challenge, I worked on a challenge where I designed a yacht chartering app:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/blog/napkin-app.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Before making that design, I had to do research first:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;How do you make a yacht?&lt;/li&gt;
  &lt;li&gt;How were they sold? (brokering, direct sales, etc.)&lt;/li&gt;
  &lt;li&gt;What brands are popular?&lt;/li&gt;
  &lt;li&gt;What market do they serve?&lt;/li&gt;
  &lt;li&gt;How much does the maintenance cost?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If I didn’t learn that, the end design would look so out of touch and unconvincing. As I dove more in-depth, I found my Youtube feed immersed with yacht related videos. I learned how:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Yacht maintenance, as a rule of thumb, usually costs ~10% of its boat value per year. So if you have a 5MUSD yacht, expect 500kUSD/year in costs.&lt;/li&gt;
  &lt;li&gt;It’s a fast depreciating asset (10% p.a.).&lt;/li&gt;
  &lt;li&gt;People buy yachts for fun.&lt;/li&gt;
  &lt;li&gt;If you rent out a yacht, that’s called “chartering”. Charter price isn’t determined alone on how good the yacht is. The food, service, and crew also contribute to this. Crew should be top-notch, polite, can communicate clearly, and be good at service.&lt;/li&gt;
  &lt;li&gt;To fully book your yacht, you’ll need to market a specific niche. You can market your yacht for snorkeling or water sports like jet skiing and kite surfing. Others market their yachts for scuba diving, some for slow cruises and island hopping.&lt;/li&gt;
  &lt;li&gt;Italian and Turkish shipbuilding brands are super popular.&lt;/li&gt;
  &lt;li&gt;Monaco is the superyacht capital of the world.&lt;/li&gt;
  &lt;li&gt;Online Yacht listings are usually outdated, so you’ll need a yacht broker to find a yacht, and a yacht surveyor (with an engineering background) to check it out if it’s okay.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/user/YachtsForSaleCNI&quot;&gt;Youtube has an excellent channel called “YachtsforSale” that gets you a sneak peek of the yachting world.&lt;/a&gt;. That same youtube channel, endorsed a website called Yatco.com, despite not being sponsored and being its competitor. So I checked it out, and &lt;a href=&quot;https://www.yatco.com/buy-a-yacht/detail/242458/2010-princess-yachts-motor-yacht-main-category/&quot;&gt;I saw this 2.5MUSD yacht&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/blog/napkin-princess-yacht.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Then the &lt;strong&gt;useless-knowledge-hoarder&lt;/strong&gt; in me just decided:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“Hmmm, since we’ve already binged 1 hour of yacht videos. We’re already here: let’s take another 30 minutes, and do napkin math.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I like doing “back of a napkin” math. Maybe because it’s a strategic exercise, and I love strategy games like Starcraft and Dune. It’s also a role-playing exercise, and I love RPG’s:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Back-of-the-envelope_calculation&quot;&gt;The defining characteristic of back-of-the-envelope calculations is the use of simplified assumptions. A similar phrase in the U.S. is “back of a napkin”, also used in the business world to describe sketching out a quick, rough idea of a business or product.&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This statement may sound defeatist, but I think I will never live long enough to have money for a 2.5M USD yacht. If I ever do get the money to buy one, by some stroke of luck or genius, my conservative personality will keep me at bay from purchasing one. By all means, I am not an authority on yachts, nor have I owned one, so don’t take this next image as:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Business advice&lt;/li&gt;
  &lt;li&gt;Some expert claim&lt;/li&gt;
  &lt;li&gt;Investment advice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This business plan is just some random guy having fun with numbers. So here’s what the finances might look like if you ever bought a 2.5M USD yacht:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/blog/napkin-math-yacht-plan.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Notes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Charter&lt;/strong&gt; means to rent out your yacht to a group of people for a chartered course (ex: Day trip to Bataan, four days in Coron). They’ll have a crew of 6, and they can go island/beach hopping, snorkeling, and paddleboarding, etc. Inclusive of food, drink, and accommodation. The yacht has rooms for eight people, and eight berths (sleeping areas).&lt;/li&gt;
  &lt;li&gt;We want to offer high wages for the crew/chef/waitress to get the best talent. We’re offering a private resort in the middle of the sea.&lt;/li&gt;
  &lt;li&gt;To earn more cash during a charter, you can do what hotels and cruise liners do: have a mini-bar that charges extra margin (150PHP for a can of pringles, 100PHP for a can of beer consumed out of the usual dinner service, etc.)&lt;/li&gt;
  &lt;li&gt;Based on the Philippine Port Authority website: to park a boat in the dock, it costs 0.020USD per GRT (internal volume, not ship weight) per day. So if our yacht has a volume of 80 tons, you can park it for 1.6USD/day.&lt;/li&gt;
  &lt;li&gt;At 120 days left for personal use, that’s 4 months worth of own vacations.&lt;/li&gt;
  &lt;li&gt;You’ll get your 2.5MUSD back (break-even) in 29 years at 67% usage (33% for personal use).&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;If you put your CapEx into bonds, you’d retain your 120M and increase it at the same rate as the yacht’s annual profit. Whereas a yacht is a depreciating asset, around 10% p.a. (5M purchase price, 4.5M the next year, 4.05M, and so on). So if you sold the yacht after ten years, it might be less than 50% of its value.&lt;/li&gt;
  &lt;li&gt;You can even use your CapEx for real-estate, it will win out in the end instead of buying a yacht.&lt;/li&gt;
  &lt;li&gt;Yachts are not a good investment nor a store of value. Based on the napkin math, it’s a money sink. People buy yachts for fun and love of the sea.&lt;/li&gt;
  &lt;li&gt;For people who can afford a yacht, it’s their way to do family/friends vacations, New Year’s Eve or Christmas Parties. They skip the traffic, having to pay for hotel rooms, beach/island hopping, dining-out, or purchasing plane tickets. It might cost the same or a little bit more expensive than spending on a family vacation in Monaco or a cruise in the Carribean, but for the extra price, they get privacy and exclusivity. To put this into perspective for us, average people, this is a rich person’s annual travel/vacation budget. It’s their equivalent of your budget for a trip to Bohol, a road trip to La Union, etc.&lt;/li&gt;
  &lt;li&gt;Sample travel times: Batangas to Palawan in 7 hours. MNL to H.K. in 3 days.&lt;/li&gt;
  &lt;li&gt;A 2.5MUSD yacht is comparable to buying a five-bedroom home in S.F. (2.75MUSD in Zillow). Except that a yacht costs a lot to maintain, ~10% of its value per year. There are some cases of non-billionaire yacht owners often living in a more straightforward home than their yachts. They own a yacht to travel, have fun, and occasionally charter out to cover costs.&lt;/li&gt;
  &lt;li&gt;A 2.5MUSD yacht has more utility than a Bugatti Chiron sports car (2.75MUSD) or a Mercedes-AMG One (2.5MUSD).&lt;/li&gt;
  &lt;li&gt;If you’re really into it for the business, you could buy a Sail-type yacht. Capex and fuel costs will be cheaper. Sail yachts usually cost half of a motor-based yacht or less. Catamaran Sail Yachts are comparable to the price of motor-based yachts.&lt;/li&gt;
  &lt;li&gt;There’s also an upcoming market of solar-diesel hybrid yachts for, what they call, eco-friendly millionaires.&lt;/li&gt;
  &lt;li&gt;In the P.H., you can also have locally-made yachts that might be a fraction of what it costs to purchase an Azimut, Sunseeker, or A.B. motor-based yacht.&lt;/li&gt;
  &lt;li&gt;Manny Pacquiao’s 2011 Yacht costed P25M. Willie Revillame has 2 yachts in Subic. Gretchen Barretto also has two yachts. Chavit Singson’s P600M superyacht was used to transport Miss World candidates for island-hopping.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;resources&quot;&gt;Resources&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;yatco.com&lt;/li&gt;
  &lt;li&gt;https://news.abs-cbn.com/business/03/26/14/can-you-afford-yacht&lt;/li&gt;
  &lt;li&gt;https://nolisoli.ph/56149/yachts-philippines-jchua-20190125/&lt;/li&gt;
  &lt;li&gt;https://www.youtube.com/user/YachtsForSaleCNI - lots of good content about the yacht industry, finances, thought processes&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Fri, 20 Sep 2019 00:00:00 -0400</pubDate>
        <link>https://acesubido.net/2019/09/20/napkin-math-owning-a-yacht.html</link>
        <guid isPermaLink="true">https://acesubido.net/2019/09/20/napkin-math-owning-a-yacht.html</guid>
        
        <category>napkin math</category>
        
        
      </item>
    
      <item>
        <title>What's it like to work from home?</title>
        <description>&lt;p&gt;It’s been eight months since I started working from home. I’m with a company called Bloom Solutions; it’s a fintech startup based in the Philippines. Everyone works remotely; we meet face-to-face once or every other a week. Sometimes a few people meet up together in a coffee shop for tightly done work. Other than that, under normal circumstances, most of the work being punched out is done at home.&lt;/p&gt;

&lt;h3 id=&quot;benefits&quot;&gt;Benefits&lt;/h3&gt;
&lt;p&gt;“Working from home” certainly has its benefits:&lt;/p&gt;

&lt;h4 id=&quot;time-efficiency&quot;&gt;Time efficiency&lt;/h4&gt;
&lt;p&gt;Probably the most valuable benefit. No more 1 1/2 hour one-way commutes, it saves me 3 hours of being on the road. When it rains, make that 4 hours + 400PHP for getting Uber or Grab. Computing that on the back of the napkin, that’s 15 hours a week spent on the road. Its 60 hours a month, equivalent to 2.5 days a month. If you compute that over a year, it’s equivalent to 30 days being the road. A month where I could’ve spent somewhere else. I now spend more time with my newborn, help out my wife around the house, exercise, hobbies, and time for other things.&lt;/p&gt;

&lt;h4 id=&quot;minimal-personal-expenses&quot;&gt;Minimal personal expenses&lt;/h4&gt;
&lt;p&gt;No parking expense. No commute expense. No gas expense. No “lunch money” expense. Cook food and eat at home.&lt;/p&gt;

&lt;h4 id=&quot;work-not-scoped-to-location&quot;&gt;Work not scoped to location&lt;/h4&gt;
&lt;p&gt;I go out of the country, go to Tagaytay, go to a beach. It’s all okay; just sync timezones and schedules with the team and make sure that you have no client-facing meetings scheduled.&lt;/p&gt;

&lt;h4 id=&quot;flexible-schedule&quot;&gt;Flexible schedule&lt;/h4&gt;
&lt;p&gt;As long as I sync with the team and not miss out on any important meetings, I can do errands and still put out the work needed. Gone are the days that you’ll have to take a leave to get your VISA or Driver’s License.&lt;/p&gt;

&lt;h4 id=&quot;environment-fosters-tangible-results-for-creativesknowledge-workers&quot;&gt;Environment fosters tangible results for Creatives/Knowledge-workers&lt;/h4&gt;
&lt;p&gt;Work from home can be one of those ways to leave little place for programmers to operate in a “body shop” mentality. “Body shop” mentality is a certain mindset where “number of hours being inside the office” is the subconscious metric to measure productivity. Working from home, however, can provide a setup for people to produce tangible value instead of just waiting for 5 pm to arrive. Most people get this feeling that when co-workers are around, you subconsciously feel the need to make it look like you’re always working on something. Always. Still working on something. Typing something. Is the boss in the office? Display that busy IDE. Make random meetings.&lt;/p&gt;

&lt;p&gt;When you’re working at home, you’re by yourself; it’s just between you and that task list. Just get those done. Sit down, write down the details of what you’re working on, work on a task, ship it, and check that task off the list. Make sure your co-workers can pick up, understand what you wrote, see what’s finished and what’s not. Otherwise, nothing will happen, and the company will feel the missing pieces of the work coming from you. Take note that this doesn’t apply to specific industries, and culture dictates how people operate in a self-sustaining manner more than a “remote work” setup.&lt;/p&gt;

&lt;h4 id=&quot;productive-meetings&quot;&gt;Productive meetings&lt;/h4&gt;
&lt;p&gt;The meetings revolve around strategy, direction, and design decisions. No 1-hour meetings discussing status updates or doing follow-ups.&lt;/p&gt;

&lt;h3 id=&quot;disadvantages&quot;&gt;Disadvantages&lt;/h3&gt;
&lt;p&gt;Though it certainly has it’s disadvantages:&lt;/p&gt;

&lt;h4 id=&quot;distraction-from-friends-and-relatives&quot;&gt;Distraction from Friends and Relatives&lt;/h4&gt;
&lt;p&gt;When friends and relatives are visiting, this is how it usually goes when my wife mentions to them I work from home: “Oh! Does he work from home? That sounds great! Hey Ace, how’s working from home? Anyway, have you watched the new season of Stranger Things?”. “Umm, it’s great!”. As much as I want not to offend you, please let me focus. This same situation applies to people in the office; the difference between working from home is: the people around you aren’t working. Your lack of interactivity would sometimes come across wrongly to relatives and friends. To some, because you’re in your PJ’s, it doesn’t have much visual weight as someone in the office, you may come across as someone being available for chit-chat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt; - Smile and gently tell them that you’re currently working, and they won’t bother you as much instead of just deflecting their chit chat.&lt;/p&gt;

&lt;h4 id=&quot;blurring-lines-between-life-and-work&quot;&gt;Blurring Lines between Life and Work&lt;/h4&gt;
&lt;p&gt;In the first few weeks, you wouldn’t know that it’s already at the weekend. Life and work are blurred together. I try to place some distance between them. Before I face my laptop, I take a bath, brush my teeth, wear something else aside from my PJs, have my breakfast, and then “go” to work. This “distance” involves going to a place in the house where my “office chair” and “table” resides. Then there’s your wife and your children. They know you shouldn’t be bothered, so they don’t, but really, they’re there. It’s hard not to talk to Elain and play with Navi when I’m just a tap away.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt; - We’ve established a group of hours where I can help out in chores or hold/play with Navi. Mainly breakfast, lunch, and afternoon snack time. Elain also asks first if I’m on a Pomodoro break, or if I’m waiting for CI to pass and build images so that she can ask for help and small favors.&lt;/p&gt;

&lt;h4 id=&quot;personal-rhythm&quot;&gt;Personal Rhythm&lt;/h4&gt;
&lt;p&gt;Being at home may make you fall into the temptation of just binge-watching videos, surfing social media, or looking at HackerNews. Just make sure to maintain discipline, focus, and be systematic with how you spend your time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt; - I have my time tracker, Harvest, and keep track of what I’m working on and my time. This rhythm gets me going.&lt;/p&gt;

&lt;p&gt;I’ll probably update this post as time goes by, it’s undoubtedly a life-changing on-going experience.&lt;/p&gt;

</description>
        <pubDate>Tue, 28 Nov 2017 00:00:00 -0500</pubDate>
        <link>https://acesubido.net/2017/11/28/what-s-it-like-to-work-from-home.html</link>
        <guid isPermaLink="true">https://acesubido.net/2017/11/28/what-s-it-like-to-work-from-home.html</guid>
        
        
      </item>
    
      <item>
        <title>Encountering Production Bugs</title>
        <description>&lt;p&gt;This week I encountered some features that I engineered, which broke in production, it kept me on my toes, but it was worth it to ship the feature correctly. A little collection of things I noted down:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Time pressure is real. Writing something to make something work is different from writing to make it trustworthy, balance them both by keeping the feature scope to be smaller relative to the feature requirement.&lt;/li&gt;
  &lt;li&gt;When you encounter a bug, don’t just fix it, and it’s unit test, write an integration test for it too.&lt;/li&gt;
  &lt;li&gt;When using Ruby, you might be tempted to metaprogram a lot of stuff to make things lean, don’t abuse it keep things readable, not too verbose but understandable.&lt;/li&gt;
  &lt;li&gt;Don’t abuse dynamic typing and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.try&lt;/code&gt; you might get hurt with nil classes.&lt;/li&gt;
  &lt;li&gt;A huge no-no when something is silently failing. Make sure error handling is top-notch, especially for background workers. Lift errors as much as you can to the user.&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Mon, 29 May 2017 00:00:00 -0400</pubDate>
        <link>https://acesubido.net/2017/05/29/encountering-production-bugs.html</link>
        <guid isPermaLink="true">https://acesubido.net/2017/05/29/encountering-production-bugs.html</guid>
        
        
      </item>
    
      <item>
        <title>Improving our WiFi at home</title>
        <description>&lt;p&gt;So, I’m in the process of trying to get the best performance out of our internet setup at home. I’ve worked with Network Architects and ansible’d network configurations for large Hadoop clusters that transfer terabytes, but sadly, I haven’t sat down and fixed our internet at home. I’m a software engineer, and no means a hardcore Cisco Certified Network Engineer, so I decided to sit on this problem and try to improve our situation.&lt;/p&gt;

&lt;p&gt;If you have slow internet, you can’t just keep throwing money at the problem by upgrading your ISP subscription. You’ll have to check off problems one by one. For me, I sat down and thought: I’ll have to start by improving what I can improve on my side. Which means, the WiFi network within our home.&lt;/p&gt;

&lt;p&gt;To give a short background, our current internet setup at home looks like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/blog/ourwifisetup.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Almost everyone probably has this simple setup, unless you have a mansion and you need to cover every inch of your house, including your garden and pool.&lt;/p&gt;

&lt;p&gt;So, I open up terminals and do some &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;iperf&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nc&lt;/code&gt; tests. Initial results revealed that network between 2 local IP addresses in our network is both slow and experiences packet loss. In layman’s terms: our wifi coverage and network throughput generally suck. Beyond the terminal, it’s pretty apparent. A LAN game of “Starcraft: Brood War” between 2 laptops connected on the same network via Wifi, to the same router, is pretty laggy.&lt;/p&gt;

&lt;p&gt;So it’s time to really improve our WiFi coverage.&lt;/p&gt;

&lt;h4 id=&quot;what-we-bought-and-what-we-will-buy&quot;&gt;What we bought and what we will buy&lt;/h4&gt;

&lt;p&gt;From the earlier diagram, “Our Wifi Router” and “Our Repeater” we’re bought at PC Express. The router and repeater we have are very old Linksys models, RE1000 for the Repeater and WRT120 for the router. RE1000 was purchased around 2012 and the WRT120N was purchased around 2010. We plan to buy new ones, but should be under a specific budget: 8,000PHP for a router, and 8,000PHP for a repeater. I know that sounds a lot, but I’m currently working from home and would need the internet at our house really worked up. What we plan to buy are the following:&lt;/p&gt;

&lt;h4 id=&quot;for-the-router-we-chose-the-tp-link-archer-c7-v2&quot;&gt;For the router we chose the TP-Link Archer C7 V2&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;/img/blog/ourwifisetup-archer-c7.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://thewirecutter.com/reviews/best-wi-fi-router/&quot;&gt;An extensive review was made on it&lt;/a&gt; and it’s pretty cheap compared to the other options. It’s also tested against a multi-room house like ours.&lt;/p&gt;

&lt;h4 id=&quot;for-the-repeater-we-chose-the-tp-link-re580d-wifi-extender&quot;&gt;For the repeater we chose the TP-Link RE580D WiFi Extender&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;/img/blog/ourwifisetup-re580d.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Looking for a counterpart to the router, it seems that Netgear Nighthawk EX7000 or EX6200 takes the cake. But there’s no way to purchase it conveniently here in the Philippines, so I came across this TP-Link extender, and the &lt;a href=&quot;http://www.tomsguide.com/us/best-wifi-extenders,review-2225.html&quot;&gt;review’s are good&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;optimizing-the-network&quot;&gt;Optimizing the Network&lt;/h3&gt;

&lt;p&gt;But before we purchase this, I’ll have to optimize our network first and do a benchmark. Here’s what I found out about tinkering with our routers and such:&lt;/p&gt;

&lt;h4 id=&quot;for-the-main-router&quot;&gt;For The Main Router&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;Depending on your ISP, it’s best to set some DNS Servers on the main router. Google (8.8.8.8 and 8.8.4.4) and OpenDNS Servers (208.67.222.222 and 208.67.220.220) are best. Personally, we use PLDT, so I leave this blank. Using Google or OpenDNS as your DNS Servers seems a good idea but not for us. Based on my experience, for PLDT MyDSL Home connections, PLDT optimizes their connections with PLDT’s DNS Servers. Otherwise, you get bogged down by a lot of “Resolving Host” issues. A minor compromise.&lt;/li&gt;
  &lt;li&gt;On “Channel Width”, as much as possible, set it to 40MHz wide channels. You get the best peformance out of your router. But only use this if all of your devices support 802.11n. Otherwise, just use the 20MHz default.&lt;/li&gt;
  &lt;li&gt;Set your “Standard Channel” to some other channel that’s not common with other Wifi Signals in your area. Use a Wifi scanner (install one in your Android phone) and scan your area for other Wifi signals, there you’ll see the channels their using. If you set your “Standard Channel” to something uncommon, you’ll get better reception and network performance since you’re in a “less” crowded channel.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;for-repeaters&quot;&gt;For Repeaters&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;Anything infrastructure related should have Static IP’s. So if you have Wifi repeaters in your home, set a static IP for them in the main router. This’ll prevent them from having to look for an IP everytime they’re booted, or their connection needs to be renewed. It makes resolving hosts faster as well. For Linksys routers just click on “DHCP Reservation” and look for your repeater repeater listed there. Check it and reserve an IP for it.&lt;/li&gt;
  &lt;li&gt;Channel Width should be set as the same with the main router it’s connected to.&lt;/li&gt;
  &lt;li&gt;Double check that your repeater is also set on the same encryption as the main router.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;for-devices&quot;&gt;For devices&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;Unless you’re doing something out of the norm, like remote tunnels to datacenters, don’t set your DNS servers. Let the router supply them for you.&lt;/li&gt;
  &lt;li&gt;If you’re using Google Chrome, flush your DNS cache. You can do this by typing this address at the chrome address bar: chrome://net-internals/#dns . Then click ‘Clear Host Cache’.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;what-do-you-use-to-test-internet-speeds&quot;&gt;“What do you use to test internet speeds?”&lt;/h4&gt;

&lt;p&gt;I found Netflix’s &lt;a href=&quot;https://fast.com&quot;&gt;fast.com&lt;/a&gt; to be much better in terms of UX and sensible defaults. It tries to simulate a download from Netflix’s Global CDN, which is probably the use case for most of the sites I visit (google, youtube, reddit, facebook, hacker news, github, etc.). &lt;a href=&quot;https://speedtest.net&quot;&gt;Speedtest.net&lt;/a&gt; is great if you’re testing specifics, but for the majority of the use-cases, it’s too granular. The defaults assume I’m connecting to a local server. My browser is downloading a Dota 2 video from Youtube.com and my laptop is pushing a repo at Github.com, I’m not accessing some web page in Globe Makati.&lt;/p&gt;

&lt;p&gt;I bet there are a lot more settings I’ve missed, and this is a work in progress. I’ll post a part 2 once we get the new hardware.&lt;/p&gt;
</description>
        <pubDate>Sun, 21 May 2017 00:00:00 -0400</pubDate>
        <link>https://acesubido.net/2017/05/21/improving-our-wifi-at-home.html</link>
        <guid isPermaLink="true">https://acesubido.net/2017/05/21/improving-our-wifi-at-home.html</guid>
        
        
      </item>
    
      <item>
        <title>Speed up Ruby app bootup time</title>
        <description>&lt;p&gt;I frequently work with a large ruby application, and whenever I run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rspec path/to/single_unit_test.rb&lt;/code&gt; in a Rails application, it takes 2-3 seconds before the test starts. This is because of the amount of source files that are involved in the application. Fortunately, Shopify released a gem called &lt;a href=&quot;https://github.com/shopify/bootsnap&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bootsnap&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The short story: it speeds up ruby app boot time. Useful for large monolithic applications. Ruby apps slow down if you &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;require&lt;/code&gt; a lot of source files, so it speeds things up by doing applying some optimizations (compilation caching, YAML optimzations, etc.)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://engineering.shopify.com/235340559-bootsnap-optimizing-ruby-app-boot-time&quot;&gt;The long explanation, found here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simplest setup for a Rails 5.1.1 app (as of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bootsnap 0.2.14&lt;/code&gt;).&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# Gemfile&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'bootsnap'&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# bin/bundle&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'bootsnap'&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Bootsnap&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;setup&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;cache_dir: &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'tmp/cache'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;development_mode: &lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'RAILS_ENV'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'development'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;load_path_cache: &lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;autoload_paths_cache: &lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;disable_trace: &lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;compile_cache_iseq: &lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;compile_cache_yaml: &lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;It plays nicely with spring by speeding up the pre-fork and post-fork. Definitely a gem worth watching out for.&lt;/p&gt;
</description>
        <pubDate>Sat, 20 May 2017 00:00:00 -0400</pubDate>
        <link>https://acesubido.net/2017/05/20/speed-up-ruby-app-bootup-time.html</link>
        <guid isPermaLink="true">https://acesubido.net/2017/05/20/speed-up-ruby-app-bootup-time.html</guid>
        
        
      </item>
    
  </channel>
</rss>
