"I have cramps."

PMS. I still can't remember first learning about Pre-Menstrual Symptoms as a child. I don't remember the specific event, but the understanding conveyed. I imagine it went something like this: "My Mom was really grouchy this morning." - "Oh, she probably has PMS." - "Is that a disease?" - "Nah, it's something that happens to Moms once a month. They get really grouchy and you should just leave them alone."
My teen years didn't do much to broaden my understanding. It was eventually apparent that menstruation affected all women  not just Moms  and that the process began just as my own pre-teen body was thrown into fits and starts of its own. I learned the basics of female anatomy from Health class and Sex Ed, but even as a young adult, I mentally associated menstruation with violent and seemingly illogical mood swings. I began to see it as a physiological phenomenon and the cause of complex mental/physical interactions not clearly understood by either those affected or the field of neuroscience. As with so many other subjects, I didn't really learn the true basics of menstruation and female anatomy until I observed them first-hand. Direct experience (or, in this case, as direct experience as is possible for males) always trumps even the deepest theoretical and intellectual understanding.
My first girlfriend in college suffered from menstrual cramps. The phrase "suffered from" has watered itself down over the ages to mean "influenced by". While my intention is not to exclude that interpretation, I must be explicit about the distinct imagery I hope to convey: When she had cramps, she suffered. This specific brand of suffering is an intense physical pain that leaves a person clenched in a ball, rolling on the floor, begging for deliverance.
The first time I saw this my childish ignorance about menstruation was obliterated. This process was genuine, visceral, horrible, and routine. My childish attitude toward the "problem" has taken the intervening decades to correct. As an 18-year-old, I thought my job was to be company and support during these painful episodes. While some women may desire this of their friends and spouses, I've found (in my limited anecdotal experience) that most just want to be left alone until the feeling passes. The experience is physically unpleasant, the discomfort can be embarrassing, and little can be done about the situation but wait for it to resolve itself.
Which brings us to the workday. If you are a man, or a woman who does not experience menstrual cramps, imagine fighting through a workday (or two) with a searing pain emanating from within the depths of your body. Now imagine that you are acutely aware of the source of pain but it's not a social norm to announce such sorts of things: if you want relief from this, your only option is a generic "sick day", which are doled out in finite number by your employer.
Now imagine you are presented with this day of torture and this lose-lose decision every month.
At nilenso (and everywhere, I hope), the solution is clear. First, destroy any childish taboo or squeamishness about menstruation and menstrual cramps: this is simply a fact of life we must all be comfortable with given the limitations of our human biology. Then, dedicate optional days to this event every month. If someone sends a note in the morning: "I have cramps." the team knows she's unreachable for that day. That's it. No sick days, no fighting through a day of pain at the office, and no unnecessarily burdensome decision.
We look forward to a day when this policy is so well understood and so commonplace it need not even be written down. But given that this hasn't even always been an explicit policy at nilenso (and we like to think of ourselves as relatively progressive), we realize there is still much work to be done.
Many thanks to the women on our team. Your openness is the only thing that makes this shared understanding possible.

Appendix: Q & A

There were a number of questions asked when we drafted this short article. We're presenting them outside the scope of the article in a Q&A format so that it might be updated later.

What is the status quo?

Some companies do have specific policies governing time off for menstrual pain, but most do not address it and it thus gets combined with standard sick leave.

How/why is nilenso's policy different?

The policy at nilenso is inherently to [attempt to] eliminate the taboo surrounding conversations about menstruation. Menstruation is a known quantity: it is common to all pre-menopausal adult women and it occurs 13 times a year. As such, it should be addressed in isolation. To separate menstruation from health issues (migraines, flu, food poisoning, or any of the other issues which cause someone to take leave from work) demands that one's environment avoid conflating the two, implicitly or explicitly. This requires an explicit acceptance of the terms governing the policy.

Our policy is this: When you have cramps, send an email (or equivalent) notifying the team that "I have cramps." and then take the day off.

Isn't this problem solved by unlimited sick leave?

No, for two reasons. The first reason is straightforward: menstruation is not an illness. As mentioned above, it is a natural and cyclical (therefore, predicable) process.

