Tag Archives: languages

Turing100 Lecture: Butler Lampson – Systems, Security, Verification and more – Nov 24

In 1992, Butler Lampson received the Turing award in for his contributions to the development of distributed, personal computing environments and the technology for their implementation: workstations, networks, operating systems, programming systems, displays, security and document publishing.

On Saturday, 24th November, Neeran Karnik, Senior Architect at BMC Software, will give a talk about Butler Lampson’s work. This talk is a part of the Turing Awards monthly lecture series that happens at Persistent’s Dewang Mehta Auditorium.

This will be followed by a session on [“Experience Sharing – Systems design and development Projects in India”]. The speakers include Dr. Basant Rajan, CEO of Coriolis Software (previously CTO of Symantec India), and Abhay Ghaisas, Product Development Architect BMC Software.

The event is free for everyone to attend. Register here

About the Turing Awards

The Turing awards, named after Alan Turing, given every year, are the highest achievement that a computer scientist can earn. And the contributions of each Turing award winner are then, arguably, the most important topics in computer science.

About Turing 100 @ Persistent Lecture Series

This year, the Turing 100 @ Persistent lecture series will celebrate the 100th anniversary of Alan Turing’s birth by having a monthly lecture series. Each lecture will be presented by an eminent personality from the computer science / technology community in India, and will cover the work done by one Turing award winner.

The lecture series will feature talks on Ted Codd (Relational Databases), Vint Cerf and Robert Kahn (Internet), Ken Thompson and Dennis Ritchie (Unix), Jim Gray, Barbara Liskov, and others. Full schedule is here

This is a lecture series that any one in the field of computer science must attend. These lectures will cover the fundamentals of computer science, and all of them are very relevant today.

Fees and Registration

This is a free event. Anyone can attend.

The event will be at Dewang Mehta Auditorium, Persistent Systems, SB Road, from 2pm to 5pm on Saturday 24th November. This event is free and open for anybody to attend. Register here

Panel Discussion: Should all Programmers Learn Functional Programming – Oct 6

Should all Programmers Learn Functional Programming? The pros and cons of this question that will be tackled in a panel discussion this Saturday. This panel discussion is a part of the Turing Awards lecture series that happens at Persistent’s Dewang Mehta Auditorium at 2pm on the first Saturday of every month this year. The panel discussion will follow the Turing Awards Talk on the life and work of Robin Milner.

Topic of Discussion

