I’ve been programming for 20 years now, but never actually put my applications or webpages on the wild west of the internet. Until Now.
The mantra was simple in my mind.
- Code goes on a application server.
- HTML goes on a web server.
- Your technology determines your OS platform, where you deploy it
- Security is your own fault for putting stuff out there, that shouldn’t be
It just sounds simpler in my head.
Free Hosting Services – WordPress.com I needed a place to post my Roadtrip 2017. WordPress.com is free. And isn’t as ostentatious as Facebook, where everything is posted, like I was wearing an ankle monitor on house arrest sent to everyone who “Friended me”. But WordPress.com puts ads all over your stuff. They handle the backups and configuring of the server. There is no talk of databases, except for the pre-installed “Ninja Forms” they build in, and you can download everyone who entered data there, as CSV file.
It was the fastest way to get on my feet. So I kept my Roadtrip 2017 updates there, and sent off notifications of updates thru e-mail manually. You just create posts and it just shows all the posts in one giant list. Everything else is just seasoning on that one purpose. There is a Page based management system, where you can create links and content outside the blog use case. They have a WYSIWYG type editor called Visual Mode in wordpress.com. So you can add pictures and HTML. No Javascript. No stylesheets. No Iframes, except Google Embedded Maps. No videos, except links to Youtube. No customization or “plugins”. There is a associated WordPress.org which keeps WordPress software updated, for other hosting solutions to use. Besides the primary web-based content management system, they have clients for IOS and Windows, where you can write blogs to.
Account | ✔ (Free) |
Find if xxxx.wordpress.com is available | ✔ (Easy) |
Email is username | ✔ (Easy) |
Ease to get started blogging | ✔ (Easy) |
Blogging | ✔ |
HTML | ✔ |
Pictures | ✔ |
Youtube | ✔ |
GoogleEmbeddedMaps | ✔ |
Javascript | ❌ |
Stylesheets | ❌ |
Inline style attrib | ✔ |
Iframes | ❌ |
Other Media,Videos | ❌ (Not Free) |
Visual Customization | ❌ (Limited to Themes) |
Themes | ✔ |
Only a Handful Free | ❌ |
Content Management Tools | ✔ |
Menu Control | ✔ |
Hierarchal Blog Organization called “Categories” | ✔ |
Attribute Blog Organization called “Tags” | ✔ |
IOS Blogging Client | ✔ |
Windows Blogging Client | ✔ |
Page based Content Management System | ✔ |
Why not a Wiki? Yes, there are other content management tools out there, like Wiki’s, but I wanted to be the only one with access to author. Plus I hadn’t thought thru what I wanted to do with content, such as migrating it to another platform, after I was done blogging. I was sucked into the platform by it’s ease of use.
Web Servers What if you want your own domain (www.mysite.com)? I think that is what most people mean, when they say they want a website. And when people say they want their own web server, nowadays, that means you want your own Hosting Service. I went with a well-known Linux shared Hosting provider which I also purchased a my internet domain from. What you see in the figure below is what I believe the configuration of these servers to be. A few servers(one in the example here), with multiple accounts(3 in example here), which manage files in the Apache web server. The server has one IP address, which has 3 domain names. Apache figures out which domain name is being requested, and goes look for the files managed by the specific account. These files might be static HTML files, or dynamic content created by PHP. To change the website, you need access to change those files. Dynamic content is supported by each account having it’s own space in the shared MySQL database. All are free open source software. WordPress is a content management system built on PHP. To change the content display on you website, you can change, in order of difficulty: WordPress content thru their management tool, update HTML files, change PHP programs, and add custom data in the MySQL database.
WordPress.com is a Hosting Solution. But they like to call themselves WordPress.com. And every account has the WordPress PHP files installed (instead of the ambiguous cloud of files of unknown organization). It is free initially. You have to pay for more services if you want them. But you get a free subdomain if it is available, ie. yourchoice.wordpress.com.
I haven’t heard the term Application Server in a while.
What used to be called an application server is basically custom built software for a specific purpose. IOS Apps or Android apps, except on a web browser sort of concept. Often the situation there, is what kind of technology platform, the application you paid for runs on, determines your application server. It’s one of the reason the site is called tictawf.com. It’s maddening trying to get your technology working on available platforms.
For a shared hosting solution, the primary technologies they support are the LAMP stack because it is free and well supported on the internet. Linux, Apache, MySQL, and PHP. If you write a computer program (which is what an application is called now) uses a technology that isn’t in the above list, the hosting solution fit doesn’t your needs. And the bigger ones don’t cater to your needs.
What other technology could you use? Well, I used Microsoft’s IDE’s, so I programmed on Microsoft’s platform and their technologies weren’t well supported on Linux. (.NET core and mono might change this, but unless the hosting solution implements those platforms without compromising their servers integrity, I don’t see how this changes the picture any). Anything I write in .NET, has to be re-written from scratch for PHP. I feel crick in my neck for just the thought of that.
This is where VPS and Cloud Services fill the gap?
Virtual Machine technology allows Internet Service Providers to divide a really powerful machine, into several smaller ones. How well this scales economically, I can’t say. But I run several VM’s at home for different purposes, and it works great most of the time. A VPS is Virtual Private Server. You can get one with any operating system you wish. You can install any technology you wish. The figure above depicts a similar situation I find myself in, which is that the Blogging content is on one platform, but the custom written programs run on another platform. Right now, this is “integrated” in a webpage, executed on your browser. Usually this works quite well and seamless to you, except in one specific but growing technology: AJAX.
Cloud Application services are like the Linux shared Hosting Solution, but instead of a LAMP stack technologies, they specify which technologies they support and you deploy to them. They will likely have an entire management console for you to deploy you code to, and restart, etc. I haven’t tried any yet, but it makes sense.
The AJAX problem
It isn’t really a problem. It actually tries to compromise between 2 problems. 1) Security-wise, it would seem prudent that a page from one company, can’t request or change information from another company’s website. But using AJAX, you can do just that. And the user won’t even know what is happening.
When you see Cross-site Scripting Security Exceptions, the above is what they are trying to prevent. 2) But for people like me, it makes it harder to seamlessly integrate an application using AJAX (or as it is called today XMLHttpRequest API) from 2 different domains for a variety of possible reasons (scalability, technology, price). Modern browsers actually let you communicate to separate domains, but there is a security protocol that has to be implemented. It’s actually much simpler than any description I’ve read on the internet. But it’s really specific, and it won’t work if you deviate from the specification. And it HAS to be implemented in both Javascript AND the web server. Below is a article with a good description of the problem and solution.
How do I know it works? If you notice the ridiculous questions that pop-up in asides, answer one for me. It’s the exact architecture in the figure with the Hypervisor (which is a large machine filled with VPS’s). Click on a button. It took hours to figure out why that worked on my development machine but not my servers.
What does www.github.com have to do with any of this?
It doesn’t. Computer Science students in college are required to learn a software called versioning control. There are several. The current popular one is called “git”. Originally developed in Linux. It has been ported to Windows 10, in last update. Basically, source control allows you to take a snapshot of all your files at that moment, and annotate what the changes were for. It’s an undo button for the novices.
www.github.com was a website that allowed people to store their source code versions and branches on the internet to share with others. (I personally do not use the branching capabilities yet, but I don’t have a lot of enhancement projects yet, where I need to keep a working version of the old source code). It was acquired by Microsoft in the last couple of years. What is their strategic purpose for the acquisition? I don’t really know. But if you want to share source code for your projects, it’s a great way. It also allows management of collaboration on projects, if you have a Agamemnon complex (No, there is no such thing).