Abhishek Gupta

Architect of the Future! Thinker, Techie, Squash addict, Food junkie. Prestige Scholar at McGill University http://www.linkedin.com/profile/view?id=96117654

Learning Guides

How to learn Ruby

In an online chat session between Yukihiro Matsumoto and Keiju Ishitsuka in early 1993, a discussion ensued about the name of a programming language that Matsumoto was going to write. He wanted to satisfy his desire to have an object-oriented scripting language, something that would craft virtual objects composed of data, and help them interact with one another. The alternatives at the time, Python and Perl didn’t appeal to him, Python being too object-oriented and Perl having “the smell of a toy language”. Between “Coral” and “Ruby”, Matsumoto decided to go with the latter because it was the birthstone of one of his colleagues.

You have probably heard about Ruby, and you might be wondering—what is all the fuss?

For starters, it’s written in a very easy-to-use, intuitive manner.

For beginners who have tried teaching themselves a programming language, there are many obvious barriers like the syntax and semantics of a language. Ruby strives to eliminate some of those barriers, for example, by naming functions in a very “natural-language” like format, the is_a? function does exactly what it promises, returning a Boolean (TRUE or FALSE) telling you whether a given object is of a certain type. The question mark at the end of the function is a Ruby idiosyncrasy that hints that the function always returns a Boolean. It may seem odd in the beginning, but as the amount of Ruby you read increases, the more natural this process will become.

Ruby is widely deployed ranging from applications in simulations, 3D modeling, business, robotics to web applications and security. For example, Basecamp – a project management application is programmed entirely in Ruby. Google SketchUp, a 3D modeling tool uses Ruby as its macro scripting API—programmers can add in scripts of their own to the SketchUp program, helping them do things such as automating routine modelling processes, similar to how macros work in Excel.

So how might you go about to learn Ruby, now that you are convinced that it is valued by the software community?

Learn ruby with code(love)

Learn ruby with code(love)


Though the usual suspects like Codecademy and Learn Ruby the Hard Way are good resources to learn Ruby, there are a bunch of other resources including Try Ruby, Ruby Koans, Ruby Warriors and many more. The one that really stands out as a gem (incidentally also the name of self-contained libraries in Ruby) is RubyMonk.

RubyMonk follows a narrative style of teaching Ruby along with some programming basics. The premise is based on you having a “master” who gives you much needed encouragement if you go wrong and also gives you triumphant messages when you succeed at some of the exercises. RubyMonk draws from movies, and video games to keep you plugging away to learn Ruby.

What really makes it stand apart from other resources is the way the entire learning environment is structured. Each page in the chapter has some introduction, a new concept, an exercise to try out, some more concepts with exercises and wrapping it up by using all the elements learned in that chapter in a slightly challenging exercise. There are several levels – Ruby Primer, Ruby Primer: Ascent, Metaprogramming Ruby and Metaprogramming Ruby: Ascent.

Each of the levels deliver content indicative of their name and each chapter is sprinkled with practical exercises.The design of the exercises and their placement is what makes the learning experience on this website fun and engaging. The exercises are just a little beyond the skill level you acquired in the lesson and require a little bit of thinking and are perfect for people who are just beginning to learn programming. They help easily transfer the theory you learned into practice.

Once, you’re done going through all of their material, you can be fairly confident that even if you can’t change the world with Ruby, you’ll at least have enough knowledge to create fun programs and venture into some complex ones with little additional effort.

Yet another reason to learn: Ruby serves as a wonderful background to migrate to the popular Ruby on Rails web framework, which makes the learning curve for making web applications much easier.

Ruby on Rails was constructed with the explicit goal of making it as easy as possible to build an interactive web platform, and maintain it. It speaks to the Ruby philosophy of simple, intuitive building.

After you learn Ruby, you will be able to build your ideas rapidly, and efficiently. You will have learned a valuable skill that will help make building natural.

Not done learning? Visit the rest of our learning resources.

Longform Reflections

How to strengthen your startup idea with design thinking.

Korakati, a remote village in India became the spot for a location of the ‘School in the Cloud’, an idea led by 2013 TED Prize winner Sugata Mitra.

His thesis was simple- “If you give a group of children a set of questions and a computer with an internet connection, they will be able to find answers — whatever the difficulty level. Interestingly, the more random the group, the better”.

What has to be borne in mind is that the computers were not known in the community where this was started. These children worked in English, a language they had never properly learned, nor had they ever encountered a computer before. In a matter of a few days, through just plain tinkering, they had taught themselves how to navigate the machine and find answers to whatever questions they had.

Design Thinking with code(love)

Design Thinking with code(love)

What can you learn from this?

If you have been around long enough to see the past decade and half pass by, you will have noticed that the presence of manuals with products has almost died out as a practice. We have ever more complex products that are sold that come without any manual and yet we are up and running within a few hours, sending tweets about how excited we are about the new phone and ‘Instagramming’ our dinner that night.

How  do we learn about all the myriad things that the product has to offer without going through almost any documentation ?

