A little over a year ago I delved into the sea of web development. And yes, it is a sea, for it is tumultuous. It is unpredictable and confusing, and if you are not careful you can easily get lost. Spending too much time in it will make you seasick, and the even most seaworthy programmers will throw up in a vicious storm.

I could go on with the analogy, because the tools are a ship that can break in this sea, and the wind will come and set any journey astray, no matter how well it was planned. And especially because there is something magical about reaching your destination despite the chaos of the journey.

Yet, an analogy can only take you so far. The story goes like this: Dan Jutan and I have been building a framework for an online Talmud. Why have we been doing this? Because, although the Talmud exists online, it was never built to be online. We wanted to change this, to make learning Talmud online a native experience. We proposed this idea to the LMC department at Georgia Tech, and we got funding. Now we call ourselves the Georgia Tech Jewish Digital Humanities Lab, and we are building a new online Talmud.

It’s all great and wonderful that the university gave two undergraduates money to fund their project, but there was one problem: I didn’t know the first or last thing about web development. And it turns out, making an online Talmud requires web development. So, I learned quickly. HTML was pretty easy to pick up. CSS looked simple, but the more I got to know it, the more I realized it was the devil’s incarnate. And JavaScript, well it’s a love-hate relationship.

I wont go into all the details, but I will point out some of the things I learned:

Never use w3school

Whenever you search for anything related to CSS, you will encounter this website. No matter how good it looks, never go to it. It is a trap, a trap filled with snakes and scorpions. It is inconsistent, outdated, and often wrong. Stick to mozilla. And if you are really looking for something out of the box, csstricks is amazing.

Either start dreaming in rectangles, or let someone else handle the CSS

CSS and HTML works on the principle of rectangles (the box model). Rectangles pushing against each other, stacking on top of each other, swallowing each other, overlapping with each other, or doing whatever else rectangles do (which is a lot more than you think they can do). If you cant fit it together with squares, it wont work with CSS. Letters are not letters, they are small boxes. Round pictures are not round, they are squares with some parts cut out. A monitor is not a screen, it is just a rectangle to hold other rectangles. Everything is rectangular in CSS.

You have to be careful when letting a non-programmer program

This whole project would not be possible without Dan Jutan, and in order to understand this you need to understand our lab’s workflow.

  1. We have a problem we need to solve.
  2. I come up with a janky solution that seems to work 90% of the time.
  3. Dan is not able to read my code because it came out of the dark recesses of my mind.
  4. I rewrite my code to make it readable and now it works 99% of the time.
  5. Dan still cant read my code, but somehow still manages to refactor it.
  6. The problem is now fixed and anyone can read how we did it.

I am not a programmer, nor will I ever be one. I program to solve problems, not to build packages, and I dont expect people to ever read what I write, and if they do, I truly feel sorry for them. So, when it comes to making open source software, it’s usually a smart idea to stick to real programmers, or at the very least have a ‘Dan’ on the team.

Never work on a problem for more than 12 hours in a row

When it comes to a problem, it may seem like one more line of code will fix everything, but we all know it’s not true. Bugs and errors in web-dev fall into two categories: quick fixes, and long torturous roller coasters. If you have spent more than a couple hours on one problem, it’s better to walk away for a little bit and come back with a fresh mind. The alternative is hacking away at the problem for 12 hours, and then not being able to sleep that night because all you can dream about is semicolons and JS documentation.

There are two versions of your website: One for Microsoft, the other for everything else

Microsoft likes being difficult. They implement features that noone wants and leave out features that everyone needs. Don’t even get me started on IE. So, you are going to need to build two versions of your site: one that is the normal one, and one on IE/Edge that just has a link to download chrome.

I could go on and on about my discoveries in the sea of web-dev, and I may write more about my journey. I have navigated the maze of CSS, encountered the most obscure tags in HTML, and have done some pretty wacky things in JS. But, for now this is what I will leave you with:

Web-dev is not a path for the feint of heart, but if you are going to jump in, you have to jump in all the way.