Joel Spolsky

Last updated

Joel Spolsky
Joel Spolsky 2014-06-18.jpg
Joel Spolsky at the Stack Exchange London office, June 2014.
Born1965 (age 5859)
Albuquerque, New Mexico, United States
NationalityAmerican, New Zealand, Israeli, Dual citizenship [1]
Alma materYale University
Occupation(s)Software developer
CEO, Stack Exchange Network
Co-founder, Stack Overflow, Fog Creek Software and Trello
Website joelonsoftware.com

Avram Joel Spolsky (born 1965) is a software engineer and writer. He is the author of Joel on Software, a blog on software development, and the creator of the project management software Trello. [2] He was a Program Manager on the Microsoft Excel team between 1991 and 1994. He later founded Fog Creek Software in 2000 and launched the Joel on Software blog. In 2008, he launched the Stack Overflow programmer Q&A site in collaboration with Jeff Atwood. Using the Stack Exchange software product which powers Stack Overflow, the Stack Exchange Network now hosts over 170 Q&A sites.

Contents

Biography

Spolsky was born to Jewish parents and grew up in Albuquerque, New Mexico, and lived there until he was 15. [3] He then moved with his family to Israel, where he attended high school and completed his military service in the Paratroopers Brigade. [3] He was one of the founders of the kibbutz Hanaton in Lower Galilee. [4] In 1987, he returned to the United States to attend college. He studied at the University of Pennsylvania for a year before transferring to Yale University, where he was a member of Pierson College and graduated in 1991 with a BS summa cum laude in computer science. [3]

Spolsky started working at Microsoft in 1991 [5] as a program manager on the Microsoft Excel team, where he designed Excel Basic and drove Microsoft's Visual Basic for Applications strategy. [6] He moved to New York City in 1995 where he worked for Viacom and Juno Online Services. [3] In 2000, he founded Fog Creek Software and created the Joel on Software blog. [5] Joel on Software was "one of the first blogs set up by a business owner". [7]

In 2005, Spolsky co-produced and appeared in Aardvark'd: 12 Weeks with Geeks , a documentary documenting Fog Creek's development of Project Aardvark, a remote assistance tool. [8]

In 2008, Spolsky co-founded Stack Overflow, [9] a question and answer community website for software developers, with Jeff Atwood. He served as CEO of the company until Prashanth Chandrasekar succeeded him in the role on October 1, 2019. [10] After Stack Overflow's sale in June 2021 for $1.8 billion, Spolsky stepped down as the company's Chairman. [11]

In 2011, Spolsky launched Trello, an online project management tool inspired by Kanban methodology. [12] The tool was acquired by Atlassian in January 2017 for $425 million. [13]

In 2016, Spolsky announced the appointment of Anil Dash as Fog Creek Software's new CEO, with Spolsky continuing as Stack Overflow's CEO and as a Fog Creek Software board member. The company has since been renamed Glitch. [14] Following its sale to Fastly in May 2022, Spolsky stepped down as Chairman. [15]

In 2019, Spolsky revealed he was the chairman of the open-source data platform, HASH. [16]

He is the author of five books, including User Interface Design for Programmers and Smart and Gets Things Done. He is also the creator of "The Joel Test". [17]

Spolsky coined the term fix it twice for a process improvement method. It implies a quick, immediate solution for fixing an incident and a second, slower fix for preventing the same problem from occurring again by targeting the root cause. [18] His use of the term Shlemiel the painter's algorithm , [19] referring to an algorithm that is not scalable due to performing too many redundant actions, was described by salon.com's Scott Rosenberg as an example of good writing "about their insular world in a way that wins the respect of their colleagues and the attention of outsiders." [20]

Spolsky made an appearance at the WeAreDevelopers Conference 2017, stating how developers are writing the script for the future. [21] In his speech, Spolsky talks about how software is eating the world, how it is becoming more evident in everyday life as people interact with more software on a day-to-day basis, and how developers are helping to shape how the world will work as technology keeps evolving. He uses the metaphor "we are just little vegetables floating in software soup", referring to our constant use of software for the most mundane activities, including work, social networking, and even taking a cab.