The second reason is somewhat nuanced but worth considering in its own right: policies on Sick Leave are not static. Nilenso's own policy on Sick Leave has changed drastically in recent years and our particular example is precisely why unlimited sick leave doesn't solve the problem in a satisfactory way. Last year, we eliminated unlimited sick leave. We still have unlimited sick leave for disability (say when someone is seriously injured or has Dengue Fever, which has happened) but for various reasons we now track sick days. If our menstruation policy and sick leave policy were conflated, eliminating unlimited sick leave would have had direct consequences on menstruation leave.

How do we get from "taboo" to "normal"?

We cheated. We wrote this blog post first, passed around a paper copy of the draft, had one-on-one conversations, had lunchtime conversations, and finally spoke about it collectively in a meeting. Your company can try each of those things but there's no recipe.

Perhaps start by pointing your colleagues to this article and then discuss it. If you feel like we can help, ask us questions on Twitter or send us an email.

What is the difference between a "policy" and a "guideline"?

One hopes that, given enough time, most companies will not require a policy to take leaves for menstrual cramps. Until then, however, we will lean on the #2 Rule in the Zen of Python:

"Explicit is better than implicit."

There are a number of reasons for this. We do not want the guideline or policy to fall into question and administration of our business changes (nilenso is structured as a representative democracy and the administration is meant to change). Every employee should understand the terms of the agreement, since both a guideline and a policy are an agreement between the organization and its constituent members. An explicit written policy, in plain English, is easier to understand than a guideline.

Perhaps most importantly (since it is future-facing), a written policy forces changes to the policy to also be made explicitly. For example, it would be a disappointing regression of the policy indeed if we were to begin demanding proof of someone's menstrual cramps... but this has occurred in other corporations in other countries, which means it isn't unheard of. A written policy ensures such regressions (or any other change) is identified as an event in the common legal understanding between the employees of the company. Events future to these changes can then retrospect on the change and how/why it came about.

What about similar policies which have failed?

