RAD web development please

I don’t like working on the UI. In the same article I wrote about the ambiguity of user interfaces in general. The idea of right and wrong isn’t so strong in the UI field than, e.g., in database programming.

Bootstrap is pretty good

Regarding HTML I liked the approach Bootstrap has taken. They make HTML more HTML-like which sounds crazy. But given that the standard elements look so terrible it allows you to use them again and at least it looks decent. Even better is that a lot of templates build on Bootstrap which means you can just buy / download a good-looking template and still just write your bootstrap code. Pretty good.

Web frameworks

I have to say that I’m still now satisfied with web frameworks. I still have to do to much work. Thinking back about using software like Borland’s C++Builder. Sure it wasn’t the greatest bit of software. But you know what? I could create a decent UI in a few minutes and just add my get and setters.

I didn’t need to care about events, or UI synchronization, or underlying threads and all that stuff. And I have to with modern web frameworks.

I think I said it again and again. I love my prototypes and PoCs. I don’t want to create the greatest looking site with the best UX but rather a decent one with least effort.

I want to demonstrate this with an example.

TODO app

Let’s take a standard simple web app like an TODO app. What do we want?

  • Login
  • Registration
  • Add Task (what? deadline?)
  • Delete Task
  • List Task for today, tomorrow, all

Pretty simple. Here’s the thing. It’s basically just a database with an UI. Everything could be replicated with a database. I wouldn’t recommend doing it this was but I want to show how easy an TODO app could be.

Login

psql -d database -U user << password

Registering

CREATE USER user WITH PASSWORD 'password';

Add Task (what? deadline?)

INSERT INTO tasks VALUES (what, deadline);

Delete task

DELETE FROM tasks WHERE id = id;

List Task for today, tomorrow, all

SELECT * FROM tasks WHERE deadline = CURRENT_DATE;
SELECT * FROM tasks WHERE deadline = CURRENT_DATE + interval '1 day';
SELECT * FROM tasks;

Let’s also create the boilerplate:

CREATE TABLE tasks (id bigserial primary key, what text, deadline date);

And that’s basically it. This may take you 5 to 15 minutes. It’s easy, it’s decently abstracted and it’s fun because you are so powerful. That’s also something I see when people write LISP or LISP-dialects. They try to create powerful code.

The problem of course is the rest you have to do when writing this web app. Creating HTML files, caring about user authentication, checking values, etc. etc. And that’s why I liked tools for rapid application development so much – I didn’t have to care about it.

Going in the right direction

I actually like that the web development goes towards using APIs to abstract the application and then building on top. I think that that’s the right way to do it – your presentation should be independent of the rest. And I really like what meteor is doing. And that being said

Thinking about it. I would be more than happy if there would be a tool to prototype an UI – and I mean prototype – no fiddling. There are interface builders for bootstrap out there – which is great. The next step is to integrate one of the JS frameworks – like Angular.js or Ember.js.

Example

Let me build my interface around a REST api. I know my calls just let me bind them to elements and their events. Let’s take the TODO app example. I build a quick interface using jetstrap:

todo_app

This took me maybe 10 minutes. You see that it’s not ideal (e.g. the button is not aligned) and the UI creating the interface is a bit fiddly but it’s okay. The next thing I want to do is to bind REST API calls to actions and events in the interface. This is sadly not possible yet but here’s how the workflow could look like.

For example: I select the submission button and create the REST call URL using information provided by the builder. E.g. POST /task {‘task’: <TASK>, ‘until’: <UNTIL>}

The same could be done on the open tasks. I just describe the URL call and the return format and the rest is handed by the framework. E.g. GET /tasks {‘task’: <TASK>, ‘until’: <UNTIL>}.The server side can be handled with a few lines of code thanks to micro frameworks. And that’s it.

Explaination vs. Prediction

Again, some older post I had lying around. Nonetheless, the topic is still prevalent.

I recently read a great paper named To Explain or To Predict? by Galit Shmueli. She explains the differences between the “old-school” explanatory statistics and predictive statistics. I saw lots of her observations by myself.

That means predictions are often regarded as unscientific and therefore there’s a bit of a lack of good literature – lately the situation became better with the uprising of machine learning.
Nonetheless, most students don’t learn how to make predictions and you see how people use R^2 to validate models.