Personal life

In 2015, Spolsky announced his marriage to his husband, Jared, on social media and his blog. [22] [23] [24] He lives on the Upper West Side of Manhattan. [22]

Schlemiel the Painter's algorithm

In software development, a Shlemiel the painter's algorithm (sometimes, Shlemiel the painter algorithm, not to be confused with "Painter's algorithm") is a method that is inefficient because the programmer has overlooked some fundamental issues at the very lowest levels of software design. The term was coined in 2001 by Spolsky, who used a Yiddish joke to illustrate a certain poor programming practice: Schlemiel (also rendered Shlemiel) is to paint the dotted lines down the middle of a road. Each day, Schlemiel paints less than he painted the day before, and complains that it is because each day he gets farther away from the paint can, and it takes him longer to go back and put paint on his brush. [25]

The inefficiency to which Spolsky was drawing an analogy was the poor programming practice of repeated concatenation of C-style null-terminated strings. [25] The first step in every implementation of the C standard library function for concatenating strings is determining the length of the first string by checking each character to see whether it is the terminating null character. Next, the second string is copied to the end of the first.

In Spolsky's example, the "Schlemiels" occur when multiple strings are concatenated together:

strcat(buffer,"John");// Here, the string "John" is appended to the bufferstrcat(buffer,"Paul");// Now the string "Paul" is appended to thatstrcat(buffer,"George");// ... and "George" is appended to thatstrcat(buffer,"Ringo");// ... and "Ringo" is appended to that