There are a number of articles (we won't link any here) which attack menstrual leave, citing examples in particular countries and companies across the globe. These policies have not always been successful and the failed installations often seem to be a product of sexism. However, where they have failed, such articles do not propose alternatives. The implicit alternative is to return to the consumption of sick leaves. The argument that menstrual leave exacerbates existing sexism in the workplace is weak, at best. "Existing sexism" is not a baby to be coddled nor a concept to keep safely hidden. There is sexism in every work space and for the infection to be removed it must be dug out. If your workplace or office does not already have frank, open discussions about the state of sexism, bigotry, racism, and zealotry in society, you might use menstrual leave as a conversation piece to get started.

Nilenso is far from perfect and our preferences, fears, and prejudices guide us as much as anyone else. But we are willing to discuss them in an open forum in such a way that a menstrual leave policy does not engender a feeling of unfairness.

How and why does Menstrual Leave differ from chronic affectations, such as migraines?

It is entirely possible that corporations and governments should consider a policy segregating chronic illness from "regular" sick leave. Thankfully, that conversation can be had in isolation. (And it should be!) Migraines, diabetes, depression... there is a long list of physical and mental health issues which may affect your employees either periodically or repeatedly. However, none of these conditions is inherent to one's existence as a human being. Each of these illnesses is variously treatable, preventable, and/or curable. It cannot be said that the entirety of humanity is influenced by any particular one, routinely.

This can be said of menstruation. Though there are medical connotations to menstruation (we find tampons in pharmacies, Gynaecology is a medical profession, etc.) the event itself bears two notable characteristics:

  1. It is a routine (monthly) component of life
  2. It affects 50% of the population

Menstruation is not inherently a medical event any more than urination, nose-blowing, or sleep. These activities may require medical attention from time to time but they are all a normal and regular part of life.

What about cases of menstruation occurring twice a month?

This happens. For some women, it's even quite common. Everyone on staff should be aware of it so that multiple menstruation comes as no surprise. The policy remains the same, however: "I have cramps."

How do you verify that the second time is genuine?

You don't. If you need to, you have bigger problems. As an employer, it is not your responsibility to ask for doctor's notes or marriage certificates when your employees take days off due to illness or family functions. Your responsibility to the internal workings of your employees bodies? Even less so.

One of the repeated lessons of nilenso from the past three years has been "don't measure the beach by counting grains of sand." It applies to billable hours, the review cycle, procurement, signing contracts... pretty much everything you can think of when running a business.

Rather than applying effort into making the employer-employee relationship a science with laser focus on detail, apply that same effort to trust.

What if the policy is misused to someone's personal advantage?

We understand that this policy can be taken advantage of but this is true of every policy. Responding to abuse of any leave policy is orthogonal to the structure of the policy itself. For example, nilenso has a few other distinct leave policies:

  1. National holidays: When we are legally obligated to close the office, everyone should notify their teams and clients.
  2. Vacation: Leave for vacation is requested of the team and client, with enough lead time to plan around the person's absence.
  3. (Limited) Sick Leave: Illness is hard to anticipate, so this usually comes as an email to the team that same morning.
  4. (Unlimited) Very Sick Leave: Bangalore is subtropical, giving us both beautiful weather and exposure to very serious diseases. Dengue, for example, is very common and can put someone on extended leave for a month or more.

Obviously, each type of leave is subject to a different kind of abuse. We trust everyone not to take sudden vacation without notice. We trust everyone to take sick days only when they feel genuinely unwell.

When we have seen "abuse" of such policies at nilenso, it hasn't been a devious attempt to deceive the company for one's personal advantage. For those in managerial and administrative positions, conversations about abuse of the leave policy tend to be about excessive liberties taken. Some of these conversations can happen in a group, some are better one-on-one. In the case of a perceived abuse of menstrual leave, a female (for obvious reasons) senior staff member should approach the conversation with a curious and open mind. As before, if the environment is one of mutual trust this conversation shouldn't be difficult.

What if I want to come to work?

Of course! It's important that this policy remain optional. Not everyone experiences menstruation the same way. Some women we spoke to prefer to be at home during menstrual cramps. Others prefer to come to the office and work independently in a comfortable space. Some even have support groups who prepare food & tea for anyone who is menstruating and give them a comfortable space while allowing them to be with other people. It is important to figure out what works for your company and for you as an individual.

I work at a large corporation and I'm skeptical of introducing such a policy. How could we make it work?

We understand your skepticism. Every organization is different and will require a slightly different approach. Even two organizations of comparable size may face drastically different challenges when implementing a policy like this. We talked about what this policy might look like in a larger organization and came up with three broad points to consider:

  1. Openness: Not everyone needs to know about everyone else's leave. For something as personal as menstrual leave, every organization will need to consider the audience. Who needs to know? Your boss? Your team? HR? How comfortable are people in your organization with sharing such information, and how broadly?
  2. Abuse: We've covered this above but it's worth reiterating that we feel the only solution to preventing abuse is to grow trust within the hierarchy of your organization and between individuals.
  3. Taboo: Work continuously to dissolve the taboo. Only if everyone is well-informed and the conversation is open and honest can a group find the openness required for successful execution of the policy and the trust required to eliminate abuse.

In a large company, such a policy is likely to fall under the purview of Human Resources. It will probably contain more words. There may be multiple layers of communication required. None of these complications change the foundation of the policy, however: eliminate the taboo associated with menstruation by talking about it.

Must I announce "I have cramps." explicitly and publicly?

The short answer is no.

This is the token phrase at nilenso and (all) our leaves are usually announced globally, but it need not work this way. Every organisation (every individual within the organisation) can collectively agree on who the announcement needs to be made to, and with what level of specificity, as long as it's clear and unambiguous. Avoid euphemisms.

Original post by Steven Deobald - check out Hungry, horny, sleepy, curious.

Threading macros in clojure

A few days into learning clojure, I thought it would be a good idea to look at some actual clojure projects in github. I was feeling all confident and what not – you know getting used to lispy way of writing things. The purpose of going through some code, was to get a gist of what was going on in the code, if not understanding it fully. I guess you already know where this is going don’t you ? Yep, I find myself reading through code and I find these two, -> and ->> (and a lot more scary stuff) staring at me, and I had no clue what to make of it. I guess there would at least be a few of you guys who felt the same.

Apparently, they are called threading macros. -> is the thread first and ->> thread last macros, and they are syntactical sugar to your code. It makes reading/writing code easier. “Meh! Just that?” you ask. Let’s see.

The syntax goes something like this : (-> x & forms) and (->> x & forms). The following examples might help you understand it.

Let say you want to do this (divide 2 by 1 then subtract 3 then add 4 and multiply with 5). How would you write it in clojure?


user=> (* (+ (- (/ 2 1) 3) 4 )5)

Boy! It can get difficult to read when you have a bunch of these strung together.

Now lets see how we write it with ->

user=> (-> 2
       (/ 1)
       (- 3)
       (+ 4)
       (* 5))

Woh! This is a lot simpler to read (at least for me)! So what happens here is the thread first macro just takes the 2 and then pass it as the first argument to the next function and then the result of that as the first argument to the next and so on.


Thread last does something similar, instead of passing it as the first argument it would pass it as the last argument. So if you where to apply the ->> to the previous example you would get

user=> (->> 2
        (/ 1)
        (- 3)
        (+ 4)
        (* 5))

which is

user=> (* 5 (+ 4 (- 3 (/ 1 2))))

Objects and collections

My favourite use of the threading macros has been when I have used them with java/clojure data structures. It makes handling them a lot easier.


The thread-last macro ->> is very useful in dealing with collections. Where you have to transform them or apply functions to them, which is what you might be doing in a lot of your clojure code. For example, if you have this collection:

(def x {:document
     {:text ["This is the first line"
         "This is the second line"
         "This is the third line"]}}})

