Hackety Hack

Last updated
Hackety Hack
Original author(s) _why and 50 friends
Developer(s) Steve Klabnik
Stable release
1.0 / December 25, 2010;12 years ago (2010-12-25)
Repository
Written in Ruby
Operating system Windows, Linux, macOS
Type Educational software
License MIT License
Website github.com/hacketyhack/hacketyhack OOjs UI icon edit-ltr-progressive.svg

Hackety Hack is an open source application that teaches individuals how to create software. It combines an IDE with an extensive Lessons system. The cross-platform desktop application also has integration with the website, where "Hackers" can share what they've learned, ask questions, and submit feedback.

Contents

History

Hackety Hack was originally created by _why in order to solve "The Little Coder's Predicament": [1] that learning modern software development is complicated, and difficult. Why eventually developed The Bylaws of Hackety in the Hackety Manifesto [2] which lay down the guidelines for the project.

Why enlisted the help of a group of 25 parents and their children to get early feedback, referred to them as "50 of my closest friends". The earliest iterations of Hackety Hack were based on an embedded Gecko browser, but this eventually transformed into the Shoes GUI toolkit.

Post-Why development

Why intended to release Hackety Hack 1.0 at the Art and Code Symposium. [3] In his talk, [4] he showed off a build that's known as "version 0.L," with promises of a 1.0 soon to follow. This never came to pass, as Why mysteriously disappeared in August 2009, deleting his projects. Because they were stored in git, the Ruby community was able to revive them. A small team kept working, releasing v0.9 on Christmas of 2009, and finally 1.0 on Christmas of 2010.

Ruby Summer of Code 2010

Hackety Hack was chosen as a project for the Ruby Summer of Code in 2010. Fela Winkelmolen was the student chosen to work on the project. Chris Redinger, Jeff Casimir, Sarah Mei, and Steve Klabnik mentored.

Comparison with other educational software

The two largest similar projects are Scratch and Alice. There are two major differences: Both of these projects use a graphical programming language based on the concept of "blocks," but Hackety Hack teaches Ruby. Both Scratch and Alice are university projects out of MIT and CMU, respectively, and Hackety Hack has no university affiliation.

Blocks vs Ruby

The difference of 'blocks vs. Ruby' stems from a shared belief: most programming languages require a lot of effort and knowledge before one can build more than the simplest of programs. The 'blocks' solution is to use the concepts of graphical programming so that beginners don't have to worry about syntactical or memorization issues, as there's a palette of blocks to choose from, and they only fit together in the correct way. The solution that Hackety Hack pursues is by teaching with a more traditional programming language, but adding libraries that make it easy to do complicated tasks in one line. For example, in a more traditional software library, making a background with a gradient would take five or six lines of code using a toolkit like Qt, but is one line in Hackety Hack. This is achieved by choosing simple defaults and dropping support for lesser-used options.

Comparison with similar projects

The university affiliation that Scratch and Alice enjoy gives them more resources to bring to bear. Both projects have teams of people, the brand credibility of their institutions, and graduate students to write papers about them and use them in research. Hackety Hack is a more nimble project, since the team is much smaller. It's also truly an open-source project, whereas the Alice project, for example, only releases dumps of the project source every so often. Hackety Hack's development is entirely open.

Related Research Articles

An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools and a debugger. Some IDEs, such as NetBeans and Eclipse, contain the necessary compiler, interpreter, or both; others, such as SharpDevelop and Lazarus, do not.

<span class="mw-page-title-main">Gambas</span> Integrated development environment

Gambas is the name of an object-oriented dialect of the BASIC programming language, as well as the integrated development environment that accompanies it. Designed to run on Linux and other Unix-like computer operating systems, its name is a recursive acronym for Gambas Almost Means Basic. Gambas is also the word for prawns in the Spanish, French, and Portuguese languages, from which the project's logos are derived.

<span class="mw-page-title-main">Eclipse (software)</span> Software development environment

Eclipse is an integrated development environment (IDE) used in computer programming. It contains a base workspace and an extensible plug-in system for customizing the environment. It is the second-most-popular IDE for Java development, and, until 2016, was the most popular. Eclipse is written mostly in Java and its primary use is for developing Java applications, but it may also be used to develop applications in other programming languages via plug-ins, including Ada, ABAP, C, C++, C#, Clojure, COBOL, D, Erlang, Fortran, Groovy, Haskell, JavaScript, Julia, Lasso, Lua, NATURAL, Perl, PHP, Prolog, Python, R, Ruby, Rust, Scala, and Scheme. It can also be used to develop documents with LaTeX and packages for the software Mathematica. Development environments include the Eclipse Java development tools (JDT) for Java and Scala, Eclipse CDT for C/C++, and Eclipse PDT for PHP, among others.

wxWidgets Widget toolkit

wxWidgets is a widget toolkit and tools library for creating graphical user interfaces (GUIs) for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes. A wide choice of compilers and other tools to use with wxWidgets facilitates development of sophisticated applications. wxWidgets supports a comprehensive range of popular operating systems and graphical libraries, both proprietary and free, and is widely deployed in prominent organizations.

<span class="mw-page-title-main">Visual programming language</span> Programming language written graphically by a user

In computing, a visual programming language is any programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually. A VPL allows programming with visual expressions, spatial arrangements of text and graphic symbols, used either as elements of syntax or secondary notation. For example, many VPLs are based on the idea of "boxes and arrows", where boxes or other screen objects are treated as entities, connected by arrows, lines or arcs which represent relations.