Sure, there are some departments that teach how to predict but they are still in the minority. Of course, there’s this other trend with Big Data. I’m personally not really excited by Big Data rather by data at all.

More Info: http://galitshmueli.com/explain-predict

I wrote this post more than 2 years ago. Now machine learning became some kind of commodity on a smaller level and something strange happened. Some of the people who work with data but didn’t learn good statistical techniques started to try to explain data which is pretty terrible. It even seems that they try to reinvent statistics. I read a post yesterday called Why big data is in trouble: they forgot about applied statistics which captured this pretty nicely.

The table at the bottom is just unbelievable. It lists different fields and the application of “big data” or “data science”. They also list that in 2012 they finally start to enter fields like biology, economics, engineering, etc. Which is more sad than hilarious. So yeah, I didn’t expect this turn.

Furthermore, I saw more and more “data science” boot camps / programs popping up. Still neglecting statistical foundations. Resulting in even more terrible studies. This trend will probably follow the Gartner Hype Cycle. As far as I can tell the peak is already reached, now it will begin to be disappointing and in a few years actually reach its plateau. Here the latest Hype Cycle from July 2013:

hype-cycle

I see the term “prescriptive analytics” on there and just looked it up. It’s astonishing that people reinvent new terms for so much stuff and it still works. Even stuff like business intelligence is basic statistics, then came predictive analysis (still statistics), data science (hey statistics), now prescriptive analytics (still statistics).

I just have to quote one of my favorite quotes on this topic:

Someone (can’t recall the source, sorry) recently defined “data scientist” as “a data analyst who lives in California.” —baconner

Organizing PDFs like eBooks

My gateway into books

I didn’t read a lot when I was young. Still I liked to look at pictures. My mom had this policy that when we were in a bookstore I could get one book for free. Mostly I read “How and Why Wonder” books about lost cities, treasures, electricity and what not.

Slowing getting into books

When I was about thirteen I actually read my first book. It was a book about computer hardware. It was very basic but I loved it. At the same time I started to build my own computer and my friends also did so. This was the time when I started to understand how a computer works. Rather fast, I bought and read my first book about programming in Turbo Pascal. And I remember my first program which was basically a text adventure.

I need to know

Then my reading habits stalled for a while. I didn’t read many books but mostly read online tutorials about photoshop and html. Still I wanted to learn more and more.

The next boost came when I was 18. Somehow I felt that now I can read books which are meant for adults. I started to read tons of books about programming, software development and project management. Then I started to read books about personal development and philosophy. When I entered college my interests went more into economics and about two years in I started my 111 books challenge and read since then. Nowadays I read about 40 – 70 books a year.

The magic of ebooks

When I started working I didn’t want to carry books around. Thus, I started using ebooks with the Kindle and it was pretty nifty. Slowly, I didn’t buy hard copies anymore and just read on my kindle, later on my kindle app.

PDFs and ebooks

Today, I read most of my books with amazon’s cloud reader which is an online kindle app. The great thing about it is that it is easy to use, isn’t resource intensive and you can mark & leave notes. I love this.

Why I was writing scientific papers I worked a ton with pdfs and this feature would have been great. Then I worked with pen & paper.

Is there are cloud reader for pdfs?

I looked for a kind of cloud reader for pdfs because I started to work more with pdfs but there isn’t any satisfying solution, so far. The beauty about the cloud reader is that it is organized and you can get your notes pretty easy. Working with mac preview and notes / marks doesn’t feel so good.

Here’s the deal. Build an online book reader which accepts formats like amazon ebooks, epub and pdfs. These files are hosted on your platform and can be synced to a mobile app. All notes and marks are organized by your software. Profit.

Job search sucks

Holy cow, job search is inefficient. I read about some guy who was a CIO who searched for over 18 months to find his new job. Terrible.

How does the process look at a higher view?

mm-jobPeople are looking for employment and companies are looking for means to get a job done. Now they just hook up together and everything’s fine, right? Not that easy.

Problem: Companies don’t know what they actually need

