When I was on university we had a PC application for creating geometrical drawings. As I already knew about software development at that time, I was very very impressed by that application.
Was 20 years ago, internet was not yet there at that time, but I did not forget about the program and you can still download it from the company which is developing and selling it.
The difficulty was finding out how to do the geometrical calculations! I never really had vector calculation in school. What I know about it is from some lessons on university. But I was able to find for most of the problems solutions. Some solved in this way, some solved in that way. Once I will come back and read a book about vector calculation and create a new library!
Some features are still missing from the original solution I worked with 20 year ago. But I am already very proud about what I were able to realize. When there is the next time slot where I have enough time, I will continue, for sure.
From time to time you have to learn something new. If you go to bed and think about what you have learned today and there comes nothing into your mind. Stand up and read something in a lexicon just to be able to say that you have learned something that day.
Currently I am back on learning something for my job. jQuery is a development language for internet development, a library which makes it easy to develop web pages able to be running in different browsers.
I bought a book and started reading chapter after chapter until I came to this nice chapter about programming a monster page where you can swap images to define the face of numerous different monsters. Click here to see the page I have developed with help of that book. Many thanks to the writers of the book for the images and the idea!
Why is estimating the effort necessary for a software development project so much more complicated than estimating the construction of a building? Because a software development project is a new project with mostly new people and often new technology for every new project.
Once again I had to experience that the estimation for a project was too optimistic. It is easy to estimate the expectable effort if yourself will be the person who has to realise the project. I remember that all estimations I did for myself where exact.
But as soon as the project is larger and is about a new business area, you have to do more work. You will have to do different kinds of estimations, for example a SCRUM story point estimation, a comparison with a similar project, a function point analysis and so on.
Now, there is the cone of uncertainty which tells us that an estimation done before the projects requirements were investigated properly could be far far away from the real effort you will spend. And the estimation will only come down to a more realistic value if you do another estimation after the requirements are clearer or even after you have started developing.
NoSQL-Database is something quite new. I heard the first time about it a couple months ago and even read an interesting article about the topic which was in truth too complicated for me.
But recently I run into the question who a web shop like Amazon is storing its data. Surprisingly this is no secret and Amazon has published a description about their technology and you can even download an API to connect to the database and you can create your own DynamoDB on the Amazon cloud.
Here is a short summary about the concept in German. I had no time to translate it into English so far. Hope it is correct from a technical point of view!
This is a great book about development. One of the best books I ever read to increase my skills necessary for my job. Not only that all the different possible architecture are described in a very understandable manner.
This book also makes clear, that you do not always need the most complicated architecture. For a simple application, a simple architecture could totally fulfill your needs.
Which leads back to one of the most important principles in software development: KISS, keep it short and simple. Software gets at the end always much more complicated that planned or expected at the beginning. Lot of developers do not fear the complexity of the source code they produce and at the end you get stuck in a messy code, impossible to have the necessary overview.
Once again I saw when reading this book, that many of the architecture, similar to design patterns are used without knowing them by name. Whatever design or architecture you select for your application, important is that you and your team know it and keep coding to the selected pattern.
Fowler also describes in a very clear example the data mapper which is a pattern I created myself years ago out of long experience. Its nice to see that I was on the right way and that a guru like Fowler describes it in a very similar way as we designed it then.
Here is the result. It took me only minutes to implement it and as you can see in the different sheets, I have also implemented the Julia set in the same workbook.
The sheets are for 3 different resolutions and you see that the range where both sets are visible is from -2.2 / -1.5 to 0.8 / 1.5 for the Mandelbrot set and from -1.8 / -1.5 to 1.8 / 1.5 for the Julia Set.
I realized the different colors with conditional formatting which is a nice feature of Microsoft Excel. Points which are part of the set are black, points which are not part of the set are colored. The color depends on the number of iterations necessary to decide that they are diverting and is going from red and yellow to white.
You can download the Excel workbook from here. You might have to allow the basic script!
I am a fan of the Mandelbrot set since I have seen it the first time. I developed a screen saver for windows which displays the Mandelbrot set and zooms in randomly.
I also tried to develop something similar for the iPhone but did not succeed for the time. When I was investigating possibilities to draw lines in HTML code, I saw that with HTML 5 there is a new tag <Canvas> which allows exactly what I need.
Here is the result. I have created a page which shows the Mandelbrot set and the same for the Julia set. Both are very impressive. You can zoom in by clicking somewhere in the graph and even move the graph with the mouse.