<span class="mw-page-title-main">Processing</span> Free graphics library

Processing is a free graphical library and integrated development environment (IDE) built for the electronic arts, new media art, and visual design communities with the purpose of teaching non-programmers the fundamentals of computer programming in a visual context.

<span class="mw-page-title-main">FLTK</span>

Fast Light Toolkit is a cross-platform widget library for graphical user interfaces (GUIs), developed by Bill Spitzak and others. Made to accommodate 3D graphics programming, it has an interface to OpenGL, but it is also suitable for general GUI programming.

<span class="mw-page-title-main">Graphical widget</span> Element of interaction in a graphical user interface

A graphical widget in a graphical user interface is an element of interaction, such as a button or a scroll bar. Controls are software components that a computer user interacts with through direct manipulation to read or edit information about an application. User interface libraries such as Windows Presentation Foundation, Qt, GTK, and Cocoa, contain a collection of controls and the logic to render these.

<span class="mw-page-title-main">Graphical user interface builder</span> Software development tool

A graphical user interface builder, also known as GUI designer or sometimes RAD IDE, is a software development tool that simplifies the creation of GUIs by allowing the designer to arrange graphical control elements using a drag-and-drop WYSIWYG editor. Without a GUI builder, a GUI must be built by manually specifying each widget's parameters in source-code, with no visual feedback until the program is run. Such tools usually called the term RAD IDE.

why the lucky stiff Artist and computer programmer

Jonathan Gillette, known by the pseudonym why the lucky stiff, is a writer, cartoonist, artist, and programmer notable for his work with the Ruby programming language. Annie Lowrey described him as "one of the most unusual, and beloved, computer programmers" in the world. Along with Yukihiro Matsumoto and David Heinemeier Hansson, he was seen as one of the key figures in the Ruby community. His pseudonym might allude to the exclamation "Why, the lucky stiff!" from The Fountainhead by Ayn Rand.

<span class="mw-page-title-main">Racket (programming language)</span> Lisp dialect

Racket is a general-purpose, multi-paradigm programming language and a multi-platform distribution that includes the Racket language, compiler, large standard library, IDE, development tools, and a set of additional languages including Typed Racket, Swindle, FrTime, Lazy Racket, R5RS & R6RS Scheme, Scribble, Datalog, Racklog, Algol 60 and several teaching languages.

<span class="mw-page-title-main">Lego Mindstorms NXT</span> Programmable robotics kit

Lego Mindstorms NXT is a programmable robotics kit released by Lego on August 2, 2006. It replaced the first-generation Lego Mindstorms kit, which was called the Robotics Invention System. The base kit ships in two versions: the Retail Version and the Education Base Set. It comes with the NXT-G programming software, or optionally LabVIEW for Lego Mindstorms. A variety of unofficial languages exist, such as NXC, NBC, leJOS NXJ, and RobotC. The second generation of the set, the Lego Mindstorms NXT 2.0, was released on August 1, 2009, featuring a color sensor and other upgraded capabilities. The third generation, the EV3, was released in September 2013.

<span class="mw-page-title-main">Scratch (programming language)</span> Programming language learning environment

Scratch is a high-level block-based visual programming language and website aimed primarily at children as an educational tool for programming, with a target audience of ages 8 to 16. Users on the site, called Scratchers, can create projects on the website using a block-like interface. Projects can be exported to HTML5, Android apps, Bundle (macOS) and EXE files using external tools. The service is developed by the MIT Media Lab, has been translated into 70+ languages, and is used in most parts of the world. Scratch is taught and used in after-school centers, schools, and colleges, as well as other public knowledge institutions. As of May 8, 2022, community statistics on the language's official website show more than 104 million projects shared by over 90 million users, over 686 million total projects ever created, and more than 100 million monthly website visits.

<span class="mw-page-title-main">Sass (stylesheet language)</span> Stylesheet language

Sass is a preprocessor scripting language that is interpreted or compiled into Cascading Style Sheets (CSS). SassScript is the scripting language itself.

<span class="mw-page-title-main">MIT App Inventor</span> Web application development environment

MIT App Inventor is a web application integrated development environment originally provided by Google, and now maintained by the Massachusetts Institute of Technology (MIT). It allows newcomers to computer programming to create application software (apps) for two operating systems (OS): Android and iOS, which, as of 20 January 2023, is in final beta testing. It is free and open-source software released under dual licensing: a Creative Commons Attribution ShareAlike 3.0 Unported license and an Apache License 2.0 for the source code.

The following outline is provided as an overview of and topical guide to the Perl programming language:

<span class="mw-page-title-main">Blockly</span> JavaScript library

Blockly is a client-side library for the programming language JavaScript for creating block-based visual programming languages (VPLs) and editors. A project of Google, it is free and open-source software released under the Apache License 2.0. It typically runs in a web browser, and visually resembles the language Scratch.

<span class="mw-page-title-main">Ubi de Feo</span> Italian creative technologist and educator

Ubi de Feo is a creative technologist and educator. In his off-time he thinks about ways to improve things or invent new ones. Curiosity drives everything in his life and work. In 2007 de Feo began teaching programming, electronics and other things to whoever wants to learn, often developing his own methods to explain really complicated things in a more tangible, down-to-earth fashion. He does do not try to teach things he doesn’t thoroughly understand, which often leads him to learn entirely new subjects in order to explain them to himself and others.

References

  1. The Little Coder's Predicament
  2. The Hackety Manifesto
  3. Art and Code Symposium
  4. Why's talk at Art && Code