Most programmers in the industry learn procedural programming (e.g. C), or object-oriented programming (Java, C++). However, functional programming (Haskell, Scala, F# all of which are influenced by Robin Milner’s ML) is considered by many to be a significantly more powerful method of writing good programs. Functional programming is a different way of doing programming, much different from procedural or object oriented programming, it is significantly more powerful, especially in terms of the abstractions that can be built into the programs, and generally they lead to programs that are shorter, safer, and often faster than comparable procedural programs. And finally pure functional programming disallows side-effects, which means that there is no global state, functions always return the same values for the same input parameters, and data-structures are immutable. Due to this property, functional programs are easier to parallelize, and hence this is gaining increasing importance in as we move to multi-core architectures.

The flip side is that functional programming has a significantly harder learning curve, and many programmers find it difficult to learn and become proficient in functional languages. Functional programming languages are not widely used in the industry, since it is difficult to hire programmers. Thus, some people in the industry argue that adoption of functional programming does not make economic sense and will this always remain a niche area for academia and hobbyists.

Panelists

The panel consists of the following people from industry and academia who have spent many years studying and using functional programming languages as well as more conventional languages for many years:

  • Prof. Raju Pandey: is an associate professor of computer science at the University of California, Davis. He has been working on functional programming for 15+ years. His other areas of interest include sensor networks, distributed computing, programming language design and implementation, operating systems, and system security.
  • Dhananjay Nene: is the Chief Architect at Vayana Software. He writes a very highly regarded blog about programming, design, architecture and the internet. You can read some of his past articles on functional programming on his blog.
  • Kedar Swadi: is the CTO and Co-Founder of Pune based AlgoAnalytics, before which he has worked in various senior roles at Avaya, Persistent, and Rice University. He has a PhD in the area of Programming Languages from Princeton University.
  • Rustom Mody: has designed and taught a wide variety of new courses in the University of Pune, and has been one of the early adopters of functional programming in India. He is also a founding partner in The Magus a firm which specializes in providing training in functional programming languages like Haskell, and other similar technologies.

The panel discussion will be moderated by Navin Kabra.

Fees and Registration

This is a free event. Anyone can attend.

The event will be at Dewang Mehta Auditorium, Persistent Systems, SB Road, from 2pm to 5pm on Saturday 6th October. This event is free and open for anybody to attend. Register here

For more details about the event, see the other PuneTech article – Turing100 Lecture: Robin Milner and Polymorphic Type Inference in Programming Langauges

Turing100 Lecture: Robin Milner and Polymorphic Type Inference in Programming Langauges – Oct 6

Robin Milner received the Turing award in 1991 for three major contributions to computer science:

  • In the area of automated theorem proving – He developed LCF, the first theoretically sound yet practical tool for machine assisted proof construction
  • In the area of programming language design – He developed ML, the first language to use polymorphic type inference along with a type-safe execution handling mechanism, something that underlies some of the most interesting new programming languages that are being developed today, and
  • In the area of concurrency – He developed CCS, a general theory of concurrency.

On 6th October, Navin Kabra (yes, that’s me), will give a talk about Robin Milner’s work. This talk is a part of the Turing Awards lecture series that happens at Persistent’s Dewang Mehta Auditorium at 2pm on the first Saturday of every month this year.

This will be followed by a panel discussion on “Should every programmer learn functional programming”. The panelists include Dhananjay Nene, Chief Architect at Vayana Software, Prof. Raju Pandey, of University of California-Davis, Rustom Modi, who has been teaching functional programming at the University of Pune for over 15 years, and who is a founder if i-Magus which delivers training in functional programming and other related technologies, and Kedar Swadi, CTO at AlgoAnalytics, and others. For more details of the panel discussion see this article

The event is free for everyone to attend. Register here

Abstract of the Talk

In this talk, I will give a brief overview of Robin Milner’s career, following by a technical dive into his work. I will briefly cover his work on automated theorem proving and LCF, which served as the motivation for the development of ML, the programming language intended to be used for automated theorem proving. ML ended up having a huge impact on the design of modern programming languages and its influence can be seen in important modern languages like Microsoft’s F#, Haskell, and the JVM based Scala. The bulk of my talk will cover the design of ML, with a specific focus on the polymorphic type inference system used in ML. Type inference is an important aspect of a lot of modern programming languages, and can be found, for example, in Google’s Go Language, Perl6, Visual Basic 9.0 onwards, C# version 3.0 onwards.

About the Turing Awards

The Turing awards, named after Alan Turing, given every year, are the highest achievement that a computer scientist can earn. And the contributions of each Turing award winner are then, arguably, the most important topics in computer science.

About Turing 100 @ Persistent Lecture Series

This year, the Turing 100 @ Persistent lecture series will celebrate the 100th anniversary of Alan Turing’s birth by having a monthly lecture series. Each lecture will be presented by an eminent personality from the computer science / technology community in India, and will cover the work done by one Turing award winner.

The lecture series will feature talks on Ted Codd (Relational Databases), Vint Cerf and Robert Kahn (Internet), Ken Thompson and Dennis Ritchie (Unix), Jim Gray, Barbara Liskov, and others. Full schedule is here

This is a lecture series that any one in the field of computer science must attend. These lectures will cover the fundamentals of computer science, and all of them are very relevant today.

Fees and Registration

This is a free event. Anyone can attend.

The event will be at Dewang Mehta Auditorium, Persistent Systems, SB Road, from 2pm to 5pm on Saturday 6th October. This event is free and open for anybody to attend. Register here

GeekNight with Ola Bini – Core Developer of JRuby – 25 May

ThoughtWorks Pune invites all developers to their latest GeekNight tomorrow at 6:30pm. GeekNight is a series of a talks about cutting edge technology, where you also get to meet like-minded geeks.

This GeekNight features a talk “JRuby for the win” by JRuby Core Developer Ola Bini.

JRuby is an implementation of Ruby for the JVM. It gives you unprecedented integration with the Java ecosystem while still having access to great Ruby libraries such as Rails, RSpec and many more. The last year has seen lots of uptake for JRuby, many new committers, thousands of bugs fixed and lots of new functionality.

This talk will give a short introduction to JRuby, and then provide more information about where the project is now and where it is going.

About the Speaker – Ola Bini

Ola Bini is a core JRuby developer and is the author of the book “Practical JRuby on Rails”. He works for ThoughtWorks in Chicago. His technical experience ranges from Java, Ruby and LISP to several open source projects. He likes implementing languages, writing regular expression engines, YAML parsers, blogging, and other similar things that exist at the border of computer science.

About GeekNight

GeekNight is an informal meeting for technologists to exchange ideas, code and learning. It is held periodically at ThoughtWorks offices in Bangalore, Pune, Chennai and Gurgaon.

Venue, Time, Fees and Registration

The event is on Wednesday, 25th May, from 6:30pm, at ThoughtWorks Technologies, Panchshil Tech Park, Yerwada. This event is free and open for anybody to attend. Please register here

Pune Rails Drinkup: Ruby-on-Rails tech talks over (free) drinks

The Pune Rails Meetup Group invites all enthusiasts of Ruby-on-Rails for their second “Drink Up” event. Gautam Rege writes:

This time we have a technical drink-up. We shall have 1 or 2 technical sessions followed by networking.

Thanks to IntelleCap for sponsoring this meetup entirely!

Venue: Boat Club

Agenda: We have 2 technical talks of 45 minutes each.

6pm – 6.45pm: “Rhodes in a Nutshell” by Akshat Paul & Abhishek Nalwaya
7pm – 7.45pm: Talk from IntelleCap (TBD)
7.45pm – 8pm: A short talk from our sponsor – IntelleCap

8pm – onwards: networking! 😉

This event is free and open to all but, there is reserved seating to meet at most 30 people. Please RSVP in advance to avoid organizing constraints. You must register here

Why Ruby is cool – take 2

Official Ruby logo
Image via Wikipedia

Earlier today, we had an article by Nick Adams on why you need to learn Ruby and Ruby-on-Rails. That post attracted a detailed comment by  Ravindra Jaju which elaborated on some of the themes touched upon in the original article. Since it brings out nicely the power of Ruby, we decided to post the comment as a new article to ensure it reaches all the readers who don’t necessarily read the comments. (By the way, you should subscribe to PuneTech comments by email or via RSS.)

Those interested in Ruby should check out Ruby Fun Day in Pune on Saturday, 21st February. If you want to learn Ruby, take a look at RubyLearning.org, a site that provides free, online courses for Ruby, by Pune’s own Satish Talim. Also check out the Pune Ruby mailing list, which is reasonably active.

This “article” only makes sense in the context of the original article, so ensure that you’ve read it before you read this:

Depending on where you come from, the syntax 5.times… may appear either beautiful or plain weird. But whatever the initial impression, one starts appreciating it as the power unfolds. The syntax ‘5.times’ might look like something completely out of the blue at first glance, but once one recognizes that 5 (or any number for that matter) is a first-class object, things start falling in place.

Try playing with this further using ‘irb’ (the ‘interactive ruby’ command-line tool which is a part of the ruby distribution) to explore the object ‘5? further as follows: 5.class, 5.methods, 5.methods.sort [send message ‘methods’ to 5, which returns an ‘Array’ – further send a message ‘sort’ to this returned Array object if you like to see the methods ordered]. And if you haven’t guessed this already, do note that brackets to function calls are absolutely optional if the syntax is unambiguous (so, the above is equivalent to

5.times(){puts “Hello Pune!”}

which is equivalent to

5.times(){puts(”Hello Pune!”)}

What comes within the braces ({}) after ‘5.times’ is a block – ‘5.times’ is by itself uninteresting, unless you can do something 5 times, no? Blocks are a very powerful concept, which are defined at one place but executed elsewhere. They have access to the context where they are defined (closures). Use of blocks (and associated Proc objects) can lead to very interesting, succinct code!

And again, if you are a C/C++ or a Java programmer feeling wary about jumping into something new and have that feeling of your uber-cool libraries not being accessible from Ruby (and hence a new learning curve apart from the heart-burn) – fear not! Ruby, being an interpreted language, runs in a VM of its own. And the Ruby VM developers have made sure that access to your favourite libraries is as easy as possible. The ‘official’ Ruby VM is C code, but obviously the cool thing that the JVM is, you can run Ruby inside the JVM (Java Virtual Machine) too. Many have already made these libraries accessible via Ruby. I would term the Java VM as more powerful in this regard, giving you access to native libraries apart from all the Java goodies (look up ‘ruby+ffi’ on yahoo/google search).

Then again, metaprogramming takes Ruby fun to newer heights. Rails wouldn’t have been (easily) possible had it not been for Ruby’s abilities in this regard. How would you feel if told that there are database access methods named (for example) ‘find_by_name’ or ‘find_by_name_city’ that aren’t defined anywhere but still create appropriate SQL calls (’where name = …’ or ‘where name = … and city = …’) because you can intercept ‘function undefined’ events, look at the function name and arguments, and create the right SQL on the fly? Or even before that, a class mapped to a database table ‘knows’ which table it is supposed to represent in an object form, just by looking at its *own* name? The good news is that all the cool libraries developed as part of the Rails initiative can be used in plain Ruby code without all the rails framework overhead too.

Well, enough said for a comment. You’ve got to experience it to believe it!

(PS: Not saying here that Ruby is unique – Python, for example, is cool too – but a Python-junkie would be a better marketeer for it 😉 )

Reblog this post [with Zemanta]

Why you need to learn Ruby and Rails

Official Ruby logo
Image via Wikipedia

With increasing visibility for the Ruby programming language, and the passion that people show for Ruby-on-Rails for web development, we felt that we would like to delve a little into what makes Ruby so cool and Rails so hot. Especially, in light of the fact that Ruby Fun Day is happening in Pune on Saturday, we wanted to give our readers a feel for why the should consider attending Ruby Fun Day. With that in mind, we invited Nick Adams of Entrip and SapnaSolutions (both those companies use Ruby-on-Rails as a cornerstone of their offerings), to tell us why Ruby and why Rails.

Ruby is an interpreted language like Python, Php, Perl, and a whole host of other popular Unix based languages. It was invented in 1992 by a Japanese man. However it only shot to fame in the last few years when the web development world started getting very excited about a new framework called ‘Ruby on Rails’, which arrived in 2005. But I’m getting ahead of myself. First, I’ll look at Ruby in its own right. Then, we’ll take a look at Rails and what’s cool about it.
The first thing you’ll notice about Ruby is it’s beautifully easy syntax:
5.times { print "Hello Pune!" } 
Goodbye to semi colons, variable declaration, etc it makes for readable code while ensuring you don’t spend more time than you need with coding. Ruby is 100% object oriented, in fact, everything in ruby including variables, are objects. That can be a little overwhelming at first, but it begins to make sense as you use a framework like rails and really reveals its true power when you want to change or add to the core ‘String’ class, on the fly. It means, in basic speak, that Ruby is very flexible. But there is more. Ruby has cool features like blocks, iterators, and a wealth of all the expected higher level language features like ‘capitalize’ and ‘reverse’ methods for strings.
Ruby on Rails
Image via Wikipedia

Rails is of course a web development framework. It is important not to see Rails as simply a collection of new classes and methods designed to aid web development. There are two things that I believe are important to understand before you dive into Rails. One is the MVC pattern of design. The MVC pattern of system design separates application logic into distinct parts making development fast, but also scalable and logical. The second is the rails conventions. Although sometimes ambiguous and debated, sticking to the basic rails conventions and understanding how the framework is designed to work will greatly aid collaboration, and futureproofing of your app.

What’s so cool about Rails? I recently interviewed someone who has worked in Java, Php and Rails for web development. I could sense the passion in him to work for a company that specialises in Rails, and didn’t need to explain why. If you have ever built a web application in .net, java, or php, you’ll really appreciate the power of Rails. It’s fast, modular, and working in Ruby is fun because you create clean, readable code. It’s free. Ajax and Web 2.0 style features are easy. Fully unit testing your app is easy. Roll out new ideas in weeks instead of months. Setup is easy, in any environment, but being open source it favours ‘nix based environments like Linux and Mac.
It all sounds great, doesn’t it? I would advise, however, that Rails is best understood by those who have understanding of the web and building database driven web applications already. Rails is a framework built on long standing notions, it’s not a magical new web development language. It makes what exists already, much easier and faster. Understand the Web. Understand Web Applications. Understand MVC. Then learn Rails, and you’ll never look back!

About the Author – Nick Adams

Nick Adams is the co-founder of Entrip, an integrated travel utility that gives a map-based interface to plan your trip, capture your experiences in multimedia, and share them with friends. SapnaSolutions is the Ruby on Rails Development company behind EnTrip. They make Web Apps for clients and develop in house products. He can be reached at nick [at] entrip [dot] com
Reblog this post [with Zemanta]

Pune’s Satish Talim wins “Ruby’s Top Teacher in 2008” award

Satish Talim

Satish Talim, whose RubyLearning onine classes have enrolment of more than 5000 students from over 100 countries, has been named the “Top Ruby Teacher in 2008” by RubyInside (the #1 Ruby news site in the world).

An excerpt from the article:

How (and when) did you find your way into Ruby?

After being with Java since its beta days, my interest in Ruby was aroused after I read an article Ruby the Rival in November 2005. I decided to learn Ruby myself and started making my Ruby Notes for my site, RubyLearning.com.

How have your Ruby & Rails related projects progressed in 2008?

I started my free, online Ruby teaching site in January 2008 and today it has over 5600 participants who have either learned Ruby or are in the process of learning Ruby with me. The experience has been very positive and fulfilling. I’ve also been promoting Ruby in India since 2006 with my PuneRuby User Group. I also managed to convince the the University of Pune to introduce Ruby as a full time paper in their computer science course from Jan. 2009.

With RubyLearning.org I am able to give Ruby exposure to people across the globe (there are currently students registered from over 140 countries) – we have people from far-flung places where no trainers (leave alone Ruby trainers) are available – my site facilitates that.

Read the full article for more about the award.

Satish runs two RubyLearning portals: namely RubyLearning.com (is a thorough collection of Ruby Study Notes for those who are new to the Ruby programming language and in search of a solid introduction to Ruby’s concepts and constructs) and RubyLearning.org (where, since 2006, participants from across the globe have been learning online and for free, the Ruby computer programming language).

However the RubyLearning portals are not Satish’s primary occupation. His experience lies in developing and executing business for high technology and manufacturing industry customers. Basically, he has helped start subsidiaries for many US based software companies like Infonox (based in San Jose, CA), Maybole Technologies Pvt. Ltd. (Servient Inc. based in Houston, Texas) in Pune.

You can also follow Satish on Twitter where as @IndianGuru, with over 700 followers, he is the top twitterer from Pune. (As to why you should be on twitter, see our article “Why you should be on Twitter“; and then immediately after that, you should follow @punetech, and all the others mentioned in in these posts over at AmIWorks.)

Reblog this post [with Zemanta]

Why Python is better than Java for Object-Oriented Design

Dhananjay Nene recently switched over to Python and has discovered that he is much happier writing programs in Python. We covered his first article in the series, and the end of that post gives an idea of why we think you should listen to him, and also subscribe to his blog. In the next article in the Python vs. Java series, he takes a few design principles of object-oriented programming and shows how to implement those using sample code in Java and Python. 

An excerpt to whet your appetite:

Well, static typed languages use polymorphism as a powerful mechanism of extensibility. In other words, in many cases the extensions are likely to be newer derived types. Thus design the rest of your code to work on the base type and introduce the newer derived types later as required without having to necessarily change existing code. However static languages primarily depend upon inheritance as the vehicle for delivering polymorphism. Dynamic languages on the other hand depend upon duck typing. Duck typing supports polymorphism without using inheritance. In this context you need the same set of relevant methods to be implemented in each of the extension classes. The role of the abstract base class or interface as the one which specifies the contract / api has been made redundant. You can still choose to define a base class / interface if you want to, but you no longer have to. 

The full article is a must read if you are a student of programming languages in general, and object-oriented programming in particular. If you are neither of those things, and if you plan to be in the software field for a while, then you seriously need to ask yourself, “Why not!?“.

Why Python is better than Java?

Dhananjay Nene recently switched over to Python and has discovered that he is much happier writing programs in Python. He has a detailed post over at this blog on the reasons:

I think the most dominant impression from the last few months is that python does make programming feel a lot more easier and often more enjoyable. The feeling is not very different between riding a bicycle without gears then riding one with gears. In the latter case one just feels one can cover a lot more distance much more easily though any physicist will tell you the actual effort is not particularly different. It just feels like one has a much bigger toolbox (ie a wider assortment of tools) to work with and therefore the task seems simpler. Why do I think that way ? I believe the following features of python do help (in no particular order) :

* Concise Coding style : The code typically is much more concise, with much lesser verbosity
* Dynamic typing : You really do not need to worry about declaring data types and making sure the inheritance hierarchies especially for all the interfaces and implementations well laid out. The various objects do not even need to be in the same inheritance hierarchy – so long as they can respond to the method, you can call it. This is a double edge sword, but that doesn’t take away the fact that programming under dynamic types environment does seem a lot easier.
* Easier runtime reflection : Java seems to have all the reflection capabilities but I think these are just way too painful to use as compared to python. In python the entire set of constructs (classes, sequences etc.) are available for easy reflection. In case you need to use metaprogramming constructs, python really rocks.
* More built in language capabilities : Items such a list comprehensions, ability to deal with functions as first class objects etc. give you a broader vocabulary to work with.
* Clean indentation requirement : It took me about 2-3 days to get over it but, it seems that python code is much easier to read since if you do not indent it correctly it will be rejected.

I am a Perl person myself, and think similar thoughts about Perl, and I don’t really care for the forced indentations of Python. But Perl is really for disciplined programmers who don’t get carried away and start doing all the weird things that the language allows. For the indisciplined folks, I guess the forced indentation of Python is probably a good way to keep them in check.

Anyway,  read the whole article. You should also read the post he wrote at the time he chose Python for this next project. In fact, subscribe to his blog. He writes detailed and insightful articles that, as a techie, you would do well to read. If you are interested in programming languages, I would recommend reading “Contrasting java and dynamic languages”, and “Performance Comparison – C++ / Java / Python / Ruby/ Jython / JRuby / Groovy”. And if you are a blogger, check out his tips for software/programming blogging.

Dhananjay is a Pune-based software Engineer with 17 years in the field. Passionate about software engineering, programming, design and architecture. For more info, check out his PuneTech wiki profile.