Category Archives: BookSentry

My pet project

The Approach

Entry 4, Day 6

A lot of work in documentation and social media department. I’ve split the About page into three separate ones and add some content to them, and organize widgets..

But lets get back to the project.

We are going to talk a little about general approach to writing software. There are two basic ideas you can follow:

Big Design Up Front – Spent a lot of time gathering requirements for the entire application, carefully plan the architecture amongst white-bearded gang of architect, proceed to code and then test the application. At the end most of the requirements will be outdated since Client will figure out that he wanted something entirely else. Or go bankrupt in the middle of entire process. You are left with beautifully designed and mostly useless software.

Emergent Design – Also known by some coder as Pile of garbage. Actually this is the case if you do it wrong, because emergent design does not mean that we add and add and add new features without any clue or second thoughts. We add new features incrementally within some short periods of time like two weeks (called Sprints). We land with with business value, and working software, go to the Client and ask, “is this what you wanted?”. If it wasn’t, we have two wasted weeks worst case and a lot of experience. However if the Client is happy, we get back to keyboards, seek for common points and patterns and refactor to shape the application structure. We can do that safely, because we have a suite of automatic tests that will protect us from bugs, do we?

Actually, the way to go depends a bit on situation. Some projects may have a very strict and stable requirements, and it might be efficient to use BDUF at the end. But I thing those are in minority. Most of the time you don’t know what will happen in the future. If you do however have a good vision of how the application will look like, It might help you make better choices and plan a bit in advance, saving here and there. Not an easy task, but who said that software development is easy?

I will go with almost pure Emergent Design, and hope it will not turn into, well.. you know.


Leave a comment

Posted by on August 7, 2014 in Agile, BookSentry



Dramatis Personae

Entry 3, Day 4

Before an application is created, we need people to do that. People assume different roles, and I’ll try to define them today.

I thought, I will be using SCRUM framework, but actually by definition you can’t have SCRUM if you have only one person (unless we are talking split personality or other mental disorder). As you may know, Scrum Master and Product owner cant be the same person because of conflict of interests. However lets forget about that for a moment and take a look:

Client – The guy with money, needs and usually little to no idea how exactly to fulfill those needs with proper software. He wants stuff done quickly, cheaply and with high quality and finds it hard to understand that he has to pick one of those three. Usually does nor understand technology and people creating it.

Product Owner – This is the guy that is patient enough to talk to Client without cutting himself. He is able to find out what actually Client needs, what is most important for him and translates this into prioritized User Stories. Then he comes to the Dev Team and tries to explain what needs to be done to make Client happy.

Dev Team – Bunch of guys who talk strangely, gather in circle and sacrifice coffee to summon and control software. At least that’s how it looks like from the Client point of view. Dev Team has all the skills, resources and pizza required to create an Increment – working piece of software that can be thrown at production servers and will not cause a disaster. Or at least not a big one, small to medium seems to be tolerated on most circumstances.

Scrum Master – Invisible ninja who makes sure the other three do not kill each other. Basically knows the Scrum Grimoire by heart and guards the entire process not to go bananas. Should also has a healthy amount of common sense and transfer some of it to relevant party if needed.

So, I am going to be the Client, the Product Owner, the Dev Team and the Scrum Master in one person.

Besides talking (writing) a lot I’ve done a bit of investigation in hosting department. Nothing special.




Posted by on August 5, 2014 in Agile, BookSentry


Tags: , , , ,

Ideas are bulletproof

Entry 2, Day 2

“Behind this mask there is more than just flesh. Beneath this mask there is an idea… and ideas are bulletproof.”



From the environment setup point of view, I’ve just done the following things:

  • Downloaded Eclipse Luna (cutting edge, you know…)
  • Downloaded JDK 8, try to run Eclipse…
  • …since it did not work, update Path variable
  • …since it still did not work add -vm to eclipse.ini
  • …since well… throw out JDK and get new one, now 64 bits to match Eclipse (every single time…)
  • Aaand it worked


