It’s the bitter truth of life. When you try to improve by 1% daily, the winner has 5% improved than you. You’ll never make it to the top without any backing up for yourself.
It’s the bitter truth of life. When you try to improve by 1% daily, the winner has 5% improved than you. You’ll never make it to the top without any backing up for yourself.
The second one is quite tricky! It’s very difficult to do some deed selflessly. If we give closer thought to anything which we do, something selfish will surely come up!
Today, I was thinking about how quickly and how vastly our priorities, importance of things and people, change over time. Personally, I have seen that one thing which was once very important in my life now is just speck of sand in a desert.
The reason today I started writing about it was very trivial; my end semester examinations commence from tomorrow.
I still remember the exam time from my first semester, I was terrified (of course a lot less from the time I was in my high school) mugging up the formulas, solving the tutorial sheets, looking over the solved examples again and again, etc. But today just one day for the examinations, knowing that I have not attended a single class attentively, not even aware of the syllabus, I am Ok! In fact more better than that.
I actually feel that over time our way to perceive “important” things in life changes a lot. One thing which is currently so important to you that you will push yourself more than your limits may be rendered entirely useless in some time.
For example, I worked my ass off during the examinations in school, but now when I look back to those grades which I secured in school, they are unquestionably useless, they have zero significance in my life right now. So, the point is should I be worried about anything which is going in my life right now knowing that after some time I will look back and say that it was just waste of time and I could have done something else more productive or enjoyed that time of my life more peacefully?
Now, the significant thing to closely see is that it’s not like those events never actually had any importance, it’s just over the time I am forgetting or don’t want to acknowledge what their significance was. Retaking the example of exams, during those school times, the marks in those exams were essential. Because, if I didn’t study hard, I would not be able to get a good college and which will lead to a low paying job, and thus I will be making compromises at every facet of my life, and the list goes on and on. But now when I am in a good college, I feel those marks are useless.
So, it’s not that nothing is worth the efforts, but after achieving the importance of them, we tend to think of those events as useless. For example, most of the people are worried about exams in college because they know if they fuck these up they are not going to beg a proper placement. But since I know these grades are not going to help me in my placements, so I give zero fucks to the exams. Contrary to my first semester where I had no such backup, so I prepared hard for the exams and was worried too.
On 18th March 2018, KGP witnessed its first ever developers meet[1]. The initiative was taken up by Ksheera Sagar the UG Representative to the Senate. He got to know about the MetaKGP hack day[2], and he thought of a bigger version of it to bring all the developers in the campus on a single platform and also welcome students who are interested in becoming developers.
Following were the goals he thought of :
1. To give a brief idea of works done by MetaKGP and the open source community on campus
2. Ongoing key projects and initiatives
3. Discussing the potential projects for the upcoming and existing developers
4. Explaining the necessity of ERP API
5. Presentation of 2–3 student wellness projects by myself and Krushi (G.Sec Students Welfare TSG) which needs developers
6. Encouraging women from STEM areas to start with dev
7. Requesting the professors (like PPD, PDG, PPC….) to speak on this occasion
8. Requesting office/ lab space for developers
Metakgp[3], Lean In[4], Kharagpur Open Source Society[5], Institute Wellness Group[6] came together to make the event a success.
The event started with Naresh and Nishant giving an introduction of MetaKGP and its various projects. After that Kshitij gave a presentation about the initiatives of KOSS to promote the opensource culture in the campus.
Siddharth took the opportunity to bring to the notice of the administration on how providing some open endpoints to the data in ERP can help developer community build cool projects around the ERP and benefits of enabling an OAuth 2.0 authentication for the ERP to make it more developer friendly.
One of the most frustrating and time-consuming thing for all the final and pre-final year students in building their CV on ERP. Ksheera Sagar pointed out the problems in the CV module and proposed a solution for the same.
We all know how bad the gender ratio is in IITs and it is worst in the tech community of the IITs, Ayushi Mrigen gave an introduction about Lean In and also an insight of the perspective of girls community on why they think this problem exists and what are their steps to improve this situation.
Prof Sriman Kumar Bhattacharyya, Prof Pallab Dasgupta, Prof Adrijit Goswami shared their views on the open source movement currently prevailing in the campus and about the steps already taken by the administration and their plans of the future to help the developer community.
Prof Sriman Kumar Bhattacharyya, Deputy Director, IIT Kharagpur briefed the students about the opportunities for the funding of projects and lab spaces from the administration side.
Professor PDG of Computer Science and Technology Department, an alumnus of the batch of ’90, shared the story from his college time. Since we all know, it was the time of genesis of open source. He shared how they were just shifting to UNIX systems and how Donald Knuth developed Tex and open sourced it, but due to complications, no one was able to use it and later came Latex a more user-friendly version of Tex which was again open sourced. His talk was very insightful and inspired a lot of people sitting there.
Prof Adrijit Goswami, ERP Chairman, talked about how the ERP functioning is different in Kharagpur than other IITs and the autonomous structure of ERP in our institute. He also told about the current problems faced in ERP and how students can help in overcoming them. Though, he didn’t talk much related to the presentation given by Siddharth on OAuth for ERP which was quite disheartening.
Thanks to Himanshu, the whole event was video recorded, and the video for the same can be found here.
All the presentations from the event can be found here.
[1] https://www.facebook.com/events/181539055903174/
[2] https://www.facebook.com/metakgp/posts/1714405645479506
[3] https://www.facebook.com/metakgp/
[4] https://www.facebook.com/leaniniitkgp/
[5] https://www.facebook.com/kossiitkgp/
[6] https://www.facebook.com/iwg.iitkgp/
It’s been 4 years since I thought I would be able to wear that cloak and the hat which every graduate wear on graduation day. I see lot of happy faces. My friends are there with their parents and all of those faces are full of happiness and pride. I know it’s not an easy task to get into that level. Today is the day that “Under graduates” will become “Graduates”.
When I look back into the past 4 years, the friends I met at the very first class has changed alot. They have grown up. They have learnt a lot. I’m happy to see that many of those friends have even got jobs which they were dreaming of. So, life is such.
Time is not a measurement, it’s just an indicator to our life events.
I could learn many mistakes of myself and also I could understand the people with these 4 years of time. College life is not only about the studies. Many of the things are all about the life. Making friends, working on teams, studying, playing games, having lunch together, helping each other, that’s what it really means.
When I see my friends are graduating, I couldn’t stop the tears coming down from my eyes. There is no seat for me in this graduation day! How frightening is that? Yeah, life is hard. I see when people are giving speeches, they just say their college life was hard. But I doubt whether they even mean it or not. I never failed a single module in my curriculum course(never even had lower than B grade). But I had no choice other than to skip one year of college. I wish I could go back in time and make things correct.
People have called me a stupid, but I do believe I made correct decisions when I have to. Nobody was there to tell me what to do and when to do. Nobody knows the future. I missed the graduation of 2018. I know I have already booked my seat in 2019 graduation day.
However I do happy to see the people who I saw in back in 4 years and see them today. Some people have changed their mindset for me in bad way, for no reason. I don’t have any hateful feelings for them.
So, some time back I deactivated my facebook account and was cut-off from the social network realm entirely. I thought it was the best decision I could make because now I had a lot of free time with me which I was previously wasting in scrolling through unnecessary feeds.
The reason why I deactivated my account is mentioned in my previous post[1]. It was also not the first time I tried staying away from Facebook, I have deactivated my facebook account before too.
The problem nowadays is, Facebook has spread its roots so deep in the life of people that even if a single individual wants to stay away from it, he/she could not.
In my case, I am not returning to facebook because of some addiction. I am returning because I had to.
In the absence of Facebook, I was missing out a lot of things. All of the people from my department primarily share information, notes, books, etc., on the facebook group only. And I was missing out all the things. I had to repeatedly tell people to share stuff from the group to me via E-mail, but how can I ask for something which I don’t even know is shared in the group.
For example, yesterday only we were supposed to have our Tractor and Power Systems Lab class and since I had till now not submitted a single lab report I wrote everything till night and was prepared for the submission. But just a few hours before the lab my friend told that lab class was cancelled !
I was so frustrated that if I has this information this beforehand, I could have done some other important work the day before instead of copying the lab manual. It was the time I decided I have to go back to the facebook!
[1]Leaving the realm of social media, again !
[2]
I recently started reading the book Sapiens- A brief history of humankind[1]. And this post is inspired from the book.
In the book “Sapiens” there is a comparison of evolution alongside religion. According to almost all the religions, humans were the epitome of creation, completely different, superior than the animal kind. But according to the theory of evolution species similar to us walked the facets of Earth long before the evolution of Homo Sapiens. Some of them are Homo Neanderthalensis who lived in Europe and Asia, humans of Denisova, etc.
A question was, in the later stages of evolution when Homo Sapiens were evolving on the different part of the world and after migration when the met their half-brothers, how they might have reacted?
Two possible theories are discussed in the book:
Whatever might be the reason of vanishing of other human tribes from the face of Earth, both the theories contradict with the teachings of most of the religious texts. All most all the religions of the world consider humans to be the epitome of creation, far superior to the other organisms and enjoying special privileges from “God” making them completely different from the animal kingdom. Most of the religions teach us that we all popped out of nothingness and enjoyed the supremacy over other organisms.
We have concrete proof of evolution, and there is no denying that millions of years ago organisms similar to humans resided on Earth. Now the question is how did the so-called “Gods” of the different mythologies had regarded of the earlier human civilizations. Because the problem is, primitive humans didn’t know how the worship the idols of the deities.
The concept of God looks a total scam to me. I will personally talk about the Hindu mythology here. Let roll back to the time of the Sadhus. There is no denying that a lot of very brilliant people were present at that time. What might have happened was they would have discovered a lot of ways to make the life more easier by following a lot of practices which required a lot of dedication and patience but those practices paved the roads for a healthier and more prosperous life. Now, the problem was to convince the majority to follow these practices. It would have been tough to convince a large group of people, so over time they created a supernatural entity to create a fear in the hearts of people and to make them follow what is right. And over time this fictional fear was engraved so deep in the minds of people that now, people are ready to even kill others for them.
The best example for this is Harry Potter. Let’s suppose a group of people started believing that Hogwarts is real and Hogwarts Express awaits wizards and witches on the platform 9 3/4 of the King’s Cross Station to take them on the journey to a magical realm. And slowly the population of these “believers” started expanding, and over time they became aggressive and started murdering people who claim that it doesn’t exist. Now, a time will come when the only people left on Earth to breathe are those who believe that wizards and witches dwell the world. This fictional story will be fueled for ages by a lot of rumor spreading personnel and it will never cease to exist. So, over time the imagination of J.K. Rowling will become real. Something like this might have happened in case of say Ramayana, Mahabharata, etc.
Again these are all theories, and if someone is watching over us or not, no one knows. So, just do whatever you feel is right!
:)
Google Code-In is an annual program hosted by Google. This program is focused to spot the hidden talents in high school children and bring them to the open source culture. Program is announced by Google. Usually timeline goes up-to 3 months duration. Many open source organizations are willing to take part in this program and welcome the youngsters to come and do something for the open source world.
It was bit difficult sometime to review all the tasks which are pending in the task review list. But I understood that providing feedback soon is very important for the students.
It was my final exams in the college and I couldn’t catch up with some weeks. There was a situation where GCI admin for OpenMRS asked some help from every mentor. There were few times where we were taking some delays when it comes to reviewing tasks.
That was the moment I really felt that time has come for me to do my job for the community at that time. So, I started off 2018 by clearing out the entire review queue and I was constantly provided feedback. Once you are reviewing it’s like riding a boat. You’ll never get tired because of the feeling that you get. (Dopamine… LOL)
They are teenagers. Always appreciate their work (Say NO to copied work)
Provide in detail feedback. Give some guidance on what needs to be changed.
Propose solutions and let them to pick and develop it further.
If you are not sure about their past work in the same thread, ask the most recent mentor to check it out.
interact with them through IRC or other chat channels
interact with them through IRC or other chat channels.
So, sometime back I stopped using Facebook, WhatsApp, etc for around a year. The reason was personal, but it did help me a lot in focusing on important things in life. For the first, I got to know how many are “real” friends in my life. I feel in today’s connected life where everyone is just a click away the real bond which you share with the people in your life is lost somewhere.
So, I was watching a video[1] today. The thing which led me to deactivate my facebook account was that in the video it was mentioned that people in today’s world try to please the 16 million people around the world when they share something or upload something and I think it is quite true. Wherever I go or whenever I click a picture the first thought that comes to my mind is to take the picture more artistically good so that it looks better whereas I think the purpose of it should be to keep the details as sharp as possible so that you can recollect the memories properly. And with social media where 100s of people are there watching you, this motive is lost somewhere. One can argue that you can stop posting pictures or share things, but the thing is when you see others sharing their experiences, there is an urge inside you to do the same to get the same praise, at least I feel so. So, to completely detach myself from all this I have deactivated my facebook account again. Currently, I will still be using messenger, but I may disable it also after some time.
[1] https://www.youtube.com/watch?v=39RS3XbT2pU
Google Summer of Code is a program sponsored by Google to introduce students to open source programming. Students work on the projects mentored by different open source organizations. It is an incredible opportunity to learn the various tools and practices used in real world softwares. I was GSOC 2017 student under OpenMRS in my sophomore year. In this post I will shed some lights on how to start preparing for GSOC.
2018 Program Timeline : https://developers.google.com/open-source/gsoc/timeline
Before I go on to the general guidelines of getting selected for a project, let’s look at the timeline of the GSoC 2018 program. I’ll be discussing the events that are relevant to students, and the detailed timeline can be found on the official site.
The period of February 12th to 27th March is of utmost importance to students who wish to get through. This is the time when you decide which organizations to work on, connect with the mentors of the project and prepare your proposals to be reviewed by your mentors. By 27th March, you must have submitted your proposal on the official site, after which your proposal is locked. If, however, you find mistakes in your proposal, you may ask your mentoring organization to make it editable.
A student is allowed to submit at most five proposals to the program under various organizations. It is therefore possible that two or more proposals are selected. But a student can work on only one project during the summer as per the rules of the program. So the organizations try to resolve it first among themselves, or ask the student which project they would like to work on.
The time between the announcement of selected students and the beginning of the coding period is called the ‘community bonding period’. Google recommends that you spend the time getting to know people on the mailing list or the IRC, read documentation and get up to speed with what is happening in the organization to begin your coding. However, you may also start the coding in the community bonding period if you and your mentor decide that’s the best thing to do. A welcome package is sent to you at this time.
Your work is evaluated by your mentor after four weeks since the coding starts. If you have been meeting the goals you set in your proposal, you should be able to pass this fairly easily.
Phase-2 evaluations are a lot more harder than the Phase-1. Under these evaluations, mentors expect to have a clear picture of whether or not the student will be able to finish the project or not.
Your final work is judged by your mentoring organization to decide if you have passed the program. A certificate of completion and a Google Summer of Code t-shirt along with a few goodies would be mailed to you on successful completion of the project.
I have successfully completed the program last year and people often ask me for the secret recipe for getting accepted. There is obviously no such secret. However, there are definitely certain guidelines you can follow, but they are not applicable to every individual.
I believe the most important factor in getting into GSoC is having sound knowledge in one technology. Be it Java, Python, Ruby or JavaScript — make sure you are comfortable in the language and target organizations with projects based on your comfort zone.
Secondly, all open source organizations use version control software to manage changes in code from a globally distributed team. Be it git, svn or mercurial, you should know the basics of version control and be comfortable using it.
Another important pre-requisite in my opinion is the use of unit tests. Most organizations need you to write unit tests for the code that you submit and therefore, you need to know how to write them well.
Although prior contribution to open source projects is an advantage, it is not necessary as long as you can prove you can contribute to the codebase by submitting a patch.
If you are a Windows user then you might feel odd one out in the group of developers. Most of the developers (including myself) prefer Linux over Windows for various obvious reasons. Although it is not a necessity (unless you are working on the Linux kernel itself :P) but it is highly recommended that you install and learn any of the Linux flavor. You might find it difficult at first but trust me, it will make your life a lot easier later into the program. Go to your org and ask people on IRC to help you with setting up the developing environment.
Although it’s already late to consider this, but if you plan to apply for GSoC 2018, start now. If you are reading this already late post, finish it! Stop everything you are doing and start! The earlier you start, the better your chances are for selection. But how exactly do you “start”?
You could check the organizations that have been selected (If the list of organisations is not out yet look at previous years organisations), go through their “ideas page” and see if you are interested in their projects. You could suggest your own ideas, but the ideas listed on their respective pages have already been debated and organizations are most probably going to go with those ideas — unless yours is really innovative! (and that’s very rare :P)
If an organization interests you, join their developers’ mailing list and hang out in the IRC chat room. Open source people are generally very friendly and if you have any issues, they’re there to help you out! However, remember that mentors also have full time jobs and open source is only voluntary work, so you should be considerate too!
Also, make sure you’re polite when you communicate in the mailing list or IRC. In addition to that, be patient (and avoid being like this).
Remember, mentors are volunteers and they are not obliged to help you. They have many other important things to do, so respect their time. Learn the IRC, mailing list etiquettes and how to ask smart questions. This presentation is also going to help you a lot.
Getting introduced on the mailing list or IRC may not be enough. To be selected for a competitive program such as the GSoC, you need to prove you’re among the best. The easiest way to get noticed is to contribute to the codebase.
Read the documentation and clone the code on your local machine. If you have issues running it locally, you can always revert back to the mailing list or IRC (you will surely get your issues resolved!)
Every organization also maintains an issue tracker (or some list with some other name like a bug tracker). Find an easy bug to start off, or ask for one on the mailing list. At this point, you must know one important thing — many others are working on the organization, so never start working on a bug unless you have been assigned the bug. If you do and someone was already working on it, the organization is obliged to accept the solution that was provided by the one who got it assigned first.
Once you solve a bug, submit a pull request (or a patch, if it’s on GitHub, GitLab or BitBucket). Then work on a second bug. Then a third and fourth and so on. Most organizations require you to submit a pull request as a pre-requisite to be accepted in the program.
The proposal is a detailed document that you submit to the organization before getting selected for the program. It roughly contains information on what you plan to do over the summer, which requires good understanding of the project that you are working on.
The outline for proposals are usually supplied to you by the mentoring organizations. They usually don’t have a word limit — so it’s a good idea to make it as long as possible, explaining every small detail. In my opinion, include everything in as much detail as you can, include UI ideas (if your project involves one), include diagrams, graphs. Try to make it as detailed as possible, a good proposal would be around 10-15 pages.
Here are a few guidelines on writing a great proposal.
Here’s my own proposal
Code the summers away! And don’t get disheartened if your proposal is rejected, you can always contribute to the organization and learn from the community.
The post Cracking Google Summer of Code 2018 appeared first on Sanatt Abrol.
From October 16th to 20th, I attended the ACM MobiCom conference that has been held in the Snowbird Ski resort near Salt Lake City, Utah.
Sponsored since 1995 by the SIGMOBILE group of
the Association for Computing and Machinery (ACM), MobiCom is an annual
international forum that gathers researchers and students, from** academia and
industry**, to present their latest results in the fields of networks, systems,
algorithms, and applications that support mobile computers and wireless
networks.
MobiCom is a highly selective conference (about 18% of acceptance
this year) offering quality works and presentations.
The 20’ presentations were allocated along the week and peppered with social events, demos and posters sessions, concurrent workshops, the Student Research Competition (SRC) and MobiJob.
This year, during the VLCS 2017 workshop that preceded the main conference on October 16th, I presented the paper SeedLight: Hardening LED-to-Camera Communication with Random Linear Coding co-authored with Razvan Stanica, Hervé Rivano and Adrien Desportes.
During the week, some papers particularly attracted my interest:
In her paper, Zhang creates a covert-channel based on the reflection of surrounding RF signals on smartphone or laptops. This is achieved controlling the impedance of the device’s wireless network interface card (NIC) by switching it ON or OFF. Even if the throughput is very low (< 2 bps) the main interest of NICScatter is that it doesn’t need any OS modification or root permissions.
After unveiling Litell in 2016, C. Zhang presented Pulsar, an indoor VLC localization system. Pulsar œrelies on off-the-shelf luminaries, a USB dongle with two photodiodes, and the smartphone sensors to provide accurate (about 10cm) 3D indoor positioning using the angle-of-arrival (AOA) method.
On the first day of the main program, Chen introduced a novel near-field communication protocol, called MagneCom, that takes advantage of Magnetic Induction (MI) signals emitted from CPUs and captured by magnetometers on mobile devices for communication.
Ambush Varshney presented a Visible Light Sensing (VLS) system that consumes only tens of μWs of power to sense hand gestures and communicate. Their design uses solar cells to achieve a sub-μW power consumption for sensing and further transmit the gesture detection results by backscattering the ambient RF signals. Note that Andreas Soleiman, co-author of this paper won the Student Research Competition and showed a working prototype during the VLCS workshop demo session.
The researchers from University of Minneapolis introduced a promising approach
to physical-layer cross-technology communication (CTC) between WiFi and
Zigbee.
WEBee opens a promising direction for high-throughput CTC via
“physical-level emulation”. WEBee uses a high-speed wireless radio (e.g., WiFi
OFDM) to emulate the desired signals of a low-speed radio (e.g., ZigBee) by
manipulating only the payload of WiFi packets.
Their paper won the best
paper award.
The authors also showed WEBee during the Tuesday demo session.
This year, in addition to the conference and workshops, two tutorials funded by
the NSF were organised during the weekend.
These tutorials held on the
University of Utah campus, were mostly hands-on, providing exposure to emerging
wireless platforms and technologies.
The first tutorial made use of PhantomNet, a platform to enable experimental research in mobile and cellular technologies like 4G and 5G.
The second introduced the edge-computing platform created by the WiNGS Laboratory team led by Suman Banerjee (University of Wisconsin-Madison) called
Paradrop.
Paradrop provides computational and
storage capacities to the extreme edge of the network, here the WiFi Acess
Point, to avoid useless communication to a Cloud platform.
After Hawaï, Paris, New-York and Snowbird, the next edition of Mobicom will be held in New Delhi (India). I hope to be there :)
So this Diwali I decided to stay in the campus instead of going home because of low attendance and not having optimum holidays. I thought it would be excellent to stay and enjoy the awesome illumination of IIT Kharagpur, but it turned to be a total disaster. I had some heated arguments with the hall council members on the forced illu duty and power cutting in junior residential blocks which killed the Diwali mood! But in the evening two of my friends Prakhar and Rahul came to my room and we were chilling, and after some time our other friends also joined us, and it lightened my mood, and we decided to go to Park Hotel for drinks and dinner. While we were just reaching Park, someone suggested to go Shergil Dhabha, and that was the best decision of the day.
The place had the typical Dhabha ambience and we enjoyed like hell. But the main reason which motivated me writes this whole thing up was the talk with one of the people there. His name was Sukhwinder Singh. He was a remarkable person. He was the owner of the place and was sitting on the counter. Rahul and I went up to him and casually started talking. He told us he was from Jalandhar and when we asked him when he came to Kharagpur, to our surprise, he remembered the exact date, time, weather and even the car number with which he came here. He told us he was 15 years old when he came to Kharagpur and now his age was around 60–70. He also said that he has three kids, one daughter, and two sons. And all three of them are currently in Melbourne, Australia. That was an amazing thing to hear. He also told us that his dad owns the petrol pump on the other side of the road. He was the most impressive guy I met in a while. He really made this Diwali worth remembering for me.
From October 16th to 21th, I attended the ACM Mobicom conference that has been held in the Snowbird Ski resort, Utah.
On October 16th, I presented the paper SeedLight: Hardening LED-to-Camera Communication with Random Linear Coding co-authored with Razvan Stanica, Hervé Rivano and Adrien Desportes at the VLCS 2017 workshop.
The paper is now available in the VLCS’17 workshop proceedings.
GraphQL is a new API standard that provides a more efficient, powerful and flexible alternative to REST Web services. It was developed and open-sourced by Facebook and is now maintained by a large community of companies and individuals from all over the world. It provides an alternative to REST and ad-hoc web service architectures.
It enables declarative data fetching where a user can specify exactly what type of data it needs from an API endpoint. Instead of multiple endpoints that return fixed data models, a GraphQL server only exposes a single endpoint and responds with precisely the data a client asked for. Simply says, You can get a bundle of data using only one GrpahQL API request instead of triggering so much of API endpoints.
Let Assume, there are some API endpoints to retrieve some useful information from the server.
So, If you want to analyze the user info, you want to trigger at least three API endpoints to retrieve the required info. The count of the triggers may differ about your API designs. It can be large or less than this count. Anyway there are one or more API triggers required to achieve some tasks.
GraphQL is one of the solutions which can reduce this amount of triggers to retrieve the response from the massive data collections. It based on some kind of querying for the data retrieval.
For the above example, You can retrieve the required data using one API trigger! How is this possible?
Endpoint : ~/api/graphql
Request : query {
User(id : "er3tg439frjw") {
name
posts {
title
}
followers(last:3) {
name
}
}
}
Response : {
"data" : {
"User" : {
"name" : "Mary",
"posts" : [
{ "title" : "Learn GraphQL today" }
]
"followers" : [
{ "name" : "Jhon" },
{ "name" : "Alice" },
{ "name" : "Sarah" }
]
}
}
Have you seen the Response of the GraphQL request? It contains almost much required data for the request.
Yah, you can get it by only one API request!. That’s the very big advantage of the GraphQL based API endpoints.
Now a days, Most applications want to fetch data from a server where that data is stored in a database. It’s the responsibility of the API to provide an interface to the stored data that fits an application’s needs.
GraphQL is often confused with being a database technology. This is a misconception, GraphQL is a query language for APIs — not databases. In that sense it’s database agnostic and effectively can be used in any context where an API is used[1]
GraphQL is totally based on queries. It will fulfill the request queries with your existing/pre-defined data as the response.It provides a complete and understandable description of the data in your API and gives users the power to ask for exactly what they want over the huge data and nothing more, makes it very easier to evolve APIs over time, and enables powerful developer tools.
You can simply ask for what you need from the massive data, you will get exactly that one.
Just send a GraphQL query to your API endpoint and get exactly what you need from there, nothing more and nothing less-exactly what you want.
The response for the GraphQL queries always contains the predictable results. API endpoints using GraphQL are fast and stable because they control the data they get, not the server.
It will reduce the number of API calls for a scenario. GraphQL queries access not just the properties of one resource but also smoothly follow references between them. While typical REST APIs require loading from multiple endpoints, GraphQL APIs get all the data in a single request.
Just summary about the GraphQL,
GitHub chose GraphQL for their API v4 because it offers significantly more flexibility for their integrators. The ability to define precisely the data you want — and only the data you want — is a powerful advantage over the REST API v3 endpoints. GraphQL lets you replace multiple REST requests with a single call to fetch the data you specify.
Thanks and for the more read,
[1] — https://www.howtographql.com/basics/0-introduction/
[2] — https://medium.com/chute-engineering/graphql-in-the-age-of-rest-apis-b10f2bf09bba
[3] — https://code.facebook.com/posts/1691455094417024/graphql-a-data-query-language/
[4] — http://graphql.org/learn/
[5] — https://philsturgeon.uk/api/2017/01/24/graphql-vs-rest-overview/
[6] — https://developer.github.com/v4/
Nice!
As a request, Do not attache code as images or screenshots. You can use `code blocks` in medium to show your codes.
The biggest summer 2017 has reached the end. I think you all are enjoyed your summer holidays very well. Most of you went for the trips and some of you took the long rest.
I got a valuable gift for my career. YES! I was busy with Google Summer of Code and spent all summer to gain a lot of knowledge. I never felt hard to miss the trips or rest. Because I am very satisfied and enjoyed my summer with OpenMRS — I am happy to say, I lived with my passion and wrote Codes, save lives.
I got some capital for my career through the Google Summer of Code Program. I am not speaking about the Stipend, Just mentioned about the knowledge and experience. Now I can develop my self using that valuable experience.
Google Summer of Code is a global program sponsored by Google Inc focused on introducing students to open source software development for the open source organizations. Students work on a 3-month development project with an open source organization under some mentors.
Do you like to get a chance to work on Google Summer of Code? Then better to think about these guidelines first,
You can get information about GSoC program through the GSoC FAQ section.
OpenMRS is an Electronic Medical Record System with a lot of facilities and OpenMRS is also a community of developers, implementers, and users working toward a shared and open foundation for managing health information in developing countries. So as a developer, I would like to be part of OpenMRS to make it more efficient using my Computer Science and Engineering related knowledge. OpenMRS is an open source platform, so there are a lot of ways to contribute. One of the most identified methods to contribute OpenMRS is Google Summer of Code.
I never try anything massive! Don’t think too much about the activities needed for this role.
Simply Says, Do something to get community focus on your activities.
Yah, I got the chance to work for OpenMRS though this year GSoC. I worked with Daniel and Wyclif during this summer period.
Let follow this another post to get more about contributing to the OpenMRS,
How to reach OpenMRS as GSoC Student?
More metadata Management in AdminUI — Can you understand anything using this title?
No, If you are not familiar with this domain, then definitely you can’t understand the content of this project with only the title. The title of the project might reflect the concept as more complex. But there is nothing difficult.
Don’t get afraid of the Project title and the content. It may contain some unknown technical terms or technologies. Just Google it them and clarify.
You should Google it everything and get some immediate knowledge about them At least try to get knowledge about the used terminologies.
Can you imagine the implementation of the function in an abstract class?
Like that, GSoC Title and content is the abstract of the project. You should try to get more information about that respected project from the community or your mentor.
Don’t spend much time on unrelated projects for your domain area. If you are only like to learn something new, then you can involve some new domains.
If you can’t get familiar with the project content, then better to move with another project. There will be a lot of projects to you. You can select one project which will make you really enjoy.
The project may need more than 5 technologies but still, you are the only familiar with 2/3 technologies. Then don’t hesitate to try on that project. Just Google the unknown technologies and go through some of those documentations. You will have much time before the project starting period from the project selection time(Approx. 2 months). Definitely, you can learn some of those technologies within this time gap.
GSoC is open for the Students(who can learn!) not for the employees(who already knew it)
The perfect answer will be, Show your interest and Do something to convert the community view about you. They should trust you and follow your works and interest.
Contact the mentor frequently and discuss about the project. Try to get more information about the project from the mentor.
He/She is the only resource person who knows totally about the project.
If you are learning anything new, then just write some blog posts about that. It will increase your chance to the GSoC. Blogging is very important to the Open Source world. You should expose your knowledge to some others using the blogs or any other writing materials.
Read articles and learn something new, then Write blogs about that!
If you can find any ideas to write something about the organization which is your target or any ideas related to your project domain will increase your changes for the GSoC. It will express your ability and interest to the others as well as a community.
No need to fulfill the GitHub timeline with all green boxes. Anyway you need to have some of the green boxes at there :-p (I think. I had only 10% of green boxes when I was planning for the GSoC)
The Community will not depend on your GitHub timeline. You don’t need to think about that much. They only expect your interest and commitment to the project.
You can apply maximum five projects for the GSoC. Anyway, you need to work on that projects and want to show your efforts to the community. Showing efforts to five projects will not increase your chance at GSoC. So just plan and catch 1–3 projects among them and work only for those during the proposal time.
Please go through the official proposal template for the organization which is your target. Each organization prepared some proposal templates for their easy of access. If you missed that templates, then you can’t think about the GSoC :-p
If you can, just implement some demo samples for your project and include them in your proposal. Do not forget to include the timeline for the project. Clearly, indicate the main task and sub task about your project plan and better to describe those within 1–2 sentences in the timeline.
Do not wait until the last minute of the proposal submission deadline. Start working on proposal writing before one or two weeks and check all the spelling mistakes, grammar, and terminologies carefully. Making mistakes in the proposal may decrease your chance at GSoC. You should fit on your proposal and show your innovative ideas through your proposal.
Submit your draft proposal before one week of the submission and request your mentor or community to review that. Do not ask them at the last minute for the review, then surely they will fire you. If you ask early as possible, then they will spend some more time to review your proposal will give some comments to improve your ideas. Then finalize the proposal and submit to the GSoC.
I learned a lot of new aspects during my GSoC time. I got an awesome mentor :-). He helped me in so many ways and community cared about me every time.
Hopefully, I have developed these following skills during my GSoC time,
This is the final report about my work for the Google Summer of Code 2017,
More Metadata Management in AdminUI — GSoC 2017 Project
Spend some time during your summer and, Start Your Engineerings!
Google Summer of Code 2017 had 12 mentors under the age of 18.
Say what? 15 years old!? Yep! This group of enthusiastic teens started their journey in our sister program, Google Code-in, an open source coding competition for 13–17 year olds.
On October 15th, a day before the start of MobiCom, I will attend two hands-on tutorials hosted at the University of Utah about two emerging wireless technologies: PhantomNet, a platform with an end-to-end mobile testbed to experiment with new wireless technologies in the wild; and ParaDrop, a new edge computing platform that allows experimenters to deploy edge services in a WiFi Access Point.
I wrote a post on Medium about Bluetooth Low Energy security showing how Visible Light Communication can improve it.
Follow this link to read it on Medium.
Since the Internet of Things is still in the emerging phase, ensuring security and privacy is an important issue that must be addressed and resolved now.
The number of IoT and connected objects grows exponentially, so their security exploits will have more and more repercussions, making them very attractive for the hackers. Recent news and the growing IoT track at security conferences such as Blackhat, or Defcon perfectly illustrates this phenomenon.
In regards to Bluetooth, the SIG greatly enhanced the BLE security releasing at
the end of 2014 the Bluetooth Core Specification 4.2. This update introduces
LE Secure Connections pairing model with the numeric comparison method and
the Elliptical Curve Hellman-Diffie (ECDH) algorithm for the key exchange.
LE Secure Connections fixes BLE 4.0–1 exploits unveiled in 2012 by Mike
Ryan at TOORCON
(video, crackle
project).
Like LE Legacy pairing, LE Secure Connection defines several modes and levels of security (see section 5.2.4 Association Models of the Bluetooth Core Specification 4.2). Nonetheless, the available modes depend on the “IO Capabilities” — keyboard, display, button — that the pairing devices have.
The highest level of security, Numeric Comparison requires that both BLE
devices have a keyboard and a display to confirm and compare a number displayed
on both the peripheral and smartphone. An alternative and more convenient
approach is using NFC.
By placing a smartphone close to the BLE (and NFC)
peripheral, NFC will automatically initiate the BLE pairing and keys exchange
mechanisms to establish an authenticated and encrypted communication channel.
However, the highly limited bill of material (BOM) cost or the PCB size prevents placing a screen, an interactive input, or an NFC antenna on such
devices.
As a consequence, they provide a weak level of security whereas the
attacks targeting such smart objects are rising.
To overcome this issue, we propose a technological solution based on Visible Light Communication (VLC) solution to assist the pairing and the secure
connection setup between a BLE 4.2 peripheral and a smartphone.
This
solution targets low-cost and size-constrained IoT devices that need to setup
the Secure Connection with Numeric Comparison to provide a high level of security even on BLE devices that have neither input and display nor NFC.
Rtone has recently developed
Kiwink®, a short range bidirectional Visible Light Communication system between an unmodified smartphone and a basic and cheap LED.
Kiwink® uses the camera and the flashlight of an
Android or iOS smartphone and does not need hardware modification in the IoT peripheral since it works with any micro-controller.
In fact, bringing Visible Light Communication to your nRF52 BLE device just need a firmware update!
The communication range of such technology is tens of centimeters while the throughput is about 1kbps from the peripheral LED to the smartphone and 50bps from the smartphone to the peripheral LED.
Kiwink® is a trademark and its technology patented.
To solve the problem described above, we propose to take advantage of this VLC-based technology and ubiquitous LEDs, to provide a safe side channel to acknowledge or display a confirmation code and establish a BLE Secure Connection. We can also envisage to transmit a larger key if another Secure Connection mechanism is used.
This out of band key exchange is thus safer than NFC against passive eavesdropper since the light signal is highly directive and easy to obfuscate.
We have shown that Kiwink and VLC offer the possibility to setup a SecureConnection with Numeric Comparison or Out-Off-Band authentication on low-cost and size-constrained IoT devices that have neither input and display nor NFC.
Our solution brings a high level of security on BLE devices that would have been completely unsafe otherwise. The costs of this major improvement are negligible since Kiwink only relies on a cheap LED and a piece of software.
Besides, many application fields and use cases of VLC exists like access control, device-to-device communication, or accurate indoor localization using ceiling LEDs (Kiwink website gives further information about VLC).
Finally, feel free to give your feedback about that. We are are waiting for your comments and suggestions!
You can also read this post and engage the conversation on the NordicDeveloperZone.
by Lahiru Jayathilake (noreply@blogger.com) at August 28, 2017 04:57 PM
by Ankit Kumar (noreply@blogger.com) at August 28, 2017 06:36 AM
Google Summer of Code is sponsored by Google, which aims to allow students to writing code and learning about open source development while earning a stipend with their summer break. There are many amazing projects that you can select your favourite. If you are accepted, your organization will provide mentors for your project to help you to complete the project.
OpenMRS is a collaborative open source organization which aims to develop software to support the delivery of health care in developing countries. And In fact, there are many helpful developers, implementers and user in OpenMRS community from around the world who contribute to the OpenMRS projects.
I am glad that I am one of the students of Google Summer of Code 2017 with OpenMRS, and now GSoC 2017 is coming to an end, so I would like to make a summary of this summer vacation of my life.
Open Concept Lab (https://openconceptlab.org1) is the tool that we want to use in the OpenMRS community to mix-and-match shared, curated concepts (e.g. from the CIEL dictionary) with locally-defined concepts.
The goal of this project is to make UI enhancements to OCL to make it easier for OpenMRS implementations to use it to create and share content.
I put all features in one pull request with each module, so there are many changes in each pull request, and mentor is reviewing it. So it needs time to be merged. Sorry for this.
Pending
Time files, three months has passed. There are too many words to talk in my heart.
Firstly, thanks OpenMRS very much, OpenMRS is reponsible and helpful to students. OpenMRS arranges everything for our students, which is with the bases that I can finish my work better.
Secondly, sincere thanks to my mentor @paynejd who gave me many help to finish this project. He always be patient and helpful to my questions and problems, I can ask him for help no matter what diffculties I encountered.
In the end, thanks to Google for sponsoring the project, providing chances for our students to contribute to open source project.
Thanks
Xu Hao
Hello Everyone,
This post is the summery of what I did during GSoC 2017 and how you can use it along with other useful resources.
Primary Mentor: Stephen S. Musoke (@ssmusoke)
Backup Mentor: Mayank Sharma (@maany)
OpenMRS receives data from various sources which have a different implementation. It is not always possible to check the validity of the data immediately, thus the Data Integrity Module is very helpful to check the validation of the data and alert the administration if something wrong. It helps to maintain data quality.
Added multiple filters, upgraded the datatables versions. Arranged various components in intuitive way.
Added this feature using the datatables library. Adding icons in OpenMRS was a tough task.
Most of the APIs are written but some APIs are left along with their unit tests. Learned about Test Driven Development here. Used OpenMRS Web-Services module.
There was lots of hard-coded string in the module. Moved them to a particular file which can also be used for localization.
Updated ReadMe of the project and few wiki pages. Added an example module which is already integrated to Data Integrity Module.
Minor fixed in patient dashboard — took me a lot of time to understood the working of widgets within OpenMRS.
There are the two major work left I couldn’t complete during GSoC period. Anyways, I’ll keep contributing in OpenMRS with the focus of completing these tasks first.
After last midterm evaluation there wasn’t much visual addition so I’ve used the same video.
https://medium.com/media/442f0900a4b6796812236d55afd841d5/hrefI have learned lots of things that I couldn’t even count. From Webpack to sass, Hibernate to Test driven development, etc. I found mentors and OpenMRS Community is very helpful whenever I got stuck somewhere or whenever I need any feedback.
Before GSoC, I haven’t contributed to any OpenMRS module and it took me a lot of time to understand the architecture and working of OpenMRS. During the community bonding, I was struggling to set-up data integrity module on my machine. Mentors and especially, @ssmusoke was very patient and encouraging. He helped me in every way possible in each and every time I asked for help or guidance. Overall it was a great fun and learning experience.
There is a lot of work needs to be done and I really love contributing to OpenMRS so I will keep contributing.
Thanks Stephen(@ssmusoke), Daniel(@dkayiwa), Darius(@darius) for you help. Thanks OpenMRS for such a wonderful summer :D
Primary mentor : Wyclif Luyima
Backup mentor : Burke Mamlin
Student : Jai Tatia
Project wiki : Link To Wiki
Overview
OpenMRS has always lacked a mechanism that allows users to annotate domain objects with simple text labels/tags, these labels can be useful in various ways e.g to group data and generating work queues. The goal of this project was to provide a tagging mechanism in OpenMRS that cuts across all domain objects.
Objectives
There were changes made to the objectives midway based on feedback from the community.
Implementation
The following pages cover the implementation details, including rest calls and the user interface.
http://wiki.openmrs.org/display/docs/Generic+Tagging+Module
https://wiki.openmrs.org/display/docs/Generic+Tagging+Module+-+Technical+Documentation
https://wiki.openmrs.org/display/docs/Generic+Tagging+Module+-+User+Guide
Video Presentation: https://youtu.be/v6fJNYRR0_c
https://github.com/openmrs/openmrs-module-tag/commits/master?author=jtatia
https://github.com/openmrs/openmrs-module-tag
Project Documentation: https://wiki.openmrs.org/display/docs/Generic+Tagging+Module
Talk Discussion: https://talk.openmrs.org/t/rest-api-for-generic-tagging/11522
Primary mentor : @darius
Backup mentor : @mseaton
Student: @reubenv
Project wiki: Link
Personal website: https://reubenvarghese.me
This project aims at making certain changes to the existing OpenMRS Add Ons infrastructure thereby making it fit as a complete replacement for the existing OpenMRS modulus. The main motive behind this project is to be able to completely retire OpenMRS modulus whose codebase has become tough to maintain. OpenMRS Add Ons also supports OWA’s which is a vital feature that Modulus lacked. The developer is now free to host his module in any of the supported hosting sites while Add Ons does the job of adding it to the OpenMRS module index. Add Ons also gives the freedom of choice of hosting location in hands of the module developer. Add Ons is built on a light framework and hence is hopefully easier to maintain as compared to Modulus.
openmrs/openmrs-contrib-addonindex
Project Documentation: https://wiki.openmrs.org/display/projects/Add-On+Index+Enhancements+Project
Talk Discussion: https://talk.openmrs.org/c/projects/add-on-index
Blogs: Medium blog
I must admit that this has been by far one of my most productive summers yet. I loved every moment of working for this organisation. There have been so many nights, I was up all night implementing features, not because I was forced to but because I was enjoying it. I would like to especially thank @darius for his immense support, help and patience. He has been patient enought to review all my silly mistakes and poor coding habits. He is a person who clearly stands by this quote : “The finest steel has to go through the hottest fire”. He ensured that I fix each and every minute detail in my PRs so that I won’t commit those silly mistakes again. I must admit that my coding style and knowledge has surely improved greatly. I also wish to thank all of the other wonderful members for helping me get involved in this community.
Though GSoC is coming to an end, my contributions to this community will continue for a long time. So don’t miss me just yet
For more project information,
https://wiki.openmrs.org/display/projects/More+Metadata+Management+in+AdminUI+-+GSoC+2017+Project
There is no project type called Reference Application. There are only platform modules. Platform modules are the ones which runs on the OpenMRS platform. FYI, there is a platform module called “Reference Application”. But this is just another typical platform module.
openmrs/openmrs-module-referenceapplication
Thank you and keep in touch! :-)
Hello Everyone!
Last week I continued working on DINT-82 which is going to complete soon, the complex stuff is done, just need to build on it.
This week is 12th week— i.e. last week of GSoC. I have learned lots of things during this period of 4 month (including 1 month of community bonding). I will include all the things I learned in my final post of GSoC’17 .
Coming back to DINT-82, I had real problem testing the REST APIs I was building. Basically, these APIs are written in Java and there isn’t any default hot-reload support for this so testing them every time you make a change was a real pain. Finally, tired of restarting server again and again I asked my mentors what can we about it ? Darius came to my rescue — I was introduced to test driven development. It is a great method for test if being developed feature is working as it supposed to.
I also learned that how can you mock the database and use it for testing, you just need an xml file with the data.
That’s all for now. Thank!
Useful links:
OpenMRS is an open source community driven software which can be used in clinical environments(specially for resource constrained). It has many functionalities and it is widely used across millions of users. As there are many users, product has different variants for different use cases. Typically those are known as distributions. OpenMRS keeps a general purpose distribution called Reference Application. This distribution comes with a modern UIs and most essential modules which needs to have for any clinic to manage the work.
It was suggested that to include reports which are out of the box for Reference Application which gives a better picture about the system data. So, this idea has turned out to be a Google Summer of Code project in 2017.
GSoC 2017 - Built-In reports for Reference Application | Final Presentation
Before starting any work, knowledge about the reporting module is essential to this project. The best time for this was the Community Bonding period. Within this period, basic reports were created by simply using the reporting module. This is purely a functional task which involved no coding work. This led the developer to get a clear picture of the existing module functionalities and how it should be used in order to achieve the project goals.
This was communicated in the first meeting with the mentors.
First meeting with GSoC mentors
Defining reports inside the server would give a clear idea on what needs to be achieved. Therefore, development work was started by defining the reports inside reference application module. Once the module has deployed into a OpenMRS server, those defined reports has to be created automatically. It was realized that those report definitions actually needs to resides within the Reference MetaData module rather than Reference Application module. So, those developments were moved to this module.
Implementing reports in Java — OpenMRS
Once this has completed, it was time to create a new Open Web App to access those reports and display them with rich graphical interface. This new web app makes calls through reporting REST API in the OpenMRS server.
JudeNiroshan/openmrs-owa-built-in-reports
There was a build problem I was facing while implementing the unit tests.
Implement a report inside a .omod (Build Error)
I have spent some weeks struggling on getting the created_date into a cohort definition. Finally with the help from Mike Seaton I was able to find a solution.
how to get date_created as a data definition [solved]
When I was fetching the report data through Reporting REST API, I was facing some other problems to get the proper report data.
Fetching a report to OWA through Reporting REST API
Passing Location as a parameter to some of my reports through Reporting REST had an issue. My mentor Rafal helped me to get through this problem.
How to pass Location object from OWA to reporting REST API
These are the report interfaces which are implemented inside the openmrs-owa-built-in-reports
Since the day I decided to work on this project and being selected for Google Summer of Code 2017, all things can be tracked down in this thread post:
[GSoC-2017] : Built-In Reports for Reference Application
I would like to take this moment for say a big thanks to my mentor Rafal Korytkowski who gave me this wonderful opportunity to become a GSoC student and work on this cool project.
Also special thanks goes out to Akshika Wijesundara who supported me in lot of ways to get into this position. Without him, I wouldn’t have the privilege of becoming a GSoC student.
It’s great work, and you have completed everything! This is really helpful for future GSoC students.
Continue reading "GSoC 2017 With OpenMRS – Operation Theater Module Workflow Enhancements"
So this is the final week of GSoC, the time was amazing I learnt a lot of new things and my coding skills improved lot. I was quite busy at the end due to college and internship season but still I managed to work it out.
Last week I worked a lot. I tested the app in every possible way to find bugs and fix them at the earliest. I also added somore features and started writing my final report too.
This was the final week of GSOC before the evaluation week begins. For this period i added a feature where clicking on a tag redirects a user to a page which lists all patients with that tag.
This week will mainly be spent on cleaning up the code, getting rid of any bugs and completing the documentation.
by Nipun Thathsara (noreply@blogger.com) at August 21, 2017 05:52 PM
by Lahiru Jayathilake (noreply@blogger.com) at August 21, 2017 05:12 PM
DHISReporting module automates the process of running sql queries against an OpenMRS instance and posting the results to a DHIS2 instance. It even exposes a set of web services that can be consumed through your applications or by using cURL. The module works with OpenMRS 1.9.x and higher.
Report mapping function is about mapping DHISReports with Reporting module reports. With this functionality DHIS Data elements will be mapped with the Reporting Indicators of the reporting module. More
Module should be able to handle the data indicators which hasn’t mapped with any SQL query or any other cohort report. With this implementation, those reports will be indicated and will not allow the user to generate the report until the mapping is get completed.
With the new implementation, now user can view the history of the reports which is linked to DHISReports. About this implementation and un-mapped report part is described here.
This objective is about report rendering. The user can decide which should be prioritize when rendering the report. It can be SQL or Reporting. Some reports may have mapped with SQL Cohort reports. In that case the query result may be different from the result generated in reporting module. This functionality will address that issue. More
Demo (Created for mid evaluation. Prioritize the report generation hasn’t included) :
https://medium.com/media/4d309e2d0de0251667fec385783e48e6/hrefDocumentation : https://wiki.openmrs.org/display/docs/DHIS+Report+Module#DHISReportModule-3.4ReportMapping
Github URL : https://github.com/Choxmi/openmrs-module-dhisreport/tree/report-mapping
Blog posts : week1, week2, week3, week4, week5, week6, week7, week8, week9, week10, week11
Issues reported and worked on : DRM-28 , DRM-9 , AC-395 , AC-399 , REPORT-812 , REPORT-828
Hello, guys, as you see in the title, this is the last week of coding period, and we should finish the coding work to be ready for the last evaluation. In fact, I have to say, this is a difficult week for to to do the last objective. Because I have to show the data with visualization. You know that, front-end is hard for me. Up to now, I have a question that I can not solve.
Alright, I say something about the work in this week. You know that, the objective of this month is to add a “Relationship Browser” view in OCL, so that when you are looking at a concept, you can see immediately-related concepts in an intuitive way, and quickly browse to them. So what I should do is that get right data and display them with right way. So Firstly, I coded in back-end to get data, and select them to delete data that does not match. And Secondly, I should show them with visualization ways, so I need to find a right JavaScript library to use, but I met an emergency, so I asked for mentor to help me find a proper JavaScript library. Now, I am working for show data with it.
In fact, I encounter the problem that show the data with JavaScript library, so I have to solve it tomorrow, and finish the work of this month. And I need to get ready for the last evaluation. That’s all work I will do next week.
That’s all, thanks to everyone who cares for me and helps me a lot. Have a good time.
This is the 2nd last week of Gsoc and I was busy fixing some issues that were caused after migration to Bintray . After all , no script can be perfect ;-)
Moreover, I’ll be focusing on getting the Module versions based on user platform version to work. I am currently also trying to tackle my college exams on the other hand and hence was busy;-)
Personal website: https://reubenvarghese.me
After 3 whole months, 2 evaluations, thousands of LOC, countless nights of coding, this week has finally come when Gsoc comes to an end. I am not sure whether I am happy or sad about it but one thing is for sure and that is that I will never forget this experience ever. Moreover, I am so glad to have got this opportunity to work with an open source organisation.
Coming to the progress report, this week had been all about getting the new Rest APIs set up and also the suggestion of modules compatible with the user’s platform version. In the final week, I will be implementing the download counts feature wherein I’ll be fetching the info from Bintray and rendering it in Add Ons.
So finally, now comes the big question. Will the Gsoc mean the end of my relation with OpenMRS? NEVER! I absolutely love working in this organisation and I don’t think I’ll ever want to stop contributing to it.
Personal website: https://reubenvarghese.me
OpenMRS Legacy Module contains a lot of administrative functionalities which are needed to manage the reference application. Most of this administrative functionalities contain a legacy model and less experience to the users. So OpenMRS Community wanted to migrate those administrative features to the Modern Open Web App view. More Metadata Management in Admin UI project is one of those projects which are designed to migrate some of these administrative functionalities to the modern open web app view. In the More Meta data Management in AdminUI project, We focused on this following functionalities,
Those features are implemented as Open Web Apps with the modern view to the users.
More Metadata Management in AdminUI - GSoC 2017 Project - Projects - OpenMRS Wiki
Use some better user interfaces instead of legacy model
Change the workflow of the functionalities to increase the usability
Simplify the administrative functionalities for the users.
Implement Module Drag and Drop features
Implement Module Information page
Allow user to directly download the modules from OpenMRS Addons
Increase the System Information view
Implement Real Time Task Execute features
Those features are implemented as an Open Web App and included into the SysAdmin Open Wep App.
Used technologies for the developments,
This feature will be used to manage the modules in the OpenMRS reference application. Users can use this implementation for this following functionalities,
This feature will be used to display the System information about the OpenMRS server and the system. Users can use this feature to get this following information,
This feature will be used to manage the tasks in the OpenMRS reference application. Users can use this implementation for this following functionalities,
You can get more information about the projects development workflow using those talk threads
GSoC 2017 - More Metadata Management in AdminUI
REST Implementation for Scheduler in Legacy UI Module
Manage Scheduler Implementation on SysAdmin OWA
New REST Implementation for SystemInformation
System Information Page Interface Modification
Created and worked tickets during the project development
[OWA-21] Implement Module Management Functionalities in OWA - OpenMRS Issues
[OWA-22] Implement System Information functionality in OWA - OpenMRS Issues
[OWA-24] Modify System Info Page - OpenMRS Issues
[OWA-25] Implement Module Details view page - OpenMRS Issues
[OWA-26] Integrate with OpenMRS Add-Ons to get module updates - OpenMRS Issues
[OWA-27] Implement Manage Scheduler functionalities in OWA - OpenMRS Issues
[RESTWS-673] Implement REST services to Manage Scheduler functionalities. - OpenMRS Issues
[RESTWS-674] Include More Test cases for ModuleController1_8 in REST Module - OpenMRS Issues
[OWA-31] Implement Drag and Drop module upload feature - OpenMRS Issues
Created tickets for the issues by me during the development period
suthagar23/openmrs-owa-sysadmin
Get more Open Web App Screens here,
OpenMRS SystemAdmin Open Web App
GSoC Time with OpenMRS…. Write Code, Save Lives….!
This week was very productive in terms of quality and quantity. Finally, the module is FINISHED !!
This week, I finished the Client Management REST Controller. Initially all testing was done against the authenticationManager used by the token services. So, I made a new authenticationManager one custom to server the needs of the REST Controller.
The controller supports the following endpoints :
All initial research was finished and discussed thoroughly with Mayank (my mentor, @maany) this week and all the authorization endpoints were completed in the module. The next step is to code the JavaScript based SMART on FHIR client which will run against the OAuth module, get a token and access FHIR resources. The JavaScript client is in development phase at the time of writing the blog and I am expected to finish it by Tuesday.
What next?
After the SMART on FHIR client is completed, I will be documenting all the work done in this summer and create a static github.io page explaining all the work and give useful statistics about my work.
The post Week 12 – Controller Finished – SMART in final development appeared first on Sanatt Abrol.
So, this is it! It’s the final week of Google Summer of Code program. I’m still so proud that I was chosen as a student in OpenMRS community to do some cool work in this summer. This week I was mainly working on writing test cases for React components. Now It’s the time to bundle up the things and make things shinny.
I have changed the appearance drastically with CSS modifications to the user interfaces. Now the things are more clean and minimal. I’m still left with the documentation and preparing a video presentation which need to be shared among the OpenMRS community.
Tomorrow I’ll have the weekly meeting with my mentor. I plan to discuss about the release of this OWA and integrating the TravisCI to this OWA. At the same time I have to write clean documentation what I have done in this summer. Seems like a busy week is coming up ahead. So, I’m getting ready for it :-)
This is the last week of GSoC. I managed to complete all tasks. The swagger SDK generation postpond due to major version upgrade to STU3. I completed medication request GET, POST and DELETE operations. OpenMRS DrugOrder not allow to edit.
Added Documentation added in https://wiki.openmrs.org/display/projects/MedicationRequest+Resource
Medication request specification https://www.hl7.org/fhir/medicationrequest.html
Challenges and Concerns when implement the MedicationRequest
“timing”: {
“repeat”: {
“boundsPeriod”: {
“start”: “2015–01–15”,
“end”: “2015–01–20”
},
“frequency”: 1,
“period”: 6,
“periodMax”: 12,
“periodUnit”: “h”
}
}
I’ll add my final presentation in next which is the last post.
Live Log Viewer feature has been enabled in the WSO2 API Cloud. Unfortunately, Live log viewer feature was disabled in the API Cloud for a long time due to some internal reasons. After some improvements, WSO2 API Cloud is going to provide the live log viewer feature again to increase the user experience and feasibility. It will give the real experience to the users like real log viewers.
Visit WSO2 API Cloud to get the Live Log Viewer Experience
WSO2 API Cloud contains a reasonable amount of customer in this time and they are using API Cloud for their internal and external API Management. They are creating/managing their APIs in the API Cloud and debugging for their needs.
Do you know the challenge of Debugging? The following quotes of Brian Kernighan will express the depth of debugging,
“ Everyone knows that debugging is twice as hard as writing a program in the first place. So if you’re as clever as you can be when you write it, how will you ever debug it? ”
So there should be some kind of tips to identify the issues in the debugging time. Now a days the Logs are plays major role in the debugging, every programmers and debugger depend on the different type of logs to identify the issues to fix it. It is an easy way also to identify the issues regarding some problems.
WSO2 API Cloud is the middle ware platform which is working in the background to manage the customer’s APIs. If there are any critical time for the customers and while they are trying to debug it, There is no way to debug with API Cloud from the customer level. The only way is getting the logs from API cloud and analysis those logs to identify the problem. So WSO2 API Cloud is responsible to provide the logs for their customers in the real time. Now customers can easily go to API Cloud live log viewer and get their logs in the real time when they are dubbing their API’s.
It provides the recent logs respected to your organization. If you haven’t any logs for last certain time, then you will get an empty live log viewer. So better to use it in the real time while you are busy with debugging.
It will automatically refresh and provide the latest logs to the customers. Works across all regional gateways around the globe. Customers can get the following type of logs from Live Log viewer
Live log viewer display pattern will be like,
{ LOG TYPE } { LOG TIME } { LOG MESSAGE }
Are you getting the above error message in the Live Log Viewer? then the reasons for the error message and solutions are,
If you are getting above type of error, that means you have reached the maximum limit of log line during your current session. The limit of the log lines is very large and appropriate for the debugging. If you intend to get more logs using this current session, It may lead to down your browser. So better to refresh your browser once to get the latest logs.
If you can’t get the logs using those above solutions, then feel free to contact our WSO2 Cloud team — cloud@wso2.com
by Nipun Thathsara (noreply@blogger.com) at August 15, 2017 07:14 PM
So last week, I was having some troubles with integrating the Client Management REST controller into the module. The troubles were about managing the entry point for the URL mapping. Finally, me and my mentor Mayank decided to do it the way IETF (Internet Engineering Task Force) describes. Like the document here and also manage the client dynamically using protocols defined here.
So I’ve implemented the process using the standards defined by IETF.
Next Problem ? (Because there’s always one )
org.codehaus.jackson.map.JsonMappingException: Direct self-reference leading to cycle (through reference chain: java.util.ArrayList[0]->org.openmrs.module.oauth2.Client["creator"]->org.openmrs.User["creator"])
The client class inherits fields like “creator” and “voided” from the BaseOpenMRSData which in turn inherits org.openmrs.User. This leads to a recursive cycle and causes a Jackson JsonMappingException.
Meaning? We simply can’t return OAuth client objects and expect Jackson to convert them into JSON (like it’s supposed to)
Fix? Convert your objects into JSONObjects manually using JSON classes and then send them with the appropriate Http Message.
As mentioned in the last week’s blog post, the next piece of business was supposed to be SMART. I worked and researched a lot on SMART. SMART on FHIR is a use-case for the module and it’s highly necessary that it is completed in this year’s GSoC.
My initial plan was to use the SMART on FHIR sample JS application and modify it to our needs. However after spending lots of time on 17000 and so lines of code on the fhir-client.js it turns out the app was designed only to be run against their own sandbox server
So the work on SMART is put on hold for now and further work will be done after a call with my mentor (The call is scheduled for 15th Aug 9:30 pm IST).
The post Week 11 – Back to Controller appeared first on Sanatt Abrol.
Hello Everyone!
This week followed the work I have done last week. Last week I have designed the APIs and gathered feedback from community. I started with implementation of the REST APIs this week. Turns out OpenMRS developed a module for facilitate the development of REST APIs — it looks quite useful even I though I didn’t explore it much.
Major design issue of last week was tackle by @darius and he gave me but wonderful feedback. One of the major issue was should we host run_rules under /results or /rules . By the help of Darius, I was able to solve this issue. Finally we are hosting runrequest instead of run_rule under /rules , so this APIs call can maintain a queue or run the rule immediately and send back the response.
Even during last weeks I’m learning something new. During the discussion I came across realised that testing could be sometimes better that hot-redeployment. It would be much faster and you’ll also get accurate behaviour. All thanks to @darius again. I’m not much familiar with Test Driven Development but I will learn it and try to use it.
This week I will continue with the implementation and try to finish it as soon as possible. Apart from this I have other works like — updating wiki pages, fix some small issues etc as this is the last week of GSoC’17 ,
Useful
This was the worst week ever. I was working on a lot things and I was half way through my work. Since the code was not complete so I haven’t pushed it anywhere and was working on the localhost, and then suddenly my mac froze and I had to force restart it. And then the most devastating thing happened. My hard disk crashed. Every bit of data gone in snap.
And this is not the worst part, since Apple’s internet recovery doesn’t work behind proxy so I cannot just reinstall the OS directly. I first had to find a person who has Mac, then I had to download OS on his system from App Store and then make a bootable pendrive to install OS on my system. And due to bad internet speed it took forever to download that 5 GB file.
Anyway at last I installed everything, setup my working environment and started working again.
I am definately gonna replace my hard disk now once the GSoC period is over.
We are almost at the end of the GSOC period. Just one more week to go. This week I focused on cleaning up my UI code. A couple of asynchronous features weren’t working so i worked on getting them to work. Other than that i made corrections based on my mentors review. I also submitted a pr for changing the module structure which was merged.
There is one small feature left, which i plan to work on after the current pr gets merged, hopefully by tomorrow. The feature shouldn’t take too much time.I then plan on working on the documentation and debugging my code.
by Ankit Kumar (noreply@blogger.com) at August 14, 2017 05:27 PM
It was a very busy week for me. I was left with bunch of small tasks in my project. In the last meeting with my mentor, I showed the progress on Open Web App which I developed using ReactJS.
User Interfaces are not super fantastic, but it does what we expect. I am having a big plan to take care of this OWA for the rest of my life. I can see many things can be improved in this web app. But with limited time period in GSoC program, everything is not possible. But with the current work, anyone can further improve this module. Foundation has laid properly with the help from my great mentor Rafal.
Currently I’m working on writing unit test for React components. It’s something new for me, and I like to learn something new. As coming up week is my last week of the program, I need to bundle up what I have done for last 12 weeks.
I am reaching the end of GSoC timeline and wanted to prepare for the final evaluations. Last week, I spent more time on Scheduler REST Implementation and SysAdmin Modifications. I couldn’t move with OpenMRS Add-Ons with last week also, because they haven’t pushed the changes to the live. So probably I will work on OpenMRS Add-Ons this week.
I have implemented Drag and Drop feature to the SysAdmin module upload. It is a new feature to the users and they can easily drag and drop the .omod files to upload the module.
Drag and Drop module changes and updates · suthagar23/openmrs-owa-sysadmin@55a316f
Then I have updated the Loading spinner icon from OpenMRS logo to another one. OpenMRS Community decided to move with a new spinner logo for the usage instead of OpenMRS Logo, I have changed like this following,
Last week, I worked on these tickets
and created a ticket for module drag and drop feature,
I could not complete the REST Implementation with in last week and wanted to complete the REST development with in this coming week :-)
The GSoC coming to and end. Past week I publish my video on my current work. Please watch it below.
https://medium.com/media/ac5b8216c9177cdd15b6458953bcab2e/hrefDuring this week I implement medication request GET and POST implementations. Now person can create a DrugOrder through FHIR Medication Request. Below content use to create a DrugOrder.
{
“resourceType”: “MedicationRequest”,
“id”: “56b9196c-bcac-4c2f-b3a2–123464a96439”,
“status”: “stopped”,
“intent”: “order”,
“priority”: “routine”,
“medicationCodeableConcept”: {
“id”: “865fceb1-ad0c-4102-aead-26ca25c77b09”,
“coding”: [
{
“system”: “http://openmrs.org”,
“code": “cedf8fc4–6fc9–11e7–9b2b-c4d98716fd91”,
“display”: “Cetirizine”
}
]
},
“subject”: {
“id”: “cf14c415–6fc9–11e7–9b2b-c4d98716fd91”,
“reference”: “Patient/cf14c415–6fc9–11e7–9b2b-c4d98716fd91”,
“display”: “John Patient(Identifier:100)”
},
“context”: {
“id”: “3fcd2047–2aca-404f-ab9d-0d009265d4dd”,
“reference”: “Encounter/3fcd2047–2aca-404f-ab9d-0d009265d4dd”
},
“authoredOn”: “2008–10–19T09:24:10+05:30”,
“requester”: {
“agent”: {
“id”: “b3d97e25–274e-4ed6-b1aa-18848505c33e”,
“reference”: “Practitioner/b3d97e25–274e-4ed6-b1aa-18848505c33e”,
“display”: “Super User(Identifier:Test)”
}
},
“recorder”: {
“id”: “b3d97e25–274e-4ed6-b1aa-18848505c33e”,
“reference”: “Practitioner/b3d97e25–274e-4ed6-b1aa-18848505c33e”,
“display”: “Horatio L Hornblower(Identifier:Test)”
},
“dosageInstruction”: [
{
“sequence”: 1,
“timing”: {
“code”: {
“coding”: [
{
“system”: “http://openmrs.org”,
“code”: “ae984cea-24cb-4e1e-abdd-fd19c9802704”,
“display”: “1/day x 7 days/week”
}
],
“text”: “1/day x 7 days/week”
}
},
“route”: {
“id”: “cee0f244–6fc9–11e7–9b2b-c4d98716fd91”,
“coding”: [
{
“system”: “http://openmrs.org”,
“code”: “cee0f244–6fc9–11e7–9b2b-c4d98716fd91",
“display”: “UNKNOWN”
}
],
“text”: “UNKNOWN”
},
“doseQuantity”: {
“value”: 3.0,
“unit”: “mg”
}
}
],
“dispenseRequest”: {
“quantity”: {
“value”: 1.0,
“unit”: “tab (s)”
}
}
}
In swagger console you can see the medication request is added.
Next week plan is to complete update and documentation. Few concerns will be raised in OpenMRS talk.
I was able to complete the development phase and the documentation. Updated documentation can be found here.
In addition to that, when I was testing the module, I was able to find two bugs and resolved those two bugs as well.
That’s all for this week. ☺
by Lahiru Jayathilake (noreply@blogger.com) at August 13, 2017 03:48 PM
As the title said, this week is the 11th week of Google Summer of Code 2017. In fact, I remember that time is tense, I should finish the last objective in the last time. As we all know, it is hard to have a good ending. However, I will try my best to finish it.
Last week I captured the video about my work. Originally, I do not know how to capture the video with English. Because we don’t speak English in China at all, and my Spoken English is not standard. But I finish the work when I do it over 30 times. I am proud of me.
In next week, I plan to finish the third objective. In my opinion, the technologies in the third objective are similar to the second objective, they are all about front-end. But I know the third objective is harder than the second objective, because I should show the relationships of concept. And I will write a detail proposal about the third objective.
That’s all. I will work harder to have a good ending. Thank you.
This is the tenth week of gsoc and I still am enjoying every moment of it ☺.
This week’s task was to get a previous feature to work as per comments received from my mentor. I also had to create new rest end points so that the developer who may want to use the even is given more flexibility in his choice of parameters. The PR is still under review.
I am also working on OpenMRS platform select. I have successfully migrated all the modules to now use Bintray as the primary source for module downloads instead of Modulus.
I the platform select feature, I am on the lookout for a good way to pass props from parent to {this.props.children} without using redux or flux. Fortunately, I came across React.child. Now I am able to pass the params easily. Currently, I am trying to fix some bugs with this feature.
In the meantime I have also started look at ideas for implementing the comments feature.
Hopefully the coming week is much more productive.
Unfortunately I do not have much to speak of because I have already spoken about this issue in a previous video .
You may view the video here : https://goo.gl/7tWMMm
by Nipun Thathsara (noreply@blogger.com) at August 08, 2017 04:44 PM