Repository navigation
Expand file tree
/
Copy pathposts.html
More file actions
20 lines (18 loc) · 23 KB
/
Copy pathposts.html
File metadata and controls
20 lines (18 loc) · 23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html><html><head><meta content="width=device-width, initial-scale=1.0" name=viewport /><meta charset=utf-8 /><meta content="IE=edge,chrome=1" http-equiv=X-UA-Compatible /><title>Ajira</title><link href="/images/favicon.ico" rel="shortcut icon"/><link href="//fonts.googleapis.com/css?family=Dosis:400" rel=stylesheet /><link href="/stylesheets/all-cd0c1e1a.css" rel=stylesheet /><script>
/* Modernizr 2.8.3 (Custom Build) | MIT & BSD
* Build: http://modernizr.com/download/#-shiv-cssclasses
*/
;window.Modernizr=function(a,b,c){function u(a){j.cssText=a}function v(a,b){return u(prefixes.join(a+";")+(b||""))}function w(a,b){return typeof a===b}function x(a,b){return!!~(""+a).indexOf(b)}function y(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:w(f,"function")?f.bind(d||b):f}return!1}var d="2.8.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m={},n={},o={},p=[],q=p.slice,r,s={}.hasOwnProperty,t;!w(s,"undefined")&&!w(s.call,"undefined")?t=function(a,b){return s.call(a,b)}:t=function(a,b){return b in a&&w(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=q.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(q.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(q.call(arguments)))};return e});for(var z in m)t(m,z)&&(r=z.toLowerCase(),e[r]=m[z](),p.push((e[r]?"":"no-")+r));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)t(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},u(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function q(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?o(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(s,b.frag)}function r(a){a||(a=b);var c=n(a);return s.shivCSS&&!g&&!c.hasCSS&&(c.hasCSS=!!l(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),k||q(a,c),a}var c="3.7.0",d=a.html5||{},e=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,f=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g,h="_html5shiv",i=0,j={},k;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+p.join(" "):""),e}(this,this.document);
</script><script>(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-82197438-1', 'auto');
ga('send', 'pageview');</script></head><body class=posts><nav class="clearfix white fixed pt0 pr0 pl0 z4 md-show lg-show" id=main><div class=left><a class="btn caps bg-darken-2" href="//www.ajira.tech">Ajira</a></div></nav><div class="bg-gray clearfix" id=blog><h2 class="m3 center caps sr-top"><span class="inline-block p2 border border-black rounded">Our Thoughts</span></h2><div class="container clearfix p1 mb2"><div class=clearfix></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://www.demystifyfp.com/clojure/blog/clojure-in-production/" target=_blank>Closing in on Clojure - Using Clojure in Production</a></h3><p><span class="h6 bold">Functional Programming, Clojure, Hammock Driven Development, Dynamic programming language • </span><span>We at Ajira successfully delivered our first project in Clojure recently.We were able to deliver some complex features with ease because of the outstanding data-oriented programming features provided by Clojure. This blog post summarizes our experiences and learnings.</span><span class="h6 bold"> • <a class=olive href="https://www.demystifyfp.com/clojure/blog/clojure-in-production/" target=_blank>read more</a></span></p></div></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="http://blog.tamizhvendan.in/blog/2016/09/30/leveraging-property-based-testing/" target=_blank>Leveraging Property Based Testing</a></h3><p><span class="h6 bold">Property Based Testing • </span><span>Property-based testing is one of the powerful technique to unit test the code. Unlike the example-based testing (where we Arrange a set of example inputs to Assert the system under test), Property based testing enable us to focus on what we wanted to test and liberate us from doing mundane work on coming up with sample inputs. Recently, I got a chance to use Property based testing in an open source library that I am developing to use Suave in Azure Functions. I felt very productive and it was a such a joy to write the unit tests. In this blog post, you are going to learn how Property-based testing has helped me and why you need to consider using(or learning) it</span><span class="h6 bold"> • <a class=olive href="http://blog.tamizhvendan.in/blog/2016/09/30/leveraging-property-based-testing/" target=_blank>read more</a></span></p></div></div><div class=clearfix></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="http://blog.tamizhvendan.in/blog/2017/07/26/managing-data-in-golang-using-gorm-part-2/" target=_blank>Managing Data in Golang Using Gorm - Part 2</a></h3><p><span class="h6 bold">Golang • </span><span>In my previous blog post, we have seen how to use the create and find function in gorm along with use-case driven approach. In this blog post, we will be extending our blogging platform gomidway by implementing an another interesting use case</span><span class="h6 bold"> • <a class=olive href="http://blog.tamizhvendan.in/blog/2017/07/26/managing-data-in-golang-using-gorm-part-2/" target=_blank>read more</a></span></p></div></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="http://blog.tamizhvendan.in/blog/2017/07/23/managing-data-in-golang-using-gorm-part-1/" target=_blank>Managing Data in Golang Using Gorm - Part 1</a></h3><p><span class="h6 bold">Golang • </span><span>We have been using gorm as a primary tool to interact with PostgreSQL from golang for almost a year now. Gorm does an excellent job as an ORM library, and we enjoyed using it in our projects. Through this blog post series, I will be sharing our experiences on how we leveraged gorm to solve our client’s needs</span><span class="h6 bold"> • <a class=olive href="http://blog.tamizhvendan.in/blog/2017/07/23/managing-data-in-golang-using-gorm-part-1/" target=_blank>read more</a></span></p></div></div><div class=clearfix></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="http://blog.tamizhvendan.in/blog/2017/07/03/leveraging-interfaces-in-golang-part-2/" target=_blank>Leveraging Interfaces in Golang - Part 2</a></h3><p><span class="h6 bold">Golang • </span><span>In my previous blog post, we have seen how interfaces in golang can help us to come up with a cleaner design. In this blog post, we are going to see an another interesting use case of applying golang’s interfaces in creating adapters</span><span class="h6 bold"> • <a class=olive href="http://blog.tamizhvendan.in/blog/2017/07/03/leveraging-interfaces-in-golang-part-2/" target=_blank>read more</a></span></p></div></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="http://blog.tamizhvendan.in/blog/2017/06/24/leveraging-interfaces-in-golang-part-1/" target=_blank>Leveraging Interfaces in Golang - Part 1</a></h3><p><span class="h6 bold">Golang • </span><span>In my previous blog post on using golang in production, I have mentioned that interfaces are my favorite feature in golang. As a follow-up of this comment, I would like to share how we are using (my current project is also in golang!) the interfaces to keep our code clean and consistent through a series of three blog posts. This blog post series assumes that you are familiar with the basics of interfaces in golang. If would like to know what it brings to the table, I strongly recommend to check out this well-written article by Yan Cui. Let me start the series with a solution that we have implemented a few days back</span><span class="h6 bold"> • <a class=olive href="http://blog.tamizhvendan.in/blog/2017/06/24/leveraging-interfaces-in-golang-part-1/" target=_blank>read more</a></span></p></div></div><div class=clearfix></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="http://blog.tamizhvendan.in/blog/2017/05/01/using-golang-in-production-my-experiences/" target=_blank>Using GoLang in production My Experiences</a></h3><p><span class="h6 bold">Golang • </span><span>For the last one year, I was working with the development team of a leading media entertainment company in India and developed a cloud platform to distribute the DCPs across the globe in a uniform, scalable and cost-effective manner. We built the entire platform using golang and event-driven microservices architecture. It was an exciting journey, and this blog post summarizes my experiences of using golang in this project.</span><span class="h6 bold"> • <a class=olive href="http://blog.tamizhvendan.in/blog/2017/05/01/using-golang-in-production-my-experiences/" target=_blank>read more</a></span></p></div></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="http://blog.tamizhvendan.in/blog/2016/09/19/scale-up-azure-functions-in-f-number-using-suave/" target=_blank>Scale Up Azure Functions in F# Using Suave</a></h3><p><span class="h6 bold">Functional Programming, F# • </span><span>In this blog post, you are going to experience a scaled up version of Azure Functions in F# using Suave</span><span class="h6 bold"> • <a class=olive href="http://blog.tamizhvendan.in/blog/2016/09/19/scale-up-azure-functions-in-f-number-using-suave/" target=_blank>read more</a></span></p></div></div><div class=clearfix></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://technicalitee.blogspot.in/2016/09/langtons-ant-in-f.html" target=_blank>Langton's Ant in F#</a></h3><p><span class="h6 bold">Functional Programming, F# • </span><span>Some steps of my journey to discover functional programming. I used F#, which i know at a very basic level, to ramp up my Functional Programming and F# skills</span><span class="h6 bold"> • <a class=olive href="https://technicalitee.blogspot.in/2016/09/langtons-ant-in-f.html" target=_blank>read more</a></span></p></div></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://medium.com/@praveenjanakarajan/jasmine-or-mocha-66942388b196#.wnh20vjnv" target=_blank>Jasmine or Mocha</a></h3><p><span class="h6 bold">Automated Testing, Mocha, Jasmine • </span><span>So, the story goes like this. We have a big codebase, and a clean slate to write tests. We had Jasmine tests in the past, but those became unmaintained and stale. So, we got rid of it all, and started afresh</span><span class="h6 bold"> • <a class=olive href="https://medium.com/@praveenjanakarajan/jasmine-or-mocha-66942388b196#.wnh20vjnv" target=_blank>read more</a></span></p></div></div><div class=clearfix></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://fsharp.tv/gazettes/building-an-odata-service-in-f-using-entity-framework-and-suave-gazette-007-2/" target=_blank>Building an OData service in F# using Entity Framework and Suave</a></h3><p><span class="h6 bold">Programming, F# • </span><span>OData (Open Data Protocol) is an OASIS standard that defines the best practice for building and consuming RESTful APIs. In this article, you are going to learn how to implement an OData service in F# using Entity Framework and Suave.</span><span class="h6 bold"> • <a class=olive href="https://fsharp.tv/gazettes/building-an-odata-service-in-f-using-entity-framework-and-suave-gazette-007-2/" target=_blank>read more</a></span></p></div></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="http://blog.tamizhvendan.in/blog/2016/04/28/expressing-business-logic-with-f-number-s-partial-active-patterns/" target=_blank>Expressing Business Logic With F#'s Partial Active Patterns</a></h3><p><span class="h6 bold">F#, Clean code • </span><span>Checking the state of the system and performing a requested action only if certain conditions met, is an indispensable requirement in most of the software we write. Though it is a straightforward thing to do, things will get complex/messier when we need to check multiple conditions.</span><span class="h6 bold"> • <a class=olive href="http://blog.tamizhvendan.in/blog/2016/04/28/expressing-business-logic-with-f-number-s-partial-active-patterns/" target=_blank>read more</a></span></p></div></div><div class=clearfix></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://medium.com/@oldweaver/rubber-ducking-cbb2d6c0f154#.lku1fc1is" target=_blank>Rubber Ducking</a></h3><p><span class="h6 bold">Problem solving • </span><span>Sometimes, the Samurai in you is wading through a big hot desert with no sight of water in the horizon.</span><span class="h6 bold"> • <a class=olive href="https://medium.com/@oldweaver/rubber-ducking-cbb2d6c0f154#.lku1fc1is" target=_blank>read more</a></span></p></div></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://medium.com/@rdsubhas/sad-state-of-xyz-or-what-happens-when-you-pick-shiny-new-stuff-e49c28b235ec#.8wkzsanj1" target=_blank>Sad state of XYZ — or What happens when you pick shiny new stuff</a></h3><p><span class="h6 bold">Programming, DevOps, Web Development • </span><span>Sometimes, the Samurai in you is wading through a big hot desert with no sight of water in the horizon.</span><span class="h6 bold"> • <a class=olive href="https://medium.com/@rdsubhas/sad-state-of-xyz-or-what-happens-when-you-pick-shiny-new-stuff-e49c28b235ec#.8wkzsanj1" target=_blank>read more</a></span></p></div></div><div class=clearfix></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://medium.com/@oldweaver/step-into-your-cucumber-feature-e753fc3ca046" target=_blank>‘Step’ into your cucumber feature</a></h3><p><span class="h6 bold">VIM, CUCUMBER • </span><span>This post is about a way to reduce your inconvenience when writing step definitions in cucumber using Vim.</span><span class="h6 bold"> • <a class=olive href="https://medium.com/@oldweaver/step-into-your-cucumber-feature-e753fc3ca046" target=_blank>read more</a></span></p></div></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://medium.com/@rdsubhas/docker-for-development-common-problems-and-solutions-95b25cae41eb" target=_blank>Docker for Development: Common Problems and Solutions</a></h3><p><span class="h6 bold">Docker, DevOps • </span><span>Started using Docker from Dev to Prod yet? Here are some hacky solutions to common problems during development.</span><span class="h6 bold"> • <a class=olive href="https://medium.com/@rdsubhas/docker-for-development-common-problems-and-solutions-95b25cae41eb" target=_blank>read more</a></span></p></div></div><div class=clearfix></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://medium.com/@rdsubhas/docker-image-with-tor-privoxy-and-a-process-manager-under-15-mb-c9e344111b61" target=_blank>Docker image with Tor, Privoxy and a process manager under 15 MB</a></h3><p><span class="h6 bold">Docker, DevOps • </span><span>At a time when we're obsessed with saving minutes (sometimes seconds) in build/test/deploy times, container image sizes are an elephant in the room</span><span class="h6 bold"> • <a class=olive href="https://medium.com/@rdsubhas/docker-image-with-tor-privoxy-and-a-process-manager-under-15-mb-c9e344111b61" target=_blank>read more</a></span></p></div></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://medium.com/@rdsubhas/es6-from-callbacks-to-promises-to-generators-87f1c0cd8f2e" target=_blank>ES 5-6-7: From Callbacks to Promises to Generators to Async/await</a></h3><p><span class="h6 bold">Javascript, NodeJS • </span><span>Let's take a real life use case with the request library and convert it from callback style to promises to generators to async/await</span><span class="h6 bold"> • <a class=olive href="https://medium.com/@rdsubhas/es6-from-callbacks-to-promises-to-generators-87f1c0cd8f2e" target=_blank>read more</a></span></p></div></div><div class=clearfix></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://medium.com/@arvindkumarc/distractions-are-good-at-work-9b443913b288" target=_blank>Distractions are good at work</a></h3><p><span class="h6 bold">Agile • </span><span>This is not about the fulltime chatter boxes. At work, than always switching my windows to code and test and browse, I find it better and lively to spend sometime in interactions over the table</span><span class="h6 bold"> • <a class=olive href="https://medium.com/@arvindkumarc/distractions-are-good-at-work-9b443913b288" target=_blank>read more</a></span></p></div></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://medium.com/@rdsubhas/demystifying-devops-part-1-3745bf1da72e" target=_blank>The beginners guide to Infrastructure Automation</a></h3><p><span class="h6 bold">DevOps • </span><span>Everything you wanted to know about Infrastructure Automation, from task runners to configuration management to containers</span><span class="h6 bold"> • <a class=olive href="https://medium.com/@rdsubhas/demystifying-devops-part-1-3745bf1da72e" target=_blank>read more</a></span></p></div></div><div class=clearfix></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://medium.com/@arvindkumarc/why-i-chose-golang-4b89614c02be" target=_blank>Why I chose Golang?</a></h3><p><span class="h6 bold">Golang • </span><span>There are hundreds of posts to explain when to use golang, whats awesome about it etc. The fundamentals on the choice</span><span class="h6 bold"> • <a class=olive href="https://medium.com/@arvindkumarc/why-i-chose-golang-4b89614c02be" target=_blank>read more</a></span></p></div></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://medium.com/@rdsubhas/ruby-in-production-lessons-learned-36d7ab726d99" target=_blank>Ruby in Production: Lessons Learned</a></h3><p><span class="h6 bold">DevOps, Ruby • </span><span>Tips for a better Ruby production experience, along with automation scripts for Vagrant, Ansible and Docker</span><span class="h6 bold"> • <a class=olive href="https://medium.com/@rdsubhas/ruby-in-production-lessons-learned-36d7ab726d99" target=_blank>read more</a></span></p></div></div><div class=clearfix></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://medium.com/@rdsubhas/pitiful-restful-urls-5d576ffccb98" target=_blank>PITIful RESTful URLs</a></h3><p><span class="h6 bold">API, REST • </span><span>REST is supposed to simplify URLs. But guess what? Most people do it the other way around. Here are a top list of annoyances</span><span class="h6 bold"> • <a class=olive href="https://medium.com/@rdsubhas/pitiful-restful-urls-5d576ffccb98" target=_blank>read more</a></span></p></div></div><div class="col md-col-6 sm-center sr-bottom"><div class=px1><h3 class=h3><a class=olive href="https://medium.com/@rdsubhas/people-are-missing-the-whole-point-of-pair-programming-2f2b3a659565" target=_blank>People are missing the whole point of Pair Programming</a></h3><p><span class="h6 bold">Agile • </span><span>Pair Programming is always being touted as a tool to improve quality, but there is a completely different aspect to it</span><span class="h6 bold"> • <a class=olive href="https://medium.com/@rdsubhas/people-are-missing-the-whole-point-of-pair-programming-2f2b3a659565" target=_blank>read more</a></span></p></div></div></div></div><div class="gray bg-black bg-tile clearfix" id=footer><div class="container center h6 p2"><span>Copyright © 2021 —</span> <strong>Ajira</strong> <span>is a brand of</span> <strong>Symbion Technology Pvt Ltd</strong> </div></div><script src="/javascripts/all-1dcabc62.js"></script></body></html>