I’ve managed to do some workspace setup, get back to classic UI, and write my first program in Java 8 utilizing Lambdas. Lets call it a day in this scope.

From the Idea point of view…

Ok, lets start from the beginning. At the beginning there was a Client who had some money, wanted some software written for him to do some stuff that will bring more money. Since I’m now my own client, I don’t want any money (at least not with this project), lets skip to the point to what I’m trying to achieve here. To the Idea.

BookSentry is going to have the following base features:

  • User can register
  • User can view, add, remove? and modify? books
  • User can view their own private list of books they have finished (or claim to have finished), view and modify this list

That is the initial idea. Some further features might be:

  • Registration process involves an email
  • User can search books using filters and paging
  • User can get more details about the book via some integration with Amazon
  • User can see some statistics, monthly/yearly reads, favourite genres etc
  • User can add other Users to his friends group.
  • User has a public profile
  • User can somewhat communicate with each other, send messages, leave comments
  • User can somewhat compare themselves with others
  • There are some kind of notifications about ongoing events
  • User can rate books
  • User can change password, remove account
  • Application doesn’t look like 1998 crap (ekhm… I was going to say “Application is aesthetically pleasant”)
  • Application is responsive and gentle with bandwidth (ajax)
  • Admin can manage Users
  • Logging
  • more…

Let’s stop here. In the next episode, we are going to talk about the roles in the project even though there is only one person to assume them.

And maybe more.

Here is your picture of Toothless:



Leave a comment

Posted by on August 3, 2014 in BookSentry




Entry 1, Day 1

Soooo… I have a blog!

As you may read in the Blog section, I’m going to write an application. Or, should I say, THE application. And tell you about the process on this very pages.

The reason for that is, I’ve got this senior promotion recently and it struck me: what the hell does being senior actually mean? Am I now good at coding or what? I’m roughly in one eighth (5 of 40 years, I suppose) of my IT career, so it seems that senior is a bit semantic overkill. Western blogs say that senior should have like 10 years of experience. Okay, I can add up 5 years of Computer Science finished with Masters degree at the university, and maybe even further one and half on PhD course I’ve finally dumped, but that barely counts as experience. So called “commercial experience”. We’ve all seen bold and smart juniors just hired at software company, full of ideas, with great algorithmic background etc, sadly crushed and obliterated by 30k class legacy system. On the other hand, in western Europe, where IT is relatively young commercial field, it is common to get the title after only 2 years. Of course experience =/= skill etc, etc , but you know the drill.

Now, I’ve though that I’m writing software for quite some time, but I haven’t actually created anything bigger from scratch. Alone, by myself. Of course I’ve written plenty of small pet projects doing this or that, but none of them was a true multitier, mature, enterprise application. With continuous integration, multilayer suite of automatic tests, fancy design patterns, deeply clean code, deployment process and so on. So here it’s time to do that. I’m going to convince myself, that I can sit in a commercial project and do the darn thing alone, while the PM is desperately trying to hire more devs for the team.

In order to keep my motivation, I’m going to blog, so I can feel bad if the project is slacking.

I will have this one simple rule:

If I do anything in the project, there will be an entry in the blog.

Anything, be it code, research, set-up environment (pain in the ass every single time), hellowording, write tests, anything, I will post. Same day, or, worst case, the next (that is in case I fall asleep while coding, you know…)  Of course, something like “Damn shit still does not work after another 3 hours of miserable fight, I hate Spring, I’m going to get myself wasted, bye” is still a valid entry.

Currently, I have the name for THE application (as you know, it’s the most important thing, so I can stop now and call it a day)

The name is going to be BookSentry.

And the application is going to be about persisting the fact, that an individual has finished the process of reading a book. And perhaps “few” other features a well.

As simple as that.

As as complicated as that.


If you managed to get to this point, I hope you will stay with me longer and check out what will happen next.

p.s. the word count on this post is 512 excluding this line ;)

p.s. 2. There will be a picture of Toothless at the end of each post. Unless Paramount Pictures sue me, In which case, well…




1 Comment

Posted by on August 2, 2014 in BookSentry, News