It used to be that Firefox, Opera and others were the "alternative" Web browsers, but in an age of forced ballot screens that's not entirely accurate. In fact, one could say that the more experienced a user is the further and faster they run from Internet Explorer.
Excluding the "big five" you're undoubtedly familiar with (IE, Firefox, Chrome, Opera, and Safari), there are many little-known browsers that are potentially even more suitable for your needs, no matter how basic or advanced.
I *love* this browser
This week we are taking a look at six truly alternative browsers and what separates them from the rest of the pack. This is far from an all-inclusive list, and we'd love to hear if you happen to be using any of these yourself or perhaps there's yet another unheard of browser that we missed. In alphabetical order, the browsers:
Why you care: Arora is an open source, cross-platform program that has a sensible feature set for the average user, such as built-in ad blocking, private browsing, session management and anything else you might expect from a basic browser. It's a worthy alternative to Chrome (it's based on the same WebKit engine) if you're interested in a lightweight solution but want something not branded by Google.
Bootstrap provides a solid foundation for any website, irrespective of project size. It contains Reboot, which is based on Normalize.css and helps level out browser differences for various page elements. Bootstrap also provides great typography. Even basic HTML form elements like checkboxes, radio buttons, select options, etc., have been restyled to give them a modern look. I use Bootstrap because it saves me a considerable amount of effort.
Mac is a great platform to get your work done, and, for me, being able to help build Vivaldi for the Mac is a privilege. Unlike Windows, where the standard browser used to be the worst browser in the world (no offense), the Mac has always shipped with the adequate Safari browser.
For many, Safari is enough to get by. But if you are a pro Mac user or would like to be one, there are good reasons to explore Safari alternatives for your Mac. If nothing else, this will rekindle your love for creativity and customization.
If you are not using Mouse Gestures already, you are in for a treat. In Vivaldi, they are on by default. Simply press the right mouse button down, keep it pressed while moving the mouse left, about 1 centimeter. Then release. After a bit of practice, I bet this will be your preference too!
macOS offers the ability to tile fullscreen windows, which is a powerful feature. I sometimes used that when commuting to work (remember those days ?). Now that train travel is replaced with video conferencing, I often attend meetings in the browser.
What does that mean? The news, analysis and community conversation found here is funded by donations from individuals. Make a gift of any amount during the Winter Member Drive to support this resource for everyone.
Microsoft 365, the company's subscription-based app bundle, will say its farewell to the browser this August. The video-conferencing platform, Microsoft Teams, already buried Internet Explorer last November.
Yet Explorer refused to die. Microsoft tried to revitalize its image by acknowledging the browser's bad rap. In 2012, it launched a playful ad campaign rebranding Explorer as "the browser you loved to hate."
In a 2014 "Ask Me Anything" discussion on Reddit, Microsoft engineers who worked on the browser said the company had debated renaming Explorer to "separate ourselves from negative perceptions that no longer reflect our product today."
On social media, people familiar with Explorer paid tribute to a flawed browser. "Internet Explorer being reliably unreliable, what a legacy," wrote Twitter user Adriana Figueroa. Others were surprised Explorer was still kicking.
A few years back I created a few small video games using the Lua-based game development framework LÖVE (or love2d). Because they are so small, it doesn't make sense to distribute these games for desktop platforms. But they are great as browser games, so I used Tanner Rogalsky's love.js to convert the games to JavaScript.
The first game I published this way was my Minesweeper clone. This was years back, using LÖVE version 0.10.0. Back then the process was more complicated, but also more reliable. Now the love2d engine is at version 11.3 (they dropped the leading zero), and sadly love.js has not been able to keep up.
Despite this, it is still possible to build your LÖVE games using love.js, which I recently went through for my Tetris clone. But there are some things to look out for. So in this article we will go through the required steps, and add an extra section for troubleshooting common errors.
Although you technically don't need to have LÖVE or Lua installed for the actual build process, I do recommend installing it when developing LÖVE games ?! Besides that, make sure that you have Node.js installed so you can use NPM. Then use NPM to install the latest version of love.js.
With love.js installed we can build our love game for the web. We can do this with either a game directory or a .love file. It is recommended to use a .love file as this makes sure that only the necessary files are included, keeping the bundle size smaller.
Not all current Lua and LÖVE functionality is available in love.js, but luckily most is. These bullet points discuss the most important limitations. This list has information from love.js, LoveWebBuilder, the LÖVE forums, and my own experiences.
We can create a .love file by bundling all game files in a ZIP file and giving it a .love extension. Depending on your platform, this can be done in different ways. There is usually an option in your file explorer, but on Linux and macOS you can also use the zip command line utility.
When running the command it is important to set the --memory flag to a high enough value as this cannot be changed after the build. Generally the default option of 16MB should be doable, but it can't hurt to go a bit higher. For my Tetris game I just opted for 64MB as a ceiling.
Now this next step is entirely optional. If you want you can just copy over your generated code to any web server to host it, but Docker is a great tool for simplifying deployments. By Dockerising you essentially automate the build process, which saves time if you need to repeat the process.
Once we created the Dockerfile, we tell Docker to base our image on an existing public Dockerfile, called node:10. We add as build, which gives the Docker image the name build, so we can refer to this Docker image later on.
Next we add a few lines to the Dockerfile to copy over all game files to the Docker image. This is similar to creating a .love file, but we put all game files in a folder named /app/src instead of a ZIP file.
In the previous steps we told Docker what files it needs. Now we tell Docker what it needs to do with these files. In our case, it should install love.js and run the correct love.js command, like we did manually in step 3. This will take the game files found in /app/src and place the generated JavaScript game in /app/dist.
After the build process is completed, we need to tell Docker how it should serve the generated files. For this we will create a new Docker image within the same Dockerfile, based on the nginx image. We then tell Docker to copy the files from the other image, that we named build earlier. The nginx image then automatically serves all files found under /usr/share/nginx/html.
If you followed the steps outlined above, you should be able to run your game in the browser with or without Docker. However, it's possible that you still run into issues. So in this section we discuss some errors that I experienced myself, but if you run into something else, leave a comment below.
If the Lua errors only occur in the browser, it is most likely that not all required files were included. So double check that you included all files in your .love file or Dockerfile. Note that these are likely to be different files than those in the example.
It is also important to reiterate that love.js does not work with system-installed libraries, so any libraries like middleclass or penlight need to be included as Lua files in your game folder.
If your game is not showing after loading the page, you should check the JavaScript console for errors. In most browsers you can right click the page and select Inspect or Inspect element, then navigate to Console. This shows all JavaScript errors.
The console will always show some errors about threads or audio, because these features are not working reliably in the browser. These errors can be ignored, although they might be difficult to distinguish from more important errors.
The Dockerfile assumes that your config function signature is function love.conf(t). But it is possible that you gave t another name, like tbl or config. In that case you should adjust your Dockerfile accordingly.
If your audio stops playing all of a sudden, you might have forgotten to set your audio sources are set to "static". When importing audio files with love.audio.newSource, make sure that the second parameter is set to "static" - see the example below. Note that the official LÖVE wiki recommends using "stream" instead of "static" for background music, but this advice should be disregarded when using love.js.
The good thing about the methods described in this article is that it can be largely automated. Either by using Docker, or by adding the build process to a Makefile. This also means that the deployment of your game can be automated like with most other web development.
But maybe that is not important to you. Maybe you don't want to go through all these steps just to build your game for the browser. Or maybe you don't plan on repeating this deployment, so you don't value the automation.
In that case, there is another tool that is built on top of love.js, called LoveWebBuilder by Bernhard Schelling. It still uses love.js for the Lua-to-JavaScript conversion, but LoveWebBuilder is available as a simple to use web application. You just need to select a .love file from your computer and enter some information. The rest is all handled by LoveWebBuilder, making it very accessible for one-time deployments. 2ff7e9595c
Comments