Say you want to add a new ‘\n’ at the end of each line and then print them together as a single string. How would you do this? Well its easy, you just get the text and then apply map and reduce to it and then print. Let’s write it shall we?

(println (reduce str (map #(str % "\n") (:text (:paragraph (:document x))))))

Now lets take a look at this if we decide to write it using thread last macro

(->> x
     :document :paragraph :text
     (map #(str % "\n"))
     (reduce str)

It’s a lot more cleaner, and you don’t have to keep matching the parenthesis to actually figure out what is happening. This works even better when you want to do a lot more transformation on the collections.

While at it, we can make use of this neat function get-in that helps you get values from deep inside a map, which is somewhat better to use at times. The advantage of using get-in over the threading would be that it helps you supply a not-found value, the would be returned if the key you are looking for is not there in the collection. Pretty neat huh? Let’s try that.

(->> (get-in x [:document :paragraph :text] ["No text found"])
     (map #(str % "\n"))
     (reduce str)


Now if you are working with java interop and you aren’t using the thread-first macro, then this might change your mind. Let’s take this example, where you have a java object and you apply a series of methods on the Java object or Java objects returned on applying these methods. This is how you would be doing it.

(.add (.getContent (.getBody (.getJaxbelement (.getMaindocumentpart (Wordprocessingmlpackage/createPackage)))) paragraph)

Now with thread first this becomes

(-> (WordprocessingMLPackage/createPackage)
    (.add paragraph)

Which is way more easier to read, and write. It is aligned with the original java representation, which aids in better understanding of the code. It feels less clunky than the previous case where you could get lost in all those parenthesis.

Since we are at it, let’s talk about another function: doto. This is very helpful when you have to apply multiple functions on a single java object. We didn’t use it in the previous example because, each of the functions were returning a different object.

Consider you have a table-border object and you want to set border to it. This is how you would be writing with thread the doto function.

(defn set-table-border
  [table-border border]
  (doto table-border
    (.setBottom border)
    (.setTop border)
    (.setRight border)
    (.setLeft border)
    (.setInsideH border)
    (.setInsideV border)))

You could use the threading operator or even write it in a single line, but it would be messy.

threading macro can be used to reverse the read order: the value is primarily for people reading your code later; if using a threading macro doesn’t feel like it will make your code easier for the next person to read, it’s probably the wrong choice.

Original post by Unnikrishnan Geethagovindan - check out My blog

Suggestions: Conferences and festivals

I recently attended FOSSMeet 2016 at NIT Calicut. The organizers did a fantastic job of setting up the venue, making travel convenient, and putting visitors up in hostels and guest houses. I realize most of the work involved in setting up a successful conference goes on behind the scenes, so it's a testament to their efforts that it went off so smoothly. The gang asked me for feedback multiple times toward the end of the conference. Verbal feedback is always difficult to remember and digest, so I figured the old #openletter format made sense here.


If everything that goes into a good conference happens invisibly, it's hard to know how to run a conference of your own. In the free/open-source spirit, I hope the folks from FOSSMeet (and other conferences) start documenting their procedures, contact points, processes, and materials.

How did you find speakers? Who did you reach out to for content and sponsorship? How did you make the website? How did you coordinate organization? How did you arrange the conference with faculty? What were some of the pitfalls the next organizers should watch out for?

Even if this "document" is little more than a blog post with an appropriate title, it could really help someone in the future. Preferably, organizers could publish a living document under a free/open license so other people can iterate on it. I've had multiple conversation with the HasGeek folks about documenting and publishing their procedures.

Zero Waste

I always ask people why they are FOSS proponents and what their desired outcomes are. Answers vary wildly, but building a community (or maintaining one) is often high on everyone's list. Every Indian metropolis is facing a garbage crisis at the moment and events organized and attended by educated, privileged individuals should be setting the standard for city living. I was pleased to see chai served in paper cups at FOSSMeet but disappointed to see food served with styrofoam plates and plastic spoons.

Students at NIT Calicut (and other respected universities) may not even be aware that their privilege puts them in the spotlight. When they move to a city like Bangalore or Mumbai, they are the instantly the new educated middle-class of that city. Their behaviour influences others in profound ways and their preferences shape the economy. Demonstrating and advocating for Zero Waste in public spaces like University-hosted conferences is a fantastic way to raise awareness.

Zero Waste events are entirely possible and the resources exist to learn how to run one. Check out 2bin1bag.in, write to them with questions at 2bins1bag@gmail.com, and download their Zero Waste Event resources.

It's not necessary to go completely paperless -- I was happy to have my paper schedule crumpled in my pocket as I jumped from one workshop to the next talk. But a single A4 printed schedule is probably plenty.

Beautiful Things
"Have nothing in your house that you do not know to be useful, or believe to be beautiful." -William Morris
I would take this suggestion from Morris one step further: having nothing that you do not know to be useful and believe to be beautiful. Dr. Sasi Kumar mentioned this in his opening keynote: why give a bouquet of flowers? Why not a single flower? Why not a book?

At FOSSMeet, we received plaques thanking us for our time and participation. This is a wonderful gesture and I do feel the plaque falls into the "beautiful" category. However, now that I'm back in Bangalore, it will do little but engage its own beauty on the bookshelf of the nilenso library. If I had been given a book, I would have ample opportunity to think back to my weekend at FOSSMeet and to share that with others. I can hardly imagine a gift I would rather receive than a book, for any occasion.

Reach Out to Reach Out

Most of FOSSMeet was orchestrated through the NIT Calicut alumni network, which I think is fantastic. This approach could be taken one step further: Have the network reach out to their networks, as much as possible. A conference on Free and Open Source Software is bound to have a wide appeal, since there is likely to be little or no marketing for joining such-and-such company or buying into such-and-such product.

Free and Open Source Software (as far as this conference was concerned, at least) is in use in every corporation, in every office, and in almost every role. Often the network of FOSS, open data, open networks, and free documentation is non-obvious. This means that a conference focused on FOSS is likely to succeed by reaching out to more companies, non-profits, and user groups. At worst, you'll be ignored. But it's very likely you will find a whole new branch of free and open society you didn't even know existed.

The networks in the post-university world are vast... but surprisingly tight. Make a point of using social media to engage with potential speakers and attendees months in advance. Not everyone will make it to FOSSMeet 2017 but hopefully we will all know about it.

Centralize Communication

For FOSSMeet, it would have been nice to see heavier use of the @fossmeet twitter handle. Usually events like this have photos and quotes coming out of such a handle left-right-and-centre. That Twitter account can also be a triage for other communication, as it's easy for people to reach out with a quick tweet before they are pointed toward the correct IRC channel, mailing list, email address, or phone number. The 8 contact points at the bottom of the fossmeet.in website are a bit daunting. If I weren't sure how to travel to NIT Calicut (or any other university) or what my residential arrangements would be, my first preference would be to tweet or email a central contact point.

These are all minor feedback points, but I hope that everyone running conferences at least takes a serious look at the first three (Document, Zero Waste, and Beautiful Things) as these could quickly create a feedback loop fostering increasingly positive events, year on year.
Original post by Steven Deobald - check out Hungry, horny, sleepy, curious.