Joel Spolsky | |
---|---|
Born | 1965 (age 59–60) Albuquerque, New Mexico, United States |
Nationality | American, New Zealand, Israeli, Dual citizenship [1] |
Alma mater | Yale University |
Occupation(s) | Software developer CEO, Stack Exchange Network Co-founder, Stack Overflow, Fog Creek Software and Trello |
Website | joelonsoftware |
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.
This section may require cleanup to meet Wikipedia's quality standards. The specific problem is: WP:PROSELINE.(February 2023) |
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.
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]
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.
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.
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.
In computer programming, a rope, or cord, is a data structure composed of smaller strings that is used to efficiently store and manipulate longer strings or entire texts. For example, a text editing program may use a rope to represent the text being edited, so that operations such as insertion, deletion, and random access can be done efficiently.
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."
A guard byte is a part of a computer program's memory that helps software developers find buffer overflows while developing the program.
The Java programming language and Java software platform have been criticized for design choices including the implementation of generics, forced object-oriented programming, the handling of unsigned numbers, the implementation of floating-point arithmetic, and a history of security vulnerabilities in the primary Java VM implementation, HotSpot. Software written in Java, especially its early versions, has been criticized for its performance compared to software written in other programming languages. Developers have also remarked that differences in various Java implementations must be taken into account when writing complex Java programs that must work with all of them.
A leaky abstraction in software development refers to a design flaw where an abstraction, intended to simplify and hide the underlying complexity of a system, fails to completely do so. This results in some of the implementation details becoming exposed or 'leaking' through the abstraction, forcing users to have knowledge of these underlying complexities to effectively use or troubleshoot the system.
Glitch, Inc. 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.
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.
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.
Jeff Atwood is an American software developer, author, blogger, and entrepreneur. He co-founded the question-and-answer network Stack Exchange, which contains the Stack Overflow website for computer programming questions. Atwood is the owner and writer of the computer programming blog Coding Horror, focused on programming and human factors. As of 2012, his 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 developed by 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.