<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>thinkAPI | Sukumar Yethadka</title>
    <link>https://thinkapi.com/</link>
    <description>Recent content on thinkAPI | Sukumar Yethadka</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-US</language>
    <lastBuildDate>Wed, 19 Sep 2018 00:00:00 +0000</lastBuildDate>
    
	<atom:link href="https://thinkapi.com/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>AWS Lambda: Asynchronous Invocation Observations</title>
      <link>https://thinkapi.com/blog/aws-lambda-asynchronous-invocation-observations/</link>
      <pubDate>Wed, 19 Sep 2018 00:00:00 +0000</pubDate>
      
      <guid>https://thinkapi.com/blog/aws-lambda-asynchronous-invocation-observations/</guid>
      <description>AWS Lambda is great solution for a lot of problems but one might hit certain issues when pushing it to its limits. Let&amp;rsquo;s look at some interesting observations about it which can help us to work better with it.
A user can invoke a Lambda function either synchronously or asynchronously and the limits applied to the function depend on how a function is invoked, among other reasons. Some interesting aspects for asynchronous invocations are:</description>
    </item>
    
    <item>
      <title>Ansible: Information pause before run</title>
      <link>https://thinkapi.com/blog/ansible-info-pause/</link>
      <pubDate>Sun, 26 Feb 2017 00:00:00 +0000</pubDate>
      
      <guid>https://thinkapi.com/blog/ansible-info-pause/</guid>
      <description>Having reusable Ansible playbook is great. It enables well tested setups, code reuse and less boilerplate. The flip side of it is when we start using the same playbook across environments, (cloud) accounts and clusters. This leaves the possibility of running playbooks on targets other than what we originally intend for.
A quick solution is to print out the details of the run before the run. One such information display could look like:</description>
    </item>
    
    <item>
      <title>About</title>
      <link>https://thinkapi.com/about/</link>
      <pubDate>Sat, 16 Apr 2016 00:00:00 +0000</pubDate>
      
      <guid>https://thinkapi.com/about/</guid>
      <description>Hi! My name is Sukumar Yethadka. I am an engineer / devops / programmer / developer / (whatever term currently in vogue) and try to work on things that are distributed, scalable and high on traffic. I enjoy walking long paths, hiking, biking, chess, games and photography.
Challenges intrigue me and I like to unpack them into simpler more approachable terms. So, you would probably see me ask more than tell, listen more than talk or do more than ask.</description>
    </item>
    
    <item>
      <title>Projects</title>
      <link>https://thinkapi.com/projects/</link>
      <pubDate>Sat, 16 Apr 2016 00:00:00 +0000</pubDate>
      
      <guid>https://thinkapi.com/projects/</guid>
      <description>fuge https://github.com/sthadka/fuge
fuge is an Erlang library for carefully refactoring critical paths. Fuge allows you to implement Branch by Abstraction in production. See the excellent GitHub Scientist Post on why this pattern is useful.
loki https://github.com/sthadka/loki
loki is an Erlang key value store with optional key level locks and configurable backends. It is used in production at GameAnalytics
hydrogen https://github.com/sthadka/hydrogen
hydrogen is an Erlang project that aims to help you avoid repeating the same util code in each of your project.</description>
    </item>
    
    <item>
      <title>Resize RAW images on Mac OS</title>
      <link>https://thinkapi.com/blog/mac-raw-image-resize/</link>
      <pubDate>Sat, 16 Apr 2016 00:00:00 +0000</pubDate>
      
      <guid>https://thinkapi.com/blog/mac-raw-image-resize/</guid>
      <description>One usually starts out installing imagemagick for converting or resizing photos.
brew update &amp;amp;&amp;amp; brew upgrade &amp;amp;&amp;amp; brew install imagemagick  However, converting RAW pictures might throw an error:
$ convert -depth 16 -size 366x275 IMG_6520.CR2 image.jpg convert: delegate failed `&amp;quot;ufraw-batch&amp;quot; --silent --create-id=also --out-type=png --out-depth=16 &amp;quot;--output=%u.png&amp;quot; &amp;quot;%i&amp;quot;&#39; @ error/delegate.c/InvokeDelegate/1333. convert: unable to open image `/var/tmp/magick-63323_sbBHCIgS67y.ppm&#39;: No such file or directory @ error/blob.c/OpenBlob/2702. convert: no images defined `image.jpg&#39; @ error/convert.c/ConvertImageCommand/3252.  You need libraries for imagemagick to parse the RAW images.</description>
    </item>
    
    <item>
      <title>Codeigniter: Separating reads and writes for scaling MySQL</title>
      <link>https://thinkapi.com/blog/codeigniter-separating-reads-and-writes-for-scaling-mysql/</link>
      <pubDate>Thu, 23 Oct 2008 00:00:00 +0000</pubDate>
      
      <guid>https://thinkapi.com/blog/codeigniter-separating-reads-and-writes-for-scaling-mysql/</guid>
      <description>Generally websites average a ratio of 9:1 or more for reads:writes for their applications which makes MySQL replication as one of the ways to scale you web application. The simplest configuration is to separate reads and writes with all the reads coming from the slave servers.
MySQL Database replication
We can implement this in codeigniter using database groups. Below is a sample execution.
Create two active groups - one for read and one for write.</description>
    </item>
    
    <item>
      <title>How to skip MySQL replication counter</title>
      <link>https://thinkapi.com/blog/how-to-skip-mysql-replication-counter/</link>
      <pubDate>Tue, 07 Oct 2008 00:00:00 +0000</pubDate>
      
      <guid>https://thinkapi.com/blog/how-to-skip-mysql-replication-counter/</guid>
      <description>There are such times when MySQL replication stops when you run certain updates on the master and the slave fails. Like for example you may have run a create table or an alter table on the master and further inserts but these DDLs get skipped and the inserts into these non-existent tables cause the slave to error out and stop.
A simple way out of this is to run the missing DDLs on the slave and push the counter by a step.</description>
    </item>
    
    <item>
      <title>Making Codeigniter clean URLs cleaner</title>
      <link>https://thinkapi.com/blog/making-codeigniter-clean-urls-cleaner/</link>
      <pubDate>Tue, 07 Oct 2008 00:00:00 +0000</pubDate>
      
      <guid>https://thinkapi.com/blog/making-codeigniter-clean-urls-cleaner/</guid>
      <description>Usually when working with codeigniter you come across the use case where you need to remove the extra &amp;ldquo;index&amp;rdquo; appearing in the URL for purposes ranging from shorter URLs to SEO.
For example,
Current URL style: http://example.com/controller/method/category1/category2/page-name Target URL style: http://example.com/category1/category2/page-name.html  As you can see, the difference in the target URL is the absence of the controller name and the method name and the presence of the extension &amp;ldquo;.</description>
    </item>
    
  </channel>
</rss>