<?xml version="1.0"?>
<rss version="2.0" xmlns:atom="https://www.w3.org/2005/Atom">
  <channel>
    <title></title>
    <link>https://blog.sdslabs.co</link>
    <atom:link href="https://blog.sdslabs.co/feed.xml" rel="self" type="application/rss+xml" />
    <description></description>
    <language>en-us</language>
    <pubDate>Mon, 17 Mar 2025 14:39:36 +0000</pubDate>
    <lastBuildDate>Mon, 17 Mar 2025 14:39:36 +0000</lastBuildDate>

    
    
    <item>
      <title>Blaze's Trailblaze through Syntax Error X</title>
      <link>https://blog.sdslabs.co/2024/10/blaze-trail</link>
      <pubDate>Tue, 15 Oct 2024 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2024/10/blaze-trail</guid>
      <description>&lt;h2 id=&quot;a-journey-begins&quot;&gt;A Journey Begins&lt;/h2&gt;

&lt;p&gt;As a fresher, I was passionate about development but lacked the experience and skills to back it up. I had been attending lectures organized by SDSLabs, and it was during one of those that I heard about their hackathon, Syntax Error. Curious, I decided to check out some of the projects from previous editions. The creativity and innovation behind those ideas blew me away. Without wasting any time, I called my friend and excitedly said, “We have to participate in this!”&lt;/p&gt;

&lt;p&gt;So, we started looking for teammates and eventually put together a team of four. Then came the hard part—brainstorming. We spent hours coming up with ideas, but we couldn’t settle on a single one.&lt;/p&gt;

&lt;p&gt;On the day of the hackathon, during the opening ceremony, we were still completely clueless about what we were going to build. There was an AMA (Ask Me Anything) session after the opening ceremony, and I rushed over to some seniors and admitted we still didn’t have a single idea. They told me to stay calm and assured me that it wasn’t too late—we could still come up with something during the hackathon. That’s when it hit me: I love music, so why not build something related to it?&lt;/p&gt;

&lt;p&gt;That’s when I stumbled upon the Spotify API. I was impressed by how well it was structured and how easy it was to use. I pitched the idea to my teammates, and we started exploring different ways we could use it. After a lot of back-and-forth (and with the hackathon already well underway), we finally decided to combine all our ideas into one.&lt;/p&gt;

&lt;p&gt;By the way, our team name was &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cout&amp;lt;&amp;lt;hello world;&lt;/code&gt;, which, if you’re familiar with C++, gives a syntax error—very fitting for a hackathon called Syntax Error, right?&lt;/p&gt;

&lt;h2 id=&quot;our-ideas&quot;&gt;Our Ideas&lt;/h2&gt;

&lt;p&gt;We had four core ideas:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Moodify:&lt;/strong&gt; You share your mood, and we suggest a song to match it.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Quizzical:&lt;/strong&gt; A music quiz where you guess a song’s genre after hearing it.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;KeyDM:&lt;/strong&gt; Every key you press creates a beat, so you can make your own music.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Lyricsage:&lt;/strong&gt; You input a song, and it gives you a summary of the lyrics.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, here’s the kicker—we had never built a full-stack application before. We only knew how to make simple frontend pages, but I had recently learned Python. That’s when I discovered Flask, a Python backend framework. We all said, “Jai Mata Di!” and decided to go with Flask for our backend.&lt;/p&gt;

&lt;p&gt;I made a pact with myself: no sleep for the next 36 hours. I downed espresso shots like they were water and got to work. I even skipped all my classes the next morning. By the evening, my teammates and I remembered that we had our departmental freshers’ party, but we quickly decided, “Nope, we’re skipping that too!” We stayed focused on the hackathon.&lt;/p&gt;

&lt;h2 id=&quot;the-final-push&quot;&gt;The Final Push&lt;/h2&gt;

&lt;p&gt;We somehow managed to assemble all the parts of our code that we had made individually and got it to work. There were definitely moments of disapproval and miscommunication within the team, but we pushed through and managed to make it work in the end. It was already around an hour or two left for submission, and we had to make a video for our project. We scrambled to put everything together and submitted it just in time.&lt;/p&gt;

&lt;p&gt;After submitting, I crashed—hard. I hadn’t slept for over 50 hours at that point (thanks to the hackathon and the previous day). I locked my door and went into deep sleep mode.&lt;/p&gt;

&lt;p&gt;Later that evening, I woke up to loud banging on my door. My phone had hundreds of missed calls from my teammates. I panicked, thinking I had messed something up. I opened the door, and my friends were there, telling me we had just 10 minutes to show our project to the seniors. We ran to SDSLabs immediately, and after a few rounds of interviews and demos, we got the news: We won!&lt;/p&gt;

&lt;h2 id=&quot;wrap-up&quot;&gt;Wrap-Up&lt;/h2&gt;

&lt;p&gt;It was unreal. This was my first hackathon, and it was honestly an unforgettable experience. I don’t think I’ll ever feel the same kind of thrill and excitement that I had during Syntax Error. It will always be my favorite hackathon.&lt;/p&gt;

&lt;p&gt;I learned so much in such a short amount of time. From figuring out how to use the Spotify API to building a full-stack app with Flask. The whole experience felt like a rollercoaster—full of stress, exhaustion, but also excitement. Winning the hackathon was the cherry on top, but the real reward was the journey, the team spirit, and everything I got to learn along the way.&lt;/p&gt;

&lt;p&gt;Participating in Syntax Error made me realize that even when you feel like you don’t know enough or that you’re not ready, just diving in and figuring things out as you go can lead to incredible outcomes. It pushed me out of my comfort zone, forced me to think on my feet.&lt;/p&gt;

&lt;p&gt;Looking back, I can’t help but smile. That sleepless, chaotic, espresso-filled hackathon taught me more than I could have learned in weeks of traditional studying. It also showed me that the developer community is filled with supportive people who are there to help you when you need it.&lt;/p&gt;

&lt;p&gt;Since then, I’ve been hooked on hackathons, but Syntax Error will always hold a special place in my heart as the first one that sparked my passion for development.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Symphony of Achilles</title>
      <link>https://blog.sdslabs.co/2024/10/achilles-symp</link>
      <pubDate>Tue, 15 Oct 2024 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2024/10/achilles-symp</guid>
      <description>&lt;h2 id=&quot;beginning-of-chaos&quot;&gt;Beginning of Chaos&lt;/h2&gt;

&lt;p&gt;While I was still figuring out the whole “college life” thing in the first semester, SDSLabs announced Syntax Error, the hackathon that took over the entire first year like a fever. I barely knew how to write a basic program, let alone build a project from scratch. As a fresher, I was pretty clueless, but but determined to dive into the world of development. I teamed up with Shashank and Vatsal—two guys I met through a chain of “I know a person who knows a person.” Little did I know, they would go on to become my go-to hackathon team, &lt;em&gt;Higure Rakshas&lt;/em&gt; (Team ka naam kaafi shinchan-esque tha, so I thought I should tell you that)&lt;/p&gt;

&lt;p&gt;We met for brainstorming sessions in our rooms, but we ended up doing everything except that- jamming sessions, cracking jokes, and getting onto each other’s nerves. After a while, we were super tired and before we knew it, we had procrastinated our way into the next morning without a single idea.&lt;/p&gt;

&lt;p&gt;Our first thought was to &lt;em&gt;look at past projects&lt;/em&gt;, you know, to “get inspired” or maybe sneak in a little help. We even tried using ChatGPT, but we only ended up with a list of terrible ideas. One project that really blew our minds was from last year’s hackathon—an Air Guitar project that was just so cool. For a brief moment, we even considered making an &lt;em&gt;Air Hand Cricket&lt;/em&gt; game, but after a lot of deliberation (and a few laughs), we dropped it.&lt;/p&gt;

&lt;p&gt;The first 26 hours passed with us doing everything but coding (Yes, hum hackathon ke beech me classes gaye the 🙃) . We came up with weird, funky ideas and kept going to the seniors with them. They patiently listened to our madness and pushed us in the right direction. After what felt like a million brainstorming sessions, we finally returned to our very first idea: Symphony—a guitar-controlled keyboard. (Definitely not as crazy as it sounds)&lt;/p&gt;

&lt;p&gt;Excited, we pitched the idea to the senior mentors at Labs, and to our surprise, they told us that this was something we can work on! But then came the reality check—we had only 16 hours left to build the entire thing.&lt;/p&gt;

&lt;h2 id=&quot;forging-symphony&quot;&gt;Forging Symphony&lt;/h2&gt;

&lt;p&gt;None of us knew where to begin, so we spent the next few hours researching, trying to figure out how to bring Symphony to life. Exhausted and on the verge of giving up, we reached out again to the mentors who told us how to start the project.&lt;/p&gt;

&lt;p&gt;We decided to use Python, mainly because it was easy to work with and had a wide range of libraries. At one point, our project required us to learn something called the Fast Fourier Theorem (FFT).&lt;/p&gt;

&lt;p&gt;After struggling with wave theories for hours (I absolutely loathe wave theories now), we stumbled upon a Python library that handled everything in just two lines of code. ( Lesson of the day : Python has a library for everything 🙂)&lt;/p&gt;

&lt;p&gt;With our project finally complete, we thought we could sleep. But just as we were catching our breath, we realized we still had to record a video, push our code onto GitHub, and write an introduction file (Literal sleep deprived, coffee-driven, half-dead people) . Thankfully, the hackathon was extended by 30 minutes, and we managed to submit everything just in time.&lt;/p&gt;

&lt;p&gt;After staying awake for more than 20 hours, dead tired, we crashed into our beds—only to be woken up by a call saying we had to present our project. Anxious and exhausted, we dragged ourselves to the SDSLabs room to present Symphony in front of the seniors. It was nerve-wracking, especially after not sleeping, but we somehow managed to get through the technical questions and use cases they threw at us.&lt;/p&gt;

&lt;p&gt;To our surprise, we were selected to present Symphony in front of the judges via a virtual Meet call. This was the big moment. We answered every question we could, justifying the “need” for our guitar-controlled keyboard like it was a “revolutionary” product. I’m pretty sure we made up some answers on the spot, but well, that’s how you win a hackathon 😉.&lt;/p&gt;

&lt;h2 id=&quot;finale&quot;&gt;Finale&lt;/h2&gt;

&lt;p&gt;In the end, with just 168 lines of code, a whole lot of wave theories, a string of funny GitHub commits, and endless banter, we somehow pulled off a winning project. We annoyed our roommates, called each other names out of frustration, but through it all, we created something we were genuinely proud of.&lt;/p&gt;

&lt;p&gt;Syntax Error, my very first hackathon, will forever be etched in my memory. It hooked me to coding in a way I never expected and taught me a valuable lesson: nothing is as difficult as it seems if you put your heart into it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;P.S. Its “a-kee-lees” not “ak-hi-lesh”, no matter what people tell you :)&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Cyberboy's Hackathon Episode</title>
      <link>https://blog.sdslabs.co/2023/10/cyberboy-hackathon</link>
      <pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2023/10/cyberboy-hackathon</guid>
      <description>&lt;h2 id=&quot;pilot&quot;&gt;Pilot&lt;/h2&gt;

&lt;p&gt;It was our online semester, and Syntax Error had just been announced. Hackathons were a new concept then, and we were told that we could build anything we wanted. The only requirement was to build something “cool”.The first thing I did was check out some of the older projects created in the previous iterations of Syntax Error. I WAS IN COMPLETE AWE OF THE PROJECTS I SAW. I thought I’d never be able to build something that amazing in such a short time!&lt;/p&gt;

&lt;p&gt;Nevertheless, I sought out to look for a team. It was an online semester, so it wasn’t easy to randomly get in touch with people interested in forming a team with me. However, there was this one dude I had met on an online AMA session conducted by SDSLabs. He had some experience in developing applications. After contacting some common friends, I got his number and dialed it. “Vansh bhai, mai Ashutosh bol rha hu. Syntax Error ki team bana li kya?”… Then the call went on for more than an hour discussing potential ideas and teammates, and we finally had our team (he would later go on to become my best friend on campus).&lt;/p&gt;

&lt;h2 id=&quot;fast-forward-2-weeks&quot;&gt;Fast Forward 2 weeks…&lt;/h2&gt;

&lt;p&gt;We have procrastinated till the eleventh hour and desperately need an idea. I am on a trip in Rishikesh and in complete panic, and we quickly call a Google Meet to finalise an idea. Less than 4 days were left for the hackathon, and we did not even have an idea! Then, there came a ray of light. SDSLabs had released its alum track, where some ideas were suggested by the Alumni of SDSLabs. On going through the ideas, we saw one idea which piqued our interest… “AIR GUITAR”. This could be a pretty dope idea to work on. I knew how to play the guitar, so I could program the chord recognition part.&lt;/p&gt;

&lt;p&gt;We researched potential solutions and found a few computer vision libraries. Jackpot! We had everything we needed: the idea, the language (python cuz its easy 🙃) to make the project in and the library. But there was one big problem… None of us had a clue how to start :P (There weren’t many projects and tutorials then as there are now). Vansh called me up and said, “Aukat ke bahar lag rha hai”, to which we both responded, “kya hi ja rha hai”. The hackathon started and the next two days involved long hours of coding sessions, sleepless nights and coffee (did I mention unhealthy amounts of caffeine intake during the hackathon is a prerequisite too?)&lt;/p&gt;

&lt;p&gt;After almost two days, we had a somewhat functional application. We tried creating a frontend too, but failed miserably and gave up on that 👍. We were ready to submit, and it was about 3 hours to submission (oh btw it’s 5 A.M. and we haven’t slept a minute). Vansh found a small bug and wanted to fix it before submitting. He also had to write the README file for the project. I was happy and somewhat satisfied with what we had made. Maybe I got too relaxed… Because the next thing I knew, I woke up to 30 missed calls and it was 15 minutes to submission! I jumped out of bed and immediately dialed Vansh’s phone. He used certain words which probably won’t be appropriate to write here (but you can probably guess they weren’t pleasant). The thing was that as I had created the team, I was the only one who had the option to finally submit the project. After creating a hurried demo, we quickly uploaded our project with its description.&lt;/p&gt;

&lt;div style=&quot;display:flex;justify-content:center;&quot;&gt;
  &lt;p&gt;&lt;img src=&quot;/images/guitar.png&quot; alt=&quot;Air Guitar&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h2 id=&quot;finale&quot;&gt;Finale&lt;/h2&gt;

&lt;p&gt;A day goes by, and I am chilling in Rishikesh. Vansh is travelling to Indore, and we are all eager for the results. I leave for home the next day and both of us are travelling. I get a call, “Hi, my name is Somesh Solanki from SDSLabs”, I gasp eagerly waiting for his next words… “Congratulations you have been selected for the next round of Syntax Error, you will have to present your project to our judges on a virtual meet in the next 2 hours”. I am overjoyed! But then it suddenly dawns upon me, that both of us are travelling and no one has a stable internet connection. What to do now???&lt;/p&gt;

&lt;p&gt;Amidst this emotional roller coaster, my sister mentions that IIT Roorkee is on the way back home. Before she could even finish her sentence, I call Solanki and ask if I can present the project offline. Next thing I know I am entering IIT Roorkee with a visitor pass (pretending to be Solanki’s younger cousin). This is my first time entering the campus (none of the first yearites had been called to campus yet). I rush to the Student Activity Centre and locate SDSLabs. I find Raikou (Pragyansh) over there and he helps me set up my computer. I finally present my idea to the judges. It was finally over. We had somehow managed to create and present our project in this chaos. Syntax Error will definitely be one of my favourite core memories from IIT Roorkee. We made a cool functioning project, made amazing friends and, most importantly, had a lot of fun!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;P.S. Cyberboy now goes by the name hashkat and does not like to be called by his former alias.&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Percy meets Poseidon</title>
      <link>https://blog.sdslabs.co/2023/01/percy-exp</link>
      <pubDate>Thu, 19 Jan 2023 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2023/01/percy-exp</guid>
      <description>&lt;p&gt;Like most kids, I was just a naive freshman entering this institute awestruck. I had the misconception that I knew how to code in Python and SQL (which broke down shockingly fast when I started doing actual development. Turns out&lt;/p&gt;
&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;“&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Hello&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;world&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;”&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Can only take you so far.)
I had tried my hands on data science in school, but that too was on a very superficial level, with some knowledge of NumPy. MatPlotLib and Pandas [All thanks to the Informatics Practices course I took in school]
I tried attending the Intro Talks of most, if not all, technical clubs under the Student Technical Council(STC), but being the distracted soul I was, I used to zone out, doing my own thing while the host blabbered on. It was during the SDSLabs Intro Talk that I suddenly heard, “We were banned from Deloitte CTF for doing too well; Rootex is our very own 3D game engine”. I had no clue what a CTF or Game Engine was, but I knew it was a huge deal. That’s when I decided, “No way in hell will I ever get recruited in this club.”
It was during this time that I met Ashutosh Shrivastav, an SDSLabs fanboy who used to rave on and on about how cool the club was. All the while, I was thinking, “Impossible that I ever get in.”&lt;/p&gt;

&lt;p&gt;That’s when it happened, Syntax Error hackathon! SDSLab’s first big event and my first hackathon! Completely thrilled, me and Ashutosh made a team together. We created an &lt;a href=&quot;https://github.com/h4shk4t/SyntaxError&quot;&gt;Air guitar&lt;/a&gt;. When he first suggested this idea, I readily said yes (while on the inside thinking, “Isn’t this project wayyy too ambitious? Are we even gonna be able to pull this off?”). There I was, watching tutorials at 2x speed, reading random codes to figure out what was happening. We celebrated small victories, like when we were finally able to detect our hand moving up and down 😂
I still remember it was 3 AM in the morning, and I couldn’t get this music to play at all. That’s when we hopped into the SDSLabs Open discord server, where Archit (who is a year senior to me in SDSLabs) was there to help us.
Finally, we made the project, gave a presentation, and…. Well, that was it. Then came the dreadful waiting period where we (im)patiently waited for the results to be announced. and YES, WE RANKED 2nd IN THE OVERALL CATEGORY! Well, that was a great memory, and I made a friendship that I would cherish for years to come.[Hopefully, I mean currently, it’s just been a year]&lt;/p&gt;

&lt;p&gt;Then came the [&lt;em&gt;“insert dramatic sound”&lt;/em&gt;]…&lt;/p&gt;

&lt;h2 id=&quot;the-trials-of-apollo&quot;&gt;The Trials of Apollo&lt;/h2&gt;

&lt;p&gt;I was still unsure about my capabilities to become a part of SDSLabs, but Syntax Error gave me the confidence boost I needed. SDSLabs organizes many events where the winners get a chance for a direct interview to SDSLabs- Syntax Error, Makers, Winter of Code, NoobCTF, Beginner’s Hypothesis, and so much more! I participated in Syntax Error and Makers, and I still remember when I went to get my Makers’ project reviewed. I entered the SDSLabs room in SAC with shaky legs. I am not sure how to describe it. There was an aura of knowledge, discussions going on about topics I had no clue about but everything seemed so fascinating. It turns out that despite making a seemingly complex project (It was a contactless laptop), my code was breaking down due to a simple ‘if condition’ [When it was pointed out to me, I was so confused, “Am I that stupid?”]. That was my last interaction with SDSLabs, or at least that’s what I thought.
I still remember the call, “Your interview is scheduled for tomorrow at 10 AM” I was so paranoid about missing it, I remember telling three of my friends to wake me up, and went to sleep at 11 PM sharp.
I went for the interview, which happened in 2 rounds, first was problem-solving. I remember well that as all panels of round 2 were occupied, my round 1 dragged on. The second round was based on my interests and general development. As I knew just python, I was asked a bunch of questions about that, and other stuff. I remember being panicky as I always was, but a 3y CSE senior Angad Kambli who was in that panel, just kept smiling, giving me the confidence boost I needed that maybe I was not doing that poorly. I tried to answer the questions to the best of my capabilities. Then the recruitment test happened. I gave that, too, just to be sure. I answered the questions, tried to do my best, and kept my fingers crossed.
Then suddenly out of the blue, I got a call, “Hello, your final interview is scheduled right now.” I remember I was in Govind Bhawan at the time and ran as fast as I could to Labs, out of breath, I entered the room and gave the interview. Cut to 24 hours later…&lt;/p&gt;

&lt;h2 id=&quot;the-owl-arrives&quot;&gt;The Owl Arrives&lt;/h2&gt;

&lt;p&gt;I remember getting the call. Ashutosh had just called me a few minutes back about how he got into Labs. That made me think maybe all the calls are made, and alas, what I feared has happened. Suddenly an unknown caller. I shouted in the middle of the road, all excited, and confirmed twice if they were sure they had called the right person. When we went for our initiation the next day, I was convinced they would stop me midway, saying, “Wait, we think someone pranked you.” But nope, it was all so real! We had our Intro Chapo and were added to the Slack workspace. I chose my username to be “percy” being a huge Percy Jackson fan [Later, I learned that Lab’s own PC, where most of the heavy processing work happens, is named Poseidon, which I found a happy coincidence]
Most of the 2nd semester was filled with lectures and assignments where we learned a lot. After the assignments, we were introduced to various ongoing Labs projects as well as previous projects. This actually opened my eyes to what all is out there, so much to learn, and just damn!&lt;/p&gt;

&lt;p&gt;We were then assigned our minors [Basically we are assigned a small issue on an existing Labs project which we have to complete within 2 weeks], and I chose mine, which revolved around graphics and one based on reading some research papers. We were given two weeks to complete it. I remember sitting in labs with Pragyansh or Archit, trying to make the head or tail of the project.
At one moment, we practically created the American Psycho meme, with me saying, “It’s just not possible!” and Pragyansh saying, “Why isn’t it possible you…..!?” [Paraphrasing, of course]&lt;/p&gt;

&lt;h2 id=&quot;the-triwizard-tournaments&quot;&gt;The Triwizard Tournaments&lt;/h2&gt;

&lt;p&gt;Next came the hackathons. We participated in some national-level hackathons, as well as organised an internal hackathon too. Those are some of the best memories I have of the members of Labs. Intense 24-48 hours coding sprints trying to create a complete product that is impressive and probably the best and fastest way I have learned stuff. I remember I had a team with Tanmay (EE 2y) and Pragyansh (CSE 3y), and while all the other teams making their own project, we started screaming at the top of our lungs because our code started working unexpectedly, and everyone was just looking at us. To date, I am open to anyone telling me what happened there 😂&lt;/p&gt;

&lt;h2 id=&quot;the-quests&quot;&gt;The Quests&lt;/h2&gt;

&lt;p&gt;Then came the internal sprints. I remember sitting in Labs one day, trying out Cryptography when suddenly Aditya (CSE 3y) asks me, “Kya karr rha hai?” I reply nothing, just random stuff. “Sprint karega? Chapo Milegi”. That was enough to buy me. We sat writing the frontend code of one of our projects for 48 hours straight, aiming to complete about 50% of the website.
The best part was we wrote it in Svelte, a framework that not just me but none of our seniors had ever tried. In fact, as I am writing this blog, another sprint is going on to finish a dev project.
I am glad for these because the amount of intense learning that happens within the span of these 48 hours of coding is probably more than I, with my distractions, can ever accomplish in a week.&lt;/p&gt;

&lt;h2 id=&quot;camp-half-blood&quot;&gt;Camp Half-Blood&lt;/h2&gt;

&lt;p&gt;“We are more than a club. SDSLabs is a family.” This is something that I have come to believe in this period of 1 year. Whether it’s personal life ki BT, or some tech mishap, I can always rely on Labs members and alumni. Hell, I had an anxiety attack at 4 AM in the morning, and I wrote a huge rant to one of the Alums and asked him to guide me, and he helped me out so much. Whether it’s random yearning for walks around the campus, hankering for RKB Tapri Maggi at 4 AM, or anything. Maybe something very frivolous has been bothering me, they have always been there :)
From Button smashing while playing Tekken 3, or playing Minecraft, or anything!
SDSLabs is genuinely a place I always feel at home.&lt;/p&gt;

&lt;h2 id=&quot;heaven&quot;&gt;H(e)aven&lt;/h2&gt;

&lt;p&gt;I always yearned for a crowd or group with whom I could relate and have fun discussing random tech stuff. I couldn’t say that is the case with the entire IIT Roorkee, but absolutely true for Labs. This is a place where no matter how weird or random your interest might be, you will definitely find someone to talk to and vibe with. Random senior shouting, “Yaar mai kya genius hu”., At which moment you would go and ask them about this very cool thing they have achieved. You probably wouldn’t understand it, but you will get some of it, google most of it, ask more and more questions, and learn so so soooo much.
Sometimes randomly, your senior, while preparing for an intern or placement test, will learn something new, and will teach you something cool!&lt;/p&gt;

&lt;h2 id=&quot;final-word&quot;&gt;Final Word&lt;/h2&gt;

&lt;p&gt;I had a fantastic year at SDSLabs. Just writing all of this, the memories came pouring back. I can’t express in words what this all meant to me and what it all was. Just amazing. I wouldn’t trade it for anything else. Looking back, I guess this is just 10-20% of my actual Labs experiences, but it’s pretty boring as is XD, so I’ll leave you to be. Bye!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Design Experience Blog</title>
      <link>https://blog.sdslabs.co/2022/03/sofu-exp</link>
      <pubDate>Wed, 23 Mar 2022 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2022/03/sofu-exp</guid>
      <description>&lt;h2 id=&quot;a-confused-freshie&quot;&gt;&lt;strong&gt;A confused freshie&lt;/strong&gt;&lt;/h2&gt;

&lt;h3 id=&quot;metallurgical-and-materials-engineering&quot;&gt;&lt;strong&gt;Metallurgical and Materials Engineering&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;When I signed up for a B.Tech in Metallurgy, I was almost sure that I didn’t want to pursue any of the related fields. One semester of classes (offline) helped me reinforce this belief! 😂&lt;/p&gt;

&lt;h3 id=&quot;exploration-and-introduction-to-product-design&quot;&gt;&lt;strong&gt;Exploration and introduction to Product Design&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;So, Like every other freshie, I tried my hands on several things..&lt;/p&gt;

&lt;p&gt;Coding, Finance, Machine learning, Web Development, etc&lt;/p&gt;

&lt;p&gt;The idea of being able to build products seemed very compelling to me. (Mostly due to the impact that it had on people’s lives, and at scale)&lt;/p&gt;

&lt;p&gt;A very dear friend and senior, Ayush Rajput, was kind enough to walk me through one of his projects. That’s it, and I got hooked into the world of product.&lt;/p&gt;

&lt;h2 id=&quot;recruitments-and-sdslabs&quot;&gt;&lt;strong&gt;Recruitments and SDSLabs&lt;/strong&gt;&lt;/h2&gt;

&lt;h3 id=&quot;woc-and-my-first-design-project&quot;&gt;&lt;strong&gt;WoC and my first design project&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;Randomly scrolling through Facebook during my end sem exams, I found SDSLab’s post announcing WoC. I decided to give it a shot, and luckily, my proposal was selected.&lt;/p&gt;

&lt;p&gt;I spent the winter break making my first design project, BloodASAP.&lt;/p&gt;

&lt;p&gt;Let’s not get into the details. 🙈&lt;/p&gt;

&lt;p&gt;It proved to be good enough to get me an interview at sdslabs.&lt;/p&gt;

&lt;h3 id=&quot;interviews&quot;&gt;&lt;strong&gt;Interviews&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;After a few rounds of interviews, I was officially a member of SDSLabs!&lt;/p&gt;

&lt;p&gt;I still remember that call from Nipun. (senior @SDSLabs) I was really, really happy! (and super excited) (see photo below)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/sofu-exp/Untitled.png&quot; alt=&quot;Untitled&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;inside-sdslabs&quot;&gt;&lt;strong&gt;Inside SDSLabs&lt;/strong&gt;&lt;/h2&gt;

&lt;h3 id=&quot;the-intro-chapo&quot;&gt;&lt;strong&gt;The Intro Chapo&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;We introduced ourselves to everyone else, enjoyed each other’s controversial opinions, and loaded ourselves with an infinite pizza party. 🍕&lt;/p&gt;

&lt;p&gt;Amazed by the humility I observed in the room, I felt really blessed!&lt;/p&gt;

&lt;h3 id=&quot;the-birth-of-sofu&quot;&gt;&lt;strong&gt;The birth of “sofu”&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;Everyone at labs needs a unique slack handle. My legendary senior Yash Khandelwal had already taken up “yash” which required me to think of a new one.&lt;/p&gt;

&lt;p&gt;Being the laziest person in the room, I just picked up “sofu” from some random anime I found on Netflix. Now, most of my friends call me by this name.&lt;/p&gt;

&lt;p&gt;(Controversial opinion: Animes are not any different from cartoons 🌚)&lt;/p&gt;

&lt;h3 id=&quot;first-contribution-minor-project&quot;&gt;&lt;strong&gt;First Contribution (Minor project)&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;After a few lectures and assignments by our seniors, I was keen to make my first contribution to the clan, and I worked on the admin panel for the study portal with Yash (Khandelwal)&lt;/p&gt;

&lt;p&gt;Though my work could never see its first daylight, I was really happy about it! (at that point in time…hehe)&lt;/p&gt;

&lt;h3 id=&quot;first-goodbye-farewell&quot;&gt;&lt;strong&gt;First Goodbye (Farewell)&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;Photoshoot, Cosplay, Skits, and many memories to cherish as we bid adieu to our 4th-year seniors. (photos below)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/sofu-exp/Untitled1.png&quot; alt=&quot;Untitled&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/sofu-exp/Untitled2.png&quot; alt=&quot;Untitled&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/sofu-exp/Untitled3.png&quot; alt=&quot;Untitled&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;first-rejection-major-project&quot;&gt;&lt;strong&gt;First rejection (Major project)&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;Next up, I got to design PlayCTF (An open-sourced CTF platform) as my major project.&lt;/p&gt;

&lt;p&gt;After putting in diligent efforts into PlayCTF during two months of my summer break, the first thing I got was heartbreak. 🤣&lt;/p&gt;

&lt;p&gt;My mentors Nipun and Milan helped me realize how much better I could’ve done and very frankly called out the bad and the ugly. All charged up, I spent another month and redesigned it from scratch again. &lt;a href=&quot;https://medium.com/sdslabs/designing-a-practice-session-platform-for-hackers-ux-ui-case-study-f45df9f598c1&quot;&gt;You can read the story of designing it here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Designing and shipping beast was a fulfilling experience that I probably cannot do justice describing in words.&lt;/p&gt;

&lt;h3 id=&quot;trips-chapos-gamejams-and-a-plethora-of-things&quot;&gt;&lt;strong&gt;Trips, Chapos, GameJams, and a plethora of things…&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;We all grew together!&lt;/p&gt;

&lt;p&gt;We got countless chapos from seniors, Went on trips, Pulled all-nighters to build games, Documented projects, Launched products under tough deadlines with mates.&lt;/p&gt;

&lt;p&gt;For me, the most valuable thing that I earned was friendship. (That’d probably last for a lifetime 🤞)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/sofu-exp/Untitled4.png&quot; alt=&quot;Untitled&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/sofu-exp/Untitled5.png&quot; alt=&quot;Untitled&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/sofu-exp/Untitled6.png&quot; alt=&quot;Untitled&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/sofu-exp/Untitled7.png&quot; alt=&quot;Untitled&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;interns-placements-and-career&quot;&gt;&lt;strong&gt;Interns, Placements, and Career&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;During my summer breaks after my 2nd and 3rd year, I interned at UrbanYogi and 1mg respectively, and finally got placed at Flipkart.&lt;/p&gt;

&lt;p&gt;Interns and Placements were probably just a by-product of what we’ve been doing for three years at labs, i.e., building products.&lt;/p&gt;

&lt;p&gt;Getting an environment that lets you discuss product and design regularly, being with like-minded people, and constantly experiencing the software building process gives you an extra edge.&lt;/p&gt;

&lt;h3 id=&quot;my-2-cents-on-college-life&quot;&gt;&lt;strong&gt;My 2 cents on college life&lt;/strong&gt;&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Whatever you do, do it with absolute honesty. Everything else will fall in place!&lt;/li&gt;
  &lt;li&gt;Make good friends.&lt;/li&gt;
  &lt;li&gt;Don’t forget to have fun.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See you soon in the interviews! 🤞&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Working with shaders</title>
      <link>https://blog.sdslabs.co/2022/02/working-with-shaders</link>
      <pubDate>Sun, 27 Feb 2022 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2022/02/working-with-shaders</guid>
      <description>&lt;script src=&quot;https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;

&lt;p&gt;In 3D graphics, shaders are essentially programs that describe a behaviour about a pixel or vertex. Vertex shader runs for every vertex of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Polygon_mesh&quot;&gt;mesh&lt;/a&gt;, whereas a pixel shader runs for every pixel of the object.&lt;/p&gt;

&lt;p&gt;You can think of pixel shaders as HTML5 canvas. You can manipulate the color of every specific pixel. In this blog, we will focus mainly on Pixel Shaders.&lt;/p&gt;

&lt;h2 id=&quot;the-uv-coordinates&quot;&gt;&lt;strong&gt;The UV coordinates&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;Pixel shaders coordinate system is &lt;a href=&quot;https://docs.microsoft.com/en-us/windows/win32/direct3d9/texture-coordinates&quot;&gt;standard&lt;/a&gt; coordinates are normalized to fit in interval {0,1} so that the pixel shader could scale for any random texture, which is essentially a color map, i.e. it explains which pixel gets what color.&lt;/p&gt;

&lt;p&gt;A pixel Shader can then take input of any texture irrespective of its size.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://docs.microsoft.com/en-us/windows/win32/direct3d9/images/uvcoordinates.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://docs.microsoft.com/en-us/windows/win32/direct3d9/images/texadr1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can quickly write pixel shaders on &lt;a href=&quot;https://www.shadertoy.com/&quot;&gt;SHADERTOY&lt;/a&gt;. You can focus on writing shaders as it handles the pipeline for you. You write the code in essentially GLSL; there are a few differences, but it’s nearly the same thing.&lt;/p&gt;

&lt;h2 id=&quot;circle&quot;&gt;Circle&lt;/h2&gt;

&lt;p&gt;Since this assumes no prior knowledge of writing shaders, I thought the first example should be explained thoroughly and built from scratch. If you have written shaders before or are familiar with the structure, &lt;a href=&quot;https://www.shadertoy.com/view/NdSyDR&quot;&gt;here is the code&lt;/a&gt;&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    // Getting the uv coordinates
    vec2 uv = fragCoord/iResolution.xy;

    // This gives the length of uv
    float dist = length(uv);            

    // Initializing col with black color
    vec3 col = vec3(0.0,0.0,0.0);   

    // Initializing a radius
    float radius = 0.5;                 

    // Starting an if block
    if(dist &amp;lt; radius)                   
    {
        col = vec3(1.0,1.0,1.0);    // Setting col to white
    }
    
    // this sets fragColor which is our retrun value
    fragColor = vec4(col,1.0);         
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This is the basic structure.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vec2&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vec3&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vec4&lt;/code&gt; are just arrays of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;float&lt;/code&gt; of sizes \(2\),\(3\), \(4\), respectively.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fragColor&lt;/code&gt; is the output color of the pixel of coordinate uv.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;length()&lt;/code&gt; is a function that returns the magnitude of the vector.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;iResolution&lt;/code&gt;is called a &lt;strong&gt;constant buffer&lt;/strong&gt;. This specific constant buffer is provided by default from shadertoy and gives the resolution of the used window. There are other constant buffers, too, e.g., &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;iTime&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Logic is elementary; we set the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;col&lt;/code&gt; (a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vec3&lt;/code&gt;) to have rgb values of black initially and update it to white if the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dist&lt;/code&gt; (distance from the origin) is less than \(0.5\).&lt;/p&gt;

&lt;p&gt;Running this, you’ll see the circle is more like an ellipse is also not centred.&lt;/p&gt;

&lt;p&gt;Hence we update the uv coordinates as such:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uv-=0.5;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To fix the ellipse issue, we change the distance as follows:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;float dist = length(uv*iResolution.xy)/min(iResolution.x ,iResolution.y);&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Result:&lt;/strong&gt;&lt;/p&gt;

&lt;iframe src=&quot;https://www.shadertoy.com/embed/NdSyDR&quot; width=&quot;100%&quot; height=&quot;375&quot; frameborder=&quot;0&quot; webkitallowfullscreen=&quot;&quot; mozallowfullscreen=&quot;&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;h2 id=&quot;rectangle&quot;&gt;Rectangle&lt;/h2&gt;

&lt;p&gt;How do we make a rectangle?&lt;/p&gt;

&lt;p&gt;Just write a function that contains a few if statements &lt;a href=&quot;https://www.shadertoy.com/view/fdBcWz&quot;&gt;like this&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt;&lt;/p&gt;

&lt;iframe src=&quot;https://www.shadertoy.com/embed/fdBcWz&quot; width=&quot;100%&quot; height=&quot;360&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;One can also use &lt;a href=&quot;https://en.wikipedia.org/wiki/Manhattan_distance&quot;&gt;Manhattan distance&lt;/a&gt; as our distance function &lt;a href=&quot;https://www.shadertoy.com/view/NdScDR&quot;&gt;like here&lt;/a&gt;. I just used some good old matrix transformation for rotating it.
&lt;strong&gt;Result:&lt;/strong&gt;&lt;/p&gt;
&lt;iframe src=&quot;https://www.shadertoy.com/embed/NdScDR&quot; width=&quot;100%&quot; height=&quot;360&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;We can also use &lt;a href=&quot;https://thebookofshaders.com/glossary/?search=smoothstep&quot;&gt;smooth steps&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;water-shader&quot;&gt;Water Shader&lt;/h2&gt;

&lt;p&gt;A straightforward water shader is just using distortion. We can use a du/dv map and move it to create distortion. We can then add two or three maps to our uv values and mixed reflection and refraction textures to give a &lt;a href=&quot;https://www.shadertoy.com/view/7dcGzf&quot;&gt;satisfying result&lt;/a&gt;.&lt;/p&gt;
&lt;iframe src=&quot;https://www.shadertoy.com/embed/7dcGzf&quot; width=&quot;100%&quot; height=&quot;360&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;Let’s try to make something more cartoonish.&lt;/p&gt;

&lt;p&gt;Meet Voronoi Diagrams.&lt;/p&gt;

&lt;p&gt;Voronoi diagrams are excellent. Essentially color of a specific point in a plane depends on its nearest point. This coloring divides the plane into multiple segments.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/thumb/5/54/Euclidean_Voronoi_diagram.svg/1920px-Euclidean_Voronoi_diagram.svg.png&quot; alt=&quot;drawing&quot; width=&quot;500&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We can also generalise it to any metric possible, giving aesthetically pleasing results. You only need a set of points and a metric, and for that, there would exist a unique Voronoi diagram.&lt;/p&gt;

&lt;p&gt;They are cool &lt;a href=&quot;https://en.wikipedia.org/wiki/Voronoi_diagram&quot;&gt;do check them out&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So let’s make a Voronoi diagram and have the points move! Color it, and there is your cartoonish &lt;a href=&quot;https://www.shadertoy.com/view/NdVXRG&quot;&gt;water shader&lt;/a&gt;.&lt;/p&gt;

&lt;iframe src=&quot;https://www.shadertoy.com/embed/NdVXRG&quot; width=&quot;100%&quot; height=&quot;360&quot;&gt;&lt;/iframe&gt;

&lt;h2 id=&quot;fire-shader&quot;&gt;Fire Shader&lt;/h2&gt;

&lt;p&gt;I decided to use Fractal Brownian Motion on simplex noise for this. Then I added a gradient and have &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uv.y&lt;/code&gt; continuously decreasing, giving the illusion that the fire is moving upwards. Yeah, it’s certainly complicated, so let’s go over them one by one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Noise&lt;/strong&gt; is just a pseudo-random number generator where the output is differentiable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simplex noise&lt;/strong&gt; is a type of noise, like Perlin noise. The function &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;noise()&lt;/code&gt; in the &lt;a href=&quot;https://www.shadertoy.com/view/7tc3zs&quot;&gt;fire shader&lt;/a&gt; generates this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fractal Brownian Motion&lt;/strong&gt; combines multiple steps of Simplex Noise (or another similar noise function), each with a different frequency and amplitude.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.shadertoy.com/view/NtGGRc&quot;&gt;Here is the result&lt;/a&gt; left is simplex noise, and right is Fractal Brownian Motion.&lt;/p&gt;
&lt;iframe src=&quot;https://www.shadertoy.com/embed/NtGGRc&quot; width=&quot;100%&quot; height=&quot;360&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;We color this and we’re done.&lt;/p&gt;

&lt;h2 id=&quot;cel-shader&quot;&gt;Cel shader&lt;/h2&gt;

&lt;p&gt;Playing Legend of Zelda is an experience. The graphics are aesthetically beautiful. It just feels different, but why is that? One can tell it is not going for realistic looks but rather making it cartoonish. Graphics that don’t aim to be realistic but try to achieve a style are referred to as stylized graphics.&lt;/p&gt;

&lt;p&gt;But before that let’s talk about shading a 3-d object. Most people use &lt;a href=&quot;https://en.wikipedia.org/wiki/Phong_shading&quot;&gt;Phong Shading&lt;/a&gt;; normals are interpolated across polygon faces, and through interpolated normals, we now color the pixel using the new normal. This mathematical trick saves a lot of polygon count as now we can have a realistic-looking surface with a low poly count.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/3/3d/Phong-shading-sample_%28cropped%29.jpg&quot; alt=&quot;Phong Shading&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We need to quantise the number of colors it can have. You can even quantise the normal angles if you get the normal data.
&lt;a href=&quot;https://www.shadertoy.com/view/7tV3DK&quot;&gt;Here is the final shader&lt;/a&gt;&lt;/p&gt;
&lt;iframe src=&quot;https://www.shadertoy.com/embed/7tV3DK&quot; width=&quot;100%&quot; height=&quot;360&quot;&gt;


  

## Edge Detection

Edge detection is one of the ways to implement an outline shader. As the name suggests, it creates outlines.

  

![](https://miro.medium.com/max/1400/1*I_GeYmEhSEBWTbf_kgzrgQ.png)

  

But before diving into this, let’s talk about image convolution.

  

Image convolution is a way to change images using kernels(basically a matrix).

Here is how it works. Let&apos;s assume an image $$I$$. $$I(x,y)$$ gives the pixel color at location $$(x,y)$$, $$dx (= dy)$$ is the pixel width, and $$f$$ is the kernel of $$(2a+1)*(2b+1)$$. $$f(x,y)$$ gives the $$(x,y)th$$ element with $$x\in(-a,a)\ and\ y\in(-b,b))$$ .

  

Then the new image $$H$$ can be formed by:

$$H (x,y)= \sum_{dx=-a}^{a}\sum_{dy=-b}^{b} I(x,y)*f(x+dx,y+dy)$$

  

So okay, what does it have to do with anything? If you notice, this gives us the ability to have a new image. The new image will depend on how the image reacts to the kernel, i.e., every pixel in the new image contains the information of its neighbouring pixels. We can use that; we can thus extrapolate if there is a sudden change of color; if there is a sudden change of color, that means it might be an edge. [Sobel operator](https://en.wikipedia.org/wiki/Sobel_operator) is one such kernel.

  

[Here is an outstanding video explaining the same](https://www.youtube.com/watch?v=8rrHTtUzyZA&amp;amp;ab_channel=TheJuliaProgrammingLanguage)

  

We first run a gaussian blur to remove noises( can be achieved by a [Gaussian kernel](https://www.researchgate.net/figure/Discrete-approximation-of-the-Gaussian-kernels-3x3-5x5-7x7_fig2_325768087)). Then we run a Sobel filter. After this, we get the edges.

  

You can also apply [canny edge detection](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.420.3300&amp;amp;rep=rep1&amp;amp;type=pdf), which goes a step further.

&lt;/iframe&gt;
</description>
    </item>
    
    
    
    <item>
      <title>A new component in the Jam File</title>
      <link>https://blog.sdslabs.co/2022/02/designer-experience-2022</link>
      <pubDate>Fri, 25 Feb 2022 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2022/02/designer-experience-2022</guid>
      <description>&lt;h2 id=&quot;user-persona-ft-kritika-the-freshman&quot;&gt;User Persona ft. Kritika (the Freshman)&lt;/h2&gt;

&lt;p&gt;The online semester meant attending all (special emphasis on ‘all’) lectures, asking questions, and completing tutorials for the typical ‘ghissus’. At the same time, none of these actually had a presence worth mentioning in the life of other students of our infamous ‘covid batch’.&lt;/p&gt;

&lt;p&gt;While I identified myself as lying somewhere between the two extremes of this spectrum, my undying urge to try something new made sure that I attended most of the intro talks of the campus groups. So when I came to know about SDSLabs, I knew I must give it my best shot because I would be with people who are not only ‘machau’ but also understand why a few extra clicks on a website can be a little annoying.&lt;/p&gt;

&lt;p&gt;Although I was a little hesitant at first because I considered myself to be a ‘noob’, when SDSLabs announced the &lt;strong&gt;Syntax Error&lt;/strong&gt; Hackathon, I decided to participate in it after my seniors encouraged me because “even if you don’t win, you’ll definitely learn”. My first hackathon experience was great. Our project was shortlisted for the final round, and I vividly remember spending over an hour selecting the ‘right font’ with a fellow freshman team member (also in SDSLabs now!).&lt;/p&gt;

&lt;h2 id=&quot;making-the-cut&quot;&gt;Making the cut&lt;/h2&gt;

&lt;p&gt;Shortly after our end-term exams, the problem statements for the recruitments were released. As I worked hard on my project, I felt really motivated as the seniors helped me with reviews and guided me whenever necessary. This reminded me of a blog by an SDSLabs alumnus that read, “Help shall be provided at SDSLabs to those who ask for it”.&lt;/p&gt;

&lt;p&gt;After successful submission, I was called for rounds of interviews. A few hours after my last interview, when I got a call from a senior saying, “Congratulations, you got selected! So, are you in?”, I replied, “Of course, I am 110% in (~insert multiple exclamation marks, happy WhatsApp stickers, dancing GIFs, etc.~ )&lt;/p&gt;

&lt;h2 id=&quot;brainstorming-begins&quot;&gt;Brainstorming begins!&lt;/h2&gt;

&lt;p&gt;My first online chapo at IITR was the SDSLabs Intro Chapo. After getting done with the initial onboarding process of being added to the Slack workspace as ‘critica’ (with a “Stay on chat” advice from almost every senior) and other teams on GitHub, Figma, etc., we had a series of lectures and assignments on Website design, Game design, design tools like Figma, Adobe Illustrator, etc.&lt;/p&gt;

&lt;p&gt;We were also introduced to the various ongoing and released projects, and their aim, expectations, design philosophy, etc., were explained in detail. I remember being amazed upon realizing how vast our domain of work is and I was especially drawn to &lt;a href=&quot;https://rootex.readthedocs.io/en/latest/&quot;&gt;Rootex&lt;/a&gt;, our game engine (because seriously, how cool is that!)&lt;/p&gt;

&lt;h4 id=&quot;work-mode-on&quot;&gt;Work Mode: ON&lt;/h4&gt;

&lt;p&gt;We kickstarted our work as SDSLabs members with our Minors, where we worked on minor fixes and issues in the ongoing projects under the guidance of our mentors. I worked on identifying the UI/UX issues on &lt;a href=&quot;https://accounts.sdslabs.co/login&quot;&gt;Accounts&lt;/a&gt;, the authentication system of SDSLabs, and with that, I learned the importance of documenting your work.&lt;/p&gt;

&lt;p&gt;Then we had our Majors, where our scope of work and learning increased. We were assigned projects based on our interests as well as our performance in Minors, and I got to work on &lt;a href=&quot;https://backdoor.sdslabs.co/&quot;&gt;Backdoor&lt;/a&gt;, the CTF platform by SDSLabs.&lt;/p&gt;

&lt;p&gt;We design nice posters, and I also got to try my hands on Adobe After Effects while working on the &lt;a href=&quot;https://fb.watch/bdS3RC87m6/&quot;&gt;release video&lt;/a&gt; of our project &lt;a href=&quot;https://github.com/sdslabs/studyportal&quot;&gt;Studyportal&lt;/a&gt;. Apart from the excitement of learning something new, the sheer joy of getting a ++ on slack (our internal motivation system in action XD) is unmatched.&lt;/p&gt;

&lt;p&gt;There’s always happening a lot out there in the tech and design world, so how can the environment at SDSLabs be possible unaffected? We would know about some events or hackathons being organized, and with the slightest possibility of finding an opportunity to learn or build something cool (and often winning some awesome prizes too!), we would have a meeting, divide ourselves into teams, and just get going.&lt;/p&gt;

&lt;p&gt;Not to forget that internal hackathons, sprints, and lectures are a regular practice at SDSLabs.&lt;/p&gt;

&lt;h4 id=&quot;fun-mode-they-forgot-to-design-an-off-button-for-that&quot;&gt;Fun Mode: They forgot to design an OFF button for that&lt;/h4&gt;

&lt;p&gt;We indeed had a lot of fun online with meets turning into ‘bakar sessions’ and a few chapos. Even online farewell for our seniors was as grand as it could possibly be made virtually. But the real fun began when we reached campus.&lt;/p&gt;

&lt;p&gt;With many more chapos (for successful Minors, Majors, any small or big achievement or for no good-reason-at-all) being given either at the best eating outlets at Roorkee or stacks of Pizza boxes and cold drinks being delivered at the SAC Building, the ambiance at SDSLabs is always perfect for learning from your peers and seniors, coming up with crazy ideas and implementing them, or just going on random late-night walks if you feel low.&lt;/p&gt;

&lt;p&gt;Also, if you think that everyone at SDSLabs is a tech-nerd (we’d rather take pride in being called tech-enthusiasts, but ok), prepare yourselves for pleasant surprises. You’ll meet budding poets, gaming gods, great to not-so-good singers and musicians and people with crazy dance moves. Not to mention, you may ocassionally find yourself amidst a conversation about great movies and songs or some adventurous trips!&lt;/p&gt;

&lt;p&gt;A lot of us spend most of our time at SDSLabs, so whenever any of my friends see me leaving my hostel room with my laptop bag strapped on my shoulders, they almost always know where I was headed to!&lt;/p&gt;

&lt;h2 id=&quot;key-takeaway&quot;&gt;Key takeaway&lt;/h2&gt;

&lt;p&gt;To sum it up in one line, my journey at SDSLabs so far has been better than what I could have ever expected. With seniors playing a great role as mentors guiding me not only in the professional sphere but helping me deal with the ups and downs of life as well, and my peers being just the right like-minded people to have conversations and discuss ideas with, SDSLabs has helped me grow.&lt;/p&gt;

&lt;p&gt;So if you want to meet some of the most amazing people in the R-land in their natural habitat, drifting away with the music as their fingers move effortlessly on their laptops to bring ideas to life or just chilling on the bean bags waiting for inspiration of a great project from the heavens above, just drop by at SDSLabs :)
Recruitments will be held soon. If you have the slightest interest in anything I have talked about so far, do not miss the chance!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>insert into SDSLabs values ("Pragyansh")</title>
      <link>https://blog.sdslabs.co/2022/02/dev-experience-2022</link>
      <pubDate>Thu, 17 Feb 2022 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2022/02/dev-experience-2022</guid>
      <description>&lt;h2 id=&quot;the-first-semester&quot;&gt;The First Semester&lt;/h2&gt;

&lt;h4 id=&quot;the-freshman&quot;&gt;The Freshman&lt;/h4&gt;

&lt;p&gt;Like most of us, I was a naive fresher. I had made some small games during schooltime. I had basic knowledge of Python, C#, SQL and HTML (very superficial).&lt;/p&gt;

&lt;p&gt;I used to spend a lot of time on academics (your typical &lt;em&gt;“ghissu”&lt;/em&gt;). But I tried to attend most of the intro talks held by STC and got to know about SDSLabs. I knew about the group from the freshman guide too and had checked out some of their apps and projects.&lt;/p&gt;

&lt;p&gt;A couple of weeks later, SDSLabs announced the &lt;strong&gt;Syntax Error&lt;/strong&gt; hackathon. It was the first big event that happened in my first year (and was my &lt;em&gt;first&lt;/em&gt; hackathon too!) so I was pretty psyched about it.&lt;/p&gt;

&lt;p&gt;I ended up creating a 2D space shooter for my submission. Though I didn’t make it in the top 10, It was still a great experience for me and is a fond memory (&lt;em&gt;My first hackathon&lt;/em&gt;, first of many)&lt;/p&gt;

&lt;p&gt;Around this time I started developing an interest in Information Security and CTFs too. I attended some workshops by InfoSecIITR and found the field quite exciting.&lt;/p&gt;

&lt;p&gt;Fast Forward to…&lt;/p&gt;

&lt;h4 id=&quot;the-recruitments&quot;&gt;The Recruitments&lt;/h4&gt;

&lt;p&gt;SDSLabs held many events for recruitments (Syntax Error, Makers, noobCTF) and a recruitment test. I attempted their recruitment test which was mostly problem solving and basic programming questions. There was a section on technological advancements and questions like &lt;em&gt;“Why do you think coding is a superpower?”&lt;/em&gt;. I found this very interesting as this was not there in other groups’ test and though this section carried no weightage, I attempted it (as it piqued my interest).&lt;/p&gt;

&lt;p&gt;A few days later, I got a call for interview. The interview was conducted in 2 parts. First one was basic problem solving, and we also discussed basic networking and webapp vulnerabilities.&lt;/p&gt;

&lt;p&gt;The second round was based on my interests and my ability to tackle real world problems. I was asked to come up with high levels designs for Tic-Tac-Toe and a library management system. This was also a fanboy moment for me as one of the interviewers was Twarit Waikar (SDSLabs 2021 alumnus), a game developer who had worked extensively on SDSLabs’s game engines Rubeus and Rootex. I had read his blogs and looked at his games and the game engines and was thoroughly impressed by his work (Making a game engine seemed like a very huge undertaking to me). At the end of this round, I was given time to let loose with any queries I had for SDSLabs, an opportunity I made good use of. I asked them about game engines, game development and web security.&lt;/p&gt;

&lt;h2 id=&quot;the-second-semester&quot;&gt;The Second Semester&lt;/h2&gt;

&lt;h4 id=&quot;the-initiation&quot;&gt;The initiation&lt;/h4&gt;

&lt;p&gt;I got a phone call informing me about my induction to SDSLabs. We had an intro chapo (online, coz covid) and got to know everyone there. We were added on the workspace apps and this got the cart rolling.&lt;/p&gt;

&lt;p&gt;The semester was filled with lectures on various subjects (Git, Bash scripting, Web development, Game development) and corresponding assignments. The assignments spurred me to learn about something new and implement it within a deadline.&lt;/p&gt;

&lt;p&gt;After the assignment season was concluded, we were introduced to the active apps and projects in SDSLabs. We were briefed on the status for each project and a received an overview of the tech stack, ongoing work, future issues and overall vision.&lt;/p&gt;

&lt;h4 id=&quot;minors&quot;&gt;Minors!!&lt;/h4&gt;

&lt;p&gt;The day came when we were asked to pick up a project from the ongoing ones to complete a minor issue in them. This was sorting-hat-esque where everyone looked at that spreadsheet of projects and open issues and put their name against any one of them. Minors were completed in less than a week.&lt;/p&gt;

&lt;h2 id=&quot;the-third-semester&quot;&gt;The Third Semester&lt;/h2&gt;

&lt;h4 id=&quot;hackathons&quot;&gt;Hackathons&lt;/h4&gt;

&lt;p&gt;By now we started participating in various hackathons (&lt;em&gt;and managing to win some of them!!&lt;/em&gt;). Members would come together, form teams among themselves (sometimes even our alumni joined us) and we would participate in the hackathons. Sitting through hours of code sprints and preparing POCs, those were exhilarating hours.&lt;/p&gt;

&lt;h4 id=&quot;majors&quot;&gt;Majors&lt;/h4&gt;
&lt;p&gt;After the minors, we had to choose our Majors: solving a large issue or implementing something important in the ongoing projects. We again met for the sorting and were assigned the responsibilities.&lt;/p&gt;

&lt;h4 id=&quot;releasing-a-project&quot;&gt;Releasing a Project&lt;/h4&gt;

&lt;p&gt;When a project comes to fruition and is ready to be open-sourced, everyone at SDSLabs is pretty excited about it. Seeing the hardwork of our members getting released ittruly a moment to be cherished. I witnessed the release of &lt;a href=&quot;https://github.com/sdslabs/zap-db&quot;&gt;ZapDB&lt;/a&gt; and &lt;a href=&quot;https://github.com/sdslabs/studyportal&quot;&gt;Studyportal&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;not-just-dev&quot;&gt;Not just Dev&lt;/h4&gt;

&lt;p&gt;It’s not always software develpoment that we work on. We also work on IoT projects to make our workspace smarter (like presence detection using computer vision, WiFi locks). We have members passionate about information security and Data Science. We also have paper discussions in which we all read a research paper on related to CS and discuss it with other members. I was a part of the &lt;a href=&quot;https://www.facebook.com/SDSLabs/posts/4733566126689835?__cft__[0]=AZXlJvCdlQ-aShx04l__LSiGj266lGLX7V3A0-qHk9rQj_8ajY5JBtZaUgo06SX-XFi04SWKDCpApdahSAnoKIyN5E79ZWSo8ga6gmAfdr5H4pg28uxHpOh6RazM13lIezdOsE4Rk27i7nIprOJTuVg4&amp;amp;__tn__=%2CO%2CP-R&quot;&gt;SDSLabs CSAW CTF team&lt;/a&gt; where we stood 2nd in India in the finals.&lt;/p&gt;

&lt;h2 id=&quot;summing-up&quot;&gt;Summing Up&lt;/h2&gt;

&lt;h4 id=&quot;mentors&quot;&gt;Mentors&lt;/h4&gt;

&lt;p&gt;A big part of what I got from SDSLabs are the amazing seniors and mentors who are ready to help me in every way possible. Be it some code blocker or real life problems, I know I can rely on them to help me out. There are people with diversified interests (Research, Information Security, Data Science to name a few) and there is always someone I can ask for help while exploring something new.&lt;/p&gt;

&lt;h4 id=&quot;not-just-work&quot;&gt;Not just work&lt;/h4&gt;

&lt;p&gt;SDSLabs is not that &lt;em&gt;all-work-ultra-serious&lt;/em&gt; place. We have our chill sessions where people play games, watch movies or just dance to music. For me, it’s the ideal workspace and I spent more time in SDSLabs than anywhere else on campus (sometimes even sleeping over there). Minesweeper showdowns, minecraft adventures and struggling in Nioh is a regular occurence here&lt;/p&gt;

&lt;h4 id=&quot;ultimate-geek-heaven&quot;&gt;Ultimate Geek Heaven&lt;/h4&gt;

&lt;p&gt;When I got into IITR, I imagined it to be a place full of people passionate about tech and geeky stuff. People who would drool over latest tech advancements and would be interested in trying them out. While this might not be true for all of IITR, but SDSLabs surely fits the bill. It is that ideal place I had imagined, the &lt;strong&gt;Ultimate Geek Heaven&lt;/strong&gt;.&lt;/p&gt;

&lt;h4 id=&quot;concluding&quot;&gt;Concluding&lt;/h4&gt;

&lt;p&gt;I had a great year at SDSLabs. Hours of code sprints, participating in various hackathons, vouching not to eat or sleep until I finish the issue/challenge, chilling out with friends, ranting away in one of those 2AM random meet sessions, discussing new things we learned about and coming up with new project ideas; it was quite eventful and fun.&lt;/p&gt;

&lt;h2 id=&quot;arrivederci&quot;&gt;Arrivederci&lt;/h2&gt;
</description>
    </item>
    
    
    
    <item>
      <title>SDSLabs Recruitment Drive 2022</title>
      <link>https://blog.sdslabs.co/2022/01/recruitment-drive-2022</link>
      <pubDate>Thu, 27 Jan 2022 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2022/01/recruitment-drive-2022</guid>
      <description>&lt;p&gt;It’s that time of the year again, isn’t it? An endless barrage of workshops, competitions, lectures, and of course, recruitments. The sheer amount of information floating around can be overwhelming. Don’t sweat it, we are here to spell it out for you!&lt;/p&gt;

&lt;p&gt;SDSLabs recruits students every year, selecting the best minds from the IITR Junta to join our cause of fostering technological innovation in the campus.&lt;/p&gt;

&lt;h1 id=&quot;how-do-you-get-in&quot;&gt;How do you get in?&lt;/h1&gt;

&lt;p&gt;There are many ways to land an interview at SDSLabs during the Recruitment Drive. These methods are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Being amongst the top teams at the SDSLabs’ Syntax Error Hackathon 2022&lt;/li&gt;
  &lt;li&gt;Completing SDSLabs’ Winter of Code 2022&lt;/li&gt;
  &lt;li&gt;Being amongst the top students at any of our competitions mentioned below&lt;/li&gt;
  &lt;li&gt;Being amongst the top students in the SDS Recruitment Test and Design problem statement submissions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;syntax-error&quot;&gt;Syntax Error&lt;/h2&gt;

&lt;p&gt;Syntax Error is a campus-level hackathon conducted by us where students form teams and work together to build some amazing applications from scratch.&lt;/p&gt;

&lt;p&gt;We call first-year students who are placed in the top 3 teams in the overall category for a direct interview.&lt;/p&gt;

&lt;h2 id=&quot;winter-of-code-2022&quot;&gt;Winter Of Code 2022&lt;/h2&gt;

&lt;p&gt;Students who were selected for SDSLabs’ Winter of Code 2022 and were able to pass all their evaluations successfully will be invited for an interview at SDSLabs during the interview process.&lt;/p&gt;

&lt;h2 id=&quot;competitions&quot;&gt;Competitions&lt;/h2&gt;

&lt;p&gt;SDS organizes a variety of competitions for the 1st year junta at IIT Roorkee. We like to call the Top 3 students from each of these competitions for an interview:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;NoobCTF
    &lt;ul&gt;
      &lt;li&gt;Capture the flag competition&lt;/li&gt;
      &lt;li&gt;Hosted at &lt;a href=&quot;https://backdoor.sdslabs.co/&quot;&gt;Backdoor&lt;/a&gt; with InfoSec IITR&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Beginner’s Hypothesis
    &lt;ul&gt;
      &lt;li&gt;Data Science competition&lt;/li&gt;
      &lt;li&gt;Hosted at &lt;a href=&quot;https://cerebro.sdslabs.co/&quot;&gt;Cerebro&lt;/a&gt; with DSG IITR&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Algophobic
    &lt;ul&gt;
      &lt;li&gt;Competitive programming competition&lt;/li&gt;
      &lt;li&gt;Hosted at &lt;a href=&quot;https://codeforces.com/&quot;&gt;Codeforces&lt;/a&gt; with PAG IITR&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Endgame
    &lt;ul&gt;
      &lt;li&gt;Mathematical problem-solving competition&lt;/li&gt;
      &lt;li&gt;Hosted at &lt;a href=&quot;https://erdos.sdslabs.co/&quot;&gt;Erdős&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Freshers with an exceptional submission at the &lt;a href=&quot;https://globalgamejam.org/2022/jam-sites/sdslabs&quot;&gt;Global Game Jam 2022&lt;/a&gt; might also get a direct interview call during the recruitment drive.&lt;/p&gt;

&lt;h2 id=&quot;recruitment-test-and-design-problem-statements&quot;&gt;Recruitment Test and Design Problem statements&lt;/h2&gt;

&lt;p&gt;SDSLabs conducts a recruitment test for freshers, having various sections including logical reasoning, programming, software development, and an ad-hoc section to show off your geeky side.&lt;/p&gt;

&lt;p&gt;We invite the top scorers from individual sections and the top scorers overall for an interview during the interview process. Needless to say, the evaluation will be done based on your performance in individual sections.&lt;/p&gt;

&lt;p&gt;Design based problem statements are released a week before the recruitment test takes place to test your skills in various fields of design like UI/UX and graphic design. Design submissions will be considered for getting recruited as a Designer at SDSLabs.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Apart from this, we are always open to new members who may have missed their shot in our recruitment drive. Obsessed with coding? Building something new every week? We insist that you join us! Send us your resume, at: &lt;a href=&quot;mailto:contact@sdslabs.co.in&quot;&gt;contact@sdslabs.co.in&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hoping that this has addressed all your doubts, we look forward to your enthusiastic participation in our recruitment drive.&lt;/p&gt;

&lt;p&gt;Best of luck!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>SDSLabs Recruitment Drive 2021</title>
      <link>https://blog.sdslabs.co/2021/03/recruitment-drive-2021</link>
      <pubDate>Wed, 17 Mar 2021 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2021/03/recruitment-drive-2021</guid>
      <description>&lt;p&gt;We recruit students every year and select the best minds from the IITR Junta to join our venture for leading the technological innovation in the IIT Roorkee campus.&lt;/p&gt;

&lt;p&gt;We are open to all years of students of IITR to apply in our recruitment drive. However, the majority of our recruits are in their 1st year of study.&lt;/p&gt;

&lt;h1 id=&quot;recruitment-process&quot;&gt;Recruitment Process&lt;/h1&gt;

&lt;p&gt;We provide you with four different methods of landing an interview at SDSLabs during the Recruitment Drive. These methods are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Being amongst the teams at the SDSLabs’ Syntax Error Hackathon 2021&lt;/li&gt;
  &lt;li&gt;Completing SDSlabs’ Makers 2021&lt;/li&gt;
  &lt;li&gt;Placing top at any of our competitions mentioned below&lt;/li&gt;
  &lt;li&gt;Placing amongst the top students in SDS’ Recruitment Test and Design problem statement submissions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;syntax-error&quot;&gt;Syntax Error&lt;/h2&gt;

&lt;p&gt;We call first-year students for an interview who placed in the top 3 teams in the overall category at Syntax Error.&lt;/p&gt;

&lt;p&gt;Since the hackathon winners have already been announced, the respective teams will be called during the interview process.&lt;/p&gt;

&lt;h2 id=&quot;makers-2021&quot;&gt;Makers 2021&lt;/h2&gt;

&lt;p&gt;Students who developed on a project idea released during Makers 2021 or developed on their own project idea of a similar caliber will be invited for an interview at SDSLabs during the interview process.&lt;/p&gt;

&lt;h2 id=&quot;competitions&quot;&gt;Competitions&lt;/h2&gt;

&lt;p&gt;SDS organizes a variety of competitions for the 1st year junta at IIT Roorkee. We like to call the Top 3 students from each of these competitions for an interview:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;NoobCTF
    &lt;ul&gt;
      &lt;li&gt;Capture the flag competition&lt;/li&gt;
      &lt;li&gt;Hosted at &lt;a href=&quot;https://backdoor.sdslabs.co/&quot;&gt;Backdoor&lt;/a&gt; with InfoSec IITR&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Beginner’s Hypothesis
    &lt;ul&gt;
      &lt;li&gt;Data Science competition&lt;/li&gt;
      &lt;li&gt;Hosted at &lt;a href=&quot;https://cerebro.sdslabs.co/&quot;&gt;Cerebro&lt;/a&gt; with DSG IITR&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Algophobic
    &lt;ul&gt;
      &lt;li&gt;Competitive programming competition&lt;/li&gt;
      &lt;li&gt;Hosted at &lt;a href=&quot;https://codeforces.com/&quot;&gt;Codeforces&lt;/a&gt; with PAG IITR&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Endgame
    &lt;ul&gt;
      &lt;li&gt;Mathematical problem-solving competition&lt;/li&gt;
      &lt;li&gt;Hosted at &lt;a href=&quot;https://erdos.sdslabs.co/&quot;&gt;Erdős&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;recruitment-test-and-design-problem-statements&quot;&gt;Recruitment Test and Design Problem statements&lt;/h2&gt;

&lt;p&gt;SDSLabs’ recruitment test has various sections, including logical reasoning, programming, software development, and an ad-hoc section to show off your geeky side.&lt;/p&gt;

&lt;p&gt;We invite the top scores from individual sections and the top scorers overall for an interview during the interview process. Needless to say, the evaluation will be done based on your performance in individual sections.&lt;/p&gt;

&lt;p&gt;Design based problem statements are released a week before the recruitment test takes place to test your skills in various fields of design like UI/UX and graphic design. Design submissions will be considered for recruiting into SDSLabs as a designer.&lt;/p&gt;

&lt;p&gt;Apart from all these methods, we are yearly open to wildcard entries. If you somehow are not able to make it this time, you can reach out to us at contact@sdslabs.co.in with your CV after the recruitment drive.&lt;/p&gt;

&lt;p&gt;We hope we have made the entire recruitment process clear for all the enthusiasts out there. We look forward to seeing you test your skills at our Recruitment Drive this year.&lt;/p&gt;

&lt;p&gt;Best of luck!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Designing a practice-session platform for Hackers — UX/UI Case Study</title>
      <link>https://blog.sdslabs.co/2020/05/PlayCTF</link>
      <pubDate>Thu, 07 May 2020 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2020/05/PlayCTF</guid>
      <description>&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/2526/1*XpCUS2g8yYsEejhH1vKnYg.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The following is a UX/UI Design Case Study describing how I designed a platform(PlayCTF) for the CTF players to help them focus on what they love doing- “Hunting down flags.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Have you ever wondered how Cybersecurity experts and bounty hunters sharpen their axe?
Yes, they participate in CTFs to do so.&lt;/p&gt;

&lt;p&gt;PlayCTF is an open-source platform that can be used by anyone to host an individual Jeopardy-style CTF at a time, Currently under development at &lt;a href=&quot;https://sdslabs.co/&quot;&gt;SDSLabs&lt;/a&gt; (A student-run campus group under Software Development Section, IIT Roorkee.)&lt;/p&gt;

&lt;p&gt;But before we begin, let me get you some context.&lt;/p&gt;

&lt;h2 id=&quot;what-is-a-ctf&quot;&gt;What is a CTF?&lt;/h2&gt;

&lt;p&gt;CTF(Capture the flag) is simply a cyber-security game, and it consists of mini-challenges whose security the players need to break in order to get some secret strings(flags), which lead them to victory.
This specific kind of CTF is called Jeopardy-style CTF.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/60/1*jWSWkOA5_AiOGr7hlIFhxA.png?q=20&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/1860/1*jWSWkOA5_AiOGr7hlIFhxA.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A typical flag might look something like this.&lt;/p&gt;

&lt;h2 id=&quot;my-role-in-the-team&quot;&gt;My Role in the Team&lt;/h2&gt;

&lt;p&gt;We worked as a team of 1 UX/UI Designer(me) and 3 Developers.&lt;/p&gt;

&lt;p&gt;Luckily the developers I worked with were all regular CTF Players and were always up for a chat.&lt;/p&gt;

&lt;p&gt;My role was to understand the requirements of the user(CTF Player) and to provide the best possible experience to the user while taking into account our technical abilities and constraints.
Key deliverables being High-Fidelity wireframes.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/5325/1*C1tp804BqQdqDSFurncCSQ.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;understanding-the-problem&quot;&gt;Understanding the Problem&lt;/h2&gt;

&lt;p&gt;Some organizations like cyber-security groups and recruiters need to organize tests/practice-sessions, but do not have a platform on which they could deploy their challenges.
They either deploy these challenges on self-built quick and dirty websites or end-up paying giants like cftd.io or ctftime.org in order to organize these CTFs.
How might we help them get this tedious work done without asking for much effort?&lt;/p&gt;

&lt;h2 id=&quot;knowing-the-competition&quot;&gt;Knowing the Competition&lt;/h2&gt;

&lt;p&gt;I started using some common platforms like ctfd.io, ctftime, backdoor, etc. I tried to understand these products inside out and how our solution differed from these platforms. Also, where I could provide the user with a better experience than these products.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/801/1*DcfkqZpQ_bE-nfA20Dc_Vw.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“We decided to build an open-sourced solution that anyone could use to organize an individual Jeopardy-style CTF using their own server.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;understanding-how-players-function---user-flow&quot;&gt;Understanding how players function - User Flow&lt;/h2&gt;

&lt;p&gt;Some of my friends participate in CTFs quite regularly, I used to observe them solving challenges.&lt;/p&gt;

&lt;p&gt;CTF Players are usually quite competitive in nature and they -&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Need to plan how to efficiently use their limited time.&lt;/li&gt;
  &lt;li&gt;Want to quickly solve challenges submit the flags.&lt;/li&gt;
  &lt;li&gt;Want to keep track of their progress and current standings.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/4190/1*BN7rWXpeRyoajMrBfa0uiA.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Usually, a CTF challenge requires a player to -&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Minimize the window&lt;/li&gt;
    &lt;li&gt;Hunt the Flag&lt;/li&gt;
    &lt;li&gt;Come back and Submit the Flag&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;In my opinion, this process where the user leaves the platform and again joins back needed some extra attention!&lt;/p&gt;

&lt;h2 id=&quot;ideating-the-structure---information-architecture&quot;&gt;Ideating the Structure - Information Architecture&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/4190/1*z03aF30IqQm5AL0vb_HHjA.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;wireframing&quot;&gt;Wireframing&lt;/h2&gt;

&lt;p&gt;The heart of this product lies in the “Challenges Page,” this is where a CTF player would spend the maximum amount of time, switching between challenges, strategizing how to use his/her precious time and solving those challenges, and submitting the flags he/she acquired.&lt;/p&gt;

&lt;p&gt;Throughout the wireframing, I focused on how to make this process easy and fast for the user(player). I ended up with a few iterations while taking continuous feedback from my friends who regularly played CTFs.&lt;/p&gt;

&lt;h3 id=&quot;iteration-1&quot;&gt;Iteration 1&lt;/h3&gt;

&lt;p&gt;I tried using cards for each challenge, which redirected the user to a Challenge Modal.
Here the user could access all the essential info which is required to find the flag.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/3083/1*ZfFe_qLWlYttd4-IgpjP6A.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This approach seemed feasible at first because it presented the user with a large number of challenges without much scrolling.&lt;/p&gt;

&lt;p&gt;Later I realized what mattered even more to our users was the ability to switch between various challenges and submitting flags as quickly as possible.
This modal-based approach slowed it down quite a bit!&lt;/p&gt;

&lt;h3 id=&quot;iteration-2&quot;&gt;Iteration 2&lt;/h3&gt;

&lt;p&gt;I tweaked the card a bit by adding the option to submit the flag externally, even without opening the challenge description.
Also, I provided the option to switch between modals(challenges) using keys or clicks. Maybe it didn’t remain a modal anymore.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/3083/1*kEkVrP5FFr1mxmi8bdmwnw.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Still, it did not seem to solve the purpose. (Speed)
This was mostly due to the use of the “MODALS.”
I decided not to use them for the next iteration!&lt;/p&gt;

&lt;h3 id=&quot;iteration-3-final-iteration&quot;&gt;Iteration 3 (Final Iteration!)&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/3083/1*9asprbv0g3_dJ7SjT2mu0w.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The final version, which I decided to settle with was a trade-off, it showed fewer challenges to the user(player) but significantly increased the ease and agility with which the user could now switch between challenges and submit flags.&lt;br /&gt;
It was somewhat a blend of the first two iterations I managed to come across.&lt;/p&gt;

&lt;h2 id=&quot;final-ui&quot;&gt;Final UI&lt;/h2&gt;

&lt;p&gt;Now I’m presenting the final designs. SDSLabs design guidelines were followed while designing these screens. &lt;em&gt;drumrolls&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/7325/1*bHUYUoCMWNyuGqPgTi0vUQ.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Although this was the default color scheme we chose to provide, but the color palette can always be changed by the admin to suit his/her needs like the ones shown below. (Open-Source perks)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/14190/1*S8z5YhZ-qTaDUBeo77Rn1w.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;One of my friends suggested me to try this color palette. (for fun)&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;This was my very first design project and I learned a lot of things along the way-&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I had never worked on a product from scratch.&lt;/li&gt;
  &lt;li&gt;I didn’t know what was a style guide and how it could be used to achieve consistency.&lt;/li&gt;
  &lt;li&gt;I had to make illustrations. I learned a bit of Graphic design!&lt;/li&gt;
  &lt;li&gt;I had to collaborate with developers, make them understand what was inside my head.&lt;/li&gt;
  &lt;li&gt;And most importantly I understood how the iterative process worked when followed along with feedback.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Moreover, it taught me how to work well with people around me, to manage collective efforts, to meet deadlines, to not fall in love with my work, and to seek feedback open-heartedly.&lt;/p&gt;

&lt;p&gt;Thanks for reading. ❤&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Want to create something? I’ll be happy to help!&lt;/em&gt;
&lt;em&gt;Reach me at - &lt;a href=&quot;mailto:ychoudhary@mt.iitr.ac.in&quot;&gt;ychoudhary@mt.iitr.ac.in&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Easy Access Distribution using Keyhouse and Watchdog</title>
      <link>https://blog.sdslabs.co/2020/04/watchdog</link>
      <pubDate>Sun, 05 Apr 2020 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2020/04/watchdog</guid>
      <description>&lt;p&gt;Access distribution is always a problem. Every organization is looking for an easy way to do access management, but at the same time, also wants to ensure security. We at SDSLabs also need to ensure that the server which is responsible for access management is always live, or one might end up being locked out of the server. Hence we developed a tool to address this problem, which started as a couple of bash scripts but is now a Rust project. It is called Watchdog, and the ever-live database is called Keyhouse.&lt;/p&gt;

&lt;h2 id=&quot;motivation-and-design&quot;&gt;Motivation and Design&lt;/h2&gt;

&lt;p&gt;So what made us develop Watchdog? We wanted a tool that is -&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Extremely easy to use&lt;/strong&gt;
Watchdog aims to be a tool that saves us from the hassle of adding and removing ssh keys from the authorized_keys file, and replaces it with simpler steps.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Has a simple and auditable codebase&lt;/strong&gt;
With just 700 lines of code, this tool is very easy to understand. Anyone can just casually look into the source repository to understand how it works. We also welcome your contributions :)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Non reliant on servers&lt;/strong&gt;
Access control should not be reliant on a machine that is prone to shutdowns or servers prone to high downtime.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;what-is-keyhouse&quot;&gt;What is Keyhouse?&lt;/h2&gt;

&lt;p&gt;What do we do if we cannot ensure a database that is almost always live? Well, host your database as a GitHub repository ;) That’s what we did, and it has worked very well.&lt;/p&gt;

&lt;p&gt;The first thing to look at should be the structure of Keyhouse.&lt;/p&gt;

&lt;p&gt;&lt;kbd&gt;
    &lt;img src=&quot;https://i.imgur.com/5fZzVF4.png&quot; /&gt;
&lt;/kbd&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;tl;dr&lt;/em&gt; the file &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;keys&lt;/code&gt; contains the SSH Keys of all members, and the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hosts&lt;/code&gt; folder contains a file for each server which contains access configuration.&lt;/p&gt;

&lt;p&gt;Let’s have a look at Keyhouse.&lt;/p&gt;

&lt;p&gt;&lt;kbd&gt;
&lt;img src=&quot;https://i.imgur.com/Ms8cTCk.png&quot; /&gt;
&lt;/kbd&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;To register yourself as a part of an organization (and get a username), add your SSH key to file &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;data/keys&lt;/code&gt; in the format &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;name|ssh-key&lt;/code&gt;. Make sure the name you choose doesn’t collide with someone else’s.&lt;/p&gt;

&lt;p&gt;&lt;kbd&gt;
&lt;img src=&quot;https://i.imgur.com/bqLKtv1.png&quot; /&gt;
&lt;/kbd&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;To gain access to user &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;study&lt;/code&gt; in the server called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ratchet&lt;/code&gt;, we edit the file &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;data/hosts/ratchet&lt;/code&gt; to add the line &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;name|study&lt;/code&gt; at the bottom, open a pull request&lt;/p&gt;

&lt;p&gt;&lt;kbd&gt;
&lt;img src=&quot;https://i.imgur.com/0hI5j5W.png&quot; /&gt;
&lt;/kbd&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;and get it merged by an admin.&lt;/p&gt;

&lt;p&gt;&lt;kbd&gt;
&lt;img src=&quot;https://i.imgur.com/Op5pz9E.png&quot; /&gt;
&lt;/kbd&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;As simple as that! You got access to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;study@ratchet&lt;/code&gt; (no, not really, we won’t give you access to our ratchet).&lt;/p&gt;

&lt;h2 id=&quot;what-is-watchdog&quot;&gt;What is Watchdog?&lt;/h2&gt;

&lt;p&gt;As we mentioned it earlier, Watchdog is a rust binary installed on the server which communicates with the Keyhouse repository to check for privileges, and notifies of any login attempts, successful or otherwise, through Slack messages. As an added feature, we also notify you about any administrative activities like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;kbd&gt;
&lt;img src=&quot;https://i.imgur.com/XyEXwPS.png&quot; /&gt;
&lt;/kbd&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;It works by plugging callbacks to the commands &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;su&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ssh&lt;/code&gt; using &lt;a href=&quot;https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/managing_smart_cards/pluggable_authentication_modules&quot;&gt;Pluggable Authentication Module&lt;/a&gt; (PAM) (to send messages to Slack) and &lt;a href=&quot;https://blog.scalesec.com/just-in-time-ssh-provisioning-7b20d9736a07&quot;&gt;SSH Authorization Keys Command&lt;/a&gt; (to authenticate with Keyhouse).&lt;/p&gt;

&lt;h2 id=&quot;the-road-ahead&quot;&gt;The Road Ahead&lt;/h2&gt;

&lt;p&gt;We are working on developing a simple web application for the Keyhouse repository, where a user can request access from admins by automatically making a PR to the repository by submitting a form on the webpage.
We are also working on the issue that the sudo notifications don’t show which user invoked them. This issue is a priority for us at the moment.&lt;/p&gt;

&lt;p&gt;Check out the project homepage at https://watchdog.sdslabs.co to set up Watchdog for your machine. You can also check out the source code for Watchdog at https://github.com/sdslabs/watchdog. We would love your valuable contributions and feedback to the project there. Up for a chat? Head to https://chat.sdslabs.co. &lt;em&gt;Ciao!&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Final recruitment list for 1st year (2020)</title>
      <link>https://blog.sdslabs.co/2020/01/recruitment-final-list-20</link>
      <pubDate>Sun, 19 Jan 2020 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2020/01/recruitment-final-list-20</guid>
      <description>&lt;p&gt;We interviewed 80 people before releasing the final list of selected people. It was a really tough job to filter down from the talented applicants to the final list. Sadly, we have limited vacancies and can only take in a limited number. But this is not the end of line for others, there’s still a way to &lt;a href=&quot;/2014/01/how-to-join-sdslabs&quot;&gt;join SDSLabs&lt;/a&gt;. We’ll continue taking open lectures on variety of topics. Stay connected with us on our Facebook &lt;a href=&quot;https://facebook.com/sdslabs&quot;&gt;page&lt;/a&gt; for the updates regarding this.&lt;/p&gt;

&lt;h2 id=&quot;developers&quot;&gt;Developers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Angad Kambli &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Aryaman Behera &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CH&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Aviral Jain &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ECE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Gaurav Genani &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CH&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Gautam Bafna &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ECE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Ishaan Rawat &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ME&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Mahak &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Meet Shah &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Nishanth R &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;PSE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Smith Pereira &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ECE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Shreyaa Sharma &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Sanjana Narayan &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ECE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Varun Gupta &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;designers&quot;&gt;Designers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Amitesh Uppal &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;BT&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Lakshya Bajaj &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;PSE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Saurabh Sangam &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;GT&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Stuti Lilani &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ME&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Swastika &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CH&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
&lt;p&gt;Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>UST Global Hackathon (d3code) 2019</title>
      <link>https://blog.sdslabs.co/2020/01/ust-global-hackathon</link>
      <pubDate>Fri, 10 Jan 2020 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2020/01/ust-global-hackathon</guid>
      <description>&lt;p&gt;&lt;img src=&quot;/images/posts/ust-hack-0.jpg&quot; alt=&quot;Team&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Recently, UST Global announced the first edition of their d3code hackathon. It took place in 5 stages. The early three stages were online rounds, where basic programming questions were asked. The fourth stage was an interview, after which the top 20 teams got a chance to visit Kerala for the final round in UST Global’s headquarters.&lt;/p&gt;

&lt;p&gt;We reached Thiruvananthapuram a day before the hackathon, and headed to their office the next day. The campus is phenomenal. Check out the following video for a glimpse of the headquarters - &lt;a href=&quot;https://www.youtube.com/watch?v=Mk1NY9m6Hlw&quot;&gt;https://www.youtube.com/watch?v=Mk1NY9m6Hlw&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Upon entering the office, we were provided with breakfast. Following that, we were introduced to the d3code team and given our problem statements. There were three problem statements of which we were required to choose one. This hackathon was different from the others we usually participate in. Not only were the problem statements given to us, but each part of the problem was defined in detail. The judging process was very well defined so as not to be biased for anyone. There were pointers given to us based on which our projects were to be scored.&lt;/p&gt;

&lt;p&gt;The hackathon was 24 hours long. It started at 9:30 in the morning. The first couple of hours were spent in deciding upon the problem statement. There were mentors available for helping us out in understanding the problems, and guiding us along the way in completing our project.&lt;/p&gt;

&lt;p&gt;The three problem statements were from different domains. The first one was related to data, the second was a social media application, and the third was a live delivery app. We chose the first one, considering the skills it required were in resonance with ours.&lt;/p&gt;

&lt;p&gt;We were essentially required to create a tool that parses data in CSV format and dump it into a relational database. There were other sub-parts of the problem, where we had to assign data types automatically, validate data for errors, and extract personal information from it. We also implemented a system where multiple CSV files could be uploaded together in topological order.&lt;/p&gt;

&lt;p&gt;For the final presentation, we were given just 6 minutes. With limited time, we only focused on demoing our application rather than showing the PPT. We managed to finish the demo with 6 seconds to spare . A few hours later, the results were announced, and to our surprise, we won first prize.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/ust-hack-1.png&quot; alt=&quot;Prizes&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Overall it was a great hackathon (mostly because of the prizes we won 😛). And the &lt;a href=&quot;https://vimeo.com/379149533&quot;&gt;moment&lt;/a&gt; results were announced is something I’ll never forget.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Gasper - Your cloud in a binary (Part 1)</title>
      <link>https://blog.sdslabs.co/2020/01/gasper-part-1</link>
      <pubDate>Fri, 10 Jan 2020 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2020/01/gasper-part-1</guid>
      <description>&lt;p&gt;&lt;em&gt;This blog is Part 1 of a series. It gives an idea of Gasper’s architecture, technical stack, and capabilities. The subsequent parts cover the detailed discussion of its various components.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Providing simplicity without letting go of the necessities in deployments has always been a bottleneck for PaaS providers. Imagine you have a couple of Bare-Metal servers or Virtual Machines at your disposal (collectively called here as nodes) and you wanted to setup an application hosting service, such that the load is evenly distributed among all nodes.&lt;/p&gt;

&lt;p&gt;Let’s face it; we have essentially two choices.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Manually Setup Everything:&lt;/em&gt; &lt;br /&gt;
Manually decide which application goes to which node, then use ssh/telnet to manually setup all of your applications one by one.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Kubernetes at the rescue:&lt;/em&gt; &lt;br /&gt;
Kubernetes takes away the load distribution problem with its intelligent clustering. But then again, it requires a lot (and yes a lot!) of configurations for each application. Besides, the pipeline for setting up the app still needs to be implemented.&lt;/p&gt;

&lt;h4 id=&quot;gasper---a-new-hope&quot;&gt;Gasper - A New Hope&lt;/h4&gt;
&lt;p&gt;Gasper addresses all of the above problems and makes deploying applications just a breeze. The platform is modeled as a REST API, where the user just needs to provide the Github repository’s URL, build commands and some optional configurations, click the Create button and voila, your application is deployed!&lt;/p&gt;

&lt;h2 id=&quot;sounds-cool-lets-look-at-the-amazing-tale-under-the-hood&quot;&gt;Sounds cool? Let’s look at the amazing tale under the hood&lt;/h2&gt;

&lt;h4 id=&quot;overview-of-the-architecture&quot;&gt;Overview of the Architecture&lt;/h4&gt;
&lt;p&gt;Gasper is written entirely in Go - &lt;a href=&quot;https://thenewstack.io/go-the-programming-language-of-the-cloud/&quot;&gt;the language of the Cloud&lt;/a&gt;. It essentially has a microservices-based architecture. If you don’t know already, we have multiple software design paradigms. One is the monolithic architecture, the whole application as a single unit with multiple modules. These applications lose flexibility easily and are difficult to scale. Next, we have the microservices architecture. Each module is a separate unit and interacts only with APIs. Technically, we say that we have decoupled the modules. This can be scaled easily, and each module can be designed separately.&lt;/p&gt;

&lt;p&gt;This choice of architecture was made right during the initial phase due to multiple factors. One of them being: this makes adding more modules dead simple. Suppose we need a service for internal DNS resolution. We create a separate module for that and just plug it in!
Apart from this, as it scales and spans multiple servers, the services automatically handle the load distribution making everything a walk in the park.&lt;/p&gt;

&lt;h4 id=&quot;the-microservices-in-action&quot;&gt;The microservices in action&lt;/h4&gt;
&lt;p&gt;The journey from downloading the source code to its final deployment in Gasper involves the following microservices:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Kaze 🌪 (the master service responsible for managing all other services)&lt;/li&gt;
  &lt;li&gt;Mizu 💧(the worker service for creating/managing apps)&lt;/li&gt;
  &lt;li&gt;Kaen 🔥(the worker service for creating/managing databases)&lt;/li&gt;
  &lt;li&gt;Enrai ⚡️(the reverse proxy server)&lt;/li&gt;
  &lt;li&gt;Hikari 💡(the service for internal DNS resolution)&lt;/li&gt;
  &lt;li&gt;Iwa 🗿(the service that handles ssh into the containers)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that we are done with the architecture, let’s start from the very core itself: How to package? Multiple apps in a single node or one app per node. The former just sends security on a walk, and the latter one brings about a lot of hardware overheads.&lt;/p&gt;

&lt;h4 id=&quot;hre-cometh-docker&quot;&gt;H’re cometh Docker…&lt;/h4&gt;
&lt;p&gt;Docker is a service that deploys containers. Containers are a sort of OS-level virtualization. Docker comes with a plethora of configuration options, from limiting the allocation of CPU and Memory resources to managing security levels, and much, much more. It was a perfect solution to our problem; containers have a low resource overhead and implement isolation for configuration files and dependencies.&lt;/p&gt;

&lt;div style=&quot;display:flex;justify-content:center;&quot;&gt;
  &lt;p&gt;&lt;img src=&quot;/images/posts/gasper-part-1/docker.jpg&quot; alt=&quot;Docker&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;With docker containerization at its core, apps now can be packaged and built.&lt;/p&gt;

&lt;h2 id=&quot;alright-lets-deploy-shall-we&quot;&gt;Alright let’s deploy, shall we?&lt;/h2&gt;
&lt;p&gt;The generic pipeline that Gasper follows for app deployment is as follows:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Download the application source code&lt;/li&gt;
  &lt;li&gt;Mount this source code as a volume for the container&lt;/li&gt;
  &lt;li&gt;Bind the ports of the host and the container&lt;/li&gt;
  &lt;li&gt;Start the docker container with this configuration&lt;/li&gt;
  &lt;li&gt;Install the dependencies&lt;/li&gt;
  &lt;li&gt;Fire up the application&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And hola, your application is live!&lt;/p&gt;

&lt;p&gt;Generally these build instructions are mentioned in a Dockerfile, which is quite robust per se.
But we wanted to get rid of that nasty Dockerfile and the docker-compose heavy lifting, right? Let’s automate this pipeline.&lt;/p&gt;

&lt;p&gt;Golang’s Docker Engine library was enough to handle steps 2 through 6. Gasper has two separate microservices, &lt;strong&gt;Mizu&lt;/strong&gt; and &lt;strong&gt;Kaen&lt;/strong&gt;, to manage the stepwise deployment of apps and databases respectively using these library functions. More details on them are in the next blog.&lt;/p&gt;

&lt;p&gt;However, the whole process initially took a whopping 15s, even for simple boilerplate apps. We needed to optimize that.&lt;/p&gt;

&lt;h4 id=&quot;go-go-go-making-thy-wrk-easy&quot;&gt;Go, go, go… making thy w’rk easy&lt;/h4&gt;

&lt;p&gt;Go, besides the fact that it came from Google, is famous for its efficient realization of concurrency using &lt;a href=&quot;https://golangbot.com/goroutines/&quot;&gt;Goroutines&lt;/a&gt;. And there it was, we took the two slowest processes, steps 1 and 4, and put them in goroutines. The deployment times came down from ~15s to ~5.5s. Further optimizations pulled it down to 1.5s. Phew! That was fast.&lt;/p&gt;

&lt;h2 id=&quot;the-final-take&quot;&gt;The final take:&lt;/h2&gt;

&lt;p&gt;The next we have &lt;strong&gt;Enrai&lt;/strong&gt;, the reverse proxy server. Among all the services, only Enrai is given a public IP and the rest of the apps are proxied through it. Laying it down simply, it is &lt;em&gt;a server that receives requests from clients and forwards them to the respective instances&lt;/em&gt; (containers in our case). &lt;br /&gt;
Gasper boasts an internal DNS resolution service, too, &lt;strong&gt;Hikari&lt;/strong&gt;. It allots domain names to the apps and databases and maintains the DNS records, ensuring an even distribution.\&lt;/p&gt;

&lt;p&gt;A lot things coming up altogether? This diagram might ease out things:&lt;/p&gt;
&lt;div style=&quot;display:flex;justify-content:center;&quot;&gt;
  &lt;p&gt;&lt;img src=&quot;/images/posts/gasper-part-1/request-proxy.png&quot; alt=&quot;request_proxy&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;For those who prefer a hands-on deployment experience, Gasper provides SSH into the containers along with a virtual terminal for ease. Iwa plays its role here.&lt;/p&gt;

&lt;p&gt;This marks the end of the deployment journey. The user is always able to restart/rebuild the app in case of failure, and there’s always SSH if they want to get their hands dirty 💪.&lt;/p&gt;

&lt;div style=&quot;display:flex;justify-content:center;&quot;&gt;
  &lt;p&gt;&lt;img src=&quot;/images/posts/gasper-part-1/work_done.jpg&quot; alt=&quot;work_done&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Part 2 of the series deals with the internal working of the services. In Part 3, we will discuss how we acquired logs and metrics, and how it actually builds your cloud with intelligent load distribution.&lt;/p&gt;

&lt;p&gt;You can find the project here: &lt;a href=&quot;https://github.com/sdslabs/gasper&quot;&gt;github.com/sdslabs/gasper&lt;/a&gt;. If you happen to like it, a star on the repository is always welcome 😛.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>SDSLabs Recruitment Drive 2020</title>
      <link>https://blog.sdslabs.co/2019/12/recruitment-drive-2019</link>
      <pubDate>Sat, 14 Dec 2019 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2019/12/recruitment-drive-2019</guid>
      <description>&lt;p&gt;We recruit students every year during the winters and select the best minds from the IITR Junta to join our venture for leading the technological innovation in the IIT Roorkee campus.&lt;/p&gt;

&lt;p&gt;We are open to all years of students of IITR to apply in our recruitment drive. However, the majority of our recruits are in their 1st year of study.&lt;/p&gt;

&lt;h1 id=&quot;recruitment-process&quot;&gt;Recruitment Process&lt;/h1&gt;

&lt;p&gt;We provide you with five different methods of landing an interview at SDSLabs during the Recruitment Drive. These methods are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Being amongst the teams at the SDSLabs’ Syntax Error Hackathon 2019&lt;/li&gt;
  &lt;li&gt;Completing SDSLabs’ Winter of Code 2019&lt;/li&gt;
  &lt;li&gt;Completing SDSlabs’ Makers 2020&lt;/li&gt;
  &lt;li&gt;Placing top at any of our competitions mentioned below&lt;/li&gt;
  &lt;li&gt;Placing amongst the top students in SDS’ Recruitment Test and Design problem statement submissions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;syntax-error&quot;&gt;Syntax Error&lt;/h2&gt;

&lt;p&gt;We call students for an interview who placed in the top 2 first-year-only teams and the top second-year-only team at Syntax Error.&lt;/p&gt;

&lt;p&gt;Since the hackathon winners have already been announced, the respective teams will be called during the interview process.&lt;/p&gt;

&lt;h2 id=&quot;winter-of-code-2019&quot;&gt;Winter of Code 2019&lt;/h2&gt;

&lt;p&gt;Students who were selected for SDSLabs’ Winter of Code 2019 and were able to pass all their evaluations successfully will be invited for an interview at SDSLabs during the interview process.&lt;/p&gt;

&lt;h2 id=&quot;makers-2020&quot;&gt;Makers 2020&lt;/h2&gt;

&lt;p&gt;Students who developed on a project idea released during Makers 2020 or developed on their own project idea of a similar caliber will be invited for an interview at SDSLabs during the interview process.&lt;/p&gt;

&lt;h2 id=&quot;competitions&quot;&gt;Competitions&lt;/h2&gt;

&lt;p&gt;SDS organizes a variety of competitions for the 1st year junta at IIT Roorkee during the winters. We like to call the Top 2 students from each of these competitions for an interview:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;NoobCTF
    &lt;ul&gt;
      &lt;li&gt;Capture the flag competition&lt;/li&gt;
      &lt;li&gt;Hosted at &lt;a href=&quot;backdoor.sdslabs.co&quot;&gt;Backdoor&lt;/a&gt; with InfoSec IITR&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Beginner’s Hypothesis
    &lt;ul&gt;
      &lt;li&gt;Data Science competition&lt;/li&gt;
      &lt;li&gt;Hosted at &lt;a href=&quot;cerebro.sdslabs.co&quot;&gt;Cerebro&lt;/a&gt; with DSG IITR&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Algophobic
    &lt;ul&gt;
      &lt;li&gt;Competitive programming competition&lt;/li&gt;
      &lt;li&gt;Hosted at &lt;a href=&quot;codevillage.sdslabs.co&quot;&gt;Codevillage&lt;/a&gt; with PAG IITR&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Endgame
    &lt;ul&gt;
      &lt;li&gt;Mathematical problem-solving competition&lt;/li&gt;
      &lt;li&gt;Hosted at &lt;a href=&quot;erdos.sdslabs.co&quot;&gt;Erdős&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;recruitment-test-and-design-problem-statements&quot;&gt;Recruitment Test and Design Problem statements&lt;/h2&gt;

&lt;p&gt;SDS’ recruitment test has various sections, including logical reasoning, programming, web development (HTML/CSS/JS), and an ad-hoc section to show off your geeky side.&lt;/p&gt;

&lt;p&gt;We invite the top scores from individual sections and the top scorers overall for an interview during the interview process. Needless to say, the evaluation will be done based on your performance in individual sections.&lt;/p&gt;

&lt;p&gt;Design based problem statements will be released a week before the recruitment test takes place to test your skills in various fields of design like UI/UX and graphic design. Design submissions will be considered for recruiting into SDSLabs as a designer.&lt;/p&gt;

&lt;p&gt;Apart from all these methods, we are yearly open to wildcard entries. If you somehow are not able to make it this time, you can reach out to us at contact@sdslabs.co.in with your CV after the recruitment drive.&lt;/p&gt;

&lt;p&gt;We hope we have made the entire recruitment process clear for all the enthusiasts out there. We look forward to seeing you test your skills at our Recruitment Drive this winter.&lt;/p&gt;

&lt;p&gt;Best of luck!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Announcing Rubeus Engine 2.0</title>
      <link>https://blog.sdslabs.co/2019/10/announcing-rubeus-engine-2</link>
      <pubDate>Sun, 13 Oct 2019 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2019/10/announcing-rubeus-engine-2</guid>
      <description>&lt;p&gt;We are excited to announce that the Rubeus Engine that &lt;a href=&quot;https://blog.sdslabs.co/2018/12/making-a-game-engine-from-scratch&quot;&gt;debuted on the 22nd December 2018&lt;/a&gt; has had major improvements since the last edition and we have reached our goal for Rubeus Engine v2.0! Check out &lt;a href=&quot;https://github.com/sdslabs/rubeus&quot;&gt;Rubeus Engine v2.0 on Github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/rubeus/rubeus_light.png&quot; alt=&quot;Rubeus Logo&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;whats-new&quot;&gt;What’s new?&lt;/h1&gt;
&lt;p&gt;All the changes are listed in decreasing order of coolness.&lt;/p&gt;

&lt;h2 id=&quot;new-project-manager&quot;&gt;New Project Manager&lt;/h2&gt;
&lt;p&gt;With Rubeus v2.0, we are introducing a brand new GUI project manager. You can now manage multiple projects using the Rubeus Engine at the same time, and choose which project should be worked on. A much-needed feature is finally here.&lt;/p&gt;

&lt;h2 id=&quot;messaging-system-for-user-code&quot;&gt;Messaging System for User Code&lt;/h2&gt;
&lt;p&gt;We have an exciting new message system ready and integrated into the engine with some default commands already implemented. Users can now expose their own functions as callbacks to user-defined commands, and the engine can call them asynchronously on the user’s demand allowing for much greater gameplay interactions amongst game objects. It provides a great scope for powerful message transfers between the different subsystems of the engine for more complex workflows.&lt;/p&gt;

&lt;h2 id=&quot;application-layer-for-controlled-execution&quot;&gt;Application Layer for Controlled Execution&lt;/h2&gt;
&lt;p&gt;We have introduced a new Application layer to the Rubeus game making procedure. Now all user-defined systems get to live in their own namespaces and have user-defined lifetimes. This allows the user to handle their own resources as and when required and encapsulate the code that talks to the Rubeus Engine from the code that works for their custom systems.&lt;/p&gt;

&lt;h2 id=&quot;z-index-for-2d-colliders&quot;&gt;Z-Index for 2D colliders&lt;/h2&gt;
&lt;p&gt;Colliders can now be separated in different planes to allow for objects in the background to not collide with objects in the foreground. Assigning Z-index values is as simple as providing as a single integer value to every collider as an identifier of its Z-indexed layer.&lt;/p&gt;

&lt;h2 id=&quot;logging-system-for-debugging&quot;&gt;Logging System for Debugging&lt;/h2&gt;
&lt;p&gt;Our new logging system allows the user to either log to the screen with varying degrees of severity levels, namely &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ERROR&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ASSERT&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SUCCESS&lt;/code&gt;. Users can add more severity levels to their liking. What is a bit more exciting is that we now support colored error logging to the console that works on all supported platforms.&lt;/p&gt;

&lt;p&gt;Users also can now log to files in a separate logging directory on their file systems. These logs can be used to allow for effective bug fixing after the game has been distributed to the players, where they can see the logs actively on their screens with a little digging. This helps post-distribution tech-support and in house development.&lt;/p&gt;

&lt;h2 id=&quot;game-object-api-cleanup&quot;&gt;Game Object API Cleanup&lt;/h2&gt;
&lt;p&gt;The game object creation API has been made simpler by allowing for more flexible ways to provide the game objects with their data. We also cleaned up a lot of code at the user side of things to allow for a much less overwhelming interface to the engine.&lt;/p&gt;

&lt;h2 id=&quot;lesser-dependencies--lesser-build-times&quot;&gt;Lesser Dependencies = Lesser Build Times&lt;/h2&gt;
&lt;p&gt;We have dropped our dependency on Vcpkg, the C++ package manager that we were using in v1.0. All dependencies are now distributed with the engine, except for some system libraries that have been mentioned in our &lt;a href=&quot;https://github.com/sdslabs/Rubeus/blob/v2/SETUP.md&quot;&gt;setup procedure&lt;/a&gt;. You might see that our engine build times got reduced almost tenfold and we are glad about it.&lt;/p&gt;

&lt;p&gt;Along with all these new additions, we have done a lot of bug fixes under the hood that help optimize the performance of Rubeus games and allow less open ground for bugs to creep in.&lt;/p&gt;

&lt;p&gt;All the information regarding how to use these systems have been covered in our Wiki page available &lt;a href=&quot;https://github.com/sdslabs/Rubeus/wiki&quot;&gt;here&lt;/a&gt; under relevant Wiki entries.&lt;/p&gt;

&lt;p&gt;Finally, we thank our team for bringing all the new changes and allow for a fast release cycle after v1.0.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>How I learned to stop worrying and start pinging</title>
      <link>https://blog.sdslabs.co/2019/09/status-internal-hackathon</link>
      <pubDate>Mon, 23 Sep 2019 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2019/09/status-internal-hackathon</guid>
      <description>&lt;p&gt;&lt;em&gt;We have regular hackathons to experiment with new fields/technology. We decided to write blogs on any shippable product that we created during the hackathon. This blog is first in the series, where we created an app that creates status pages.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/status/whiteboard.jpg&quot; alt=&quot;Whiteboard&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;h3 id=&quot;what-is-a-status-page&quot;&gt;What is a Status Page?&lt;/h3&gt;

&lt;p&gt;Almost all organizations have a page where you can view the status (or uptime) of their services. For example, this is the SDSLabs Status page: &lt;a href=&quot;https://statusv2.sdslabs.co/&quot;&gt;https://statusv2.sdslabs.co/&lt;/a&gt;. A webpage that displays the uptime/downtime statistics of its services is called a status page.&lt;/p&gt;

&lt;h3 id=&quot;why-do-you-need-it&quot;&gt;Why do you need it?&lt;/h3&gt;

&lt;p&gt;A status page tells you whether an application is up or not. Suppose your Facebook notifications just stopped working. You might start to fiddle with the settings on your phone, but it may be that the Facebook servers that send notifications are down. A status page tells you exactly that. It is also pretty useful for companies too, making them aware of the downtime before a user has a chance to complain.&lt;/p&gt;

&lt;h3 id=&quot;what-did-we-make&quot;&gt;What did we make?&lt;/h3&gt;

&lt;p&gt;We made a web application that creates these status pages. Many others provide the same service, such as Freshping, Apex Ping, and Atlassian Statuspage. However, these services are either paid or provide limited free access. Moreover, there are no open-source alternatives to them. So, we made one on our own (and yes it’s going to be open-source).&lt;/p&gt;

&lt;h2 id=&quot;developing&quot;&gt;Developing&lt;/h2&gt;

&lt;h3 id=&quot;architecture&quot;&gt;Architecture&lt;/h3&gt;

&lt;p&gt;A status page consists of many services where it needs to check whether the service is working or not. However, what do we mean by the phrase “the service is working”? Usually, you ping the host, and if you receive a reply, the host server is up else it’s down. However, ping only tells you if your request can reach the server. The code may or may not function properly. For that, more parameters need to be checked, say, the status code of the response. A “200” status means your page is working fine, but any other status means you need to fix some issues.&lt;/p&gt;

&lt;p&gt;Seeing that there might be so many parameters, we defined an abstraction called a Check. A check consists of the URL of the request, type of request, expected output, and any input sent by the user. For each kind of request, there are a limited number of request types and output types and correspondingly their values.&lt;/p&gt;

&lt;p&gt;A page might contain some (and not all checks created by the user). A user might create multiple pages (each having a different set of checks). A page also needs to display any incidents that happened and if they were fixed or not. The app also has a feature to add collaborators to your page.&lt;/p&gt;

&lt;p&gt;The diagram below illustrates the schema of the Database.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/status/status-schema.png&quot; alt=&quot;Status Schema&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The biggest challenge in making the app was implementing how the checks would work. Since a user can request to check for uptime every 30 seconds, assuming a large scale, it’s unreasonable to expect one server to handle everything correctly. So we wanted the app to be scalable over multiple servers.&lt;/p&gt;

&lt;p&gt;For this, we first thought of deploying a container for every check. We schedule this container in any of the nodes defined by us. Soon, we rejected the idea, given that there can be way too many checks and you cannot have a container dedicated to a check.&lt;/p&gt;

&lt;p&gt;The next solution had a master that assigns checks to workers. The worker schedules the checks. Now, these workers can be scaled horizontally. This architecture was a much better optimization as compared to the previous solution.&lt;/p&gt;

&lt;p&gt;There were some solutions that we thought about optimizing the process of scheduling the checks too, but each of them imposed some limitations on the functionality of the app (like limiting the choices of the interval of sending requests or increasing the minimum interval time after which we can send a request). Sacrificing functionality for the sake of minor optimizations was unacceptable.&lt;/p&gt;

&lt;p&gt;Finally, we needed to manage the lifecycle of the workers. It’s relatively complex when managing containers across multiple nodes (servers). We chose to rely on Kubernetes than reinventing the wheel ourselves. Kubernetes allows you to create custom resource objects. We need to write the code that handles assigning of checks in various workers for multiple events, such as, when adding or removing a worker from the cluster and let Kubernetes handle the rest.&lt;/p&gt;

&lt;p&gt;Due to a limited number of resources, first, we’re going to release a version without the described Kubernetes architecture. For the initial release, we’re aiming at an app which can spawn and manage workers on a single server.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/status/master-worker.png&quot; alt=&quot;Master-Worker&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;tech-stack&quot;&gt;Tech Stack&lt;/h3&gt;

&lt;p&gt;We chose Golang since it’s a compiled language and all my team members were comfortable with writing code in Go. Go being a compiled language was helpful because we could create binaries of agents that would run on worker containers. It’s also much easier to write as compared to C/C++.&lt;/p&gt;

&lt;p&gt;Along with it, we used Docker Containers, and as mentioned above, Kubernetes for managing their lifecycle.&lt;/p&gt;

&lt;p&gt;For storing metrics of the statuses, we needed a time-series database. Struggling between Prometheus and InfluxDB, we found out about TimescaleDB. It’s an extension of PostgreSQL, so anything that works with Postgres works well with Timescale too. There were even more benefits to this since we did not want to write queries specifically for InfluxDB, and Prometheus being a pull-based DB did not fit our needs. With Postgres, we could use a single database for both metrics and meta-data.&lt;/p&gt;

&lt;p&gt;Many people don’t require all this functionality and just the metrics for a few checks. So there’s even a stand-alone mode where you can write a simple YAML file defining properties of checks, and it’ll do the job. Also, integrating with Prometheus was an easy job, so for the stand-alone user can plug in Prometheus too.&lt;/p&gt;

&lt;h2 id=&quot;hackathon&quot;&gt;Hackathon&lt;/h2&gt;

&lt;p&gt;Organizing an internal hackathon turned out to be productive. Usually, the part of the process that takes much time gets completed in a matter of hours. It’s also encouraging to see everyone else around you working with such enthusiasm. It’s exciting to see all the products that others make in the end.&lt;/p&gt;

&lt;p&gt;We had a formal presentation of the work everyone completed in two days. The winner was also awarded a prize from the final year. The best part was this being an internal hackathon, and we could decide the parameters for rating. So, we did include code quality as well as the number of hours spent on working on the project.&lt;/p&gt;

&lt;p&gt;We finished most of the app during the weekend. There’s still some work left to ship the complete product (at least a version that works flawlessly with minimal functionality). You’ll hopefully see it on Github soon :)&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Linux Party experience - Playing with your bootloader for fun and happiness</title>
      <link>https://blog.sdslabs.co/2019/09/linux-party-experience</link>
      <pubDate>Fri, 20 Sep 2019 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2019/09/linux-party-experience</guid>
      <description>&lt;p&gt;For a brief context, SDSLabs conducts an event called “Linux Party” in which our members help the freshers of IIT Roorkee install a Linux distro (mainly Ubuntu) on their systems.&lt;/p&gt;

&lt;h1 id=&quot;the-motivation-behind-this-blog&quot;&gt;The Motivation behind this blog&lt;/h1&gt;

&lt;p&gt;Linux is a whole new world for someone new to it; beginners(and even veterans!) find many intricacies/difficulties which start appearing right from the installation process. After installing linux on a lot of systems and experimenting a lot with ours we thought that it would be a great idea to post all our learnings that may assist someone trying to do it themselves person.&lt;/p&gt;

&lt;p&gt;This writing will be mostly a collection of guides distributed across the internet and our experiences that we felt needed to be interwoven to make the installation experience smoother. Note that this is not an exhaustive guide and you would need to do some Googling along the way. Also, our guide will be specific to Ubuntu but should work for any Debian based distro.&lt;/p&gt;

&lt;h2 id=&quot;how-to-use-this-guide&quot;&gt;How to use this guide?&lt;/h2&gt;

&lt;p&gt;First, give this a light reading. You wouldn’t want to be distracted by theory during the installation process. After skimming through, you should be able to figure out the parts that are relevant to you and follow them while installing.&lt;/p&gt;

&lt;h1 id=&quot;dual-boot-vs-vm&quot;&gt;Dual Boot vs VM&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Why go through all the hassle of dual boot when you can simply run a VM?&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;VMs are resource-intensive, you need to have a beefy computer to have a smooth experience inside a VM&lt;/li&gt;
  &lt;li&gt;On using a laptop this will adversely battery life and hence limit a laptop’s portability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://www.makeuseof.com/tag/dual-boot-vs-virtual-machine/&quot;&gt;Here&lt;/a&gt; is a much more exhaustive list&lt;/p&gt;

&lt;p&gt;Besides, this is also a great opportunity to learn about wacky terms like BIOS, UEFI, EFI tables, Bootloader, etc. that you may or may have not heard.&lt;/p&gt;

&lt;h1 id=&quot;preparing-a-bootable-media&quot;&gt;Preparing a bootable media&lt;/h1&gt;

&lt;p&gt;Ubuntu provides a great guide on how preparing a bootable media &lt;a href=&quot;https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-windows#0&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here we would like to stress on point 4, Boot selection and Partition scheme. We recommend selecting MBR for the partition scheme; though you can give the other options a try, but they require more care during the installation process.&lt;/p&gt;

&lt;h1 id=&quot;understanding-efi-tables-and-custom-partitions&quot;&gt;Understanding EFI tables and custom partitions&lt;/h1&gt;

&lt;p&gt;EFI tables- In layman’s terms, it is a partition(like the C: or D: drive on your windows) which stores ‘bootloaders’ of various OSs present on your system.
‘Bootloaders’ are programs that are responsible for starting up an operating system.
On a Windows laptop, you probably have the Windows Bootloader installed by default on an EFI partition. You can verify this by opening Disk Management from the Start menu.
Remember this bit of information, it will be useful later.&lt;/p&gt;

&lt;p&gt;You may be used to the Windows partition scheme in there are different drives like C:, D:, etc., but Linux uses a different partition scheme.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;/
├── bin
├── boot
├── dev
├── etc
├── home
├── lib
├── lib64
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── snap
├── srv
├── sys
├── tmp
├── usr
├── var
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Linux has a more hierarchical file structure, wherein there are different directories inside a ‘/’(pronounced ‘root’) directory. What you see above is the list of directories that were in my root directory. Instead of having different drives for segregating data, Linux gives a master directory that contains everything. Each directory in the root directory has a specific purpose, and each directory can be mounted on a separate partition akin to Windows partitions. If you don’t allocate separate space for separate directories, they would share root’s allocated space by default.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=HbgzrKJvDRw&quot;&gt;This&lt;/a&gt; is a great video explaining the Linux filesystem in detail. Don’t worry if a lot of things go over your head. For starters, we are only concerned with /, /home and swap.&lt;/p&gt;

&lt;p&gt;/home is where a user’s files are stored(similar to the C:\Users in windows) but you would have to allocate more space than what you might be using in C:\Users because ALL of the user files will be in /home and there would be no other D: or E: drive to store these files&lt;/p&gt;

&lt;p&gt;swap is a ‘virtual RAM’ that is utilised to extend RAM beyond its physical capacity. With swap memory, an 8 GB RAM can ‘store’ much more data than 8 GB, though it would be significantly slower.&lt;/p&gt;

&lt;p&gt;From our experience, a general space ratio of 40:60 between / and /home, and setting swap size to double the size of your RAM is a good composition. If possible, give root more than 20 GB of space apart from the space for /home for smooth operation.&lt;/p&gt;

&lt;h2 id=&quot;the-actual-partitioning&quot;&gt;The actual partitioning&lt;/h2&gt;

&lt;p&gt;There are three cases:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;SSD only or HDD only&lt;/li&gt;
  &lt;li&gt;SSD + HDD&lt;/li&gt;
  &lt;li&gt;Optane + HDD&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now for HDD only laptops, the work is pretty straightforward. Shrink the required memory which you have calculated previously.&lt;/p&gt;

&lt;p&gt;For SSD only laptops the process is the same as HDD only laptops except that you have to shift your SSD from RAID to AHCI using &lt;a href=&quot;https://support.thinkcritical.com/kb/articles/switch-windows-10-from-raid-ide-to-ahci&quot;&gt;this&lt;/a&gt;. Step 5 of the previous link will vary with manufacturer, so explore your BIOS a bit (don’t go on changing any random setting!) and you’ll find the appropriate setting to switch or you can google for “&lt;insert laptop=&quot;&quot; model=&quot;&quot;&gt; RAID to AHCI&quot;.&lt;/insert&gt;&lt;/p&gt;

&lt;p&gt;For SSD + HDD laptops, you would want to minimize stuff on the SSD as it is generally small. In this case, allocate space for / on the SSD(minimal boot time) and /home on the HDD.&lt;/p&gt;

&lt;p&gt;For shrinking your Windows drives follow &lt;a href=&quot;https://www.dummies.com/computers/pcs/how-to-shrink-a-hard-drive-volume-in-windows/&quot;&gt;this guide&lt;/a&gt; for both SSD and HDD&lt;/p&gt;

&lt;p&gt;Optane is rare so first check &lt;a href=&quot;https://www.intel.in/content/www/in/en/support/articles/000023990/memory-and-storage/intel-optane-memory.html&quot;&gt;this&lt;/a&gt; to determine if you have Optane in use in case you are unsure. Installing Ubuntu on Optane is a bit complex so we won’t be going there; use &lt;a href=&quot;https://support.cyberpowerpc.com/hc/en-us/articles/360014775073-How-do-I-disable-Intel-Optane-&quot;&gt;this&lt;/a&gt;(disabling Intel Optane memory with Intel RST is enough, no need disable from BIOS!) and install Ubuntu, but remember to keep an EXTRA 10 MB unallocated space at the END of your HDD which is required by Optane, other than the memory used by Ubuntu. Then use the previous guide to re-enable Optane.&lt;/p&gt;

&lt;p&gt;Use &lt;a href=&quot;https://askubuntu.com/a/521195&quot;&gt;this&lt;/a&gt; to install Ubuntu and configure the partitions according to your needs. “/dev/sd*” type of names refer to HDD and “/dev/nvmp*” refer to SSD.&lt;/p&gt;

&lt;p&gt;In &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Device for boot loader installation&lt;/code&gt; shown in the previous link select your SSD in case you have one or your HDD if you don’t.&lt;/p&gt;

&lt;h1 id=&quot;grub&quot;&gt;GRUB&lt;/h1&gt;

&lt;p&gt;Remember the talk about bootloaders? Now GRUB is your new bootloader. Upon booting up your PC, you should now be greeted with a black or magenta screen with white text in a not-so-appealing font. Here is where you can select your OS using arrow keys.&lt;/p&gt;

&lt;p&gt;In case GRUB is now showing up and you are directly booting into an OS(which should not happen if you followed the instructions), the issue can be subjective and your best bet would be to do google searches describing what is happening and you should find a solution(trust us, we’ve been there too). You can also reach out to us &lt;a href=&quot;https://chat.sdslabs.co&quot;&gt;here&lt;/a&gt; and we would love to help!&lt;/p&gt;

&lt;h1 id=&quot;graphics-driver-errors&quot;&gt;Graphics Driver Errors&lt;/h1&gt;

&lt;p&gt;This is the main issue with most of the laptops that get ubuntu newly installed. A variety of errors are reported in this category.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Black screen on login&lt;/li&gt;
  &lt;li&gt;ACPI errors after GRUB&lt;/li&gt;
  &lt;li&gt;Corrupted display
and many more…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is mainly due to Nvidia graphics cards being present on a system and the need to manually install their drivers.
If you face this issue (or miraculously don’t while owning an Nvidia graphics card), follow &lt;a href=&quot;https://itsfoss.com/fix-ubuntu-freezing/&quot;&gt;this&lt;/a&gt;(follow step 1, then step 3, and then undo step 1)
Another error that you may encounter is that of Windows entry not showing up in GRUB. A variety of solutions are available &lt;a href=&quot;https://askubuntu.com/questions/197868/grub-does-not-detect-windows&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To avoid this problem, you may install some OS that provides you graphics drivers pre-installed. We recommend &lt;a href=&quot;https://system76.com/pop&quot;&gt;Pop!_OS&lt;/a&gt; if you are interested in such an OS. It is based on Ubuntu, so all terminal interactions remain the same.&lt;/p&gt;

&lt;h1 id=&quot;issues-after-installing-ubuntu&quot;&gt;Issues after installing Ubuntu&lt;/h1&gt;

&lt;h2 id=&quot;touchpad-dysfunctional&quot;&gt;Touchpad dysfunctional&lt;/h2&gt;

&lt;p&gt;Mostly a drivers issue, Run this on your terminal-
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo apt-get install xserver-xorg-input-synaptics&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;internal-speakers-dysfunctional&quot;&gt;Internal Speakers dysfunctional&lt;/h2&gt;

&lt;p&gt;Run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;alsamixer&lt;/code&gt; in your terminal and using left/right and up/down keys raise all bars to max.
Internal speakers generally do not perform to their maximum ability on Ubuntu but external speakers/headphones work fine.&lt;/p&gt;

&lt;h1 id=&quot;further-exploration&quot;&gt;Further Exploration?&lt;/h1&gt;

&lt;p&gt;So you have everything set up and want to know more about the world of this amazing piece of open-source software?&lt;/p&gt;

&lt;p&gt;Then check these out-&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://itsfoss.com/best-linux-desktop-environments/&quot;&gt;Desktop Environments&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://itsfoss.com/best-linux-distributions/&quot;&gt;Hot Distros&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.howtogeek.com/117939/htg-explains-what-everything-is-a-file-means-on-linux/&quot;&gt;Everything is a file!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.makeuseof.com/tag/most-used-linux-terminal-commands/&quot;&gt;Terminal Commands&lt;/a&gt; Don’t go on memorising these, just know that they exist and you’ll learn them over time&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tecmint.com/learn-nano-text-editor-in-linux/&quot;&gt;Nano Text Editor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://scotch.io/tutorials/getting-started-with-vim-an-interactive-guide&quot;&gt;Vim text Editor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://overthewire.org/wargames/bandit/&quot;&gt;Practice and learn command-line skills&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Rolling Out Your Own Game Engine and Beyond</title>
      <link>https://blog.sdslabs.co/2019/06/rolling-out-your-own-game-engine</link>
      <pubDate>Thu, 20 Jun 2019 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2019/06/rolling-out-your-own-game-engine</guid>
      <description>&lt;p&gt;The Rubeus Game Engine was released by SDSLabs on 22nd December 2018 with the vision to introduce the programmers of IIT Roorkee to game development and design. We received a ton of support with this release even from game development communities outside of R-land.&lt;/p&gt;

&lt;p&gt;We saw multiple release threads pop up on &lt;a href=&quot;https://news.ycombinator.com&quot;&gt;HN&lt;/a&gt; and &lt;a href=&quot;https://www.reddit.com/r/gamedev/&quot;&gt;r/Gamedev&lt;/a&gt; which attracted people from the industry to review the codebase and constructively critic on the project. We are very happy with the general reception and in this blog, we want to discuss where we are trying to take Rubeus in the future.&lt;/p&gt;

&lt;p&gt;It has been around 6 months since we released Rubeus, an in-house implementation of a beginner friendly game engine in C++. We have talked about our process in &lt;a href=&quot;https://blog.sdslabs.co/2018/12/making-a-game-engine-from-scratch&quot;&gt;another blog entry&lt;/a&gt;. Check it out if you are interested in something like that.&lt;/p&gt;

&lt;h1 id=&quot;the-motivation-behind-making-rubeus&quot;&gt;The Motivation behind making Rubeus&lt;/h1&gt;

&lt;p&gt;We made Rubeus with an objective to help a beginner learn how games are made. Every 90s child who has been exposed to games at an early age has a dream to make video games someday or they at least have wanted to make a game at some point of time in the future.&lt;/p&gt;

&lt;p&gt;We believe that one cannot understand something properly until they are able to explain it to a three-year-old. Brightly said by Einstein, it motivated us to have a try at making a game engine for satisfying the curiosity of not only us but also the beginner game developers out in the programming world.&lt;/p&gt;

&lt;h1 id=&quot;what-one-should-do-with-a-game-engine&quot;&gt;What one should do with a game engine?&lt;/h1&gt;

&lt;p&gt;Obviously: Make games.&lt;/p&gt;

&lt;p&gt;We made some small clones of some very basic games on Rubeus like Ping-Pong and Breaker. The Rubeus workflow we had developed was perfect for such prototypes. But we didn’t want to stop there.&lt;/p&gt;

&lt;p&gt;We started to implement some advanced features in Rubeus like a multithreaded console, message-based communication between its sub-systems, a GUI for debugging and project management, an application layer that allows more control over the startup of the application, fixed countless bugs in Awerere which is the physics engine that we implemented by hand for Rubeus and other systems in the engine. However, very soon we realised that what we were trying to achieve with Rubeus was unrealistic indeed and we needed major changes in the current architecture.&lt;/p&gt;

&lt;h1 id=&quot;the-future-of-rubeus&quot;&gt;The Future of Rubeus&lt;/h1&gt;

&lt;p&gt;We are still going to maintain Rubeus and it will still remain our solution to introducing beginners to game development. We plan to keep introducing new features to the engine and make them as accessible as possible to people who are still at the learning stage.&lt;/p&gt;

&lt;p&gt;For the version 2.0 release, we have a &lt;a href=&quot;https://github.com/sdslabs/Rubeus/projects/1&quot;&gt;Github Project tracking all progress here&lt;/a&gt;. We have listed all the upcoming features and bug fixes as issues.&lt;/p&gt;

&lt;p&gt;Join the &lt;a href=&quot;https://discord.gg/Cva2VFQ&quot;&gt;Rubeus Engine Discord server&lt;/a&gt; if you’d like to discuss Rubeus’ development/usage with us.&lt;/p&gt;

&lt;h1 id=&quot;the-shortcomings-of-rubeus&quot;&gt;The Shortcomings of Rubeus&lt;/h1&gt;

&lt;p&gt;As much as we are proud of Rubeus, we accept that it has some architectural and enhancement issues due to partial oversimplification of concepts for making them accessible to our beginner audience.&lt;/p&gt;

&lt;h2 id=&quot;what-we-are-proud-of-in-rubeus&quot;&gt;What we are proud of in Rubeus&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Cross-platform nature of Rubeus&lt;/li&gt;
  &lt;li&gt;High performance of in-built physics and rendering engines&lt;/li&gt;
  &lt;li&gt;Non-intrusive design&lt;/li&gt;
  &lt;li&gt;Use of custom tools like ImGUIs for debugging and &lt;a href=&quot;https://github.com/sdslabs/broCLI&quot;&gt;broCLI&lt;/a&gt; for project management&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://blog.sdslabs.co/Rubeus-Docs&quot;&gt;Complete documentation&lt;/a&gt; and &lt;a href=&quot;https://github.com/sdslabs/Rubeus/wiki&quot;&gt;public user guides&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;what-we-are-not-proud-of-in-rubeus&quot;&gt;What we are not proud of in Rubeus&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;High amounts of mechanical exposure to the user to facilitate learning&lt;/li&gt;
  &lt;li&gt;Closely bounded architecture with a lot of coupling with similar systems&lt;/li&gt;
  &lt;li&gt;2D only physics and rendering engine&lt;/li&gt;
  &lt;li&gt;Inflexibility in terms of customizability (for example, custom shaders are not allowed)&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;introducing-a-newer-more-advanced-interactive-simulation-engine&quot;&gt;Introducing a newer, more advanced interactive simulation engine&lt;/h1&gt;

&lt;p&gt;We are very excited to kickstart a new publicly developing project, code-named as the ‘Rootex’ project.&lt;/p&gt;

&lt;p&gt;We aim Rootex to be an interactive 3D simulation engine which will power an upcoming project yet to be announced. We are not calling it a game engine anymore, instead, we are targeting it to cater to a specific kind of simulation development with user interaction built into the application. It is currently in active development and a release date will be announced soon.&lt;/p&gt;

&lt;h2 id=&quot;why-is-making-a-custom-engine-still-a-viable-choice&quot;&gt;Why is making a custom engine still a viable choice?&lt;/h2&gt;

&lt;p&gt;Customized engines are better suited for cases when either your idea is too wild for any generic game engine to handle, or you want to just learn engine development by the hardest way possible. We lie in the middle of that spectrum.&lt;/p&gt;

&lt;p&gt;We are actively looking for collaborating with other groups operating in IIT Roorkee that might want to join in this project with designing the game mechanics and game design aspects of this project.&lt;/p&gt;

&lt;h2 id=&quot;why-not-use-rubeus-instead&quot;&gt;Why not use Rubeus instead?&lt;/h2&gt;

&lt;p&gt;As mentioned above, we want the newer framework to be more robust, more flexible in terms of customizability and functionality and just cater to the specific project instead of a wide range of genres. We believe it makes the engine more focused to solving a problem and gives us more performance to work with. Our argument can be compared to when you require a Swiss knife instead of a butter knife made for children.&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Final recruitment list For 1st year (2019)</title>
      <link>https://blog.sdslabs.co/2019/01/recruitment-final-list-19</link>
      <pubDate>Sun, 20 Jan 2019 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2019/01/recruitment-final-list-19</guid>
      <description>&lt;p&gt;We interviewed 90 people before releasing the final list of selected people.
It was a really tough job to filter down from the talented applicants to the
final list. Sadly, we have limited vacancies and can only take in a limited
number. But this is not the end of line for others, there’s still a way to
&lt;a href=&quot;/2014/01/how-to-join-sdslabs&quot;&gt;join SDSLabs&lt;/a&gt;. We’ll continue taking open
lectures on variety of topics. Stay connected with us on our Facebook
&lt;a href=&quot;https://facebook.com/sdslabs&quot;&gt;page&lt;/a&gt; for the updates regarding this.&lt;/p&gt;

&lt;h2 id=&quot;programmers&quot;&gt;Programmers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Adrij Shikhar &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CH&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Aniket Kumar &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CH&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Ashutosh Bhushan Bharambe &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ECE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Ayan Chaudhary &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;EE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Ishita Kaul &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ECE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Karanpreet Singh &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Leshna Balara &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Manas Chaudhary &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ME&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Nupur Agrawal &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;MSM&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Shubham Gupta &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Subham Sahoo &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;EPH&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Shubhang Tripathi &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;designers&quot;&gt;Designers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Parth Bahuguna &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;MSP&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Prakhar Kothari &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;AR&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Shivam Maan &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;MSM&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Yash Choudhary &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;MT&lt;/em&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
&lt;p&gt;Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Winter of Code 2018 Results</title>
      <link>https://blog.sdslabs.co/2019/01/winter-of-code-2018</link>
      <pubDate>Thu, 03 Jan 2019 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2019/01/winter-of-code-2018</guid>
      <description>&lt;p&gt;Winter of Code (WOC) was a month long program organized in IIT Roorkee for the third time by &lt;em&gt;SDSLabs&lt;/em&gt; to improve the open source exposure in campus and help first yearites get a taste of open source community with a &lt;em&gt;GSoC&lt;/em&gt; like timeline.&lt;/p&gt;

&lt;p&gt;We got a great response from IITR Junta. &lt;em&gt;Cheers to all!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;From a staggering 100 submissions, 14 were chosen to continue their projects under the mentorship of SDSLabs members (GSoCers themselves). It was a great experience for us to mentor such an enthusiastic crowd. Their dedication, hard work and passion makes us believe that they have a bright future in this field.&lt;/p&gt;

&lt;p&gt;After a hectic 30 days of coding and 5 days of rigorous evaluation, we hereby present the list of students who have successfully passed the final evaluation:&lt;/p&gt;

&lt;h3 id=&quot;developers&quot;&gt;Developers&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Abhik Chakraborty &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Adrij Shikhar &lt;em&gt;(Polymer)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Aniket Kumar &lt;em&gt;(Chemical)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Bismita Guha &lt;em&gt;(Metallurgy)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Harshit Verma &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Rochisha Agarwal &lt;em&gt;(EPH)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Shourya Shukla &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Utkarsh &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;designers&quot;&gt;Designers&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Lakshya Singh &lt;em&gt;(MSM)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Niharika Agrawal &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Yash Choudhary &lt;em&gt;(Metallurgy)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Abhik Chakraborty&lt;/strong&gt;, &lt;strong&gt;Adrij Shikhar&lt;/strong&gt;, &lt;strong&gt;Aniket Kumar&lt;/strong&gt;, &lt;strong&gt;Harshit Verma&lt;/strong&gt;, &lt;strong&gt;Lakshya Singh&lt;/strong&gt;, &lt;strong&gt;Utkarsh&lt;/strong&gt; and &lt;strong&gt;Yash Choudhary&lt;/strong&gt; will get a direct invite to the interview round of SDSLabs recruitment although we encourage them to also give the recruitment test to gain a little extra edge.&lt;/p&gt;

&lt;p&gt;For those who didn’t get the direct invite, do not worry. Your performance in WOC will be considered during the selection procedure. All you have to do is give your best in the recruitment test :)&lt;/p&gt;

&lt;p&gt;We wish all of you the very best for your future endeavors.
Happy Coding!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>To Organise is to Design</title>
      <link>https://blog.sdslabs.co/2018/12/to-organise-is-to-design</link>
      <pubDate>Sun, 30 Dec 2018 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2018/12/to-organise-is-to-design</guid>
      <description>&lt;p&gt;&lt;img src=&quot;/images/posts/syntax-error-2018/syntax-error.jpg&quot; alt=&quot;Syntax Error&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;what-is-syntax-error&quot;&gt;What is Syntax Error&lt;/h1&gt;

&lt;p&gt;We at &lt;a href=&quot;https://sdslabs.co/&quot;&gt;SDSLabs&lt;/a&gt; (Software Development Section Laboratories), a student-run technical group of IIT Roorkee, constantly try to promote innovation and foster technical activities in the campus.&lt;/p&gt;

&lt;p&gt;Syntax Error is one step towards this. It’s a campus level hackathon where students come up in teams and work together to build some amazing applications from scratch. It’s 60-hours all about coding, coffee, designing, brainstorming, snacks and finally presenting the output.&lt;/p&gt;

&lt;p&gt;The main aim of this event is to indulge the freshers and tech enthusiasts of the campus to work together and learn from each other.&lt;/p&gt;

&lt;h1 id=&quot;organising-the-event&quot;&gt;Organising the event&lt;/h1&gt;

&lt;p&gt;As the organisers of this hackathon, our focus was to get more and more enthusiastic people to participate. In the course of the event, we had to ensure the following things were performed smoothly:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Promoting the event on the campus to generate more and more awareness among the people.&lt;/li&gt;
  &lt;li&gt;Conveying general information regarding the hackathon like prizes to be won, who can participate, how to form teams, etc.&lt;/li&gt;
  &lt;li&gt;Providing a platform to register in teams.&lt;/li&gt;
  &lt;li&gt;Conducting the hackathon and keeping the participants charged up by a dose of snacks, coffee and most importantly guiding them as they work.&lt;/li&gt;
  &lt;li&gt;Announcing the results and giving away prizes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;the-design-part&quot;&gt;The Design Part&lt;/h1&gt;

&lt;p&gt;In the previous versions of Syntax Error, held in the past years, Facebook posts were used to promote and convey the information. For registration, an online form was used. Everything went according to the plans but there was something that we missed. Each step was existing good on its own, but what we lacked was a unified approach.&lt;/p&gt;

&lt;p&gt;This time, we were planning to go bigger by including sponsored prizes as well. This was the right time where we could create a visual language to carry everything together. What we needed was promoting Syntax Error using a brand identity.&lt;/p&gt;

&lt;h1 id=&quot;branding&quot;&gt;Branding&lt;/h1&gt;

&lt;p&gt;Branding is the art and science of defining and differentiating yourself to the public. A brand identity is not just about pretty design elements. The more important thing is conveying the values associated with it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Branding is what sticks in your mind associated with a product, service, or organisation.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It was important to know what we were trying to convey through this brand identity. The values chosen would be helpful to stick the brand components along a direction.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Spark of creativity&lt;/li&gt;
  &lt;li&gt;Enthusiasm&lt;/li&gt;
  &lt;li&gt;Promoting teamwork&lt;/li&gt;
  &lt;li&gt;Learning by doing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The branding included the following components, together building up a system which was aligned with the values chosen.&lt;/p&gt;

&lt;h1 id=&quot;colors&quot;&gt;Colors&lt;/h1&gt;

&lt;p&gt;Orange was chosen as the primary color as it best represents creativity and enthusiasm. It was toned more towards the yellow shade as it gives a sense of togetherness or teamwork.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntax-error-2018/color.png&quot; alt=&quot;Colors&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;logo&quot;&gt;Logo&lt;/h1&gt;

&lt;blockquote&gt;
  &lt;p&gt;Brand is like a human being and logo is like the uniform it wears!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The logo is the most important part of a brand identity. It is like a face to the system we are building.&lt;/p&gt;

&lt;p&gt;We derived the basic concept of the logo from the previous version and molded it according to our brand identity.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntax-error-2018/syntax-error-gif.gif&quot; alt=&quot;Logo&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;typography&quot;&gt;Typography&lt;/h1&gt;

&lt;p&gt;To impose a creative feel rather than a formal one, &lt;strong&gt;Montserrat&lt;/strong&gt; was used as the major font throughout the brand elements. It creates a majestic yet fun look and evokes a modernist style.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntax-error-2018/font.jpeg&quot; alt=&quot;font&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;illustrations&quot;&gt;Illustrations&lt;/h1&gt;

&lt;p&gt;The illustration style consisted of simple shaped elements with an emphasis on the brand colors. Stroked outlines and spilled fill colors convey innovative thinking and experimental approach to doing.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntax-error-2018/illustrations.png&quot; alt=&quot;Illustrations&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;posters-invitations-certificates&quot;&gt;Posters, Invitations, Certificates&lt;/h1&gt;

&lt;p&gt;Promotion posters on social media, certificates for winners and invitations for professors and judges were designed such that they all formed a relationship that they belonged to Syntax Error.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntax-error-2018/posters.jpeg&quot; alt=&quot;Posters&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;the-landing-page&quot;&gt;The Landing Page&lt;/h1&gt;

&lt;p&gt;We followed an approach of connecting the landing page to the promotion campaign. We ensured that everything on the page conveyed the same message and gave the same feel as defined by our brand values. In doing so, users feel comfortable that they have reached the right place.&lt;/p&gt;

&lt;p&gt;The conversion goal of the landing page was to make people register for the hackathon while also conveying the must-know and nice-to-know information regarding the event.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntax-error-2018/landing.gif&quot; alt=&quot;[Landing]&quot; /&gt;&lt;/p&gt;
&lt;h6 id=&quot;source-dribble&quot;&gt;Source: &lt;a href=&quot;https://dribbble.com/shots/5368139-Syntax-Error-IIT-Roorkee-Hackathon-Website-Design&quot;&gt;Dribble&lt;/a&gt;&lt;/h6&gt;

&lt;p&gt;Upon clicking the CTA, the user is directed to fill the form of registration.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntax-error-2018/cta.png&quot; alt=&quot;CTA&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A confirmation mail is sent after she finishes the registration.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntax-error-2018/confirmation.png&quot; alt=&quot;Confirmation&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The website was made responsive to work nicely on mobile devices as a majority of users would be using a mobile phone to visit the page.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntax-error-2018/mobile.gif&quot; alt=&quot;mobile&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;how-it-went&quot;&gt;How it went&lt;/h1&gt;

&lt;p&gt;The hackathon saw huge participation of students with over &lt;strong&gt;100 teams registering&lt;/strong&gt;. People worked on several technologies like machine learning, game development, information security etc. and built some amazing applications in the 60-hour sprint. We saw a great involvement of freshers who were enthusiastic and willing to learn.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntax-error-2018/teams.jpeg&quot; alt=&quot;Teams&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Altogether, the hackathon was a great success. Receiving prizes was surely a great motivation for the winners and for others, they took an awesome learning experience with them.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>How SDSLabs works - 2018</title>
      <link>https://blog.sdslabs.co/2018/12/how-sdslabs-works</link>
      <pubDate>Fri, 28 Dec 2018 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2018/12/how-sdslabs-works</guid>
      <description>&lt;p&gt;SDSLabs is roughly run as two cells (programming/design) that collaborate with each other on everything. This blog post will take a look at the various tools, technologies, and applications that we use on a daily basis. It is our hope that some other groups in the campus might be interested in this. We’re open to the inquiry about any of this, and you can reach us anytime at &lt;a href=&quot;https://chat.sdslabs.co/&quot;&gt;chat.sdslabs.co&lt;/a&gt; or &lt;a href=&quot;mailto:contact@sdslabs.co.in&quot;&gt;contact@sdslabs.co.in&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mailing List&lt;/strong&gt;: Our mailing list, like most other groups’, runs on Google Groups. All notifications regarding discussion of projects or general meetings are sent over the mailing list. We didn’t want to disturb our alumni over our regular meetings, so we now have separate groups for current members and the alumni.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/labs-work/list.png&quot; alt=&quot;Mailing List&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Facebook Group&lt;/strong&gt;: Like everyone else, we too have a private Facebook group too. Unlike most other groups, we hardly ever use it. We find the Facebook notification system terrible, and the comments system broken for serious discussion. Hence we limit discussion on Facebook to bakar (random chit-chat) and taking jibes at each other. We also keep a document with our internal lingo here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Slack&lt;/strong&gt;: As a software development team, having around 50 members who work on various projects, a central communication platform is a must. This is our primary means of communication. Every member is aware of the discussion going on on every project and thus can give inputs which are equally valued. We are completely transparent regarding our working, and encourage everyone to communicate only in public channels. As a student group, it is not feasible for us to pay the hefty monthly fees for Slack premium, but the free version has almost all the features we need, be it the option to add a number of integrations, or infinite members.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hubot&lt;/strong&gt;: We built ourselves a bot around &lt;a href=&quot;https://hubot.github.com/&quot;&gt;hubot&lt;/a&gt;, written on &lt;a href=&quot;https://coffeescript.org/&quot;&gt;CoffeeScript&lt;/a&gt; and hosted on &lt;a href=&quot;https://www.heroku.com/&quot;&gt;Heroku&lt;/a&gt;, to serve our daily needs: plus-plus (a positive reinforcement for doing something great, and a primary driver of work in Labs), keeping track of embarrassing aliases, information about any member, knowing which people are in lab at any moment, and much more. Recently, we added a score counter for the number of messages sent by every member in a week to encourage members to interact on a daily basis. The one with the highest gets a plus-plus. The bot is highly customizable, and only a script file needs to be added for a new feature.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/labs-work/plusplus.png&quot; alt=&quot;Plus Plus&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/labs-work/info.png&quot; alt=&quot;Bot info&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/labs-work/most.png&quot; alt=&quot;Most messages&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Presence&lt;/strong&gt;: It is a tool that is primarily aimed at increasing people’s presence in Labs. We maintain a competitive board wherein we keep the score as the number of hours spent by a person in the lab. It also helps our bot determine who all are present in the lab at any given moment (we also have a spycam, just in case). It works by identifying users based on the &lt;a href=&quot;https://en.wikipedia.org/wiki/MAC_address&quot;&gt;mac addresses&lt;/a&gt; of their devices which are requested using a &lt;a href=&quot;https://linux.die.net/man/1/arp-scan&quot;&gt;arp scan&lt;/a&gt;. A script is used which logins on our TP-Link router’s portal and fetches the mac addresses and for other router’s since they can not provide mac addresses of connected devices natively, we had to patch the router firmware in order to do so. This mac address scans is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Cron&quot;&gt;cron&lt;/a&gt; which runs every minute. And every five minutes, the leaderboard is updated. As for the spycam, we have another cron job set up which takes pictures of the lab every 15 mins, or whenever requested by the bot at any time.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/labs-work/presence.png&quot; alt=&quot;Presence&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Watchdog&lt;/strong&gt;: Managing people’s access to servers was one hell of a job. Asking for their public key, copying it over to the server, and deleting it when access needed to be revoked. So, we built ourselves a little (yet powerful) tool to ease the process. Whenever someone tries to log in to a server, Watchdog checks a repository for whether that person has access to that particular user on that particular server, and denies or grants access based on that. Anyone seeking access to a server needs to open a pull request on that repository, and access is granted after it is approved and merged. A simple commit is all we need to grant or revoke access. We also added extra feature of keeping track of who is accessing what and at which level of privilege, and all that information is posted by a bot on a channel on our slack. So, it is out in open for everyone what everyone is up to. The whole idea of watchdog is based on how linux uses &lt;a href=&quot;https://en.wikipedia.org/wiki/Linux_PAM&quot;&gt;PAM&lt;/a&gt; modules for authentication purposes. We built our custom modules and added them to predefined &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;su&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sshd&lt;/code&gt; modules.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/labs-work/watchdog.png&quot; alt=&quot;Watchdog&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dropbox&lt;/strong&gt;: Our designers primarily share their work through Dropbox. All our designs, past and present are stored in Dropbox. We also use it to share documents. A new Facebook feature for Dropbox sharing within Facebook groups was actually a great boon for us as we use both products together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github&lt;/strong&gt;: We host all our repositories on Github. We have unlimited private repositories, and though we encourage open source, we prefer to keep some of our applications private. We extensively use Github features, such as issue labeling, milestones, and projects, to keep track of work needed for a project to be shipped on time and with perfection. We go by one rule &lt;strong&gt;master should always be deployable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/labs-work/github.png&quot; alt=&quot;GitHub&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trello&lt;/strong&gt;: We use trello boards for keeping track of the current status of a project. Since we started using this we have experienced a great acceleration towards the completion of our projects.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/labs-work/trello.png&quot; alt=&quot;Trello&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Workflowy&lt;/strong&gt;: We use a custom account at &lt;a href=&quot;https://workflowy.com/&quot;&gt;Workflowy&lt;/a&gt; with a shared list to easily manage lots of things. We find that the list system of workflowy is an excellent place to chalk out ideas and hold brainstorming sessions in writing. Workflowy keeps track of most of our administration related stuff, with tenders, management contacts, and events of various subgroups, etc. being stored there. A daily log of our changes on workflowy is forwarded to our google-group so everyone is kept in the loop about any changes made there.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/workflowy.jpg&quot; alt=&quot;Workflowy Home Page&quot; /&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Making a game engine from scratch</title>
      <link>https://blog.sdslabs.co/2018/12/making-a-game-engine-from-scratch</link>
      <pubDate>Sat, 22 Dec 2018 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2018/12/making-a-game-engine-from-scratch</guid>
      <description>&lt;p&gt;&lt;img src=&quot;/images/posts/rubeus/rubeus_light.png&quot; alt=&quot;Rubeus Logo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Today we are proud to announce ‘Rubeus’! Rubeus is an open-source 2D game engine written purely in C++17 and is designed with a vision to inculcate the spirit of game development amongst the general public (specifically the IIT Roorkee junta). You can check out Rubeus at &lt;a href=&quot;https://github.com/sdslabs/Rubeus&quot;&gt;https://github.com/sdslabs/Rubeus&lt;/a&gt;.&lt;/p&gt;

&lt;h1 id=&quot;what-is-a-game-engine-how-is-it-different-from-a-game&quot;&gt;What is a game engine? How is it different from a game?&lt;/h1&gt;

&lt;p&gt;A game engine, in its most mature form, is a platform that provides tools and utilities to game developers for designing and developing games based on their ideas.&lt;/p&gt;

&lt;p&gt;To provide some comparisons, some of the most well-received games in the market have been Ubisoft games from the likes of the Assassin’s Creed franchise and the Watch_Dogs franchise. These games look and feel very similar to each other as both of these franchises have a stealth mechanic deeply rooted at their heart.&lt;/p&gt;

&lt;p&gt;The stealth mode mechanic in Watch_Dogs 1 takes a whopping 100,000 lines of code in the game. It is not only economically impossible to regenerate and reintegrate that much amount of code for each and every game that gets released under the franchise, but would also take up a lot of the developers’ time. This is why Ubisoft has engraved the stealth mechanic in their game engine and they keep reusing it in their newer games with appropriate modifications.&lt;/p&gt;

&lt;h1 id=&quot;why-make-an-entire-game-engine-and-not-a-game&quot;&gt;Why make an entire game engine and not a game?&lt;/h1&gt;

&lt;p&gt;In reality, the development of most games at game studios starts with developing a game engine first. Creating a game without a game engine can be considered as hard-coding functionalities in a crude form. This means that if you happen to work on another project (perhaps a sequel of the previous game), you will have to again work on laying down the basic layer of functionalities that all types of games work on. It is likely that whenever you start working on a new project, a significant part of your code will be repeated every time. This practice of writing the same code every time you work on a new game is incredibly inefficient and this is a problem that we, at SDSLabs, intend to solve.&lt;/p&gt;

&lt;p&gt;Making a game engine is a complex task and this is why most casual developers overlook the possibility of using a game engine to realize their game ideas. However, there are a lot of free alternatives out in the market. For example, you might have heard about Fortnite and the latest Tekken 7, both of which run on Epic Games Studio’s Unreal Engine 4. It has, in fact, made it possible for the Tekken franchise to finally hit the PC market. There are plenty of game engines out there but we decided to put ourselves up to the challenge of creating one for ourselves and releasing it to the public for everyone to use.&lt;/p&gt;

&lt;h1 id=&quot;how-to-even-start-with-making-a-game-engine&quot;&gt;How to even start with making a game engine?&lt;/h1&gt;

&lt;p&gt;The starting days of Rubeus in the month of May 2018 were full of reading sessions. The best websites to look up information on topics that we found were related to game development are probably &lt;a href=&quot;https://www.gamedev.net/&quot;&gt;Gamedev.net&lt;/a&gt; and &lt;a href=&quot;https://gamasutra.com/&quot;&gt;Gamasutra&lt;/a&gt;. We also recommend following &lt;a href=&quot;https://www.reddit.com/r/gamedev&quot;&gt;r/gamedev&lt;/a&gt; on Reddit, which is a booming community of game developers from both indie and AAA studios.&lt;/p&gt;

&lt;h1 id=&quot;the-beginning-of-something-amazing&quot;&gt;The beginning of something amazing&lt;/h1&gt;

&lt;p&gt;One of the first hurdles that we faced was how we should implement the Rubeus engine’s architecture. We had zero levels of abstraction in our codebase and we were trying to create an API out of it that should be useful to even a newbie. This made us take a step back and we started to work on the individual modules of the engine rather than the API.&lt;/p&gt;

&lt;p&gt;Any game engine works on a concept of what is known as the ‘Game Loop’. In the most general sense, games are recurrent programs. They do not normally shut down after their execution is complete. Instead, they often keep on repeating a particular set of instructions over and over unless the game shuts itself down or when the player has pressed the QUIT button. This is the concept of an ‘Application Loop’.&lt;/p&gt;

&lt;p&gt;Now, let us see how game engines modify this concept so as to suit most closely to an actual game. A general game engine loop looks a bit like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/rubeus/game_loop.png&quot; alt=&quot;Game loop&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The engine update function above consists mainly of the physics engine update and the calling all the tick functions.&lt;/p&gt;

&lt;p&gt;A tick function is some user-defined logic that the user wants to run at every frame in the game. It may contain all of the game logic or just a frame counter to measure the FPS. Coming to the physics engine update, it is also just a function that gets called once every frame but it checks for collisions every frame, and if it finds any collisions happening then it defines what change of velocities of the colliding game objects take place in that frame.&lt;/p&gt;

&lt;p&gt;The most important parts of making a game engine are implementing the physics update function and the render function (also known as the drawing step). These two functions are implemented independently inside the physics engine and the rendering engine. The render function just renders the scene. It applies no game logic to the scene. All logic is covered inside the update functions. Render functions tend to take care of what visual effects the user requires at a certain moment in the game.&lt;/p&gt;

&lt;p&gt;A typical single-threaded game engine update loop should look like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/rubeus/update_loop.png&quot; alt=&quot;Update loop&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Taking all these bits of information together, we started building Rubeus function by function. We first listed down the basic components of a game engine. To give a gist of how and what we started to work on, below is some documentation on our process of building a game engine.&lt;/p&gt;

&lt;h2 id=&quot;graphics-components&quot;&gt;Graphics Components:&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;A window module that talks to the OS and generates a window which allows OpenGL drawings to be rendered on the screen&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This had to be done in an OS-independent way because to keep the engine cross-platform. One such library that eases this task is &lt;strong&gt;GLFW&lt;/strong&gt;(“OpenGL Framework”). GLFW makes the task of drawing to the screen independent of the OS using OpenGL completely hassle-free.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A rendering module that abstracts all objects appearing in the game with the specific image/color that they use to get rendered to the screen&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It is also the renderer’s job to use the specific shaders that allow the objects to get colored in a way that the shader governs. In a nutshell, shaders are bits of code (written in OpenGL Shading Language a.k.a. GLSL, in our case) that tell the GPU where each vertex is present in the 3D space and what sort of algorithms should be used to color every pixel along with what sort of effects should be applied to the rendered image.&lt;/p&gt;

&lt;p&gt;For example, 3D games nowadays have started using a ‘Bloom’ effect to highlight bright objects on the screen.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/rubeus/bloom_effect.png&quot; alt=&quot;Bloom effect&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Bloom effect is a lighting illusion that is used to make objects appear brighter than the maximum brightness of the monitor.&lt;/p&gt;

&lt;p&gt;This particular effect i.e. Bloom effect is implemented inside shaders and the renderer uses these shaders to output graphics on the screen.&lt;/p&gt;

&lt;p&gt;During the development of Rubeus’ renderer, that we proudly named the ‘Guerrilla Renderer’, we ran a benchmark at rendering 14,560 sprites (a.k.a. 2D objects) at 450 FPS on a GTX 1060 (6GB). We tried to crank the numbers higher and somehow managed to choke our own engine by displaying 122,300 sprites at 4 FPS. A quick reminder: No real-life game ever reaches these numbers of objects being displayed at a time. We had also tested Guerrilla only in Debug mode without any form of inlining of C++ code.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://streamable.com/7edin&quot;&gt;This&lt;/a&gt; is a test run from another benchmark that we ran.&lt;/p&gt;

&lt;h2 id=&quot;multithreading&quot;&gt;Multithreading:&lt;/h2&gt;

&lt;p&gt;We were aware of the fact that even if we may not ever make Rubeus multithreaded in the first place, we may require the need to perform asynchronous responses such as implementing a console, or a debug menu for the user that use Rubeus to make a game for their players.&lt;/p&gt;

&lt;p&gt;Multithreaded programs are exactly what they sound like. They are able to follow more than 1 flow of execution of code at a certain moment in time. Beware that such systems can be incredibly hard to build because improper sharing of resources and also just overuse of threading will also give a negative hit to the performance of the engine.&lt;/p&gt;

&lt;p&gt;We have implemented a multithreaded messaging system inside Rubeus that we plan to release in v2.0. More information on this type of an architecture can be found in this &lt;a href=&quot;https://www.gamasutra.com/blogs/MichaelKissner/20151027/257369/Writing_a_Game_Engine_from_Scratch__Part_1_Messaging.php&quot;&gt;wonderful article about making different types of game engine architectures&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;By the time we were done with the multithreading architecture and the Guerrilla renderer, it was already mid-July and we had started to realize that this project might take a while to get completed. Not because of any lack of development times but the sheer size of this project. It was about time we started to really speed things up or Rubeus would be seeing the light of the day not before 2019 or maybe even not at all.&lt;/p&gt;

&lt;h2 id=&quot;a-physics-engine&quot;&gt;A Physics Engine:&lt;/h2&gt;

&lt;p&gt;Rubeus’ physics engine, nicknamed ‘Awerere’ (pronounced as “auror”) is also what it sounds like. Awerere is a physics engine that works inside Rubeus and allows simulation of life-like collisions and physics of game objects.&lt;/p&gt;

&lt;p&gt;The physics engine is an essential part of bringing any form of realism in a game. It is responsible for figuring out what objects are colliding with each other, what objects are not colliding with each other and if they are colliding, what velocities do they move away with and if they have collided, should they repel like rigid bodies or do they release some form of energy (likes of what we see in inelastic collisions amongst rigid bodies).&lt;/p&gt;

&lt;p&gt;All these questions are what the physics engine has to find the answers for. Sometimes the user can define some customized response to collisions. For example, the user would like to open a door to another doorway if the player shoots a particular switch on the wall.&lt;/p&gt;

&lt;p&gt;Currently, Awerere supports shapes such as boxes, circles, and planes. It handles collisions amongst all of the permutations of these objects and assigns them their final physical state after the collision. Designing Awerere and implementing the different collision algorithms was a treat because we personally like studying and realizing rigid body physics with the help of real-world physical laws.&lt;/p&gt;

&lt;h2 id=&quot;inputs-and-sounds-manager&quot;&gt;Inputs and Sounds Manager:&lt;/h2&gt;

&lt;p&gt;In this part of the development cycle, we were slowly approaching the release date and we had already implemented and debugged the hard parts of implementing a physics engine.&lt;/p&gt;

&lt;p&gt;We have used the popular ‘Simple and Fast Multimedia Library’, often known as just ‘SFML’ to provide Rubeus with cross-platform access to the sound devices in an organized sound manager. Rubeus now supports loading both long audio tracks like ambient and background music in addition to short pieces of audio like footsteps, gunshots, etcetera.&lt;/p&gt;

&lt;p&gt;When we had selected GLFW for generating windows on all OSs, we also had to keep a note of how GLFW handled getting inputs from the input devices. It also provides keyboard presses along with mouse button presses, scrolling, and just plain cursor positions. But all of this is done in an asynchronous response that GLFW provides the engine. We have implemented a system that keeps track of what keys have been pressed and what keys have been released at the starting of every frame. This made up the base of creating the Input manager which we further abstracted to work by creating keybindings for each control. Multiple keys are now assignable to a single keybinding/control.&lt;/p&gt;

&lt;h1 id=&quot;bringing-everything-together&quot;&gt;Bringing everything together&lt;/h1&gt;

&lt;p&gt;Near the end of November we were ready with all subsystems and modules that were required to make up Rubeus. But we still did not have an API or a gateway that the user could interact with.&lt;/p&gt;

&lt;p&gt;This is when we came up with &lt;a href=&quot;https://github.com/sdslabs/broCLI&quot;&gt;broCLI&lt;/a&gt;, which stands for ‘Rubeus on Command Line Interface’. broCLI is a CLI tool implemented in Golang which helps create a project structure for Rubeus. It was the perfect idea for Rubeus to use a CLI tool instead of a GUI so that users get a feeling of doing some heavy work while working with Rubeus. The user persona for Rubeus was always a beginner programmer from the start of May 2018. A CLI is probably something that they will be seeing a lot in their coming days.&lt;/p&gt;

&lt;p&gt;Rubeus may have a GUI later but for v1.0, we are focusing only on a CLI.&lt;/p&gt;

&lt;h1 id=&quot;fast-forward-to-this-day&quot;&gt;Fast forward to this day&lt;/h1&gt;

&lt;p&gt;We are happy that we were able to implement such a complex piece of technology with elegance and now, we invite others to partake in this endeavor into the realms of game development.&lt;/p&gt;

&lt;p&gt;If you are interested in game engineering then you are more than welcome to help us take Rubeus further and contribute to the project. Otherwise, please have a stop by at the Github repository &lt;a href=&quot;https://github.com/sdslabs/Rubeus&quot;&gt;https://github.com/sdslabs/Rubeus&lt;/a&gt; and try to make something amazing with it. We will be honored to see you create something beautiful with Rubeus and we look forward to your support.&lt;/p&gt;

&lt;p&gt;P.S. We maintain a public list of awesome projects that we find to be built on Rubeus. You can be featured on it too!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>package SDSLabs > import Vaibhav</title>
      <link>https://blog.sdslabs.co/2018/12/experience-at-labs-vrongmeal</link>
      <pubDate>Tue, 18 Dec 2018 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2018/12/experience-at-labs-vrongmeal</guid>
      <description>&lt;h2 id=&quot;var-vaibhav--new-student&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;var vaibhav = new Student()&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;Like most of you, I was a beginner when I came here. I had managed to teach myself HTML and CSS, but I had no idea about any other language or how to make software.&lt;/p&gt;

&lt;p&gt;I started off with C++ (as it was part of our course). During our practical classes, I used to solve problems on Codechef. Fortunately, the TA did not mind. In my winter vacations, I read up on HTML and CSS. The best thing about the web is that it does not constrict you to a particular flow of knowledge, and while learning about something, you get to learn a lot about other things too. While exploring, I found out about Github and Github Pages. I immediately made an account, followed the steps and put up my webpage. It was still a work in progress when the vacations ended.&lt;/p&gt;

&lt;h2 id=&quot;sdstestvaibhav&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SDS.test(vaibhav)&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;My proposal for Winter of Code was not accepted. I gave the recruitment test like everyone else. A couple of days later, I received a call for the interview. The interview was in half an hour when I received the call. I rushed to take a bath, got on my cycle and left from Rajendra Bhawan. I was in such a hurry that I even forgot where the Hobbies Club was. Nonetheless, I made it on time.&lt;/p&gt;

&lt;p&gt;The interview took place in two stages. First, a few problems were given to me. They were similar to the ones in the test. The next stage focused on my way of thinking a solution. I was asked to design a system for a Library. I couldn’t do it all by myself, but what mattered was the way I tried to solve the problem. Everyone liked the webpage that I had made. It was a huge point in my favour for getting selected.&lt;/p&gt;

&lt;h2 id=&quot;sdsaddmembervaibhav&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SDS.addMember(vaibhav)&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;One day after the interview, I received the news that I had been selected as a member of SDSLabs. The next day, everyone gathered in the Hobbies Club (that’s where the old lab was). We were introduced to this whole new world that day. My mailbox was full of invites from Slack, Dropbox and other SDSLabs accounts.&lt;/p&gt;

&lt;p&gt;It’s a tradition here to order pizza from Dominos and go to Georgia and eat there. The Intro-Chapo took place after a couple of weeks. It was quite an evening. We got to know and interact with everyone. Of course, there were snacks, dinner and a lot of dance.&lt;/p&gt;

&lt;p&gt;I don’t know about other sections, but here at SDSLabs, we get Chapos almost regularly. Be it someone winning a hackathon or someone getting an internship, you get a Chapo one way or the other. And if significant time had elapsed without one, we usually found some senior ready to give one in Govind canteen.&lt;/p&gt;

&lt;p&gt;Lectures were held for us at the beginning regarding various topics starting from HTML/CSS and PHP to more advanced topics like Networking, MVC architecture, etc. We were introduced to various languages including Python, JavaScript, and technologies like Git and Node. It is still hard for me to believe that I made a fully dynamic website in just ten days when a few days before starting, I knew nothing.&lt;/p&gt;

&lt;p&gt;Be it completing a tutorial or watching a movie, everyone encourages us to come to the lab. It was hard for me to believe how much difference it could make until I experienced it myself. There is someone in the lab almost all the time, someone you could talk to, learn stuff from or discuss any sort of ideas with. The best part is that everyone wants to be challenged, everyone wants to be asked about something they don’t know. It simply gives one an opportunity to learn something new.&lt;/p&gt;

&lt;p&gt;It is this kind of an environment that motivated me to apply for GSoC in the first year itself. I did not get selected but I had the courage to sit through and select organisations to contribute to. I gained the motivation to learn new technologies and draft a proposal. Not to forget all the help I got from my seniors.&lt;/p&gt;

&lt;h2 id=&quot;sdsassignprojectsvaibhav&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SDS.assignProjects(vaibhav)&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;Coming towards the end of the semester, everyone was assigned a project. Mine was to make a python package to aid some functionality of Muzi (our very own music player). After the exams, I chose to continue to work on Muzi during my summer vacations. During that course, I learnt many new technologies like Node, React, Redux and Sass.&lt;/p&gt;

&lt;p&gt;Everyone at SDSLabs is open to new ideas, no matter how ambitious or silly they might be. There is a General Body Meeting held every week where we discuss the progress of our projects. If anyone comes up with a new idea, people are eager to work on them. This usually leads to everyone working on multiple projects. I guess the best thing about working in Labs is that the projects are essentially yours, blessed with the inputs of so many diverse minds.&lt;/p&gt;

&lt;h2 id=&quot;vaibhavclosewriting&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vaibhav.closeWriting()&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;I missed the annual trip. Looking at the pics, I really regret missing it. Ultimately, the best part of being a part of SDSLabs is being with people who are weird like you, people who think differently.&lt;/p&gt;

&lt;p&gt;The recruitment test will be held in January. Do give it a try even if you are remotely interested in software development. Believe me, you do not want to miss this chance.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Creating an ML competition platform for students</title>
      <link>https://blog.sdslabs.co/2018/12/cerebro</link>
      <pubDate>Sat, 15 Dec 2018 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2018/12/cerebro</guid>
      <description>&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-1.png&quot; alt=&quot;Cerebro banner&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;about-cerebro&quot;&gt;About Cerebro&lt;/h3&gt;

&lt;p&gt;A machine learning competitions hosting platform created for the students of IIT Roorkee where they can &lt;strong&gt;share&lt;/strong&gt; the latest news, blogs, links to research papers and their approaches and can also &lt;strong&gt;practice or compete&lt;/strong&gt; along with other students to work on their skills.&lt;/p&gt;

&lt;h3 id=&quot;how-it-all-started&quot;&gt;How it all started?&lt;/h3&gt;

&lt;p&gt;The idea started when there was an increasing number of ML enthusiasts on the campus. Suddenly there was a boom and students started learning different aspects of machine learning (ML) be it predictive learning, computer vision or NLP. For this growing community there started a lot of groups like Data Science Group (IIT Roorkee), Computer Vision and Language under ACM chapter IIT Roorkee and various paper discussion groups. Students and professors started using various applications of ML in their research. Now they are even introducing Deep Learning in their research fields.&lt;/p&gt;

&lt;p&gt;Many resources of learning data science, machine learning, and deep learning were introduced and shared. The popular ones like the Kaggle, Analytics Vidhya and Data Camp. Few courses from Coursera, EdX and MIT open courseware were the new things people were focussed on.&lt;/p&gt;

&lt;p&gt;The amazing thing was that all the students accepted this change and shifted from competitive coding and started looking at these courses and apply their knowledge in various competitions like Microsoft Code.Fun.Do, American Express data science, ZS Associates etc.&lt;/p&gt;

&lt;p&gt;Statistics, Financial mathematics, Artificial Neural Networks, Fuzzy theory were the popular courses students started learning on their own from the help of these sites. Apart from these courses many programming languages apart from the traditional culture of Java and C++ came like Python, R came into light. We were amazed at the rate people were learning them and applying them.&lt;/p&gt;

&lt;p&gt;To hold this much amount of information which students were having from different resources there was no proper platform inside the campus to share and to check where they stand in the competition. Students were reading and learning a lot of things but without application of these studies, there was no point in just reading stuff.&lt;/p&gt;

&lt;p&gt;There has been a drastic increase in the field of Machine Learning and Data Science in the corporate industry as many companies are working on using this for their products to remove human error and improve the product. With an increase in the career opportunities in ML from various big companies during the internship/placement season, it became an important objective for people to practice their skills and to know their knowledge in respect to the other students.&lt;/p&gt;

&lt;p&gt;The one solution to practicing questions was to rely on one popular platform to hold competitions for which we require sponsors and money. To share knowledge about different research papers, blogs, and other learning material everyone had to rely on various facebook groups on ML, Data Science, Deep Learning which was generally a lot of trouble to keep a track of and bookmark them. So, there was a need for a college-focused competition website to conduct proper test practices, competitions, hackathons and spread ML and data science knowledge.&lt;/p&gt;

&lt;p&gt;With keeping these important points in mind, at SDSLabs IIT Roorkee, we started with a project to create a platform with &lt;strong&gt;main objectives&lt;/strong&gt; -&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Practice and improve skills on various kinds of questions.&lt;/li&gt;
  &lt;li&gt;Hold competitions to work on the new questions.&lt;/li&gt;
  &lt;li&gt;Share as much information as possible, like, research papers on new techniques or their work/ blog on a question they solved in a different competition.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;the-long-journey--&quot;&gt;The long journey -&lt;/h3&gt;

&lt;p&gt;After getting the idea of a platform, we began from the most important thing, &lt;strong&gt;research&lt;/strong&gt;.&lt;/p&gt;

&lt;h4 id=&quot;research-process&quot;&gt;Research Process&lt;/h4&gt;

&lt;p&gt;We were clear on our users. The user idea in general.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-2.jpeg&quot; alt=&quot;Research Process&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A student in college, in an age group of 18–23, looking for practicing questions and share information. He/She has joined various Facebook groups and has an account on popular platforms to practice. He/She is making time to study these courses and doesn’t want any more time waste. You know… like a regular student. :P&lt;/p&gt;

&lt;p&gt;&lt;em&gt;So to create a platform for this user, we started by trying to understand their current process.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-3.jpeg&quot; alt=&quot;Current Process&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A user had to go through multiple sources to figure out about data science and practice on the international leaderboard of Kaggle and take participation in contests on AV. They also join multiple groups on FB to take guidance on ML and data science.&lt;/p&gt;

&lt;p&gt;After understanding the current process, the problems for a beginner in this process is —&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Not a common platform to post, save and look at shared blogs/links etc.&lt;/li&gt;
  &lt;li&gt;Local leaderboard for college based competitions.&lt;/li&gt;
  &lt;li&gt;Practice questions of different levels.&lt;/li&gt;
  &lt;li&gt;No team to contact or support directly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, to overcome we decided to build free of cost competitions holding website and a local leaderboard to understand their ranking in the college level for placements and share a common community for exchange of information. &lt;strong&gt;The user’s requirements include a leaderboard, competition website, share information on a common platform of college which is maintained by DSG IIT Roorkee.&lt;/strong&gt;&lt;/p&gt;

&lt;h4 id=&quot;information-architecture-wireframes&quot;&gt;Information Architecture/ Wireframes&lt;/h4&gt;

&lt;p&gt;Then after this, we started looking at why people are so much inclined towards kaggle.com for their competitions. Turns out that people were not only interested in the level of questions there or the number of genius solutions. They have a very simple style of competition website. They have various badges for different profiles. They have a really cool design.&lt;/p&gt;

&lt;p&gt;We decided to make the same structure for this website keeping this thing in mind that if students come to this website, &lt;strong&gt;they should feel familiar&lt;/strong&gt; to the process and do not find any problem in understanding. It’s like if you buy a new bike and if the handle buttons are changed then you will find it difficult to understand and you will have a bad experience. Although, you won’t give up on your bike, of course. :P&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-4.jpeg&quot; alt=&quot;Information Architecture&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The header consisted the of Home, Practice, Competitions, Leader-board and a Profile photo (consisting of profile section and logout option).&lt;/p&gt;

&lt;p&gt;The website was divided in the header into different sections focusing on major questions like these —&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;How to make sharing links/blogs/articles easy?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How to help in practice questions and promote it for beginners?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How to keep competitions very distinct and not mix with the practice?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Should leader-board be a distinct section in the header?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Is profile section important and if it is then what are the main reasons why people will use it?&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Answering these questions helped to decide what, why, where the different sections should be kept and how much importance each hold?&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Sharing links/blogs/articles were kept at the home as it was all about focusing on the beginner students to help with various content on ML. So a News Feed section was created at the home from where people can post their material. Users can also save the post they like and delete their post directly from the screen.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Practice and Competitions were kept as different sections to make a pseudo boundary and keep it easy for the users.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;To share various information there was a slider on the main page. The slider consists of information about new competitions or any kind of notice which is to be told to students.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The importance of the Profile section will be just to reach out to the saved posts, update details etc. But most importantly users might like to look at their small details like the number of questions they did, posts they created etc. For this, we decided to keep a small card in each section at the top consisting of these details.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-5.jpeg&quot; alt=&quot;User Flow&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;front-end-development&quot;&gt;Front-end Development&lt;/h4&gt;

&lt;p&gt;Languages used include HTML/CSS and Javascript. It was in MVC architecture. As the site is dynamic, the front-end was done on using the powerful virtual DOM of ReactJs library.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-6.jpeg&quot; alt=&quot;Screens&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;features&quot;&gt;Features&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Posting links, blogs and any other material with a ‘Post’ section which contains markdown options. Reason being that most links are shared or code is shared which can be introduced easily in a markdown format.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Adding team to complete a project. As some of the competitions require a team to participate. Team request, invites can be sent.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Some of the posts which a user likes can be saved and be looked later in the profile section by clicking on the ‘star’ button. Similarly, posts created by one can also be deleted.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The user can add his personal details to introduce himself in a better way by mentioning his/her social links and writing a bio.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Banner is added on the landing page to introduce or promote any sort of competition or notice through a carousel format.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-7.jpeg&quot; alt=&quot;Features&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;design&quot;&gt;Design&lt;/h3&gt;

&lt;h4 id=&quot;homepage&quot;&gt;Homepage&lt;/h4&gt;

&lt;p&gt;As the homepage consists of the main feature of posting stuff, saving them and deleting them. It also contains carousel which contains information and news feed which contains information from other users.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-8.jpeg&quot; alt=&quot;Home Page&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;practice&quot;&gt;Practice&lt;/h4&gt;

&lt;p&gt;The practice section consists of a list of problems with a direct button to their individual problem page.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-9.jpeg&quot; alt=&quot;Practice&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;problem-page&quot;&gt;Problem Page&lt;/h4&gt;

&lt;p&gt;Problem page consists of 4 sections in case of practice and 5 sections in case of competition problem. These sections are-&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Description&lt;/li&gt;
  &lt;li&gt;Data Set&lt;/li&gt;
  &lt;li&gt;Rules&lt;/li&gt;
  &lt;li&gt;Submit&lt;/li&gt;
  &lt;li&gt;Leaderboard&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-10.jpeg&quot; alt=&quot;Problem Page&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;competitions&quot;&gt;Competitions&lt;/h4&gt;

&lt;p&gt;The competition section contains one card specifically for the latest competitions. So to emphasize it, the card is placed centrally above all the other competition questions. The ‘+’ button is to add the team. When clicked it opens up a team create and join modal as shown earlier.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-11.jpeg&quot; alt=&quot;Competitions&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;leaderboard&quot;&gt;Leaderboard&lt;/h4&gt;

&lt;p&gt;This section consists of the overall rank and the points scored of the latest 5 questions so that the key users who are in good positions are always aware of the new questions.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-12.jpeg&quot; alt=&quot;Leaderboard&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;profile&quot;&gt;Profile&lt;/h4&gt;

&lt;p&gt;The profile section contains lots of information about the user where he/she can upload his/her social links and also check other details like ranking, saved posts, individual problem score.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-13.jpeg&quot; alt=&quot;Profile&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;ui-style-guide&quot;&gt;UI style guide&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-14.jpeg&quot; alt=&quot;Guide&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;illustrations&quot;&gt;Illustrations&lt;/h4&gt;

&lt;p&gt;Logo making is the best part in designing. It allows you to take up random ideas and convert it into something so simple that it makes sense. For us, its more like trying to explain something in a very simple manner or explaining its core values. For Cerebro, we tried to explain the basic working of machine learning and what it means in one line. We converted that idea into a logo.&lt;/p&gt;

&lt;p&gt;The logo presented has a very crude meaning about what is Machine Learning. Machine Learning for a rookie is defined as a black box technique. It helps to generate a conclusion regarding a problem either by solving classification problems or regression problems. Here, this logo is a fusion between the two ideas of Black-Box and a result from it.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-15.jpeg&quot; alt=&quot;Illustrations&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Several other illustrations made for the same website&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cerebro/cerebro-16.jpeg&quot; alt=&quot;Illustrations&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;whats-next&quot;&gt;What’s next&lt;/h3&gt;

&lt;p&gt;With the launch of Cerebro towards the end of October, we have already held a week-long competition ‘Melodious Medley’ which saw more than 200 submissions and 100% uptime. We also have two more competitions in the pipeline this semester based on Computer Vision and Natural Language Processing.
With initial goals being reached, we look for what’s next. Recommendation System? Way to early for that! New metrics and data visualizations? That sounds much cooler. So stay tuned for v1.1 :)&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>HackInOut 5.0</title>
      <link>https://blog.sdslabs.co/2018/12/hackinout</link>
      <pubDate>Thu, 13 Dec 2018 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2018/12/hackinout</guid>
      <description>&lt;p&gt;Hackathons are an integral part of a developer’s journey. They help us experiment, grow and meet a beautiful mixture of talented people. We present a recollection of our winning experience at India’s biggest community hackathon, &lt;a href=&quot;https://hackinout.co/&quot;&gt;InOut&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It all started on September 1, 2018 when word got around the campus of IIT Roorkee that InOut was going to hold its 5th edition. InOut is the largest community driven hackathon in India comprising of 150 participants chosen from approximately 4500+ applicants, both students and professionals, all over India. SDSLabs being a forerunner in technology, decided to participate in this glorious event. 4 teams from SDSLabs got selected for InOut 5.0. My team &lt;em&gt;TrojanHash&lt;/em&gt; comprised of Anish Mukherjee(me), Nikhil Kaushik and Harsh Jain.&lt;/p&gt;

&lt;p&gt;Fast forward 1 month, and we found ourselves in Bangalore on October 12, 2018 at CoWrks for HackInOut 5.0. InOut was conducted at the best workspace we’d ever seen. The venue, CoWrks, was a co-working space as the name suggests. It had a large hall with rows of desks for most of the area. There were couches towards the front where you could relax. The environment really brings out the hacking spirit lying dormant within one’s soul. I remember sleeping for only 2 hours for the entire duration of the hackathon (36 Hours).&lt;/p&gt;

&lt;h3 id=&quot;cowrks-new-indiranagar-bangalore&quot;&gt;CoWrks, New Indiranagar, Bangalore&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/hackinout/CoWrks.jpg&quot; alt=&quot;CoWrks&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;members-of-sdslabs-on-the-verge-of-unveiling-the-mysteries-of-the-universe&quot;&gt;Members of SDSLabs on the verge of unveiling the mysteries of the universe&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/hackinout/SDSLabs.jpg&quot; alt=&quot;Team&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The hackathon kicked off with talks by various companies that were part of the sponsorship roster for the event. These are not usually very interesting talks. But we decided to sit through, and guess what? We enjoyed them. One of the speakers suggested that we aim to optimise our time spent in brainstorming. A little too less could result in a slouchy end product, and a little too much would leave less time for implementation. Unlike previous hackathons we didn’t arrive on the scene with an idea discussed beforehand which we could bend to fit the event theme. Thus, the new aim for us was to have a pure hackathon experience and brainstorm from scratch using insights we got from the talks.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“The creation of something new is not accomplished by the intellect, but by the play instinct arising from inner necessity. The creative mind plays with the object it loves.” - Carl Jung&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One of our crucial goals was to try to get our hands on technology, language or domain which we were unfamiliar with or which sounded really cool. Blockchain was the one! &lt;a href=&quot;https://matic.network/&quot;&gt;Matic&lt;/a&gt;, a blockchain startup, also one of the sponsors of InOut 5.0 had announced a special prize for a Bill Splitting application based on blockchain at the beginning of the hackathon. We almost instantaneously decided to contest for the special prize.&lt;/p&gt;

&lt;p&gt;We had to make a bill splitting application on blockchain using &lt;strong&gt;Dai Stable Coin&lt;/strong&gt; as the cryptocurrency. We did what every professional developer does at the beginning……Google !!!&lt;/p&gt;

&lt;p&gt;We got to know that &lt;strong&gt;Dai&lt;/strong&gt; was a cryptocurrency quite different from the conventional bitcoin and ether. Unlike bitcoin or ether, Dai was backed by collaterals. Like how someone registers his land or house as collateral when applying for a loan, and failing to repay the loan within the stipulated period of time, he/she must repay the balance amount with the registered collateral, Dai operated on similar principles. Dai is backed by collaterals such as ether. If a user fails to repay another with Dai, the balance amount will be paid with ether(ETH) which was registered by the original user when purchasing the Dai stable coin. The ether is registered as collateral when purchasing Dai through a concept called &lt;strong&gt;CDP&lt;/strong&gt;(Collateralized Debt Position).&lt;/p&gt;

&lt;p&gt;Collateralized Debt Position (CDP) allows you to lock your crypto assets (only ETH, for the time being) into a CDP vault and gives you a loan of 66% of DAI (1 DAI = 1 USD) against the deposited amount. If you want to get back access to your locked crypto, you will just simply repay your borrowed debt in Dai. Hence, if someone fails to return the borrowed Dai on time, it will be paid to the lender from the CDP Vault.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/hackinout/Dai.png&quot; alt=&quot;Dai&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The conventional bill splitting applications such as Splitwise only kept records of transactions amongst peers. It didn’t give any assurance for the balance amount to be settled among the peers in the future. We finally understood what Matic really expected from participants. It was not a &lt;strong&gt;Bill Splitting Application&lt;/strong&gt; in essence, but a &lt;strong&gt;Currency Borrowing and Lending Application&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Enough chit-chat, time to code. We read the principles of Dai and implemented the &lt;strong&gt;smart contracts&lt;/strong&gt; which is the logic pertaining to the transactions in Solidity. Solidity is the primary language for building apps on blockchain and is one of the worst languages in terms of how easy it is to debug. After that we used &lt;strong&gt;Truffle.js&lt;/strong&gt; to compile those smart contracts and deploy them to &lt;strong&gt;Ganache&lt;/strong&gt;, a blockchain platform that can be hosted locally. After that, the contracts can be called with the help of &lt;strong&gt;Web3.js&lt;/strong&gt;, a javascript client-side library for interacting with the blockchain.&lt;/p&gt;

&lt;p&gt;We had just started building the web-interface when a flash of inspiration ran through our minds. Building a blockchain application is cool and all, but won’t it be cooler to build an entire ecosystem, something which can blow off their minds?&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/hackinout/meme.jpg&quot; alt=&quot;Meme&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;two-questions-arise-&quot;&gt;Two questions arise:-&lt;/h2&gt;

&lt;h3 id=&quot;why&quot;&gt;Why?&lt;/h3&gt;

&lt;p&gt;We decided to build something better than what was asked of us. Using &lt;strong&gt;Web3.js&lt;/strong&gt;, the transaction logic had to handled in the frontend itself. If we built the UI using &lt;strong&gt;Web3.js&lt;/strong&gt; for web and &lt;strong&gt;Web3j&lt;/strong&gt; for Android( we were also going for a mobile version ), it would have been too much work and we could not have completed it in the given time. Also why not build it in such a manner that even other developers could build something from a part of it? Moreover, at that time, there was no medium which implemented Dai smart contracts and provided an easy-to-use interface that could be integrated across all devices. Hence, we went for an ecosystem instead of an application.&lt;/p&gt;

&lt;h3 id=&quot;how&quot;&gt;How?&lt;/h3&gt;

&lt;p&gt;Long live &lt;strong&gt;REST APIs&lt;/strong&gt;. If we shifted the entire logic regarding transactions to the backend, and exposed endpoints pertaining to specific operations, then we could have made the entire ecosystem highly extensible.&lt;/p&gt;

&lt;p&gt;Endpoint Examples:-&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Operation - Get your current Ethereum Balance
Request Type - GET
Endpoint - /getEthBalance
Request Params - address(The address of the user account on the blockchain)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Operation - Convert Ether to DAI tokens
Request Type - PUT
Endpoint - /convertEthToDai
Request Body :- 
address( The address of the user account on the blockchain )
privateKey ( The Private Key of the user )
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now, we don’t have to write the business logic twice ( one for web and another for android ). Just use the API and get your work done easily. And now the application could be extended very easily to even iOS, smart watches, etc. This was one of the major factors which led to our victory.&lt;/p&gt;

&lt;p&gt;By now, you must be wondering by using a REST API as the communication medium we have essentially destroyed the “decentralised” nature of blockchain. This is a valid argument considering the fact that the API becomes a single point of failure in the entire ecosystem and blockchain boasts of “no single point of failure”. We already considered this and hence we designed the API to be “stateless”. No user information is being stored in any of the API hosting servers. So even if one server fails, another one can easily take its place. Hence, in this the entire system has no single point of failure. The current architecture looks like this:-&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/hackinout/flowchart.jpg&quot; alt=&quot;Architecture&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I started building the REST API while Harsh started building the UI for Web with &lt;strong&gt;React.js&lt;/strong&gt; and Nikhil, UI for &lt;strong&gt;Android&lt;/strong&gt;. As soon as I completed a portion of the business logic, I would test the API endpoint with &lt;strong&gt;Postman&lt;/strong&gt; and if everything went according to the plan(which it never did),I would share the API endpoint with my teammates via &lt;strong&gt;Postman Collections&lt;/strong&gt; who in turn used that endpoint route and designed the portion of the UI pertaining to that accordingly. This process continued, we skipped meals, some cool sub-events during the hackathon and slept for only 2 hours during the entire 36 hours timespan. In fact we were so tired that we slept like a log on our return train journey and we missed our station (but that is a story for another time).&lt;/p&gt;

&lt;p&gt;Finally after overcoming lots of hurdles, our &lt;del&gt;application&lt;/del&gt; ecosystem was completed.&lt;/p&gt;

&lt;p&gt;Then came the presentation phase. We were a nervous wreck. We felt that the time was too less to be able to present our idea in its full glory. But somehow, our presentation proceeded quite smoothly. The judges were delighted with our approach and implementation. We went along with the flow and even showed them the source code of our pride, The REST API. ProTip:- Never waste time by showing the source code during a hackathon presentation because only the end product matters. We were lucky that our presentation had already left an impact before we reached that point, so yeah, a narrow escape.&lt;/p&gt;

&lt;p&gt;Conventionally, the prize ceremony would have followed, but sadly, not for us. We had our flights, so we left the venue before the prize ceremony took place. We were later informed by the HackInOut team that we had bagged the Matic First Prize and that they would be contacting us soon. Going by tradition, a commemorative photo is in order, so here you go&lt;/p&gt;

&lt;h3 id=&quot;left-to-right--nikhil-kaushik-anish-mukherjeeme-harsh-jain&quot;&gt;Left to Right : Nikhil Kaushik, Anish Mukherjee(me), Harsh Jain&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/hackinout/TrojanHash.png&quot; alt=&quot;TrojanHash&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The source code is available at GitHub https://github.com/harsh-98/splitDai.
If you are intrigued then go have a look :)&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Optimizing Webpack for Production</title>
      <link>https://blog.sdslabs.co/2018/01/optimizing-webpack</link>
      <pubDate>Fri, 26 Jan 2018 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2018/01/optimizing-webpack</guid>
      <description>&lt;p&gt;As a part of SDSLabs, I had been involved in building the official website of &lt;a href=&quot;https://cognizance.org.in&quot;&gt;Cognizance&lt;/a&gt;, the annual technical festival of IIT Roorkee and also Asia’s second largest technical fest!&lt;/p&gt;

&lt;h3 id=&quot;brief-background&quot;&gt;Brief Background&lt;/h3&gt;

&lt;p&gt;The website is built on &lt;a href=&quot;https://reactjs.org/&quot;&gt;ReactJS&lt;/a&gt; and &lt;a href=&quot;https://nodejs.org&quot;&gt;Node.js&lt;/a&gt; It is a typical end to end application.&lt;/p&gt;

&lt;p&gt;I will focus on the react part of the application which is one of the client of our Node API.&lt;/p&gt;

&lt;h3 id=&quot;n00b-steps&quot;&gt;n00b steps&lt;/h3&gt;

&lt;p&gt;Now, as you might know, when webpack does its &lt;strong&gt;magic&lt;/strong&gt; on the code, it generates a single huge bundle file, that contains all the code required for front-end function. Because we are working with single page applications here, this means that browser will fetch all code at once which can lead to slower page loads which can be a bad experience for end users.&lt;/p&gt;

&lt;p&gt;Being 4 months into the development, we now have 3 different react apps served on three different namespaced routes, almost complete, but wait, bundled size of all three of them in production is around 900 KB, woot, not feasible for deployment.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/optimizing-webpack/webpack-1.png&quot; alt=&quot;Webpack 1&quot; /&gt;&lt;/p&gt;

&lt;p&gt;From the above production build, we had three apps with average size of 1 MB.&lt;/p&gt;

&lt;p&gt;Over 60% of our user base are mobile users and around 40% of them are using degraded internet (around 70 kbps) and we &lt;strong&gt;just&lt;/strong&gt; could not afford to make them wait 10 seconds. &lt;strong&gt;We needed to reduce bundle size.&lt;/strong&gt;&lt;/p&gt;

&lt;h3 id=&quot;correcting-some-mistakes&quot;&gt;Correcting some mistakes&lt;/h3&gt;

&lt;p&gt;First step was to remove unnecessary npm modules (or unused). Doing a thorough investigation of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;package.json&lt;/code&gt; and the codebase and removing unnecessary imports and corresponding packages was another tiresome job but it proved to be fruitful. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;package.json&lt;/code&gt; can get get dirty when you blindly install some packages for testing and then forget to remove them from dependecies. However, it took us one full day to remove those unwanted packages.&lt;/p&gt;

&lt;p&gt;This practice reduced the bundle sizes by around &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;120 KB&lt;/code&gt;.&lt;/p&gt;

&lt;h4 id=&quot;the-introduction-of-async-await&quot;&gt;&lt;em&gt;The introduction of async await&lt;/em&gt;&lt;/h4&gt;

&lt;p&gt;Stumbling upon reducing bundle size, I came across the concept of async await.&lt;/p&gt;

&lt;h4 id=&quot;asyncawait-101&quot;&gt;Async/Await 101&lt;/h4&gt;

&lt;p&gt;It is a new way to write asynchronous code. Previous available options were Promises and callbacks. They are non blocking just like promises.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-js&quot; data-lang=&quot;js&quot;&gt;&lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;// console.log will wait till b resolves&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;console&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;())&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Done&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nx&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;blockquote&gt;
  &lt;p&gt;An async function returns a promise implicitly, and the resolved value of the promise will be whatever we return from the function.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://hackernoon.com/6-reasons-why-javascripts-async-await-blows-promises-away-tutorial-c7ec10518dd9&quot;&gt;More Details&lt;/a&gt;&lt;/p&gt;

&lt;h4 id=&quot;back-on-track&quot;&gt;Back on track&lt;/h4&gt;

&lt;p&gt;The main idea is to first break the components into finer components and then load these components when needed.&lt;/p&gt;

&lt;p&gt;First step was to create a wrapper that would take a component, and return another component. These wrappers are called &lt;a href=&quot;https://reactjs.org/docs/higher-order-components.html&quot;&gt;Higher-Order Components (HOC)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Our HOC is an async container:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-js&quot; data-lang=&quot;js&quot;&gt;&lt;span class=&quot;c1&quot;&gt;// AsyncContainer.jsx&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;React&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Component&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;react&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;asyncContainer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;importComponent&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;AsyncContainer&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Component&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kd&quot;&gt;constructor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;props&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;props&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

      &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;state&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;component&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;null&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;componentDidMount&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;component&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;importComponent&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;

      &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;component&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;component&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;nx&quot;&gt;render&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;A&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;state&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;component&lt;/span&gt;

      &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;A&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;A&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{...&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;props&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/&amp;gt; : nul&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;l
&lt;/span&gt;    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;AsyncContainer&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;asyncContainer&lt;/code&gt; function takes a component as input and renders it when the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;importComponent&lt;/code&gt; resolves. This can be implemented in routes as:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-js&quot; data-lang=&quot;js&quot;&gt;&lt;span class=&quot;c1&quot;&gt;// routes.js&lt;/span&gt;

&lt;span class=&quot;p&quot;&gt;...&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;asyncContainer&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;./Containers/AsyncContainer&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;

&lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Base&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;asyncContainer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;./Components/Base&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;WelcomeContainer&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;asyncContainer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;./Containers/WelcomeContainer&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;

&lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;routes&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;component&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Base&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;childRoutes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;component&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;WelcomeContainer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;...&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Everytime the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;asyncContainer&lt;/code&gt; is called, it will dynamicaly import the passed container. In other words, when we visit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/&lt;/code&gt; route, then a chuck file is loaded dynamically containing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WelcomeContainer&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This concept can be extended to individual components too. Suppose we have an header that can be split into two components &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RightHeader&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LeftHeader&lt;/code&gt;. So, previously when header was mounted, both of these components used to come within the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Header&lt;/code&gt; chunk, but now walking on our new path we can make them mount dynamically thus separating the view blocking components.&lt;/p&gt;

&lt;p&gt;An example of how header is rendered&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-js&quot; data-lang=&quot;js&quot;&gt;&lt;span class=&quot;c1&quot;&gt;// Header.jsx&lt;/span&gt;

&lt;span class=&quot;p&quot;&gt;...&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;componentDidMount&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;RightHeader&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;./RightHeader&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;LeftHeader&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;./LeftHeader&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;RightHeader&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;RightHeader&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;LeftHeader&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;LeftHeader&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;loading&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;,
&lt;/span&gt;  &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;We implemented this on every route, login/signup modal, headers, various containers and many more small components.&lt;/p&gt;

&lt;h3 id=&quot;the-mighty-webpack-config&quot;&gt;The mighty webpack config&lt;/h3&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-js&quot; data-lang=&quot;js&quot;&gt;&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;webpack&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;webpack&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;UglifyJSPlugin&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;uglifyjs-webpack-plugin&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;entry&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;app1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;./src/app1&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;...&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;...&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;js/[name].bundle.js&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;chunkFilename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;js/[chunkHash].[name].bundle.js&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;...&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;module&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;rules&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;...&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;resolve&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;extensions&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;.js&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;.jsx&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;plugins&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;webpack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;optimize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;CommonsChunkPlugin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(),&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;webpack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;DefinePlugin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
      &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;process.env&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;NODE_ENV&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;JSON&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;stringify&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}),&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;webpack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;optimize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;OccurrenceOrderPlugin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(),&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;webpack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;NamedModulesPlugin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(),&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;webpack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;NoEmitOnErrorsPlugin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(),&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;UglifyJSPlugin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(),&lt;/span&gt;   &lt;span class=&quot;c1&quot;&gt;// This further reduced the bundle size&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;webpack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;IgnorePlugin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sr&quot;&gt;/^&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\.\/&lt;/span&gt;&lt;span class=&quot;sr&quot;&gt;locale$/&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/moment$/&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;  &lt;span class=&quot;c1&quot;&gt;// If you are using moment&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Now on running&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt; &lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;cross-env &lt;span class=&quot;nv&quot;&gt;NODE_ENV&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;production webpack &lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--progress&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--config&lt;/span&gt; webpack.prod.config.babel.js &lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/optimizing-webpack/webpack-2.png&quot; alt=&quot;Webpack 2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Production build webpack created around 40 chunks (because of use of async/await), that &lt;strong&gt;will be&lt;/strong&gt; dynamically loaded when needed.&lt;/p&gt;

&lt;p&gt;This practice greatly reduced the main bundle size and we were under 100KB for app1 (our landing page), this meant max 2 second for landing page loading (&lt;strong&gt;Achievement Unlocked&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;You also have to include &lt;a href=&quot;https://babeljs.io/docs/usage/polyfill/&quot;&gt;babel-pollyfill&lt;/a&gt; because &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;async/await&lt;/code&gt; are not included in browser by default.&lt;/p&gt;

&lt;h3 id=&quot;final-production-deployment&quot;&gt;Final Production Deployment&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;It’s not at all important to get it right the first time. It’s vitally important to get it right the last time.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When served with gzip the bundle futher compresses from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;383 KB&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;87.2 KB&lt;/code&gt;. Yay!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/optimizing-webpack/network-1.png&quot; alt=&quot;Network&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After applying all the above techniques, we were able to reduce the page load time to 4 seconds and first visible button at 2.1 seconds. These stats were acceptable for the time being.&lt;/p&gt;

&lt;h3 id=&quot;final-problem&quot;&gt;Final Problem&lt;/h3&gt;

&lt;p&gt;Now, after the successful deployment, the next major problem is the build time. With current config the build time was around &lt;strong&gt;93 seconds&lt;/strong&gt;, too much!!. We are still working on improving the build speed, but its on hold because of other feature addition to the application.&lt;/p&gt;

&lt;p&gt;I will talk about how to reduce the build time in future. Till then,&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Patience is a conquering virtue.     - &lt;em&gt;Geoffrey Chaucer&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    
    
    
    <item>
      <title>2-D Game Design Process for Beginners</title>
      <link>https://blog.sdslabs.co/2018/01/2d-game-design</link>
      <pubDate>Fri, 19 Jan 2018 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2018/01/2d-game-design</guid>
      <description>&lt;p&gt;Game design, thinking of it makes us to think mostly about COD, Assassin’s Creed, Batman: Arkham Asylum and many such amazing graphic games. But there are other games as well which were a part of our childhood and we still play them i.e. 2-D games.&lt;/p&gt;

&lt;p&gt;2D games have taken a special place in gaming industry mainly because of the kind of different ideas and simplicity it has plus they are easy to make in respect to 3D games and many famous mobile games are 2D or 2.5D (as unity says). Examples of such games are Angry Birds, Candy Crush and many more.&lt;/p&gt;

&lt;p&gt;As a beginner in game design field , I found it difficult for me to find some good sources to learn how to make simple games and thus wanted to share my experience as a beginner to simplify the process for others who like games not just to play but to create their own world and find it amazing as an industry and wish to learn. So, even I started with a 2-D game design as my first game. The game is called &lt;strong&gt;&lt;a href=&quot;https://enroute.sdslabs.co/&quot;&gt;‘Enroute’&lt;/a&gt;&lt;/strong&gt;. The article aims to make a simple path to create basic games for beginner game designers.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/enroute/enroute.jpeg&quot; alt=&quot;enroute&quot; title=&quot;Enroute&quot; /&gt;&lt;/p&gt;
&lt;center style=&quot;font-size: 0.9em; margin-top: -2em; margin-bottom: 2em;&quot;&gt;&lt;i&gt;Enroute — game by SDSLabs&lt;/i&gt;&lt;/center&gt;

&lt;h2 id=&quot;basic-4-steps-in-game-design-&quot;&gt;Basic 4 steps in game design —&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;1) Ideation,&lt;/strong&gt;&lt;/em&gt; where we develop and work over the idea. It’s like the spine of the game which tells us what exactly we are going to make in the game.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;2) Story and Narrative development,&lt;/strong&gt;&lt;/em&gt; where the main idea is to work on a story relating your protagonist and antagonist and involving your world/ environment with them. Here we write the complete story line with each and every twist we believe to put in.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;3) Character and World design,&lt;/strong&gt;&lt;/em&gt; where we work on designing the characters as per the requirement of the story and the kind of game we are making like in 2-D game and considering it moving in one direction, I made my character like this.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;4) Play-testing and Prototyping,&lt;/strong&gt;&lt;/em&gt; which is an important part of designing the game. Play-testing helps you out in knowing much about the various loopholes in your game and we can even note down the reaction of our players as in which part affects them in which way. Surprised or bored or what twists you were expecting and how they respond to it.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Therefore, following these four steps helps you keep your work in an &lt;strong&gt;ordered manner&lt;/strong&gt; and &lt;strong&gt;reduces time delay&lt;/strong&gt; and helps keeping &lt;strong&gt;balance in the game&lt;/strong&gt; plus making the &lt;strong&gt;process simple&lt;/strong&gt; at the same time.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;using-the-4-steps-above-in-enroute-design-ing&quot;&gt;Using the 4 steps above in Enroute Design ing—&lt;/h2&gt;
&lt;p&gt;I proceeded with my game in this manner only which surprisingly helped me to complete its design at a good speed and keeping everything ordered.&lt;/p&gt;

&lt;h3 id=&quot;1-starting-with-ideation&quot;&gt;1. Starting with ideation&lt;/h3&gt;

&lt;p&gt;The game was coded over in a night in a gaming hackathon conducted within SDSLabs where the theme was to create simple 2D games. The idea of the game was simple as to keep avoiding obstruction and move forward. So after the game was coded it used to look like this :&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/enroute/first-look.png&quot; alt=&quot;first look&quot; title=&quot;First Look&quot; /&gt;&lt;/p&gt;
&lt;center style=&quot;font-size: 0.9em; margin-top: -2em; margin-bottom: 2em;&quot;&gt;&lt;i&gt;First look after the Hackathon&lt;/i&gt;&lt;/center&gt;

&lt;h3 id=&quot;2-story-development&quot;&gt;2. Story Development&lt;/h3&gt;

&lt;p&gt;This is where my actual work started. As I was given something like that image and I was to make it at least interesting for the player so even if he looks at it once he tries to play it. With this motive I started working on the story and believe me the more inspirations you think of the easy it gets for you to search a story. The inspirations for you can come from various comics, movies, novels, cartoons or anything you like in your dream world anything like that. The game design is a place where you can make people see things from your perspective and this is the coolest things. Many of your ideas for story may come from some dreams. But not in my case, I am a big ‘star wars’ fan and my story was also something on the spaceship and exploration.&lt;/p&gt;

&lt;h3 id=&quot;3-character-and-world-design&quot;&gt;3. Character and World Design&lt;/h3&gt;

&lt;p&gt;Now as my story was complete I started working on how to display my character and I was very impressed by the ‘KetchApp Games’ and observed how they make games. Most of their 2-D game have two sections. One character and the things it can interact with and the other one is the world which is mainly in background. The world is generally colored and the character and its surroundings is kept generally black.&lt;/p&gt;

&lt;p&gt;So my main character (protagonist) is an alien invasion spaceship which is landed on this planet Tokoyoo and is moving through it. The blockings in the game are (antagonist).&lt;/p&gt;

&lt;p&gt;The reason to make my character look like flying object and a little sci-fi I made it something like this.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/enroute/spaceship.png&quot; alt=&quot;spaceship&quot; title=&quot;Spaceship&quot; /&gt;&lt;/p&gt;
&lt;center style=&quot;font-size: 0.9em; margin-top: -2em; margin-bottom: 2em;&quot;&gt;&lt;i&gt;Main Character (An alien spaceship)&lt;/i&gt;&lt;/center&gt;

&lt;p&gt;The world design was also thought out to be of some different because my world was supposed to look like some other planet and give a different feeling. I went for inspirations for the world design from various online sites like Pinterest. Thus, I worked on the background mainly on sky and mountains. Their natural color is somewhat different and I made it something like this.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/enroute/structure-left.png&quot; alt=&quot;structure-left&quot; title=&quot;structure-left&quot; /&gt;&lt;/p&gt;
&lt;center style=&quot;font-size: 0.9em; margin-top: -4em; margin-bottom: -3em&quot;&gt;&lt;i&gt;Structure Generation&lt;/i&gt;&lt;/center&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/enroute/structure-right.png&quot; alt=&quot;structure-right&quot; title=&quot;structure-right&quot; /&gt;&lt;/p&gt;
&lt;center style=&quot;font-size: 0.9em; margin-top: -4em; margin-bottom: 2em;&quot;&gt;&lt;i&gt;After color &amp;amp; detailing&lt;/i&gt;&lt;/center&gt;

&lt;h3 id=&quot;4-play-testing&quot;&gt;4. Play-testing&lt;/h3&gt;

&lt;p&gt;It was the most amazing part because this is where you test your own made game for the first time. I asked my friends and seniors at SDSLabs to play it and I noted their reactions and difficulty they faced. Then I worked on the music and decreased the speed of the antagonist to make it better.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A lot of information is collected from &lt;strong&gt;play-testing&lt;/strong&gt; like how much colors affect the game-play and what reaction player has with respect to your game. Is he bored or is it too difficult for him. This helps you keep &lt;strong&gt;balance&lt;/strong&gt; in the game.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;statistics-&quot;&gt;Statistics —&lt;/h2&gt;

&lt;p&gt;The day after it was launched, I was curious to know the stats and it was never publicized much so I wasn’t expecting much of the output but it showed really good performance for the first day itself.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://mixpanel.com/&quot;&gt;mixpanel&lt;/a&gt; filter was used to get the analytics of the game and this filter gets blocked by the AdBlock app in the browser.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/enroute/stats.png&quot; alt=&quot;stats&quot; title=&quot;stats&quot; /&gt;&lt;/p&gt;
&lt;center style=&quot;font-size: 0.9em; margin-top: -2em; margin-bottom: 2em;&quot;&gt;&lt;i&gt;Statistics of the game on the launch date&lt;/i&gt;&lt;/center&gt;

&lt;h2 id=&quot;conclusion-&quot;&gt;Conclusion —&lt;/h2&gt;

&lt;p&gt;This is how I designed my first game. Right now, you can play the game here at &lt;strong&gt;&lt;a href=&quot;https://enroute.sdslabs.co/&quot;&gt;‘Enroute’&lt;/a&gt;&lt;/strong&gt;. As a part of experiment, this game was never developed further no more changes were done like changing background just to make sure that the user feels like that the time is running in the virtual world and many other important changes. But despite being monotonic which everyone feels after playing it for a few times, it made me aware about a lot of things in designing games and helped me learn this process.&lt;/p&gt;

&lt;p&gt;There is this small video of the game and all of the game design details can be seen over &lt;a href=&quot;https://www.behance.net/gallery/45698223/Enroute-Game-Design&quot;&gt;Behance&lt;/a&gt;. The game can be played over &lt;a href=&quot;https://enroute.sdslabs.co/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;iframe src=&quot;https://player.vimeo.com/video/193183427&quot; width=&quot;100%&quot; height=&quot;375&quot; frameborder=&quot;0&quot; webkitallowfullscreen=&quot;&quot; mozallowfullscreen=&quot;&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;So thank you for reading it till the end, I hope all the beginners like me out there find it interesting and will soon start creating their own worlds and don’t consider it to be a tough fight.&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;Pramit Singhi&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Final recruitment list For 1st year (2018)</title>
      <link>https://blog.sdslabs.co/2018/01/recruitment-final-list-18</link>
      <pubDate>Sun, 14 Jan 2018 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2018/01/recruitment-final-list-18</guid>
      <description>&lt;p&gt;We interviewed 75 people before releasing the final list of selected people.
It was a really tough job to filter down from the talented applicants to the
final list. Sadly, we have limited vacancies and can only take in a limited
number. But this is not the end of line for others, there’s still a way to
&lt;a href=&quot;/2014/01/how-to-join-sdslabs&quot;&gt;join SDSLabs&lt;/a&gt;. We’ll continue taking open
lectures on variety of topics. Stay connected with us on our Facebook
&lt;a href=&quot;https://facebook.com/sdslabs&quot;&gt;page&lt;/a&gt; for the updates regarding this.&lt;/p&gt;

&lt;h2 id=&quot;programmers&quot;&gt;Programmers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Harsh Kumar Bhartiya &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;) 17114036&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Harshit Maurya &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;) 17114037&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Hritvi Bhandari &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;) 17114039&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Kanav Gupta &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;) 17114042&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Nikita Singh &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CE&lt;/em&gt;) 17113077&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Palak Goenka &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ECE&lt;/em&gt;) 17116050&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Piyush Sethia &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;) 17114057&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Saksham Kukreja &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;IN&lt;/em&gt;) 17310015&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Supratik Das &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ECE&lt;/em&gt;) 17116071&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Twarit Waikar &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;) 17114074&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Vaibhav &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CE&lt;/em&gt;) 17118077&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;designers&quot;&gt;Designers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Kshitiz Kashyap &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;MSM&lt;/em&gt;) 17312013&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Tanvee Moghe &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;GT&lt;/em&gt;) 17410029&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Yash Khandelwal &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CE&lt;/em&gt;) 17113133&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
&lt;p&gt;Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Working at SDSLabs (14)</title>
      <link>https://blog.sdslabs.co/2017/12/working-at-sdslabs-14</link>
      <pubDate>Thu, 28 Dec 2017 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2017/12/working-at-sdslabs-14</guid>
      <description>&lt;h2 id=&quot;before-sds&quot;&gt;Before SDS&lt;/h2&gt;

&lt;p&gt;Like most of the people after JEE, I too didn’t know much about computers and programming, though I was curious enough to explore it. After coming to IIT Roorkee, the biggest question was from where should I start?
I was advised by seniors in ice-breaking sessions to explore various fields and make use of opportunities available here. Initially, programming seemed so diverse that I found it overwhelming. So, I started learning HTML and CSS, as I had somewhat learnt it in class 10. Through this, I was able to get into NSS Technocreative Web-Development cell. Apart from that, I was able to learn Java in my Object-Oriented programming course.&lt;/p&gt;

&lt;p&gt;From the beginning, SDSLabs was continuously organising various competitions on Erdős, Codevillage and Backdoor. Through these, I got to know about SDSLabs and became more inquisite in software development. Then, I decided to look into full-stack development during the winter break and get into SDSLabs.&lt;/p&gt;

&lt;h2 id=&quot;entry-to-sdslabs&quot;&gt;Entry to SDSLabs&lt;/h2&gt;

&lt;p&gt;I still remember, it was 2 o’clock on the last day of SDSLabs’ interview, and the list of selected members was to be declared by the day end. Selected students were getting called by SDSLabs .On the other hand, I wasn’t even called for interview round. &lt;span style=&quot;color:grey&quot;&gt;(inner me , &lt;em&gt;“bhai ka fir kat gya”&lt;/em&gt;)&lt;/span&gt;.Then I decided to give it one last shot, called a senior and found out that due to some confusion with names, my name was struck off even before getting to interviews. They asked me to come in 5 mins and took my interview, it was conducted in two stages. First round was about general programming and critical thinking, the main motive of this round was to galvanize me. Next round, was more or less a discussion, and to my enjoyment (and to my relief) they were asking about my point of view on certain problems, and it was really fun.&lt;/p&gt;

&lt;p&gt;Two hours later, they announced the final list and my name was there.&lt;/p&gt;

&lt;h2 id=&quot;journey-begins&quot;&gt;Journey Begins&lt;/h2&gt;

&lt;p&gt;When I entered SDSLabs, among the first things which grabbed my attention was the pink interior &lt;span style=&quot;color: grey&quot;&gt;(there’s an interesting story behind that )&lt;/span&gt;, which were lined up with achievements of the members and alumni. I was both impressed and inspired by them, and how they were able to achieve &lt;em&gt;so such&lt;/em&gt; within such a short timespan at IITR. At labs, we were expected to be complete beginners and a recap of some basic but important topics was provided. Lecture on various topics ranging from HTML/CSS to networking, and emerging fields like bitcoins and blockchain were held. Through projects we are able to apply it for creating awesome and useful applications. While going through this cycle of learning and testing our knowledge, seniors guided us and helped with our silliest doubts.&lt;/p&gt;

&lt;p&gt;During that time in &lt;em&gt;February&lt;/em&gt;, &lt;em&gt;Microsoft organised “code.fun.do”, my first hackathon, with some help of seniors and spending sleepless nights, a small but full blown application was ready&lt;/em&gt;. That encounter with new technologies, developing application and it’s delivering was astounding.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;SDSLabs&lt;/em&gt; is at its peak when &lt;em&gt;most of the members&lt;/em&gt; are there, discussing and developing together. This makes the whole atmosphere very energetic, and most of the time scrutiny is over various topics like unix, devTools and sysadmin stuffs. Through this bombardment of knowledge, I have got to learn a lot. Sometimes, we compete for most hours spent in labs to maintain workaholic environment. Often I have returned at 2-3 o’clock (and fellas, its A.M.), and sometimes even spent the night over there. One of my favorite nights is when we conducted the internal hackathon to develop some of our own applications, got to work in a team and that trifling competition, including the most entertaining part of flying kira’s drone.&lt;/p&gt;

&lt;p&gt;Sometimes, gyan sessions from seniors are necessary to keep ourselves motivated. Resources and direction provided by them help in maintaining swift workflow. Following reddit, hackernews and medium has become a part of my daily routine. Without even realising, I have gained so much from labs each day that such exposure wouldn’t be possible anywhere else.&lt;/p&gt;

&lt;h2 id=&quot;fun-and-trip&quot;&gt;Fun and Trip&lt;/h2&gt;

&lt;p&gt;Chapos is one of the in-built features of SDSLabs. Within labs, whenever someone does something great, it means a time for chapo. Every group in IITR has chapos but the frequency and level with which SDSLabs has, are unmatched. We also have an annual trip, last year it was to Rishikesh. Packed with trekking, camping and rafting, along with a lot of fun, it was a complete package. Playing mafia, sharing our life experience, listening to others and late night horror stories made it more memorable. The following day’s rafting and cliff jumping was thrilling.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/trip2017.jpg&quot; alt=&quot;trip-pic&quot; title=&quot;SDSLabs Trip 2017&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Last year that I spent here has taught me so much; fun and entertainment helped in easing this process and kept me motivated.&lt;/p&gt;

&lt;h2 id=&quot;recruitments&quot;&gt;Recruitments&lt;/h2&gt;

&lt;p&gt;We are going to have recruitments within the first half of January and will be looking for some of the most curious and energetic minds of the younger IITR junta. These recruitments are a way of knowing our juniors and letting them know about us.&lt;/p&gt;

&lt;p&gt;Waiting eagerly for you. &lt;span style=&quot;color:grey&quot;&gt;(inner me, &lt;em&gt;“aaye aapka intezaar hai”&lt;/em&gt;)&lt;/span&gt;.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Working at SDSLabs (13)</title>
      <link>https://blog.sdslabs.co/2017/12/working-at-sdslabs-13</link>
      <pubDate>Sat, 23 Dec 2017 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2017/12/working-at-sdslabs-13</guid>
      <description>&lt;h2 id=&quot;noob-ish-beginnings&quot;&gt;Noob-ish Beginnings&lt;/h2&gt;

&lt;p&gt;Before starting life in IIT Roorkee, I was an ultra noob in computer programming. I remember writing some BASIC programs in standard 8, but it’s a fleeting memory. Plus, I’d taken physical education as my optional subject for boards because its supposedly easier to score in. The result was that I could knock off names of different yoga asanas and tell you what not to eat before expected cardiovascular exertion, but had very little idea of how the internet works. However, starting off with an empty head did prevent me from having any preconceived notions(good or bad) about programming.&lt;/p&gt;

&lt;p&gt;I’d heard about SDSLabs while looking up pros and cons of IIT Roorkee after JEE results, and it sounded like a fascinating group to get into. During first semester, I learnt some basic c programming, and then extended to c++. I learnt OOP in java in one of our courses. During winter break, I dabbled a bit in android development while coding an application for Droid Wars 2016.&lt;/p&gt;

&lt;h2 id=&quot;alohomora-lab&quot;&gt;Alohomora Lab!&lt;/h2&gt;

&lt;p&gt;After the recruitment test in January 2017, I got called up for an interview at around 12.30 am, which lasted for 2-3 hours. I was elated on getting a call at around 4.30 am that confirmed my selection. From the first day itself, the lab seniors made us feel very comfortable. There isn’t any visible hierarchy in SDSLabs, the group functions with a collective aspiration of its members to create and innovate. I personally felt a sense of responsibility to somehow contribute in carrying forward the group’s legacy after listening to narrations of the various exploits of our alumni in their campus days. I’m sure everyone else feels the same way, and that is essential for SDSLabs.&lt;/p&gt;

&lt;h2 id=&quot;work-cuture&quot;&gt;Work Cuture&lt;/h2&gt;

&lt;p&gt;In the initial days, we had lectures on topics like web development, bash commands, version control and networking. Staying in lab for long hours became routine, and I loved every moment of it. Cycling back to RJB at 4am is a chilling experience, but well, &lt;strong&gt;it was worth it&lt;/strong&gt;. I remember a lecture on MVC &lt;em&gt;starting at 10pm and ending at around 7am the following day!&lt;/em&gt; People at SDSLabs are always receptive to answering your doubts, even the seemingly foolish ones. We have members with interests in various fields like data science, competitive programming, os development and infosec, so there is always someone to guide you in your field of choice. Seniors at SDSLabs are always open to holding discussions/lectures on different topics and seeing their level of expertise in different fields is a truly humbling experience.&lt;/p&gt;

&lt;p&gt;After the first few weeks, minor projects are assigned under a mentor. The nature of work at SDSLabs involves bug fixing/feature addition on existing applications as well as developing a new application or a version of an existing one. Code bases are large and similar to what one might experience in industry. The code size can be overwhelming initially, but my time in lab taught me that reading large volumes of code, not exactly reading but glancing long enough to get the gist of it, is an art in itself.&lt;/p&gt;

&lt;p&gt;One of my biggest takeaways from time spent in lab is that I could acknowledge the pain people have gone through over the years to make life easier for future developers. How simple fluctuations between two voltage levels, or in binary terms 0 and 1, were somehow exploited to create complex systems that play such fundamental roles in our lives, is truly mind-boggling. &lt;em&gt;Computer science as a field earned my respect&lt;/em&gt;, and for that I shall remain grateful.&lt;/p&gt;

&lt;h2 id=&quot;all-work--more-play&quot;&gt;All Work &amp;amp; More Play&lt;/h2&gt;

&lt;p&gt;We had an amazing annual trip to Rishikesh; playing mafia, sharing anecdotes and life experiences next to soft embers of a fireplace along the banks of the Ganga, under a starry sky. There are regular chapos, often to celebrate someone winning a hackathon or getting a cool internship. We have countless running jokes, some of them a bit stale, but they get recycled after prolonged use! Life at SDSLabs is fun, and it is far from monotonous.&lt;/p&gt;

&lt;h2 id=&quot;a-lifelong-association&quot;&gt;A Lifelong Association&lt;/h2&gt;

&lt;p&gt;A member’s association with SDSLabs doesn’t end after graduating. We maintain strong contact with our esteemed alumni through our Slack organization and constantly look up to them for advice and guidance. In fact, a plusplus(its an internal appreciation thing) from an alumnus is greatly valued, and nearly every post from an alumnus on Slack is showered with love reacts!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/team2017.jpg&quot; alt=&quot;alt text&quot; title=&quot;SDSLabs family 2017&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;recruitments&quot;&gt;Recruitments&lt;/h2&gt;

&lt;p&gt;SDSLabs holds recruitments annually for first year students in January. Do try to give it your best shot. It’s great if you make it; but even if you don’t, feel free to contact us, for as rightly said by the greatest wizard of our time, &lt;strong&gt;&lt;em&gt;“Help shall always be provided at SDSLabs to those who ask for it.”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>SDS Hackathon 2017</title>
      <link>https://blog.sdslabs.co/2017/09/sds-hackathon-2017</link>
      <pubDate>Tue, 05 Sep 2017 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2017/09/sds-hackathon-2017</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;I want you to go out and observe a random group of bees dancing in total chaos. Now, I want you to look at a beehive, appreciate its structure and understand the perfection which went into building it. The process which guides such a random crew into making things which personify perfection is what truly describes the purpose of a hackathon.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Participating in SDS Hackathon was a very nice experience for us and winning the competition makes it even better.  Besides this, the process that goes into taking a brainstormed idea to a working project was an experience that taught as a lot. I was a member of the team named &lt;em&gt;HackOverflow&lt;/em&gt; and we optimised the OCR process to make it compatible with mobile processors and to make it capable to recognise text from live camera stream. So, here is a glimpse of the entire process from brainstorming to the final presentation.&lt;/p&gt;

&lt;h3 id=&quot;brainstorming-the-idea&quot;&gt;Brainstorming the idea&lt;/h3&gt;
&lt;p&gt;Though this part marks the beginning of any hackathon but this is also one of the toughest part. The problem being &lt;em&gt;originality&lt;/em&gt; and &lt;em&gt;the X-factor&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Our team had a few members who were fluent enough in Android Development, so the choice of the platform was easy. We began by exploring various android apps particularly those developed by Google. One of the members was obsessed by &lt;em&gt;Google Keep&lt;/em&gt; and so to tease her we started to find flaws in the app. After fighting over some random shit, we realised a genuine feature which was missing in the app - &lt;strong&gt;the ability to read text from the camera (OCR)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Well, exploring this feature was then inevitable. We found some libraries which could read text from static images. So just adding the ability to read text from a static image was child’s play (credits to the awesome Google Vision Library). So we decided to extend this feature to incorporate &lt;strong&gt;live camera stream&lt;/strong&gt; and add this to a note taking app like Keep.&lt;/p&gt;

&lt;h3 id=&quot;the-development-process&quot;&gt;The development process&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;The main motive of the hackathon was to make freshies aware of the various domains of the technology and to make them comfortable with the process of software development.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Each of our team member was on a seperate ground as far as Android Development was concerned. So making them work together (Being careful of the fact that the first yearites do  not lose their interest owing to the intimidating nature of the project) at the same level was a near Herculean task.&lt;/p&gt;

&lt;p&gt;We began by dividing the tasks by carefully analysing the prior knowledge of a particular member and their capacity to learn new stuff in the given time frame and assigning respective tasks to them.&lt;/p&gt;

&lt;p&gt;The constant help from the members of MDG and SDSLabs proved to be a great enthu booster. There were times when we felt that our idea was infeasible and that we would not be able to complete the project. But the perks of winning and the thought of achieving something which could be of great potential was sufficient enough to raise our morales and to put our asses to work. Finally, the best part was &lt;strong&gt;infinite food&lt;/strong&gt; and drinks which were provided by the organisers.&lt;/p&gt;

&lt;h3 id=&quot;finishing-and-presenting-the-app&quot;&gt;Finishing and presenting the app&lt;/h3&gt;

&lt;p&gt;We worked continously for 36 hours skipping food and sacrificing sleep. But all the hardwork paid off when we first took out our app for testing and it read the word &lt;strong&gt;Nescafe&lt;/strong&gt; perfectly from the top of a Latte Pack. We were so happy after achieving what we aimed for.&lt;/p&gt;

&lt;h4 id=&quot;screenshots&quot;&gt;Screenshots&lt;/h4&gt;
&lt;p&gt;So here is a glimpse of what our app actually does. It can read text from live camera stream !! Be it a video or a static image or a random poster you saw while driving, it can read them all.
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/hackathon_ocr_img.png&quot; alt=&quot;ocr_static&quot; /&gt; &lt;img src=&quot;/images/posts/ocr_hackathon_img.png&quot; alt=&quot;ocr_video&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Then came the presentations. We had to present our application, first to the members of SDS and then to the Professors who were the final judges of the competition. The presentation part too was quite interesting as we were introduced to a plethora of new ideas from fellow contestants. The entire audience took interest in the presentations and there were a large number of enlightening questions, both from the jury as well as the audience.&lt;/p&gt;

&lt;h3 id=&quot;results&quot;&gt;Results&lt;/h3&gt;

&lt;p&gt;The results were declared soon after the presentations. We kept our fingers crossed as the results were declared. The judges summarised the attractive points of all the selected projects and then declared the winners who were later presented with the trophies.&lt;/p&gt;

&lt;p&gt;Overall it was a fun and enlightening experience to mentor a bunch of freshies to learn and create new stuff and syncing them with the experienced developers to create &lt;strong&gt;technologies of the future&lt;/strong&gt;.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Final recruitment list For 1st year (2017)</title>
      <link>https://blog.sdslabs.co/2017/01/recruitment-final-list-17</link>
      <pubDate>Sun, 15 Jan 2017 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2017/01/recruitment-final-list-17</guid>
      <description>&lt;p&gt;We interviewed 75 people before releasing the final list of selected people.
It was a really tough job to filter down from the talented applicants to the
final list. Sadly, we have limited vacancies and can only take in a limited
number. But this is not the end of line for others, there’s still a way to
&lt;a href=&quot;/2014/01/how-to-join-sdslabs&quot;&gt;join SDSLabs&lt;/a&gt;. We’ll continue taking open
lectures on variety of topics. Stay connected with us on our Facebook
&lt;a href=&quot;https://facebook.com/sdslabs&quot;&gt;page&lt;/a&gt; for the updates regarding this.&lt;/p&gt;

&lt;h2 id=&quot;programmers&quot;&gt;Programmers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Aaushi Kamble &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ECE&lt;/em&gt;) 16116027&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Anish Mukherjee &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ME&lt;/em&gt;) 16117015&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Ankit Kataria &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ECE&lt;/em&gt;) 16116006&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Deepesh Pathak &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ECE&lt;/em&gt;) 16116018&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Harsh Jain &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;) 16114028&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Harsha Sharma &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;EPH&lt;/em&gt;) 16122010&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Karan Shrivastav &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;EE&lt;/em&gt;) 16115059&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Kartikey Pandey &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ECE&lt;/em&gt;) 16116029&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Kriti Singh &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;) 16114036&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Manan Jain &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CH&lt;/em&gt;) 16112040&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Nikhil Kaushik &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;) 16114040&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Shiva Gupta &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;EE&lt;/em&gt;) 16115104&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Utkarsh Shukla &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CSE&lt;/em&gt;) 16114068&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Vedansh Bhartiya &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CH&lt;/em&gt;) 16112100&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Yash Dev Lamba &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ECE&lt;/em&gt;) 16116079&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;designers&quot;&gt;Designers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Ashutosh Gupta &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CE&lt;/em&gt;) 16113022&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Chirag Sharma &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CE&lt;/em&gt;) 16113026&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Divya Mangal &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CH&lt;/em&gt;) 16112023&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Milan Maheshwari &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;CH&lt;/em&gt;) 16112045&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Samar Singh Karnawat &lt;span style=&quot;font-size: 14px;&quot;&gt;(&lt;em&gt;ECE&lt;/em&gt;) 16116056&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
&lt;p&gt;Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>To and fro SDSLabs</title>
      <link>https://blog.sdslabs.co/2017/01/working-at-sdslabs-12</link>
      <pubDate>Mon, 09 Jan 2017 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2017/01/working-at-sdslabs-12</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;I want you to close your eyes &amp;amp; imagine the most satisfying experience you have had. It feels good doesn’t it? Even if it’s all in your brain. For me, that experience is perpetual. &lt;em&gt;It’s learning.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the most fulfilling and rewarding experience one can get. It’s when you’re curious about something, when you have a ton of questions - every one of them starting with How or Why! And you scratch &amp;amp; pick your brain to get your head around them, for days, all in vain. And then suddenly, on one such day, comes the moment of realization &amp;amp; delight when you get to the bottom of it. It is that I’m talking about.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Believe it or not, I just described how each of my visit to SDSLabs feels like!&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-journey-so-far&quot;&gt;The journey so far&lt;/h2&gt;

&lt;p&gt;A year ago I was just another tech crazed enthusiast. I liked fiddling with computers and I liked to wonder. Although that’s describing what everyone here does (in a very minimalistic way)! But you get my point - every time I fork a child process to retrospect my time here, it transfigures to a human torso giving me two thumbs up! Such a &lt;em&gt;spellbinding&lt;/em&gt; time it has been!&lt;/p&gt;

&lt;p&gt;No question (as the seniors said when I first came) is silly, if it can’t be answered! Or there is nothing like a stupid doubt. It is here that I have grown from being a naive freshie that I was, wondering about what happened to the data when we clicked submit to working with technologies like Laravel, message queues and Docker. There has been much to learn in these past 11 months. At this very time last year, in a similar blog post, &lt;a href=&quot;https://ashishchaudhary.in/working-at-sdslabs&quot;&gt;Ashish&lt;/a&gt; says, “&lt;em&gt;all discussions are open to all lab members and it is this lack of bureaucracy which makes lab a very comfortable place to be in&lt;/em&gt; “. I couldn’t have said it better. Being here has taught/made me aware of a few very important things e.g. &lt;em&gt;how to look for help&lt;/em&gt; to help yourself (&lt;em&gt;read stackoverflow&lt;/em&gt;), introduced me to the world of OSS (&lt;em&gt;read filing PRs&lt;/em&gt;) &amp;amp; taught me how to stay updated in a rapidly evolving and tremendously dynamic field of software development (&lt;em&gt;read HN&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;Every time I walk in, I’m surrounded by fellow members brainstorming an idea or a design or trying their hands on some fancy new dev platform. And as I’m about to sit and open my laptop I look at the wall in front of me embellished with markers showing the bounties and glory our senior members have reaped for the group and the milestones we have reached. It is both motivating and humbling.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://join.sdslabs.co/images/whysds2.jpg&quot; alt=&quot;alt text&quot; title=&quot;The &apos;Wall&apos;&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;neither-jack-nor-dull&quot;&gt;Neither Jack nor dull&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;Once in a while, someone would win an Xbox for a change and as you can imagine it goes fantastically well with the 40” TV!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Being here is definitely fun. Now you don’t get to crash servers often, do you? In a few hackathons that I and other members participated over the year in places like Jaipur and Surat we have had people who recognised SDSLabs and that’s rousing!. Once in a while, someone would win an Xbox for a change and as you can imagine it goes fantastically well with the 40” TV! With the fun yearly trips that I’ve been to and the sheer number of cheese bursts I’ve had, I can say, with utmost conviction that this is the quintessential campus group.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://join.sdslabs.co/images/whysds4.jpg&quot; alt=&quot;alt text&quot; title=&quot;The &apos;Pack&apos;&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;pièce-de-résistance&quot;&gt;Pièce de résistance&lt;/h2&gt;

&lt;p&gt;Innovation and collective learning go hand in hand. SDSLabs has been at the very core of cultivating and nurturing a computer programming culture in the campus for several years now, acting on the aforementioned philosophy. It is indeed a very gratifying, humbling and a matter of pride when we as members see the effect SDSLabs has had as group in opening up I.I.T. Roorkee as a whole, to the vast sea of tech enthusiasts all around the country and out. It might seem to you as if I’m over emphasising, which I’m not. The competitions which we hold on our platforms witness participation from top teams across the world with our dedicated servers handling hundred thousand requests at a time! And &lt;em&gt;&lt;strong&gt;that&lt;/strong&gt;&lt;/em&gt; is no overstatement. As Paras Chetal says in his &lt;a href=&quot;https://blog.sdslabs.co/2017/01/working-sdslabs-11&quot;&gt;blog&lt;/a&gt;, it feels good when we see random people around the world recognising our &lt;a href=&quot;https://sdslabs.co&quot;&gt;platforms&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s3.amazonaws.com/media-p.slid.es/uploads/487092/images/3038375/13320575_1088178631228621_2000073313386826177_o.png&quot; alt=&quot;alt text&quot; title=&quot;The &apos;Backdoor&apos;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I can start listing the tech giants from Google MTV to Facebook and universites from M.I.T. to N.Y.U. where the alumini base of this group has expanded to, but that (although motivating) will be being boastful, which does not serve the purpose I talk about when we started.&lt;/p&gt;

&lt;h3 id=&quot;circa-2015&quot;&gt;Circa 2015…&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;It is then I knew that this is the place which could provide me with the pleasure I talk about in the very beginning!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There (generally) is a lot of fuss &amp;amp; confusion among the latest lot of students about what this group is, what it does in the campus. Unlike many, I came to Roorkee with no previous knowledge (or bias) of this or any other campus group for that matter. I knew that I enjoyed programming and hence attended the intro talk of every other tech group. SDSLabs being one of them. And it is after seeing all the applications it had for the masses and the vast variety of fields the members worked in, I knew this is the place that could provide me with the pleasure I talk about in the very beginning! &lt;span style=&quot;background-color: #fffd4a&quot;&gt;I let the work of SDSLabs influence me not what they talk about it.&lt;/span&gt;&lt;/p&gt;

&lt;h2 id=&quot;pens-down&quot;&gt;Pens Down!&lt;/h2&gt;

&lt;p&gt;As we are browsing Facebook and quickly arriving at judgements whilst being in the warmth of our bed, from the little NAT-enabled bubble of comfort (called Internet), we forget that the roots of this group lie in the time when people didn’t have access to the world of fuss outside. It is then, &lt;a href=&quot;https://muzi.sdslabs.co.in&quot;&gt;Muzi&lt;/a&gt; was born (still boasting a collection of 180,000+ songs) and &lt;a href=&quot;https://live.sdslabs.co.in&quot;&gt;Live&lt;/a&gt; and &lt;a href=&quot;https://brute.sdslabs.co.in&quot;&gt;D.C.&lt;/a&gt;. This just goes on to show that unlike the common  perception, SDSLabs is one of the most open group, all our secrets just a click away! I have been fortunate enough to be a part of this group and hope I can keep adding to the legacy.&lt;/p&gt;

&lt;p&gt;So long. Till next time.&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Winter of Code 2016 Results</title>
      <link>https://blog.sdslabs.co/2017/01/winter-of-code-2016</link>
      <pubDate>Fri, 06 Jan 2017 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2017/01/winter-of-code-2016</guid>
      <description>&lt;p&gt;Winter of Code (WOC) was a month long program organized in IIT Roorkee for the first time by &lt;em&gt;SDSLabs&lt;/em&gt; to improve the open source exposure in campus and help first yearites get a taste of open source community with a &lt;em&gt;GSoC&lt;/em&gt; like timeline.&lt;/p&gt;

&lt;p&gt;We got a great response from IITR Junta. &lt;em&gt;Cheers to all!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;From a staggering 100 submissions, 8 were chosen to continue their projects under the mentorship of SDSLabs members (GSoCers themselves). It was a great experience for us to mentor such an enthusiastic crowd. Their dedication, hard work and passion makes us believe that they have a bright future in this field.&lt;/p&gt;

&lt;p&gt;After a hectic 30 days of coding and 5 days of rigorous evaluation, here we present the list of students who have successfully passed the final evaluation:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Vishal Sharma &lt;em&gt;(ECE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Vishwas Mittal &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Suyash Gupta &lt;em&gt;(EE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Suyash Mahar &lt;em&gt;(ECE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Yash Dev Lamba &lt;em&gt;(ECE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Deepesh Pathak &lt;em&gt;(ECE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Aviral Verma &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We wish them the very best of luck for their future endeavors.
Happy Coding!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Working at SDSLabs (11)</title>
      <link>https://blog.sdslabs.co/2017/01/working-sdslabs-11</link>
      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2017/01/working-sdslabs-11</guid>
      <description>&lt;h2 id=&quot;grep-sdslabs&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grep SDSLabs&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;I got to know about the existence of SDSLabs, much like most of the people do, through the infamous JEE rank list they had released. Before coming to Roorkee I had looked at their portfolio and some of the applications they had launched and was thoroughly impressed. In fact, I was so impressed that my decision to take up Computer Science at IIT Roorkee instead of some other branch at some other IIT was perhaps even biased because of SDSLabs’ existence.&lt;/p&gt;

&lt;h2 id=&quot;pacman--sy-recruits&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pacman -Sy recruits&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;Throughout my first semester I kept hearing about the amazing things the members of SDSLabs were working on and though I did not understand most of them, it only motivated me further to be a part of the group. I attended the lecture series they had organized, worked on few infosec challenges on &lt;a href=&quot;https://backdoor.sdslabs.co&quot;&gt;Backdoor&lt;/a&gt;, independently learnt python and coded a couple of projects during my winter vacations and put them up on Github. By the end of my first semester here, I was pretty confident in what I had learnt. Remember this, I did not have much knowledge about programming before coming to IIT Roorkee. So, in fact, most of what I have learnt about software development in such a short time is directly/indirectly due to SDSLabs. This is what I like most about SDSLabs, that it has been successfully able to raise from scratch, a whole new culture of software development at IIT Roorkee! And not just that, SDSLabs has even played an indispensable role in promoting fields like information security, competitive programming,  machine learning etc. in the campus (and beyond!). Every student here at IIT Roorkee should be grateful to SDSLabs for this.&lt;/p&gt;

&lt;p&gt;Coming back to the recruitments, I got shortlisted directly to the interview round by winning the n00bCTF16 among the freshers. The interview was one of a kind! I remember sitting in Labs for around 4 hours being interviewed by different people in different skillsets. I got to know so many different things just being interviewed by these people in this duration than I had learnt in my entire first semester!&lt;/p&gt;

&lt;p&gt;When I got a call from SDSLabs that I had been selected, I was ecstatic of course. But I had worked towards this end for quite some time, and it did not come to me as a shock.&lt;/p&gt;

&lt;h2 id=&quot;init&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;init&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;I had realized during the recruitment interviews themselves that I barely knew anything. That was confirmed within the first few months of interacting with the seniors. I, slowly but surely, was getting better through the lectures and assignments that the seniors used to give, and even by just talking to them. Conversations around the dinner table during the frequent parties would be of things like UNIX, FreeBSD, and other such terms I had only heard of before. The initial few weeks were a humbling experience for sure.&lt;/p&gt;

&lt;h2 id=&quot;kworker&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kworker&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;I started working on Backdoor a few months later after getting familiar with the code base and understanding how it worked. It is written in PHP and it took a bit of getting used to, but it was fun nevertheless. A lot of work I did here at SDSLabs was also oriented towards sysadmin stuff. Getting the servers up and running, updating them, making sure the challenges on Backdoor were working properly etc. For this latter part, I learnt about docker containers, chroot jails, xinetd and how best to automate the entire process of secure deployment of challenges. Read about it &lt;a href=&quot;https://blog.sdslabs.co/2015/11/dockerizing-backdoor&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In my 3rd semester, I traveled to Surat to participate in the InOut 3.0 hackathon where we were shortlisted for the final rounds for making an in-sync music player: &lt;a href=&quot;https://github.com/hareshkh/stroom&quot;&gt;stroom&lt;/a&gt;. It was an amazing experience and I got to meet a couple of SDSLabs alumni there too!&lt;/p&gt;

&lt;p&gt;The seniors are always ready to help you out, whether be it for SDSLabs related things or otherwise. Like I said before, most of what I learnt is directly or indirectly due to the seniors and other members.&lt;/p&gt;

&lt;h2 id=&quot;cowsay-do-you-even-chill&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cowsay “Do you even chill\?”&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;Oh yes, we do! We went on the annual trip to Rishikesh a few weeks after the recruitments where we camped near a stream, trekked a bit, played Mafia, sat around a bonfire and listened to horror stories. We had multiple gaming and movie nights in which we would watch movies and play computer games all night long. Since the SDSLabs seniors were always winning something or the other, the parties were frequent too. We dance like crazy! We have many inside jokes about the members and some applications.&lt;/p&gt;

&lt;p&gt;After the farewell party, we stayed up all night just listening intently to the final-year seniors talk about SDSLabs. It clearly showed on their faces how much they cared for it and it’s members. I don’t think I’ll ever forget that night.&lt;/p&gt;

&lt;h2 id=&quot;ctrl-r&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CTRL-R&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;Looking back, being in SDSLabs for this past year has been a great experience. SDSLabs has changed me. Browsing hackernews and productive subreddits has become a part of my daily routine now. It makes my day when I read about a random &lt;a href=&quot;https://www.reddit.com/r/netsecstudents/comments/5klcm2/any_good_ctf_dumps/dbor693/&quot;&gt;stranger on reddit recommending Backdoor&lt;/a&gt; to practice security challenges, or when someone lets us know on chat.sdslabs.co that he wants to use it for a presentation he has to give.&lt;/p&gt;

&lt;p&gt;I hope that I too am able to contribute to this culture that SDSLabs’ seniors have pioneered here at IIT Roorkee. I, therefore, encourage all interested freshers to give your best shot for the recruitments. We will be recruiting in January. For more details, visit &lt;a href=&quot;https://join.sdslabs.co&quot;&gt;join.sdslabs.co&lt;/a&gt; .&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Final recruitment list For 1st year (2016)</title>
      <link>https://blog.sdslabs.co/2016/01/recruitment-final-list-16</link>
      <pubDate>Sun, 17 Jan 2016 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2016/01/recruitment-final-list-16</guid>
      <description>&lt;p&gt;We interviewed 75 people before releasing the final list of selected people. It was a really tough job to filter down from the talented applicants to the final list. Sadly, we have limited vacancies and can only take in a limited number. But this is not the end of line for others, there’s still a way to &lt;a href=&quot;/2014/01/how-to-join-sdslabs/&quot;&gt;join SDSLabs&lt;/a&gt;. We’ll continue taking open lectures on variety of topics. Stay connected with us on our Facebook &lt;a href=&quot;https://facebook.com/sdslabs&quot;&gt;page&lt;/a&gt; for the updates regarding this.&lt;/p&gt;

&lt;h2 id=&quot;programmers&quot;&gt;Programmers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Abhay Gupta &lt;em&gt;(EE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Ayush Maheshwari &lt;em&gt;(ME)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Deepak Verma &lt;em&gt;(EE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Ketan Gupta &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Manish Kumar Dangi &lt;em&gt;(P&amp;amp;I)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Mohan Agrawal &lt;em&gt;(Engg. Phy)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Mugdha Jadao &lt;em&gt;(EE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Nisha Agarwal &lt;em&gt;(EE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Paras Chetal &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Utkarsh Gupta &lt;em&gt;(ECE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Utsav Mangal &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;designers&quot;&gt;Designers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Naman Rajput &lt;em&gt;(GT)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Pramit Singhi &lt;em&gt;(EE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Tanmay Joshi &lt;em&gt;(P&amp;amp;I)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
&lt;p&gt;Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Working at SDSLabs (10)</title>
      <link>https://blog.sdslabs.co/2016/01/working-sdslabs-10</link>
      <pubDate>Mon, 04 Jan 2016 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2016/01/working-sdslabs-10</guid>
      <description>&lt;h2 id=&quot;the-initial-launch&quot;&gt;The Initial Launch&lt;/h2&gt;

&lt;p&gt;Being a non-coder during my school days, I had never expected to be a part of one of the most technical groups of the campus. It was in July 2014, when I was first introduced to SDSLabs via their famous JEE listing.
It was then that I knew it would be awesome working in this group. I got in SDSLabs in January 2015, after an interview that lasted half an hour at 3 in the morning (Yes, in the morning!) during the campus recruitments that year.
I never thought I’d get selected considering the fact that I accepted in my interview that I had no prior experience in development. And this is one misconception everyone needs to get over.
&lt;strong&gt;To be in SDSLabs, you only need to be eager to learn&lt;/strong&gt;.&lt;/p&gt;

&lt;h2 id=&quot;the-first-few-days&quot;&gt;The First Few Days&lt;/h2&gt;

&lt;p&gt;After all the glamour and appreciation faded away, came the time to start developing and learning. January was filled with tonnes of lectures on web development. I remember in particular a lecture on php that took 6 long hours to finish, after a 9-5 schedule of classes that day. But it was always fun. It was the first time that I was interacting with seniors with such freedom and it was a wonderful experience altogether. All this was followed by picking up our own projects and start working on some real life applications.&lt;/p&gt;

&lt;h2 id=&quot;the-technology&quot;&gt;The Technology&lt;/h2&gt;

&lt;p&gt;Right after joining SDSLabs I was introduced to technologies like git, node, scala, jquery, laravel, lumen, three.js and many more. These opened up an entirely new world of technology for me, being a complete newbie in these things. I shifted to Ubuntu, one of the best OS you could have. I learned game development, creative arts, design as well as web development along my journey.&lt;/p&gt;

&lt;h2 id=&quot;srishti&quot;&gt;Srishti&lt;/h2&gt;

&lt;p&gt;In March arrived Srishti, the cultural festival of the Hobbies Club. I took up a project on 3-D projection mapping called “Kakashi” and remember missing all my classes and sleeping in lab for 3 consecutive days at that time. It was the most interesting time I had in lab. The project involved shooting all of the lab members singing “Animals” by Maroon 5, and projecting them on 3-D face maps for an exotic virtual feel. We demoed the google cardboard, made games on the Leap motion device and had a lot of fun along the way. That was the most exciting time I had that semester.&lt;/p&gt;

&lt;h2 id=&quot;the-trip&quot;&gt;The Trip&lt;/h2&gt;

&lt;p&gt;Exactly one week before the mid terms, we planned to go to Rishikesh for the Epic Lab Trip. I have to say it was the best time I had in IITR by far. Late night bonfire and Mafia was followed by Rafting in the morning. The interaction level boosted and we all became a part of a family after this trip.&lt;/p&gt;

&lt;h2 id=&quot;the-people&quot;&gt;The People&lt;/h2&gt;

&lt;p&gt;At SDSLabs, I got to meet some of the most creative minds at IITR. The level of interaction is immense and you get to meet people working on every field in Computer Science and Technology. The Kandoi sessions, teasing Sopan, body tips from Aditya, GSoC tips from vampire, the Aps and Divij Chicken Chapos and the &lt;em&gt;Palai&lt;/em&gt; Gyan have all made the journey more and more special along the way. Lab has been the most interesting time that I had at IITR and I can’t imagine my life at IITR without these people.&lt;/p&gt;

&lt;h2 id=&quot;the-farewell&quot;&gt;The Farewell&lt;/h2&gt;

&lt;p&gt;Bidding seniors off good bye is always hard but is fun too. We made &lt;a href=&quot;https://sdslabs.co/farewell&quot;&gt;sdslabs.co/farewell&lt;/a&gt; in half an hour, made individual invitation cards and made the whole experience memorable.&lt;/p&gt;

&lt;h2 id=&quot;recruitment&quot;&gt;Recruitment&lt;/h2&gt;

&lt;p&gt;SDSLabs will be recruiting in January. If you want to be a part of Lab you can find further details &lt;a href=&quot;https://join.sdslabs.co&quot;&gt;here&lt;/a&gt;. And remember you only need to be eager to learn to get into lab.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Stay hungry, Stay Foolish!”&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Working at SDSLabs (9)</title>
      <link>https://blog.sdslabs.co/2015/12/working-sdslabs-9</link>
      <pubDate>Fri, 25 Dec 2015 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2015/12/working-sdslabs-9</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is a continuation to SDSLabs’ now customary series of posts before the recruitment in January where we write about our experience with lab.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It has been 11 months since I joined lab in January and I find it difficult to distill down all the experiences in this post. But I’ll try.&lt;/p&gt;

&lt;p&gt;It is very amusing to me as I reflect back on the changes that SDSLabs has brought in my life so far. Checking emails and Slack and Hacker News has taken a precedence over Facebook and Reddit, Elementary OS has replaced Windows, and python has replaced video games. Lab is the place where I was first introduced to the fascinating realm of open source software. I had always loved using software since the NES games days but actually starting to make it myself has been nothing short of a revelation to me. Thanks to SDSLabs for that!&lt;/p&gt;

&lt;h2 id=&quot;learning-experience&quot;&gt;Learning Experience&lt;/h2&gt;

&lt;p&gt;The first month was spent in lectures and getting up and running with the essential tech. After that I picked up Backdoor and worked on a new feature. Then Srishti, hobbies club’s annual tech-exhibition arrived and I managed it’s website and also made a rock-paper-scissors game with the Leap Motion device we have in lab. In the summer break I worked on some small side projects. Other than that, participating in a hackathon allowed me to try out &lt;a href=&quot;https://ashishchaudhary.in/torrent-streaming/&quot;&gt;a crazy but fun idea&lt;/a&gt;. My major project was on Backdoor’s behind the wheels automation which introduced me to some very exciting technologies. I have written about it in detail in another &lt;a href=&quot;https://blog.sdslabs.co/2015/11/dockerizing-backdoor&quot;&gt;blog post&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;work-culture&quot;&gt;Work Culture&lt;/h2&gt;

&lt;p&gt;Work culture in lab is literally what it’s motto says: &lt;em&gt;Think. Build. Ship&lt;/em&gt;. You can work on any existing project that you like or even a new one. Senior members in lab are some of the best mentors you can get in campus. There are a lot of things to learn everytime you talk to them, be it best practices in writing software, or some new interesting tech, or even what you should google if you want to do &lt;X&gt;. Not to forget the code reviews from time to time. Slack, with its amazing addons has now become an integral part of lab&apos;s culture. Every commit message, code review, new issue, and deployment status goes straight to our Slack. We have this system of `++` and `--` that keeps the score of every lab member and we use it as a tool to punish bad deeds (seriously, those `--` hurt so much; btw I am about to hit 100 for the first time, unless someone resets it yet again while testing their custom bot scripts). One important aspect that has also been mentioned many times in previous posts is that all discussions/code is always open to all members. This lack of bureaucracy makes lab a very comfortable place to be in.&lt;/X&gt;&lt;/p&gt;

&lt;h2 id=&quot;fun&quot;&gt;Fun&lt;/h2&gt;

&lt;p&gt;Like most campus groups in IITR, we also have our annual trip. Last time we went to Rishikesh. Playing Mafia late at night on the banks of Ganga (my n00b level in this game is over 9000) and the river rafting next day made it memorable. We also have our fair share of chapos. Working in lab is fun.&lt;/p&gt;

&lt;h2 id=&quot;recruitment&quot;&gt;Recruitment&lt;/h2&gt;

&lt;p&gt;SDSLabs goes recruiting this January. Visit &lt;a href=&quot;https://join.sdslabs.co&quot;&gt;join.sdslabs.co&lt;/a&gt; for more info and keep an eye on our Facebook page for important announcements.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Dockerizing Backdoor</title>
      <link>https://blog.sdslabs.co/2015/11/dockerizing-backdoor</link>
      <pubDate>Fri, 27 Nov 2015 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2015/11/dockerizing-backdoor</guid>
      <description>&lt;p&gt;&lt;a href=&quot;https://backdoor.sdslabs.co/&quot;&gt;Backdoor&lt;/a&gt; is a long-lived Capture The Flag style competition run by &lt;a href=&quot;https://sdslabs.co/&quot;&gt;SDSLabs&lt;/a&gt;. For the uninitiated, in &lt;a href=&quot;https://ctftime.org/ctf-wtf/&quot;&gt;Capture The Flag (CTF)&lt;/a&gt; style events in network security, participants have to solve questions in various categories like cryptography, web, binary exploitations etc. Backdoor hosts CTFs from time to time having duration ranging from 6 hours to 1 day.&lt;/p&gt;

&lt;p&gt;On the basis of how challenges are presented on Backdoor, there are two broad categories:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Webpage-based (hereafter referred to as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;public&lt;/code&gt; type):&lt;br /&gt;
These challenges are accessible from a web browser. Example: &lt;a href=&quot;https://backdoor.sdslabs.co/challenges/JUDGE&quot;&gt;JUDGE&lt;/a&gt;, &lt;a href=&quot;https://backdoor.sdslabs.co/challenges/MEDUSA&quot;&gt;MEDUSA&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Interactive challenges (hereafter referred to as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;script&lt;/code&gt; type):&lt;br /&gt;
These challenges are accessible over netcat. Example: &lt;a href=&quot;https://backdoor.sdslabs.co/challenges/CLOSED&quot;&gt;CLOSED&lt;/a&gt;, &lt;a href=&quot;https://backdoor.sdslabs.co/challenges/RAPIDFIRE&quot;&gt;RAPIDFIRE&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then there is the third type where the challenge requires both types. Example: &lt;a href=&quot;https://backdoor.sdslabs.co/challenges/TEAM&quot;&gt;TEAM&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;previous-architecture&quot;&gt;Previous architecture:&lt;/h3&gt;

&lt;p&gt;The public-type challenges were served by an Apache server running at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;https://hack.bckdr.in&lt;/code&gt;. The script-type challenges were run in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chroot&lt;/code&gt; jails and served using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xinetd&lt;/code&gt; super-server. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chroot&lt;/code&gt; operation is used to mimic the current directory as the root directory of the system ([change]root). More can be learned about this from &lt;a href=&quot;https://dhavalkapil.com/blogs/Combining-chroot-and-xinetd/&quot;&gt;this post&lt;/a&gt; by &lt;a href=&quot;https://twitter.com/dhaval_kapil&quot;&gt;Dhaval Kapil&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;problems-with-the-previous-architecture&quot;&gt;Problems with the previous architecture:&lt;/h3&gt;

&lt;p&gt;For public-type challenges, the same structure has been retained. Earlier, all challenges had the same &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;virtualHost&lt;/code&gt; but now each challenge has its own. This was done to better implement challenges that required custom rules or a custom domain name.&lt;/p&gt;

&lt;p&gt;Script-type challenges, however, had some major problems:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The aim is to run all script-type challenges in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chroot&lt;/code&gt; jails but adding new environments to the jail is a huge pain.&lt;/li&gt;
  &lt;li&gt;There is a big problem of redundancy. Because each challenge runs in a separate jail, each of them had their own copy of the necessary environment. This can be solved by creating a common jail for all challenges, but that puts other challenges at risk in case one of them gets compromised.&lt;/li&gt;
  &lt;li&gt;Automated monitoring of challenges’ deployment status is not easy because there is no standardization.&lt;/li&gt;
  &lt;li&gt;Deployment takes up a lot of time. Shifting challenges from one machine to another and ensuring they work fine required a lot of manual labour given that we have 70+ challenges and many of them require an elaborate setup.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;tackling-the-problems&quot;&gt;Tackling the problems:&lt;/h3&gt;

&lt;p&gt;Initially, I started working on problem 4 but figuring that out was turning out to be insanely difficult because of no standardization in the challenges. It was obvious then that a restructure was necessary. Looking for alternatives, I found Jails in FreeBSD. While these jails did solve problem 1 with their ease of setup and adding new environments, problem 2 still persisted. I came across Docker while learning about jails and after spending some time in containers, Docker became the obvious choice.&lt;/p&gt;

&lt;h3 id=&quot;how-docker-solves-these-problems&quot;&gt;How Docker solves these problems:&lt;/h3&gt;

&lt;p&gt;The description on the &lt;a href=&quot;https://www.docker.com/what-docker&quot;&gt;Docker&lt;/a&gt; website reads:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Docker allows you to package an application with all of its dependencies into a standardized unit for software development.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And that’s precisely what we need!&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Setting up a new environment is as easy as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker pull python&lt;/code&gt; which effortlessly sets up a python image for us. And we can make our own Docker images to be used and combined with other images.&lt;/li&gt;
  &lt;li&gt;Each Docker image consists of a series of layers. Docker makes use of union file systems to combine these layers into a single image. These layers are where the magic lies. If you want to update an image, instead of updating the whole image, only the relevant layer is updated. And these layers can further be used to stack images one over the other! So we can just build a python environment once and use the same for building secondary layers without redundancy thus solving problem 2.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With the major problems sorted out, lets look at the new architecture.&lt;/p&gt;

&lt;h3 id=&quot;the-new-architecture&quot;&gt;The new architecture:&lt;/h3&gt;

&lt;p&gt;The flowchart below explains how we build layers upon layers to reduce redundancy.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/dockerizing-backdoor/architecture.svg&quot; alt=&quot;Hack architecture&quot; /&gt;&lt;/p&gt;

&lt;p&gt;First we build an image &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hack-base&lt;/code&gt; that is based on an Ubuntu 15.04 image itself. We use this image to install various packages that will be required by multiple challenges and thus reducing redundancy. We follow the same approach as we move up the chart. We make separate images for each type of primary environment (nodejs/python etc) and further build an image for each challenge + images for any external dependency they need (like redis/mongodb). Then we create what are called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;containers&lt;/code&gt; that are instances of the challenge images and link containers of external dependencies, if any. It’s worth noting that the user cannot modify the image itself. The user is provided with a writable layer over the container. You may as well run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rm -rf /*&lt;/code&gt; in an Ubuntu container and it will delete all your commands and system files but only from that instance. So you can just close the container and spin up one more in less than 2 seconds and whamm! you get the vanilla system back!&lt;/p&gt;

&lt;p&gt;As for the networking to and fro from the container, we have to expose the ports that we want to map to the system. Say if a challenge based on python listens on port 8999, we expose this port from within the container and map it to a port on the system (usually the same as the one in the container). The Docker documentation provides good examples for this. Then we use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xinetd&lt;/code&gt; super-server to listen to the requests to the specified ports and spin up a disposable container accordingly.&lt;/p&gt;

&lt;h3 id=&quot;the-deployment-tool&quot;&gt;The deployment tool:&lt;/h3&gt;

&lt;p&gt;To solve problem 4, we created a tool named Beast. Beast is written in python and performs all the tasks from syncing the challenges with the production server to building the challenge images and setting up the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xinetd&lt;/code&gt; service. It can be used to deploy challenges locally or to multiple remote machines at once. After any action is performed, our Slack channel receives a notification from Beast about the deployment.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/dockerizing-backdoor/beast.png&quot; alt=&quot;Beast report on Slack&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Beast also monitors the resource usage of running containers using &lt;a href=&quot;https://github.com/google/cadvisor&quot;&gt;google/cadvisor&lt;/a&gt; and raises an alarm if something looks bad. It also exposes an API to check the challenge deployment status.&lt;/p&gt;

&lt;p&gt;One important feature of the new architecture is the standardization it brings. Now each challenge specifies a setup file that is used as a deployment guideline by Beast. Let’s take a look at a sample challenge &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pytest&lt;/code&gt; that is a mixed-type challenge. The setup file for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pytest&lt;/code&gt; is shown below.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/tocttou/58075d100b2658fc7070.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;The keys used are self-explanatory. Note that the challenge creator can also specify bash scripts for elaborate deployment (like if some challenge requires &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;composer install&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Here is a sample of how the tool works:&lt;/p&gt;

&lt;div style=&quot;text-align: center&quot;&gt;&lt;blockquote class=&quot;imgur-embed-pub&quot; lang=&quot;en&quot; data-id=&quot;4jYSvcU&quot;&gt;&lt;a href=&quot;https://imgur.com/4jYSvcU&quot;&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;script async=&quot;&quot; src=&quot;https://s.imgur.com/min/embed.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;whats-next&quot;&gt;What’s next?&lt;/h3&gt;

&lt;p&gt;We have some really cool ideas in store for Backdoor in the coming months. Stay tuned for more!&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Note: &lt;/b&gt; This post is also available at &lt;a href=&quot;https://ashishchaudhary.in/dockerizing-a-ctf/&quot;&gt;Dockerizing a CTF&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Launching Hubble</title>
      <link>https://blog.sdslabs.co/2015/09/launching-hubble</link>
      <pubDate>Wed, 02 Sep 2015 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2015/09/launching-hubble</guid>
      <description>&lt;p&gt;&lt;em&gt;Today, we launched a new application called &lt;a href=&quot;https://hubble.sdslabs.co&quot;&gt;Hubble&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;well-first-what-is-hubble&quot;&gt;Well first, what &lt;em&gt;is&lt;/em&gt; Hubble?&lt;/h2&gt;

&lt;p&gt;Simple answer, &lt;strong&gt;Hubble&lt;/strong&gt; is a &lt;strong&gt;&lt;em&gt;link sharing platform&lt;/em&gt;&lt;/strong&gt; for IITR junta where they can share resourceful links.&lt;/p&gt;

&lt;p&gt;Whenever you come across something catchy online and feel that it’s pretty interesting, what do you do? I guess, you share it on Facebook or Google+. But, as you might have noticed, these resources get buried under the pictures and status updates of your friends. Hardly does anybody open Facebook when in a mood to read about something insightful.&lt;/p&gt;

&lt;p&gt;So, we decided to create a platform where you can easily share links to articles and videos that you think will help others, being sure that it is read by right minded people.&lt;/p&gt;

&lt;p&gt;Whenever you read a trendy/mind-blowing post, a pathbreaking scientific research article or an interesting UI/UX article and want to share it not only among your friends, but also to a larger audience having similar interests, Hubble is your place to go. It is not only about sharing links but you can also start a discussion around something through comments.&lt;/p&gt;

&lt;h2 id=&quot;ask-hubble-do-you-want-to-ask-the-users-opinion-on-certain-topics&quot;&gt;Ask Hubble: Do you want to ask the users’ opinion on certain topics?&lt;/h2&gt;

&lt;p&gt;Yes, you guessed it right. You can also &lt;strong&gt;post questions&lt;/strong&gt; (without links) where the users can answer or give their opinions. All you have to do is go to the &lt;a href=&quot;https://hubble.sdslabs.co/submit&quot;&gt;Add page&lt;/a&gt; and start asking your question with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Ask Hubble: &lt;/code&gt; as the prefix, or you can click on the link in the suggestion text above the input field, and it will insert this prefix for you.&lt;/p&gt;

&lt;h2 id=&quot;sign-up-is-restricted-to-invites-only&quot;&gt;Sign up is restricted to invites only&lt;/h2&gt;

&lt;p&gt;Ensuring that the resources shared by people do not end up being spam, we are restricting to an &lt;em&gt;&lt;strong&gt;invite based Sign up system&lt;/strong&gt;&lt;/em&gt;. This is to ensure that the links posted are worth your time and do not link to adult or religiously inclined content. Also, you might not want to read insensible or irrelevant comments. Not that we are trying to enforce anything. Only that at present it lacks moderation, so we had to restrict the sign up in some way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;You are still free to use Hubble without Signing in. The Signin restriction is only for engagements like voting, posting and commenting.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We will also be distributing invites to users based on their activity. They can then invite their friends.&lt;/p&gt;

&lt;h2 id=&quot;now-lets-talk-about-some-technical-aspects-of-hubble&quot;&gt;Now lets talk about some technical aspects of Hubble.&lt;/h2&gt;

&lt;p&gt;The technologies used while building and in running Hubble are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The backend is on PHP using Slim (a microframework)&lt;/li&gt;
  &lt;li&gt;The backend follows the MVC code architecture pattern.&lt;/li&gt;
  &lt;li&gt;We are using Twig as the html templating engine.&lt;/li&gt;
  &lt;li&gt;We are using &lt;a href=&quot;https://sass-lang.com/&quot;&gt;SCSS&lt;/a&gt; and hence made our CSS life a bit easier&lt;/li&gt;
  &lt;li&gt;We also delegate boring tasks to our faithful CLI tool &lt;a href=&quot;https://gruntjs.com/&quot;&gt;Grunt&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;We are using &lt;a href=&quot;https://www.mailgun.com/&quot;&gt;Mailgun&lt;/a&gt; for mailing.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Announcing phoenix</title>
      <link>https://blog.sdslabs.co/2015/04/announcing-phoenix</link>
      <pubDate>Sat, 04 Apr 2015 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2015/04/announcing-phoenix</guid>
      <description>&lt;p&gt;As part of the recently conducted &lt;a href=&quot;https://backdoor.sdslabs.co/competitions/backdoorctf15/&quot; title=&quot;Backdoor CTF 2015&quot;&gt;BackdoorCTF ‘15&lt;/a&gt;, we developed a redis based queue taskrunner for phantomjs tasks called &lt;a href=&quot;https://github.com/sdslabs/phoenix&quot;&gt;phoenix&lt;/a&gt; that we are open-sourcing today. This blog post is about the problem we faced and the solution we developed and how it can help you.&lt;/p&gt;

&lt;h2 id=&quot;problem&quot;&gt;problem&lt;/h2&gt;

&lt;p&gt;As part of two challenges in the CTF (&lt;a href=&quot;https://backdoor.sdslabs.co/challenges/MEDUSA&quot;&gt;MEDUSA&lt;/a&gt;, &lt;a href=&quot;https://backdoor.sdslabs.co/challenges/JSHUNT&quot;&gt;JSHUNT&lt;/a&gt;), we wanted a browser solution that could automatically open the webpages for the challenge in a safe environment after each submission. These challenges are web challenges and require techniques such as XSS, which means that they can only be exploited in a real browser.&lt;/p&gt;

&lt;p&gt;Unfortunately, running a full browser such as Chrome/Firefox is not feasible in such sitations. Instead, we decided to use the most popular headless browser &lt;a href=&quot;https://phantomjs.org&quot;&gt;phantomjs&lt;/a&gt; for our task. Using phantom is hard, though. It has its own API, which uses JS, but is completely different in its own manner (too many synchronous methods, for one).&lt;/p&gt;

&lt;p&gt;As part of the CTF, we had to build a queue system as well, which would do the following:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Setup a new webpage&lt;/li&gt;
  &lt;li&gt;Start a new phantomjs instance that visits &lt;em&gt;that particular&lt;/em&gt; page&lt;/li&gt;
  &lt;li&gt;Store the result of the run (log id) somewhere and report it back&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since a lot of this is common to both the tasks, we decided to create a small tool that helps us run these jobs.&lt;/p&gt;

&lt;h2 id=&quot;phoenix&quot;&gt;phoenix&lt;/h2&gt;

&lt;p&gt;phoenix handles the following for you:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;setup a common configuration for a task&lt;/li&gt;
  &lt;li&gt;start multiple jobs on that task, each with a slight variation&lt;/li&gt;
  &lt;li&gt;jobs are run on phantomjs&lt;/li&gt;
  &lt;li&gt;store logs of each run&lt;/li&gt;
  &lt;li&gt;report back log id to the task queue&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is all done via a mix of redis, phantomjs and nodejs.&lt;/p&gt;

&lt;h2 id=&quot;configuration&quot;&gt;configuration&lt;/h2&gt;

&lt;p&gt;phoenix is configured via a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;config.yml&lt;/code&gt; file, which is expected to be present wherever phoenix is run. You can see &lt;a href=&quot;https://github.com/sdslabs/phoenix/blob/master/config.sample.yml&quot;&gt;the sample config file&lt;/a&gt; for a list of configuration options that phoenix supports. These include things like user agent support, custom headers, request body (in json or post format), basic authentication support.&lt;/p&gt;

&lt;p&gt;Another thing we support is the ability to run custom javascript before the page visit starts. This allows you to set default variables (such as tokens and secrets) that will be available in the JS context once the page visit is made.&lt;/p&gt;

&lt;h2 id=&quot;page-visit&quot;&gt;page visit&lt;/h2&gt;

&lt;p&gt;We have a lot of sensible defaults for phantom, which include a maximum timeout of 10 seconds, and extended timeouts for whenever a web request (such as image/script/ajax) is made.&lt;/p&gt;

&lt;h2 id=&quot;logging&quot;&gt;logging&lt;/h2&gt;

&lt;p&gt;All jobs that start get their own id, and create their own directory with three files: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;config.json&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;page.log&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;browser.log&lt;/code&gt;. The first holds the complete configuration object that is passed to phantom. The second is the console log of the web page (which means any console.log statements made in the web page context). The third is a higher level log containing browser events such as redirects, web requests and timeout extensions.&lt;/p&gt;

&lt;p&gt;We plan to make the logging format configurable, but for now it is file system based.&lt;/p&gt;

&lt;h2 id=&quot;job-config&quot;&gt;job config&lt;/h2&gt;

&lt;p&gt;It is assumed that (generally) each job will have its own url, slightly differing from the task’s standard url. This is handled in two ways:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;You can pass a query parameter, which is sent along with the url specified in the config&lt;/li&gt;
  &lt;li&gt;You can pass a valid http/s url that will be visited as it is&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;queueing&quot;&gt;queueing&lt;/h2&gt;

&lt;p&gt;To push a job to a queue, you do the following:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Generate a queue id by RPUSH to a channel:queue list in redis&lt;/li&gt;
  &lt;li&gt;Publish the queue id on the channel in redis&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;log-in-redis&quot;&gt;log in redis&lt;/h2&gt;

&lt;p&gt;For each job, the job id (generated randomly) is stored in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;channel:log:id&lt;/code&gt; key in redis. This can be polled to check whether the job has finished or not.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;As you can see, phoenix is a very robust mechanism to handle a variety of job queues. It is available on npm today as the &lt;a href=&quot;https://www.npmjs.com/package/phantom-phoenix&quot; title=&quot;Package on npm&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;phantom-phoenix&lt;/code&gt;&lt;/a&gt; package, which sets up a binary called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;phoenix&lt;/code&gt;. Further instructions on usage etc can be found on the &lt;a href=&quot;https://github.com/sdslabs/phoenix&quot;&gt;repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We hope it will be useful to people looking to setup a queue system based around phantomjs instances. Since it uses redis as the queue mechanism, it can be easily scaled to multiple machines as well.&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Backdoor Internet Launch and scytheCTF</title>
      <link>https://blog.sdslabs.co/2015/03/backdoor-internet-launch-and-scythectf</link>
      <pubDate>Wed, 04 Mar 2015 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2015/03/backdoor-internet-launch-and-scythectf</guid>
      <description>&lt;p&gt;Last year, in March, we organized &lt;a href=&quot;https://blog.sdslabs.co/2014/04/backdoor-ctf/&quot; title=&quot;BackdoorCTF &apos;14&quot;&gt;BackdoorCTF’ 14&lt;/a&gt;. BackdoorCTF is a jeopardy style capture the flag competition. It reflects our aim to foster participation in the field of competitive Computer Security.&lt;/p&gt;

&lt;p&gt;Last summer, we discussed the idea of converting Backdoor into a year round platform for computer security hackers.
Things started to get interesting. We were excited to kickstart the project development.
Before anything else, we knew that designing challenges around real world scenarios was critical for platform’s success.&lt;/p&gt;

&lt;p&gt;Slack played a major role for discussing both design and structure of the code. An overview of the application’s user experience design and interaction can be seen &lt;a href=&quot;https://vikalpgupta.com/projects/bckdr.html&quot; title=&quot;Backdoor UX/UI&quot;&gt;here&lt;/a&gt;. By the end of October 2014, we had Backdoor deployed over the intranet of IIT Roorkee.&lt;/p&gt;

&lt;p&gt;The initial aim was to launch Backdoor over the internet. We want it to be accessible to any inquisitive mind. Following a major refactor of the codebase, to modularize its backend, we made Backdoor accessible over the internet starting &lt;strong&gt;24th February 2015&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Backdoor is accessible at &lt;a href=&quot;https://backdoor.sdslabs.co&quot; title=&quot;Backdoor&quot;&gt;backdoor.sdslabs.co&lt;/a&gt;. Challenge designers can be found hanging around at &lt;a href=&quot;https://chat.sdslabs.co&quot; title=&quot;Chat with SDSLabs&quot;&gt;chat.sdslabs.co&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/backdoor-internet-launch/backdoor_home.png&quot; alt=&quot;Backdoor Home&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In order to make sure we have a stable and robust platform ahead of time, we organized scytheCTF. For this we invited participants from both IIT Roorkee and outside. It started at 4 pm on 26th February and lasted for 8 hours. scytheCTF saw a decent participation, enough for us to nail down bugs and issues. We have already fixed any major reported bug. With this we make way for our flagship capture the flag event ie. BackdoorCTF ‘15.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/DefConUA&quot; title=&quot;DefConUA&quot;&gt;dcua&lt;/a&gt; won the &lt;a href=&quot;https://backdoor.sdslabs.co/competitions/scythe15&quot; title=&quot;scytheCTF&quot;&gt;competition&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;techical-details&quot;&gt;Techical Details&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Backdoor Challenges are hosted over a separate domain and on a different server to avoid cross-site scripting and ensure isolation&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;An inhouse tool is used for automating the process of deployment&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Backdoor’s backend is written in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PHP&lt;/code&gt; using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Toro&lt;/code&gt; as the framework.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;All the services on the server are running in a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chroot&lt;/code&gt; jail thereby preventing access to the parent directory and files.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Muzi was down - Incident Report</title>
      <link>https://blog.sdslabs.co/2015/02/muzi-outage</link>
      <pubDate>Sun, 15 Feb 2015 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2015/02/muzi-outage</guid>
      <description>&lt;h2 id=&quot;the-situation&quot;&gt;The Situation&lt;/h2&gt;

&lt;p&gt;Muzi is one of the most popular application in campus, that boasts of thousands of all time users and thousands of &lt;a href=&quot;https://dashboard.sdslabs.co.in/&quot;&gt;listens per day&lt;/a&gt;. The songs collection of Muzi resides in a single Hard Disk of 2 Terabytes in size. This drive has a collection of 1,69,000 Hindi tracks and 72,000 English tracks.&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;13th February 2015&lt;/strong&gt; at 6:30PM, the hard disk died.&lt;/p&gt;

&lt;p&gt;The drive showed signs of bad sectors which we suspect has been because of continuous read/write operations that happen 24X7 on this disk.&lt;/p&gt;

&lt;h2 id=&quot;impact-on-services&quot;&gt;Impact on services&lt;/h2&gt;

&lt;p&gt;The workstation containing this disk also hosted couple of our services, thankfully in another hard disk. 
Muzi backend server was hosted on another Virtual Machine totally different from the storage drive. This means the muzi frontend website was available at all times, but the songs themselves were not reachable. We are really sorry for the outage. We regret as much as you do.&lt;/p&gt;

&lt;p&gt;The other services running in the machine include Presence, our own lab tracking system and a gitolite instance that hosts all of our source code. These applications didn’t use the muzi hard disk, but suffered downtime as we had to perform hardware upgrades to the machine in order to rescue the bad disk.&lt;/p&gt;

&lt;h2 id=&quot;rescue-method&quot;&gt;Rescue Method&lt;/h2&gt;

&lt;p&gt;We immediately detached the disk from the CPU cabinet and checked for the actual losses. We analysed that most of the data could be backed up thanks to Windows Disk Analyzer. 
We further observed that when the disk attempted to read the bad sectors, it borked and did not allow us to read anything further.&lt;/p&gt;

&lt;p&gt;We searched for alternative storage to transfer the 1.6Tb of data. That being a very large size, we had to divide the size into parts and transfer them to backup locations either by using a USB-Hdd adapter or by manually mounting it into other workstations that had enough free space.&lt;/p&gt;

&lt;p&gt;We closed in selecting two workstations having free space of around 1Tb each and transferred the data into them. Note that this was a highly attention seeking task, since the transfer was to be restarted everytime a bad sector was found. We were doubtful to use any disk repair tools fearing a loss of nearby data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;14th February 2015 2:30PM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thus at speeds averaging 20MBps transfer, we could succesfully recover almost all of the data. It took us 18 hours in the process of transfer.&lt;/p&gt;

&lt;p&gt;Later we retired the defective drive and took another 2Tb hard disk and transferred back the tracks into it, which would then be the replacement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;15th February 2015 1:30AM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This disk was then put back into the same workstation hosting the previous disk and thus Muzi was revived!&lt;/p&gt;

&lt;h2 id=&quot;permanent-losses-and-recovery&quot;&gt;Permanent Losses and Recovery&lt;/h2&gt;

&lt;p&gt;In this recovery process, we lost a total of 2000 songs, 34 of Hindi and rest of them of English. We are determined to get them back and in the next few days, we will cross verify our database dumps for the missing songs and get them back.&lt;/p&gt;

&lt;p&gt;Thanks to Teracopy for humane copy controls and good error reporting in this regard.&lt;/p&gt;

&lt;h2 id=&quot;future-thinking&quot;&gt;Future Thinking&lt;/h2&gt;

&lt;p&gt;We are totally moved by this situation and will go to any lengths to make sure such an incident never happens again.&lt;/p&gt;

&lt;p&gt;We have already drafted an initial plan of building our own Network Attached Storage housing massive space in 10s of Terabytes so that, we will never be short of space and resort to hacky methods for backup. We aim to shift all the storage intensive application to this NAS in the near future and take regular backups, however large the data may be.&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Final Recruitment List For 1st year (2015)</title>
      <link>https://blog.sdslabs.co/2015/01/recruitment-final-list</link>
      <pubDate>Sun, 11 Jan 2015 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2015/01/recruitment-final-list</guid>
      <description>&lt;p&gt;We interviewed 75 people before releasing the final list of selected people. It was a really tough job to filter down from the talented applicants to the final list. Sadly, we have limited vacancies and can only take in a limited number. But this is not the end of line for others, there’s still a way to &lt;a href=&quot;/2014/01/how-to-join-sdslabs/&quot;&gt;join SDSLabs&lt;/a&gt;. We’ll continue taking open lectures on variety of topics. Stay connected with us on our Facebook &lt;a href=&quot;https://facebook.com/sdslabs&quot;&gt;page&lt;/a&gt; and &lt;a href=&quot;https://facebook.com/groups/sdswebdev&quot;&gt;group&lt;/a&gt; for the updates regarding this.&lt;/p&gt;

&lt;h2 id=&quot;programmers&quot;&gt;Programmers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Aashaka Shah &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Abhinav Kaushal Kesari &lt;em&gt;(ECE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Akashdeep Goel &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Amit Manchandana &lt;em&gt;(ECE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Anuma Rathore &lt;em&gt;(ECE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Arpit Singla &lt;em&gt;(EE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Ashish Chaudhary &lt;em&gt;(ECE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Asutosh Palai &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Harkirat Singh &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Indroneil Kanungo &lt;em&gt;(MSP)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Punit Dhoot &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Tanmay Tiwari &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Vaibhav Gosain &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;designers&quot;&gt;Designers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Aviral Borah &lt;em&gt;(CHE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Amandeep Duhan &lt;em&gt;(CE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Parinishtha Yadav &lt;em&gt;(B.Arch)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
&lt;p&gt;Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Working at SDSLabs (8)</title>
      <link>https://blog.sdslabs.co/2015/01/working-sdslabs-8</link>
      <pubDate>Thu, 01 Jan 2015 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2015/01/working-sdslabs-8</guid>
      <description>&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;This post is eighth in the series of blog posts written by members of SDSLabs over the years on their experiences and lifestyle in lab. Everyone has gained from being in SDSLabs in some or the other way and this is how the students from upcoming years can have a peek into the workflow of lab.
&lt;img src=&quot;/images/posts/SDSLabs_1.jpg&quot; alt=&quot;SDSLabs&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-beginning&quot;&gt;The Beginning&lt;/h2&gt;

&lt;p&gt;Like many other students when I initially stepped into IITR as a first yearite, the most prominent two words(other than my hostel’s name) I heard were &lt;em&gt;“CGPA”&lt;/em&gt; and &lt;em&gt;“SDSLabs”&lt;/em&gt;. On digging more into these two words, I got to know that these are the two most valuable things one can possess here. And naturally thus I wanted to be a part of SDSLabs, to further my zeal to learn. I had developed an interest in Web Development before coming for the recruitments, as I had tried my hands at it just to find out that I really liked it. After some time, I was finally recruited through a long but interesting procedure of a series of written tests and an interview.&lt;/p&gt;

&lt;p&gt;I had to face a hard time letting the classiness of being in SDSLabs waft over me, because that is the point where you stop learning and start flaunting. I started getting over this and actually got down to learning pretty soon. As the immediate pre-requisite of being a programmer in SDSLabs is Linux, I had Ubuntu 13.04 replace my super common Windows 7, and this has been one of the best transitions of my life yet. I was made to learn git, PHP, JS, AJAX, Linux Command Line etc. within 2 months of joining lab. As I continued work I got to learn more things about frameworks, MVC, REST and web security. Now that it’s almost an year, Sublime Text and the Terminal are the first applications I open in my laptop, also the last one’s to be closed. When within lab, knowledge is like in the air. People are always found discussing and you are sure to catch one or two valuables if you listen to them. Most of the learning in lab comes along this way.&lt;/p&gt;

&lt;h2 id=&quot;what-i-worked-on&quot;&gt;What I worked on&lt;/h2&gt;

&lt;h3 id=&quot;echo&quot;&gt;Echo&lt;/h3&gt;

&lt;p&gt;I did some feature additions in &lt;em&gt;echo&lt;/em&gt;, the e-book search application of SDSLabs like the Admin Panel and the Book Upload form that have to be used internally by the administrators for book moderation. It was built on the framework &lt;em&gt;Limonade&lt;/em&gt; and used &lt;em&gt;Solr&lt;/em&gt; for indexing. It was mostly written by one of my very helpful seniors, who later on proved to be one of my best mentors. As it was my first project I gradually learnt good coding and commenting practices commonly used among developers.&lt;/p&gt;

&lt;h3 id=&quot;comments&quot;&gt;Comments&lt;/h3&gt;

&lt;p&gt;I also worked on comments, which is a &lt;em&gt;SDSLabs clone of Disqus&lt;/em&gt; and intends to act as the commenting system across all SDSLabs applications. It was instantiated with the simple thought of providing better speeds which couldn’t be harnessed while using an online application(here &lt;em&gt;Disqus&lt;/em&gt;). It uses &lt;em&gt;Slim&lt;/em&gt; as it’s framework and is planned to be finished soon.&lt;/p&gt;

&lt;h2 id=&quot;the-fun&quot;&gt;The Fun&lt;/h2&gt;

&lt;p&gt;I was astounded at the number of Chapos(IITR lingo for treats) we had here. We had regular Dominos’ orders, Alumni sponsored treats, Convocation chapos, Placement chapos and what-not-for-no-reason chapo. We also have an annual trip to the most peaceful cities around. The Seniors here are so helpful and friendly that you can ask them almost anything(they’ll obviously omit what they want to though). The group interaction level is so high, that after some time you forget who you’re supposed to call ‘sir’ and who’s supposed to call you ‘sir’. We choose to omit the word ‘sir’ from our conversations instead.
&lt;img src=&quot;/images/posts/Trip_1.jpg&quot; alt=&quot;Trip&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-environment&quot;&gt;The Environment&lt;/h2&gt;

&lt;p&gt;At SDSLabs we have really diligent seniors who answer even the silliest of our questions, encouraging us to participate in the discussions and taking up responsibilities for lab. I have peers, each good at what they were selected for. One of my peers for example has crashed his ubuntu around 4-5 times and is now an expert in matters concerning ubuntu. One of them has his own version of bomberman that he wrote in class 11th, cooler than most of the student-made games I’ve seen. One of them has applications ranging from captcha breaker to network manager, and is undoubtedly one of the best developers of my year. Amidst such hardworking and dedicated people, all you feel like doing is become like them, the zeal to learn keeps growing. All these people have been greatly contibuting in my learning process from day one, inspiring me to push harder.&lt;/p&gt;

&lt;h2 id=&quot;recruitments&quot;&gt;Recruitments&lt;/h2&gt;

&lt;p&gt;If you feel that such an environment is what you long for, do sit for our recruitments coming January. I hope it’ll be a pleasure for you going through the recruitment process, and an even greater pleasure if you join us. Visit &lt;a href=&quot;https://join.sdslabs.co/&quot;&gt;join.sdslabs.co&lt;/a&gt; for more details on the recruitment procedure and dates.&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Working at SDSLabs (7)</title>
      <link>https://blog.sdslabs.co/2014/12/working-sdslabs-7</link>
      <pubDate>Wed, 24 Dec 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/12/working-sdslabs-7</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is seventh in the series of blog posts that members of SDSLabs’ write every year to give an insight into what &lt;a href=&quot;https://sdslabs.co&quot;&gt;SDSLabs&lt;/a&gt; is all about. For people interested in joining SDSLabs but are not in first year, please read this post on &lt;a href=&quot;https://blog.sdslabs.co/2014/01/how-to-join-sdslabs/&quot;&gt;how to join SDSLabs&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;For the past year, I have been part of an amazing student group in the campus known as SDSLabs. Little did I know an year ago but now that I think of it, SDSLabs has become an integral part of my life and identity. It has been an eventful 308 days with a lot of things happening. Everyday I have got to learn something new. While going through this journey, I have performed every possible role, right from a programmer to a managerial one. I have learnt things from various programming languages to different networking architectures in such a short span from the fantastic people in lab.&lt;/p&gt;

&lt;h2 id=&quot;timeline&quot;&gt;Timeline&lt;/h2&gt;

&lt;p&gt;In my first year, I was way too excited to join lab. I appeared for the recruitment test but wasn’t able to clear it. I didn’t lose hope though, as I was told by Abhishek Das that SDSLabs recruits people from any year and so I continued to program and learn on my own. After seeing their &lt;a href=&quot;https://blog.sdslabs.co/2014/01/how-to-join-sdslabs/&quot;&gt;blog post&lt;/a&gt; on lateral recruitment, I applied for an interview and this time I got through. My initial few days were spent catching up but everyone helped through it. The effect of lab was so prominent that my productivity and learning speed increased by 5 times. This exposure has also directly affected my coding style. It has made me a far better coder and introduced me to various design architectures. By the semester end, I was actively involved in managing various projects too. Since that interview, I haven’t looked back, keeping myself constantly motivated and learning with help of everyone in lab.&lt;/p&gt;

&lt;h2 id=&quot;learning-experience&quot;&gt;Learning Experience&lt;/h2&gt;

&lt;p&gt;I have learnt a tremendous amount of stuff as a member of SDSLabs. After I joined, one of the first thing I learnt was networking architecture. With multiple apps running under one banner and for same set of users, some level of architecture is needed that you won’t come across in a single project. Another really great thing I found was that every code/design/discussion on any project in lab was open to anyone, so you could just jump in and start contributing to any one of them. I contributed two small bug fixes to Codevillage, then moved on to rewrite the complete &lt;a href=&quot;https://github.com/sdslabs/play&quot;&gt;Play&lt;/a&gt; app (Lab’s internal music player), including addition of some features. My first major project was &lt;a href=&quot;https://experiences.sdslabs.co&quot;&gt;Experiences&lt;/a&gt;, this app had been into development for about 2 years. Many people had worked on but it wasn’t complete. It’s code was in a messy state, but we were finally able to launch it this semester. I also worked on &lt;a href=&quot;https://jee.sdslabs.co&quot;&gt;JEE ranklist 2014&lt;/a&gt; along with &lt;a href=&quot;https://rkravi.com/&quot;&gt;Ravi Kishore Rachuri&lt;/a&gt;, &lt;a href=&quot;https://about.me/dvjbndlsh93&quot;&gt;Divij Bindlish&lt;/a&gt; and &lt;a href=&quot;https://dhavalkapil.com&quot;&gt;Dhaval Kapil&lt;/a&gt;. Along with these projects I also added new features to Muzi, including auto updation of song database. Through all of these, I got to learn many concepts and new languages like Node.js, Go and Ruby.&lt;/p&gt;

&lt;p&gt;Apart from applications, I got to participate in quite a few &lt;a href=&quot;https://ctftime.org/ctf-wtf/&quot;&gt;CTFs&lt;/a&gt; along with other lab members and this has given me a thorough understanding of security and an experience in CTFs which I now use to create questions for Backdoor.&lt;/p&gt;

&lt;h2 id=&quot;inside-lab&quot;&gt;Inside Lab&lt;/h2&gt;

&lt;h3 id=&quot;work&quot;&gt;Work&lt;/h3&gt;

&lt;p&gt;Work culture in lab is just like that of a startup. There is lot of learning, hard work, innovation and inventions. You can work on any kind of project that you like. We have people who are proficient in many diverse fields right from machine learning, networking to cryptography to disassembly. We have regular discussions on every aspect of our work including long talks on UI/UX of a website to database designs. We have regular lectures and talks on various new technologies. Recently we also started have discussions on interesting research papers every few weeks. We also tend to &lt;a href=&quot;https://github.com/sdslabs&quot;&gt;open-source&lt;/a&gt; as much as we can to contribute back to the community. Overall, twelve members from SDSLabs have participated in Google Summer of Code.&lt;/p&gt;

&lt;h3 id=&quot;people&quot;&gt;People&lt;/h3&gt;

&lt;p&gt;For a lot of us SDSLabs is a home away from home. No matter what you want to discuss, you will find someone or the other with clever insights, whether it is  CG, electives, anime, earthquakes or even biologically mutated rats! Even the fun filled sessions at lab are productive.&lt;/p&gt;

&lt;h3 id=&quot;technology&quot;&gt;Technology&lt;/h3&gt;

&lt;p&gt;At SDSLabs, we use a plethora of technology. While most of lab projects are built upon PHP, MySQL and JavaScript stack, we have also explored many other areas. Many subprojects have been built in Node.js and Go. Python is also extensively used for writing scripts.&lt;/p&gt;

&lt;p&gt;We use &lt;a href=&quot;https://slack.com&quot;&gt;Slack&lt;/a&gt; and Google Groups to keep in touch. If you want more insight into how lab works go through [this post] (https://blog.sdslabs.co/2012/12/how-does-sdslabs-work/) &lt;em&gt;(it is slightly outdated)&lt;/em&gt;.&lt;/p&gt;

&lt;h3 id=&quot;fun&quot;&gt;Fun&lt;/h3&gt;

&lt;p&gt;Fun is at the core of lab. From our own &lt;a href=&quot;https://github.com/sdslabs/bot&quot;&gt;bot&lt;/a&gt; to our human bot (&lt;a href=&quot;https://about.me/n3m0&quot;&gt;Abhay Rana&lt;/a&gt;), everybody is fun-loving. We have regular chapos including the ones to Hometel and Dominos. We have our annual trip around February. We regularly participate in hackathons and other technical meetups around India. We watch movies together on our 42” LCD TV on beanbags. It’s definitely more than just work.&lt;/p&gt;

&lt;h2 id=&quot;recruitment&quot;&gt;Recruitment&lt;/h2&gt;

&lt;p&gt;We are recruiting this January. Visit &lt;a href=&quot;https://join.sdslabs.co&quot;&gt;join.sdslabs.co&lt;/a&gt; for more information. Some points worth noting:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;If you feel you are highly interested and motivated about app development, lab is the place for you.&lt;/li&gt;
  &lt;li&gt;Try to find a bug in one of our applications, make sure to mention it in written exam. Just write it on the last page.&lt;/li&gt;
  &lt;li&gt;Willingness to learn is more important than CG, branch and technical prowess.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lab has become an important part of my life maybe it will become yours too. If you feel like SDSLabs is where you should be, just come and give our test. If you have any kind of queries, come &lt;a href=&quot;chat.sdslabs.co&quot;&gt;chat&lt;/a&gt; with us.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Working at SDSLabs (6)</title>
      <link>https://blog.sdslabs.co/2014/12/working-sdslabs-6</link>
      <pubDate>Tue, 16 Dec 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/12/working-sdslabs-6</guid>
      <description>&lt;p&gt;SDSLabs will be having recruitments the coming January. We welcome promising developers and designers. This post is a continuation of the series of blog posts( &lt;a href=&quot;https://blog.sdslabs.co/2012/01/work-at-the-sds&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;https://blog.sdslabs.co/2012/12/working-at-sdslabs&quot;&gt;2&lt;/a&gt;, &lt;a href=&quot;https://blog.sdslabs.co/2012/12/sdslabs-my-experiences&quot;&gt;3&lt;/a&gt;, &lt;a href=&quot;https://blog.sdslabs.co/2013/12/working-sdslabs-4&quot;&gt;4&lt;/a&gt;, &lt;a href=&quot;https://blog.sdslabs.co/2013/12/working-sdslabs-5&quot;&gt;5&lt;/a&gt; ) that we have written over the years to tell people about the culture and the working here at SDSLabs.&lt;/p&gt;

&lt;h2 id=&quot;about&quot;&gt;About&lt;/h2&gt;

&lt;p&gt;SDSLabs is a student group that works on many software projects. They are mainly web-based but as such there is no restriction. We have developed many applications for the IIT-R intranet. Lately, we have also launched a few of them on the Internet which have got a pretty good global response. We also manage the activities of SDS (Software Development Section) which is an open proficiency for all.&lt;/p&gt;

&lt;h2 id=&quot;learning-experience&quot;&gt;Learning Experience&lt;/h2&gt;

&lt;p&gt;Being a member of SDSLabs is a journey involving a tremendous amount of learning. I was initially introduced to various technologies like PHP, Javascript, AJAX, NodeJS, Python, MVC, git, etc. Even though we may have launched mostly web applications, I got to learn about many different things regarding Linux, networking, server management, security, etc. We have some of the brightest and most helpful people of IIT-R working at SDSLabs. Every visit to lab has provided me with knowledge about new concepts or some information regarding upcoming technologies.&lt;/p&gt;

&lt;p&gt;Even though I am a part of many other campus groups, I can say that SDSLabs has been an immense source of knowledge and played an integral part in shaping my life here at IIT-R.&lt;/p&gt;

&lt;p&gt;The most important thing in lab is that the source code is open to everyone and you are free to work on any project of your interest. Also, unlike other groups you can start working on major projects directly from your first year.&lt;/p&gt;

&lt;h2 id=&quot;my-work&quot;&gt;My Work&lt;/h2&gt;

&lt;h3 id=&quot;erdős&quot;&gt;Erdős&lt;/h3&gt;

&lt;p&gt;A few weeks after my recruitment in lab I was asked to add some minor feature in Erdős. Abhishek Das was my mentor. Working under him and on his code was a great experience for me. I was introduced to proper MVC Architecture. This was the first time I had ever worked on someone else’s code. Erdős’s code is perhaps one of the best written code I have seen in lab. I learnt how to properly document my code and structure it alongwith some common coding guidelines.&lt;/p&gt;

&lt;h3 id=&quot;backdoor&quot;&gt;Backdoor&lt;/h3&gt;

&lt;p&gt;By the end of my first year I was given the task to develop Backdoor into a proper application. The existing code was quite haphazardly written. It was pretty much disorganized. After pondering over a bit I decided to rewrite the backend completely. Abhishek Kandoi helped in laying down the foundation for the application. With constant help from Ravi Kishore Rachuri I rewrote Backdoor during the summer break. Although a little late, we were able to launch it at the end of October. I got to know many things about dynamic web applications starting from the initial setup to the final deployment stage. Apart from that I learnt more and more about security.&lt;/p&gt;

&lt;h3 id=&quot;jee-ranklist&quot;&gt;JEE Ranklist&lt;/h3&gt;

&lt;p&gt;As part of the custom(laid by Abhay Rana, aka nemo), SDSLabs released the JEE Advanced 2014 Namewise Rank List. I helped in getting the ranks, parsing the results and in developing the final website.&lt;/p&gt;

&lt;h2 id=&quot;culture-in-lab&quot;&gt;Culture in Lab&lt;/h2&gt;

&lt;p&gt;The culture in lab is pretty awesome. You can enter/leave lab anytime during day or night. There is a lot of interaction within the group resulting in a strong bond between the members. Even the alumni remain in contact with us through mails and slack(our internal group chat). We have chapos “regulary” at Olive, Hometel and Dominoes! We also go for an annual trip. Apart from the fun that we have we cling to our motto:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;iDream. iCode. iInnovate.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Our goal is to turn dreams to reality through our projects.&lt;/p&gt;

&lt;h2 id=&quot;activities&quot;&gt;Activities&lt;/h2&gt;

&lt;p&gt;We hold regular lectures and meetings regarding web technologies and Linux. We also organize hackathons like Syntax Error to promote development within campus. We hold competitions on CodeVillage, Erdős and Backdoor regulary.&lt;/p&gt;

&lt;p&gt;We also participate in various competitions. A team from SDSLabs has been winning the Deloitte Collegiate Cyber Threat competition consecutively for the past 3 years at a national level. Last year a team from lab qualified for Microsoft Code.Fun.Do held within campus and went further to win the nationals! We were also the runners up in Angel Hacks International Series, Delhi edition. Twelve members of our section have cleared the prestigious Google Summer of Code program.&lt;/p&gt;

&lt;h2 id=&quot;recruitment&quot;&gt;Recruitment&lt;/h2&gt;

&lt;p&gt;We have our recruitments in January. Visit &lt;a href=&quot;https://join.sdslabs.co/&quot;&gt;here&lt;/a&gt; for more details. Some points worth noting:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;If you are thinking of applying just for a high package in your future please &lt;em&gt;turn back&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;We are more interested in people willing to learn rather than somebody who just happens to know more.&lt;/li&gt;
  &lt;li&gt;Your branch is irrevelant to us. Currently we have just 15 members in CS whereas 36 non CS members.&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Google Summer of Code Reunion Summit</title>
      <link>https://blog.sdslabs.co/2014/11/gsoc-reunion-2014</link>
      <pubDate>Mon, 03 Nov 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/11/gsoc-reunion-2014</guid>
      <description>&lt;p&gt;In celebration of the 10th anniversary of Google’s prestigious Summer of Code program, they organized a reunion summit for mentors and students from the past 10 iterations of Summer of Code in San Jose, California from October 23-26. I attended the event as a student and a representative of the &lt;a href=&quot;https://www.owasp.org/index.php/Main_Page&quot;&gt;OWASP foundation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/gsoc-reunion-summit/hilton.jpg&quot; alt=&quot;Hilton&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I arrived in San Jose early morning on 23rd and checked in at the Hilton. I knew I’d be staying at the heart of Silicon Valley but was nonetheless pleasantly surprised to see the Adobe HQ from my hotel room!&lt;/p&gt;

&lt;p&gt;The event was to be held at the Marriot, which is a block away from the Hilton. The evening was spent registering for the event and socializing with other developers who had flown in from all over the world. It was a delightful experience to randomly bump into developers and get to know about their organizations and open-source projects.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/gsoc-reunion-summit/id.jpg&quot; alt=&quot;ID Card&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Next day was a fun outing to Great America. Google had bought out the entire park for the whole day just for the summit attendees! The GSoC celebration event was in the evening at the San Jose Tech Museum of Innovation. It was a wonderful (semi-)formal gettogether, full of geek speak and inspiring talks. Among the speakers were Chris DiBona, Peter Norvig, Dirk Hohndel and Linus Torvalds! Chris talked about how he came up with the idea of Summer of Code and the immense impact it has had over the past 10 years as it continues to grow. Norvig’s short inspiring talk mentioned how a bad craftsman blames his tools and how a good one wouldn’t differentiate between the two. Hohndel emphasized the need and importance of valuing criticism. And Torvalds implored budding developers to develop good taste and to know what to keep and more importantly, what to throw. Needless to say, it was a crazy evening. Selfies with the guests followed alongside lavish drinks and buffet.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/gsoc-reunion-summit/peter-norvig.jpg&quot; alt=&quot;Peter Norvig&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The unconference sessions started Saturday morning. I loved the idea of having spontaneous sessions with lots of free interaction rather than the rigidity that is usually associated with regular conferences. The first one I attended was by &lt;a href=&quot;//google.com/+GrantGrundler&quot;&gt;Grant Grundler&lt;/a&gt; on Chrome OS. He talked about the future of Chrome OS and Android, the development cycle of a hardware-based product such as a Chromebook, the support model of Chrome OS and ended with a Q&amp;amp;A.&lt;/p&gt;

&lt;p&gt;Next up was one on data visualization libraries. People talked about the libraries they were using and the applications they’d built using them. Others asked questions and lots of new ideas came up. We even maintained a collaborative etherpad.&lt;/p&gt;

&lt;p&gt;There was a session on &lt;a href=&quot;https://processing.org/&quot;&gt;Processing&lt;/a&gt; by Manindra Moharana, who I’ve personally known from my DCE days (2010-11), and Andres Colubri. They introduced Processing, demoed artwork developers had created using it and showed how easy it was to get started.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/gsoc-reunion-summit/processing.jpg&quot; alt=&quot;Processing Guys&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Among other sessions I attended were ones on bioinformatics (scope, ongoing work and future), artificial intelligence (again a brainstorming and ideation meetup), big data, robotics and &lt;a href=&quot;https://cardboard.withgoogle.com/&quot;&gt;Google Cardboard&lt;/a&gt;! There were several lightning talks going on alongside at the Ballroom where organization representatives introduced their projects in under 3 minutes, always fun to listen to and get familiar with their work.&lt;/p&gt;

&lt;p&gt;Sunday morning began with the much awaited trip to the Googleplex.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/gsoc-reunion-summit/google-hq.jpg&quot; alt=&quot;Google HQ&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/gsoc-reunion-summit/cycles.jpg&quot; alt=&quot;Cycles&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Sessions continued till the afternoon after which we had to bid farewell. Carol conducted the feedback session and delivered the closing address.&lt;/p&gt;

&lt;p&gt;It was an absolutely awesome event. The feeling of getting to meet FOSS superstars in person, people who I’d been following on GitHub or Twitter for a while, was inexplicable. The idea of having a sticker exchange as well as a chocolate room was perfect. And most importantly, the organisers got all the basic things spot on: get open-source developers from different backgrounds in one place and make it as comfortable as possible for them to interact and have productive discussions with each other (no shuttling between the conference venue and accommodation, free and fast WiFi, awesome food and drinks, a formal celebratory dinner, schwag, and so on). A big shout out to Carol, Chris, Stephanie, and the entire &lt;a href=&quot;https://developers.google.com/open-source/&quot;&gt;Google Open Source Programs&lt;/a&gt; team for an amazing event!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/gsoc-reunion-summit/tshirt-wall.jpg&quot; alt=&quot;GSoC T-Shirt Wall&quot; /&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Launching Backdoor</title>
      <link>https://blog.sdslabs.co/2014/10/launching-backdoor</link>
      <pubDate>Fri, 31 Oct 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/10/launching-backdoor</guid>
      <description>&lt;p&gt;&lt;a href=&quot;https://backdoor.sdslabs.co.in/&quot; title=&quot;Backdoor&quot;&gt;Backdoor&lt;/a&gt; is a platform for the hackers out there to showcase their talent in a competitive environment. Currently it has been launched only within the IIT Roorkee campus.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It is a Capture the Flag styled event. A flag (basically a string) is associated with every challenge. Once you have solved a particular challenge you would get the hidden flag which you need to submit back to us for getting points.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;history&quot;&gt;History&lt;/h2&gt;

&lt;p&gt;In March 2013, SDSLabs organized the first ever Capture the Flag event by IIT Roorkee under the banner of Cognizance, the technical festival of IIT Roorkee. 80 teams participated in it from all over the world with Team &lt;a href=&quot;https://ctftime.org/team/762&quot; title=&quot;Team dcua&quot;&gt;dcua&lt;/a&gt;(currently ranked 9 at &lt;a href=&quot;https://ctftime.org/&quot; title=&quot;ctftime&quot;&gt;ctftime&lt;/a&gt; winning it.&lt;/p&gt;

&lt;p&gt;Encouraged by its success, SDSLabs was back with BackdoorCTF ‘14 the next year during Cognizance. We had a participation of whopping 460 teams from 68 different countries.&lt;/p&gt;

&lt;p&gt;Inspired by all this, we decided to develop Backdoor not only as an annual CTF, but as an application that consists of challenges available for the user anytime of the year, more like a continuous learning environment, a cyber security playground. Apart from this, we shall be hosting competitions frequently.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;h3 id=&quot;challenges&quot;&gt;Challenges&lt;/h3&gt;
&lt;/blockquote&gt;

&lt;p&gt;The challenges in Backdoor will range from web, security, network, binary, crypto, etc. Each of these will have a score associated with them. We have tried to simulate real world applications so as to give a hands-on experience. To solve these challenges you would need to exploit some vulnerability.&lt;/p&gt;

&lt;h2 id=&quot;practice-arena&quot;&gt;Practice Arena&lt;/h2&gt;

&lt;p&gt;Backdoor has a Practice Arena where users can test their skills by solving various challenges. Each challenge will be tagged for easier accessibility. Users will be ranked based on their scores.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/launching-backdoor/practice-arena.png&quot; alt=&quot;PracticeArena&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/launching-backdoor/user.png&quot; alt=&quot;User&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;competitions&quot;&gt;Competitions&lt;/h2&gt;

&lt;p&gt;This is where we would be hosting our competitions. There will be team participation as is the case with many other CTFs. Each competition will be open for a particular amount of time only and there will be a separate leaderboard for each one. Challenges will be shifted to Practice Arena soon after the competition ends.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/launching-backdoor/competitions.png&quot; alt=&quot;Competitions&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;technical-details&quot;&gt;Technical details&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;The challenges are hosted on a different server so that the main Backdoor platform is free from any exploits.&lt;/li&gt;
  &lt;li&gt;We even have a different domain for the challenges so as to prevent an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;XSS&lt;/code&gt; vulnerability in one of the challenges leading to the hijacking of the SDSLabs account of the user.&lt;/li&gt;
  &lt;li&gt;Backdoor’s backend is written in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PHP&lt;/code&gt; using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Toro&lt;/code&gt; as the framework.&lt;/li&gt;
  &lt;li&gt;All the services on the server are running in a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chroot&lt;/code&gt; jail thereby preventing access to the parent directory and files.&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Launching Experiences</title>
      <link>https://blog.sdslabs.co/2014/10/launching-experiences</link>
      <pubDate>Sun, 26 Oct 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/10/launching-experiences</guid>
      <description>&lt;p&gt;Experiences is a collection of posts by the Indian Institute of Technology Roorkee alumni. It aims to guide as well as enlighten the new generation. The idea is to bring all this content together on a single platform and make it easily accessible for everybody.&lt;/p&gt;

&lt;p&gt;It is always hard for current students of the institute to get in touch with the alumni. As such, there is a gap between these two realms. We have curated a list of blog posts by IITR alumni from various streams and years. We hope all this content can inspire a new generation of students to bridge that gap.&lt;/p&gt;

&lt;p&gt;Experiences features a simple functionality to fetch content from existing blog posts. You just need to sign up and give us a link to your existing post, and it will be quickly added to Experiences.&lt;/p&gt;

&lt;p&gt;We hope to see active participation from alumni as well as students to create a large pool of experiences that they had had at IIT Roorkee. If you want a post to be added to Experiences on your behalf, you can log in to Experiences and add one or you can mail us with a link to your blog post at contact@sdslabs.co.in.&lt;/p&gt;

&lt;p&gt;Experiences is live at &lt;a href=&quot;https://experiences.sdslabs.co&quot;&gt;experiences.sdslabs.co&lt;/a&gt; on the internet.&lt;/p&gt;

&lt;h2 id=&quot;screenshots&quot;&gt;Screenshots&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/launching-experiences/homepage.png&quot; alt=&quot;Homepage&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/launching-experiences/example_post.png&quot; alt=&quot;Example Post&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;technical-details&quot;&gt;Technical Details&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Experiences has been in our kitchen for quite a while and needed a polish before launch.&lt;/li&gt;
  &lt;li&gt;PHP based backend using Limonade framework and JavaScript for DOM side manipulations.&lt;/li&gt;
  &lt;li&gt;Readability API for parsing blog posts.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Feedback & Chat</title>
      <link>https://blog.sdslabs.co/2014/10/feedback-chat</link>
      <pubDate>Fri, 17 Oct 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/10/feedback-chat</guid>
      <description>&lt;p&gt;At SDSLabs, we take user feedback very seriously. This is why, we had a feedback application right from day 1 of our launch. If you’ve ever tried contacting us with a bug report, chances are you’ve heard back from us. We can’t reach our goal walking aimlessly. In SDSLabs we feel the users should define how they want to use our apps.So we change as you demand.&lt;/p&gt;

&lt;p&gt;So it’s completely you people who define how close we are from our goal or what else is to be achieved. Your feedback is the one of the core elements of our motivation.&lt;/p&gt;

&lt;p&gt;Software development is not easy, especially when you have lots of different projects, and only a few people managing them all. One of the things that makes it substantially easier is user feedback. To improve this feedback loop we are launching a mini-chat and a new &lt;a href=&quot;https://feedback.sdslabs.co.in/&quot;&gt;feedback&lt;/a&gt; application today.&lt;/p&gt;

&lt;p&gt;Comment anonymously or create private issues if it contains sensitive information, follow any issue to keep yourself updated via email notifications, upvote ideas and issues to help us prioritize tasks. Our new feedback application aims at providing all the required features so that you can easily state your ideas and convey the issues you face.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://chat.sdslabs.co/&quot;&gt;Chat with SDSLabs&lt;/a&gt;&lt;/strong&gt; is a simple chat service that lets you chat with SDSLabs members. You can drop in to say Hi, or to report a bug, or perhaps even to clarify some doubts on a problem in Erdős or CodeVillage. The application is anonymous; so as to allow you to chat more easily, and so that we can interact with users from around the world. Messages from the SDSLabs team are highlighted, so you can easily notice important messages.&lt;/p&gt;

&lt;p&gt;We are always looking for feedback to make our products better, and there are more upcoming changes in the pipeline that will help us with that.&lt;/p&gt;

&lt;p&gt;You can check it out at &lt;a href=&quot;https://chat.sdslabs.co&quot;&gt;chat.sdslabs.co&lt;/a&gt;. Just type a nickname, and you’ll be ready to go. We look forward to talking with you.&lt;/p&gt;

&lt;p&gt;Our feedback application is also live at &lt;a href=&quot;https://feedback.sdslabs.co.in/&quot;&gt;feedback.sdslabs.co.in&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Erdős: Search, Activity, πrates, etc.</title>
      <link>https://blog.sdslabs.co/2014/10/erdos-updates</link>
      <pubDate>Wed, 08 Oct 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/10/erdos-updates</guid>
      <description>&lt;p&gt;&lt;a href=&quot;https://erdos.sdslabs.co&quot;&gt;Erdős&lt;/a&gt; is now an year old and has come a long way from when it was launched back in October 2013. As it continues to &lt;a href=&quot;https://news.ycombinator.com/item?id=8313702&quot;&gt;gain popularity&lt;/a&gt; among math geeks the world over, we have been silently working super hard to make it even better. Today, we’re unveiling lots of big improvements to Erdős!&lt;/p&gt;

&lt;h2 id=&quot;search&quot;&gt;Search&lt;/h2&gt;

&lt;p&gt;Tucked away neatly in the topbar, the search bar is accessible from everywhere and helps you discover users, problems, tags easily. This includes full-text search within problem statements as well as searching for a particular tag using square brackets, like &lt;a href=&quot;https://erdos.sdslabs.co/search?q=%5Bnumber%20theory%5D&quot;&gt;this&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/erdos-updates/search.png&quot; alt=&quot;search&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Searching for a user by name or username would return links to relevant user profiles as well as problems created by that user.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/erdos-updates/search_users.png&quot; alt=&quot;search_users&quot; /&gt;
&lt;img src=&quot;/images/posts/erdos-updates/search_problems_2.png&quot; alt=&quot;search_problems_2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Searching for a tag would list all problems with that tag. For example, here we search for &lt;a href=&quot;https://erdos.sdslabs.co/search?q=combinatorics&quot;&gt;combinatorics&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/erdos-updates/search_tags.png&quot; alt=&quot;search_tags&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It works just like you’d expect it to. Go give it a try.&lt;/p&gt;

&lt;h2 id=&quot;activity&quot;&gt;Activity&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/erdos-updates/activity.png&quot; alt=&quot;activity&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In addition to &lt;a href=&quot;https://erdos.sdslabs.co/activity&quot;&gt;activity&lt;/a&gt; across all problems on Erdős, you can also view recent submissions by a particular &lt;a href=&quot;https://erdos.sdslabs.co/activity/users/Min&quot;&gt;user&lt;/a&gt; or for a particular &lt;a href=&quot;https://erdos.sdslabs.co/activity/problems/2&quot;&gt;problem&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;user-profiles&quot;&gt;User Profiles&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/erdos-updates/solved_problems.png&quot; alt=&quot;solved_problems&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Lists were taking up too much space. &lt;a href=&quot;https://erdos.sdslabs.co/users/Nihal&quot;&gt;Green highlights&lt;/a&gt; save space and look delicious.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/erdos-updates/profile.png&quot; alt=&quot;profile&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Public profile information is now editable in &lt;a href=&quot;https://erdos.sdslabs.co/settings/profile&quot;&gt;profile settings&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;newsletter&quot;&gt;Newsletter&lt;/h2&gt;

&lt;p&gt;We’re starting a newsletter service for Erdős. This will have upcoming competition details, new problems, feature additions and more. No spam of course. You can subscribe to it &lt;a href=&quot;https://tinyletter.com/erdos&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;logo&quot;&gt;Logo&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/erdos-updates/phex.png&quot; alt=&quot;phex&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Yes, we have a shiny new logo as well.&lt;/p&gt;

&lt;h2 id=&quot;πrates&quot;&gt;πrates&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/erdos-updates/pi-rates-cover.png&quot; alt=&quot;πrates&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We are hosting &lt;a href=&quot;https://erdos.sdslabs.co/competitions/pi-rates&quot;&gt;πrates&lt;/a&gt; this weekend. It’s a 24-hour online contest with problems set by &lt;a href=&quot;https://pag.sdslabs.co&quot;&gt;PAG&lt;/a&gt; and ₹7000 hard cash up for grabs, sponsored by &lt;a href=&quot;https://thomso.in&quot;&gt;Thomso&lt;/a&gt;!&lt;/p&gt;

&lt;h2 id=&quot;technical-details&quot;&gt;Technical Details&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;We’ve shifted to a custom &lt;a href=&quot;https://opauth.org/&quot;&gt;Opauth&lt;/a&gt;-based multi authentication framework which enables us to support Single Sign-On across all our internet applications.&lt;/li&gt;
  &lt;li&gt;Our newsletter service is powered by &lt;a href=&quot;https://tinyletter.com/&quot;&gt;TinyLetter&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;We’re using &lt;a href=&quot;https://github.com/Seldaek/monolog&quot;&gt;Monolog&lt;/a&gt; to log all actions made through our robust admin panel.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s all for now. Head over to &lt;a href=&quot;https://erdos.sdslabs.co&quot;&gt;Erdős&lt;/a&gt; and give it a try if you haven’t already. More updates soon. Cheers!&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How does the sdslabs.co.in domain name work?</title>
      <link>https://blog.sdslabs.co/2014/07/sdslabs-domain-working</link>
      <pubDate>Sun, 27 Jul 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/07/sdslabs-domain-working</guid>
      <description>&lt;p&gt;A very common asked question is about our domain name and how does it work locally. When we launched &lt;a href=&quot;https://blog.sdslabs.co.in/2010/11/hello-world&quot;&gt;filepanda, and our preliminary homepage&lt;/a&gt; a long time ago, we had been using the easy to remember IP address &lt;a href=&quot;https://192.168.208.208&quot;&gt;https://192.168.208.208&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now, however we are using the domain name sdslabs.co.in for all our services, including &lt;a href=&quot;https://dc.sdslabs.co.in&quot;&gt;DC&lt;/a&gt;. To understand how this works, you will have to understand how the name resolution of a domain name takes place.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Domain Name System (DNS) is a hierarchical distributed naming system for computers, services, or any resource connected to the Internet
or a private network. It associates various information with domain names assigned to each of the participating entities.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Domain_Name_System&quot;&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DNS is basically a service which resolves domain names to IP addresses. If you own a domain name, you can point it to wherever you want. This is usually done in the administration panel of your hosting services. We have setup multiple domains on our nameserver (&lt;a href=&quot;https://mitsu.in&quot;&gt;mitsu.in&lt;/a&gt; as of the moment) to point to the IP address 192.168.208.x.&lt;/p&gt;

&lt;p&gt;For instance &lt;a href=&quot;https://sdslabs.co.in&quot;&gt;sdslabs.co.in&lt;/a&gt; points to &lt;code&gt;192.168.208.208&lt;/code&gt;, &lt;a href=&quot;https://echo.sdslabs.co.in&quot;&gt;echo.sdslabs.co.in&lt;/a&gt; points to &lt;code&gt;192.168.208.204&lt;/code&gt; and so on. This is done via updating something called &lt;code&gt;A records&lt;/code&gt; (this is the part of resolution which transaltes to IPv4 addresses).&lt;/p&gt;

&lt;p&gt;The benifits of having such a system in place are enormous:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Users don’t have to remember IP addresses, and can easily remember the site address.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;We can move around services, applications over different machines, and it will only take a single update to change the name resolutions&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;We could add alternative fallback servers easily (by having multiple A record entries) for a domain. We could even use this to point       sdslabs.co.in domain to something that is hosted online, for instance.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;We can have catchy, and simple to remember urls for eg &lt;a href=&quot;https://sdslabs.co.in/login&quot;&gt;https://sdslabs.co.in/login&lt;/a&gt;, and &lt;a href=&quot;https://sdslabs.co.in/logout&quot;&gt;https://sdslabs.co.in/logout&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, we are running all our services on https, which is &lt;em&gt;not dependent upon the visibility of the website&lt;/em&gt;. Even though the site is hosted locally, the process of certificate signing remains exactly the same as any other site. Once we aquire a SSL certificate and attach it to our web-server, the visibility of the domain does not matter to the browser at all.&lt;/p&gt;

&lt;p&gt;Note: For the benifit of those not in IIT Roorkee, we are running multiple web-service on the domain sdslabs.co.in, which is only served locally, as it resolves to a local IP address (192.168.208.208)&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Collegiate Cyber Threat Competition - Wave III</title>
      <link>https://blog.sdslabs.co/2014/05/deloitte-cctc</link>
      <pubDate>Tue, 06 May 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/05/deloitte-cctc</guid>
      <description>&lt;p&gt;Deloitte has been organizing the Collegiate Cyber Threat Competition every year for the past 3 years. SDSLabs has been fortunate enough to &lt;a href=&quot;https://captnemo.in/blog/2011/11/20/cctc-blog/&quot;&gt;be the winning team&lt;/a&gt; &lt;a href=&quot;https://www.facebook.com/photo.php?fbid=10151631176199203&amp;amp;set=t.622604202&amp;amp;type=3&amp;amp;theater&quot;&gt;three years in a row now&lt;/a&gt;. Although they change the format of the competition every year and will continue to do so, their main idea is to get students and industry experts together on the same platform, and discuss and tackle challenges in cyber security. Taking part in the competition is in itself an immense learning experience. This post summarizes my experience at this year’s CCTC.&lt;/p&gt;

&lt;h2 id=&quot;round-0&quot;&gt;Round 0&lt;/h2&gt;

&lt;p&gt;Since SDSLabs has been participating in the earlier two iterations of CCTC, we were looking forward to Deloitte coming to our campus this year as well. Round 0 was held at several college campuses across India in February, and involved a written quiz in teams of 3. The problems ranged from web application security to networking and were fairly straightforward. 3 teams were shortlisted from each campus to proceed to the following rounds. Our team, Legacy, consisted of Abhay Rana, Ravi Kishore and myself.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cctc/round-0.jpg&quot; alt=&quot;round-0&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;round-1&quot;&gt;Round 1&lt;/h2&gt;

&lt;p&gt;Round 1 was an online jeopardy-style CTF. There were multiple categories of problems such as SQL injection, XSS, cryptography, network analysis, etc which had difficulty-based point values. We were to submit a flag obtained by solving the challenge, and the 1st two teams to solve every challenge were given bonus points. Solutions to most of the challenges are given &lt;a href=&quot;https://github.com/captn3m0/cctc3-solutions&quot;&gt;here&lt;/a&gt; and we had a lot of fun solving them. We solved all but one challenge and were happy to be on top of the leaderboard before it was frozen, although we were later told that the final leaderboard was much closer than we expected. Top 5 teams from Round 1 were invited for the grand finals held in Hyderabad on May 1-2.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cctc/round-1-leaderboard.jpg&quot; alt=&quot;round-1-leaderboard&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;round-2&quot;&gt;Round 2&lt;/h2&gt;

&lt;p&gt;Round 2 was organized at the Hyderabad International Convention Centre. We landed in Hyderabad on the evening of 1st May, checked in at the Novotel and had some time to freshen up before meeting the Deloitte team for dinner. We were under the impression that the finals would take place the following morning and we would enjoy a peaceful night’s sleep. They seemed to have other plans for us though. After dinner, the competition was declared open, and each team was handed 2 identical laptops with 2 VMs each which we were told were known to be compromised. We had all night to analyze the systems, identify the extent of compromise, the malicious files/processes, the changes (filesystem/registry) made by them, the network activity, etc. and were to deliver a presentation on our findings to a panel of security experts from the industry. This was for 400 points. In addition, we also had to submit a &lt;a href=&quot;https://stix.mitre.org/&quot;&gt;STIX&lt;/a&gt; document to share the security threat information with our peers (in a real-world scenario), which was for 200 points.&lt;/p&gt;

&lt;p&gt;Both the VMs were Windows machines. We weren’t allowed to mess with the host machine, or transfer files from the VMs to the internet or external media. Initially, our attention was divided over both the VMs but we were very early to figure out that one of them was a decoy (thanks to Nemo’s intuition). We used a host of tools such as CurrProcess, Wireshark, RegScanner, ProcessActivityView, SmartSniffer, Malware Bytes, HijackThis, etc. We kept logging our observations and steps on a shared WorkFlowy list.&lt;/p&gt;

&lt;p&gt;This round was very exciting, more so because we hadn’t taken part in this kind of a challenge ever before and the whole real-world scenario of working in a Cyber Incident Response Team was very new to us. Although we were far from discovering all the malicious files and processes, we did well enough in our analysis to be declared the winners and were awarded INR 120000.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/cctc/winners.jpg&quot; alt=&quot;winners&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We thoroughly enjoyed taking part in this version of CCTC. Both round 1 and round 2 had brilliant challenges and we learnt a lot in the process. We are looking forward to next year’s competition and we have been promised that it’ll be bigger and better.&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>SDSLabs moved to Slack for communication</title>
      <link>https://blog.sdslabs.co/2014/04/sdslabs-slack</link>
      <pubDate>Sun, 06 Apr 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/04/sdslabs-slack</guid>
      <description>&lt;p&gt;&lt;img src=&quot;/images/posts/slack/slack.png&quot; alt=&quot;Slack&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I don’t know of any other campus group that uses team chat tool. Most of them don’t need it. But &lt;a href=&quot;https://blog.sdslabs.co/&quot;&gt;SDSLabs&lt;/a&gt; is a software development team. We have around 50 members across 5 years who work on various projects with around 1 or 2 on each project. While we live in the same city inside the same campus of same college, it is still tough to stay connected with what’s going on. When this group started off around 4 years ago, the then members used google groups as mailing list and a Facebook group for staying connected. But this was never enough. Discussions used to happen through private messages on GTalk/FB Chat, when if the same discussion took place in public medium, others could also gain a lot of insight. We knew about Campfire/HipChat etc but their free tier limited the number of people you could have in a team. As a student group it was just not feasible for us to pay the hefty monthly fees, not everyone could afford it. We ended up using &lt;a href=&quot;https://partychapp.appspot.com/&quot;&gt;Partychat&lt;/a&gt; that was built on top of GTalk. With &lt;a href=&quot;https://hubot.github.com/&quot;&gt;Hubot&lt;/a&gt; integration it was very good for us. At all times a few people were always online. It worked fine for us until Google Hangout came out which did not use an open protocol which was needed by Partychat. Even after that there was still a workaround through &lt;a href=&quot;https://imo.im&quot;&gt;imo.im&lt;/a&gt; but then they announced that they are shutting down support for 3rd party chats. That was the final nail in the coffin for partychat and we needed to move out fast.&lt;/p&gt;

&lt;p&gt;Right when this happened &lt;a href=&quot;https://slack.com&quot;&gt;Slack&lt;/a&gt; came out of private beta and the best part was that they had a free tier which did not limit the number of people in a team. So we gave it a shot and Slack turned out to have everything we could have dreamed of. The biggest drawback of using Partychat was the lack of rooms/channel. All the conversation, meaningless time pass and technical discussions, happened in the same chat window. So people who were busy working preferred to close the window. With Slack, we have multiple channels: #general, #incubator, #design, some project specific channels and some private channels. Slack even supports different levels of notification triggers on a per channel basis. This has proved to be the best feature, at least for me.&lt;/p&gt;

&lt;p&gt;Slack has way too many integrations available. Being on the free tier, we are restricted to 5. We have Hubot enabled because we can’t live without it. We are also exploiting the “incoming webhooks” integration for a variety of purposes.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/slack/stats.png&quot; alt=&quot;Slack Stats&quot; /&gt;&lt;/p&gt;

&lt;p&gt;One really interesting feature is that even if you leave the Slack web client open and leave your laptop unattended, it still detects that inactivity and sends you a mail in case of mentions. Slack is full of such small but really thoughtful features that make using it an absolutely wonderful experience. Since moving to Slack I have found that we are able to have more conversation and the friction to starting a discussion has reduced a lot since there’s an appropriate channel for everything. We are not a company or a startup with a remote team but we are totally in love with Slack. It remains pinned in Google Chrome for me. After college, if I ever go on to start up Slack will be the first thing I’ll be investing in.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you liked this post and are interested in trying out Slack, use this &lt;a href=&quot;https://slack.com/r/025qjxb7-025qv2dz&quot;&gt;referral link&lt;/a&gt; in order for both of us to get 100$ free credit&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>BackdoorCTF '14</title>
      <link>https://blog.sdslabs.co/2014/04/backdoor-ctf</link>
      <pubDate>Sat, 05 Apr 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/04/backdoor-ctf</guid>
      <description>&lt;p&gt;After all our work on software development, testing and security analysis, the time prompts us to showcase what we have learnt. Over the years we have found that the best way to teach people how to build secure systems is by giving them practical experience with problems that are rare to encounter otherwise. Backdoor is our public facing computer security competition. Leveraging Backdoor as a platform for the same is in itself an interesting task. This is the second time SDSLabs has organized such a competition over the internet. We must say that the knowledge we gained while organizing it is immense.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/backdoor-ctf/logo.jpg&quot; alt=&quot;BackdoorCTF&quot; /&gt;&lt;/p&gt;

&lt;p&gt;For those who missed out, Backdoor is a jeopardy style capture the flag competition organized by SDSLabs. That is, it involves multiple categories of problems, each of which contains a variety of challenges of different point values. Corresponding to each problem is a hidden flag (basically a string) which must be submitted to us as a proof of having solved the problem. Keeping the interests of both beginners as well as advanced users in mind, we designed a series of interesting challenges to get hands-on practical experience.&lt;/p&gt;

&lt;p&gt;An active participation of teams from over 68 countries made Backdoor a huge event. It witnessed an overwhelming participation of over 460 teams, with more than 330 teams submitting atleast one flag. The competition took place over a period of 36 hours during Cognizance 2014, the annual technical fest of IIT Roorkee. We faced a few glitches during the contest (teams being awarded twice the actual points for a flag), but overall the contest went smooth.&lt;/p&gt;

&lt;p&gt;While designing the challenges we picked some of the problems that we actually faced while working on our applications whether it be related to SQL Injection, network analysis or cryptography. We tried to frame the challenges around these concepts, simulating real world applications. Solving the challenges required deep understanding of a wide array of topics such as reverse-engineering, network sniffing, protocol analysis, web security, system administration, and cryptanalysis. For instance, one of the challenges was based on the RSA encryption algorithm, and it was really essential to know the working of the algorithm to be able to solve the challenge.&lt;/p&gt;

&lt;p&gt;As an aside, BackdoorCTF reflects a lot of what we’ve learned while building applications at SDSLabs. If you’re interested in this kind of a thing, have a look at &lt;a href=&quot;https://blog.sdslabs.co.in/2014/01/how-to-join-sdslabs/&quot; title=&quot;How to join SDSLabs&quot;&gt;how to join SDSLabs&lt;/a&gt;, drop us an email at &lt;a href=&quot;mailto:contact@sdslabs.co.in&quot;&gt;contact@sdslabs.co.in&lt;/a&gt; and we’ll make sure you aren’t disappointed.&lt;/p&gt;

&lt;p&gt;We will be coming up with a bigger, better and more challenging one next year.&lt;/p&gt;

&lt;h2 id=&quot;technical-details&quot;&gt;Technical Details&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;For SQL injection based problems we created a new MySQL user with only &lt;strong&gt;SELECT&lt;/strong&gt; privilege (on a separate database) so as to prevent any possible security leak&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;A custom script was written in Python to generate the two random 110bit (~10^33) prime numbers (&lt;strong&gt;p&lt;/strong&gt; and &lt;strong&gt;q&lt;/strong&gt;) for the RSA encryption challenge. The primality was tested using a modified miller-rabin test.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;aircrack-ng was used to design the WPA PSK password cracking challenge.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Some of the challenges were hosted on Heroku to ease the load on our server, as well as to run the challenges in isolation for security reasons.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;One of the challenge involved github webhooks to add users to a common github organization and ping the server with commit details.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Nano. Playlists. Recommendations. And more of Muzi.</title>
      <link>https://blog.sdslabs.co/2014/02/muzi-nano-updates</link>
      <pubDate>Thu, 27 Feb 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/02/muzi-nano-updates</guid>
      <description>&lt;p&gt;Muzi has consistently been our most popular application, and we’ve worked on it continously over time to make it even better. Today, we announce a slew of new features that we’ve brought to muzi. We hope these features will help you use Muzi more extensively. As always, we are &lt;a href=&quot;https://sdslabs.co.in/feedback/&quot;&gt;open to feedback&lt;/a&gt; regarding these new features or any bugs you may face.&lt;/p&gt;

&lt;h2 id=&quot;nano&quot;&gt;Nano&lt;/h2&gt;

&lt;p&gt;For those of you who have created lots of playlists on Muzi, we bring you &lt;a href=&quot;https://sdslabs.co.in/nano/&quot;&gt;Nano&lt;/a&gt;, a specially crafted light version of Muzi. It was designed from the ground up to be lightweight, minimal, and above all easily usable. It does not boast of all the features that Muzi has, but it more than makes up for it with its beautiful interface. Just hit &lt;a href=&quot;https://sdslabs.co.in/nano/&quot;&gt;https://sdslabs.co.in/nano/&lt;/a&gt; (you must be logged in), choose a playlist, and you’re all set. Repeat is enabled by default in Nano, and you can turn on shuffle at will. The share link is available directly in Nano for you to use as well. The controls (including keyboard shortcuts) for Nano are same as that of Muzi&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi/nano.jpg&quot; alt=&quot;Muzi Nano Screenshot&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;shared-playlists&quot;&gt;Shared Playlists&lt;/h2&gt;

&lt;p&gt;Muzi now includes support for shared playlists. You can share any of your playlists by just right-clicking on it and clicking on “Share”. Shared playlists are accessible to all muzi users by the “playlist” button in the top bar.&lt;/p&gt;

&lt;h2 id=&quot;music-recommendation&quot;&gt;Music Recommendation&lt;/h2&gt;

&lt;p&gt;This is one feature we’ve been working on for a long while, and are proudly announcing today. Whenever you’re listening to a song, our recommendation engine will crunch the numbers and provide you with a  “Similar” button (in bottom bar). Click on it to get a list of songs similar to the one you are currently playing. Our recommendation engine currently only supports English tracks due to technical reasons, but rest assured, we are working on removing this limitation. Alternatively, you can also right-click on any track in the middle or right pane and choose “Similar” to see similar tracks of any song.&lt;/p&gt;

&lt;h2 id=&quot;history-playlist&quot;&gt;History Playlist&lt;/h2&gt;

&lt;p&gt;Even though Muzi logs every song you listen to and shows it to you in tickr, there wasn’t any way for a user to get access to that data. Until now, that is. Starting today, if you are logged in, you will see a special “History” playlist in your list of playlists. Click on that to get a playlist of all songs you’ve ever listened to in Muzi. This playlist is sorted chronologically, unlike the rest of the playlists, so that you can find that one elusive song you listened to a while ago.&lt;/p&gt;

&lt;h2 id=&quot;animated-background&quot;&gt;Animated Background&lt;/h2&gt;

&lt;p&gt;As a tiny improvement in how we make our awesome background even more engaging, artist backgrounds are now animated. This gives a mesmerizing effect to the viewer, and it looks totally awesome!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://drp.io/files/530ef73549bad.gif&quot; alt=&quot;Muzi Background Gif&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;collection-play&quot;&gt;Collection Play&lt;/h2&gt;

&lt;p&gt;We’ve made all track collections in the middle pane playable or addable by adding two new buttons on top of the middle pane. They will be visible whenever you are seeing a track collection. This includes things like “Tickr”, “Top Tracks”, “Similar tracks”, or top tracks by a particular artist.&lt;/p&gt;

&lt;h2 id=&quot;random-play&quot;&gt;Random Play&lt;/h2&gt;

&lt;p&gt;We’ve added a new button in Muzi’s bottom bar called Random. Its a simple feature that helps you discover new music, randomly. Just click on it, and feast as a random song is added to your playlist.&lt;/p&gt;

&lt;h2 id=&quot;bug-fixes&quot;&gt;Bug Fixes&lt;/h2&gt;

&lt;p&gt;This release also fixes some minor bugs such as an issue with the download button, and a certain double play bug. We’ve also removed some old unused code &amp;amp; updated to &lt;a href=&quot;/2013/11/automating-with-grunt/&quot;&gt;using a minified version of all javascript&lt;/a&gt; in main Muzi. Clicks on the left button now first seeks the song to start, and then plays the previous track on a second click. This behaviour makes muzi more consistent with most other music players.&lt;/p&gt;

&lt;h2 id=&quot;technical-details&quot;&gt;Technical Details&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;We are using &lt;a href=&quot;https://en.wikipedia.org/wiki/K-means_clustering&quot;&gt;k-means clustering&lt;/a&gt; and &lt;a href=&quot;https://shagunsodhani.in/recommendation-systems-i/&quot;&gt;cosine similarity&lt;/a&gt; as the base for our recommendation engine, which is written in Python.&lt;/li&gt;
  &lt;li&gt;We handle History playlists similar to the root user in linux. A special playlist id of 0 is used for the history playlist.&lt;/li&gt;
  &lt;li&gt;Our background animations are powered by css3-transforms and are functional in both Firefox and Chrome.&lt;/li&gt;
  &lt;li&gt;The minification process is based on grunt, which is an excellent tool for these kind of tasks.&lt;/li&gt;
  &lt;li&gt;Nano uses &lt;a href=&quot;https://github.com/goldfire/howler.js/&quot;&gt;howler.js&lt;/a&gt; as the library for playing songs. We prefer the HTML5 Audio mode, which allows us to stream audio directly.&lt;/li&gt;
  &lt;li&gt;Nano is a #nobackend application, which has zero lines of backend code. It uses the existing Muzi backend to perform all of its tasks.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Code.Fun.Do '14</title>
      <link>https://blog.sdslabs.co/2014/02/code-fun-do</link>
      <pubDate>Thu, 13 Feb 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/02/code-fun-do</guid>
      <description>&lt;p&gt;The best and the most creative ideas lie somewhere in the minds of sleep deprived, college students, locked in a small and dark corner of their minds. A &lt;em&gt;Hackathon&lt;/em&gt; provides a platform to these people to code unique solutions to general problems and allows them to transform their ideas to websites, mobile applications or in some rare cases, cool robots. Code.fun.do is a series of hackathons organized by Microsoft to foster creativity and promote innovation in the best institutes across the country.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/code-fun-do/opening.jpg&quot; alt=&quot;Opening Ceremony&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The first ever Code.fun.do hackathon took place at IIT Kharagpur in November 2012. A large number of hackathons have since been conducted in the top institutes all across the country. This was the first time that the hackathon was organized in IIT Roorkee and the response was more than stellar. A total of 228 people participated in the event which was almost 1.5 times the number of participants in other institutions. Building on top of that, a record breaking 45 apps were submitted bringing the submission rate to an amazing 70% compared to only 50% for other institutions.&lt;/p&gt;

&lt;p&gt;The event started on 7th February, 2014 with workshops and hands-on sessions for students on how to build software applications for a range of devices such as Windows 8 tablets / PCs, Windows Phones and Kinect, connected and integrated across platforms and network boundaries through Windows Azure. Another session was conducted the next day about design and UX and it’s importance in the rapidly changing application development market.&lt;/p&gt;

&lt;p&gt;SDSLabs, being at the forefront of software development in the campus took part in the event and one of our teams (yes, we had multiple teams) won by making Air Maps, an application to navigate google earth using gestures and voice commands. The winning team included Abhishek Das, Ravi Kishore Rachuri, Durgesh Suthar and Divij Bindlish, all members of SDSLabs, studying Electrical Engineering in the campus.&lt;/p&gt;

&lt;p&gt;The Air Maps application creates a flying simulation over any city across the globe and the view is controlled using gestures. The application also shows educational places like museums, parks and national monuments on the city. You can pause at any location and see corresponding history and information about it. Relevant tweets are also displayed for that location. It also supports voice commands which allows a user to directly fly to a different city by saying “Fly to New York”. The application also supports street view to create a simulation of standing at a particular point inside a city. The view changes on when the user turns or moves in space.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/code-fun-do/application.jpg&quot; alt=&quot;Airmaps&quot; /&gt;&lt;/p&gt;

&lt;p&gt;All the four members of the top two teams won a Nokia Lumia 520 each. Apart from this, the 5 shortlisted teams get to be a part of the Finalists Forum, run by Microsoft where they are mentored by technology experts, both from within and outside Microsoft, to build impactful apps, over a period of approximately three months. These teams get to compete on a national level where the competition is much better and more fierce.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/code-fun-do/closing.jpg&quot; alt=&quot;Closing Ceremony&quot; /&gt;&lt;/p&gt;

&lt;p&gt;With an amazing response by the students and the professors of IITR, the crew from Microsoft was more than happy. Thus, we can expect them to show up next year as well with a bigger event with more workshops and better prizes. This is just a starting step which in the long run, will help the campus become more technology oriented.&lt;/p&gt;

&lt;h2 id=&quot;technical-details&quot;&gt;Technical Details&lt;/h2&gt;

&lt;p&gt;The winning application, AirMaps was a web based application with a server and client. A Kinect device was connected to the server. Data was crunched in C# and the corresponding result was sent to the front end using a custom modified Alchemy C# websocket server. User’s gestures and voice was recognized using robust SDKs provided by Microsoft and appropriate actions were defined for certain gestures and voice commands. This was built on top of the Kinect WPFViewers framework for faster development. The front-end utilized Google’s Earth, Maps, and Street View APIs to render the 3D landscape of a city and viewing street images. Apart from this, Twitter API was also used to display relevant popular tweets about any city or location.&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Final Recruitment List For 1st year (2014)</title>
      <link>https://blog.sdslabs.co/2014/01/recruitment-final-list-2014</link>
      <pubDate>Mon, 13 Jan 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/01/recruitment-final-list-2014</guid>
      <description>&lt;p&gt;393 people appeared for our written test this year. We interviewed 56 people before selecting the final 12 programmers. It was a really tough job to filter down from the 56 talented applicants to the final 12. Sadly, we have limited vacancies and can only take in 12. But this is not the end of line for others, there’s still a way to &lt;a href=&quot;/2014/01/how-to-join-sdslabs/&quot;&gt;join SDSLabs&lt;/a&gt;. We’ll continue taking open lectures on variety of topics. Stay connected with us on our Facebook &lt;a href=&quot;https://facebook.com/sdslabs&quot;&gt;page&lt;/a&gt; and &lt;a href=&quot;https://facebook.com/groups/sdswebdev&quot;&gt;group&lt;/a&gt; for the updates regarding this.&lt;/p&gt;

&lt;h2 id=&quot;programmers&quot;&gt;Programmers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Aditya Prakash &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Aniket Gupta &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Aryan Raj &lt;em&gt;(Civil)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Avishek De &lt;em&gt;(EE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Dhaval Kapil &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Kanu Priya &lt;em&gt;(EE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Rishabh Chhabra &lt;em&gt;(ECE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Rishi Devgan &lt;em&gt;(P&amp;amp;I)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Sopan Khosla &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Vikas Yadav &lt;em&gt;(CSE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Vishrut Mishra &lt;em&gt;(EE)&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Vertika Bansal &lt;em&gt;(MT)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will be releasing the final list of designers on 15th January, 2014.&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>How to Join SDSLabs</title>
      <link>https://blog.sdslabs.co/2014/01/how-to-join-sdslabs</link>
      <pubDate>Mon, 13 Jan 2014 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2014/01/how-to-join-sdslabs</guid>
      <description>&lt;p&gt;Recruitment is one of the most important events that we conduct year-round. We take the whole process very seriously and invest a lot of time and effort in it. Every problem in the recruitment test is a result of hours of brainstorming, every question asked in the interview aims to push the candidate to think from a different perspective, every selection made is absolutely critical and data-driven. We want an amazing environment of passionate and creative people and we don’t shy away from going to any lengths (or sleepless nights) possible to achieve that.&lt;/p&gt;

&lt;p&gt;Yet, we understand that the process is not bullet-proof, and we often miss out on worthy candidates and it disappoints us. Recruitment is also conducted as a once-in-a-year event, and is open to first years only, thus increasing our plight.&lt;/p&gt;

&lt;p&gt;We pride ourselves as being an open group. We often talk about the &lt;a href=&quot;/2012/12/how-does-sdslabs-work/&quot;&gt;tools we use internally&lt;/a&gt;, the tech behind our applications, our &lt;a href=&quot;https://github.com/sdslabs&quot;&gt;involvement in open-source&lt;/a&gt; and go as far as to conduct open lectures and meetups on every topic we discuss internally. As an extension of this open culture, we want to clarify that contrary to common belief, &lt;em&gt;we are always open to new members irrespective of year and branch&lt;/em&gt;. Even if you are an awesome designer in your second year, or a kick-ass developer in your third year, we are always open to new additions to our group.  We look for self-motivated doers who have initiated and finished projects on their own.&lt;/p&gt;

&lt;h2 id=&quot;programmers&quot;&gt;PROGRAMMERS&lt;/h2&gt;

&lt;p&gt;Obsessed with coding? Build something new every week? We insist that you join us!
It will be nice if you have a GitHub profile with a few projects.&lt;/p&gt;

&lt;h3 id=&quot;requirements&quot;&gt;Requirements&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Love for coding, in any language&lt;/li&gt;
  &lt;li&gt;Knowledge of Version Control (git) and/or Linux&lt;/li&gt;
  &lt;li&gt;Effective communication skills&lt;/li&gt;
  &lt;li&gt;Few projects to demonstrate the above points&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;designers&quot;&gt;DESIGNERS&lt;/h2&gt;

&lt;p&gt;Have an eye for clean, well-crafted and simple experiences? We insist that you join us!&lt;/p&gt;

&lt;h3 id=&quot;requirements-1&quot;&gt;Requirements&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Clear grasp of typography, layout, colour, motion and behaviour&lt;/li&gt;
  &lt;li&gt;Comfortable sketching out ideas, and translating them into Photoshop/Illustrator mockups&lt;/li&gt;
  &lt;li&gt;Effective communication skills&lt;/li&gt;
  &lt;li&gt;HTML/CSS/JS skills will be bonus&lt;/li&gt;
  &lt;li&gt;Few projects to demonstrate the above points&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CONTACT US&lt;/p&gt;

&lt;p&gt;SDSLabs is not a company, and members aren’t paid. It’s passion that drives us, not obligation. That’s why it’s an amazing place to learn and get inspired. If you feel it’s the right place for you too, drop us a mail at contact@sdslabs.co.in to say Hello, and we’ll make sure you aren’t disappointed.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>On Working at SDSLabs (5)</title>
      <link>https://blog.sdslabs.co/2013/12/working-sdslabs-5</link>
      <pubDate>Fri, 27 Dec 2013 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2013/12/working-sdslabs-5</guid>
      <description>&lt;p&gt;This January, we at SDSLabs would be going in with our recruitment drive for budding programmers and designers from first year students at IITR. This would be the fourth time after few inspired people came together and founded SDSLabs, that we’ll be doing such a thing. Over the years, the interest in joining the group has seen a steep rise with more than 300 students appearing for our written test last year. Hence, we started a series a blog posts( &lt;a href=&quot;https://blog.sdslabs.co/2012/01/work-at-the-sds&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;https://blog.sdslabs.co/2012/12/working-at-sdslabs&quot;&gt;2&lt;/a&gt;, &lt;a href=&quot;https://blog.sdslabs.co/2012/12/sdslabs-my-experiences&quot;&gt;3&lt;/a&gt;, &lt;a href=&quot;https://blog.sdslabs.co/2013/12/working-sdslabs-4&quot;&gt;4&lt;/a&gt; ) to give an insight to what working at SDSLabs would be all about, this post is one of them.&lt;/p&gt;

&lt;p&gt;It’s tough to put down how much and in how many ways I have benefited being a part of the group. I was in the first batch of students who were recruited, so have seen much of it’s progress being a member over time. Back then, this group used to function from a small Hobbies Club committee room. The challenge was that we didn’t have much to show when we used to knock doors of people who matter and ask for support for our much ambitious plans and there was no shortage of people who used to come with similar promises. Inspite of that, we did well, perhaps due to the enthusiasm shown by lab members that closely resembled that of a startup. Our lab soon became functional from its current location. There was growth and when started showing results, we were rewarded generously with more funds. These were utilized to make a fun place to work, so much as some may classify the lab as a luxurious place in IITR’s standards.&lt;/p&gt;

&lt;h2 id=&quot;learning&quot;&gt;Learning&lt;/h2&gt;

&lt;p&gt;My mentor in initial lab days was Abhay Rana(a.k.a. Nemo). If you have ever interacted him, you’ll know about his technical prowess. While it was exciting working on the same project, it was also a bit scary(no kidding) to ask him an easy question(He did answer them, but a good amount of them used to be &lt;a href=&quot;https://lmgtfy.com/&quot;&gt;lmgtfy&lt;/a&gt; links). The best part was that you’ll understand how to go about things and he’ll always give you ample resources to check out and learn.&lt;/p&gt;

&lt;p&gt;A year later, I found myself giving lectures to the next batch which joined us. It was no easy task, because I had to be prepared to answer their questions without a second thought and later mentor them for new projects, living up to high standards that Abhay and Harshil had set. The culture has so developed that even today if you participate in any discussion, leave apart the lectures, you’ll learn something new, every time.&lt;/p&gt;

&lt;h2 id=&quot;work&quot;&gt;Work&lt;/h2&gt;

&lt;p&gt;Conventionally, you are assigned a project in accordance to where your interests lie. However what makes it different is that we promote an open culture. All discussions/mock-ups/code base is available to everyone in the group. Which practically means one can alter the functionality of any app as he/she wishes. In addition to that, no project is an individual project, every project is shaped by constructive ideas and thoughts by others in the group.&lt;/p&gt;

&lt;p&gt;Since the beginning, we have had a hack-ish culture of going about developing applications. There’s freedom, and then there’s rapid development. I was writing code in a Hackathon(codename:Syntax Error) even before I had completed a month as a part of SDSLabs. Although the spaghetti code written by me then never went into production, it in a way inspired an idea for an application which we launched last sem.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntaxerror1.jpg&quot; alt=&quot;First Hackathon in SDSLabs&quot; /&gt;&lt;/p&gt;

&lt;p&gt;One thing, I feel should be mentioned here is that the re-naming of the section from Web Development to Software Development isn’t supposed to be superficial. As the founders of the lab would say, our domain isn’t limited to Web only, we would love if you want to work on any field related to computers that you feel has a lot of scope of innovation and application. Our only condition would be, be amazing.&lt;/p&gt;

&lt;h2 id=&quot;competitions&quot;&gt;Competitions&lt;/h2&gt;

&lt;p&gt;We love to grab the first opportunity we get to participate to participate in events and contests, and luckily, someone from lab end up going well in almost all competitions we have ever participated. Whether it was playing with phonegap for Adobe Express Apps, or cracking different levels in a  CTF, or writing a research paper for Deloitte CCTC, we do participate. I believe this keeps the competitive spirit alive in the group where we strive to be the best.&lt;/p&gt;

&lt;p&gt;Winning of course, is always special. I was a part of the lab team that went specially to IIT Delhi to participate in &lt;a href=&quot;https://blog.sdslabs.co/2012/09/hacku&quot;&gt;Yahoo HackU!&lt;/a&gt;, and our app was adjudged the geekiest hack. We did try to convince them to add IITR in the future, and hopefully we’ll see something positive in this regard. I’m also part of the lab team in the finals of Google Cloud Developer Challenge, hopefully we make the best of it.&lt;/p&gt;

&lt;p&gt;Over the last year, we have taken a step forward from only participating in competitions to hosting them as well. We conducted a &lt;a href=&quot;https://blog.sdslabs.co/2013/04/competitions-galore&quot;&gt;handful&lt;/a&gt; last march, during cognizance, one of them was Backdoor, our very own CTF. Cracking problems is one thing but framing problems with varying difficulties is an experience of its own. Recently, we did also organize Syntax Error, read more about our organizing experience &lt;a href=&quot;https://blog.sdslabs.co/2013/10/syntax-error-2013&quot;&gt;here&lt;/a&gt;. It was the first major event me and Abhishek had planned after being selected as Google Student Ambassadors of IITR, something we got courtesy of being members of SDSLabs&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntaxerror2.jpg&quot; alt=&quot;Organizing Team of Syntax Error&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;group-culture&quot;&gt;Group Culture&lt;/h2&gt;

&lt;p&gt;We spend considerable free time we get in our lab among others from the group. Add to it, our &lt;a href=&quot;https://blog.sdslabs.co/2012/12/how-does-sdslabs-work&quot;&gt;internal group chat&lt;/a&gt;, which ensures that we remain connected is what makes our group close knit. This association isn’t limited to the time one spends during their stay at IIT Roorkee. Statistically speaking, the highest number of mails(which is large number itself) on our current year’s mailing list is from an alumni, just speaks of the strong bond.&lt;/p&gt;

&lt;h2 id=&quot;joining-sdslabs&quot;&gt;Joining SDSLabs&lt;/h2&gt;

&lt;p&gt;If everything you’ve read above excites you and you picture yourself being a part of SDSLabs, come write our test in January. It’s been a dream ride so far, join us in that journey as we continue to grow. All you need to succeed is willingness to learn and a mindful of creative ideas.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Working at SDSLabs (4)</title>
      <link>https://blog.sdslabs.co/2013/12/working-sdslabs-4</link>
      <pubDate>Mon, 16 Dec 2013 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2013/12/working-sdslabs-4</guid>
      <description>&lt;p&gt;It was a cold January evening when I received the news that I was selected in SDSLabs. Back then, I didn’t know about the effect that phone call would have, but here we are, 11 months later and now, SDSLabs has become a central part of my identity here at IITR. It’s in here, that I met some of the most hard working and talented people in the entire campus and it has been an absolute pleasure working with them.&lt;/p&gt;

&lt;h2 id=&quot;the-learning-experience&quot;&gt;The Learning Experience&lt;/h2&gt;

&lt;p&gt;After joining, I was introduced to a lot of new stuff like Git, Node, Python, Backbone.js, Design Patterns, Javascript, MVC, AJAX, jQuery, Angular, CSS, Stylus, LESS… I could go on and on. I started using Linux (after using windows for the past 10 years) and have since fallen in love with it. The point is that lab is a center for learning, you learn something new every time you are here. It provides a place to learn without any kind of restriction. The lab is open 24 hours a day so you can come and go as you please. Everybody is extremely helpful and will consistently point you in the right direction as to what you should learn or try next. You get to learn how websites that you visit daily and how the applications you use on your mobile actually work. Every last detail.&lt;/p&gt;

&lt;p&gt;Another great thing about the environment is the geek-speak that flows about. Just listening to all the conversations in the lab will tell you something new about an open source library, why the new application for android is really cool, why a new startup is bound to fail etc. This list is endless as well.&lt;/p&gt;

&lt;h2 id=&quot;my-work&quot;&gt;My Work&lt;/h2&gt;

&lt;h3 id=&quot;muzi&quot;&gt;Muzi&lt;/h3&gt;

&lt;p&gt;I first tried using Muzi back in my first semester when one of my friends told me about this awesome web portal for the campus that provides an amazing music player. Since then, I have used it almost everyday. It has been a great joy to actually work on the application and see your changes live on the final deployed version that people across the entire campus use everyday. I worked on the new UI for displaying top tracks for each artist which helps a user to find good music a lot quicker. I also did some work on debugging the application, fixing the &lt;strong&gt;infamous&lt;/strong&gt; double play bug, that used to play two songs at the same time. The part that I liked best was that there was absolutely no restriction for me to work on any of the existing projects. All of the source code was available to me and I could make any modification that would make the overall experience better for the user.&lt;/p&gt;

&lt;h3 id=&quot;api&quot;&gt;API&lt;/h3&gt;

&lt;p&gt;I worked on the central API that supports all of our applications on the portal. Through this project, I got to learn how a web portal should be structured. This project involved making few changes across all applications and as a result, I got to know what are the best practices that should be followed. I also learned about cross domain resource sharing and preventing attacks that use the same. The main point is that working on any lab project teaches you something that you do not know and helps you to become better. Other lab members, sometime from the same year, will always be there to guide you whenever you are stuck.&lt;/p&gt;

&lt;h2 id=&quot;group-activites&quot;&gt;Group Activites&lt;/h2&gt;

&lt;p&gt;SDSLabs started primarily as a group of web developers who, over a period of two years, developed the web portal as we know it today. For the past one year, the group has branched out and has been involved in various activities across the campus ranging from regular meetings of the Linux User Group to organizing Syntax Error, IITR’s first hackathon. As a member of the group, I was able to participate in and help organize such activities over the past year. I participated in the Linux User Group and helped people from all years, even M.Tech students, to install Ubuntu on their laptops. I also took some of the public lectures of the group to introduce eager students to web development and help them get started. And although I was not a part of the organizing committee for Syntax Error, I did have a lot of fun in the all night coding session for the hackathon. Such activities have provided me a learning experience of a different kind which wouldn’t have been possible without the group.&lt;/p&gt;

&lt;h2 id=&quot;what-else&quot;&gt;What Else?&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Frequent interactions with our alumni. Any member can have a chat with any of our alumni at any time. They constantly respond to all the emails as if they are still part of the group. This goes to show the effect that lab has on all it’s members.&lt;/li&gt;
  &lt;li&gt;Amazing chapos. This semester, we have had a lot of chapos, almost one chapo every week. That includes Domi chapos with your huge order coming on a rickshaw, to hotel chapos in Prakash or Divine.&lt;/li&gt;
  &lt;li&gt;Your regular home away from home. A lot of the members choose to spend their nights at SDSLabs, rather than staying at their hostels. Some people even leave for their classes directly from the lab itself!&lt;/li&gt;
  &lt;li&gt;A 42” TV. The best place to view all your sports matches from the Cricket World Cup to the UEFA Champions league whilst sitting comfortably on a bean bag ( that’s right, bean bags ).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;recruitment&quot;&gt;Recruitment&lt;/h2&gt;

&lt;p&gt;Coming January, SDSLabs is recruiting. If you feel like you belong here, head over to &lt;a href=&quot;https://join.sdslabs.co/&quot;&gt;join.sdslabs.co&lt;/a&gt; to get started.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Workflow Automation with Grunt</title>
      <link>https://blog.sdslabs.co/2013/11/automating-with-grunt</link>
      <pubDate>Thu, 14 Nov 2013 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2013/11/automating-with-grunt</guid>
      <description>&lt;p&gt;&lt;img src=&quot;/images/posts/grunt/logo.png&quot; alt=&quot;Grunt&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I recently came across &lt;a href=&quot;https://gruntjs.com/&quot;&gt;Grunt.js&lt;/a&gt; while working on &lt;a href=&quot;https://blog.sdslabs.co/2013/10/erdos-codebot/&quot;&gt;Erdős&lt;/a&gt; at &lt;a href=&quot;//github.com/sdslabs&quot;&gt;SDSLabs&lt;/a&gt;. It is a task-based command line tool similar to Brunch, Maven, Gradle, and I love it! It’s primarily used to automate repetitive tasks in the development workflow and any (lazy) developer would fall in love with it. It takes care of tasks like compilation, minification, concatenation, versioning, cache-busting, linting, unit testing, etc. It isn’t limited to JS-specific tasks either, and it’s fairly easy to leverage the power of Node by using &lt;a href=&quot;https://gruntjs.com/api/grunt.util#grunt.util.spawn&quot;&gt;child processes&lt;/a&gt;. Also, it is well supported by an extremely active plugin development community. There may be other Javascript task runner solutions, but I don’t know of any at the moment that are worth taking a look at. In this post, I’ll go through the setup and a few Grunt tasks that I find really useful.&lt;/p&gt;

&lt;h2 id=&quot;the-basic-setup&quot;&gt;The basic setup&lt;/h2&gt;

&lt;p&gt;As I’ve mentioned earlier, Grunt uses Node.js and is installed via NPM (Node Package Manager). Once you’ve got those ready, install the Grunt CLI globally.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;npm &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-g&lt;/span&gt; grunt-cli
grunt &lt;span class=&quot;nt&quot;&gt;--version&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The second command should output your current command line module version. Next, create &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;package.json&lt;/code&gt;, which keeps track of the dependencies we’re using in our project so we don’t have to push the node modules when collaborating with other developers.&lt;/p&gt;

&lt;p&gt;This is what the project directory looks like which I’ll be referring to throughout this post.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;my-test-app/
|--assets/
|--|--dist/
|--|--style.css
|--|--main.js
|--|--jquery.js
|--index.tmpl
|--package.json
|--gruntfile.js
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;packagejson&quot;&gt;package.json&lt;/h3&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Erdos&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;version&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;0.1.0&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;author&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Abhishek Das&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;

  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;devDependencies&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;grunt&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;~0.4.0&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;grunt-contrib-cssmin&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;grunt-contrib-uglify&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;grunt-hashres&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;grunt-env&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;grunt-preprocess&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;matchdep&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm install&lt;/code&gt;, and NPM will go fetch these for us and place them in a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;node_modules&lt;/code&gt; folder (which should ideally be under gitignore).&lt;/p&gt;

&lt;h2 id=&quot;tasks&quot;&gt;Tasks&lt;/h2&gt;

&lt;p&gt;Create &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gruntfile.js&lt;/code&gt; which defines the workflow and tasks for Grunt to execute. Inside &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gruntfile.js&lt;/code&gt;, all configuration is done by passing an object literal to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grunt.initConfig()&lt;/code&gt;.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-js&quot; data-lang=&quot;js&quot;&gt;&lt;span class=&quot;nx&quot;&gt;module&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;exports&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;){&lt;/span&gt;

  &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;use strict&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;cm&quot;&gt;/* Load grunt modules */&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;matchdep&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;filterDev&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;grunt-*&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

  &lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;initConfig&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;

    &lt;span class=&quot;cm&quot;&gt;/* All grunt tasks go here */&lt;/span&gt;

  &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;

  &lt;span class=&quot;cm&quot;&gt;/* Public grunt tasks - to be called from command line */&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;registerTask&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;cssmin&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;uglify&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;env:production&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;preprocess&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;hashres&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]);&lt;/span&gt;

&lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h4 id=&quot;matchdep&quot;&gt;Matchdep&lt;/h4&gt;

&lt;p&gt;We are using matchdep to load all the grunt-modules in a single line instead of loading them sequentially. That is to say that instead of using:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-js&quot; data-lang=&quot;js&quot;&gt;&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;grunt-contrib-cssmin&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;grunt-contrib-uglify&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;grunt-contrib-env&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;grunt-contrib-preprocess&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;grunt-contrib-hashres&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;We are using the matchdep module to retrieve the dependency list from package.json, filter it for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grunt-*&lt;/code&gt;, and load all those modules in grunt using:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-js&quot; data-lang=&quot;js&quot;&gt;&lt;span class=&quot;nx&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;matchdep&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;filterDev&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;grunt-*&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;css-minification&quot;&gt;&lt;a href=&quot;https://github.com/gruntjs/grunt-contrib-cssmin&quot;&gt;CSS Minification&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;This is used to minify all the CSS files for use in the production environment.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-js&quot; data-lang=&quot;js&quot;&gt;&lt;span class=&quot;nx&quot;&gt;cssmin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nl&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;assets/*.css&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;dest&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;assets/dist/style.css&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This task can now be executed by calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grunt cssmin:production&lt;/code&gt; on the command line.&lt;/p&gt;

&lt;h3 id=&quot;uglify-js&quot;&gt;&lt;a href=&quot;https://github.com/gruntjs/grunt-contrib-uglify&quot;&gt;Uglify JS&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;This takes care of javascript compression and minification, thus reducing file size which is important for websites to load fast.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-js&quot; data-lang=&quot;js&quot;&gt;&lt;span class=&quot;nx&quot;&gt;uglify&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nl&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;assets/dist/main.js&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;assets/*.js&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This task can now be executed by running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grunt uglify:production&lt;/code&gt; from the command line. It will concatenate and uglify &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jquery.js&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;main.js&lt;/code&gt; in one file.&lt;/p&gt;

&lt;h3 id=&quot;environment-configuration&quot;&gt;&lt;a href=&quot;https://github.com/jsoverson/grunt-env/&quot;&gt;Environment Configuration&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;This is a grunt task to automate environment configuration for other tasks. It can be used with the grunt-preprocess plugin to build &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;index.html&lt;/code&gt; on-the-fly.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-js&quot; data-lang=&quot;js&quot;&gt;&lt;span class=&quot;nx&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nl&quot;&gt;development&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;NODE_ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;development&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;NODE_ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;preprocess&quot;&gt;&lt;a href=&quot;https://github.com/jsoverson/grunt-preprocess/&quot;&gt;Preprocess&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;As mentioned earlier, Grunt can preprocess files based off environment configuration.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-js&quot; data-lang=&quot;js&quot;&gt;&lt;span class=&quot;nx&quot;&gt;preprocess&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nl&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;index.tmpl&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;dest&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;index.html&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This task can now be executed by calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grunt preprocess&lt;/code&gt; on the command line. Our &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;layout.tmpl&lt;/code&gt; can have logical blocks. This is useful in including analytics only on the production build, throwing in some ascii art, changing static asset paths based on environment etc.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot; data-lang=&quot;html&quot;&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;!doctype html&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;c&quot;&gt;&amp;lt;!-- @if NODE_ENV = &apos;production&apos; --&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;c&quot;&gt;&amp;lt;!--
        ,---,.                                         
    ,&apos;  .&apos; |             ,---,                       
  ,---.&apos;   |  __  ,-.  ,---.&apos;|   ,---.               
  |   |   .&apos;,&apos; ,&apos;/ /|  |   | :  &apos;   ,&apos;\   .--.--.    
  :   :  |-,&apos;  | |&apos; |  |   | | /   /   | /  /    &apos;   
  :   |  ;/||  |   ,&apos;,--.__| |.   ; ,. :|  :  /`./   
  |   :   .&apos;&apos;  :  / /   ,&apos;   |&apos;   | |: :|  :  ;_     
  |   |  |-,|  | &apos; .   &apos;  /  |&apos;   | .; : \  \    `.  
  &apos;   :  ;/|;  : | &apos;   ; |:  ||   :    |  `----.   \ 
  |   |    \|  , ; |   | &apos;/  &apos; \   \  /  /  /`--&apos;  / 
  |   :   .&apos; ---&apos;  |   :    :|  `----&apos;  &apos;--&apos;.     /  
  |   | ,&apos;          \   \  /              `--&apos;---&apos;   
  `----&apos;             `----&apos;                          

  --&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;c&quot;&gt;&amp;lt;!-- @endif --&amp;gt;&lt;/span&gt;
  ...&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;cache-busting&quot;&gt;&lt;a href=&quot;https://github.com/Luismahou/grunt-hashres&quot;&gt;Cache-busting&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;grunt-hashres is an extremely useful plugin that hashes js and css files and renames the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;script&amp;gt;&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;link&amp;gt;&lt;/code&gt; declarations that refer to them in my html/php/etc files.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-js&quot; data-lang=&quot;js&quot;&gt;&lt;span class=&quot;nx&quot;&gt;hashres&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nl&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;encoding&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;utf8&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;fileNameFormat&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;${name}.${hash}.${ext}&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;renameFiles&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;assets/dist/style.css&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;assets/dist/main.js&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;dest&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;index.html&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This task can now be executed by running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grunt hashres:production&lt;/code&gt; from the command line. It would change &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;link rel=&quot;stylesheet&quot; href=&quot;assets/dist/style.css&quot;&amp;gt;&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;link rel=&quot;stylesheet&quot; href=&quot;assets/dist/style.130fdfaa.css&quot;&amp;gt;&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;script src=&quot;assets/dist/main.js&quot;&amp;gt;&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;script src=&quot;assets/dist/main.9c4cc83e.js&quot;&amp;gt;&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;index.html&lt;/code&gt;. It would also rename the corresponding CSS &amp;amp; JS files in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assets/dist&lt;/code&gt; directory. This is much better than using a timestamp because the hash only changes when a file has been updated.&lt;/p&gt;

&lt;h2 id=&quot;build&quot;&gt;Build&lt;/h2&gt;

&lt;p&gt;Public grunt tasks defined at the bottom of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gruntfile.js&lt;/code&gt; can be called directly from the command line. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;default&lt;/code&gt; task is executed by running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grunt&lt;/code&gt;. Environment variables should ideally be picked up from the project configuration file. &lt;a href=&quot;https://gist.github.com/abhshkdz/7460904&quot;&gt;Here&lt;/a&gt; is the complete gruntfile for convenience. If everything went right, you should see the following output when you run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grunt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/grunt/output.png&quot; alt=&quot;Output&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This was just a basic introduction and walkthrough to using Grunt. Actual usage would definitely be more robust and complex. Grunt comes with pretty much everything you’ll need to use it on a large project and can be extended as much as you want.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Launching Study Portal and Echo v2</title>
      <link>https://blog.sdslabs.co/2013/10/studyportal-echo-2013</link>
      <pubDate>Thu, 24 Oct 2013 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2013/10/studyportal-echo-2013</guid>
      <description>&lt;p&gt;Following on the heels of &lt;a href=&quot;https://blog.sdslabs.co.in/2013/10/erdos-codebot/&quot;&gt;Erdős and CodeBot&lt;/a&gt;, SDSLabs is proud to announce &lt;a href=&quot;https://study.sdslabs.co.in&quot;&gt;Study Portal&lt;/a&gt;, and a revamped version of &lt;a href=&quot;https://echo.sdslabs.co.in&quot;&gt;Echo&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;study-portal&quot;&gt;Study Portal&lt;/h2&gt;

&lt;p&gt;For a long time education in IITR has been a uni-directional flow: Professors upload files to LecTut and students download them. But the handouts provided by the professors are not the only reference material needed for a course. A lot of students come across OCW/NPTEL courses which have more informative slides. Students also use files that have been handed down by their senior batch who were given those files by their senior batch and so on. Normally, such sharing involves Dropbox/Google Drive for sharing files and FB/Google groups for posting links etc. This process takes place every single year.&lt;/p&gt;

&lt;p&gt;IITs are supposed to be hubs of excellence and not boring repitition. So we decided to fix the situation.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/sp-echo/sp1.png&quot; alt=&quot;Study Portal Home Page&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://study.sdslabs.co.in&quot;&gt;Study Portal&lt;/a&gt; allows anyone to &lt;a href=&quot;https://study.sdslabs.co.in/upload&quot;&gt;upload&lt;/a&gt; files to courses that are taught in IITR. These files can be professor’s handouts, practical manuals, tutorial solutions, class notes etc. And these files are going to outlast your tenure in the lands of IITR.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/sp-echo/sp2.png&quot; alt=&quot;Study Portal Department Page&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If a course is not listed in the uploads page, you can &lt;a href=&quot;https://study.sdslabs.co.in/request&quot;&gt;request&lt;/a&gt; its addition. You can upload files to a course that you have requested as well as share the permalink to the course even before it is approved. Once it is approved by Team SDSLabs, it will be listed in the left bar.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/sp-echo/sp3.png&quot; alt=&quot;Study Portal Course Page&quot; /&gt;&lt;/p&gt;

&lt;p&gt;While we have uploaded over 600 files to a multitude of courses for launch, the sole purpose of this app is to enable sharing. We hope that with user contribution, the app will soon be the knowledge base of IIT Roorkee.&lt;/p&gt;

&lt;p&gt;Check out the application at &lt;a href=&quot;https://study.sdslabs.co.in&quot;&gt;Study Portal&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;echo&quot;&gt;Echo&lt;/h2&gt;

&lt;p&gt;There are very few amongst us who do not enjoy the pleasure of sinking into the depths of a book. Searching for books, however, has always been a real pain. We seek to fix this problem, therefore we are launching Echo, a fast and powerful ebook search engine which is designed to help you find the books you want instantaneously.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://echo.sdslabs.co.in&quot;&gt;Echo&lt;/a&gt; has been completely revamped, with an all-new look, and significant improvements in search relevance and user experience. New features, like the option to read books in the browser itself without the need for downloading them, have been added too. You can also search for books by any &lt;a href=&quot;https://echo.sdslabs.co.in/author/George-R.-R.-Martin&quot;&gt;favourite author&lt;/a&gt; of yours.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/sp-echo/echo1.png&quot; alt=&quot;Echo Home Page&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Echo boasts of a collection of over 35,000 novels, academic journals and other books. A whole myriad of options exists for you, with wide-ranging categories like &lt;a href=&quot;https://echo.sdslabs.co.in/search/economics/1&quot;&gt;economics&lt;/a&gt;, &lt;a href=&quot;https://echo.sdslabs.co.in/search/algorithms/1&quot;&gt;algorithms&lt;/a&gt; and &lt;a href=&quot;https://echo.sdslabs.co.in/category/Fantasy/1&quot;&gt;fantasy&lt;/a&gt;. Spend a weekend reading classics like &lt;a href=&quot;https://echo.sdslabs.co.in/book/41995/the-great-gatsby&quot;&gt;The Great Gatsby&lt;/a&gt;, and another &lt;a href=&quot;https://echo.sdslabs.co.in/book/14939/introduction-to-algorithms&quot;&gt;brushing up your programming skills&lt;/a&gt; for an upcoming interview.&lt;/p&gt;

&lt;p&gt;The collection of books is being updated regularly.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/sp-echo/echo2.png&quot; alt=&quot;Echo Author Page&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We’d also appreciate &lt;a href=&quot;https://echo.sdslabs.co.in/contribute&quot;&gt;contributions&lt;/a&gt; from the community. If you’d like to upload your own collection of books, or if you have suggestions for books you think should be available on Echo, please &lt;a href=&quot;mailto:contact@sdslabs.co.in&quot;&gt;contact us&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We hope you have a great reading experience with Echo!&lt;/p&gt;

&lt;p&gt;Check out the application at &lt;a href=&quot;https://echo.sdslabs.co.in&quot;&gt;Echo&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;technical-details&quot;&gt;Technical details&lt;/h2&gt;

&lt;h3 id=&quot;echo-1&quot;&gt;Echo&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://lucene.apache.org/solr/&quot;&gt;Apache Solr&lt;/a&gt; is used to maintain our index of books, and perform search queries.&lt;/li&gt;
  &lt;li&gt;This app uses &lt;a href=&quot;https://limonade-php.github.io/&quot;&gt;Limonade&lt;/a&gt; PHP framework&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;study-portal-1&quot;&gt;Study Portal&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;This app uses &lt;a href=&quot;https://toroweb.org/&quot;&gt;Toro&lt;/a&gt; PHP microframework.&lt;/li&gt;
  &lt;li&gt;The ajax layouts are generated using &lt;a href=&quot;https://handlebarsjs.com&quot;&gt;Handlebars.js&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Syntax Error '13</title>
      <link>https://blog.sdslabs.co/2013/10/syntax-error-2013</link>
      <pubDate>Tue, 22 Oct 2013 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2013/10/syntax-error-2013</guid>
      <description>&lt;p&gt;SDSLabs organized IIT Roorkee’s 1st hackathon, Syntax Error, on 19-20 October, 2013. It was a &lt;a href=&quot;https://www.google.com/events/gcdc2013/&quot;&gt;Google Cloud Developer Challenge&lt;/a&gt; promotional event and saw great response from the geeks of IITR. Here are a few numbers: 150+ registrations, 101 participants, &amp;lt; 24 hours, 36 hacks, 491 commits, 1029325 lines of code. Participants were spread across all years (Yes, we had teams from 1st year as well) and branches. This was also the 1st time GitHub supported an Indian university in organizing a hackathon.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntax-error/gcdc.jpg&quot; alt=&quot;GCDC&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The event was kicked off with a talk on Google App Engine by Rohit Gupta &amp;amp; &lt;a href=&quot;https://plus.google.com/u/0/117456238851648091666&quot;&gt;Anudeep Sai&lt;/a&gt;, Google. The session lasted almost an hour and the Googlers covered various verticals of the &lt;a href=&quot;https://cloud.google.com/&quot;&gt;Google Cloud Platform&lt;/a&gt; and went on to talk about the Google Cloud Developer Challenge. This was followed by a Git classroom hangout by &lt;a href=&quot;https://github.com/blog/1456-jordan-mccullough-is-a-githubber&quot;&gt;Jordan McCullough&lt;/a&gt;, &lt;a href=&quot;https://github.com/jordanmccullough&quot;&gt;GitHub&lt;/a&gt;. It was an extremely thorough session. Jordan started right from the basics and went on to advanced topics. Soon after, Abhishek Das, Google Student Ambassador IITR, introduced the participants to the format of the event and explained the &lt;a href=&quot;https://docs.google.com/presentation/d/1yXJ6h4QqfKYbEE1yIweVjEV0ZmGcknrnLarOocOaB64/edit?usp=sharing&quot;&gt;rules and judging criteria&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntax-error/gae-talk.jpg&quot; alt=&quot;GAE Talk&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The hackathon clock started at 9PM on Saturday. Developers were free to code from anywhere they wished and had time till 4PM Sunday to complete their hacks. Once the hackers were done with their code, judging them was no simple task. The esteemed panel consisted of Prof. Balasubramanian Raman, Prof. Durga Toshniwal, Prof. P. Sateesh Kumar from IITR and Pranav Gupta from Tavant Technologies, who were aided with the feedback from techcrew. In the end, out of the 21 hacks demoed, winners of Syntax Error ‘13 were:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;1st position - &lt;a href=&quot;https://github.com/SyntaxError2013/Ed-Edd-Eddy&quot;&gt;Trip Note by Ed-Edd-Eddy&lt;/a&gt; (Pawan Kumar D, Lalit Khattar, Nitesh Kumar)&lt;/li&gt;
  &lt;li&gt;2nd position - &lt;a href=&quot;https://github.com/SyntaxError2013/Super-robot-monkey-team-hyperforce-go&quot;&gt;Super-robot-monkey-team-hyperforce-go&lt;/a&gt; (Jayant Jain, Rushil Nagda, Nisha Chandramoorthy)&lt;/li&gt;
  &lt;li&gt;3rd position - &lt;a href=&quot;https://github.com/SyntaxError2013/Nautilus&quot;&gt;Rekishi by Nautilus&lt;/a&gt; (Abhay Rana, Shashank Mehta, Ravi Kishore)&lt;/li&gt;
  &lt;li&gt;Most Innovative Hack - &lt;a href=&quot;https://github.com/SyntaxError2013/Unbreakables&quot;&gt;Mad Frets by Unbreakables&lt;/a&gt; (Prakhar Singh, Abhinav Tushar, Kushal Saharan)&lt;/li&gt;
  &lt;li&gt;Best Designed Hack - Crash (Ishaan Bhola, Sonesh Jain)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/syntax-error/coding.jpg&quot; alt=&quot;Coding&quot; /&gt;
&lt;img src=&quot;/images/posts/syntax-error/demo.jpg&quot; alt=&quot;Demo&quot; /&gt;
&lt;img src=&quot;/images/posts/syntax-error/audience.jpg&quot; alt=&quot;Audience&quot; /&gt;
&lt;img src=&quot;/images/posts/syntax-error/winners.jpg&quot; alt=&quot;Winners&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Congratulations to all the winners and kudos to all hackers for coming up with your brilliant hacks! You can &lt;a href=&quot;https://github.com/SyntaxError2013&quot;&gt;check out all the hacks on GitHub&lt;/a&gt;. A big shout out for the organizing team comprising of Ashwini Khare (Google Student Ambassador IITR), Abhishek Das, Durgesh Suthar, Abhishek Kandoi, Ankita Shukla, Shagun Sodhani and all other folks who made this event a feather in the hat for SDSLabs!&lt;/p&gt;

&lt;p&gt;We would appreciate it if you take 10 minutes to fill the &lt;a href=&quot;https://bit.ly/se13feedback&quot;&gt;feedback form&lt;/a&gt;. Be brutally honest, it would help us improve in coming years.&lt;/p&gt;

&lt;p&gt;See all the photos that we took at our &lt;a href=&quot;https://plus.google.com/u/0/events/gallery/cvm3l40cjuo84du2bnke0fvvp54&quot;&gt;G+ event&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Launching Erdos and CodeBot</title>
      <link>https://blog.sdslabs.co/2013/10/erdos-codebot</link>
      <pubDate>Thu, 17 Oct 2013 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2013/10/erdos-codebot</guid>
      <description>&lt;p&gt;We are proud to announce two new applications from SDSLabs: Erdős and CodeBot.
Both are immediately available to all users. While Erdős is currently an internal application,
CodeBot can be used by anyone across the world.&lt;/p&gt;

&lt;h2 id=&quot;erdős&quot;&gt;&lt;a href=&quot;https://erdos.sdslabs.co.in/&quot;&gt;Erdős&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Erdős is an application for Math Geeks to try out new mathematical problems
and keep track of who solves what. Named after one of the most prolific 
mathematician of all times, &lt;a href=&quot;https://en.wikipedia.org/wiki/Paul_Erd%C5%91s&quot;&gt;Paul Erdős&lt;/a&gt;,
it is a portal for users to test their mettle on various mathematical problems,
some of which may require users to write code.&lt;/p&gt;

&lt;p&gt;The design of Erdős is clean and card-based, with a focus on user-interaction
above everything else. Go give it a try at &lt;a href=&quot;https://erdos.sdslabs.co.in&quot;&gt;https://erdos.sdslabs.co.in&lt;/a&gt; and
&lt;a href=&quot;https://sdslabs.co.in/feedback/?from=erdos&quot;&gt;let us know&lt;/a&gt; what you think.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/erdos-codebot/erdos-progress.png&quot; alt=&quot;Erdős - Progress&quot; /&gt;
&lt;img src=&quot;/images/posts/erdos-codebot/erdos-top.png&quot; alt=&quot;Erdős - Top&quot; /&gt;
&lt;img src=&quot;/images/posts/erdos-codebot/erdos-problem.png&quot; alt=&quot;Erdős - Problem&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Lots of exciting features such as gamification (badges), more analytics &amp;amp; visualizations, contests are in the pipeline and will be public soon!&lt;/p&gt;

&lt;h2 id=&quot;codebot&quot;&gt;&lt;a href=&quot;https://codebot.sdslabs.co.in/&quot;&gt;CodeBot&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Many of you may have heard of &lt;a href=&quot;https://projecteuler.net&quot;&gt;Project Euler&lt;/a&gt;, a 
collection of various mathematical problems ranging in difficulty from easy
to extremely hard. CodeBot is a stylized, terminal-style alternative interface
to Project Euler. It is an online application, available for everyone at
&lt;a href=&quot;https://codebot.sdslabs.co.in/&quot;&gt;https://codebot.sdslabs.co.in/&lt;/a&gt;. You can create a new account and submit
solutions to the Project Euler problems. The problems are re-used from Project
Euler under a Creative Commons licence.&lt;/p&gt;

&lt;p&gt;With the introduction of CodeBot and Erdős, we are now discontinuing CodeMatics,
some parts of which were re-used for CodeBot. We also plan to hold regular 
contests on Erdős, similar to the CodeBlitz contests we have on CodeVillage.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/erdos-codebot/codebot-help.png&quot; alt=&quot;CodeBot - Help&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;technical-details&quot;&gt;Technical Details&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Both Erdős and CodeBot emerged as weekend hacks, which were then polished
over to iron the kinks before their public launch.&lt;/li&gt;
  &lt;li&gt;CodeBot uses node.js for the backend, and redis as the storage mechanism,
while being hosted on Heroku.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://pag.sdslabs.co/&quot;&gt;Programming and Algorithms Group&lt;/a&gt; (PAG), IITR has
agreed to help us out in keeping Erdős updated with new problems.&lt;/li&gt;
  &lt;li&gt;Erdős uses Chart.js to generate all the awesome visualizations.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>GNU Conference</title>
      <link>https://blog.sdslabs.co/2013/10/gnu-conference</link>
      <pubDate>Mon, 07 Oct 2013 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2013/10/gnu-conference</guid>
      <description>&lt;p&gt;The best way to spend time is to do the things that you love. And last weekend of September
was spent doing exactly that. I had the opportunity to attend the GNU 30th anniversary conference
which was being organised at Massachusetts Institute of Technology. Well, when you know that
Richard Stallman would be giving a talk at the conference, can you control your excitement?
It was a pleasure to meet all the people about whom you had just read in news articles. It
is overwhelming to meet the people you had been admiring ever since you had stepped into
FOSS.&lt;/p&gt;

&lt;h2 id=&quot;the-conference&quot;&gt;The Conference&lt;/h2&gt;

&lt;p&gt;The conference was nothing less than amazing.&lt;/p&gt;

&lt;p&gt;It started with the welcome address from John Sullivan who explained why Free and Open Source
Software is of ever increased importance. Most people have very little idea of how much personal
data they have put up online and how many of the places which they have trusted with their data
are actually providing backdoor to the government or other agencies. A lot of action with our data
is taken without our consent. We are constantly being forced to use some particular software
and are being denied the freedom to install other software on our own machines (you know what I
am talking about). The various projects of GNU and other organisations were introduced.&lt;/p&gt;

&lt;p&gt;Well, no open source conference is complete without a hackathon. The aim of the hackathon was
to introduce their projects to each other and the new-comers. I must admit that I was one of the
few new-comers. The hackathon had the following projects:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;coreboot&lt;/li&gt;
  &lt;li&gt;GNU Octave&lt;/li&gt;
  &lt;li&gt;GNU FM&lt;/li&gt;
  &lt;li&gt;GNU social&lt;/li&gt;
  &lt;li&gt;GNOME&lt;/li&gt;
  &lt;li&gt;Gnash&lt;/li&gt;
  &lt;li&gt;GNU mediagoblin&lt;/li&gt;
  &lt;li&gt;Tor&lt;/li&gt;
  &lt;li&gt;Tahoe-LAFS&lt;/li&gt;
  &lt;li&gt;Commotion&lt;/li&gt;
  &lt;li&gt;Guix&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The hackathon started off quite good with a few hours being spent at helping people setup the project
on their laptops. The conference also had a cryptoparty where they were helping people get started with
GnuPG, an open and complete implementation of OpenPGP standard as defined by RFC4880. It was fun
to get to know more about cryptography and why people are actually using it. The Tor people were going
around the various projects trying to figure out any security vulnerabilities these projects may have.
It turned out that almost all the projects had some issues which wouldn’t be visible until someone
devoted a lot of time figuring it out. Well, that is what crackers would do. So, the conference just made
FOSS much more safe.&lt;/p&gt;

&lt;p&gt;I got started with GNU FM development during the hackathon. Turns out that it would be a nice alternative
to last.fm in some time.&lt;/p&gt;

&lt;p&gt;Let us come to what Richard Stallman talked about during his address at GNU 30. It was a pleasure to listen
to his experience about bringing up GNU which revolutionised the way FOSS was perceived. Richard was quite
instrumental in demonstrating to the big companies that most open source software are much more economical
for them instead of what we all prefer to call, bloated proprietary software difficult to customise according
to our own needs. We owe a lot of our progress in science and technology to FOSS. It is very important for
us to realise why software which restricts our freedom is detrimental to our progress, because progress and
freedom are very closely related to each other. Every single thing that is taken without our content can be
used against us. We should not be tracked without our consent. But this is happening every single moment.
Richard emphasized on the need to raise more money for FOSS because like everyone in the world people working
in FOSS also need money to improve their products. Unfortunately, not many people are willing to donate to
FOSS which is hampering the development. When you have people with a lot of money competing with you, you
also need a bit of money apart from your good work.
&lt;img src=&quot;/images/posts/RichardStallman.jpg&quot; alt=&quot;Richard Stallman at GNU30&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It is difficult to say which part of the conference was the best. I had a chat with several core developers
of the various projects participating in the conference. Their approachability is absolutely brilliant.
Several of them expressed interest in helping the Linux User Group in fulfilling its aim - promotion of
FOSS on campus. The most overwhelming of all chats was the one with Nick Mathewson, one of the three
original developers of Tor. It was extremely humbling to meet someone who knows so much about the web,
its shortcomings, advantages, vulnerabilty. These people could have used their knowledge to exploit the
common users without our knowledge and could have earned huge sums of money from the exploitation but well,
they are acting as our protectors.&lt;/p&gt;

&lt;h2 id=&quot;how-i-got-there&quot;&gt;How I got there?&lt;/h2&gt;

&lt;p&gt;Well, travel to a foreign soil is usually expensive business. Free Software Foundation had awarded me a
travel scholarship, taking care of most of my travel cost. And the credit for this goes to Marina,
the coordinator of GNOME’s Outreach Program for Women. She had invited the women participants of GSoC
interns in the organizations that were also running Outreach Program for Women in parallel with GSoC.
&lt;img src=&quot;/images/posts/MarinaRedhat.jpg&quot; alt=&quot;Marina, OPW Coordinator, Software Engineer at Redhat&quot; /&gt;&lt;/p&gt;

&lt;p&gt;To be honest, there is no greater joy than being invited to such a great conference, being awarded a
travel scholarship for the same and then meeting exceptional people. I would like to thank SDSLabs for
leading me to this point.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>LUG Meet 16th August 2013</title>
      <link>https://blog.sdslabs.co/2013/09/lug-meet</link>
      <pubDate>Tue, 03 Sep 2013 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2013/09/lug-meet</guid>
      <description>&lt;p&gt;When we started IITR Linux Group a few years back there were about 5 people in 
it. Yes you read that right. The situation was pretty sad. All systems in 
Institute Computer Center run Windows, even most of the iMac’s in IITR’s library 
run Windows.&lt;/p&gt;

&lt;p&gt;The numbers didn’t really faze us though. We kept at it and now we are very 
happy to report a turnout of over 100 people for the first LUG meetup of this
 semester, conducted on 16th August. While the iMacs and other systems are still
 running Windows, we are sure we’ll get there eventually and make our campus 
Linux friendly soon.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/lug/crowd.jpg&quot; alt=&quot;The Crowd &quot; /&gt;&lt;/p&gt;

&lt;p&gt;While we have pretty grand plans for LUG and the whole developer environment in
 IITR in general, we are aware that we’ll have to take things slowly. Hence, the
 first meetup, which was targeted towards freshers, was mostly an introduction 
to the world of Linux. Abhay Rana of SDSLabs, popularly known as Capt. Nemo, 
gave a talk on who uses linux and why ‘You’ should use linux. The talk was well
 received, or so we hope!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/lug/AartiLUG.jpg&quot; alt=&quot;Aarti Speaking &quot; /&gt;&lt;/p&gt;

&lt;p&gt;The idea for a Linux User Group was given by Shobhit Singh, founder of SDSLabs.
 The idea was to promote the use of open source softwares and open source
development in the campus. The meeting was about  introducing IITR developers
 to the Linux universe. Much of the technological progress in the last decade
 has been brought about by Linux in various sectors; despite its small market
 share in the desktop market. (It rules in other markets, including Super
 Computers, Servers, and Mobile Devices)&lt;/p&gt;

&lt;p&gt;Since the agenda was introduction to Linux, the meet wouldn’t really have lived
 up to that if we had not introduced the saintly, the almighty, the great, 
TERMINAL! A team from IMG (Pramod &amp;amp; Pawan) went through the basic commands 
and tried to give an idea of what all can be done via the terminal &lt;em&gt;(basically 
everything)&lt;/em&gt;. Then Abhishek Das of SDSLabs showed off his command line-fu. 
He ‘cut’ and ‘grep’ped through a huge file containing all JEE ranks 
demonstrating the speed and ease of command line.&lt;/p&gt;

&lt;p&gt;The talk and demonstration were followed by a small question answer session. 
SDSLabs members fielded a variety of “I can do this on windows too” questions.
 We are sure we managed to convince most of the people to atleast give Linux 
try.&lt;/p&gt;

&lt;p&gt;If you have any doubts about using Linux, please join us on our 
&lt;a href=&quot;https://groups.google.com/forum/# !forum/lugiitr&quot;&gt;Google Group&lt;/a&gt;, where we will&lt;/p&gt;

&lt;p&gt;be more than happy to help you out with your issues. Also, feedback is always 
welcome. Drop us a mail on &lt;a href=&quot;mailto:contact@sdslabs.co.in&quot;&gt;contact@sdslabs.co.in&lt;/a&gt; or just post it in the 
LUG google group.&lt;/p&gt;

&lt;p&gt;What’s next? Linux Installation Party! Join us on 4th September at Hobbies club, 
between 5 PM to 7 PM.&lt;/p&gt;

&lt;p&gt;–&lt;br /&gt;
Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Muzi updates</title>
      <link>https://blog.sdslabs.co/2013/08/muzi-updates</link>
      <pubDate>Sat, 31 Aug 2013 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2013/08/muzi-updates</guid>
      <description>&lt;p&gt;Back when we launched Muzi on 11/11/11, we had no idea that it would get &lt;em&gt;this&lt;/em&gt; popular. Ok, we did have some idea! Since then, we have been working on it continuously and have even rewritten it a few times to give you a better experience. We have added several new features to Muzi that have just been deployed to the live version:&lt;/p&gt;

&lt;h2 id=&quot;downloads&quot;&gt;Downloads&lt;/h2&gt;

&lt;p&gt;We are pretty sure you like listening to your favorite tracks on the go. Muzi now allows you to download the current playing track via the newly-minted Download button.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi/download.jpg&quot; alt=&quot;The new Download &amp;amp; Share buttons &quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;sharing&quot;&gt;Sharing&lt;/h2&gt;

&lt;p&gt;Music is social, or say the plethora of startups in the music business. Sharing was a highly requested feature and many people wanted to share the current track they are listening to. Now it’s possible. Click on the “share” button while playing any track and it will take you to the share-box where you can copy the Share links from. The “track” link in particular will start playing that track automatically. Genius, right? So make sure to share those links high and wide via whatever medium you want.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi/share.jpg&quot; alt=&quot;The new share box&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;new-artist-look-top-tracks&quot;&gt;New artist look (Top Tracks)&lt;/h2&gt;

&lt;p&gt;With daily listens averaging around &lt;a href=&quot;https://qr.ae/IEj4U&quot;&gt;2,000 per day&lt;/a&gt;, we have a &lt;em&gt;lot&lt;/em&gt; of data for every artist. Being data nerds ourselves, we think it is so much better if you get to see the top tracks by an artist rather that their entire discography. Now, browsing to an artist via the left pane takes you to a brand new list of “Top Tracks” by that artist, showing the Play Count and Album to which those tracks belong. Now stop wasting your time and listen to good music!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi/toptracks.jpg&quot; alt=&quot;The new Top Tracks Look&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;auto-saving-playlists&quot;&gt;Auto-saving Playlists&lt;/h2&gt;

&lt;p&gt;The save-playlist flow has not been that good, but now we’ve gone ahead and completely re-done it to bring you auto-saving playlists. Each time you add or remove a track from a playlist, we’ll make sure to save it to the backend so all your precious songs can sleep safe and sound when you are not around.&lt;/p&gt;

&lt;h2 id=&quot;router&quot;&gt;Router&lt;/h2&gt;

&lt;p&gt;The Sherlock wannabes might have noticed that Muzi now changes the URL in the address bar based on its interaction with you. We’ve shifted the JS observer pattern from event-triggers to URL routing. So now, most browsing events in Muzi take place using the onhashchange event. How does this help you? Well, you can now share link to ticker directly or maybe bookmark a link like &lt;a href=&quot;https://sdslabs.co.in/muzi/#/band/7111/30-seconds-to-mars&quot;&gt;https://sdslabs.co.in/muzi/#/band/7111/30-seconds-to-mars&lt;/a&gt; to quickly return to a particular band.&lt;/p&gt;

&lt;h2 id=&quot;technical-details&quot;&gt;Technical Details&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;The downloads button is powered using the &lt;a href=&quot;https://davidwalsh.name/download-attribute&quot;&gt;HTML5 Download Attribute&lt;/a&gt; which allows us to rename the file being downloaded.&lt;/li&gt;
  &lt;li&gt;We are using JavaScript side routing for creating the shareable links and giving you a better browsing experience. The routing library we are using is called &lt;a href=&quot;https://github.com/flatiron/director&quot;&gt;Director&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;We run a Beta Version of muzi up at &lt;a href=&quot;https://beta.sdslabs.co.in/muzi/&quot;&gt;https://beta.sdslabs.co.in/muzi/&lt;/a&gt; where you can checkout the latest (possibly buggy) version with cool new features. Features appear on the beta version 1-2 weeks before we launch it on the production version.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;–&lt;br /&gt;
Team SDSLabs&lt;/p&gt;

&lt;p&gt;PS: Carefully curated an amazing playlist? We may have something for you soon. ;)&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>GSoC 2012 Experience</title>
      <link>https://blog.sdslabs.co/2013/04/gsoc-experience</link>
      <pubDate>Fri, 12 Apr 2013 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2013/04/gsoc-experience</guid>
      <description>&lt;p&gt;Roughly the same time last year I was caught in a dilemma of what to make of my summer. Given my low interest in departmental courses, I was not so convinced about going for an industrial internship with just one year knowledge of relevant courses. Research domain was beyond me to say the very least and whole idea of mailing exhaustively professors with little or no idea of research topics, just for the sake of a free holiday did not amuse me much.&lt;/p&gt;

&lt;p&gt;In short, I was looking for something more substantial and widely recognized. I ended up being a part of Google Summer of Code 2012 program, this post is a brief introduction about the program for the uninitiated who take programming as a passion and are willing to step it up for real world applications&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/gsoc.png&quot; alt=&quot;GSoC 2012&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Google Summer of Code Introduction as on their official page :&lt;/p&gt;

&lt;p&gt;Google Summer of Code(often abbreviated as GSoC) is a global program that offers post-secondary student developers ages 18 and older stipends to write code for various open source software projects.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Anyone who is above eighteen and enrolled in an university (as of May, 27th for this year) whatever his/her major may be, is eligible for applying&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Google only sponsors the open source development done during the three months. Which means you would not be working for Google but you would be working for an Open source organization where your contribution being funded by Google&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Open Source development is what one does if accepted in this program. Many of your favorite softwares you might be using are open sourced ,ie, majority of their code base is public and community driven. Anyone who wishes to contribute can request a feature or fix a bug. It’s quite amazing to know how these organizations work given they hardly interact physically, credit must be given to how well they plan their roadmap, maintain their code repositories, and have a dedicated group of programmers who keep their projects running&lt;/p&gt;

&lt;p&gt;All open source projects have well structured documentation, sophisticated bug-tracker and a majority of them use Internet relay chat(irc). A quick word about irc : IRC is an instant chat service for groups, full of people who would be more than happy to help you out. As IRC ports are blocked on the IITR network, you may use a web client as an alternative.Here’s a nice overview  of IRC by Mozilla - &lt;a href=&quot;https://quality.mozilla.org/docs/misc/getting-started-with-irc/&quot;&gt;https://quality.mozilla.org/docs/misc/getting-started-with-irc/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While Google Open Source Office has broken down the evaluation in two stages, being accepted as a student developer is the tough part. Formally, acceptance requires interested students to write a proposal on one of various ideas which the participating organization floats for the year, although one is not restricted and can suggest an idea of their own as long as it is relevant.&lt;/p&gt;

&lt;p&gt;This proposal is a brief overview of what you intend to do to achieve your targets, your strategy for solving the issue, and a brief background about you your skill-set and past contributions in relevant projects. Although a good proposal might appear to be the obvious judging ground, most organizations count on student’s past participation which may be in form of bug fixes or general participation in public discussions, hence it’s always advised to start early as to blend in a big organization takes time. Some organizations also prefer to have an interview, although the major weight-age is always given to the former factors.&lt;/p&gt;

&lt;p&gt;Coming back, what makes SoC different from what you may think of an internship is the fact the entire thing is done online. It doesn’t matter from where you work on as long as you can contribute on a regular basis. People from different parts of the globe with diverse backgrounds come together the fact that the chances are you will never physically meet your fellow developers or your mentor are quite high.&lt;/p&gt;

&lt;p&gt;This year 177 mentoring organizations have been accepted into the program, of which 40 organizations have been accepted for the first time. My mentor organization for last year was Statistics Online Computational Resource(SOCR) at UCLA. My project was to create a portable application that demonstrates the concepts of statistical resampling, randomization and probabilistic simulation. More details about my project can be found at &lt;a href=&quot;https://wiki.stat.ucla.edu/socr/index.php/SOCR_Resampling_HTML5_Project&quot;&gt;https://wiki.stat.ucla.edu/socr/index.php/SOCR_Resampling_HTML5_Project&lt;/a&gt; . My project was more about application of fundamental statistical concepts. This is another speciality about this program that one gets an opportunity to work on wide range of topics from genetic engineering to kernel design.&lt;/p&gt;

&lt;p&gt;Owing to the popularity of the Summer of Code program several other programs on similar lines have been initiated. &lt;a href=&quot;https://live.gnome.org/OutreachProgramForWomen&quot;&gt;Outreach Program for Women in FOSS&lt;/a&gt; is the most recent and intended to promote girl participation in Open Source Porgrams.&lt;/p&gt;

&lt;p&gt;Some resources have been mentioned in the end which I believe will be useful if you are interested to apply this year.  If accepted, you are in for summer full of learning, collaborating with the best, a starry bullet in your resume and a fat paycheck. Are you game?&lt;/p&gt;

&lt;p&gt;Resources:&lt;br /&gt;
&lt;a href=&quot;https://www.google-melange.com/gsoc/homepage/google/gsoc2013&quot;&gt;https://www.google-melange.com/gsoc/homepage/google/gsoc2013&lt;/a&gt;
&lt;a href=&quot;https://groups.google.com/group/google-summer-of-code-discuss&quot;&gt;https://groups.google.com/group/google-summer-of-code-discuss&lt;/a&gt;
&lt;a href=&quot;https://flossmanuals.net/GSoCStudentGuide/&quot;&gt;https://flossmanuals.net/GSoCStudentGuide/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://blog.vmsplice.net/2011/03/advice-for-students-applying-to-google.html&quot;&gt;https://blog.vmsplice.net/2011/03/advice-for-students-applying-to-google.html&lt;/a&gt;
&lt;a href=&quot;https://developers.google.com/open-source/soc/&quot;&gt;https://developers.google.com/open-source/soc/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Competitions Galore</title>
      <link>https://blog.sdslabs.co/2013/04/competitions-galore</link>
      <pubDate>Thu, 04 Apr 2013 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2013/04/competitions-galore</guid>
      <description>&lt;p&gt;We were involved in organizing quite a few online competitions in March during Srishti and Cognizance. All of them occurred in the same week. This resulted in a very hectic, but fun experience. Here’s a brief overview of the contests.&lt;/p&gt;

&lt;h2 id=&quot;backdoorctf---a-jeopardy-style-ctf-event&quot;&gt;backdoorCTF - A Jeopardy Style CTF Event&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/competitions/backdoor.png&quot; alt=&quot;Backdoor&quot; /&gt;&lt;/p&gt;

&lt;p&gt;SDSLabs organised the first ever Capture the Flag (CTF) event by IIT Roorkee from March 9th to 11th as an event in Cognizance, the technical festival of IIT Roorkee. The idea was proposed by Vaibhav Gautam from the Saharanpur Campus. CTF are cyber security events which focus on a plethora of problems found in the real world. The event saw participation from contestants all over the world, with some really experienced hackers participating in the contest.&lt;/p&gt;

&lt;p&gt;On our side, we had a lot of fun putting the event together. It was great to host and we learnt as much as the teams that participated. With mid terms ending on 4th, we had only 4 days to put the whole event together. We divided ourselves into groups based on categories of questions and got hacking. Three sleepless nights later, we had ourselves something to speak of.&lt;/p&gt;

&lt;p&gt;Not knowing what kind of participation to expect, the questions that we set varied across difficulty levels.The challenges for this CTF spanned from simple trivia questions to questions that required detailed knowledge of modern computer security techniques. We also held interactive discussion with the participants on the irc channel # backdoorctf.&lt;/p&gt;

&lt;p&gt;There were some really nerve-wracking moments in the final 6 hours of the contest. The competition saw multiple leadeboard changes, with it ending in a nail biting finale where Team dcua (World Rank 15 on &lt;a href=&quot;//ctftime.org&quot;&gt;CTFTime&lt;/a&gt;) snatched the lead from team v3l0cityz3r0 in the final moments. Team h34dump (World Rank 46) brought up the rear, taking the third place. We are proud to add that Team v3l0cityz3r0 included a student of IIT Roorkee among others.&lt;/p&gt;

&lt;p&gt;In conclusion, we would like to congratulate all winners and those who participated, helping us make this event a grand success! We will be back with a bigger and better backdoorCTF next year, we promise.&lt;/p&gt;

&lt;h2 id=&quot;codematics&quot;&gt;Codematics&lt;/h2&gt;

&lt;p&gt;Codematics is a Project Euler-style mathematical puzzle solving competition, held annually as an event in Srishti, the Hobbies Club exhibition. It was organized by the Programming and Algorithm group, under SDSLabs.&lt;/p&gt;

&lt;p&gt;The competition consisted of multiple levels of difficulty, with the challenges of a certain level only being accessible after the preceding levels had been completed. There were a wide variety of problems, and solving them required high mathematical and computational skills. Incidentally, the final problem did full justice to its name (beta, tumse na ho payega), and remained unsolved till the end of the competition.&lt;/p&gt;

&lt;p&gt;The competition attracted widespread participation, with students from both outside and within the campus participating. Archit Sachdeva (MCA 2nd year,IIT Delhi) was the winner, whereas Saurabh Paliwal (CS 3rd year) was the campus winner.&lt;/p&gt;

&lt;h2 id=&quot;insomnia&quot;&gt;Insomnia&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/competitions/insomnia.png&quot; alt=&quot;Insomnia&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Insomnia is IIT Roorkee’s annual algorithmic problem solving event, organized by the Programming and Algorithms group, under SDSLabs. Insomnia involves all kinds of algorithmic challenges, ranging from string manipulation to complex dynamic programming. It is the biggest online event in Cognizance with participation from all over the world.&lt;/p&gt;

&lt;p&gt;This year Insomnia was held on SDSLabs’ very own app, CodeVillage, for the first time. It gave us a chance to step up CodeVillage from the intranet to the internet. Our homegrown code-checker, called ‘CodeRunner’ was used as the grader.&lt;/p&gt;

&lt;p&gt;The competition saw great participation from all over the world. 8 out of the first 10 ranked teams were from outside India. Anton Lunyov, from Ukraine and flashmt from Singapore took ranks 1 and 2. ‘:P‘ (yes, that’s their team name), a team comprising of Dipit Grover and Tarun Goyal won the campus prize.&lt;/p&gt;

&lt;p&gt;Organising competitions at an International scale has been an honor for us. We hope to continue bringing forward events of these level, if not more, in the future!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Team SDSLabs&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>The final recruitment list for 1st year (2013)</title>
      <link>https://blog.sdslabs.co/2013/01/recruitment-final-result</link>
      <pubDate>Sun, 13 Jan 2013 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2013/01/recruitment-final-result</guid>
      <description>&lt;p&gt;Congratulations to everyone who got in. We were overwhelmed by the amount of talent and aptitude these people brought on board. If we did not select you, it was because we had limited vacancies, not because we didn’t like you. Each of the rest was as equally likely and capable be to be selected. And each time we took someone’s name off the list, we were stricken with guilt.&lt;/p&gt;

&lt;h2 id=&quot;programmers&quot;&gt;Programmers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Abhinav Tushar (12115005)&lt;/li&gt;
  &lt;li&gt;Abhishek Kandoi (12114003)&lt;/li&gt;
  &lt;li&gt;Ankita Shukla (12114012)&lt;/li&gt;
  &lt;li&gt;Deepali Jain (12115034)&lt;/li&gt;
  &lt;li&gt;Divij Bindlish (12115037)&lt;/li&gt;
  &lt;li&gt;Gautam Arakalgud (12115042)&lt;/li&gt;
  &lt;li&gt;Mohite Kishor (12114041)&lt;/li&gt;
  &lt;li&gt;Kshitij Bathla (12114036)&lt;/li&gt;
  &lt;li&gt;Prakhar Singh (12213014)&lt;/li&gt;
  &lt;li&gt;Satyam Vijay (12114061)&lt;/li&gt;
  &lt;li&gt;Shubham Gupta (12114062)&lt;/li&gt;
  &lt;li&gt;Shubham Roy (12119053)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;designers&quot;&gt;Designers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Kushal Saharan (12116029)&lt;/li&gt;
  &lt;li&gt;Rishabh Yadav (12115090)&lt;/li&gt;
  &lt;li&gt;Viplov Kumar (12114073)&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
&lt;p&gt;Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Recruitment Shortlist (First Year)</title>
      <link>https://blog.sdslabs.co/2013/01/recruitment-shortlist</link>
      <pubDate>Sat, 12 Jan 2013 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2013/01/recruitment-shortlist</guid>
      <description>&lt;p&gt;The following students have been shortlisted for interviews. The time slots are given below as well. Please come 15 minutes before your allotted time. The venue for all interviews is &lt;strong&gt;SDSLabs, Hobbies Club&lt;/strong&gt;.&lt;/p&gt;

&lt;h2 id=&quot;programming-interviews&quot;&gt;Programming Interviews&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Day 1 (12th Jan, Saturday)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Aakash Agarwal (CE): 12:00 - 12:20&lt;/li&gt;
  &lt;li&gt;Aarushi Bagga (GPT): 12:20 - 12:40&lt;/li&gt;
  &lt;li&gt;Abhijeet Gaur (CSE): 12:40 - 1:00&lt;/li&gt;
  &lt;li&gt;Abhijeet Kumar (BT):  1:00 - 1:20&lt;/li&gt;
  &lt;li&gt;Abhinav Kumar (GT):   1:20 - 1:40&lt;/li&gt;
  &lt;li&gt;Abhinav Tushar (EE):  1:40 - 2:00&lt;/li&gt;
  &lt;li&gt;Abhiraj Sharma (CE):  2:00 - 2:20&lt;/li&gt;
  &lt;li&gt;Abhishek (CSE):       2:20 - 2:40&lt;/li&gt;
  &lt;li&gt;Abhishek Kandoi (CSE): 2:40 - 3:00&lt;/li&gt;
  &lt;li&gt;Aman Kumar (CHE): 3:00 - 3:20&lt;/li&gt;
  &lt;li&gt;Aman Kumar Kedia (CSE): 3:20 - 3:40&lt;/li&gt;
  &lt;li&gt;Ankita Shukla (CSE): 3:40 - 4:00&lt;/li&gt;
  &lt;li&gt;Ankur Garg (CSE): 4:00 - 4:20&lt;/li&gt;
  &lt;li&gt;Anshuman Singh (CSE): 4:20 - 4:40&lt;/li&gt;
  &lt;li&gt;Anubhav Bindlish (CSE): 4:40 - 5:00&lt;/li&gt;
  &lt;li&gt;Archit Garg (CSE): 5:00 - 5:20&lt;/li&gt;
  &lt;li&gt;Ashish Dwivedi (ECE): 5:20 - 5:40&lt;/li&gt;
  &lt;li&gt;Astuti Sharma (CSE): 5:40 - 6:00&lt;/li&gt;
  &lt;li&gt;Chavi Choudhary (MMT): 6:00 - 6:20&lt;/li&gt;
  &lt;li&gt;Deepali Jain (EE): 6:20 - 6:40&lt;/li&gt;
  &lt;li&gt;Dipesh Gujnani (CHE): 6:40 - 7:00&lt;/li&gt;
  &lt;li&gt;Divij Bindlish (EE): 7:00 - 7:20&lt;/li&gt;
  &lt;li&gt;Gautam Anakalgud (EE): 7:20 - 7:40&lt;/li&gt;
  &lt;li&gt;Kishor Mohite (CSE): 7:40 - 8:00&lt;/li&gt;
  &lt;li&gt;Krishna Khandelwal (CE): 8:00 - 8:20&lt;/li&gt;
  &lt;li&gt;Kshitij Bathla (CSE): 8:20 - 8:40&lt;/li&gt;
  &lt;li&gt;Kushal Sharan (ECE): 8:40 - 9:00&lt;/li&gt;
  &lt;li&gt;M Karthick (MMT): 9:00 - 9:20&lt;/li&gt;
  &lt;li&gt;Namit Ohri (ECW): 9:20 - 9:40&lt;/li&gt;
  &lt;li&gt;Pankaj Gudlani (CSE): 9:40 - 10:00&lt;/li&gt;
  &lt;li&gt;Piyush Kumar Gupta (ME): 10:00 - 10:20&lt;/li&gt;
  &lt;li&gt;Prakhar Gupta (CSE): 10:20 - 10:40&lt;/li&gt;
  &lt;li&gt;Prakhar Singh (ECW): 10:40 - 11:00&lt;/li&gt;
  &lt;li&gt;Prakhar Varshney (MMT): 11:00 - 11:20&lt;/li&gt;
  &lt;li&gt;Shivanshu Madan (CHE): 11:20 - 11:40&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Day 2 (13th Jan, Sunday)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Ishu Goyal (CSE): 10:20 - 10:40&lt;/li&gt;
  &lt;li&gt;Mahim Agarwal (EE): 10:40 - 11:00&lt;/li&gt;
  &lt;li&gt;Meghana Agarwal (CSE): 11:00 - 11:20&lt;/li&gt;
  &lt;li&gt;Mehak Gupta (MMT): 11:20 - 11:40&lt;/li&gt;
  &lt;li&gt;Mikul K Patel (ECE): 11:40 - 12:00&lt;/li&gt;
  &lt;li&gt;Palak Gupta (BT): 12:00 - 12:20&lt;/li&gt;
  &lt;li&gt;Priyanshu Sheth (CSE): 12:20 - 12:40&lt;/li&gt;
  &lt;li&gt;Purvi Gupta (CY): 12:40 - 1:00&lt;/li&gt;
  &lt;li&gt;Rashika Ramola (BT): 1:00 - 1:20&lt;/li&gt;
  &lt;li&gt;Rohan Kalia (MMT): 1:20 - 1:40&lt;/li&gt;
  &lt;li&gt;Rohan Sarkar (EE): 1:40 - 2:00&lt;/li&gt;
  &lt;li&gt;Satyam Vijay (CSE): 2:00 - 2:20&lt;/li&gt;
  &lt;li&gt;Shubham Gupta (CSE): 2:20 - 2:40&lt;/li&gt;
  &lt;li&gt;Shubham Roy (PI): 2:40 - 3:00&lt;/li&gt;
  &lt;li&gt;Shubham Singh (CSE): 3:00 - 3:20&lt;/li&gt;
  &lt;li&gt;Srijan Jindal (BT): 3:20 - 3:40&lt;/li&gt;
  &lt;li&gt;Srishti Gupta (CHE): 3:40 - 4:00&lt;/li&gt;
  &lt;li&gt;Sumit Joshi (CE): 4:00 - 4:20&lt;/li&gt;
  &lt;li&gt;Suyash Singh (MMT): 4:20 - 4:40&lt;/li&gt;
  &lt;li&gt;Varid Gupta (CE): 4:40 - 5:00&lt;/li&gt;
  &lt;li&gt;Varun Syal (CSE): 5:00 - 5:20&lt;/li&gt;
  &lt;li&gt;Vikas (CE): 5:20 - 5:40&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>How does SDSLabs work</title>
      <link>https://blog.sdslabs.co/2012/12/how-does-sdslabs-work</link>
      <pubDate>Mon, 31 Dec 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/12/how-does-sdslabs-work</guid>
      <description>&lt;p&gt;SDSLabs is roughly run as two cells
 (programming/design) that collaborate with each
 other on everything. This blog post will take a
 look at the various tools, technologies, and
 applications that we use on a daily basis. It is
 our hope that some other groups in the campus
 might be interested in this. We’re open to
 inquiry about any of this, and you can reach us
 anytime at contact@sdslabs.co.in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Updates&lt;/strong&gt;: Since this article was published, we’ve switched from Partychat to
&lt;a href=&quot;/2014/04/sdslabs-slack/&quot;&gt;Slack&lt;/a&gt;. We’ve also launched a separate
&lt;a href=&quot;/2014/10/feedback-chat/&quot;&gt;Feedback and Chat&lt;/a&gt; portal that helps us communicate
with our users better.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mailing List&lt;/strong&gt; : Our mailing list, like most other groups runs on Google Groups. 
This is our primary means of communication. We send out a heavy amount of email 
each day and email-overload is an actual problem for people who just join.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Facebook Group&lt;/strong&gt; : Like everyone else, we too have our own facebook private group.
Unlike most other groups, we hardly use it. We find the facebook notification 
system terrible, and the comments system broken for serious discussion. Hence we 
limit discussion on facebook to bakar, and taking jibes at each other. 
We also keep a document with our internal lingo here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Partychat&lt;/strong&gt; : We have a partychat account that we use as our personal chatroom
. We would have used Campfire, but its cost raises some barriers. 
Partychat, on the other hand creates a chatroom within gtalk chat for free.
 Partychat helps us remain in continous communication with everyone, while
 moving non-serious stuff away from email. We all hang around at partychat, 
and most of our bakar sessions have shifted from facebook to chat. 
Partychat is a special kind of group-chat, which allows everyone to 
see logs, and it works without having to invite everyone again &amp;amp; again (like &lt;em&gt;gmail group chat&lt;/em&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hubot&lt;/strong&gt; : Our partychat server includes hubot, our own personal robot. 
He announces cricket scores, keeps track of who is working on what, 
announces if anyone makes a commit, and helps us out with lots of stuff.
 We prank around lots of things with bot. 
We use it to answer commonly asked questions, like who is in lab, and
 someone’s mobile number, or to urgently call out someone. It is 
integrated with most of our other internal services, and we plan to use it
for even more stuff.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Let’s you act all innocent when you need it &lt;br /&gt; &lt;img src=&quot;/images/posts/bot/1.png&quot; alt=&quot;bot pug me&quot; /&gt;&lt;/li&gt;
  &lt;li&gt;Pictures are worth more than words &lt;br /&gt; &lt;img src=&quot;/images/posts/bot/2.png&quot; alt=&quot;double facepalm&quot; /&gt;&lt;/li&gt;
  &lt;li&gt;Keeps track of scores for us and also lets us correct those &lt;em&gt;fingers of slips&lt;/em&gt;  &lt;br /&gt; &lt;img src=&quot;/images/posts/bot/3.png&quot; alt=&quot;scores&quot; /&gt;&lt;/li&gt;
  &lt;li&gt;Gives us details of members, if you ask politely &lt;em&gt;(yoda = Abhishek Das)&lt;/em&gt; &lt;br /&gt; &lt;img src=&quot;/images/posts/bot/4.png&quot; alt=&quot;bot info&quot; /&gt;&lt;/li&gt;
  &lt;li&gt;For those times when we are too lazy to open google.com &lt;br /&gt; &lt;img src=&quot;/images/posts/bot/5.png&quot; alt=&quot;bot google me&quot; /&gt;&lt;/li&gt;
  &lt;li&gt;And for those times when we are too lazy to open “Compose mail” &lt;br /&gt; &lt;img src=&quot;/images/posts/bot/7.png&quot; alt=&quot;bot summon&quot; /&gt;&lt;/li&gt;
  &lt;li&gt;And sometimes the bot chooses to troll us &lt;br /&gt; &lt;img src=&quot;/images/posts/bot/6.png&quot; alt=&quot;bot decide&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Dropbox&lt;/strong&gt; : Our designers primarily share all their work through dropbox.
 It is all continously synced with dropbox, and available on Redmine 
for offline access. All our designs, past and present have a place in
 dropbox. We also use it to share documents, and work on some side 
projects till we can shift to github/redmine for code hosting. 
A new Facebook feature for dropbox sharing
within facebook groups was actually a real
good helper for us as we use both products together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Redmine&lt;/strong&gt; : Redmine is a project management system running on rails.
 We use redmine extensively for code hosting(integrated with gitolite), 
issue tracking, and wikis. (add screenshots and more). Our git server is 
running gitolite and all our code is version controlled in git. We shifted to git
from ftp based systems about a year ago, and it has been working out awesome
for us.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/redmine_1.jpg&quot; alt=&quot;List of bugs assigned in Redmine&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/redmine_2.jpg&quot; alt=&quot;Recent Activity Page&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WorkFlowy&lt;/strong&gt; : We use a custom account at workflowy.com with a shared list
 to easily manage lots of things. It is an easy-going tool which we find 
useful for quick edits, lookups and at times when creating a google-doc or
 an issue in redmine would be an overkill. We find that the list system of 
workflowy is an excellent place to chalk out ideas and hold brainstorming
 sessions in writing easily. Workflowy keeps track of most of our 
administration related stuff, with tenders,
 management contacts etc stored there. A daily log of our changes on
 workflowy is forwarded to our google-group so everyone is kept in 
 the loop about any changes made there.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/workflowy.jpg&quot; alt=&quot;Workflowy Home Page&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Presence&lt;/strong&gt; : Presence is our automated presence detection system.
 A very common question we found on chat was asking “who all is in lab?”.
 It became so common to ask this, that we turned to using technology to
 solve our problem. Presence answers this question for us. As mentioned
 earlier, our work culture is focussed on using personal laptops instead
 of workstations. Presence detects the presence of any device that you
 might own, and logs it down. We turn to presence anytime we want to check
 up on who all is present in lab. It uses lan, wifi, and bluetooth scans 
to sniff around people in general. It even takes a photo that refreshes 
every one minute to let us see what state the lab is in. We are looking 
to open-source presence in the near future in hopes it will be useful 
to others as well.
&lt;img src=&quot;/images/posts/presence.jpg&quot; alt=&quot;Presence&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Llama&lt;/strong&gt; : Llama is our in-house
 deployment/management system that helps us run
 services and deploy them easily. We have very
 loose access rules in place. Every lab member has access to the
 source code for every project, which leads to higher transparency in whatever we do.
Llama allows anyone to deploy anything whenever they want. It takes out the pain of
 uploading/moving stuff manually to the server and
 restarting processes and so on. With just a single command to llama,
 it will automate the deployment process for us.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;StatusBoard&lt;/strong&gt; : We try our best to keep as good of an uptime
 as possible, but there are lots of
 issues that we just cannot handle. As such, we’re
 working on status-board, our own status server,
 that helps us keep track of all our services and
 their health at a glance. It keeps a continous
 track of which services are up/down and for how
 long. You can check the public version at &lt;a href=&quot;https://status.sdslabs.co.in&quot;&gt;https://status.sdslabs.co.in&lt;/a&gt;.
 &lt;img src=&quot;/images/posts/status.png&quot; alt=&quot;Public StatusBoard&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Play&lt;/strong&gt; :  We have our music player internally for lab, which plays our songs on the 
lab speakers. We have open sourced it and it is available on &lt;a href=&quot;https://github.com/sdslabs/play&quot;&gt;github&lt;/a&gt;.
Play takes care of the problem we had in playing music over the speakers in lab.
Anyone can send play a request, which may even be a youtube video link and play will play it faithfully.
As for the people who get distracted by music during work, we have our own “Silent Room”, which
anyone in lab can use, any time (We encourage using it for studies as well).
&lt;img src=&quot;/images/posts/play.png&quot; alt=&quot;Play&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We also run our own internal server for cdnjs, use piwik for statistics, 
and continue working on more amazing stuff. We do not limit ourselves
 to any technologies, and have work in php, js, node.js, ruby, scala,
 cpp and some other technologies as well. Our servers run on Ubuntu
 10.04 LTS and we’re upgrading them to 12.04 already.&lt;/p&gt;

&lt;p&gt;We will be recruiting for designers and programmers from first year in January.
 Any interested second yearites can send a mail to contact@sdslabs.co.in
 mentioning &lt;em&gt;prior work done&lt;/em&gt;.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Working at SDSLabs (3)</title>
      <link>https://blog.sdslabs.co/2012/12/sdslabs-my-experiences</link>
      <pubDate>Thu, 27 Dec 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/12/sdslabs-my-experiences</guid>
      <description>&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;For the past two years, I have been involved in a student group in our campus called SDSLabs.
It has been the most fun two years of my life. I have acted as programmer, developer, manager,
monkey-coder, event-manager and all other roles one might expect in a startup. However, I have
never really blogged about any of this. Someone pointed it out recently to me, the truth is I
have been meaning to write this since a very long time, but its kind of hard to put down in 
words. I’ll try my best. This post is highly specific to iit roorkee (you have been warned).&lt;/p&gt;

&lt;h2 id=&quot;chronology-of-events--timeline&quot;&gt;Chronology Of Events / Timeline&lt;/h2&gt;

&lt;p&gt;Back in my first year, after joining something called SDS as a proficiency in the campus, I was learning PHP.
 With no-one to guide me, I had only attended a single talk by Shobhit Singh where he talked about dynamic 
 websites. I was instantaneously hooked. I did something called lion, a twitter clone and it won 3rd prize 
 in Srishti. It had follow, unfollow, messages, tweets, and groups (one feature which set it apart from twitter).&lt;/p&gt;

&lt;p&gt;The code was a mess of php and inline html, and I have never looked upon it since. I did a couple more projects by myself
, learning the in and outs of php (I was still to hear about ruby/python). At the end of my first year, I did a project
 management system under Kumar Shashank who taught me about MVC and the need of architecture in a software application.&lt;/p&gt;

&lt;p&gt;At the very end of the project, a group called &lt;a href=&quot;https://sdslabs.co/&quot;&gt;SDSLabs&lt;/a&gt; was formed. Along with a few people 
Shobhit sir had found, we founded SDSLabs. Everyone in the group was passionate about building things.
And somehow, magically, I was in it. And there began the most beautiful chapter of my life..&lt;/p&gt;

&lt;h3 id=&quot;coding--learning&quot;&gt;Coding &amp;amp; Learning&lt;/h3&gt;

&lt;p&gt;After completing the PMS (Project Management System), I moved on to work on Filepanda, and then the entire framework 
application for SDSLabs. All our applications are powered by a single API, which I wrote. Meanwhile, Harshil was working
 on DC++, and other awesome things. I met pranav sir, and was introduced to the thousand-quirks-of-css. It shifted to mint, and
then to ubuntu. I learned the ins-and-out of managing a linux system. Back then SDSLabs was limited to the small committee
room in Hobbies Club (with Shobhit Sir working tirelessly on funding for a better lab).&lt;/p&gt;

&lt;p&gt;And I met Ishan Sir. If you are reading this, thank you for teaching me how to learn. I had tons of night-outs with him 
discussing things I barely remember now. I became a creator. I executed on tons of ideas. Most never saw the second day in 
their lives, but I still have them with me, as memento of the past and what was to be. Ishan Sir was a gold-mine for learning. 
Everything I could ever ask, and he’d hand over a resource. Some of my most productive learning days were spent with him.&lt;/p&gt;

&lt;h3 id=&quot;recruitments&quot;&gt;Recruitments&lt;/h3&gt;

&lt;p&gt;After a single semester of work, we held our first recruitments. I wrote my
 &lt;a href=&quot;https://blog.sdslabs.co/2011/09/recruitment-experience/&quot;&gt;first blog post for the lab&lt;/a&gt; at the time noting 
down my amazing reaction to the awesome people that had joined the lab.&lt;/p&gt;

&lt;p&gt;It is difficult to distil into words the awesome learning experience I had with all these people. Going to chapos, thinking 
about how we could expand. What else awesome stuff we could do? One night hackathons, where we coded awesome stuff.&lt;/p&gt;

&lt;p&gt;And I started to work on &lt;a href=&quot;https://sdslabs.co.in/muzi/&quot;&gt;muzi&lt;/a&gt;, which was to be &lt;em&gt;my application&lt;/em&gt;. It stands at 811 commits today, with over
200 issues in our project management system.
 I went into the development knowing PHP and bits of AJAX, and came out a JQuery fanboy. Muzi has been my primary music player
  for almost an year now. It feels awesome to listen to music on a music player you coded. The initial version was
  based on Zune’s design on Windows. We kept on improving it till it was exactly what we wanted. Today, people have listened to
  almost 1 lac songs on Muzi, and it feels awesome to have been behind something that is so widely used (within the campus).&lt;/p&gt;

&lt;h3 id=&quot;launch&quot;&gt;Launch&lt;/h3&gt;

&lt;p&gt;The next semester involved our &lt;a href=&quot;https://blog.sdslabs.co/2011/11/launch-and-beyond&quot;&gt;actual launch (11-11-11)&lt;/a&gt; of all our applications. 
We had all converted into semi-breathing coding machines cum zombies by that time though. Sleepless and exhausted, we did prevail, 
and launched a few hours early. The Launch was appreciably recieved in the campus, although I had to leave for the
 &lt;a href=&quot;https://captnemo.in/blog/2011/11/20/cctc-blog/&quot;&gt;Deloitte CCTC Contest&lt;/a&gt; the very same day(which we won!).&lt;/p&gt;

&lt;p&gt;I ended up doing a rewrite of Codematics (codename CodeBot) in node for the launch. It has a geeky, command line interface
which was inspired by &lt;a href=&quot;https://goosh.org/&quot;&gt;goosh&lt;/a&gt; and &lt;a href=&quot;https://unix.xkcd.com&quot;&gt;xkcd’s unix interface&lt;/a&gt;. Along with that, Muzi was
launched to huge appreciation as well.&lt;/p&gt;

&lt;h3 id=&quot;recruitments-again&quot;&gt;Recruitments Again&lt;/h3&gt;

&lt;p&gt;This was the semester where our group actually expanded. Our count is almost 42 now, and nothing could
 make me more glad than actually being with all these people.&lt;/p&gt;

&lt;p&gt;I donned lots of hats teaching, guiding, coding, and managing people. Linux became one of my top skills, and I learnt a lot.
We shifted to Redmine for management, and I ended up doing a lot of server-administration related stuff (gitolite,redmine,vhosts
,apache,varnish etc).&lt;/p&gt;

&lt;p&gt;It has almost been a year since our last recruitment. We have been working of tons of things; some of which 
will be launched soon. I took lectures on far apart topics from 
&lt;a href=&quot;https://speakerdeck.com/captn3m0/ux-and-usability-designing&quot;&gt;“Usability Designing”&lt;/a&gt; to
 &lt;a href=&quot;https://speakerdeck.com/captn3m0/software-development-101&quot;&gt;“Software Development 101”&lt;/a&gt; I mostly
worked on internal features, improving our API, and something called Presence. We also 
&lt;a href=&quot;https://captnemo.in/blog/2012/05/23/phonegap-blog-post/&quot;&gt;participated&lt;/a&gt; in 
&lt;a href=&quot;https://blog.sdslabs.co/2012/09/hacku&quot;&gt;two hackathons&lt;/a&gt;,
and we won both of them.&lt;/p&gt;

&lt;h2 id=&quot;where-now&quot;&gt;Where, now?&lt;/h2&gt;

&lt;p&gt;Our group is still nascent, and although I have not mentioned every project that the group (or even I) have
 done for fear of making this post too long. That itself speaks volumes about what we’ve done in a short 
 span of two years. Our tagline reads &lt;em&gt;“iDream. iCode. iInnovate”&lt;/em&gt;. I wish for the group to continue on that
  path. Develop things that make life easier; for everyone around the world.&lt;/p&gt;

&lt;h2 id=&quot;people&quot;&gt;People&lt;/h2&gt;

&lt;p&gt;Throughout this journey, there have been lots of people, without whom this blog post would never have been written.
 You all know who you are. Keep being awesome.&lt;/p&gt;

&lt;h2 id=&quot;skills&quot;&gt;Skills&lt;/h2&gt;

&lt;p&gt;I used to call myself a programmer, but now I’m in a more management-esque role in SDSLabs. Its my share of the work to manage projects,
and track progress. That does not mean that I’ve given up coding, and I still do code a lot for our internal projects. I have also become
somewhat of a UX enthusiast, taking care of most ux work done in lab. I have also found myself becoming an avid learner, and have Ishan
Sir to thank for that.&lt;/p&gt;

&lt;h2 id=&quot;anecdotes--stories&quot;&gt;Anecdotes &amp;amp; Stories&lt;/h2&gt;

&lt;p&gt;This post already reads more like a things-i-did-at-sdslabs, which is something I was hoping to avoid, instead of why-i-love-sdslabs, which is what i wanted. So I’m gonna stick a few moments and events that stand out to me…&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We have a board with three defining people on it: Steve Jobs, Dennis Ritchie, and Linus Torvalds.&lt;/li&gt;
  &lt;li&gt;We have had mind-blowing pizza chapos. So many pizzas that they were brought in 2 rickshaws from dominos. Yup.&lt;/li&gt;
  &lt;li&gt;I am known as the bot in lab. Mostly because of my highly rational unemotional responses, and other things. There is another person, who is trying to get that title, though.&lt;/li&gt;
  &lt;li&gt;I am famously known for turning down “writing a letter that could have fetched us lots of funding” for coding instead. (In my defense, there were other people who could have handled it better than me, and we didn’t need it badly at the time)&lt;/li&gt;
  &lt;li&gt;Almost every group in the campus describes their group as a second home. But in our case it is partially true. We spend almost all our free time in lab. I spent close to 500 hours in the lab in this semester alone. Where does this all this time go? Talking, discussions, development, teaching, lectures among other things.&lt;/li&gt;
  &lt;li&gt;SDSLabs feels more of a startup than an actual student group to me (and Shashank as well). We have to fight for our funding, manage people, and develop products.&lt;/li&gt;
  &lt;li&gt;I have done way too much copy-editing to be called “just a developer” anymore. I have spent hundreds of hours fighting Pinta and its numerous bugs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It has been a great experience working with all these people. I can just hope that the group keeps moving to better
innovation, and grander ideas in the future. We are recruiting from first year in upcoming January. If SDSLabs feels like a place you’d
enjoy, just come over and take our test. It changed my life, maybe it will change yours too.&lt;/p&gt;

&lt;p&gt;–
Abhay Rana, 4th Year, P&amp;amp;I&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Working at SDSLabs (2)</title>
      <link>https://blog.sdslabs.co/2012/12/working-at-sdslabs</link>
      <pubDate>Tue, 11 Dec 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/12/working-at-sdslabs</guid>
      <description>&lt;p&gt;&lt;em&gt;The first post on this topic can be read &lt;a href=&quot;https://blog.sdslabs.co.in/2012/01/work-at-the-sds/&quot;&gt;here&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/working-sdslabs/sdslabs.jpg&quot; style=&quot;float: right; margin: 5px 0px 20px 20px;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If you have ever spoken to me in real life or follow me on &lt;a href=&quot;https://twitter.com/leostatic&quot;&gt;twitter&lt;/a&gt; or 
are in my friend list in facebook or instagram or ….. you get the point, then you must have seen my
posts related to a certain something known as SDSLabs. It’s been 11 months since I joined this student
group in IITR and it has more or less become a part of my identity. Before I write anything more I 
should probably explain what is SDSLabs.&lt;/p&gt;

&lt;h2 id=&quot;a-student-group&quot;&gt;A Student Group&lt;/h2&gt;

&lt;p&gt;IITR has a very vibrant culture of student groups with there being a group for nearly everything, 
right from Robotics, Electronics to Philately and even Gardening! While not all of them are active
and often give the feeling of having been started by few enthusiasts who have long since left and 
now no one is ready to carry it on, there are a few groups who are actively changing the scene in their field. SDSLabs is one of them. SDS (Software Development Section) is an official hobby section and anyone can be a member of this. SDSLabs is the core team that manages SDS apart from working on various projects in the software field (moving into hardware too now). I came to know about SDS through their open for all lecture series that they conducted in my first year. Then in November, 2011 they launched their intranet portal and that’s when I knew that I &lt;em&gt;had&lt;/em&gt; to join this group.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;recruitment-process&quot;&gt;Recruitment Process&lt;/h2&gt;

&lt;p&gt;SDSLabs’ recruitment process for first years started off in the second week of January.
A two and half hours of written test and a nearly three hours of interview later I was in.
I was one of the 13, out of nearly 200 people who had applied, to be chosen in the programmer
category (Design being the other). The process was long and ardous but the end result has been 
wonderful. The last 11 months in SDSLabs have been amazing.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/working-sdslabs/sds1.jpg&quot; style=&quot;width: inherit; margin: 5px 0px 20px 0px;&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;whats-it-like-inside-of-sdslabs&quot;&gt;What’s it like inside of SDSLabs&lt;/h2&gt;

&lt;p&gt;The first thing that you realise is the level of service and infrastructure available inside 
the lab. A fingerprint scanner based entry, 42 inch TV, an enterprise level server, bean bags,
AC, radiator are just a few among many other things available. Funds have never been a problem
for us, courtesy IITR administration, with another server in the line and along with a Nexus 7
for android development. It’s more like a startup inside college with people even sleeping 
inside lab! Anyways, looking beyond things that you can buy with a Mastercard, the best part of
the lab is the people in there. A conversation with a senior leaves you with wealth of knowledge
each time unless, of course, it is a bakkar conversation. SDSLabs was the first place where I could
talk about &lt;a href=&quot;https://news.ycombinator.com/&quot;&gt;Hacker News&lt;/a&gt; without getting clueless looks. It was also 
the first place where when I complained about unnecessary clicks on a website people actually understood 
because it is in their system to create user friendly apps.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;ManUtd vs ManCity&quot; src=&quot;/images/posts/working-sdslabs/sds2.jpg&quot; style=&quot;width: inherit; margin: 5px 0px 20px 0px;&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;technology&quot;&gt;Technology&lt;/h2&gt;

&lt;p&gt;After joining lab I was introduced to git(version control system), redmine(project management system), 
php, js, ajax, sass, bash, jquery, node.js to name a few. Few people are also using ruby and scala. I 
have since fallen in love with git and wherever I can use vcs, I do. As a result, I have also fallen 
head over heels in love with &lt;a href=&quot;https://github.com/&quot;&gt;Github&lt;/a&gt;, so much so that I queued up to avail their 
free student plan the moment I came to know about it (although nearly all my projects are in redmine 
and gitolite combo). I have also moved to using Ubuntu full time since. I have seen 11.10 and 12.04 
come and go. I have become fearless when it comes to partition tables and experiments. And all this
happened over the last 11 months along with the load of regular college and other extra-curricular activities. I have also met some absolutely brilliant people like &lt;a href=&quot;https://captnemo.in&quot;&gt;Abhay Rana&lt;/a&gt;, &lt;a href=&quot;https://harshilmathur.in&quot;&gt;Harshil Mathur&lt;/a&gt;, Shobhit Singh. They are so brilliant that I could probably end up writing separate blog posts for each one of them and even then I doubt I would be able to do justice to their brilliance! All in all, it’s safe to say that lab has become my home away from home with countless hours spent sitting on a bean bag with a laptop and arguing about the merits and demerits of various frameworks.&lt;/p&gt;

&lt;h2 id=&quot;the-work&quot;&gt;The work&lt;/h2&gt;

&lt;p&gt;The best part of SDSLabs is that you are free to come up with a project idea and work on it. 
The project does not have to be a web app as is the common misconception, it can be related
to mobile development, linux development or even a windows 8 app. If you are interested in 
hardware+software solutions, then even that is possible. If you don’t have an idea you are 
most welcome to work on other projects. Any member can see the code of any project. Any member 
can contribute code to any project (something like github’s pull request). We also work on few 
official projects that are taken up by the lab. These include making the websites of IIT Roorkee’s
technical festival and website for some international conference that is going to take to place
in IITR. If official projects don’t interest you then you are under no obligation to be a part 
of them. Since this is not a job, there’s no check in time or check out time. The lab is opened
whenever needed and remains open well into the night (sometimes people leave directly next day
morning for breakfast!).&lt;/p&gt;

&lt;h2 id=&quot;the-fun&quot;&gt;The Fun&lt;/h2&gt;

&lt;p&gt;Dine Out’s sponsored by seniors is part of the culture now. Alumnis of our group also give us huge
Dominos treats now and then and when I say huge I mean &lt;em&gt;huge&lt;/em&gt; (imagine three delivery boys coming
from dominos &lt;em&gt;just&lt;/em&gt; for your order!). We also have a few gaming sessions. ProTip: Stay away from 
abhshkdz. The group also goes for camping once every year. The 42’ TV is put to good use, trust us!&lt;/p&gt;

&lt;h2 id=&quot;recruitments-plug&quot;&gt;Recruitments plug&lt;/h2&gt;

&lt;p&gt;It’s December and come January, SDSLabs will start recruiting again. If you are a fresher in IITR
and are interested in joining SDSLabs then the next few lines are for you.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;We don’t care which branch you are in. Out of the three people I named above only one was in CS. In my year there are only 2 in CS, out of the 13.&lt;/li&gt;
  &lt;li&gt;We don’t care about how much programming you know right now as long as you can convince us that you &lt;em&gt;can&lt;/em&gt; do it and you have the aptitude for it. I did not know programming when I applied.&lt;/li&gt;
  &lt;li&gt;If you think that joining SDS is going to get you a high paying job in some software company 4 years later then please stay away. No I’m not saying SDS does &lt;em&gt;not&lt;/em&gt; give an advantage (it does) but we don’t want people who only and only care about package.&lt;/li&gt;
  &lt;li&gt;If you are a CS undergrad and are applying just because it is something in your field, please stay away! We want self motivated people.&lt;/li&gt;
  &lt;li&gt;If you are a bond, don’t apply, just COME TO LAB!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;–
Shashank Mehta &lt;br /&gt;
IInd Year, ECE &lt;br /&gt;
&lt;a href=&quot;https://shashankmehta.in&quot;&gt;https://shashankmehta.in&lt;/a&gt; &lt;br /&gt;
&lt;em&gt;This post has been cross posted from the author’s blog&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Response to security concerns raised by GeekGazette</title>
      <link>https://blog.sdslabs.co/2012/11/response-to-gg</link>
      <pubDate>Mon, 12 Nov 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/11/response-to-gg</guid>
      <description>&lt;p&gt;Some of you may have read the latest GeekGazette issue. It includes an article on “Campus Surveillance”, which errs on the side of being a FUD article. If you haven’t already, you can &lt;a href=&quot;https://ge.tt/5BGx6SR/v/0&quot;&gt;read the article online&lt;/a&gt;. The article says, “Managing personal data gives immense power to the authorities and members of IMG and SDSLabs.” Surely this warrants a response.&lt;/p&gt;

&lt;h2 id=&quot;cctv-cameras&quot;&gt;CCTV Cameras&lt;/h2&gt;

&lt;p&gt;As far as I am aware, most of the CCTV cameras installed on the campus are networked. None of these include any form of face recognition. Sure, being tracked by these infringes your privacy, but they are also useful in the case of tracking any wrong-doers as well. Pointing out that our institute has cctv cameras, and leaping to the conclusion that we are being watched everywhere, NSA style, is just plain rubbish.&lt;/p&gt;

&lt;h2 id=&quot;personal-data&quot;&gt;Personal Data&lt;/h2&gt;

&lt;p&gt;The only personal data available to SDSLabs are the email address and phone numbers, which are provided by the users themselves upon registration itself. The institute provides us with no data at all. This means that all data we have is either provided by the user’s consent itself or publically available (We use course data from 192.168.121.2/studentlist to help users during their registration). We don’t have anybody’s weight/height/bloodgroup/photographs/passport/driving licence/grades/passwords as mentioned in the article. We assure you that we have no interest in selling the limited amount of personal data we have on file (phone/email) and it is only accessible by  limited members of our team. Furthermore, our services are protected by HTTPS security to mitigate sniffing and other nefarious activities&lt;/p&gt;

&lt;h2 id=&quot;dc&quot;&gt;DC++&lt;/h2&gt;

&lt;p&gt;As of now, DC++ is being run in an open mode, which means it does not need any form of registration. We personally log very little data (mostly chat) on the DC network. In truth, the actual downloads themselves are P2P (Peer To Peer) and are not trackable. To track a user download, while theoritically possible, would a) require huge resources, and b) caught immediately as a fake peer.&lt;/p&gt;

&lt;h2 id=&quot;web-monitoring&quot;&gt;Web Monitoring&lt;/h2&gt;

&lt;p&gt;As of now, the browsing activites in campus are not monitored by ISC. They can do it in future but don’t do it as of now. Even if they did, it wont be accessble to student/student groups in any case and will be done just for sake of security. Currently if someone hacks a government website from inside the institute, the institute has no reliable way to identify the hacker.&lt;/p&gt;

&lt;p&gt;In conclusion, this article mis-represents the truth, tries to build fear in the mind of its readers, and builds upon little facts to visualize an environment which is completely out-of-reality. However, when the article says &lt;em&gt;“Rest assured, everything can be hacked”&lt;/em&gt;, we tend to agree with them. As a result, we are now coming up with our “Security Disclosure Policy”, which we hope will help us in the long run. If you like working in security, or learn about ethical hacking, feel free to try to hack us. As long as you follow our disclosure policy, that is. And, if anyone else has similar doubts regarding the data we have and how we secure it, you are free to approach us via mail or personally and we will surely sort them out.&lt;/p&gt;

&lt;p&gt;–
Abhay Rana&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Muzi Widget, Facebook Chat &amp; Team page</title>
      <link>https://blog.sdslabs.co/2012/11/muzi-widget-and-facebook-chat-and-team</link>
      <pubDate>Tue, 06 Nov 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/11/muzi-widget-and-facebook-chat-and-team</guid>
      <description>&lt;p&gt;Today we are rolling out a couple of shiny new updates:&lt;/p&gt;

&lt;h2 id=&quot;muzi-widget&quot;&gt;&lt;a href=&quot;https://sdslabs.co.in/home/&quot;&gt;Muzi Widget&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;If you go over to our homepage, you’d see a small searchbox that appears at the bottom of the Muzi tile. Not just search, it is a full-fledged Muzi add-on which works without actually opening Muzi in a separate window, right from the homepage. Really easy to use, just search for a song/album and start listening, or hit that tiny arrow on the left to see a list of the top tracks and albums. You can even play songs from the list of top tracks in the right pane. Just click on a song, and it plays without a fuss in the widget. Pretty neat eh? You bet it is! Go on, give it a shot!&lt;br /&gt;
  &lt;a href=&quot;https://sdslabs.co.in/home/&quot;&gt;&lt;img src=&quot;/images/posts/widget-1.png&quot; alt=&quot;Muzi Widget screenshot&quot; /&gt;
  &lt;img src=&quot;/images/posts/widget-2.png&quot; alt=&quot;Muzi Widget screenshot&quot; /&gt;&lt;br /&gt;
  &lt;img src=&quot;/images/posts/widget-3.png&quot; alt=&quot;Muzi Widget screenshot&quot; /&gt;
  &lt;img src=&quot;/images/posts/widget-4.png&quot; alt=&quot;Muzi Widget screenshot&quot; /&gt;&lt;br /&gt;
  &lt;img src=&quot;/images/posts/widget-5.png&quot; alt=&quot;Muzi Widget screenshot&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;facebook-integration-in-chat&quot;&gt;&lt;a href=&quot;https://sdslabs.co.in/home&quot;&gt;Facebook Integration in Chat&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Facebook chat is now accessible from our native chat application. Listen to your favourite music alongside chatting with your cool dude on Facebook at the same place or enjoy the night accessing Facebook chat exclusively even after 2AM!&lt;br /&gt;
  &lt;img src=&quot;/images/posts/chat-integration-1.png&quot; alt=&quot;Fb Integrated screenshot&quot; /&gt;
  &lt;img src=&quot;/images/posts/chat-integration-2.png&quot; alt=&quot;Fb Integrated screenshot&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;team&quot;&gt;&lt;a href=&quot;https://sdslabs.co.in/team&quot;&gt;Team&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;And we finally have our team page ready. The design is simple and every member’s social links are available when you hover. Don’t worry if someone is right at the bottom, refreshing the page might get him on top!&lt;br /&gt;
&lt;a href=&quot;https://sdslabs.co.in/team/&quot;&gt; &lt;img src=&quot;/images/posts/team-1.png&quot; alt=&quot;Team page screenshot&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://sdslabs.co.in/home/&quot;&gt; &lt;img src=&quot;/images/posts/team-2.png&quot; alt=&quot;Team page screenshot&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;technical-notes&quot;&gt;Technical Notes&lt;/h2&gt;

&lt;h3 id=&quot;muzi-widget-1&quot;&gt;Muzi Widget&lt;/h3&gt;

&lt;p&gt;All the animations are done using jQuery and CSS3 Transforms, and &lt;a href=&quot;https://www.schillmania.com/projects/soundmanager2/&quot;&gt;SoundManager&lt;/a&gt; is used to play audio, just like Muzi. It is a JavaScript API that uses HTML5 audio and falls back to Flash wherever needed, hence delivering reliable cross-platform audio.&lt;/p&gt;

&lt;h3 id=&quot;facebook-integration-in-chat-1&quot;&gt;Facebook Integration in Chat&lt;/h3&gt;

&lt;p&gt;We have used &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/WebSockets&quot;&gt;Websockets&lt;/a&gt; and &lt;a href=&quot;https://nodejs.org/&quot;&gt;Node.JS&lt;/a&gt; for chat. Websockets is a considerably new method which we have chosen over PHP long polling to make the process quick, uninterrupting and care-free.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Filepanda Favorites &amp; Lyrics in Muzi</title>
      <link>https://blog.sdslabs.co/2012/10/filepanda-favorites-and-muzi-lyrics</link>
      <pubDate>Thu, 11 Oct 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/10/filepanda-favorites-and-muzi-lyrics</guid>
      <description>&lt;p&gt;We’re launching two new features today that we hope you’d like to use more and more:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://sdslabs.co.in/muzi/&quot;&gt;Lyrics in Muzi&lt;/a&gt; : This was a highly requested feature that took us some time to get to. We’re glad we got it done, and we’re glad at how it turned out. As of now, Muzi features lyrics for almost all english songs. We’ve pre-fetched the lyrics for all songs, which means that you don’t need to wait for them, either. If lyrics for a song are available, you’d see a small “Lyrics” button in the control bar, which you can then use to browse the lyrics. We’re thankful for all the feedback and requests for this feature, and hope we’ve implemented this well enough.
&lt;img src=&quot;/images/posts/muzi-lyrics.png&quot; alt=&quot;Muzi lyrics screenshot&quot; /&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://filepanda.sdslabs.co.in/favorites&quot;&gt;Favorites in Filepanda&lt;/a&gt;: We’ve implemented favorites in filepanda so that you can mark softwares as your favorites, and browse them later. This would help you to prepare your own list of softwares that you use, and check it easily, for instance.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can favorite a software by going to its download page, and marking it as favorite. All favorites are listed on your “Favorites” page. The page is visible only to logged in users, so you will have to login before you can use this feature. This is a minor, but important feature in our plans for Filepanda. Stay tuned for more updates, because they are coming, and will bring many more such things.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/filepanda-favs-1.png&quot; alt=&quot;Filepanda Favorites Screenshot 1&quot; /&gt;
&lt;img src=&quot;/images/posts/filepanda-favs-2.png&quot; alt=&quot;Filepanda Favorites Screenshot 2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As always, you can reach us for feedback via &lt;a href=&quot;https://facebook.com/SDSLabs&quot;&gt;Facebook&lt;/a&gt;, &lt;a href=&quot;mailto:contact@sdslabs.co.in&quot;&gt;email&lt;/a&gt;, or our &lt;a href=&quot;https://sdslabs.co.in/feedback&quot;&gt;Feedback&lt;/a&gt; page. We continuously monitor all new feedback, and reply to it as soon as possible.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Ubuntu Meetup at IIT Roorkee</title>
      <link>https://blog.sdslabs.co/2012/10/ubuntu-meetup</link>
      <pubDate>Sat, 06 Oct 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/10/ubuntu-meetup</guid>
      <description>&lt;p&gt;This blog post has been coming for some time now. The First ever Ubuntu Meetup was conducted on campus in collaboration with IMG. This was held to bring out the local linux user community to get together and talk about their lives in working with Open-Source . The main purpose behind the meet was to get a Ubuntu/Linux group started in the campus. We are happy to announce that, the meetup was a success, and was attended by more than 70 people, including the members of SDSLabs &amp;amp; IMG.&lt;/p&gt;

&lt;p&gt;The meetup started with a brief presentation which outlined the various aspects of the ubuntu operating system and also listed the linux user group as open to all. A couple of seniors who’ve been roughing it out for a couple of years now shared the reasons that made them switch over to linux based Operating Systems. This included Vivek Prakash, Abhay Rana, and Giridaran Manivannan who talked of their own experiences in using Linux as their primary OS for the past few years.&lt;/p&gt;

&lt;p&gt;The audience was mostly comprised of people who have already had their first bytes of Ubuntu. Almost everyone had some experience in using Ubuntu. In hindsight, this made the introductory aspects of linux that were discussed obsolete , but goes to show the linux user community is bigger than we initially imagined. This is definitely a sign that the campus is ready for advanced topics to be discussed in later meetings.&lt;/p&gt;

&lt;p&gt;A &lt;a href=&quot;https://groups.google.com/forum/#!forum/lugiitr&quot;&gt;Google Group&lt;/a&gt; has been setup for linux users in the campus, and it has already started showing some signs of life. Please join the google group if you’re interested in learning more about Ubuntu/Linux. We’re proud to have been a part of such a beginning.&lt;/p&gt;

&lt;p&gt;Thanks to everyone who attended the meetup . Here’s to many more such meetups in the future.&lt;/p&gt;

&lt;p&gt;Cheers!&lt;/p&gt;

&lt;h1 id=&quot;pics&quot;&gt;Pics&lt;/h1&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/ubuntu_meetup1.jpg&quot; alt=&quot;Pic 1&quot; /&gt;
&lt;img src=&quot;/images/posts/ubuntu_meetup2.jpg&quot; alt=&quot;Pic 2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;More pics were uploaded on the &lt;a href=&quot;https://www.facebook.com/media/set/?set=a.10151914544906988.479689.353701311987&amp;amp;type=1&quot;&gt;IMG Facebook Page&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Remember Me and more updates</title>
      <link>https://blog.sdslabs.co/2012/10/remember-me-and-more-updates</link>
      <pubDate>Mon, 01 Oct 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/10/remember-me-and-more-updates</guid>
      <description>&lt;p&gt;We’ve finally gotten around to launching one of the most asked for features, ‘Remember Me’. This means that the you do not have to login every time you want to use our portal, and we’d keep you logged in for a long amount of time.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/remember.png&quot; alt=&quot;Remember Me&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So now you can quickly solve a puzzle on Codematics, browse through your problem solution status on Codevillage, enjoy your Muzi playlists as well as Last.fm scrobbling all the time without having to login again and again.&lt;/p&gt;

&lt;p&gt;Speaking of Muzi, we’ve finally launched it on the &lt;a href=&quot;https://chrome.google.com/webstore/detail/apghjdamlhjnplhbahmebanbkceacmgn&quot;&gt;Chrome Web Store&lt;/a&gt;, so if you are using Google Chrome, you should check it out! We plan to improve it with a lot more features soon.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi-chrome.jpg&quot; alt=&quot;Muzi on Chrome Web Store&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We’ve also updated Muzi to be able to handle the computer’s default Media Keys. This means that you can use your keyboard’s inbuild Play/Pause/Previous/Next buttons to control muzi. However, it might not work on all browsers (we tested it on Chrome on Windows), since binding media keys is not available across all browsers at the moment. We are still launching the feature, in hopes that our users will find it helpful.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi-media-keys.jpg&quot; alt=&quot;Media Keys Image&quot; /&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Team SDSLabs wins Yahoo! HackU</title>
      <link>https://blog.sdslabs.co/2012/09/hacku</link>
      <pubDate>Wed, 26 Sep 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/09/hacku</guid>
      <description>&lt;p&gt;Hackathons are a rarity in India. Surprising really, seeing that most guys in college claim to be the most productive in the night. Here at SDSLabs we confess to be night owls. Some of our best apps exist thanks to all-nighters. So naturally, when we came to know that Yahoo! India was organising a hackathon by the name of HackU in IIT Delhi, we wanted something similar in our beloved IITR. Multiple emails were exchanged with the Yahoo! employees but we could not convince them to hold one here in Roorkee. What a bummer.&lt;/p&gt;

&lt;p&gt;As I said in the opening line, hackathons &lt;em&gt;are a rarity&lt;/em&gt; in India. So what if we could not convince them to come to Roorkee, we’ll travel to Delhi! And that we did.
Team SDSLabs included:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Abhay Rana who is better known to the public as Captain. Nemo and as Bot to members of the lab. He specialises in anything that can be accessed/altered/twisted/bent/hacked through the codez.&lt;/li&gt;
  &lt;li&gt;Ashwini Khare who found this trip to be the perfect opportunity to play Temple Run &lt;em&gt;undisturbed&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;Abhishek Das, popularly known as Yoda, famous for teaching Obi-Wan to use the source.&lt;/li&gt;
  &lt;li&gt;Shashank Mehta who is typing this thing. I found this trip as the perfect opportunity to catch up on my sleep lost due to those all-nighters. Ironic?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The event was scheduled from 16th to 19th August. The actual hackathon started at 11pm, 18th August, after series of lectures on Yahoo Developer Network offerings (YQL, YUI, BOSS, CAP, DAPPER). BOSS was particularly very impressive. Yahoo has some really good stuff in their developer network. Brainstorming sessions were also held before the actual event where Yahoo employees helped in formulation of ideas. But we did not need this. We had our brainstorming sessions during the journey to Delhi with Temple Run music setting the mood. &lt;em&gt;(Thanks Ashwini!)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We had decided to work on Google Hangout-esque app that allowed people to video chat. Why, you ask? Because we could come up with nothing better and all this world really needs is another video chat application, if you ask me. But then, the world really does need our video chat because we did not copy Google Hangout, we made something better. When you try to video chat with someone, you and your friend both connect to a server. This server receives messages from both of you and pushes them accordingly. But what if both of you are on the same network? The server could be in the opposite part of the world. It makes no sense for your message to travel around the world before being delivered. We used a new protocol called webRTC which creates peer to peer connections. Difference? You connect to the server only to get the address of your friend. After that all your messages are directly sent to your friend. How does this help you ask? On the same network this is equivalent to video chatting over lan, which will be way faster than using an intermediatory server.&lt;/p&gt;

&lt;p&gt;Through the 3 day event, we became oblivious to our surroundings as we sat down to code. It was a fun-filled event, where we did manage to finish our application and polish it beyond our expectations. We added text chat and collaborative doc editing that supports markdown and these two features work on iPad, iPhone and android devices too. Each team was alloted 2 minutes to demo their hack on the last day. We demoed our app on 3 laptops and an iPad! One of the laptops was placed on the judges table and they got to play with the hack themselves. This was a masterstroke.&lt;/p&gt;

&lt;p&gt;We were awarded winner in the geekiest hack category and the top-scoring team for the event. We probably also managed to convince Yahoo! to visit IITR next year. Let’s see how it pans out.&lt;/p&gt;

&lt;p&gt;This is just a glimpse of what being at SDSLabs entails. If this feels like something you’d be interested in doing, send us a mail at contact@sdslabs.co.in clearly mentioning your existing work or if you’re in first year, make sure you sit for the selection test in January.&lt;/p&gt;

&lt;p&gt;Our application can still be used at &lt;a href=&quot;https://hackview.sdslabs.co.in&quot;&gt;hackview.sdslabs.co.in&lt;/a&gt; and the source code is &lt;a href=&quot;https://github.com/sdslabs/hackview&quot;&gt;up on github&lt;/a&gt; for your browsing pleasure.&lt;/p&gt;

&lt;h1 id=&quot;technical-notes&quot;&gt;Technical Notes&lt;/h1&gt;

&lt;p&gt;Our application was a web based offering, running on a new protocol called webRTC, and was made using node.js and express. We also used stuff like JQuery and Twitter Bootstrap to fasten our development.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/hacku/1.jpg&quot; alt=&quot;HackU!&quot; /&gt;
&lt;img src=&quot;/images/posts/hacku/2.jpg&quot; alt=&quot;More HackU!&quot; /&gt;
&lt;img src=&quot;/images/posts/hacku/4.jpg&quot; alt=&quot;Saurabh Sahni delivering a lecture on BOSS&quot; /&gt;
&lt;img src=&quot;/images/posts/hacku/5.jpg&quot; alt=&quot;Multi Monitor setup used by Bot&quot; /&gt;
&lt;img src=&quot;/images/posts/hacku/6.jpg&quot; alt=&quot;I wasn&apos;t joking about Temple Run!&quot; /&gt;
&lt;img src=&quot;/images/posts/hacku/7.jpg&quot; alt=&quot;1 minute left!&quot; /&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Muzi is now even faster &amp; better</title>
      <link>https://blog.sdslabs.co/2012/09/better-faster-muzi</link>
      <pubDate>Fri, 21 Sep 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/09/better-faster-muzi</guid>
      <description>&lt;p&gt;We’ve upgraded muzi to support slow connection networks, added last.fm integration, and a auto-updating Hindi collection. We also have a live tickr that shows you songs as people are listening to them.&lt;/p&gt;

&lt;h2 id=&quot;slow-connection-mode&quot;&gt;Slow Connection Mode&lt;/h2&gt;

&lt;p&gt;Ever since we launched muzi, our aim was to make it &lt;em&gt;The Music Player of the campus&lt;/em&gt;. Due to the way our network infrastructure is designed at IIT Roorkee, we have an effective split of the visitors muzi recieves. One comes from the faster lan bhawans (Radhakrishnan, Rajeev, Kasturba) while most of the rest comes from the wifi bhawans.&lt;/p&gt;

&lt;p&gt;Most of the songs in muzi are encoded at 320kbps, with the Hindi average being 128-160kbps. Since the songs are buffered while being played, bandwidth requirements are scant, but can often be a cause for slow-down in wifi equipped bhawans. To combat this issue, we have introduced a slow connection mode in muzi.&lt;/p&gt;

&lt;p&gt;The slow connection mode allows people with low bandwidth to enjoy muzi. Behind the scenes, muzi works hard to encode the tracks on-the-fly to a lower bitrate to make the file-size smaller, effectively reducing bandwidth.&lt;/p&gt;

&lt;p&gt;If you are listening to muzi from a wifi-hostel, please enable the slow connection mode in settings.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi-slow.jpg&quot; alt=&quot;Screenshot of enabling wifi mode&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After you enable the slow connection mode, all songs you listen to are encoded on-the-fly to a lower bitrate with slight reduction in quality.&lt;/p&gt;

&lt;h2 id=&quot;lastfm-integration&quot;&gt;Last.FM Integration&lt;/h2&gt;

&lt;p&gt;Last.FM is a popular music service that helps people keep track of what you’ve listened to. Its “scrobbler service” is cross-platform and available as a plugin for various music players and services. We’ve now integrated muzi with last.fm, so if you are listening to music on muzi, it will automatically be added to your last.fm library.&lt;/p&gt;

&lt;p&gt;To, get started, you’d need to create an account on &lt;a href=&quot;https://www.last.fm/join&quot;&gt;last.fm&lt;/a&gt;. After you get an account, you can go to muzi, and click on the “Connect to last.fm” option:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi-lastfm.jpg&quot; alt=&quot;Screenshot of last.fm connecter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A click on that link would take you to last.fm authentication screen, where you’d be asked to give permissions to muzi to access your account.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi-lastm-auth.png&quot; alt=&quot;Last.FM Auth Screen&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Once you grant the permissions, you will be redirected to muzi, where a notification should notify you about your successfull last.fm integration. 
&lt;img src=&quot;/images/posts/muzi-lastfm-notification.png&quot; alt=&quot;Last.FM Notification on Muzi&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After this, every song you listen on muzi will be scrobbled back to last.fm and added to your library.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi-lastfm-recent.png&quot; alt=&quot;Last.FM Recent Tracks&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;live-tickr&quot;&gt;Live Tickr&lt;/h2&gt;

&lt;p&gt;We’ve always wanted to take muzi to the next level for music listeners and make it more social. Today, we’re taking the first step in this direction by launching our live tickr. The live-tickr is a continous stream of music that people are listening to right now. Just click on the tickr button in the top bar, and see who’s listening to what on muzi.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi-tickr.png&quot; alt=&quot;Muzi Live Tickr Screenshot&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;bug-fixes--new-songs&quot;&gt;Bug Fixes &amp;amp; New Songs&lt;/h2&gt;

&lt;p&gt;This update also brings lots of bug fixes, and an improved drag-drop experience. We’ve also updated hindi songs, so you can listen to all the latest hits from 2012 as well. We’ve also worked hard on keeping the songs permanently updated, so &lt;strong&gt;new Hindi Releases are automatically added to muzi within a day&lt;/strong&gt;. If you feel muzi to be lacking in its music collection, please let us know of your choice using the request feature in muzi.&lt;/p&gt;

&lt;p&gt;We are continously improving our services, and are always open to feedback. As always, you can reach us for feedback via &lt;a href=&quot;https://facebook.com/SDSLabs&quot;&gt;Facebook&lt;/a&gt;, &lt;a href=&quot;mailto:contact@sdslabs.co.in&quot;&gt;email&lt;/a&gt;, or our &lt;a href=&quot;https://sdslabs.co.in/feedback/?from=muzi&quot;&gt;Feedback&lt;/a&gt; page.&lt;/p&gt;

&lt;h2 id=&quot;technical-notes&quot;&gt;Technical Notes&lt;/h2&gt;

&lt;h3 id=&quot;slow-connection-mode-1&quot;&gt;Slow Connection Mode&lt;/h3&gt;

&lt;p&gt;For the technically inclined, we are converting the music on-the-fly using &lt;a href=&quot;https://lame.sourceforge.net/&quot;&gt;lame&lt;/a&gt; using the following configuration:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;--vbr-new (Use the new vbr algorithm, which is much faster)
-V 7 (convert at quality 7 on a scale of 0-9)
-f (fast mode conversion)
-B 96 (maximum bit-rate of 96 kbps)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So as to avoid audio degradation, only files larger than 3MB are converted, since they are  (usually) already at a low enough bit-rate. M4A files are converted using &lt;a href=&quot;https://www.audiocoding.com/faad2.html&quot;&gt;faad&lt;/a&gt; to wav, which is processed by lame. Additionally, the audio file is stripped of all id3 tags causing a large size reduction in some cases (such as where the file includes 2 large cover arts).&lt;/p&gt;

&lt;p&gt;We are aware that this on-the-fly conversion causes audio quality to go down substantially, but this is a trade-off we are leaving to the users. You can enable/disable this feature any time you want, and muzi will remember you choice for the next time.&lt;/p&gt;

&lt;h3 id=&quot;live-tickr-1&quot;&gt;Live Tickr&lt;/h3&gt;

&lt;p&gt;We are using a new HTML5 API called &lt;a href=&quot;https://www.w3.org/TR/eventsource/&quot;&gt;Event Source&lt;/a&gt;/Server-Sent Events. This allows us to recieve events from the server on a large number of devices without resorting to other alternatives like long-polling or websockets. This also means that users of some browsers(for instance Opera &amp;lt; 12) will be left out of this feature. We gracefully degrade in that case and remove the tickr button if that happens.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Solving the Internet Issue at IITR</title>
      <link>https://blog.sdslabs.co/2012/08/solving-the-internet-issue-at-iitr</link>
      <pubDate>Sun, 26 Aug 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/08/solving-the-internet-issue-at-iitr</guid>
      <description>&lt;p&gt;The issue with the ultra slow speeds of IITR internet, more specifically in the wifi bhawans, is something troubling the IITR ocupants since a lot of years. Over the years a lot of solutions have been proposed to this issue from router replacement to server replacement but so far there has been no change in the speed.&lt;/p&gt;

&lt;h2 id=&quot;current-situation&quot;&gt;Current Situation:&lt;/h2&gt;

&lt;p&gt;The network structure of IITR is somewhat like the one shown below (only for wifi hostels).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/network-1.png&quot; alt=&quot;Current Network&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As seen from the above figure, there are two primary bottlenecks in the network that reduce the speed.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Bhawan Server/gateway: Its an old P4 computer in most bhawans. It is the main culprit since all the traffic load passes through this. But is replacing it the only solution?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Access Points: Secondary Bottleneck. Replacement is the only solution in this case but the effect will be limited unless changes are also made at the higher level.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;solution-to-the-gateway-problem&quot;&gt;Solution to the Gateway Problem:&lt;/h2&gt;

&lt;p&gt;The first solution that everyone thinks of is replacing the bhawan server with a costly, bigger server but the simplest and better solution is often overlooked. There is a lot easier, better and long term solution with Rs 0/- cost for this problem. And the solution is not adding in anything but in removing what is already present. Surprised? Lets see..
The server performs three functions:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;NATing: This seperates the bhawan network from the institute central network.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;DHCP: Gives Ip address to all the users.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Security and Authentication: Secures the network so that unauthorized person may not enter it.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;the-solution&quot;&gt;The solution:&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Instead of NAT, create a VLAN for the bhawan in the central switch which essentially performs the first function of gateway. (a similar thing already exists for the LAN bhawans).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Remove the server from the middle of the connection between bhawan and central switch.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Attach the same server/switch to the internal bhawan network anywhere.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Continue perform DHCP and authentication using the same server.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In short, &lt;strong&gt;remove the server&lt;/strong&gt; from the connection between user &amp;amp; internet.&lt;/p&gt;

&lt;h2 id=&quot;new-network&quot;&gt;New Network:&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/network-2.png&quot; alt=&quot;Current Network&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;why-this-network-is-better&quot;&gt;Why this Network is better?&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;The first bottleneck i.e. the bhawan server is now out of main network between clients and internet.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It is only connected to once just for getting IP (DHCP), and for authentication. that takes approx. 2 minutes and only once for a new connection.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Since both of these are meager tasks, no processing is required and hence no need to purchase or replace the existing box.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It is actually better than buying a new box, because a new server no matter how fast it is will be slower than a simple wire between two points so removing it from network will increase the speed by maximum value.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Also, any server is bound to get old with time, and will need replacement causing further cost to institute while this is a permanent solution.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Interbhawan services like DC++ will start working which will sharply reduce the load on the institute internet and further increase the network speed.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;the-second-bottleneck&quot;&gt;The Second Bottleneck:&lt;/h2&gt;

&lt;p&gt;The Wifi routers/access points are the second bottleneck. The problem here is that they are very old (2005 model) and this era of technology things go old with 2-3 years, this is 8 years old. The solution to it is only replacement with latest access points which can be carried out one bhawan at a time.&lt;/p&gt;

&lt;h2 id=&quot;further-improvement&quot;&gt;Further Improvement:&lt;/h2&gt;

&lt;p&gt;Further a lot more additional things are required, which will improve the network even further (again no additional costs required) like VLANing and proper configuration of internal switches to reduce the broadcasting of packets, collisions and improve the speed and security. This is also required in the LAN bhawans to improve the speed further.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion:&lt;/h2&gt;

&lt;p&gt;The solution of the primary bottleneck which just requires some effort from the side of administration will solve a lot of problems. It is the easiest, cheapest and quickest solution. After that the purchase of new access points can be carried out which may take time because of the official procedures but till that the students will be able to get at least some improvement. I have personally submitted this method to the director (with help from SAC), as well as to the ISC and had a long heated discusssion with the network manager at ISC on the benefits of this structure. Though they were convinced that they should adopt this, I still don’t get the reason for its non adoption. Well, I had done my part in preparing and submitting the solution, I can even help the ISC people in implementng this and anyways implementation would take a day at max because no new equipment is needed.&lt;/p&gt;

&lt;h3 id=&quot;harshil-mathur&quot;&gt;–Harshil Mathur&lt;/h3&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Muzi Updates</title>
      <link>https://blog.sdslabs.co/2012/04/muzi-updates</link>
      <pubDate>Wed, 25 Apr 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/04/muzi-updates</guid>
      <description>&lt;p&gt;Muzi has been updated with lots more features. This has been hard work for the team, and we hope you enjoy them.&lt;/p&gt;

&lt;h2 id=&quot;radio&quot;&gt;Radio&lt;/h2&gt;

&lt;p&gt;Now you can listen to online radio from within Muzi. We have tried to make the experience as seamless and easy as possible. As of now the following radio streams are available:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Radio Mirchi&lt;/li&gt;
  &lt;li&gt;Retro Mirchi (Purani Jeans)&lt;/li&gt;
  &lt;li&gt;Radio City&lt;/li&gt;
  &lt;li&gt;Bombay Beats&lt;/li&gt;
  &lt;li&gt;Capital FM&lt;/li&gt;
  &lt;li&gt;Virgin Radio&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi-radio.png&quot; alt=&quot;Muzi Radio Choosing Screen&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Along with this, we have also integrated &lt;em&gt;Campus Beats&lt;/em&gt; Radio as well.&lt;/p&gt;

&lt;p&gt;To start using the radio feature, just click on the Radio button in the topbar, choose a radio, and click on whatever you want to listen to.&lt;/p&gt;

&lt;h2 id=&quot;more-updates&quot;&gt;More Updates&lt;/h2&gt;

&lt;p&gt;We have also updated our Hindi songs collection, and added album arts for all Hindi albums. A major color scheme change means that muzi is now easier to use than ever, with background album arts for various artists. Try clicking on “Avril Lavigne” to see it for yourself.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi-floyd.png&quot; alt=&quot;Pink Floyd&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi-demi.png&quot; alt=&quot;Demi Lovato&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/muzi-fm.png&quot; alt=&quot;Fort Minor&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As always, you can reach us for feedback via &lt;a href=&quot;https://facebook.com/SDSLabs&quot;&gt;Facebook&lt;/a&gt;, &lt;a href=&quot;mailto:contact@sdslabs.co.in&quot;&gt;email&lt;/a&gt;, or our &lt;a href=&quot;https://sdslabs.co.in/feedback&quot;&gt;Feedback&lt;/a&gt; page.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>FilePanda new version launched</title>
      <link>https://blog.sdslabs.co/2012/04/filepanda-new-version-launch</link>
      <pubDate>Fri, 13 Apr 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/04/filepanda-new-version-launch</guid>
      <description>&lt;p&gt;We are proud to announce the launch of the new version of &lt;a href=&quot;https://filepanda.sdslabs.co.in&quot;&gt;Filepanda&lt;/a&gt;. This version brings a cleaner, modern layout to the forefront.&lt;/p&gt;

&lt;p&gt;For this version, the most important goals were a better, faster UI, and an easier experience for the user. To this end, we’ve updated our homepage to show the top downloaded softwares for each category.&lt;/p&gt;

&lt;p&gt;This version also rewrote a major version of the backend, fixing a few bugs in the process. If you had faced problems downloading certain softwares earlier, they have now been fixed.&lt;/p&gt;

&lt;p&gt;The online version of filepanda has also been updated with the current version as well. You can browse the online version here.&lt;/p&gt;

&lt;p&gt;As always, we welcome all feedback. Please send us your thoughts at our &lt;a href=&quot;https://sdslabs.co.in/feedback/&quot;&gt;feedback page&lt;/a&gt;, by &lt;a href=&quot;contact@sdslabs.co.in&quot;&gt;email&lt;/a&gt;, or &lt;a href=&quot;https://facebook.com/messages/SDSLabs&quot;&gt;via Facebook&lt;/a&gt;. We shall be delighted to hear from you.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/fp-optimistic-panda.png&quot; alt=&quot;Optimistic Panda&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;pics-from-the-new-update&quot;&gt;Pics from the new update&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/fp-header.png&quot; alt=&quot;New header&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/fp-categories.png&quot; alt=&quot;Categories on home page&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/fp-listing.png&quot; alt=&quot;Software Listings&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/fp-errorpage.png&quot; alt=&quot;Error page&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/fp-software-info.png&quot; alt=&quot;Software Info Page&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/fp-download-button.png&quot; alt=&quot;Software Download Button&quot; /&gt;&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Filepanda and Live Streaming</title>
      <link>https://blog.sdslabs.co/2012/02/filepanda-and-live-streaming</link>
      <pubDate>Sat, 18 Feb 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/02/filepanda-and-live-streaming</guid>
      <description>&lt;p&gt;We’ve been busy here at SDSLabs. The last week was marked by two new launches. Filepanda was launched on the internet  on the 6th and live streaming on the sdslabs portal was launched on the 13th.&lt;/p&gt;

&lt;h2 id=&quot;filepanda&quot;&gt;Filepanda&lt;/h2&gt;

&lt;p&gt;Filepanda is now on the internet. It can be accessed at &lt;a href=&quot;https://filepanda.sdslabs.co&quot;&gt;https://filepanda.sdslabs.co&lt;/a&gt;. from any computer outside the campus.&lt;br /&gt;
Filepanda is the SDSLabs self updating software repository. ‘Self Updating’ because it’s just that.&lt;br /&gt;
Filepanda automatically updates itself. Every piece of software on filepanda is the always the latest version. So next time you find yourself in need of an anti virus or a new media player, a quick search through the repository should give you the goods.&lt;/p&gt;

&lt;h2 id=&quot;live-streaming&quot;&gt;Live Streaming&lt;/h2&gt;

&lt;p&gt;Tired of going to the TV room or UG Club to watch Sachin bat? Wanna grab the united game right from your room? Well we hear you. SDSLabs launches live streaming using which you can grab any live action from the comfort(well somewhat :P) of your hostel room.&lt;/p&gt;

&lt;p&gt;Live streaming can be accessed at &lt;a href=&quot;https://sdslabs.co.in/live/&quot;&gt;https://sdslabs.co.in/live/&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>The final recruitment list for 1st year (2012)</title>
      <link>https://blog.sdslabs.co/2012/01/recruitment-final-result</link>
      <pubDate>Mon, 09 Jan 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/01/recruitment-final-result</guid>
      <description>&lt;p&gt;Congratulations to everyone who got in. After checking the examination papers of 196 candidates, we were overwhelmed by the amount of talent and aptitude these people brought on board. If we did not select you, it was because we had limited vacancies, not because we didn’t like you. Each of the rest was as equally likely and capable be to be selected. And each time we took someone’s name off the list, we were stricken with guilt.&lt;/p&gt;

&lt;h2 id=&quot;developers&quot;&gt;Developers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Abhishek Das&lt;/li&gt;
  &lt;li&gt;Shagun Sodhani&lt;/li&gt;
  &lt;li&gt;Shashank Mehta&lt;/li&gt;
  &lt;li&gt;Durgesh Sudhar&lt;/li&gt;
  &lt;li&gt;Himanshu Chawla&lt;/li&gt;
  &lt;li&gt;Richa Jain&lt;/li&gt;
  &lt;li&gt;Jayant Jain&lt;/li&gt;
  &lt;li&gt;Siva S.V&lt;/li&gt;
  &lt;li&gt;Nitish Sharma&lt;/li&gt;
  &lt;li&gt;Aarti Dwivedi&lt;/li&gt;
  &lt;li&gt;Mannat Gupta&lt;/li&gt;
  &lt;li&gt;Rushil Nagda&lt;/li&gt;
  &lt;li&gt;Ravi Kishore&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;designers&quot;&gt;Designers&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Apoorva Mudgal&lt;/li&gt;
  &lt;li&gt;Chetty Arun&lt;/li&gt;
  &lt;li&gt;Saket Sarupria&lt;/li&gt;
  &lt;li&gt;Nupur&lt;/li&gt;
  &lt;li&gt;Jitin Singla&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The introductory meeting will be held at 9th January 2012 at SDSLabs, Hobbies Club.&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Recruitment Shortlist (First Year)</title>
      <link>https://blog.sdslabs.co/2012/01/recruitment-shortlist</link>
      <pubDate>Sun, 08 Jan 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/01/recruitment-shortlist</guid>
      <description>&lt;p&gt;The following students have been shortlisted for selections. The interview slots are given below as well. Please come 15 minutes before your allotted time. The venue for all interviews is &lt;strong&gt;SDSLabs, Hobbies Club&lt;/strong&gt;.&lt;/p&gt;

&lt;h3 id=&quot;programming-interviews&quot;&gt;Programming Interviews&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Abhishek Das - 9:00am&lt;/li&gt;
  &lt;li&gt;Adurv Surya Kiran - 9:20am&lt;/li&gt;
  &lt;li&gt;Aman Mittal - 9:40am&lt;/li&gt;
  &lt;li&gt;Archit Agarwal - 10:00am&lt;/li&gt;
  &lt;li&gt;Aarti Kumari Dwivedi - 10:20am&lt;/li&gt;
  &lt;li&gt;Areeb Usmani - 10:40am&lt;/li&gt;
  &lt;li&gt;Arpit Jain - 11:00am&lt;/li&gt;
  &lt;li&gt;Avijit Singh Yadav - 11:20am&lt;/li&gt;
  &lt;li&gt;Avinash Modi - 11:40am&lt;/li&gt;
  &lt;li&gt;Shashank Mehta - 12:00am&lt;/li&gt;
  &lt;li&gt;Shagun Sodhani - 12:20pm&lt;/li&gt;
  &lt;li&gt;Saurabh Suman - 12:40pm&lt;/li&gt;
  &lt;li&gt;Akshita Sukhlecha - 14:00pm&lt;/li&gt;
  &lt;li&gt;Chamandeep Singh - 14:20pm&lt;/li&gt;
  &lt;li&gt;Durgesh Suthar - 14:40pm&lt;/li&gt;
  &lt;li&gt;Shruti Lal - 15:00pm&lt;/li&gt;
  &lt;li&gt;Sameer G Shanoy- 15:20pm&lt;/li&gt;
  &lt;li&gt;Neha agrawal - 15:40pm&lt;/li&gt;
  &lt;li&gt;Himanshu Chawla - 16:00pm&lt;/li&gt;
  &lt;li&gt;Jayant Jain - 16:20pm&lt;/li&gt;
  &lt;li&gt;Richa Jain - 16:40pm&lt;/li&gt;
  &lt;li&gt;G Praneeth Reddy - 17:00pm&lt;/li&gt;
  &lt;li&gt;Vishu Goyal - 17:20pm&lt;/li&gt;
  &lt;li&gt;Suyash - 17:40pm&lt;/li&gt;
  &lt;li&gt;Sukhbarshan Singh Sani - 18:00pm&lt;/li&gt;
  &lt;li&gt;Siva Samhitvaddiparth - 18:20pm&lt;/li&gt;
  &lt;li&gt;Mannat Gupta - 19:00pm&lt;/li&gt;
  &lt;li&gt;Manush Gupta - 19:20pm&lt;/li&gt;
  &lt;li&gt;Mohammad Aqib - 19:40pm&lt;/li&gt;
  &lt;li&gt;Nitish Sharma - 20:00pm&lt;/li&gt;
  &lt;li&gt;Rohit Jangid - 20:20pm&lt;/li&gt;
  &lt;li&gt;Ravi Kishore R - 20:40pm&lt;/li&gt;
  &lt;li&gt;Rushil Nagda - 21:00pm&lt;/li&gt;
  &lt;li&gt;Sahil Singhal - 21:20pm&lt;/li&gt;
  &lt;li&gt;Harshdeep singh - 21:40pm&lt;/li&gt;
  &lt;li&gt;Kamaldeep Singh Arora - 22:00pm&lt;/li&gt;
  &lt;li&gt;Akash Agarwal - 22:20pm&lt;/li&gt;
  &lt;li&gt;Kaushtabh Kulkarni - 22:40pm&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;design-interviews&quot;&gt;Design Interviews&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Divya Khandelwal - 12:00am&lt;/li&gt;
  &lt;li&gt;Apoorva Mudgal - 12:30am&lt;/li&gt;
  &lt;li&gt;Itisha Jain - 13:00am&lt;/li&gt;
  &lt;li&gt;Saket Sarupria - 14:00pm&lt;/li&gt;
  &lt;li&gt;Rahul Meena - 14:30pm&lt;/li&gt;
  &lt;li&gt;Ishaan Bains - 15:00pm&lt;/li&gt;
  &lt;li&gt;Jitin Singla - 15:30pm&lt;/li&gt;
  &lt;li&gt;Chetty Arun - 16:00pm&lt;/li&gt;
  &lt;li&gt;Priyajeet Dev - 16:30pm&lt;/li&gt;
  &lt;li&gt;Mohit Tanwar - 17:00pm&lt;/li&gt;
  &lt;li&gt;Atinder Pal Singh - 17:30pm&lt;/li&gt;
  &lt;li&gt;Ujjwal Vasisht - 18:00pm&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In case you think you deserve to be one of us and your name is missing from the above list, please send us a mail at &lt;a href=&quot;mailto:contact@sdslabs.co.in&quot;&gt;contact@sdslabs.co.in&lt;/a&gt; answering “Why you’d like to join SDSLabs?”&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>On working at SDSLabs(1)</title>
      <link>https://blog.sdslabs.co/2012/01/work-at-the-sds</link>
      <pubDate>Wed, 04 Jan 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/01/work-at-the-sds</guid>
      <description>&lt;p&gt;The SDSLabs homepage carries a nice  “Goes Recruiting” ribbon near the top bar this week. Clicking the overlaid image shows you the detailed recruitment poster. As the first years ready themselves for the recruitment process, I thought it fit to write about the work, culture and work-culture of our lab, located on the right wing (no pun intended) of the hobbies club.&lt;/p&gt;

&lt;p&gt;From the small, clumsy room that once was near the Cogni office, Hobbies Club, SDSLabs, with Shobhit Sir to guide, has come a long way, in an admirably short span of one year.&lt;/p&gt;

&lt;h3 id=&quot;the-work&quot;&gt;The Work&lt;/h3&gt;

&lt;p&gt;The best part, doubtless, is that you get to work on anything that captures your fancy. As newbies, we were first introduced to each of the projects that were then underway and that you now can see, on the homepage and asked to choose. Nothing is appreciated better than having your own project ideas, in which case everyone in the team devotes their time for them(the ideas) to achieve fruition.
We believe in an open, “no-rules” environment to enhance productivity.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;yes, everything you say is swell, but what is it that you do?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;what-work-and-how&quot;&gt;What work and how&lt;/h3&gt;

&lt;p&gt;Broadly, Web development. More broadly, mobile and web development and Design. In the process, however, the work fans out to different areas. The lab is never the pressure pan with little leeway for errors, nor does it stagnate and radiate leisure. On one day, everyone is coding away, while simultaneously enjoying “yerushalayim shel zahav” on surround speakers and on another we are all playing “crux”, the IEEE online treasure hunt.&lt;/p&gt;

&lt;p&gt;Another ordinary day ends in a few people pulling off an all-nighter with some issues filed up in redmine (PMS), as the agenda. Development Marathons with coffee-breaks, tons of geek-speak and the normal banter, several lectures and the perpetual availability of workplace mentors make you learn a lot of things that is hard to come by,when you are on your own.&lt;/p&gt;

&lt;h4 id=&quot;echo&quot;&gt;Echo&lt;/h4&gt;

&lt;p&gt;Echo, the brainchild of Ishan Sir(CS 2006-10 Batch) started developing first in java, over one year ago. People at SDSLabs could be the subject of a separate post, and without digressing much here, I would say that Ishan Sir is one among those I will always be honoured to have known. The first version of Echo that you see, on the home page has a backend written in scala and uses some of the very latest from the world of web technologies. And even as of now,many ideas are still in the process of gestation.&lt;/p&gt;

&lt;p&gt;Echo is actually a recursive acronym in which Creed(C) is the recommendation engine, H(Hash) and O(onyx) are the names of the hashed storage on a dfs and the indexer and searcher, respectively. I joined team Echo soon after recruitment in the second semester and have seen its development since. Almost all of it, including refactoring, was done by Ishan Sir and Neeraj, and most of it in November last year and I, for one, managed to learn a thing or two.&lt;/p&gt;

&lt;p&gt;There is an awful lot to learn when you delve deep into anything and the web/computers/technology is no exception. In the jump from java to scala, in the addition of sinatra as the middleware, in using lucene and reading up clustering algorithms, I was taught, some of it in vain, about efficient programming practices, a little about scalable architecture, natural language processing and of course, other things like using github and hordes of other open source software.&lt;/p&gt;

&lt;h3 id=&quot;finally-why&quot;&gt;Finally, &lt;strong&gt;Why&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;The point is that, every visit to the lab, teaches you one thing or the other. With the likes of Abhay around, there is a continuous passing-on of a range of diverse information, in a way you would like and appreciate. Just eavesdropping on nerdy exchanges will teach you how to set a proxy on the terminal or how to run parallels on a mac, what to expect from windows 8, which is the best editor and for what, what Linus Torvalds does on github and such like.&lt;/p&gt;

&lt;h3 id=&quot;are-you-game&quot;&gt;Are you game?&lt;/h3&gt;

&lt;p&gt;If you are in your first year and do value this kind of a learning experience, do participate in the recruitment process, because at SDSLabs, you get to:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;have fun coding and ask geeks for help, when stuck.&lt;/li&gt;
  &lt;li&gt;receive tech updates for free!&lt;/li&gt;
  &lt;li&gt;learn &lt;strong&gt;how stuff works&lt;/strong&gt; ,in a free environment&lt;/li&gt;
  &lt;li&gt;think on the white board,watch webinars on a big plasma screen and look at a copy of &lt;em&gt;Jonathan Livingston Seagull&lt;/em&gt; for inspiration.&lt;/li&gt;
  &lt;li&gt;play with  cruft like old monitors and motherboards, to make useful things like &lt;em&gt;skynet&lt;/em&gt; and much more!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To get started, visit &lt;a href=&quot;https://sdslabs.co.in/recruit/&quot;&gt;https://sdslabs.co.in/recruit/&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;Nisha C ,Second Year,Mech&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Muzi Development Blog Post</title>
      <link>https://blog.sdslabs.co/2012/01/muzi-development-post</link>
      <pubDate>Mon, 02 Jan 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/01/muzi-development-post</guid>
      <description>&lt;div&gt;
&lt;style&gt;
/**
  This is for making large images in this post come within the white area.
**/
img{
    max-width:800px;
}
&lt;/style&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://sdslabs.co.in/muzi/&quot;&gt;Muzi&lt;/a&gt; is an online music player application developed by Team SDSLabs. This blog post will go into the development of the application.&lt;/p&gt;

&lt;p&gt;The first ray of light that the application’s development saw was in January 2011, with a few mails being exchanged in our Google Group regarding the lack of an online music player that could offer the same experience as a Desktop Player. A few core features were identified, including :&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Ability to browse albums via any categorization (including Albums, Artists, Genre and Year)&lt;/li&gt;
  &lt;li&gt;Easy searching of songs.&lt;/li&gt;
  &lt;li&gt;Well tagged songs.&lt;/li&gt;
  &lt;li&gt;Use of Album Artists instead of Track Artists&lt;/li&gt;
  &lt;li&gt;Easy and usable interface, which reminds people of a desktop player.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Whenever in doubt, we looked at three different desktop players - &lt;a href=&quot;https://www.zune.net/en-US/products/software/default.htm&quot;&gt;Zune&lt;/a&gt;, &lt;a href=&quot;https://windows.microsoft.com/en-IN/windows/products/windows-media-player&quot;&gt;Windows Media Player&lt;/a&gt;, and &lt;a href=&quot;https://www.apple.com/itunes/&quot;&gt;iTunes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A few mockups from early February :&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://sdslabs.co.in/muzi/mockup/Playlist.png&quot; alt=&quot;Muzi Playlist View inspired from Zune&quot; /&gt;
&lt;img src=&quot;https://sdslabs.co.in/muzi/mockup/video.png&quot; alt=&quot;Video View&quot; /&gt;
&lt;img src=&quot;https://sdslabs.co.in/muzi/mockup/muzi.png&quot; alt=&quot;Default View&quot; /&gt;
&lt;img src=&quot;https://sdslabs.co.in/muzi/mockup/muzi2.png&quot; alt=&quot;Another Default View&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The design was iterated several times, leading to the design that you see today.
&lt;!-- Moved the images to the blog itself from minus.com as it was getting blocked for hotlinking--&gt;
&lt;img src=&quot;/images/posts/dbt7dM.png&quot; alt=&quot;Quite similar Designs&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Several other iterations were discussed, such as this one, which was ultimately ruled out as being too complicated :&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/db2QU8.png&quot; alt=&quot;Difficult to use play/pause&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A current pic of the application is given below as reference.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-snc7/388548_281184221928070_182484805131346_835810_1854827723_n.jpg&quot; alt=&quot;Current Version&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The application was written using &lt;a href=&quot;https://jquery.com&quot;&gt;JQuery&lt;/a&gt; for easier Javascript syntax and several plugins, &lt;a href=&quot;https://www.schillmania.com/projects/soundmanager2/&quot;&gt;SoundManager 2&lt;/a&gt; for music playing capabilities. We also worked on using HTML5 Canvas for visualizations, but ultimately dropped it for the current version, as it was slowing down muzi. We had, from the very beginning tried to keep muzi as fast as possible. In fact, we were adamant about not adding JQuery until later in the project, when it became a necessity.&lt;/p&gt;

&lt;p&gt;For future developers, here are a few tips :&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Don’t think that your project will be done in a weekend. Any project of good size and scale takes time to mature, and takes up much more time than you can possibly estimate correctly.&lt;/li&gt;
  &lt;li&gt;JQuery makes Javascript easy. And better.&lt;/li&gt;
  &lt;li&gt;Don’t be afraid of using Plugins and 3rd party code. They are far more tested than anything you can cook up in a shorter amount of time.&lt;/li&gt;
  &lt;li&gt;Even though we did not use it (we were not aware at that time), I would highly recommend using &lt;a href=&quot;https://documentcloud.github.com/backbone/&quot;&gt;Backbone.js&lt;/a&gt;, &lt;a href=&quot;https://documentcloud.github.com/underscore/&quot;&gt;Underscore&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Having a simpler experience with fewer features is better than having a feature bloat with confused users.&lt;/li&gt;
  &lt;li&gt;Software Development is an iterative process. Treat it as such. Work at one feature at a time, test it and then move to the next one. For beginners, I would recommend reading &lt;a href=&quot;https://headfirstlabs.com/books/hfsd/&quot;&gt;Head First Software Development&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A few fun facts about Muzi :&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Major keyboard controls from VLC work in Muzi as well. Here’s a list of the most common ones :&lt;/p&gt;

    &lt;p&gt;a. Ctrl+Up/Down to increase/descrease Volume. Works even without the control key.&lt;/p&gt;

    &lt;p&gt;b. Left/Right changes the current track.&lt;/p&gt;

    &lt;p&gt;c. Shift+Left/Right skips the current playing track&lt;/p&gt;

    &lt;p&gt;d. &lt;em&gt;m&lt;/em&gt; mutes the current track, while &lt;em&gt;space&lt;/em&gt; pauses/plays it&lt;/p&gt;

    &lt;p&gt;e. The &lt;em&gt;home&lt;/em&gt; key takes you to the default view of muzi&lt;/p&gt;

    &lt;p&gt;f. &lt;em&gt;Ctrl+s&lt;/em&gt; takes your input to the search box immediately&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Two Developers worked on this application primarily with everyone else open to contributions. Input was regularly recieved from the entire Team and went into deciding major portions of the app.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Muzi uses latest web technologies, including HTML5 and CSS3, leading to its inability to work in older browsers. For that, we apologize to users with a smile and ask them to get a better browser.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For any queries regarding muzi, or SDSLabs in general, you can always contact us at &lt;a href=&quot;mailto:contact@sdslabs.co.in&quot;&gt;contact@sdslabs.co.in&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Happy New Year</title>
      <link>https://blog.sdslabs.co/2012/01/happy-new-year</link>
      <pubDate>Sun, 01 Jan 2012 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2012/01/happy-new-year</guid>
      <description>&lt;p&gt;Team SDSLabs wishes all our readers a very Happy New Year. May this year bring lots of happiness and joy in your lives.&lt;/p&gt;

&lt;p&gt;Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>To Launch and Beyond</title>
      <link>https://blog.sdslabs.co/2011/11/launch-and-beyond</link>
      <pubDate>Fri, 11 Nov 2011 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2011/11/launch-and-beyond</guid>
      <description>&lt;p&gt;Hello everyone! Change is the only constant in this world. To quote Issac Asimov, “The only constant is change, continuing change, inevitable change, that is the dominant factor in society today” and staying true to the words, now, IIT Roorkee is about to witness a defining and epic change with the introduction of the SDSLabs portal. To those who are not yet familiar with SDSLabs, we are a small group under Hobbies Club with an aim to improve the technical level of institute multifold.
&lt;!-- -**-END-**- --&gt;
It has been more than a year since the formation of SDSLabs and the journey since then has been nothing short of incredible. Last year in  October we started our journey with tiny but steady steps. And since then, we have organized countless lectures and workshops which have constantly witnessed anywhere between 25 to 50 students each and every time, a clear sign of the zeal of learning in the students of IIT-R.&lt;/p&gt;

&lt;p&gt;Last November, we launched Filepanda sans much fanfare. In March this year, we displayed India’s World Cup final matches live on the very big screen and rejoiced with all of you in the victory of Indian cricket team. And now, this time, we bring to you our next and biggest offering to date, a plethora of intranet applications. We have worked hard and worked fast, incessantly striving to produce awesome results, as you are going to witness now.&lt;/p&gt;

&lt;p&gt;The main aim of this launch is to ease the campus life of students in IIT Roorkee and make their campus experience even more cherishing while establishing our intranet presence in the campus. We aim to increase the interaction between students exponentially as it is our fundamental belief that intranet is the best medium for student interaction and this launch is a monumental step in that direction.&lt;/p&gt;

&lt;p&gt;We are also focusing on applications which will help in improving programming capabilities of students at IIT Roorkee thereby directly helping them in improving their coding skills and hence, helping them in placement at innumerable software companies visiting the campus. Also, no service can be complete in nature without a serious fun element in it and friends, be assured, for  we are not going to disappoint you. For we bring to you some excellent applications that serve this very purpose. Moreover, if searching for ebooks proved to be a pain in the past, then we have got just the right application for you! On top of all, we are also launching the first completely free group SMS service on campus to improve the communication between members of a particular group or society, so this time you don’t miss anything happening around you in the campus.&lt;/p&gt;

&lt;p&gt;Throughout the course of the development, we have always remained faithful to our motto “iDream, iCode, iInnovate”, which has not only served as a guide through the entire process but has been present at the very foundation of all our working practices, our working ideals, our working beliefs.&lt;/p&gt;

&lt;p&gt;And finally the moment has arrived,so gear up, and fasten and your seatbelts, because it’s time to Blast OFF!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Recruitment Results for 2nd Year [Programmers]</title>
      <link>https://blog.sdslabs.co/2011/09/recruitment-results-for-second-year-programmers</link>
      <pubDate>Mon, 19 Sep 2011 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2011/09/recruitment-results-for-second-year-programmers</guid>
      <description>&lt;p&gt;The following students have been selected after the interviews :&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Priyanshi Goyal (ECE)&lt;/li&gt;
  &lt;li&gt;Soumitr Pandey (CSE)&lt;/li&gt;
  &lt;li&gt;Rohan Arora (GT)
&lt;!-- -**-END-**- --&gt;
For the list of selected designers, please see our previous post.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With more than 50 applications coming in from second year alone, it was very difficult for us to shortlist people. The shortlisting criteria was on what people had written down in their application form. Few people who were shortlisted were interviewed later as well; but we only had room enough for a few.&lt;/p&gt;

&lt;p&gt;If your name is not on the list, please do not get disheartened, continue what you are doing. If your passion is programming, don’t give up.
Learning is a continuous process, and it never stops as such. If you are still willing to learn, we are here to help you whenever you need it. Software Development Section, as an open proficiency under Hobbies Club tends to all such queries. Just join the google-group for this year. The group is open to all, whether or not you are a proficiency holder.&lt;/p&gt;

&lt;p&gt;Congratulations to everyone who got selected.&lt;/p&gt;

&lt;p&gt;Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>SDSLabs Recruitment Results</title>
      <link>https://blog.sdslabs.co/2011/09/sdslabs-recruitment-results-2011</link>
      <pubDate>Fri, 16 Sep 2011 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2011/09/sdslabs-recruitment-results-2011</guid>
      <description>&lt;p&gt;The recruitment results for second year are out. Congratulations to all the designers who got selected.&lt;/p&gt;

&lt;p&gt;The following &lt;strong&gt;designers&lt;/strong&gt; have been recruited:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Nitesh Kumar (MSc. Maths)&lt;/li&gt;
  &lt;li&gt;Mayur Karodia (Archi)&lt;/li&gt;
  &lt;li&gt;Vignesh (P&amp;amp;I)&lt;/li&gt;
  &lt;li&gt;Mohit Kumar (CSE)
&lt;!-- -**-END-**- --&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For the &lt;strong&gt;Programming&lt;/strong&gt; interviews, the following candidates have been shortlisted. The interview date is 17th Sep (Saturday).&lt;/p&gt;

&lt;p&gt;Please arrive 10-15 minutes before your slot. There was an error in the time slots earlier. It only applies to Gaurav Singh. Please come in time.&lt;/p&gt;

&lt;p&gt;In case you did not make the shortlist, it was because you did not fill sufficient information in the application form. If you want your application to be reviewed again, please mail us by Sept. 17 midnight at &lt;a href=&quot;mailto:contact@sdslabs.co.in&quot;&gt;contact@sdslabs.co.in&lt;/a&gt;. Please state your reason, past experience, work done in the mail.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Our recruitment experience</title>
      <link>https://blog.sdslabs.co/2011/09/recruitment-experience</link>
      <pubDate>Thu, 15 Sep 2011 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2011/09/recruitment-experience</guid>
      <description>&lt;p&gt;As all of the readers of this blog (if there are any) will know, SDSLabs had a core team recruitment of first yearites recently. There were altogether 150 people who took our written test, which we had designed to test mental aptitude, coding, HTML, and design appreciation (and some other things as well). The test was well received and we shortlisted 32 people, some of which had chipped in really cool answers. Try this one for example:&lt;/p&gt;

&lt;p&gt;How can you open a link in a new browser window?&lt;/p&gt;

&lt;p&gt;The most amusing answer we received was this:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Right click on the link, and click “Open in new window”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unfortunately, we couldn’t give the person involved any extra marks for that, but that was some out of the box thinking, especially considering that the question was preceded by 6 HTML questions, which demanded you to write code.&lt;/p&gt;

&lt;p&gt;And the blank space question got in some more amusing responses, ranging from people who had told us why we should select them to people who had written cryptic math equations or a puzzle for us to solve, or simple batch file scripts, and even a paradox (VOID, we thought it might have been better as void* though). Nonetheless, we tried to keep ourselves objective and formed no prejudices about any of the shortlisted candidates.&lt;/p&gt;

&lt;p&gt;And then we had to face the actual interviews. There’s only one way to describe them. It was pretty much like falling in love with IIT again. OK, that was not so apt, but we were blinded by the sheer exposure to pure awesomeness (Po’s words, not mine).&lt;/p&gt;

&lt;p&gt;Like every other section at IITR, we had a lengthy discussion and debate about our hiring procedure for girls. Despite so many people asking us, we would never have gone ahead &amp;amp; just said yes to all of them. And by probabilities, we thought there might be 1 or maybe 2 who will fit the bill. But we were to be proven wrong by a girl who gave us an almost bug-free recursive shuffle program in 5 minutes, and another who explained to us what a chicken is in OOP terms so brilliantly. And even though we had decided that this test was meant for programmers, we found someone with such a sharp understanding of design principles that we had to take her.&lt;/p&gt;

&lt;p&gt;And other than these we found someone who had never heard of a database, but gave us an awesome idea combined with an equivalently good db design. There were people who wrote their code as they thought it, and yet even more who gave us some really cool algorithms to do even cooler stuff.&lt;/p&gt;

&lt;p&gt;So all in all, we were surrounded all day and night (from 1100-0100) by ideas, codes, problems, questions, and algorithms. The results will be out soon (we got delayed due to a minor totalling problem with one person, it seems they happen everywhere). And even now, our minds are so full of ideas that we can’t wait to sit with these people and work them out. We only had a small opening, since we want to remain a closed knit group (we’re still in single digits if you want to know). And not choosing any of the rest was a tough decision, believe me. If we had a single more opening, each one of the rest would have been equally apt to get in. And each time we took someone’s name off the list, we were stricken with guilt. There are so many with such great potential, and yet there’s no one to guide them. And that is exactly why we have lectures @SDS. If you want to learn something, come to us, we are more than happy to help you any time. Don’t lose hope if we didn’t select you. It was because we don’t have enough space, not because we didn’t like you.&lt;/p&gt;

&lt;p&gt;In the following days, we will be redefining ourselves and enter a new era. And we have Shobhit Sir to thank for that. Thanks to Sagar for managing the entire recruitment, and Ankush sir for the power boosts and pep talks, just when we needed them. Also we believe we will be challenged to our limits by such a brilliant ensemble. We’ll be looking forward to working with them this semester in high hopes.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Team SDSLabs&lt;/p&gt;

&lt;p&gt;(The final list of selected candidates will be uploaded by 22:15 tonight)&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Recruitment Results for 1st Year</title>
      <link>https://blog.sdslabs.co/2011/09/recruitment-result</link>
      <pubDate>Sat, 10 Sep 2011 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2011/09/recruitment-result</guid>
      <description>&lt;p&gt;After much heartache and postponing of results, this is the final list. If you’ve not been selected, please don’t be disheartened. If we did not select you, it was because we had limited vacancies, not because we didn’t like you. Each of the rest was as equally likely and capable be to be selected. And each time we took someone’s name off the list, we were stricken with guilt. &lt;!-- -**-END-**- --&gt;&lt;/p&gt;

&lt;p&gt;There are so many with such great potential, and yet there’s no one to guide them. And that is exactly why we have lectures @sds. If you want to learn something, come to us, we are more than happy to help you any time.&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Team SDSLabs&lt;/strong&gt;&lt;/p&gt;

&lt;h1 id=&quot;sdslabs-final-selection-list&quot;&gt;SDSLabs Final Selection List&lt;/h1&gt;

&lt;ol&gt;
  &lt;li&gt;Aditya Garg (Civil)&lt;/li&gt;
  &lt;li&gt;Ashutosh Singh (CSI)&lt;/li&gt;
  &lt;li&gt;Ashwini Khare (Civil)&lt;/li&gt;
  &lt;li&gt;Divyanshu Upreti (App.Maths)&lt;/li&gt;
  &lt;li&gt;G. Sethu (Electrical)&lt;/li&gt;
  &lt;li&gt;Nisha C. (BT)&lt;/li&gt;
  &lt;li&gt;S.Priya App.(Maths)&lt;/li&gt;
  &lt;li&gt;Shreya Bhardwaj (Archi)&lt;/li&gt;
  &lt;li&gt;Shubham Garg (ECE)&lt;/li&gt;
  &lt;li&gt;Siddharth Maheshwari (CSE)&lt;/li&gt;
  &lt;li&gt;Tarachandani Sukun Ramesh (Electrical Dual)&lt;/li&gt;
  &lt;li&gt;Vishal Mittal (CSE)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The first SDSLabs meeting will be held tomorrow (11/01/11) at 6:30 pm.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Recruitment Shortlist 1st Year</title>
      <link>https://blog.sdslabs.co/2011/01/sdslabs-shortlist</link>
      <pubDate>Sat, 08 Jan 2011 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2011/01/sdslabs-shortlist</guid>
      <description>&lt;p&gt;Finally after after a night out and lots of head-banging over the preparation of shortlist, we have finally reached a consensus over the students to be interviewed. The following is the list of the shortlisted candidates along with their time slots…. Please arrive well before time.&lt;/p&gt;

&lt;!-- -**-END-**- --&gt;

&lt;p&gt;But before peeking a look before we want to thank everyone who came to give the test. The enthusiasm of students for learning programming and coding stuff has really surprised us and further motivates us in our zeal to promote computational activities in campus. So while if any of you might not have been selected, don’t lose heart!!! Feel free to approach us with any doubt you might have in this field.&lt;/p&gt;

&lt;p&gt;We will try our best to answer your queries. Plus as is the purpose of Software Development Section in Hobbies Club, we will carry on from where we left last semester and continue organizing lectures on broad ranging topics.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Thanks
Team SDSLabs&lt;/p&gt;

&lt;p&gt;You can download the list &lt;a href=&quot;#&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt; : Venue for interviews is Committee Room, Hobbies Club.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>We want you to join us</title>
      <link>https://blog.sdslabs.co/2011/01/recruit</link>
      <pubDate>Wed, 05 Jan 2011 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2011/01/recruit</guid>
      <description>&lt;p&gt;Recruitment Posters available &lt;a href=&quot;https://sdslabs.co.in/recruit&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;First of all, Happy New year wishes to all of you. SDSLabs has had a great first semester, with quite a few services and applications under our belt already. But what we’ve done so far is tiny compared to our plans for the future. And in our planning for this, we had envisioned a core team of our section (web-design). And now, we have decided to finally recruit first-yearites for this core-group.&lt;/p&gt;

&lt;!-- -**-END-**- --&gt;

&lt;p&gt;This core group will be responsible for most of our work; including but not limited to our intranet services, maintaining our Internet presence, and working on outsourced projects as well. Even though our section has been in existence for a long time, but it is only recently that we have been seeing some real progress (in terms of infrastructure, funding, and other administrative help).&lt;/p&gt;

&lt;p&gt;Recruitments for 1st year will be done on the basis of a written test, and a follow up interview, quite similar to what the Programming &amp;amp; Algorithm Group has already done. The written test will include questions in programming, logic, and web design (html/css). We need people who can think on their feet, work out logical problems in their head, &amp;amp; enjoy working. Ideally you should be fluent in at least one of the major programming languages (c++, java, perl, php etc). However we may take an exception to other talented people out there as well… You may want to read w3schools for a bit of brush-up of your skills. We’ve got a local copy of &lt;a href=&quot;https://sdslabs.co.in/w3s/&quot;&gt;w3schools&lt;/a&gt; at our server as well.&lt;/p&gt;

&lt;p&gt;In other news, we recently celebrated Shobhit sir’s birthday , whom we have to thank for all the funding (read new server). After a more than a month of dormancy during the winter vacations, several of our projects are on right track again, and &lt;a href=&quot;https://sdslabs.co.in/filepanda&quot;&gt;FilePanda&lt;/a&gt; has got a big performance boost. We’ve finalized designs for our pms system, which should soon bring a better control to our workflow process. &lt;a href=&quot;https://sdslabs.co.in/codevillage&quot;&gt;CodeVillage&lt;/a&gt; has got its new Grader as well, which will soon be available on the website, after a few rounds of testing. We’ve got permission to start working on implementing &lt;a href=&quot;https://en.wikipedia.org/wiki/Direct_connect&quot;&gt;DC&lt;/a&gt; (Direct Connect File Sharing) in the campus, which was technically an impossibility till now. But beating the impossible is what makes our work so challenging and interesting.&lt;/p&gt;

&lt;p&gt;And for those, who are interested in knowing what else is there down the pipeline, meet us at our lab, between 6-12pm any day of the week. We’re open 24 hours, by the way. We’ve got some great web services, and desktop applications lined up. Of course if you join us, you will be free to work on your own ideas as well. If you’re up for the task, check out our recruitment posters over &lt;a href=&quot;https://sdslabs.co.in/recruit&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Team SDSLabs&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Hello World!</title>
      <link>https://blog.sdslabs.co/2010/11/hello-world</link>
      <pubDate>Sun, 14 Nov 2010 00:00:00 +0000</pubDate>
      <author></author>
      <guid>https://blog.sdslabs.co/2010/11/hello-world</guid>
      <description>&lt;p&gt;First of all, thanks for visiting the portal. This  web portal is an initiative by SDS Labs. SDS Labs stands for Software  Development Section Laboratories. Those of you not knowing, Software  Development Section is part of Hobbies Club. It was earlier named Web  Designing but has been rechristened as Software Development Section this  year. SDS Labs is the core group of Software Development Section which  manages its affairs and is responsible for timely completion of  undertaken projects&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Hello world!”&lt;/em&gt; has been a catch phrase for quite some now. It first  appeared in the classic book &lt;em&gt;“The C Programming Language”&lt;/em&gt; by &lt;em&gt;Kernighan and  Ritchie&lt;/em&gt;. Since then it has been used in many books teaching programming  languages as being the output printed by the first program. A great  insight can be gained into the language by just explaining the process  of printing “Hello world!” on the screen. In fact, in the past, these  two words have been credited as being the epitome of learning new  languages. Thats why we announce the arrival of this web portal on IIT  Roorkee intranet through this blog post titled “Hello world!”.&lt;/p&gt;

&lt;p&gt;For long, we felt a need for a community in the college to look  after its coding requirements. It was not just the coding requirements  but rather the absence of a group promoting the cause that had saddened  us in the past. But since the start of this semester, we have worked  hard to put a proper team in place for looking after the promotion of  coding and computer related activities among the IITR junta.&lt;/p&gt;

&lt;p&gt;We have  been holding regular lectures mainly among the students of first and  second year on as diverse topics as Web Designing, Linux Programming,  Game Development, Mobile Apps Development and so on. Some meetings have  seen students to the tune of hundreds while some had a niche audience of  around five. While large numbers do give us confidence, its the  enthusiasm and spirit of the students that encourages us to do more. In  fact if at the end, even a small percentage of people come out with  wonderful products developed on their own, then that gives us immense  satisfaction and pleasure, and reaffirms our faith in the whole process.&lt;/p&gt;

&lt;p&gt;This web portal has been developed by the SDS Labs as a small initiative to facilitate campus life of the students.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://sdslabs.co.in/filepanda&quot;&gt;Filepanda&lt;/a&gt;“&lt;/strong&gt;  is a self updating local software repository which contains most of the  daily use softwares. In essence, you dont need to download a software  from internet every time a new version is released. Currently it has  around 300 softwares but some plans for its expansion are in the  pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://sdslabs.co.in/campusomegle&quot;&gt;Campus Omegle&lt;/a&gt;&lt;/strong&gt; is a web application on the lines of the popular website omegle.com.  This app randomly pairs any two online people on the campus for the  chatting purpose. The chat is completely anonymous and we dont archive  your chats in any way!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://sdslabs.co.in/movies&quot;&gt;Popcorn Movies&lt;/a&gt;&lt;/strong&gt;is a local movie repository which makes available the  download of recently released movies. Note that the purpose is not to  store all movies but only the recently popular ones. It has got some  really cool features. We hope that this will cause a reduction in the  effort by students to download new movies from internet thereby leading  to a decrease in the amount of bandwidth wasted for the purpose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://sdslabs.co.in/codevillage&quot;&gt;Codevillage&lt;/a&gt;&lt;/strong&gt;” is a application promoting programming that automatically  compiles, executes and matches the output of submitted solutions hence  judging them as being wrong or correct and much more. Currently, it is a  little buggy and in beta phase but we hope to release a much better  version later.&lt;/p&gt;

&lt;p&gt;Thats all folks! We hope that you enjoy the portal. If you have anything to say do drop us a mail at &lt;em&gt;&lt;a href=&quot;mailto:contact@sdslabs.co.in&quot;&gt;contact@sdslabs.co.in&lt;/a&gt;&lt;/em&gt;. We would love to hear from you.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Thanks
Team SDSLabs&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    

  </channel> 
</rss>