Blog
-
Taking Pyrsia to the community
Since the time we envisioned Pyrsia, we aimed to make it a community project. It was setup in such a way that it is open source, open governance and open process from the start. With our clear intention to engage the community we started working on it since we began in October 2021. Here is a recollection of what we did in the year or more since and where we are at the moment.
-
Updating github tokens - a not so secret document about secrets in github
As it happens I am managing and organization on github which has been both easy and sometimes tricky. Many a times it has been tricky due to the way github decided to manage projects and project related settings.
-
Concurrency in Rust
Talk at RustLondon
-
Building Open Source with Github
-
Why Pyrsia?
-
Modern Concurrency with Ruby
When working on building a log processing engine based on Fluentd we were facing serious stability issues. The daemon that processed the log used to run out of memory, it would crash or run the CPU to 100%. All this would mean a disruption in streaming the logs to the desired monitoring system. This in turn meant that the system health alerts and dashboards were losing current data. Ultimately this caused issues for customers in fixing problems that they observed. Overall a really bad scenario to put your customer in when all they are trying to do it observe the health of your product.
-
Concurrency with Golang
At Pivotal when we were building Pivotal Kubernetes Service(PKS) the most critical path of the process was the Release Engineering team. This team was tasked with making sure all the components integrate well together and we always produce a working version of PKS.This PKS was rebranded to become the Tanzu offering from VMware which has greatly evolved since then.
-
Setup your own intruder detection system .. in under 10 minutes
I was looking to build a security system that captures pictures and alerts me when an intruder walks in to my home or is ringing the door bell. My constraints being: Off the shelf wireless IP camera Local Ubuntu box to process those images Ease of maintenance and management Secure, to the T.. for Security
-
DevNetCreate 2018 - a cute little event - a big surprise
I made it to the DevNetCreate 2018 event this week and to my surprise it was super fun. I have been attending a fewof these in the bay area to get in touch with the developer community and also get a feel for what’s new.
-
2 challenges, one healthcare app, continuously delivered (Part II)
(This post is the second and final part of a two-part blog and focuses on continuous delivery. Previous postGiven that the healthcare environment has such strict regulatory requirements and legal boundaries it is a challenge in itselfto write good software that fits the bill. We also were looking to make this a seamless experience for our customers. Our platform was composed of a few parts: a mobile app that works on both iPhone/Android, web platform and an dedicated device that allows to integrate with out web platform for fast sync of data - in cases where a phone is not available.
-
2 challenges, one healthcare app, continuously delivered (Part I)
(This post is the first part of a two-part blog, I will focus on continuous delivery in the second part.)I spent the last 3 years in building and supporting an exciting HealthCare app - Glooko - which supports people with diabetes get a unified view of their health with a single click. When I started on it, I thought of it as another software application, but was about to learn a lot more. First, I learnt that Software is more useful when it can be applied to people’s health. Further, I learnt that Software is also more difficult when it applies to people’s health - well, rightfully so. Here I detail, what I learnt and why it makes sense to build it that way.
-
Rails Concerns for Serializers
Serializers for RailsActiveModel Serializers pack a lot of punch when it comes to dealing with objects. Theyallow you to use configuration that takes care of generating the proper serialization forconventional rails objects.Once your code matures to where finding reuse is not difficult, you may run into a situationwhere you want to leverage shared functionality via mixins. I ran into such a situation and wasnot able to find quick, clear documentation. Hence this effort to write it down.
-
EPIC integration
Glooko - Diabetes Management Platform
-
Isn't 40 mins too long for a build?
Yes, our CI build on @thatsMingle takes 40 mins.Yes, @thatsMingle is a ruby application. Yes, @thatsMingle runs on Java using JRuby.
-
Pushing ElasticSearch logs to Papertrail
Do you have your elasticsearch logs going to your logs folder? Are you still struggling to get them to syslog so that they could betransported to a log-archive system like we did?
-
Mingle Loves GitHub
Mingle has a new look and feel, if you have not seen it already. In improving the experience we have also been looking at improving how Mingle integrates with the world.
-
Mingle Wall Reader - Sync your physical card wall with Mingle
Some time ago we built a hardware integration to Mingle. We did not talk much about it at that time. Hence this post to revive the talk about hardware interface with Mingle. Also about other hardware projects that were done in ThoughtWorks around 100days of hardware.
-
Ephemeral ports in Unix
We learnt something while installing our app on a Linux box. We chose port numbers like 36601, 37601, 38601 for a number of clones of this app. When we restarted the app we found that we were not able to start one of the clones on its assigned port(say 36601).
-
EbDeployer
If you have been following this blog, you may have been curious what I have been upto recently. Few weeks ago we(Pengchao Wang and I ) got selected to speak at the aws re:invent 2013 conference to speak about our tool eb_deployer.
-
Android Intensive - Refined
At our San Francisco office we have been working on building mobile development capabilities recently. Here is a little glimpse into what we did to make it work.
-
Android Intensive - collaborative learning experience
At our San Francisco office we have been working on building mobile development capabilities recently. Here is a little glimpse into what we did to make it work.
-
SiriMingle - Siri assistance for Mingle
-
Installing Ubuntu on MacPro with OSX Lion - Dualboot
Installing Ubuntu on Macpro turned out to be little trickier than I would have liked it to be. For starters OSX Lion does not detect the Ubuntu ISO disc as bootable or something that bootcamp can load an OS from. There are tricks on the web that allow you to get around that.
-
moved blog to octopress
I am in the process of moving the blog from my jekyll based site to octopress. You will see that some of things work like:You may notice :
-
why blog?
I have come across too many people who are either not willing to blog, or do not see the point. This blog post is for them.
-
ubuntu power management
(Intended date of release 2012/02/13. Procrastination…. Finally released today.)
-
Mac remote with presentations
When preparing for a presentation recently I was looking at various presentation tools at my disposal.
-
Agile and Beyond 2012
I had the opportunity to speak at the Agile and Beyond conference recently. I loved the crowd, excellent turnout of 650+ people mostly from the Detroit MI area. Everyone was enthusiastic about learning how Agile can change the way they do their daily jobs.
-
Bundler with vendorized gems
Bundler is a tool for managing installed libraries on a ruby project. It comes bundled with rails 3 but can be used standalone without rails. Bundler tries to fix issues with having to manage your gems(and their related dependencies and versions) in a clean way. In doing so it allows you to work on your application and not have to worry about dependencies sucking the life out of your releases.
-
grok grack
Recently I was trying to host git repository from an already existing(non-bare) repository. I was looking for a solution that does not force me to create a barerepository and does not require me to install apache or some such webserver on my machine.
-
Simple Dashboard with Tab Slideshow
I had almost forgotten about Tab Slideshow for Firefox but an appropriate application of it jogged my memory. We wanted to show a few build reports on the dashboard and also wanted them to be big and visible. Also the reports do not change as rapidly as the build and can afford to be little delayed (since mostly we are showing long running build results). So we just opened up those reports in a tab each and started ‘Tab Slideshow’. Worked like a charm. We now have the simplest dashboard.
-
Airport Express as Remote Speakers for Airplay - Also with Linux
I have an airport express that I used to use as my wireless router when I travel. Very convenient and useful when hotels do not provide a wireless.(Yes I am looking at you Marriott.) Airport Express thanks to apple technology also supports airplay to play music over the air, and/or printer sharing via a USB connection.
-
Why I use Firefox over Chrome?
For development I choose to use tools which make the code transparent. Hence I prefer to use simple text editors over IDEs (although I like IntelliJ for Java code), or browsers that have good builtin support for debugging over closed/magical ones (hence Firefox/Chrome/Safari over IE).
-
Boost your BASH - and never again work with a plain shell
Over the past few months I have been using a community version of bashprofile, bashlogin, emacs settings and such. It started when Muness shared his bash_vcs (which was pimped command prompt) and I was hooked. I noticed a few projects that were sharing similar shell settings and enhancements. Forking from Toby’s dotfiles I started enhancing my experience on every machine I worked. This not only lead me to have a better understanding how different flavours of Unix work and also helped me automate a lot of my day to day activities.
-
Software KVM that works on linux, OSX and Windows
I was using Teleport for Mac as my KVM. But I could only control a mac mini and my laptop with it. I was looking for something that would work with Ubuntu and MacOSX switching the keyboard and mouse between them.
-
Ruby Kaigi 2010 - Report
Returned from Ruby Kaigi last weekend. The conference was held in Tsukuba International Convention Center and attended much of the enthusiastic ruby community (including Matz, Chad Fowler, Charles Nutter, Yehuda Katz et al). Had a blast presenting ‘Rocking the Enterprise with Ruby’.
-
Ruby Kaigi 2010 - Rocking the Enterprise with Ruby
Uploading the beta version of the presentation for today’s ruby kaigi talk.
-
Streaming Media from Ubuntu to Bravia
Over this weekend I set out to connect my Ubuntu machine with my Sony Bravia TV.( With inspiration from Sachin Dharmapurikar and DLNA.)
-
Setting up wireless usb card on Ubuntu - Lucid Lynx
I have faced the same problems with Wireless Networking as mentioned bymany on the web.
-
ActiveResource is an oxymoron?
One of the projects I worked on recently consisted of a number of applications interacting with each other over REST. These applications were written with an intention to obtain loose-coupling between them.
-
Preparing the Training Venue
The venue and the setting in which the training is conducted forms avery important part of how the training is received. When selecting thevenue ensure a few things beforehand:
-
Preparing to be a trainer
Preparing to be a trainer is more of a mental activity than physical. Tobe one you would want to observe one and learn how they do it. I had theopportunity of being trained by a set of great trainers/speakers andalso working them to understand how they prepared to be a trainer.Mostly it is about being aware of the responsibility. It takes time toget a feel for the amount of work that goes into being a trainer. Tofacilitate this we started by studying the course material that wasalready available (In a sense I was lucky that there was so much refinedcourse material available that I did not need to invest any time indesign the course. Designing a course is a major undertaking and can bedone only after much experience [#feedback]).
-
no such file to load —rubygems
While working on my mac and trying to use giternal I ran into ‘no such file to load —rubygems’. While I had been using ruby apps on the machine for a while, without any issues and with all the installed gems, this seemed weird.
-
Why should you be a trainer?
After being thoroughly impressed by the training that I received when I joined ThoughtWorks I was driven to become a trainer myself. I did that in 2008 (yes it’s already been that long) and am a different person professionally since then.
-
CruiseControl Monitors - Graphs and Configuration
cc_monitor now has graphs with the success and failure showing as below
-
CruiseControl Monitors - Gotchas and repost
When trying to use cc_monitor on my current project I hit the known snag of making it work with cruisecontrol.rb. For the umpteenth time I was not able to find any documentation on making it publish cc_tray compatible xml, which would make cc_monitor work with cc.rb.
-
Flash on Linux
Last night when struggling to get Firefox to play with Ubuntu and Flash I found this forum.
-
Learn Git
One big repository</a> and one big repository on learning it all about git.
-
Agile Conference 2009 - TDD with Iphone
On the last day I had just enough time to listen to Eric Smith and Eric Meyer from 8th light where they talked about TDD with IPhone. What was interesting was even while working with this difficulttechnology (Objective C is not hard but Xcode is nothing but cryptic - XIB files really?) they were able to build iPhone apps without giving up of basic principles of TDD.
-
Agile Conference 2009 - day 1
Very busy even though I started at 11:00am.
-
Speaking at Agile Conf 2009 in Chicago
I will be speaking at Agile Conference 2009 in Chicago between August 24–28. You will find all the other speakers from ThoughtWorks on ThoughtWorks website.
-
top ten reasons why maven sucks
maven corrupts - software, people.
-
iTunes settings
If you are using iTunes to play your music be careful when adding music to the library. iTunes tries to be smart and by default it makes a copy of the music you have as well as tries to organise it the way it likes. So if you do not like your music organised by artist/album and so on it will render your music unsearchable. (This is true for me since I do not organise my music by the artist album and such.)
-
javascript testing with seacucumber
Seacucumber was a project that was a tool we used on a previous rails project. My friends Mike Ward and Peter Ryan opensourced it some time back. It was dormant for awhile since it worked great with prototype. Another thing was that it looked and behaved very similar to Dr. Nic’s javascript testing that you can download for rails. Recently I was on a project where we used jquery and we did not have anything to run javascript tests and break the build on failure.
-
MySQL Triggers
MySQL added triggers to its portfolio in version 5.0. I am thinking this was a lot of database gurus have been wanting for so long. A little primer on how to use MySQL trigger follows : Trigger 101 follows - so detune if you are a guru already.
-
accordion.js that is simple and works with prototype1.6
Releasedaccordion.json github. We were quite frustrated with the way accordion v2.0 behaved with prototype1.6. Upgrading that from prototype1.5 broke the accordion when using with images. Our simple version does not have anyeffects yet but work beautifully and is completely tested.
-
Moved my blog to github pages, and how I did it
I have moved my personal blog from blogspot togithub pages.Dr. Nic and Mojombo helped me do it with Jekyll.
-
Moved my blog to github pages
My old blog on blogger will still be available with all the posts andcomments -http://betarelease.blogspot.com