We can take a cue from how children learn in the early stages of life. A child is never given a manual about life detailing how things are done. The learning process happens through the basic mechanisms of learning by doing and emulating the behaviour of others. The same analogy can now be applied to the adoption of services and products that we consume.

We have all heard enough stories about how young children unpack the latest iPhone, change wallpapers, customize the settings and play around with apps while parents are struggling to wrap their heads around how to send emails on the new device.

This demonstrates a fundamental difference in the way technology is being adopted by younger vs. older demographics. Your idea should cater to the way that the audience will adopt the new technology.

It also demonstrates how design has evolved to the point where it is easy and intuitive for all groups to grasp new concepts.

Design principles tailored to the target age-group would dramatically increase the effectiveness of how quickly the entrepreneur can achieve successful adoption. From varying font sizes to the structure of menus to reflect the trends that the demographic is used to, the approaches to do this are extremely varied. A thing that is not often looked at or ignored is the importance of having small bite-sized blog posts that would detail how a product works and how to make the most effective use of the features that it offers. This would be a very useful strategy for some of the adopters who fall outside of the Millennial generation.

Design thinking is critical. You have to make it as simple and as alluring as possible for your users to use your product, and for them to teach others to use it. This is the essence behind how an idea is spread—thinking about your user, why they’re using your product—and how to convince them to convince their friends to get on board as well.

AirBnB flatlined at $200 a week in revenue until they determined that taking professional pictures of their spaces sharpened the value proposition of what they were offering to the degree that more people were renting out AirBNB spaces—now that they knew exactly what they were getting.

Good design is crucial now.

Thinking about how a user goes through your product will determine your success or failure.

Nicholas Negroponte, in the 7 years of having run the One Laptop Per Child (OLPC) project, came to similar conclusions as Sugata Mitra. After having dropped computers in remote parts of Africa, children were teaching each other how to use the computer, something that they had themselves learned just a few hours ago. They understood how this new product would help them—and they understood very easily how to use it, and more importantly how to teach using this new tool.

You should aim to foster the same mentality with your own startup. It will mean the difference between stagnation, and explosive growth.

Technology and Society

Creating a Startup – The Importance of Now!

Mark Zuckerberg almost instantly started working on his idea for ‘TheFacebook’. The road to building a startup is paved with constant learning. This is true even for Mark.The important thing was that he started on it right away without waiting to acquire all the ‘necessary’ skills before someone else would have stolen his thunder.

Anyone familiar with Economics has heard of economies of scale and how they experience increasing returns to scale – here in the field of technology we are experiencing something similar but turbocharged.

Ray Kurzweil predicts that the dominance of this trend is so overarching that we are fast approaching what he calls the ‘Singularity’ when artificial intelligence transcends organic intelligence. Looking that far, his guess may be as good as anybody’s, but he does make a compelling argument about the importance of the pace of technological change and its extension to all walks of life. From physicists jumping into doing social media analytics (ex: Nexalogy) to people out in developing nations pumping out solutions to meaningful problems (ex: Keepod competing with One Laptop Per Child), anyone with an idea now has the resources at his disposal to give birth to the idea.

What is more interesting though is what is called ‘time to market’ – which is dramatically going down as things become easier from using APIs to send texts to hardware powered by your Raspberry Pi to setting up the process of accepting credit cards online using Stripe in a few minutes. All of these things took weeks and weeks of planning and consideration before. If you are taking too long to get your startup off the ground, the market may just have changed enough so that your idea isn’t relevant anymore.

What does that mean for that billion dollar idea that you wrote down on a restaurant napkin that you’ve tucked away? Well it is time to bring it out and start building it out. Why? Because if you don’t, then someone else will most likely come up with a similar idea, put together a few engineers and have a prototype that beats you to the market.

Build now with code(love)

When they give away t-shirts at hackathons (24 hour coding and prototyping marathons) saying “Fuck it, ship it” they don’t do that just to help you absorb the spirit. They also do it to emphasize the fact that if you don’t follow up on that great idea, someone else will.

The whole entrepreneurial atmosphere is lit up with bright ideas – each with as much potential as the next – the only difference between the ones that succeed and the ones that don’t is the conviction of the entrepreneur to start building not today – but NOW! Given the plethora of online tutorials to create your own websites, apps – there is very little reason to embark on a journey to first acquire the skills and then start building – these processes have now condensed into a single stream that flows together.

Thought getting marketing materials and a social presence up and running is hard ? Even that is now at your fingertips – hire one of the many teams that strive to provide you with an entire package consisting of services that can help you publish blog posts, setup your social media presence, create logos, choose color schemes and all the other 100 things that come with creating a new startup.

With Indiegogo and KickStarter being extremely popular, you can start raising capital today if that is something you feel stopping you from taking the plunge. Haven’t we then covered almost all elements that you could think of in getting at least a basic version of your idea up and running ? Almost ! We are just missing one crucial element – your entrepreneurial drive ! The inner desire to keep pushing, to stay committed when everyone says no, to work that one more hour, to make that one more sales call, to do one more rehash of the design board – all of that makes for the right ingredients to a successful startup. So go out there and get started – Carpe diem!