First off, let me apologize for not posting anything for so long. While I have been occasionally pushing minor bugfixes to the Rockets GitHub repository this year, I haven't bothered to update this blog for over a year.
Mostly that's because I've been really busy. Work has taken up a lot of my time this year. But that's no excuse for not popping in and saying "hello" once in a while, even if there is no progress to report.
Also, and let's face it, 2020 has been a terrible year for everyone. So if there was ever a year to just throw away and not think about any more, 2020 was it.
Anyway, here's where we are regarding the Rockets 2.0 release and beyond.
- I want to fix a few more minor bugs, and add the RSS feed feature and a change password feature. But there are no more features to add for the release.
- Once this is done, I want to start working on a comprehensive documentation set for Rockets. I've started this here, but it's just a template so far: http://newlisponrockets.github.io/newLISP-on-Rockets/
- I want the doc set to be an in-depth look at the framework, not just to make it easier for folks to understand, but to help myself understand it better in the future.
- The 2.0 release won't require the doc set to be finished, but I want it to be reasonably well-populated.
- Part of the docs will also include super-simple setup instructions for putting a Rockets installation on Linode, which is a great cloud service that's cheaper than AWS and offers a starting server at $5 per month, making Rockets affordable by anyone.
- My timeline for this release is July 1, 2021. If it's finished earlier, great! But that's the final date for the release.
I also want to let you know that I"m already thinking about Rockets 3.0. I have some really interesting ideas and plans for making Rockets a kind of "virtual space" for people to hang out in, something that you can customize to your own aesthetic tastes and make it a hub for you and your friends to hang out. I know that Facebook and Twitter have taken over this space, but I have ideas for a kind of counter to this, a very personal thing that anyone can run and have complete control over their own data.
Anyway, that's all, and I hope everyone has an amazing 2021!
You'll notice a neat little lock icon in the upper left of the URL bar, courtesy of Let's Encrypt, a non-profit organization that hands out SSL certificates for websites. You just have to install open-source software on the server, which proves you are the owner of a website, and you can automatically get a certificate.
I have been putting off installing it for a long time, because I was worried that it might break something. But it was super quick and easy to set up. Here's the guide I used (for Ubuntu 14, but worked on 18 just as well):
Well, I've finally done it, I've pulled the trigger and switched the DNS for newlisponrockets.com from the old server to the new one.
Everything should work the same, only the new server is a lot faster.
I set up the old server in 2013. It was a t1.micro instance on AWS, which is no longer supported by Amazon. The new server is a t3.nano, which is cheaper yet faster. Ah, technology!
Please let me know if you have any problems with the new site.
EDIT: One thing that is different with the t3.nano is that it has slightly less RAM than the t1.micro instance. I also run a MySQL server on this box and I may need to play with some settings. So if you see an "out of memory" message this is what has happened.
Why use such a small server? It's a good way to test how well Rockets runs given hardware constraints. In the future I might upgrade to something beefier. It's also a way to show off the power of Rockets! For example, this page rendered in 6 milliseconds. That's pretty impressive!
This is just a rough list of the remaining tasks that I need to finish in order to get Rockets 2.0 out the door:
- Migrate last author and last post date with script DONE
- Update posting page to update last author and last post date, sort forums by last post date DONE
- Editing of posts and comments after posting (admins only?) DONE
- Create post link for admins on front page DONE
- Comics support (as on my home page) DONE
- Podcast support (as on my home page) -- Basically done, barring some minor tweaks --
- RSS support
- Font changes / color changes in CSS in Admin panel (would be neat to have different colors for each tab like Writing Holmes)
- Multiple site support (via Apache)
- set Apache permissions on .lisp and .db files
- testing installation script on bare Linux VM
Some of these will take more time than others, but I'll revisit this thread from time to time to update my progress.
This is a test post to test tags. I've added the "Test" to this post.
EDIT: Now testing image uploading
If you haven't yet, read my previous post here to get the background information: http://newlisponrockets.com/rockets-item.lsp?p=123
This thread is where I will update all new progress on newLISP on Rockets 2.0.
When I started to write Rockets, I had a crazy dream. Then the dream came true, and I didn't know what to do.
The dream of newLISP on Rockets was to produce something unique and interesting, and share it with the world. I wanted to show that you could make a lightweight web framework that could make functional and fast websites with a minimal amount of code. And I wanted to do it with LISP, because I had fallen in love with that language.
I had some experience making websites with the Dragonfly framework, including my own personal site. That framework wasn't being updated any more, though, as the author had moved on to other things. So using Dragonfly as a starting point, I wrote my own framework. It was an intellectual exercise for me, and when it was finished I didn't have much else I wanted to do with it. It was out in the world, and other people could use it for free and add to it or extend it as they wished.
That was five years ago.
Since then, I got a new job where I used Rockets to launch one major internal tool, and prototype others. But the company I worked for was all-in on Python, and so I was strongly encouraged to learn and use that language. There's nothing wrong with Python-- it's a clean and flexible all-purpose language with strong library support and a large community. There is a lot of comfort and safety in Python.
In that time, I've read essay after essay from people who once used LISP to do amazing things and who have all moved on. Paul Graham, after failing to convert the world to his own new Lisp dialect, launched the successful Y Combinator startup incubator. Andy Gavin, who by his own admission was a "diehard LISP advocate" for twenty years, coded Crash Bandicoot and four Jak & Daxter games in his own Game Oriented Object LISP language. Now he codes in Ruby and says that "Libraries and implementation matter a lot. Momentum too." And the author of the Dragonfly framework, after bemoaning that not enough people picked up his object-oriented framework for newLISP, left the language entirely.
And here I was, coding in Python at work and thinking of LISP fondly, like one does of a first love. The years went by and memories got hazier. Was I just going to be the next person in a long line of coders who abandoned LISP?
Surely all these smart people had a point. Why go it alone with LISP when you can use something popular like Python and enjoy tons of libraries and support? Why struggle with something that's so different and unpopular and a bit weird?
But then again, why did all these smart people spend so many years (and even decades) doing exactly that?
In my spare time, I am a science fiction author. I have a new book coming out next year and I needed a website to help market it. I thought about setting up a site on Squarespace (yes, I listen to a lot of podcasts!) It's fast and easy, you can customize it to look like you want and... it would be just like all the other author book websites that nobody reads. I wanted something very different and unique. Something nobody else would have.
And then I thought about Rockets.
Now, I had already partially converted my personal site from Dragonfly to Rockets, but this was just using the new headers and login system, and doing some find-replace on a few functions (you can read about how to do that here: http://newlisponrockets.com/rockets-item.lsp?p=85). Much of the site was a bunch of custom code that just worked for my personal site, and wasn't the same as the site you get from the newLISP on Rockets GitHub repository. So Rockets did some things and my personal blog did some other things, but neither of them did what I wanted from a new website to promote my book. And my personal website was looking a bit old-fashioned anyway, and it was running on an ancient t1.micro instance on AWS that was expensive and barely supported and needed to be moved over to a new instance years ago.
That's when it hit me. I needed a new version of Rockets. One where I could recreate my personal blog and also have a marketing site for my new book, using the same framework. With a simple Apache configuration, Rockets already supports multiple sites-- I have several different sites running on that one AWS instance (see here for how that works: http://newlisponrockets.com/rockets-item.lsp?p=99). But I want a single codebase that can make different-looking sites depending on what you want.
newLISP on Rockets has a few advantages other than uniqueness. It is fast--wickedly fast. And it's simple-- the whole design principle was to make the simplest possible framework for making dynamic websites. What it's missing are features. I had thought that other people would take the basic Rockets framework and add their own features, but I think a lot more people would rather have a simple website with all the basic features ready to go.
To get there will take some time and effort on my part. But I have a good motivation to do so-- my own new website-- and I'm writing out a plan for me to get there. I'm going to make a new thread to report on the work being done. At the end, I hope to launch Rockets 2.0-- a basic but full-featured blog, ready to go, out of the box, batteries included.
I'm excited about the journey!
It's been a while since I've updated this site, but it's not because I haven't been working on Rockets! In fact, I've been using and improving it at my job, and I'm doing work for not only the 1.0 release but some design work for what I want to see in Rockets 2.0!
In the mean time, I've made a new script that will do all the installation and configuring for Rockets on a bare-bones Ubuntu 14 LTS server (NOTE:The script has also been tested and adapted so it will work on Ubuntu 16 and 18). All you have to do is install the OpenSSH server when you're creating your server, then log in via SSH, type
sudo chmod +x install_rockets.sh
Pre-compiled binaries for newlisp are available for Ubuntu and Debian, but getting a RPM for CentOS is a bit harder. Another option is to compile from source, which is always fun. I tried this recently on CentOS 6.5.
First, get the source. Go to newlisp.org and go to the Downloads page. You will find something that looks like "download from newlisp.org: newLISP v.10.6.0 source". Right click on that link and copy the URL to the clipboard.
Then, from an SSH shell, type
wget <right click to paste the link here>
This will download the source code in tgz format. Unzip it by typing:
tar zxvf newlisp-10.6.0.tgz
Then cd to the new directory. This is where you'll compile and build the source code.
First, however, you will need some essential libraries, and you'll have to add some links so that the makefile knows where to find them.
sudo yum install libffi-devel
sudo yum install readline-devel
sudo ln -s /usr/lib64/libffi-3.0.5/include/ffi.h
sudo ln -s /usr/lib64/libffi-3.0.5/include/ffitarget.h
sudo make test
sudo make install
Edit file: /usr/share/newlisp/modules/sqlite3.lsp
(set 'files (list
"/usr/lib64/libsqlite3.so.0.8.6" ; CentOS <<<<<<<< add this
"/usr/lib/libsqlite3.so" ; SuSE Linux
"/usr/local/lib/libsqlite3.so" ; Linux, BSD, Solaris
"/usr/pkg/lib/libsqlite3.so" ; NetBSD
"/usr/local/lib/libsqlite3.so.13.3" ; OpenBSD 4.6
"/usr/lib/libsqlite3.0.dylib" ; Mac OSX Darwin
(string (env "PROGRAMFILES") "/sqlite3/sqlite3.dll") ; Win32/MinGW
Edit file: /usr/share/newlisp/modules/crypto.lsp
(set 'files '(
"C:/Program Files/gnuwin32/bin/libeay32.dll" ; XP
"C:/Program Files (x86)/gnuwin32/bin/libeay32.dll" ; 7
"/usr/lib64/libcrypto.so.10" ; CentOS <<<<<<<<< add this
"/usr/lib/x86_64-linux-gnu/libcrypto.so" ; Ubuntu 12.04 LTS
"/usr/lib/i386-linux-gnu/libcrypto.so"; Ubuntu 12.04
"/lib/i386-linux-gnu/libcrypto.so.1.0.0" ; UBUNTU Linux 13.04
"/usr/lib64/libcrypto.so" ; Fedora, CentOS 6.x
"/usr/lib/libcrypto.so.18.0" ; OpenBSD 4.6
"/usr/lib/libcrypto.so.19.0" ; OpenBSD 5.0
The little cartoon rocket was cute, but I think it's time for a more exciting image for the front page.
I modeled and rendered the rocket image in Blender and made the textures in Photoshop. The background is a photo from NASA.