There are some (semi-)standardized jobs, which mostly no longer exist, where the need becomes quite clear. For most jobs, however, there’s a gap between the problems a company faces and possible solutions. Job titles don’t mean a lot so there’s no guarantee that software dev at company A is capable of solving the same problems as software dev at company B. Then you start to limit the position further using stuff that’s easy to measure. If something is easy to measure and you use it because it’s easy to measure then please don’t do anything. Just no, please stop. Your measurement has to be indicative to a high degree. My favorite examples are in the IT-field, mainly because this is where I have the most experience. There are people who do online marketing for 7 years who suck. Really suck. A devoted intelligent person can outperform these people in less than 8 months. You say, the first one has seen a lot? Great job, knowing how to do SEO for altavista.

What do they need?

I don’t know and they probably also don’t know. There are two problems here. If you don’t have expertise in the job field where you are looking for new employees or means to do them, generally, you don’t know what you need. “Hey, let’s hire a web designer because we need a new website because the old one is so slow.” – “What? I didn’t knew we got 24 bazillion page views per day. You don’t know how to scale use website? Aren’t you a web designer?”

Second problem. You have to make trade-offs. Either you can look for the perfect fit for the current job OR you look for someone a bit more general because you don’t know which problems appear tomorrow. Also, this doesn’t mean that someone can’t learn. Rather, learning is also an trade-off for both types of people.

What did you learn? Companies don’t know who they need and don’t know how to spot them. Great.

Problem: Job searchers don’t know what they can offer

So you worked 15 years in finance beginning as an analyst working your way up to the master of the universe. You fill up your CV with all your work experience in finance, you got to be awesome in it. I don’t know. Maybe, you just mediocre and you don’t really like the job but you would be awesome as a gardener. How knows? You probably don’t know if you are good as something if you never tried it. And secondly, even if you tried it you have to invest some time learning to find out if you fit a job or not. Going one time in the gym and not squatting 300lb doesn’t mean that you can’t be a great weightlifter. You got to train. Same applies to every endeavor: programming, maths, playing instruments, other sports, accounting, law, design, etc.

Face it. You may have talents you will never discover / you don’t know about. However, the more you think about the stuff you enjoy and you’re good at, and the more stuff you try, the more likely you will discover your talents.

Also, the whole need thing. Same applies for both parties. You have incomplete information of your needs and wishes and you can only discover them by experiencing. Surprise.

Problem: The application process

Hurray. You are looking for jobs. Have fun with coming up with synonyms.  You may be a great UX designer. But you can’t just look up UX jobs, no. You have to look up user experience, maybe usability design, maybe just web design or screen design or app design or ….

Fun thing. If people don’t know the lingo (see companies don’t know what they need) there’s maybe the most awesome job you could ever have but you did never find because they just wrote they needed a webmaster.

Secondly. Those freaking filters. You can filter by experience, position, title and maybe salary. Great fucking job if there are 59 million results. How about filtering stuff people may care about, like team size, company size, values, management style, etc. Recently, I read a study that people care more about the environment they work than the actual job. Funny heh?

Now you that you have rummaged through 9452 job ads where about 6k where duplicates. You have limited your choice to about 90 companies. Have fun looking up each company in detail. Because they gonna ask you why you want to work for their company. Pro tip: Most companies are pretty mediocre and don’t stand out. People most often don’t care. They just want a nice work experience and for graduates, they just want a fucking job.

Cool, you are ready to write the application for about 30 jobs. Of course, you got to individualize them. Not for the position, no. For the company, so that they can feel good. Also, use our buggy job portal because we don’t care, we just want to use some HRM software so that we don’t ever have to look you in your eyes.

You made it. You got invited for an assessment center. Not just one, 9 of them. You got to take 2 days off, travel to some company and fight against your fellow applications to get the job. In the first presentation, they talk to you about the vision and mission statement. About their values: fairness, equality, excellence – you know the values everybody has but doesn’t live to (that gave me a nice idea for an upcoming blog post). And afterwards they observe you like vultures to rationalize the decision they made in the first 5 minutes meeting you. Then you fight against the others and nope, you didn’t get this job. Great stuff, you are going to repeat the same thing about 8 more times.

If you got lucky and don’t have to go to an assessment center then you are ready to go into a job interview. Great thing that you got 20 interviews lined up because you are going to repeat about 80 – 90% of the stuff you said. You can really start to get a routine doing it. What a waste of time.

Yeah, job search sucks. But I don’t want to let you hang there. Enjoy a useful educational video:

 

Great Job.