Dear David Rutten and the Grasshopper team

I am Jacky Liang.

You may remember me as the software developer on the Grasshopper forum as TheGreenCabbage. I worked on a Grasshopper tool suite that was released with the name KT Tools as a part of a subset of Grasshopper development projects I did with the Kieran Timberlake Research Group. Kieran Timberlake is a R&D-focused architecture firm that is based in Philadelphia PA. I am currently a Bachelor of Science Computer Engineering and Computer Science Minor pre-Junior currently studying at Drexel University.


This page was made for you, David

This page was made for you to accept my enthusiastic application for a Fall-Winter software development internship position -  I want to work with you on the development of Grasshopper. I have used many software before in my life, but I have never encountered a software that has intrigued me so much, and neither has a software developer taught me so much in regards to user experience, technical programming, or developer interaction.

Words are cheap, so I want to show you in this page how you and Grasshopper inspire me so much, and why I want to work with you.

What's so special about me:

  • From writing software intended for public release, making user experience better on existing software, and to making great graphics, my experiences have made me care deeply about how a user feels and uses a software from a top to down approach.
  • My adventures with WebLinc and Kieran Timberlake has exposed me to many different programming environments. While I am proficient at C# and Java, and am capable at working with Javascript, PHP, Node.JS, MySQL, MongoDB and more, I have a proven capacity for rapid comprehension and application of newly acquired information.
  • I have incredible work ethic, I do not hesitate taking on new challenges, and my experiences in programming and life has taught me to persevere in the face of obstacles.
  • I am a naturally inquisitive individual. I strive to understand more about myself and the things that happen around me. I also believe it is important to chase my passions and surround myself with people that can help me become a better person.
  • On my spare time, I enjoying reading books, hanging out with friends, volunteering at my local animal shelter, being aware of the social issues around me, and of course, looking at pictures of cats on the Internet.
  • I deeply care about the people I work with, a trait that can be acknowledged by the various individuals I've have the opportunity to work with at Kieran Timberlake such as my manager Roderick Bates and my fellow developers Christopher Connock and Ryan Welch. I enjoy working in environments that offers opportunities for me to work in harmony with others towards shared goals, and I feel the need to listen and understand the needs of my clients and the coworkers I work with.

Graphical programming has been attempted

When I joined Kieran Timberlake in September 2013 as a software developer, Grasshopper was an enigma to me. Through the six months of use and development, things became very clear both as a workflow of using Grasshopper as a programming paradigm or diving deep into Visual Studio component development. On a lower level, the C# datatypes that are used profusely within the Grasshopper components and the scarcity of custom datatypes makes development and compatibility with existing and future components a real breeze. 

Through my life as a software developer, I have seen many attempts by engineers and innovators to bring programming to non-programmers. Their attempts, while good in intention, were often lackluster. Functionality was often sacrificed for user experience, and often times, even worse, user experience was sacrificed for functionality. There was no real terrific combination of user experience with functionality in any graphical programming language implementation.

In my first year of Drexel University as a computer engineering student, I had the opportunity to work with LEGO Mindstorm in my freshman design course. 


While LEGO Mindstorm's programming interface, for its purpose of controlling servos and sensors being adequate, both regards of user experience and functionality leave much to improve on. It did its job for what it intended, that is, to allow novice programmers to be able to systematically determine what their robot would do, but that was its only redeeming factor. Much could be improved on in terms of functionality, interface, and the experience of using it.


The above example is a graphical programming language ModKit that is also used to control robots. It is needless to say that while functionality may be preserved (through apparent identification of while-loops, if-statements, Thread.sleep(1000), etc), aesthetics and user experience was an afterthought to the software developer. Perhaps ignorance to what determines good design and experience was what plagued the developer. Ironically, in attempting to make programming more accessible to non-programmers, ModKit did not create a beautiful or UX-satisfactory product.

What's so special about you and Grasshopper:

With careful consideration to user experience, Grasshopper succeeds in making interface elements and components explicit and accessible. Users are aware of what a component does through its use of icons, typography, and visual aids such as wires and component highlighting.

Grasshopper uses components to indicate datatypes and functions, such as a list of times or a time zone flag. It liberally uses skeuomorphic design, such as that of a note pad, to indicate input and output of data. A user can instantly determine what a component or a group of components do.

Grasshopper uses components to indicate datatypes and functions, such as a list of times or a time zone flag. It liberally uses skeuomorphic design, such as that of a note pad, to indicate input and output of data. A user can instantly determine what a component or a group of components do.

Also, following your personal blog I-Eat-Bugs-For-Breakfast:

  • You have often times shared your professional and personal input on the present and future of Grasshopper.
  • You provided critical analysis of architecture education of what it lacks.
  • Your brief but fascinating insight into something as simple as icon design. I think this is one of my favorite blog post of yours, as it gave me behind-the-scenes insight to how you develop Grasshopper components. I also really enjoy your series on your Evolutionary Solver component, though its function is beyond my current understanding.
  • Your articulate and non-emotional debates with people that do not share your perspective.

You have been a constant source of not only inspiration, but understanding for me. I feel what you have to say resonates with me.

I also learned about your development transparency, responsiveness, and humility

Your devotion to development responsiveness and transparency speaks to me as how much you care about Grasshopper, its developers, and its users.

  • I asked many questions on the GH forums throughout my six months, and you made every effort to give deep technical answers to my inquiries.
  • You show care to your users and developers by patiently responding to their questions and feedback. 
  • You are not hesitant to admit to the shortcomings of Grasshopper, allowing me to learn a lesson on humility. 
  • Your all-inclusive platform of SDK, forum, e-mail, and responsiveness made interaction with you easy. 

Things I would be proud to build with you on Grasshopper

  • Performance
    The way the application is written affects its user experience and interface in a strong way, as performance of the application affects the user experience equally much as the UI. I wish to apply the knowledge I gained from learning about software performance at school to make Grasshopper run more efficiently.
  • Even better documentation and SDK
    Grasshopper's SDK is the heart and soul of Grasshopper development. Using Grasshopper's SDK for six months, I was able to personally experience its strengths and limitations; it can be hard at times to find a simple method that I need to use (or even know if it exists or not). With my experience as a lone developer working on Grasshopper components, I wish to bring my perspective in making an even better and more accessible SDK for future developers to use. 

  • Grasshopper 3D 2
    Grasshopper is the best attempt I have seen so far at a functional and beautiful graphical programming software. However, one thing is clear - its initial development never accounted for its growth, and a little bloat in the front-end and back-end was its consequence. A powerful and scalable back-end on top of an even more accessible user interface would be my vision for Grasshopper 2.

Thank you for reading. I really hope we can get to know each other very soon.

P.S. If you want to continue the conversation, feel free to contact me on Skype or my personal e-mail.