Founding a Non-Profit FOSS Company
6 points • 2 comments
Recent @linguae Activity
Founding a Non-Profit FOSS Company
6 points • 2 comments
The simple answer to this question is that not all software at Xerox PARC was written in Smalltalk. In fact, Smalltalk was just one out of a few different languages and programming environments that Xerox PARC used. For example, the Bravo word processor was written in BCPL (https://en.wikipedia.org/wiki/Bravo_(software)). Mesa was also developed at Xerox PARC and was commonly used as an implementation language. Interlisp was also largely developed at Xerox PARC.
From the article: “My heart was broken because Common Lisp is such a fine fine language and it is a joy to work in and hardly anyone uses it in industry. The industry has a lot of code in Java even when it takes much less time to write code in Lisp. What happened to the programmer’s time is more important than the machine’s?”
I think one issue that Common Lisp and many other programming languages face is that while a programmer’s time is more valuable than a machine’s, there are dynamics at play when maintaining commercial software projects that favor coding in more popular languages, such as the ability to easily hire developers knowledgeable in the language and/or paradigm. For example, imagine being a manager of a project written in Haskell that liberally uses functional programming concepts such as monads. It’s easier to hire developers knowledgeable in standard procedural or object-oriented programming languages than it is to find developers knowledgeable in functional programming, and getting a non-FP programmer up to speed on functional programming requires training, which takes time and money.
I love languages like Common Lisp, Scheme, and Smalltalk. However, if I’m working on a team project and my teammates don’t know these languages, then I choose a more common language like Python. Programming is more than just expressing computation; it’s also about communication, and one major purpose of language is to communicate with others.
Disclaimer: I'm live in the Santa Cruz area and visit Cupertino at least once a week.
Cupertino might not be the most active place in terms of things to do, especially regarding nightlife (which the most exciting thing is probably getting donuts at the 24/7 donut place on De Anza south of Apple's old headquarters). However, Cupertino has an amazing selection of Asian restaurants that you can't find in most American suburbs. We're talking authentic Taiwanese, Chinese, and Japanese restaurants. One of my favorite Japanese restaurants in the Bay Area is Ajito on Bollinger Road near De Anza Blvd, which is a Japanese izakaya that specializes in chicken-based dishes. I go there regularly, and during the pandemic I bought take-out hot bento boxes, which are delicious! Another one of my favorite restaurants in Cupertino is a Taiwanese restaurant on Wolfe across the street from Apple's new headquarters called Southland Flavor Café. It has some of the best shrimp fried rice I've ever tasted this side of the Pacific!
I wish most American suburbs had the collection of Asian restaurants that Cupertino has. But outside of the Bay Area and Los Angeles, most American suburbs don't have that extensive of a collection.
Sometimes users have problems installing Linux, not because of lack of ability, but because of lack of driver support. This is especially true for laptops. I remember installing Linux on my desktop in 2004 as an 11th grader, and I remember having to purchase a $50 serial port modem at Fry's (yes, my parents were still on dial-up at the time) because the modem that shipped with my PC was a "Winmodem," one that had many of its core functionality implemented in software that was only available for Windows.
After my freshman year of college ended, in the summer of 2006 I replaced my desktop (which was dual-booting Windows XP and FreeBSD) with a Core Duo MacBook, which was just released two months before. It felt great using a Unix machine where I didn't have to worry about driver support, and where I can run Unix applications and various proprietary software packages such as Microsoft Office without dual-booting, emulation, or virtualization.
I've stayed a Mac user since, though lately I'm in the slow transition of switching away; I just replaced my 2013 MacBook Air with a Microsoft Surface Pro 7 running Windows 10 (I love WSL!), and I plan to replace my 2013 Mac Pro with a Ryzen 7 or 9 build sometime in 2022 or 2023, which will most likely run FreeBSD. In the interim I've installed many Linux and FreeBSD systems for work and for play.
For the past few years I've felt the same way; I've been wrestling with these feelings since the release of the 2016 MacBook Pro. I haven't upgraded my Macs past Mojave due to the loss of 32-bit application support in Catalina (I still depend on some 32-bit applications) and due to the increased iOS-ification of macOS (e.g., certain UI decisions, notarization). However, for a while I lamented the lack of alternatives that are as polished as even Snow Leopard was, which was released in 2009. I would be very happy if there were a version of Snow Leopard with security updates.
For laptops, I've decided to go back to Windows after 15 years of using Macs; I replaced my 2013 MacBook Air with a Microsoft Surface Pro 7 running Windows 10. I'm happy with the purchase; the Surface Pro 7 is an excellent tablet, and Windows Subsystem for Linux has made using Windows more pleasant for me since I spend a lot of time in the terminal. For desktops, as of this moment I'm still using a 2013 Mac Pro as my daily driver, running Mojave. Eventually I would like to replace this with a Ryzen 7 or Ryzen 9 build that will probably run FreeBSD.
I'm keeping my eye on the Hello desktop (https://hellosystem.github.io/docs/) for FreeBSD, which appears to have the goal of providing a desktop environment that is heavily influenced by pre-Yosemite Mac OS X's Aqua interface. If this desktop gains traction, then hopefully there will be applications written that are conformant to Hello's UI guidelines, which are based on pre-Yosemite's Apple Human Interface Guidelines.
I lament the state of personal computing these days, and I wish there were more investment in desktop computing; I talk more about it here (http://mmcthrow-musings.blogspot.com/2020/10/where-did-perso...). If I were independently wealthy, then I'd work on this.
C and Unix are from the early 1970s. They date from an era that predates the prevalence of large, bitmapped displays. There is a famous photo of Dennis Ritchie and Ken Thompson at a teletype in 1972 (http://www.columbia.edu/cu/computinghistory/teletype/ken-and...). When the luxuries of modern IDEs, bitmapped displays, and high amounts of untapped computational power are unavailable, the programming environment and operating system need to adapt to the technologies that are available. The convenience of terse names is more pronounced in an environment of teletypes.
On the flipslide, Smalltalk, also developed in the 1970s, has much longer names. But Smalltalk was developed for the Xerox Alto (https://en.wikipedia.org/wiki/Xerox_Alto), an expensive machine with a bitmapped display, luxurious even by 1980s standards. Lisp also gradually embraced longer names as technology improved; compare the early Lisps of the early 1960s to Common Lisp, which first appeared in the mid 1980s.
C and Unix are products of their relatively spartan environments from the early 1970s, whereas Java, a product of the 1990s, was influenced by Smalltalk, which was born under less austere conditions.
Unfortunately if the OP is located in California, there are very few places left in the state where one can purchase a home for just $300k; these are generally places in the southern half of the Central Valley (e.g., Fresno, Bakersfield) or places in the far north of the state (e.g., Chico, Redding). Sacramento, my hometown, is no longer cheap; last I checked the average price for a home there was around $440k, and homes in Sacramento's nicer suburbs tend to average in the $500k range (and homes in Sacramento's walkable core are even more expensive).
There are out-of-state alternatives where $300k is doable such as Las Vegas, Phoenix, and Houston, but if the OP is a lifelong Californian like myself, then moving to another state may be quite a change.
I'm in a similar situation as the OP. I currently rent an apartment in a coastal area near Silicon Valley that I love. I can afford to purchase a place up to about $425K based on my income, savings, and DTI, but $425K isn't enough to purchase anything near commute distance from Silicon Valley, and while I could have afforded Sacramento two years ago, the pandemic-era rise of prices in the Sacramento area have priced me out of the neighborhoods I want to live in. Thus I still rent.
It's not just man pages. I can't speak for OpenBSD and NetBSD since I'm unfamiliar with those systems, but for FreeBSD there is the excellent FreeBSD Handbook (https://docs.freebsd.org/en/books/handbook/), which is great for learning how to set up and administer a FreeBSD system.
I use FreeBSD on my servers and for research for the following reasons:
1. The documentation is excellent. The man pages are well-written and have useful examples, and the FreeBSD Handbook and Developer Guide are great resources.
2. First-class support for features such as ZFS and Dtrace.
3. This is a preference, but I like the BSDs' conservatism when it comes to adding new features. It seems that new features in the BSDs seem to be more in line with the Unix philosophy (similar to the Solaris and Joyent communities' attitudes), while the Linux community seems to be more willing to add features that may solve problems, but not necessarily in the way that some diehard Unix users would (e.g., PulseAudio, systemd).
With that being said, I use Linux for work and in the WSL environment on my Microsoft Surface tablet. Linux is also a great operating system, and sometimes I need to use Linux instead of FreeBSD for hardware and software support reasons (for example, I use CUDA for my job, which needs Linux).
I wonder how close NetBSD’s design is to 4.4BSD, the last version of BSD from UC Berkeley’s CSRG? My understanding is that FreeBSD has a lot of features that are exclusive to it, such as jails and Capsicum, and FreeBSD also has some Solaris-derived components such as ZFS and Dtrace. I’m under the impression that NetBSD’s specialty is in providing a BSD that is easily portable to a wide range of architectures. Because BSD is not just a kernel, but an entire operating system, NetBSD’s portability makes it attractive when choosing a Unix for “exotic“ hardware.
However, building a business is a different problem from doing research. When one accepts VC funding, the funding comes with the expectation that it will lead to a high-growth business. This is fine when you have an idea that has the potential to “take off” from a business standpoint.
However, there are many research problems where there is no obvious or immediate business application. The aim of such research is different from the aim of investors. This requires a different funding source, one that is willing to embrace the risks that come with research and is willing to do work solely for the advancement of science, with productization being a nice side effect rather than an expectation.
Of course, obtaining such funding is not easy. Part of what makes modern academia such a rat race is because of how competitive it is to procure research funding from funding agencies such as the NSF (disclaimer: this is a US point of view; I’m not very familiar with the situation abroad). My advisor works hard applying for grants, and sometimes they get rejected. I’d love a Genius Grant ($125,000 a year for five years with no strings attached) to work on whatever research I want without any pressures from the funding agency or from managers, but there are only so few awarded per year.
There is also the matter of research freedom in the sense of being free from the pressures of short term thinking and "publish or perish" mentality. I am reminded of Alan Kay's observations (http://worrydream.com/2017-12-30-alan/) about short-term research. I'm also reminded of what the discoverer of the electron, J.J. Thompson, once said in a 1916 speech that resonates with me whenever I think about research:
"If you pay a man a salary for doing research, he and you will want to have something to point to at the end of the year to show that the money has not been wasted. In promising work of the highest class, however, results do not come in this regular fashion, in fact years may pass without any tangible result being obtained, and the position of the paid worker would be very embarrassing and he would naturally take to work on a lower, or at any rate a different plane where he could be sure of getting year by year tangible results which would justify his salary. The position is this: You want one kind of research, but, if you pay a man to do it, it will drive him to research of a different kind. The only thing to do is to pay him for doing something else and give him enough leisure to do research for the love of it."
For me, my dream is to start and grow a non-research lifestyle business that pays the bills, so that way I can spend the rest of my time on research, which is what I'm passionate about.
I use dc all the time, which the article denounced as even worse. dc gets more usage on my machines than most other commands, except for perhaps ls, cd, and vi. Whenever I need to make quick calculations on my computer, it is much more efficient for me to open up a terminal window and type dc than it is for me to use a GUI calculator or to grab my HP-48 graphing calculator. I suppose I could use a Python or Common Lisp REPL, but I love Reverse Polish Notation: less typing!
I'm a lifelong Californian whose lived in Santa Cruz County for nearly nine out of the past 11 years, and as someone who wants to become a CS professor at a teaching university one day, I feel the exact same way. I love California and I don't want to leave the state. However, the housing prices signal to me that if I want to buy a house, I need to have a very high income and maintain it during the length of a 30-year mortgage. Professors are paid well compared to the average Californian, but professors' salaries are generally not enough to afford to purchase a place in the Bay Area or much of Southern California without involving mega-commutes from exurbia (and, thanks to the WFH boom, these exurbs have gone up in price dramatically). There's still some parts of the Central Valley that are affordable for professors and that are too far for Bay Area/Los Angeles mega-commuters, but the nature of academic hiring means that there's no guarantee a position at a place like UC Merced or Fresno State would open when it's time for me to apply for assistant professor jobs.
If I can't find a place in the next few years that is affordable on an $80,000/year salary in California, then I have to move. I'd like to move to a place where a 3-bedroom house in a safe neighborhood costs no more than $400,000, and where there is a diverse population. Ideally I'd like to live in a place that doesn't get too cold in the winter; I'd rather deal with very hot summers (I grew up in Sacramento where it regularly gets above 100 in the summer) than to deal with cold winters.
I've been paying attention to the GNUstep project periodically since 2004, and I can't recall Apple ever supporting the project.
I don't think Facebook, Twitter, and other social media sites are good places for randomly asking out anyone due to etiquette. In fact, even offline there seems to be a growing backlash, at least in American society, toward randomly asking out women.
However, what I believe the author meant by using Facebook and Twitter for dating is that if you have already built a community using these sites and if you are active in that community, it may be possible for you to ask out someone else in that community, provided that both of you already know each other and have spent a significant amount of time interacting with each other. I know someone who met his ex-girlfriend via Instagram sometime eight years ago; she saw his Instagram posts and was a regular commenter, and they started exchanging messages.
I think the key for dating, whether it's online or offline, is being part of a community and being valued in it. I agree with the author that the problem with online dating is that the medium for expressing yourself is limited to a profile photo and a profile description; you are reduced to a résumé. When people are reduced to résumés, then whoever has the best-looking résumé ends up getting responses. Not everybody does well under these circumstances. However, if people were able to know a person's desirable traits that cannot be easily captured in an online dating site's profile, then that person's dating chances may improve. Being a part of a community, whether it's offline or online, gives people a chance to see how people in the community behave and what they think.
But, given my limited success in dating, "you don't have to take my word for it" (with apologies to LeVar Burton).
My understanding of academia is that even tenured professors can still be subject to the same publish-or-perish pressures that non-tenured faculty have. My understanding of tenure is that you cannot be fired without cause, but you can still be fired for not fulfilling the obligations of the job, and maintaining the department’s and university’s expected levels of research output counts. Ultimately it depends on the university.
I wouldn't be so hard on yourself. It's unfortunate that there are a lot of CS degree programs that are basically vocational prep teaching today's tech du jour at the expense of teaching the fundamentals, but this is not a reflection on you, and it's never too late to learn and master the fundamentals. You might not have the time for college classes, but the nice thing about pursuing CS as a hobby is that you set the timeline.
(Note: There is nothing wrong with vocational schools for those who need to learn specific technologies. In fact, many people with CS degrees could benefit from courses in specific technologies. However, the purpose of a bachelor's degree in computer science is to teach students the fundamentals of computer science, and I believe undergraduates students are done a disservice when they are not taught the fundamentals.)
I highly recommend going through the book Structure and Interpretation of Computer Programs (https://mitpress.mit.edu/sites/default/files/sicp/full-text/...). This may be your first exposure to functional programming in Scheme. Even though it was originally designed as the textbook to MIT's introductory CS course (before switching to Python in the late 2000's), this book is useful for anyone interested in computer science, and it's easier to read for those who already know how to program. By the time you get through the end of this book, you will have written a Scheme interpreter, a logic programming interpreter that can handle unification (don't worry about what that means right now), and a Scheme compiler.
Once you finish that book, then it should be easier for your to delve deeper into the topics of your choosing. Want to learn more about computer architecture? I highly recommend getting the latest edition of Patterson and Hennessy's Computer Organization and Design (https://www.elsevier.com/books/computer-organization-and-des...). Want to learn about operating systems? I highly recommend Remzi and Andrea Arpaci-Dusseau's free Three Easy Pieces (https://pages.cs.wisc.edu/~remzi/OSTEP/). For compilers, you already have the dragon book, which should be easier to read once completing SICP.
I’m not exclusively a Mac user. In the past 30 years I’ve also used MS-DOS, every version of Windows since 95 (except for Me and server-based versions like 2003 and 2008), various Linux desktops, Android, ChromeOS, and iOS. I’ve even played around with NeXTstep, Haiku, Pharo, and Plan 9.
The classic Mac OS and pre-Big Sur macOS were the best environments I’ve used from a UI/UX perspective, with Windows 95/98/NT/2000 being worthy runners up.
I agree. The Mac ecosystem has long valued quality, especially when it comes to UI/UX. One of my favorite proprietary software companies is The Omni Group, which has made a lot of very well-done software tools for the Mac, such as OmniGraffle. The company's adherence to Apple's UI guidelines is strict, and its products are wonderful to use. Apple itself has also made excellent software (I'm a longtime macOS user), though I feel that its UI/UX perfectionism has slipped in recent years.