In 2014 I decided to develop an app for iPhone/iPad.

I felt the urge to work to some my personal software project, and to have a my, little, personal, point of presence in the Internet, the Cloud. So, almost collaterally, the site giandisa.IT was born. As the site logo explains: "my drop in the cloud".

giandisa.IT site

I like technology and science. My love for computer programming is born reading about Sinclar ZX80 on magazines about electronic hobbystic projects.

Sinclar ZX80

Sinclair ZX80 was the first home computer for the folks: thank you Sir Clive Sinclair!

For a meanwhile, even Sinclair ZX81 been released, I had to be content with the Basic Expansion Kit for the Atari 2600 game console.

But finally, my parents rewarded me with a shiny brand new ZX Spectrum.

Sinclar ZX Spectrum

All the Z80 processor signals were accessible in the rear slot. So I could do a lot of software and hardware experiments. Yes, I like even digital electronics.

Oh, sorry for the digression… Magic memories of having lived in the pioneering moments of the home computing history 😉…

All that to say that I’ve always been fond about computer science, not is only my current profession or source of “bucks”.

So the need for a my, little drop in the cloud. The website giandisa.IT is one of these drops. It’s initial porpouse was to describe my tiny pet projects, but it has become itself an area of experimentation and research. The project “site” was born.

The giandisa.IT site has undergone to five technological reboot in the last four years, following my innate, reckless, naive, searching of the "Sacred Grail of Programming".

In more than thirty years, I followed the evolution of programming languages

Programming languages books

Assembly, Basic, Forth, Fortran, Lisp, C, C++, Modula-2, Ada, Java, Eiffel, Python, Ruby, Scala, Clojure, Dart in my very personal historical order, and the underlying programming technicals

  • “goto” programming
  • structural programming
  • procedural programming
  • fuctional programming
  • object oriented programming
  • by contract programming

Aspects of the two main programming paradigms: imperative and declarative.

Functional and object oriented programming represents a mutual dualism, somewhat similar to the wave/particle dualism in physics 🤓.

I know, for experience, that there is not a Silver Bullet for every programming need. But it’s useful having a programming tool that hopefully covers 80% of your software crafting needs. Especially for a little programming team.

Yes, rewriting a software project, could be hard, but if the conceptual foundations are strong, you can reuse a lot of analysis, design and concepts. You can focus only on the “implementation details”. The giandisa.IT website presentation technology is not changed in the various versions. The big revolution was, for now, on the server side.

And now the description of my website technological iterations and underlying motivations.

Site V1: Launching a bilingual Rilassicelle app

I needed a website to promote and describe the Rilassicelle app and the making of.

Rilassicelle app

The website would have to support at least two languages: Italian, my native language, and English. And perhaps, a day, Chinese.

At first I thought to Wordpress or Joomla. Both had a rich ecosystem of plugins and a lot of appealing themes. But, I did not find the simple multi language support I was searching for.

So, I decided to make myself. I choose Bootstrap library to easy the layout of the pages of the site maintaining a good cross-browser compatibility.

I designed and drew the logo, choose the colors and designed the theme.

Server side, I needed a dynamic web engine. I am an expert of Java technologies so I opted for JSP and the Spring Framework. The Spring Framework was useful enforcing the IoC pattern and providing a rich set of libraries for common server functionality i.e. sending mail. The Stripes framework was adopted for a simple and effective MVC pattern.

Apache CouchDB, a NoSQL DB, was the persistent engine of the site. I chose CouchDB because of the master to master replication available out of the box at the trade-off of eventual consistency of the data. See the CAP theorem. Also the scheme-less nature was interesting.

CAP Theorem

I configured two Linux VPS in the Cloud for Europe and United States. Every linux server had installed an Apache HTTP Server put in front of Apache Tomcat to provide secure, controlled access on port 80 and permit future extensions.

CouchDB replication was initially used as a medium to ease site application deployment to the two servers from the Mac where I was developing. In the future, I’d would like to use CouchDB to persist the data of some future distributed app.

The site V1 accomplished to announce the launch of Rilassicelle and to publish some articles about this little relaxing application in Italian and English.

For sometime I was satisfied of this first step, but then I wanted to add some features and rewrite the site with another technology. In the second part, I'll describe the next four technological iterations of the “site” project.

Coming soon...

Gianni Di Sanzo

Go to: Part 2Part 3
Share Tweet