After "Paul" has been appended to "John", the length of "JohnPaul" (or, more precisely, the position of the terminating null character) is known within the scope of strcat() but is discarded upon the end of function. Afterwards, when strcat() is told to append "George" to "JohnPaul", strcat() starts at the very first character of "JohnPaul" (which is "J") all over again just to find the terminating null character. Each subsequent call to strcat() has to compute the length again before concatenating another name to the buffer. Analogous to Schlemiel not carrying the paint bucket (or the string's length) with him, all the subsequent strcat()s have to "walk" the length of the string again to determine where the second string should be copied. As more data is added to buffer with each call to strcat(), that terminating null character also gets farther away from the beginning, meaning that subsequent calls are increasingly slow.

The problems illustrated by Spolsky's example are not noticed by a programmer who is using a high-level language and has little or no understanding of how the language implementation works, including some basic knowledge of its underlying principles and functions.

Publications

See also

Related Research Articles

<span class="mw-page-title-main">Buffer overflow</span> Anomaly in computer security and programming

In programming and information security, a buffer overflow or buffer overrun is an anomaly whereby a program writes data to a buffer beyond the buffer's allocated memory, overwriting adjacent memory locations.

The Cyclone programming language was intended to be a safe dialect of the C language. It avoids buffer overflows and other vulnerabilities that are possible in C programs by design, without losing the power and convenience of C as a tool for system programming. It is no longer supported by its original developers, with the reference tooling not supporting 64-bit platforms. The Rust language is mentioned by the original developers for having integrated many of the same ideas Cyclone had.

<span class="mw-page-title-main">String (computer science)</span> Sequence of characters, data type

In computer programming, a string is traditionally a sequence of characters, either as a literal constant or as some kind of variable. The latter may allow its elements to be mutated and the length changed, or it may be fixed. A string is generally considered as a data type and is often implemented as an array data structure of bytes that stores a sequence of elements, typically characters, using some character encoding. String may also denote more general arrays or other sequence data types and structures.

Defensive programming is a form of defensive design intended to develop programs that are capable of detecting potential security abnormalities and make predetermined responses. It ensures the continuing function of a piece of software under unforeseen circumstances. Defensive programming practices are often used where high availability, safety, or security is needed.

Memory corruption occurs in a computer program when the contents of a memory location are modified due to programmatic behavior that exceeds the intention of the original programmer or program/language constructs; this is termed as violation of memory safety. The most likely causes of memory corruption are programming errors. When the corrupted memory contents are used later in that program, it leads either to program crash or to strange and bizarre program behavior. Nearly 10% of application crashes on Windows systems are due to heap corruption.

Buffer overflow protection is any of various techniques used during software development to enhance the security of executable programs by detecting buffer overflows on stack-allocated variables, and preventing them from causing program misbehavior or from becoming serious security vulnerabilities. A stack buffer overflow occurs when a program writes to a memory address on the program's call stack outside of the intended data structure, which is usually a fixed-length buffer. Stack buffer overflow bugs are caused when a program writes more data to a buffer located on the stack than what is actually allocated for that buffer. This almost always results in corruption of adjacent data on the stack, which could lead to program crashes, incorrect operation, or security issues.

A "return-to-libc" attack is a computer security attack usually starting with a buffer overflow in which a subroutine return address on a call stack is replaced by an address of a subroutine that is already present in the process executable memory, bypassing the no-execute bit feature and ridding the attacker of the need to inject their own code. The first example of this attack in the wild was contributed by Alexander Peslyak on the Bugtraq mailing list in 1997.

<span class="mw-page-title-main">Rands</span> Blogger, software engineering manager, and webcomic author

Rands is the pen name and alter ego of Michael Lopp, a blogger, software engineering manager, and webcomic author. Lopp originally used the name "Rands" as his chat room handle, and it is his persona when writing about software management. Rands is his wife's maiden name, though they were dating at the time he chose it. In 2010, he began working at Palantir after more than eight years at Apple. In June 2014 after 4 years he left Palantir for Pinterest. He became Vice President of Engineering at Slack in May 2016, then left Slack in 2019 to return to Apple as Senior Director of Engineering in 2020.

The OpenBSD operating system focuses on security and the development of security features. According to author Michael W. Lucas, OpenBSD "is widely regarded as the most secure operating system available anywhere, under any licensing terms."

In software development, a leaky abstraction is an abstraction that leaks details that it is supposed to abstract away.

<span class="mw-page-title-main">Glitch (New York company)</span> American software company

Glitch is a software company specializing in project management tools. Its products included project management and content management, and code review tools. Fastly acquired the company in 2022.

Schlemiel is a Yiddish term meaning "inept/incompetent person" or "fool". It is a common archetype in Jewish humor, and so-called "schlemiel jokes" depict the schlemiel falling into unfortunate situations.

Secure coding is the practice of developing computer software in such a way that guards against the accidental introduction of security vulnerabilities. Defects, bugs and logic flaws are consistently the primary cause of commonly exploited software vulnerabilities. Through the analysis of thousands of reported vulnerabilities, security professionals have discovered that most vulnerabilities stem from a relatively small number of common software programming errors. By identifying the insecure coding practices that lead to these errors and educating developers on secure alternatives, organizations can take proactive steps to help significantly reduce or eliminate vulnerabilities in software before deployment.

<span class="mw-page-title-main">Stack Overflow</span> Question-and-answer website for computer programmers

Stack Overflow is a question-and-answer website for computer programmers. It is the flagship site of the Stack Exchange Network. It was created in 2008 by Jeff Atwood and Joel Spolsky. It features questions and answers on certain computer programming topics. It was created to be a more open alternative to earlier question and answer websites such as Experts-Exchange. Stack Overflow was sold to Prosus, a Netherlands-based consumer internet conglomerate, on 2 June 2021 for $1.8 billion.

<span class="mw-page-title-main">Jeff Atwood</span> American software developer and entrepreneur (born 1970)

Jeff Atwood is an American software developer, author, blogger, and entrepreneur. He co-founded the question-and-answer network Stack Exchange, which most notably contains the Stack Overflow website for computer programming questions. He is the owner and writer of the computer programming blog Coding Horror, focused on programming and human factors. As of 2012, Jeff Atwood's most recent project was Discourse, an open source Internet discussion platform.

Stack Exchange is a network of question-and-answer (Q&A) websites on topics in diverse fields, each site covering a specific topic, where questions, answers, and users are subject to a reputation award process. The reputation system allows the sites to be self-moderating. As of March 2023, the three most actively-viewed sites in the network are Stack Overflow, Unix & Linux, and Mathematics.

Trello is a web-based, kanban-style, list-making application and is developed by Trello Enterprise, a subsidiary of Atlassian. Created in 2011 by Fog Creek Software, it was spun out to form the basis of a separate company in New York City in 2014 and sold to Atlassian in January 2017.

The C programming language has a set of functions implementing operations on strings in its standard library. Various operations, such as copying, concatenation, tokenization and searching are supported. For character strings, the standard library uses the convention that strings are null-terminated: a string of n characters is represented as an array of n + 1 elements, the last of which is a "NUL character" with numeric value 0.

UserVoice is a San Francisco–based Software-as-a-Service company that develops customer engagement tools.

In computer security and programming, a buffer over-read is an anomaly where a program, while reading data from a buffer, overruns the buffer's boundary and reads adjacent memory. This is a special case of violation of memory safety.

References

  1. Spolsky, Joel; Atwood, Jeff (July 8, 2008). "Stack Overflow podcast #13" . Retrieved August 4, 2013.
  2. Joel Spolsky interviewed on the TV show Triangulation on the TWiT.tv network
  3. 1 2 3 4 Spolsky, Joel (October 30, 2005). "About Joel Spolsky". Joel on Software. Retrieved August 4, 2013.
  4. Spolsky, Joel. "Joel Spolsky". joel.spolsky.com. Archived from the original on March 18, 2008. Retrieved August 4, 2013.
  5. 1 2 Livingston, Jessica (2007). "Interview: Joel Spolsky Co-Founder, Fog Creek Software". Founders at Work: Stories of Startups' Early Days. Apress. ISBN   9781590597149 . Retrieved August 4, 2013.
  6. "An Interview with Joel Spolsky". SoftLetter.com. Archived from the original on August 9, 2007. Retrieved August 4, 2013.
  7. Spolsky, Joel. "How Hard Could it Be". Inc. Retrieved August 4, 2013.
  8. "Joel Spolsky". Internet Movie Database . Retrieved August 4, 2013.
  9. Atwood, Jeff (April 16, 2008). "Introducing Stackoverflow.com". Coding Horror. Archived from the original on February 3, 2010. Retrieved August 4, 2013.
  10. "Announcing Stack Overflow's New CEO". Stack Overflow . September 24, 2019. Retrieved September 24, 2019.
  11. Dummett, Ben (June 2, 2021). "Stack Overflow Sold to Tech Giant Prosus for $1.8 Billion". Wall Street Journal. Archived from the original on October 29, 2021. Retrieved June 2, 2021.
  12. Spolsky, Joel (January 6, 2012). "How Trello is different" . Retrieved August 4, 2013.
  13. Pryor, Michael. "Trello Is Being Acquired By Atlassian" . Retrieved February 2, 2017.
  14. Spolsky, Joel (December 6, 2016). "Anil Dash is the new CEO of Fog Creek Software" . Retrieved December 11, 2016.
  15. "Fastly announces acquisition of Glitch". May 19, 2022.
  16. "So, how's that retirement thing going, anyway? – Joel on Software". December 5, 2019.
  17. The Joel Test
  18. Spolsky, Joel (February 19, 2007). "Seven steps to remarkable customer service" . Retrieved August 4, 2013.
  19. Spolsky, Joel (December 11, 2001). "Back to Basics" . Retrieved January 6, 2022.
  20. Rosenberg, Scott (December 9, 2004), "The Shlemiel way of software", salon.com, archived from the original on June 6, 2011, retrieved January 28, 2014.
  21. Archived at Ghostarchive and the Wayback Machine : "Developers Are Writing the Script for the Future - Joel Spolsky @ WeAreDevelopers Conference 2017". YouTube .
  22. 1 2 "About Joel Spolsky" . Retrieved June 27, 2015.
  23. "stackoverflow" . Retrieved June 27, 2015.
  24. "Untitled (Joel Spolsky on Twitter)" . Retrieved June 27, 2015.
  25. 1 2 Spolsky, Joel (December 11, 2001). "Back to Basics". Joel on Software. Self-published.