tag:blogger.com,1999:blog-88297984082173088762024-02-08T02:07:59.507+01:00Sunny Talks TechI love technology. Be it the smallest transistor or the latest solar power car, I love talking, reading and sharing about it. This blog is for sharing some of my loved tech talk with others of similar interests around the net.Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.comBlogger340125tag:blogger.com,1999:blog-8829798408217308876.post-73239293977180615032021-02-06T02:49:00.004+01:002021-02-06T02:58:55.940+01:00Tomcat9 on Ubuntu 20.04 and getting catalina.out<div dir="ltr" style="text-align: left;" trbidi="on">
Blogging after ages for something I haven't found from multiple web searches. Something that might be useful for others</div><div dir="ltr" style="text-align: left;" trbidi="on"><br /></div><div dir="ltr" style="text-align: left;" trbidi="on">After you've installed tomcat9, do the following:</div><div dir="ltr" style="text-align: left;" trbidi="on"><blockquote>sudo apt-get install tomcat9</blockquote><blockquote><p>sudo touch /var/log/tomcat9/catalina.out <br /></p></blockquote><p></p><blockquote>sudo chown syslog:adm /var/log/tomcat9/catalina.out<br /></blockquote><p></p><blockquote>sudo usermod -a -G tomcat syslog<br /></blockquote><p></p><blockquote>sudo chmod 770 /var/log/tomcat9<br /></blockquote><p></p><blockquote>sudo systemctl restart rsyslog<br /></blockquote><p></p><blockquote>sudo service tomcat9 restart<br /></blockquote><p>Now you'll be able to follow your logs just like previous installations <br /></p><p></p><blockquote>sudo tail -f /var/log/tomcat9/catalina.out</blockquote><p></p><br /></div>
Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0tag:blogger.com,1999:blog-8829798408217308876.post-40533151123302975752016-09-01T22:31:00.000+02:002016-09-08T20:41:59.865+02:00Running lh-toolkit 1.x on MySQL 5.7<div dir="ltr" style="text-align: left;" trbidi="on">
MySQL 5.7 by default uses sql_mode where no zero in dates or zero dates are allowed. Where as by default the timestamp uses 00:00:00. MySQL 5.7 by default uses ANSI standard GROUP_BY clauses, that were not required for previous versions of MySQL.<br />
The best way to fix this across sessions is to add the following to my.ini or my.cnf depending on your platform. For Ubuntu 16.04 this is located at /etc/mysql/mysql.conf.d/mysqld.cnf<br />
<blockquote class="tr_bq">
sql_mode=""</blockquote>
In the setup wizard for the URL use:<br />
<blockquote class="tr_bq">
jdbc:mysql://localhost:3306/@DBNAME@?autoReconnect=true&InnoDB=InnoDB</blockquote>
Basically, the connection needs to have the text InnoDB in it, so that openmrs doesn't try to set the storage_engine variable, which has been changed to default_storage_engine. But that itself is not required because it should be left upto the database implementer to choose the engine. It could be XtraDB (Percona's fork of InnoDB) or Aria (used in MariaDB).<br />
Once these are done, you should be able to use MySQL 5.7 (and its excellent performance improvements) with lh-toolkit or OpenMRS 1.11.x and higher</div>
Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com1tag:blogger.com,1999:blog-8829798408217308876.post-83839571830451498782016-04-11T17:21:00.001+02:002016-04-12T02:26:52.440+02:00Representing OpenMRS at FOSS Asia 2016 in Singapore<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="text-align: justify;">
I missed the <a href="https://wiki.openmrs.org/display/RES/OpenMRS+Worldwide+Summit+2015">OpenMRS worldwide summit 2015</a> in Singapore because of problems with my visa application. The Singapore ICA rejected my visa application twice, and as it is their policy, they didn't give reasons to why my visa application was rejected. So, I was dejected that I will never be able to make it to OpenMRS summits since the plan is to organize it each year in Singapore.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
As the senior manager for education and training programs in OpenMRS, my current goals for this year includes releasing a certification program for developers, implementers and trainers. Singapore, as a tech hub provides a perfect venue to build partnerships around education and training for the Asia and pacific region. That is among the reasons why Asia's premier open-source conference FOSS Asia has hosted its conference in Singapore for 2015 and 2016. I saw this conference as an avenue to forge partnerships, getting the word out and find interested individuals around our training and certification programs. I applied to be a speaker at FOSS Asia 2016 and my topic got selected for a 20 min seminar. With support from the OpenMRS travel grant, I was able to travel to Singapore and thankfully, with the invitation letter from Singapore Science center, my visa application was not rejected this time!! So hopefully it means I can make it to the next OpenMRS worldwide summit too...</div>
<br />
At FOSS Asia, I was accompanied by <a href="https://twitter.com/downey">Michael Downey</a>, community director at OpenMRS and <a href="https://twitter.com/maany_shr">Mayank Sharma</a>, the release manager for platform 2.x at OpenMRS. Mayank has an interesting story because it was at FOSS Asia 2015 that he first got to know about OpenMRS and has been a rockstar contributor since. So we were hoping to find a few more like him at FOSS Asia 2016. At the conference, I spoke about the strength of the OpenMRS's bazaar model of software development, the loosely governed community that has scaled over the last decade or so. I have personally been involved in the community since the last 9yrs and I shared some of my experiences. A summary of my talk is part of <a href="https://talk.openmrs.org/t/openmrs-update-004-fossasia-special/5597">Episode 4</a> of OpenMRS Update podcast. You can also view the <a href="http://www.slideshare.net/sunbiz/foss-asia-2016-openmrs-networks-for-networks">slides for my talk here</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYh2bmwenntogUH-MmCk954350ypsIj4dc_l0HS3SL31P1ITPZ4NnrnnnDM1Nt613C02ZW3spnPoQRL-42hBysjCRpmlk5EQuG1Ta-ws-8bXgmlCweDSDjTAHvKGz8OXzCcrpN_Mu8XA0/s1600/12748012_10154044056911171_1627434489245232466_o.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="166" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYh2bmwenntogUH-MmCk954350ypsIj4dc_l0HS3SL31P1ITPZ4NnrnnnDM1Nt613C02ZW3spnPoQRL-42hBysjCRpmlk5EQuG1Ta-ws-8bXgmlCweDSDjTAHvKGz8OXzCcrpN_Mu8XA0/s400/12748012_10154044056911171_1627434489245232466_o.jpg" width="400" /></a></div>
<br />
We also started email conversations on partnering for our programs with Singapore's Nanyang Technical University (NTU), who are just starting to build a few health informatics research projects. We also met with General Assembly, a global training organization, but need to take the discussion forward with their Chicago office. So hopefully, this is the beginning of taking our program forward and finding partners around the world who can build capacity for health informatics using OpenMRS.</div>
Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com1tag:blogger.com,1999:blog-8829798408217308876.post-70080108904877524402014-07-10T22:18:00.001+02:002014-07-10T23:03:37.477+02:00OpenVZ node to be used as OpenVPN server<p align="justify">In the past I’ve owned VPS instances so that they can be used as proxies to setup in-country applications. For instance, some country Ministry of IT don’t like their servers managed from another country. So, the quick solution is to buy a cheap OpenVZ node from a provider advertising at <a href="http://lowendbox.com">lowendbox.com</a> or ask a local IT guy to give me SSH access into his machine and setup OpenVPN server. Someone else wanted to setup the same thing that I do, so I thought I’d write this blog entry.</p> <h1 align="justify">Server Side</h1> <p align="justify">The instructions are for Debian or Ubuntu or Linux Mint or similar based distros</p> <p align="justify"><strong>1. Install OpenVPN</strong><br><pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># apt-get install openvpn<br /></pre><br /><p align="justify"><strong>2. Prepare key generation</strong><br><pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># mkdir /etc/openvpn/easy-rsa<br /># cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa<br /></pre><br /><p align="justify"><strong>3. Editing vars</strong><br><pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># cd /etc/openvpn/easy-rsa<br /># nano vars<br /></pre><br /><p>Change the variables with whatever info you'd like to create the user info (KEY_SIZE is for the encryption complexity, using 2048 should be more than fine)<br>KEY_SIZE=2048<br>KEY_COUNTRY="NO"<br>KEY_PROVINCE="NO"<br>KEY_CITY="Oslo"<br>KEY_ORG="UiO"<br>KEY_EMAIL="saptarsp@test.in"<br></p><pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># source ./vars<br /></pre><br /><p align="justify">4. Generating the Certificate Authority (CA)</strong><br><pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># ./clean-all<br /># ./build-ca<br /></pre><br /><p align="justify"><strong>5. Generating the Server keys - (with server name as dhisServer)</strong><br><pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># ./build-key-server dhisServer<br /></pre><br /><p align="justify"><strong>6. Generate the Diffie Hellman Key Exchange parameters</a></strong><br><pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># ./build-dh<br /></pre><br /><p align="justify"><strong>7. Create a client key (with client name as sunny)</strong><br><pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># ./build-key sunny<br /></pre><br /><p align="justify"><strong>8. Generate the HMAC code (so, that we can use TLS/SSL login without passwords)</strong> <pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># openvpn --genkey --secret /root/easy-rsa/keys/ta.key<br /></pre><br /><p align="justify"><strong>9. Copy the generated keys into a keys folder</strong> <pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># mkdir -p /etc/openvpn/keys<br /># cp -pv /root/easy-rsa/keys/{ca.{crt,key},dhisServer.{crt,key},ta.key,dh2048.pem} /etc/openvpn/keys/<br /></pre><br /><p align="justify"><strong>10. Edit the OpenVPN server configuration. Remove everything and add the following (or make changes)</strong> <pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># nano /etc/openvpn/server.conf<br />port 1194<br />proto udp<br />dev tun<br /><br />ca keys/ca.crt<br />cert keys/server.crt<br />key keys/server.key # This file should be kept secret <br />dh keys/dh2048.pem<br /><br />server 10.8.0.0 255.255.255.0<br /><br />ifconfig-pool-persist ipp.txt<br /><br />push "redirect-gateway def1 bypass-dhcp" #all clients to redirect their default network gateway through the VPN<br />push "dhcp-option DNS 208.67.222.222" #OpenDNS servers<br />push "dhcp-option DNS 208.67.220.220"<br /><br />keepalive 10 120<br /><br />tls-auth keys/ta.key 0 # This file is secret<br /><br />comp-lzo<br /><br />user nobody<br />group nogroup<br /><br />persist-key<br />persist-tun<br /><br />status openvpn-status.log<br />log /var/log/openvpn.log<br />verb 3<br /></pre><br /><p align="justify"><strong>11. Enable IP forwarding on the server</strong> <pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># echo 1 > /proc/sys/net/ipv4/ip_forward<br /></pre><br /><p align="justify"><strong>12. Forward all network traffic through NAT masquerade (Change this to eth0 to venet0 for OpenVZ or VPS nodes)</strong> <pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE<br /></pre><br /><p align="justify"><strong>13. Restart OpenVPN service</strong> <pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># service openvpn restart<br /></pre><br><br /><h1 align="justify">Client Side</h1><br /><p align="justify">On the client side, you don’t have to do much. If you want your entire office to access through this VPN, then you should install ddwrt or another router firmware (Asus N56U Padavan’s) which has an OpenVPN client. Below is a screenshot of Padavan’s firmware OpenVPN client. Note the important extended configuration – <em>redirect-private def1</em> (All outgoing IP traffic with be redirected through VPN)</p><br /><p align="justify"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCAOebZbp3BuC9v_ua_BHPymVsKtEtRnguJXgNobcrVCDkCJK5yoQBIwOF89wwhxuiDFQWVUKyLTqa7IAHkvjmtzq_yoR0iV9sTtfKUqrmb0lPHzK55SBlE6HdwoGpKymx1N3vVN3DvxE/s1600-h/OpenVPN-Padavan%25255B6%25255D.jpg"><img title="OpenVPN-Padavan" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="OpenVPN-Padavan" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj388w5fvAj0AFCeo2oeXemXL0WvLRVzaHByERQqvkKMH8Ro63Vb1YhPoU1mJnRyVSjZWk2i8A1b0dbL_YwF3WY03C-jO8NdnR7BtG9L0_OPBBgCrjJs2vEczcjQesMYOevb43zxiI2ZaM/?imgmax=800" width="502" height="484"></a></p><br /><p>If you are using Windows and want to connect, try the <a href="http://openvpn.se/download.html">OpenVPN-GUI</a>. A pretty simple, but useful client to connect to OpenVPN servers. Remember to down the one with TAP driver, so you can seamlessly get all traffic to flow through the VPN connection. After the installation is done, copy the ca.crt, sunny.crt, sunny.key and ta.key files that were generated on the server in C:\Program Files\OpenVPN\config . You can email or use WinSCP to transfer the files to the client machine. Then create a sunny.ovpn file in the same folder with the following content</p><pre class="brush: shell; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"># C:\Program Files\OpenVPN\config\sunny.ovpn<br />client<br />remote xxx.xxx.xxx.xxx (replace this with your server IP)<br />port 1194<br />proto udp<br />dev tun<br />dev-type tun<br />ns-cert-type server<br />reneg-sec 86400<br />tls-auth ta.key 1<br />auth-retry interact<br />comp-lzo yes<br />verb 3<br />ca ca.crt<br />cert sunny.crt<br />key sunny.key<br />management 127.0.0.1 1194<br />management-hold<br />management-query-passwords<br />auth-retry interact</pre><br /><p>That should be all that is required. Once you start the OpenVPN GUI, you will see a system tray icon with right-click displaying connect or if you have multiple .ovpn files then choice on which one to connect to.</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0tag:blogger.com,1999:blog-8829798408217308876.post-73472669484465191552013-09-19T01:45:00.001+02:002013-09-19T01:48:02.201+02:00Excellent service for monitoring servers using Nagios - Monguru<div dir="ltr" style="text-align: left;" trbidi="on">
I’ve been looking for ways to monitor servers for sometime. Most services charge way too much to automate monitoring multiple server. One could do it nicely with a second server running <a href="http://www.nagios.org/">Nagios</a>, and a shared Nagios could be used by many people. The guys at <a href="https://mongu.ru/">Monguru</a> have just done that. If you are into running web servers, you should definitely have heard of Nagios.<br />
The documentation is scant and the installation scripts are distributed across different wiki pages, blog posts etc. Basically to get this working, your server needs to run an SNMP agent that can be polled by Nagios and you have to register at Monguru. They provide you a login to their shared Nagios instance and you can add your server to that instance for free. The dashboard is simplistic and config files are uploaded through a very simple interface. Anyways, what you should do to get your server monitored, is to download the script
<pre>$ wget https://raw.github.com/monguru/configuration_scripts/master/add_new_server.sh
$ chmod +x add_new_server.sh
$ sudo ./add_new_server.sh</pre>
Then, follow the steps mentioned… like naming your server. The script downloads all the SNMP config files that are needed. It downloads python scripts that will create a username, password that you need to remember. It will create an instance in your monguru website as well that you can use for Twitter notifications or git integration of your config files… It is pretty simple, but cool stuff!!</div>
Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com1tag:blogger.com,1999:blog-8829798408217308876.post-40805555614109421482013-05-25T19:24:00.001+02:002013-05-25T19:31:02.660+02:00Windows Locked files in Jetty Maven Plugin<p>If you are developing Java webapps using maven on Windows and using jetty:run to deploy, you have surely come across the problem when you cannot save html, js or vm files. JSPs work fine because they are compiled and deployed. Its surely irritating when that happens. </p> <p><a href="http://docs.codehaus.org/display/JETTY/Files+locked+on+Windows">Jetty has documentation</a> to explain the problem. Many web searches will point to this document. The problem is basically with the NIO connector that jetty uses. <a href="http://false.ekta.is/2010/12/jettyrun-maven-plugin-file-locking-on-windows-a-better-way/">Others have suggested</a> that using the old BIO connector is easy way to solve this. The problem is that the Jetty documentation solution requires using a hardcoded location for the new webdefaults.xml. We don’t want to make changes to the source of our project, just because we are on Windows.</p> <p>My suggested solution is to just edit the maven jetty plugin to not use the FileMappedBuffer. Edit the webdefault.xml that is found in the jar file and that’s all. Browse to your maven repo location. e.g. for 6.1.26 of the plugin go here – <code>USERHOME\.m2\repository\org\mortbay\jetty\jetty\6.1.26\jetty-6.1.26.jar</code> . Open the jar file and find the file at <code>org/mortbay/jetty/webapp/webdefault.xml</code> , and edit the file:</p><pre class="csharpcode"><span class="kwrd"><</span><span class="html">init-param</span><span class="kwrd">></span><br /> <span class="kwrd"><</span><span class="html">param-name</span><span class="kwrd">></span>useFileMappedBuffer<span class="kwrd"></</span><span class="html">param-name</span><span class="kwrd">></span><br /> <span class="kwrd"><</span><span class="html">param-value</span><span class="kwrd">></span>false<span class="kwrd"></</span><span class="html">param-value</span><span class="kwrd">></span> <span class="rem"><!—change from true to false --></span><br /><span class="kwrd"></</span><span class="html">init-param</span><span class="kwrd">></span></pre><br /><p><style type="text/css">.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace;<br /> background-color: #ffffff;<br /> /*white-space: pre;*/<br />}<br />.csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } </style> </p> <p>Save the file and replace the jar with this file. Now whenever you run jetty:run, it will use this file and you will not find windows locking the files when jetty deploys it</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0tag:blogger.com,1999:blog-8829798408217308876.post-30835955661974947232013-03-21T23:44:00.001+01:002013-03-21T23:44:58.084+01:00Shout or Leave? - Open-source community governance<p align="justify">I’ve often thought that open-source contributions are towards “social good”, but I also realize it is a fairly naïve way to look at the open-source world. I was listening to a friend’s frustration of getting people to work together. She is a social worker and now in a political party is trying to make people work together to do “social good”. Participating closely in 3 fairly large open-source communities and following a few others closely, she asked me how I saw it works in the world of open-source. That’s where I thought it might be good to post my thoughts.</p> <p align="justify">Open-source in its literal definition is just putting your code out. Doesn’t mean anything more. Though<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK5h4kVY_Ti8WUsFw_z-LX3amZzR1lznx3k3Dw-0cgig2cgSfQwRUIikFASQNAbIY4oTLjPtb4sJIcd-F5XgvoF4LVWNQfGUF4RB9ETAppAEeXWnPhR_tYhZYIv4bcHirxenavuQaYnu0/s1600-h/equality-vs-justice%25255B5%25255D.jpg"><img title="equality-vs-justice" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: right; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="equality-vs-justice" align="right" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8M3NCw5csylEK0oxdzyg7UzL3RW4pOlAmREP4DlQhr93-1IOsGKVgNXY7hSeXa-IAacSkoDizWyQKJWm-78bAvn5YhgIb3q2iMxhAGojvoYL35Ede5GnnrS5VNZyoKtwxk8Z3_0kwchs/?imgmax=800" width="229" height="193"></a> we have associated a few implicit connotations with the concept. Particularly, that there is an open, bazaar-like mode of working, which can be thought of as similar to the concept of democracy. But as we can see from the political conditions in different parts of the world, democracy isn’t one single thing. It is indeed a group of people working together towards a common goal, ideally each person having an equal weight of vote. But as the world is not idealistic, the more pragmatic meritocracy is acceptable. The open-source world looks at meritocracy through a number of aspects like code contributions, advocacy, documentations etc. with the general focus being towards getting work done. Yet, most research and discussion around open-source misses out on the aspect of power, tradition and culture of the communities that political scientists and sociologists have talked about for a long time. Open-source communities like other human networks have a vision of meritocracy and sometimes evangelize this vision, but often find it hard to practice.</p> <p align="justify">Some open-source communities do have a <a href="http://en.wikipedia.org/wiki/Benevolent_Dictator_for_Life">BDFL</a>, while others generally play by the resources rule. Resources include money, people, ideas and the group that possess these are generally considered more powerful. Some companies because of their “cool” products automatically make “cool” suggestions to the community and their work is “cooler” than the average contributor’s work. Because a developer works for a “cool” company, does not necessarily mean that every developer from that company has better skills than your average contributor. Some open-source communities value context-of-use, while others value “de-contextualization”. Many researchers have highlighted that domain-specific open-source software communities are better suited by being contextual. While, this challenge of being contextual and translating the contextual knowledge to a de-contextual developer, is also well studied, it is really not well enacted in domain-specific open-source community governance. <a href="http://en.wikipedia.org/wiki/Governance">Governance</a> <em>relates to decisions that define expectations, grant power, or verify performance. It consists of either a separate process or part of decision-making or leadership processes.</em> Thus, when the next time you read about <a href="http://www.idi.ntnu.no/~ericm/brian.misq.pdf">OSS 2.0</a>, realize that governance plays a vital role in the challenge of domain-specific open-source communities.</p> <p align="justify">Open-source communities are typically expected to work around an open-source license, some code of conduct pages and roles of developers. These alone, as we see from functioning democracies is fairly inadequate – judiciary, legislature, and executive. Media is often considered the 4th pillar of democracy. A vehicle that allows voices to reflect on how the other 3-pillars are doing. Good governance often comes from the fact that reflective voices are heard, understood and acted upon.</p> <p align="justify">Yet, power plays an important role in sustainability or growth of a community. As an independent contributor (just as a citizen in democracy), one can either look at the power play, raise voice so that others see it or get fed up and leave.</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0tag:blogger.com,1999:blog-8829798408217308876.post-69483320297260436402013-03-06T20:30:00.001+01:002013-03-06T20:30:36.855+01:00You Aint Virtualized Till You’ve Used Archipel<p align="justify">I’ve setup a few virtualized environments starting from the good old Xen in 2004. Good web-based, remote management of the VMs has been a sore point for me, since you needed to have some Gtk or Qt app to do all the VM management stuff. Not that the desktop virtual machine management isn’t robust, but its just that when you are travelling and you just want to restart the VM quickly, a web interface does the work quickly.</p> <p align="justify">Another thing about VM management is being able to look at resources in real-time use. There are people out there who love the command-line stuff, but I like a GUI for real-time resource management. Are there too many simultaneous users, high-latency requests, reporting occupying too much CPU? So SSH into a server through the command-line just doesn’t cut it for me.</p> <p align="justify">I recently discovered the <a href="http://archipelproject.org/">Archipel project</a>, when trying to setup a virtualized environment for an NGO without system admin, who don’t need to know qemu, libvirt etc. The goal is that in a few clicks you’d have a virtual machine ready to be used. Another click to restart a VM. Another click to clone an existing VM. Increase or decrease VM memory or CPU cores etc. by moving some sliders. Isn’t that what linode or Amazon EC2 offers you ask?… But I have my own server in a local datacenter, which turns out to be much more ROI-effective and performance effective than those providers in the long-term.</p> <p align="justify">Archipel does all of the above and much more. It is an excellent XMPP-based VM orchestration tool:<img style="float: right; display: inline" align="right" src="http://archipelproject.org/Images/zoom-architecture.png" width="450" height="286"></p> <blockquote> <p><em>Archipel is a solution to manage and supervise virtual machines. No matter if you have a few locally on your computer or thousands through data centers, Archipel is a central solution to manage them all. You can perform all basic virtualization commands and many other things like live migration, VMCasts, packages, etc.</em></p></blockquote> <p align="justify">All you have to do is setup <a href="http://www.process-one.net/en/ejabberd/">eJabberd</a>-based XMPP server, make some configuration like the qemu host and it will find all the VMs from your list. You can even manage multiple hosts with multiple VMs from one eJabberd server. That’s not all. Most of the commands are like chatting to a bot and then it runs commands on libvirt. How cool is that?!? Being able to chat with your Hypervisor!!</p> <p align="justify">On the client-side, you have to install a set of webpages on Apache and this can be on the same host as eJabberd or separate. The pages on this client-side app uses websockets or BOSH and has a nice looking UI. This allows real-time view of the virtual machines and the hosts. I also some the built-in VNC client that uses only JavaScript. So you do not have to install any client on the local machine. It all runs from the web browser. There is some lag, but if you’ve got a good machine and a browser with good internet connection, it works quite well.</p> <p align="justify">There are some bugs in the client app that keep showing up, but all in all this is an excellent system. Virtual machine management cannot be easier than this… This is indeed the future of virtual machine orchestration.</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com1tag:blogger.com,1999:blog-8829798408217308876.post-50365470945693486362013-03-02T15:53:00.001+01:002013-03-02T16:15:08.989+01:00Alter Table for column with Foreign key in MySQL 5.6 Fails<p align="justify">Oracle <a href="http://www.oracle.com/us/corporate/press/1904335">released</a> the much awaited MySQL 5.6 GA on 5th Feb, 2013. Much to everyone’s surprise and <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyPQ5ng5_3T9M1wHfn05KBIOk9Z9gKFlITjsPOetJrJdf5AWI-PaI6M24vdEiMecuWnSR8c_zeb877hxGYDsSNWlFrvn0DEsTQ8lNCPmVMxerogehOy_fNv8dgxW2wwHdVVnhgrq_ga04/s1600-h/mysql%25255B4%25255D.png"><img title="mysql" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; margin: 5px 0px 5px 5px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="mysql" align="right" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLa1adi0u8TeTT2mnGB1oXz_rk36xTfa7CqF0SCCc89A8fE04uDeAcjSxgJX-KA6xVjy0pAqFHgtEjl2aDwHdg_g5zkP75GunoRTCUsik5W67YQsOecpICpCzo9Am5yk2pmw4c7dxSOig/?imgmax=800" width="80" height="81"></a><a href="http://www.theregister.co.uk/2012/11/29/monty_oracle_eu_promises/">changing direction</a> in some sense, lots of improvements were made available in the Community release of MySQL, which were expected to be only part of the Enterprise Edition only.</p> <p align="justify">Eager to try out the new NoSQL and <a href="http://dimitrik.free.fr/blog/archives/02-01-2013_02-28-2013.html">performance improvements</a> in 5.6, I downloaded the new installer. It is a packaged installer than unpacks and installs connectors, workbench and few other things along with the MySQL 5.6 Server. A surprising place where I got stuck was trying to install OpenMRS. The <a href="https://tickets.openmrs.org/browse/TRUNK-3909">liquibase changeset</a> uses <modifyType> tag and attempts to change the varchar column size. This works well under MySQL 5.5, but fails in 5.6.</p> <p align="justify">While I’ve tried searching for this change in the <a href="http://dev.mysql.com/doc/relnotes/mysql/5.6/en/">release notes</a>, <a href="http://dev.mysql.com/tech-resources/articles/whats-new-in-mysql-5.6.html">what’s new</a> and <a href="http://dev.mysql.com/doc/refman/5.6/en/alter-table.html">few other places</a>, I haven’t found this mentioned clearly for the MySQL 5.6 release. The problem is that earlier you could disable the foreign key constraints check, modify the columns that have the constraints and re-enable the foreign key checks. If you changed the columns on both ends fine, things would just work well. But in 5.6 it seems there has been a change to this and the only mention I’ve found is new error messages that the server can throw. There is probably some tighten of things around the constraints management, but I couldn’t find much.</p> <p align="justify">Here are the server error messages from MySQL 5.6 and MySQL 5.5:</p> <p><a href="http://dev.mysql.com/doc/refman/5.6/en/error-messages-server.html#error_er_fk_column_cannot_change">http://dev.mysql.com/doc/refman/5.6/en/error-messages-server.html#error_er_fk_column_cannot_change</a><br>which wasn't there in:<br><a href="http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html">http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html</a></p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0tag:blogger.com,1999:blog-8829798408217308876.post-52256206928518912882013-02-14T01:32:00.001+01:002013-02-18T16:39:36.853+01:00Opera to use Webkit engine<p align="justify"><strong>Update: Brendan Eich made an </strong><a href="https://brendaneich.com/2013/02/why-mozilla-matters/"><strong>interesting post</strong></a><strong> about the <em>fighting the monoculture and the web needs diversity</em>. But I feel Gecko needs to innovate faster to remain useful to the web. Servo is coming too late and platform acceleration is moving slowly. NPAPI/PPAPI is too slow etc. etc.</strong></p> <p align="justify">The news that <a href="http://my.opera.com/haavard/blog/2013/02/13/webkit">Opera will be abandoning its Presto engine and moving to Webkit</a> isn’t so much about<img style="float: right; margin: 3px 0px 3px 3px; display: inline" align="right" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9UzvjXVpef4leyu7LgoIDyrT2f-aW2ICs4jEN7JBK0voszYOAX844YS-J0wywZE1cIEMvMDuPxBq7YAp8LOaxY0yRtZpv7eecKwvApba9Bk2y9HFT0kOPnWddJV5bWoudRv5r9eamlf4/s1600/Opera%5B4%5D.jpg"> shock, but is more disappointment for me. I have been a user of Opera for at least a decade now. Although I use Chrome and Firefox for a many things, Opera has remained installed and upgraded because every new release has something innovative in it.</p> <p align="justify">Presto is a nice, lightweight rendering engine, where even with 50+ tabs open, the browser continues to work smooth. Pages scroll fine and they all the tabs open up quickly when you restart the browser. I have a habit of keeping tabs open for pages that I need to go to. Bookmarks don’t just cut it for me. An open tab to me is a reminder of what needs to be done. With Chrome, Firefox or Safari, staying with many tabs is a pain. Crashes are common with those browsers and the system memory usage is somewhat exponential. I don’t know how much of that can be attributed the the layout engine, but Opera does handle it with ease. All Opera users know this and they probably feel a disappointed that future versions of Opera might not be the same.</p> <p align="justify">In some sense everyone agrees to the dominant Webkit position. More so as the world moves to mobile devices, Webkit is the standard layout engine from iPhone, Android to Blackberry. What differentiates the 300 million Opera users to continue using it will be interesting to watch. I’m probably not upgrading Opera to the next release, but if I really wanted to use something I’ve grown up with, they say <a href="http://www.youtube.com/watch?v=qkM6RJf15cg">IE10 also grew up</a>!!</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0tag:blogger.com,1999:blog-8829798408217308876.post-53795850331305067822013-01-30T15:15:00.001+01:002013-01-30T15:15:24.699+01:00CFP: Theory-driven Interventions in Health care using Health Information Systems<p>Calls for Papers (special): <a href="http://igi-global.com/journal/international-journal-user-driven-healthcare">International Journal of User-Driven Healthcare (IJUDH)</a><br><a href="http://www.igi-global.com/calls-for-papers-special/international-journal-user-driven-healthcare/41022">Special Issue On: Theory-driven Interventions in Health care using Health Information Systems</a> <p><strong>Submission Due Date<br></strong>2/1/2013 (<b>Extended to 1st March, 2013</b>)</p> <p><b>Guest Editors</b><br>Saptarshi Purkayastha, Norwegian University of Science and Technology, Norway<br>Knut Staring, University of Oslo, Norway</p> <p align="justify"><b>Introduction</b><br>Theory-driven evaluation came to prominence only a few decades ago with the appearance of Chen’s 1990 book Theory-Driven Evaluations. Since that time, the approach has attracted many supporters as well as detractors. At its core, theory-driven evaluation has two vital components, one conceptual, one empirical. Conceptually, theory-driven evaluations should explicate a program theory or model. Empirically, theory-driven evaluations seek to investigate how programs cause intended or observed outcomes.<br>Yet, limiting theory to evaluations is somewhat futile, because usually some theory as basis for a “hypothesis” (unless the research is using a grounded approach) is what drives interventions in the first place. For instance, some health information system (HIS) interventions aim to provide information about health system practices towards meeting the Millennium Development Goals (MDGs). A great number of theoretical lenses drive Information Systems (IS) interventions, and there have been attempts at collecting overviews of such theories, e.g., <a href="http://istheory.byu.edu/">http://istheory.byu.edu</a>. However, even though that list is quite comprehensive, it is not exhaustive – for example, it leaves out important perspectives from design science and information infrastructure theory.<br>In this special issue we seek to showcase papers that are driven by theory – in planning, in action, in diagnosis and in evaluations. Theory-driven interventions is used here to distinguish from report-style papers, position papers or papers that draw concepts purely from observations without theoretical basis prior to intervention.</p> <p align="justify"><b>Objective</b><br>The special issue would like to highlight studies in HIS that focus on doing IS interventions with a theory in mind or with knowledge building/testing in mind. The studies in the special issue would like to explain the phenomenon of IS intervention through IS theory, yet allow medical researchers/practitioners to connect with them. These studies will help medical informaticians or public health practitioners to realize the importance of existing abstracted knowledge (theory) and consider appropriate theoretical lenses for HIS interventions.</p> <p align="justify"><b>Recommended Topics</b><br>Suggested topics for discussion include (but are not limited to) the following:<br>- Participatory action-research as a bottom up strategy to problem solving and achieving change in healthcare<br>- Distinguishing end-users from super-users and theorizing their views in HIS<br>- Institutionalization of IS within healthcare practices<br>- Design science perspectives on HIS<br>- Interventions that deal with structures in health systems and their evolution<br>- Efforts at scaling interventions and information infrastructure<br>- Quantity of knowledge absorption, quantity of knowledge transfer, innovation in HIS<br>- User satisfaction, performance, perception, behaviour, usage as in Cognitive dissonance theory<br>- Dynamics of social construction and performance of illness through user-driven healthcare practices<br>- Capabilities, absorptive capacity, environmental turbulence, agility as in Dynamic Capabilities Theory<br>- Resource Importance, Alternatives, Discretion as in Resource Dependency Theory<br>- Speech acts, Communicative action as in Language Action Perspectives when HIS systems capture patient narratives or clinician notes or communication in health systems<br>- Fit-Viability Model of IS interventions on Health systems<br>- Bridging the gap between what we know and what is knowable in clinical practice</p> <p align="justify"><b>Submission Procedure</b><br>Researchers and practitioners are invited to submit papers (over email to the guest editors) for this special theme issue on or before <b>March 1, 2013</b>. All submissions must be original and should not be under review by another publication. Interested authors should consult the journal’s guidelines for the manuscript submissions at: <a href="http://www.igi-global.com/Files/AuthorEditor/guidelinessubmission.pdf">http://www.igi-global.com/Files/AuthorEditor/guidelinessubmission.pdf</a>. Submitted papers should not be more than 8000 words inclusive of abstract, tables and references. All submitted papers will be reviewed by 2 reviewers on a double-blind basis. Papers must follow APA style for reference citations.</p> <p align="justify"><b>We also request interested authors to send an abstract as soon as possible for discussion.</b><br>All submissions and inquiries should be directed to the attention of:</p> <p align="justify"> <table cellspacing="0" cellpadding="2" width="600" border="0"> <tbody> <tr> <td valign="top" width="372">Saptarshi Purkayastha</td> <td valign="top" width="228">Knut Staring</td></tr> <tr> <td valign="top" width="372">Norwegian University of Science & Technology</td> <td valign="top" width="228">University of Oslo, Norway</td></tr> <tr> <td valign="top" width="372">E-mail: saptarsp (at) idi<dot>ntnu.no</td> <td valign="top" width="228">E-mail: knutst (at) ifi<dot>uio.no</td></tr></tbody></table></p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0tag:blogger.com,1999:blog-8829798408217308876.post-56577571485194853232013-01-28T13:28:00.001+01:002013-01-28T13:28:16.762+01:00Try Netbeans 7.3 RC1<p>The Netbeans 7.3 RC1 is out for everyone to try. After a lot of hardwork from the Netbeans developers and testing and feedback from the NetCAT community, the latest release of Netbeans is out… for the larger community to accept.</p> <p>Download from here: <a title="http://bits.netbeans.org/netbeans/7.3/rc1/" href="http://bits.netbeans.org/netbeans/7.3/rc1/">http://bits.netbeans.org/netbeans/7.3/rc1/</a></p> <p>As has been the tradition, the community will decide if the release is good enough through the <a href="http://netbeans.org/community/netcat/ca_survey_73.html">Community Acceptance Survey</a>. You’ll need the netbeans.org account to complete the survey. But your feedback is invaluable.</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0tag:blogger.com,1999:blog-8829798408217308876.post-62627301123337586002012-10-02T17:14:00.001+02:002012-10-02T18:16:44.769+02:00Why VoLTE (Voice over LTE) might take really long<p align="justify">There was an interesting article today at the <a href="http://www.reghardware.com/2012/10/02/feature_wtf_is_voice_over_lte_4g/">Reg explaining VoLTE</a> (Voice over LTE – Long Term<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzWArB3Em1NNywJEZT_SWQIHBzU-DXppESibY3EYfxE2ZxqnpJEBkbGtszd1V47p2Rpks2lj-_d8C_K4r8lIAlmIg1rNjqluh3Sk9rfoRwBA5FzMWt29EF-K36E46YBxmgW4UgCA7PYLQ/s1600-h/4G_LTE_Logo%25255B3%25255D.jpg"><img title="4G_LTE_Logo" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; margin: 5px 0px 5px 5px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="4G_LTE_Logo" align="right" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjanOxdLi4bKs8rKcneX3ZoxhWHoCf96PM_JfXU4tIWvbJ93IiCF9ySaNjJ7Vg363aUuhgv7zw_u3V0oBUYh__q0GRCH4HdlXED24wMLQCXvQQ0EOosYR0KCdrGAq2bGP4CpUqUID22QBQ/?imgmax=800" width="240" height="155"></a> Evolution or 4G LTE) in their WTF series of articles. I’ve been following this interesting phenomenon that over the last few months many telecom operators are rolling-out 4G networks, but not fully utilising the features that 4G networks bring for Voice-Over-IP (VOIP).</p> <p align="justify">So to give a bit of background on LTE and its advantages that I’m talking about. LTE being a purely IP network has the advantages of managing just one kind of data packet. This means that we can build tools around only managing IP and data packets. So all your gateways and routers could be optimized to lessons that have been learnt from using internet firewalls, messaging routers and what have you… Voice is also sent as data packets instead of having a different frequency for voice. GSMA puts some <a href="http://www.gsma.com/technicalprojects/volte/">advantages to VoLTE</a>:</p> <ol> <li> <div align="justify"><em>Single implementation promotes scale</em></div> <li> <div align="justify"><em>Single implementation reduces complexity</em></div> <li> <div align="justify"><em>Single implementation enables Roaming</em></div></li></ol> <p align="justify">But as you’ll see, its not as simple to move an existing infrastructure to another one. We’ve seen this in the case of IPv6 as well. <a href="http://sprouts.aisnet.org/124/1/040412.pdf">Information Infrastructure theory</a> discusses in length the challenges of evolving/moving infrastructures. They don’t happen overnight, nor is there an obvious/expected path to how it’ll evolve! A couple of months back we heard <a href="http://www22.verizon.com/idc/groups/public/documents/adacct/nomura_summit_melone_53012.pdf">Verizon’s deployment of 4G LTE</a>, “<a href="http://www.fiercewireless.com/story/verizons-melone-there-no-rush-volte/2012-05-30">there’s no rush for VoLTE</a>”. If not using VoLTE, one can re-route the voice calls to the old-style <a href="http://en.wikipedia.org/wiki/LTE_(telecommunication)#Voice_calls">Circuit-Switched (CS) network</a>. But this handover between the network creates a lag of 3-4 secs, and my guess is that on heavy traffic could take longer. Investing in this handover might be another headache for the telecom operator, but that seems to be the path most of the operators are taking. The Reg article asks an important question <em><strong>“Are phone users - most of the population these days, though rather fewer of them will be 4G early adopters - going to put up with the pre-call lag? Will they accept a lesser experience than they're used to?”</strong>. </em>An important question and the answer could be that operators will use 4G for data services and 3G connection for voice. So they’ll not move to 4G completely and still have their 3G equipment.</p> <p align="justify">There is path dependency that the operators will take and this will result in much slower adoption of VoLTE. So while the operators think it might be fine to make the users wait a few seconds to get on the call, I don’t think users will appreciate that… I hate listening to some stupid beeps or never connecting the call on CDMA networks in India when making an urgent call!! We want 4G for the data speeds, but we decrease usability through the route which operators are taking. Why not get into VoIP apps through which calls can be made? Monetize that instead? Forget the fear that you’ll lose money from voice calls. Increasing volumes on data services will help. As an operator, you can always bundle cheap calls when using that VoIP app that you install as part of the SIM card.</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0tag:blogger.com,1999:blog-8829798408217308876.post-79096406253774493642012-09-28T23:40:00.001+02:002012-09-28T23:40:25.832+02:00Insourcing for Development – A Networks of Action Approach to GSD<p align="justify">When presenting “<a href="http://ict4dblog.wordpress.com/2012/05/06/the-research-agenda-for-it-impact-sourcing/">The Research Agenda for IT impact sourcing</a>”, Heeks places Ethical outsourcing and Social outsourcing within the scope of what can be broadly referred as the use of outsourcing for development. In the BoP (Business Operation Process) outsourcing continuum he differentiates these from Exploitative Outsourcing and Commercial Outsourcing. You can read about these terms in depth on his blogs. The focus of <a href="http://www.genderit.org/sites/default/upload/jid_socialoutsourcing.pdf">Social Outsourcing</a> is on contracting out goods and services into social enterprises. In their paper, Heeks & Arun (2010) highlight that social outsourcing has the potential to deliver development benefits to marginalized groups.</p> <p align="justify">In the IT impact sourcing model the idea is to create sustainable jobs in communities where opportunities are low and can act as income improvements. While this is a useful and more common way to look at developmental impacts of outsourcing, there is another way to use IT for Development. And that is through the view of offshore insourcing.</p> <p align="justify">Global Software Development (GSD) is a fairly common practice in large software projects. As an arbitrage in globalized markets, it is more common practice to contracting with a wholly owned subsidiary located in another country. This is offshore insourcing. While insourcing in itself might be offshore or in-country and there has been a <a href="http://www.firstpost.com/world/insourcing-the-hoax-that-gm-and-uncle-sam-are-trying-to-pull-376041.html">recent push</a> at <a href="http://www.computerworld.com/s/article/9231519/GM_insources_set_to_hire_10_000_IT_pros">GM towards insourcing</a>, offshore insourcing has many advantages that are seldom described in research. This is what I’d like to add to the research agenda for IT impact sourcing.</p> <p align="justify"><a href="http://iris.cs.aau.dk/tl_files/volumes/Volume21/no1/21-1%20Titlestad.pdf">Titlestad, Staring and Braa (2009)</a> highlight how the design of health information in the global south has been co-ordinated in a GSD fashion. The project’s core development on what is referred to as global release happens at the Univ of Oslo, Norway, but the requirements for this comes from different local teams based in the “global south”, as can be summarized from their paper below:</p> <p align="justify"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNhp7u_QLsCn5FdfzJp1XT9GfAtLod_Q1zayTpbNOTV4ahnAf5Z3SAOzdx0ha3QLPaaqNNnbyYRhhZYWe8FtjJX4VCcRhKvYf-ndDznhE6s_367fthaSikcpiuSJY5FQ0qsaBUb_xAT-I/s1600-h/GSD%25255B3%25255D.jpg"><img title="GSD" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: left; padding-top: 0px; padding-left: 0px; margin: 0px 5px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="GSD" align="left" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX2sXoyuR6Yf9dtvD1ZffjvxMBvBiYp6peLzR13dzaGP7ikC5312GeDv4uJx3PH8ucq9TKamphikUz2I1ij_OJN3fyJIzRsHBGqB5zDhM4V8aaVetMRk3EOuQbxgUrXLLVpc507jekiwA/?imgmax=800" width="307" height="230"></a></p> <p align="justify">Since this is an open-source project (<a href="http://www.dhis2.org">DHIS2</a>), the idea of wholly-owned subsidiary might be unconventional to think about, but being part of the same global research network (<a href="http://www.hisp.uio.no">HISP</a>), each of the local nodes actually act similar to what would happen in a large global software corporation. Thus, the local software requirements, design and use happens in different countries in the “global south”, but most of the global/generic software development happens in Norway. This type of offshore insourcing is done to keep “generativity” (Gizaw, 2013) of the software intact, such that it can be “ready-for-customization” and be “flexible”, which does not have the features that are specific to a country implementation. This allows new implementers or new country to use DHIS2 without any costs to software development, although only customizations to the context need to be done. Even then, the generic features are available at a much lower cost (following the principles of libre software) for the new implementations than it would, if they were to develop the features from scratch.</p> <p align="justify">How the GSD model has contributed to developmental impacts in many countries in “global south” has been discussed through many research articles. <a href="http://aisel.aisnet.org/icis2008/50/">Staring & Titlestad (2008)</a> describe the global software development and commons-based peer production of DHIS2. Through practical examples of the project they discuss the software development practices that are aimed at improving public health sector in the south. Many other researchers in the HISP network over the years have shown the developmental impacts resulting from the project and its use in developing countries. This action-research approach of the HISP network has been referred to as “<a href="http://aisel.aisnet.org/misq/vol28/iss3/3/Oj2ZMD0Q">Networks of Action</a>”, where the method of action research has been shown to have sustainable developmental impact in the “global south”. Combining these concepts of Insourcing for the purpose of development using the Networks of Action approach is what should become part of the IT impact sourcing research agenda.</p> <p align="justify">This blog post is just to introduce the idea that instead of focusing on outsourcing alone, “IT impact sourcing” can also cover insourcing and development through insourcing. Much more detailed analysis and discussion on this will be part of an upcoming research paper.</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0tag:blogger.com,1999:blog-8829798408217308876.post-79459710520189520192012-09-26T14:44:00.001+02:002012-09-26T14:44:37.496+02:00NetCAT 7.2 goodies and 7.3 just got started<p align="justify">The Netbeans Community Acceptance Testing (NetCAT) for v7.2 concluded at the end of July 2012. It was a very productive testing process for the Netbeans community. Details about the <a href="http://wiki.netbeans.org/NetCAT72">NetCAT 7.2</a> are here. Beyond improving the quality of our favourite IDE, depending on how much you have contributed, Oracle also gives out goodies to the participants.</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0cVEcmFrBT0F3q4bjFkjqFB8-3-gdp1mrgI_dfWh0_JqmJK_PDlDR_y8safIwidaoSNF-KoSNxxTE-MiZ_UetJh8VeRMyRS2RSP8ZyYFQZgNBPVlPDVw5qxW19Eipb1kbvalJj9M3ru8/s1600-h/netbeans-goodies%25255B4%25255D.jpg"><img title="netbeans-goodies" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: left; padding-top: 0px; padding-left: 0px; margin: 5px 5px 5px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="netbeans-goodies" align="left" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEltptERq3cv75IWsWZS4VUakDd1XAGz9MZEdADnH-UpbIji05pyCM8hcH0EtrHPrph8hIcDB93Gimk7M4Z-W61aSfxK5PoLAwsnmSQIBEvXfhPflgBtzmwhCHsdr468lzeIEHTcGkGTg/?imgmax=800" width="337" height="254"></a></p> <p align="justify">The goodies I received this time around includes a very large towel, a nice t-shirt, 2GB memory stick, notebook and pen, an acknowledgement letter detailing my contributions and points to the program and this new Oracle-branded mint!! Strong mint!! At least from the envelope, Sun is still alive… Hurray!!</p> <p align="justify">If you’d like to get similar goodies or just improve the quality of Netbeans, participate in the NetCAT 7.3 which started 10 days back. Its not too late to participate. Signup to the <a href="http://wiki.netbeans.org/NetCAT">mailing list</a> and add yourself to this <a href="http://wiki.netbeans.org/NetCATParticipants">wiki page</a>. You’ll get points for participating in discussions over email/forums, reporting bugs, participating in surveys and following a manual testing script by being part of Tribes that test specific functionality. So its not very hard… you just have to simply use the daily or beta builds and give feedback to the developers. Go for it!!</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0tag:blogger.com,1999:blog-8829798408217308876.post-91597876242719834792012-09-25T18:10:00.001+02:002012-09-25T18:10:11.878+02:00Limits to growth?–waiting for the 40yr update<p align="justify">While dabbling around arguments on how <a href="http://www.outlookindia.com/article.aspx?278843">development hasn’t reached everyone</a>, especially looking at the <a href="http://www.palgrave-journals.com/ejdr/journal/v23/n1/pdf/ejdr201036a.pdf">cases in India</a> and <a href="http://economictimes.indiatimes.com/news/politics/nation/The-Gujarat-miracle-No-denying-the-economic-advances-the-state-has-made-under-Narendra-Modi/articleshow/16502147.cms">Gujarat</a>, I’ve also been reading the book <a href="http://www.amazon.com/Limits-Growth-Donella-H-Meadows/dp/193149858X">Limits to growth – the 30yr update</a> (<a href="https://www.facebook.com/samrat0911">thanks dada</a>!!). This post is mainly to say that I desire to read the next update of this masterpiece of work that has been updated over the years since it was first released in 1972. <a href="natcapsolutions.org/hlovins/">Hunter Lovins</a> says “If you only read one book…make this it!”. I’d say the next one “40-yr update” will be more interesting, given the global financial crisis!!</p> <p align="justify">Just last night I watched, <a href="http://www.michaelmoore.com/">Michael Moore’s</a> exaggerated critique on Wall Street – “<a href="http://www.imdb.com/title/tt1232207/">Capitalism – A Love Story</a>” and that made me think how different would the world be today, if as the movie puts it, we had a love story with Democracy instead of Capitalism. Instead of Socialism, he suggests it should be called Democracy… I wonder though if economics can be simply governed through a set of political principles. I know Adam Smith talked about political economy some centuries ago, but was his perspective too simplistic to look at the globalized world that we live in today? Would we be able to label China as a non-democratic Capitalism or FDI in India as global capitalism and not Socialism? Its hard to argue for any of these labels; to look through Marx or Smith’s worldview. Because in my opinion, the complexities around globalized economies makes it much harder to box political economies any more. The US Wall street has much more effect on the <a href="http://www.thehindu.com/opinion/columns/sainath/article3595351.ece">farmer suicides in Maharashtra or Andhra Pradesh</a> than what Smith or pure Capitalists or free-enterprisers would have us believe. As Meadows said in 1972, we have “overshot”. We haven’t prepared ourselves better before globalizing. The three causes as they say for overshoot are the same, whether personal or planetary - </p> <ul> <li> <div align="justify">There is growth, acceleration and rapid change</div></li> <li> <div align="justify">Some limit, some barriers beyond which the system may not safely go</div></li> <li> <div align="justify">Delay or mistake in perceptions and responses that strive to keep the system in limits</div></li></ul> <p align="justify">Growth is believed to be necessary for employment, upward mobility and technical advancement. For places with poverty, growth is believed to provide resources out of poverty. Growth can solve some problems, but it creates others. That is primarily because of limits and the book highlights the limits very nicely. The book was written 10yrs back before sub-prime crisis, debt problems etc. that have affected nearly all of the world’s interconnected populations. <strong>Greed</strong>, <strong>overshoot</strong>, <strong>delay in perception</strong> or response, whatever you may call it… it has highlighted that there are limits to growth and how we can’t sustain this single-minded approach to achieve growth</p> <p align="justify">I’m a bit sceptical on how World3 (their model) bases itself on the central assumption that population and capital are structurally capable of exponential growth. They cite examples of different countervailing pressures that they’ve added as feedback to the model, but I’m less convinced that they’ve had enough considerations on emigration, where people are moving back to growing economies as soon as things have started to slowdown in rich countries.</p> <p align="justify">What is brilliantly highlighted in the book - <em>that growth in the way in which it has happened since 1930s has created enormous disparity. A fourteenfold increase in world industrial output since 1930s has created more disparity and hasn’t ended poverty. Another fourteenfold increase (if possible with earthly limits) would not change it either if we continued in the same way… Running the system harder or faster will not change the pattern as long as the structure is not revised.</em> And over the last 10yrs, since they wrote the book, if anything, we see increasing disparity and faster running on this non-sustainable system.</p> <p align="justify">While the book and World3 model supposes many ways to collapse, it also in Chapter 7, shows a model that can lead the world to not collapse. They call this “Sustainable System”. In Chapter 8, they suggest “Tools for the Transition to Sustainability”. They mention that <em>“Everywhere we find folks who care about the earth, about other people, about the welfare of children and grandchildren”</em>. Not just their own, but of others. The problem is are these folks doing enough to change the model? Are we so many and doing so much as to move towards sustainability? They say the next revolution has to be <strong>Sustainability</strong>, just as the previous 2 revolutions were <strong>Agricultural</strong> and <strong>Industrial</strong>. I wonder though will all those who have not been touched by the previous 2 revolutions be able to “leap-frog” to the third revolution? What tools do we have to reach a sustainable system – <strong>Visioning</strong>, <strong>Networking</strong>, <strong>Truth-telling</strong>, <strong>Learning</strong>, <strong>Loving</strong>. Sounds like the Buddha??</p> <p align="justify"><strong><font style="background-color: #ffff00"><em></em></font></strong><font color="#ff0000"><strong><font style=""><em>Though there is no way of knowing for sure, other than to try it</em>.</font></strong><strong><font style="background-color: #ffff00"></font></strong></font></p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com6tag:blogger.com,1999:blog-8829798408217308876.post-47175249539767703642012-06-29T02:45:00.001+02:002012-07-10T14:14:20.227+02:00Gigabit Wireless Router from Cisco<p align="justify">Today while I was browsing through the Cisco website, found out that they’ve started taking <img style="display: inline; float: right" align="right" src="http://home.cisco.com/assets/store/EA6500/EA6500_Main01.jpg" width="245" height="146"> pre-orders for Gigabit Wireless router based on the <a href="http://en.wikipedia.org/wiki/802.11ac">802.11ac</a> draft spec. The model is <a href="http://homestore.cisco.com/viewproduct.htm?productId=148919965">Linksys EA6500</a> scheduled to release in August 2012. This means that speeds upto a Gb/s is achievable using off-the-shelf consumer routers already. They are listing “<em>Ultimate Speeds upto 450 + 1300Mbps*</em>”. Seriously wow!! Dual Band, so you get the 450Mbps from the n-spec and 1300Mbps from draft-ac spec.</p> <p align="justify">Now, most of you would wonder why the hell do we need that much speed… I was recently trying to stream my favorite BD-Rip Avataar 3D through the XBox 360 on to my TV. But alas, I had to transcode to lower quality because my wireless-n router at 300Mbps was not good enough <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-sadsmile" alt="Sad smile" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj96BaDWSm0SQFOLCSMVnsVV9NnW88oRWvj6Vl3bVr-A2i10pGZ_JQq_u61uNWzn1sssv79tf6_Ca4sI-v0KHlSuTe8mVEPwYbRaX78WEAX0MRO9JPuggJ9N3YuPdJHue9BE-GaelaxRCM/?imgmax=800">. So, we definitely need this soon as more and more content is available in full HD and we want to start streaming and communicating between the different devices in our household.</p> <p align="justify">Another interesting thing, is that router has built-in NFC (Near Field Communication), which can use a phone (which has NFC) for transmitting configuration. But this feature sounds like just using a technology for the heck of it. How hard is it to type a passphrase or open the router page on the browser and configure. Nevertheless, some nice technologies packed into one experimental device. And then there is also an <a href="http://www.electronista.com/articles/12/06/07/fifth.generation.wi.fi.standard.finally.reaching.consumers/">Acer router</a> with similar 5th gen Wifi stuff…</p>Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com1tag:blogger.com,1999:blog-8829798408217308876.post-53764889267251553612012-01-28T02:28:00.001+01:002012-07-10T14:17:17.798+02:00Making Love to Webkit<p align="justify">I just viewed <a href="http://acko.net">Steven Wittens Acko.net</a> and it is just awesome. You have to <a href="http://acko.net/blog/making-love-to-webkit/">click here</a>, to see the amazing stuff done with CSS 3D on the website. Don’t forget to click on the Load Scene, a little down in the post and then using the mouse to drag the scene. Classic Stuff!!</p> <p align="justify">The site has used mrdoob’s <a href="https://github.com/mrdoob/three.js/">JavaScript 3D library</a> that also has some amazing <a href="http://mrdoob.github.com/three.js/">examples</a> to look at. It is very interesting to see how 3D in JavaScript is coming along in Webkit. People have been making Love to Webkit and it all looks so aesthetically pleasing and romantic…</p>Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0tag:blogger.com,1999:blog-8829798408217308876.post-17716586957101054692012-01-27T19:39:00.001+01:002012-01-27T19:41:14.038+01:00NetCAT goodies<p align="justify">Some people might have followed on the blog that I had been participating in the Netbeans<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5rizsbAJNA0oNmMtMU7Y-fr5L1MSvItXMCFFfTcp91YnGobn6g1EQw8nbRNk4nweZXrnklA06lac7I9gDEHzZCLv7QEklsTB22k-R0k2K9eVJXfOlM2bu07buMOaGb_Le4y_Wf44TKAM/s1600-h/DSC00501%25255B8%25255D.jpg"><img style="background-image: none; border-right-width: 0px; margin: 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="DSC00501" border="0" alt="DSC00501" align="right" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO9VOYTw75vtHCpTxxP6HjA4gwv581NNDc8SqlGq2NJgFFmzyrwlosczRCjKKZn6_7-qMzwGPokDZjSp8VymmRm8h2Ufcmm9pkc08MG7oi9MBfRKuR1gGzEbWD3aRcdN1E1YJW23SdbEQ/?imgmax=800" width="239" height="316"></a> Community Acceptance Test (<a href="http://wiki.netbeans.org/NetCAT">NetCAT</a>) program for the 7.1 release. The release in my opinion is one of the most stable versions of Netbeans ever. This should be attributed to the co-operative effort between the developers, quality managers, community of testers and Jiri Kovalsky, who manages the NetCAT program.</p> <p align="justify">There are some points for bugs, fixes, RFE, feedback, surveys etc. during the alpha and beta phase of the development and the NetCAT final tally for 7.1 is <a href="http://qa.netbeans.org/processes/cat/71/activity.html">here</a>. The best part in my opinion during this NetCAT release compared to earlier years was the quick bug fixes delivered by the Netbeans Engineering Team.</p> <p align="justify">I also got some goodies for participating in NetCAT.</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com1tag:blogger.com,1999:blog-8829798408217308876.post-19079672249476485842012-01-26T20:59:00.001+01:002012-01-29T17:32:04.025+01:00Why REST with JSONP when you can CORS?<p align="justify">JSONP (JSON with padding) is a hack used by JavaScript developers by wrapping a JSON (JavaScript Object Notation) document within a function call. So, if the JSON document looked like <code>{"givenName":"John", "familyName":"Smith"}</code>, the JSONP for the same would be <code>callback({"givenName":"John", "familyName":"Smith"})</code> (callback being the commonly used wrapper function). So, if you are familiar with JSONP, you will realize that it is used to make Cross-Domain calls where JSON is not accepted by the browsers if they come from another domain. Thus, AJAX requests across a different domain was not possible through JSON and hence using JSONP was the common hack.</p> <p align="justify">The problem with using JSONP is that it is called as a JavaScript function response and hence <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEuh5TZSIH5gWirshdIBUJBQ_J4s0DiEln7o9P-MNDefdcpfNSZKF7g39lisTgKP9tRav3_PzMLl5PEC1J24bFypfjkwr2TfL_OjtC8ymcS1Zi7099LjpbfWDIhUpqTZcU6YDqO2St_W0/s1600-h/CORS-support%25255B5%25255D.png"><img style="background-image: none; border-right-width: 0px; margin: 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="CORS-support" border="0" alt="CORS-support" align="right" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeRkq3Hy_3j4P_k6r9ImDKwhKfmzL9BjIq6gz2pQlwZk-kK4tG-Rsm_5Ig51qLXiq9oVp2-dvSGmUryQCZQGiQ-IO6kizEEtVc_D0CxpAOqSVi4KplpMDvLd9GMoQP5fE3BivxDicc40k/?imgmax=800" width="205" height="193"></a>you will not be able to use it as normal HTTP calls. That means you would not be able to send HTTP headers and that can be a problem at many places. There <a href="http://personalized20.blogspot.com/2009/04/created-oauth-crossdomain-javascript.html">are hacks</a> to deal with the problem, but these are best described as hacks. Another limitation of the JSONP hack was that you could only make GET requests and nothing more. Hence to make a standard, <a href="http://www.w3.org/TR/cors/">W3C created the CORS</a> (<a href="http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/">Cross-Origin Resource Sharing</a>) standard which nearly all modern browsers support.</p> <p align="justify">The main issue with using JSON or AJAX (XHR – XMLHttpRequest) across domain was that browsers would not be able to acknowledge if the response was malicious or in response to the request that they made. The <a href="http://en.wikipedia.org/wiki/Same_origin_policy">same-origin-policy</a>, prevented making cross-domain requests. Then came CORS, a technique by browsers to check the origin policy first and then accept responses. So a server that wants to allow getting any type of HTTP request from another domain would list the domain or * in its HTTP response header as follows: <pre>Access-Control-Allow-Origin: *<br />Access-Control-Allow-Origin: http://example.com:8080 http://foo.example.com</pre><p align="justify">This means that there is some modification to be done on the server-side resource to add these headers to the response. Another point to note is that it works with XHR requests as well as client errors (4xx) and server errors (5xx).</p><p align="justify">Excellent examples on how to use CORS can be found at <a href="http://www.html5rocks.com/en/tutorials/file/xhr2">HTML5Rocks</a>. On the server-side of things, you can find resources to <a href="http://enable-cors.org/">enable CORS</a>.</p><p align="justify">In Tomcat for a Java web application, you can enable CORS using the <a href="http://software.dzhuvinov.com/cors-filter.html">CORS Filter</a> library. Basically you copy the jar file into Tomcat lib or WEB-INF/lib of your application and then add filters in your application’s web.xml or tomcat’s global conf/web.xml. For a resource which requires Basic Authentication and Cookies can be configured as follows: <pre><filter><br> <filter-name>CORS</filter-name><br> <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class><br> <init-param><br> <param-name>cors.allowOrigin</param-name><br> <param-value>*</param-value><br> </init-param><br> <init-param><br> <param-name>cors.supportedMethods</param-name><br> <param-value>GET, POST, HEAD, PUT, DELETE</param-value><br> </init-param><br> <init-param><br> <param-name>cors.supportedHeaders</param-name><br> <param-value>Content-Type, Last-Modified</param-value><br> </init-param><br> <init-param><br> <param-name>cors.exposedHeaders</param-name><br> <param-value>Set-Cookie</param-value><br> </init-param><br> <init-param><br> <param-name>cors.supportsCredentials</param-name><br> <param-value>true</param-value><br> </init-param><br></filter><br><filter-mapping><br> <filter-name>CORS</filter-name><br> <servlet-name>MyServlet</servlet-name><br></filter-mapping></pre><p align="justify">Instructions for Cookies in Safari can be challenge. A nice post to workaround can be found <a href="http://anantgarg.com/2010/02/18/cross-domain-cookies-in-safari/">here</a>. </p>Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com4tag:blogger.com,1999:blog-8829798408217308876.post-69603008263064398812012-01-25T22:28:00.001+01:002012-01-25T22:28:32.317+01:00Difference between iPad2’s Safari and Desktop Safari<p align="justify">Since we are targeting the <a href="https://wiki.openmrs.org/display/projects/Raxa+JSS+EMR">Raxa EMR for JSS</a> for Webkit-based browser, it is important that the team understands the subtle differences between the Desktop shipped Safari and the version of Safari shipped for iPad2. The differences with Chrome are quite a few, so I won’t list those here.</p> <p align="justify">Following are some of the differences to remember:</p> <ul> <li> <div align="justify">No Flash support </div> <li> <div align="justify">Safari iPad does not support <code>position:fixed</code> in CSS </div> <li> <div align="justify">Safari iPad creates link for 10-digit numbers automatically </div> <li> <div align="justify">Safari iPad does not allow scrolling over textareas and iframes </div> <li> <div align="justify">Safari iPad has issues with CSS Animations that cause flickering. Use JavaScript animation or hacks in CSS <code>-webkit-backface-visibility:none; and -webkit-perspective:1000;</code> </div> <li> <div align="justify">Safari iPad greys the upload button</div></li></ul> <p align="justify">Things have been improving compared to the first iPad and iPad2 and the differences are minimizing.</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0tag:blogger.com,1999:blog-8829798408217308876.post-21182880214083994952012-01-07T20:18:00.001+01:002012-01-07T20:18:09.040+01:00EMR at JSS Bilaspur – In pursuit of happyness<p align="justify">Over the last 3yrs, I have travelled across the world and looked at 100+ health facilities of different scales. My last encounter with a health facility in rural Bilaspur was very different. Having looked at systems of practice in a variety of health facilities including subcenters, private clinics, primary health centers, community health centers, district hospitals, tertiary hospitals and super-specialty hospitals, each of these places have different characteristics. What makes <a href="http://jssbilaspur.org">Jan Swasthya Sahyog (JSS)</a>, situated in rural Bilaspur in Chattisgarh special is the motivation levels among all the staff at the health facility. This includes clinicians, nurses, technicians and computer operators… And the motivation of these people stems from the fact that they <strong>still</strong> believe in care, rather than just providing health services. I use “still” because in my worldview of health facilities, most often I see people missing out on the “care” from the notion of health-care.</p> <p align="justify">My visit to JSS was for volunteer work that I have been doing over the last few months to see an Electronic Medical Record (EMR) system to be setup at JSS. Over 100 volunteers across the world have come together in this pursuit to build an EMR system that is easy to use, suited to low-resource settings and can help improve work of the providers as well as help provide better services to patients. JSS was founded 15yrs back by post-graduates doctors of All India Institute of Medical Sciences (AIIMS), India’s most prestigious medical school and hospital to provide healthcare to people who are deprived from it because of poverty, neglect and lack of development. And when I visited JSS on Christmas 2011, I could see the savior work done by JSS for the many people who come from far-flung places because they are treated with dignity and care.</p> <p align="justify">The EMR system broadly from interviews and discussions with some doctors, nurses, other staff and my interpretation of the context needs to do the following:</p> <ol> <li> <div align="justify">Help to improve efficiency in use of resources and providing patient care </div></li> <li> <div align="justify">Help to maintain correct medical practices through validations</div></li> <li> <div align="justify">Help to understand who, what, why is being treated at JSS</div></li></ol> <p align="justify">EMRs or for that matter any computerization process advertises many-fold benefits. Technology is most often considered the silver bullet that will solve all problems. From my experience this is rarely the case. So these 3 points might provide a guiding path to decisions that we make in the design of the EMR. In the design of the EMR, just like JSS we have to put “care” at the forefront of our efforts rather than technology prowess. Thus, this system is envisaged to be a point-of-care systems where providers will look up records and use the system to provide “care”.</p> <p align="justify">The other very unique thing about JSS is that is it rooted in the locale of the context. Having seen other health facilities setup by “change-makers-coming-from-the-outside”, JSS is uniquely very much part of the context. This is one of the reasons I see why people come from more than 100kms away to JSS for treatment. People view JSS as locals and one among their own. This is one aspect that I think the EMR system should incorporate. It should embody in itself the locale. By locale, I mean the local practices, language, usability… among other things. </p> <p align="justify">I would say we have some lofty goals for the EMR. One that the project lead calls as “Linux of EMRs”, but in my opinion even if we achieve more humble ends, like not causing burden to providers and patients that would make me happy. It is this pursuit that drives me to work towards this cause. I call it a pursuit because I realize this is not something that is a stagnant phenomenon. It will change with every small change that we make. Every morning it is this pursuit of happyness that drives me to understand what an EMR system would be of use at JSS.</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com3tag:blogger.com,1999:blog-8829798408217308876.post-17479521547264533452011-11-10T07:06:00.001+01:002011-11-10T07:06:13.020+01:00PhoneGap under Incubation at Apache Foundation<p align="justify">When Adobe announced the <a href="http://phonegap.com/2011/10/03/nitobi-enters-into-acquisition-agreement-with-adobe-2/">acquisition of Nitobi</a>, the creators of the nice cross-<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD9k2KFH46NNNrn-L4RIvF7ITAwxZ4lhjIdiViWjnlA8uXlN2MQXg26JZA-s73lda7dDFwhqByumGUq_f54n66IEEttdU9DqVElq3-AKa7Xtb3_udYPnY8WTo3wSE5gY3yyxS-HLVSHmk/s1600-h/phonegaplogo%25255B4%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 5px 0px 5px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="phonegaplogo" border="0" alt="phonegaplogo" align="right" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8-r9hCObrs2x3RKtpwR2KvHVtMRlKcOsoStNlpBVlpEPpcVKUoztRY6u_3D3hsKOTMPWQnT4L3iKaiguM-X6i1N_VP03j1hS33RdTuCl50T3rTOdTPBzvOh7N1oK18U5Kmgq37ucPGhM/?imgmax=800" width="103" height="103"></a>mobile development tool, like many people I was worried that this would become a closed-source Adobe Air mobile. Adobe has recently been voicing that it would deprecate Flash mobile and instead move towards HTML5 and JavaScript. Thus, PhoneGap seemed like the perfect acquisition to make money out of the new generation of cross-platform mobile development.</p> <p align="justify">The heart-warming announcement came a couple of days back when it was decided that PhoneGap was moved to Apache Foundation as an incubation project. The project is called <a href="http://incubator.apache.org/projects/callback.html">Callback</a> and the code has been moved to <a href="https://github.com/callback">github</a> for now. There are also some nice tools coming in Adobe Dreamweaver which can be used to work with PhoneGap and with the acquisition it might get better and better integrated. This means that Adobe will hope to make money out of the development and probably the build service, yet keep the platform open-source and free…</p> <p align="justify">All in all, I think this is great movement for PhoneGap and cross-platform mobile development. What has been hard for ages since the promise of JavaME, seems more likely now. Good job Adobe!!</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com2tag:blogger.com,1999:blog-8829798408217308876.post-71071059015132644882011-09-22T05:09:00.001+02:002011-09-22T05:09:07.943+02:00A Review of NetBeans IDE 7 Cookbook<p align="justify">A few weeks (actually a month+) ago, I was sent a request to review the <a href="https://www.packtpub.com/netbeans-ide-7-cookbook/book">NetBeans IDE 7 Cookbook</a> and blog about it. Incidentally, I was preaching/teaching Netbeans to a few students during the same time. So, although I thought it came at the right time, later I was travelling quite a bit and didn’t have much time to read through the book. Finally, in the last few days, I decided that I should read through the book and see what it is all about. </p> <p align="justify"><img style="margin: 5px 10px 5px 0px; display: inline; float: left" align="left" src="http://www.packtpub.com/sites/default/files/2503OS_NetBeans%20IDE%207%20Cookbook_9781849512503cov.jpg" width="174" height="217">The book is published by Packt Publishers and written by the Brazilian Rhawi Dantas. It is nicely arranged in terms of the chapters and the kind of details that it talks about. Starting from the basics of creating projects, importing projects, to designing GUIs, Web projects, Mobile development, Profiling and Testing… It covers most parts of the IDE pretty well.</p> <p align="justify">What it lacks is the depth of coverage. Like Maven and some of the options like skipping tests is a very useful feature in Netbeans is missing from the book. Or the WSDL Editor. Or Navigation features like Go To Implementation is missing!!</p> <p align="justify">In conclusion I’d say the book is interesting for beginners and slightly boring for experienced Netbeans users. If you are preparing for Netbeans Certification, then this is a book you should read, but otherwise I feel the web documentation of Netbeans is good enough to find your way through… I’d rate this book 2.5/5</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0tag:blogger.com,1999:blog-8829798408217308876.post-15946078354219669032011-09-22T04:40:00.001+02:002011-09-22T04:43:04.926+02:00NetCAT 7.1 Bug Counting<p align="justify">Since, I have signed to <a href="http://wiki.netbeans.org/NetCAT">NetCAT</a> 7.1 (Community Acceptance Program), I wanted a quick way to see the number of bugs that I have filed compared to the other top 20, I’ve written a small script to go through bugzilla. The one that is on the page seems a little complex to look at and has lots of numbers to look at.</p> <p>I’ve done this instead:</p> <p><iframe height="500" src="http://sunbiz.jelastic.com" width="95%"></iframe></p> <p>Beyond the bugs, there is also the email count… We will get to that later!!</p> Saptarshi Purkayasthahttp://www.blogger.com/profile/01568273618209769803noreply@blogger.com0