Category Archives: Trainings

Preparation of training materials

For the past 7 years I have participated in tens of training courses - local and abroad - and trained hundreds if not thousands of lectures out there. Since I do regular classes on some topics, I need to polish my materials on a regular basis by doing research, testing and exploration to keep them up to date.

There is a variety of new technologies to be covered and I have to prepare materials from scratch for them after receiving a company request. What comes next are meetings with the client, management staff and target auditory, precisely calculating the amount of hours needed, topics, group knowledge level and the amount of exercises needed (unless it is a seminar-based course with no labs). Important thing is targeting the right group. I do send some quiz/test based forms to be filled which cover subjective evaluations from the trainees as well as technical questions helping me to figure out their level and averegize that value with their own personal marks. Forming a group of the same level is important for the pace - should be neither too quick, nor too slow.

Normally, for a training we need to do a research of the technology even if we're well acquainted with it. Some history at first (project creators, release date, where did inspiration come from), related technologies (comparison tables), current release and newest features. I have to create an agenda of topics and topic contents as well - just as books do. Then I need to design a structured material, put some code samples, graphics (diagrams), create demos and exercises for the people if needed. So we have extensive slides, demos on-site and exercises for the labs or at home.

I usually follow the same pattern creating a course content. I do create skeletons of presentations and estimate very roughly in a matter of time. Then I follow this flow. Here it is.

  1. Check previous training course folders. Since I've trained a number of training classes already, there is a chance that I can reuse some presentations or at least slides (graphics, code samples, comparisons, stats) for the current training as well. I could also mix 3 presentations and create a pretty neat and useful one here.
  2. Check out Slideshare. We're creating slides. Then why not we check for other slides from authors and see if we could learn anything new or gain inspiration about demos and labs.
  3. Google for other similar training courses. Since I've already built my skeleton and my timing, it'd be great to compare it to several other training classes out there. This could be _very_ subjective as it depends on the level of understanding of the group, the type of the training (lectures, samples, Q&A, labs, other) but still some synchronization could be done based on similar training programs.
  4. Search for tutorials and FAQ. Straight forward, browse online for tutorials and FAQ sections that could help adding some piece of information or example in the slides.
  5. Google with filetype:ppt. An extra slideshare search addition for other presentations all over the world. I managed to find a Chinese presentation once that was not readable for me, but 2 of the graphics were very helpful.
  6. Check for libraries and demos. Sites such as Java2s and other resources are so called 'code repositories'. Same goes for github and sourceforge and more, so you could find great sample projects or code snippets, well documented there.
  7. Check on YouTube. I used to not search for video tuts for several years, but latest trends show that many techs are covered as video tutorials and samples on YouTube which is great. So use it as an extra resource.
  8. Google for standard search phrases for the technology X such as: X examples, X demos, X code samples, X library. It helps.
  9. DZone/Reddit search. Social bookmarking sites and directories could be related to the tech you need to cover. Try them as well.
  10. Amazon. Similar to the training courses, check for books (to purchase if needed) or see the agenda and topics covered - you might have missed something important in your scope.
  11. #yourtechhere. Twitter has too many people so they could talk about what you need. The chance to read spam is high, but you could find rare facts there.
  12. StackOverflow/Nabble - super interesting Q&A questions for the most frequent issues with the tech could help for the support panel. You can even find the authors of the product you write about.
  13. Podcasts. Still not that popular, but you could download some audio material to your player and listen to it as a study book. Some universities even have open courses.
  14. Cheatsheets. I love them all. They have structured content with graphics or tables for the most important phases on every popular (and not so popular) technology. I even tend to give them to students while doing some exams to help a bit and use their reading memory. Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati

Web security workshops in Saudi Arabia

I am off for few weeks delivering several 3-days trainings on web app security best practices in Saudi Arabia. It's my first training outside of Europe so I had to spend some time exploring the culture of the nation here which is pretty exciting.

Already had two trainings so far and few more to go. There is going to be another batch on November for another colleague of mine and I'm trying to sync my materials to serve as a good reference during the next batch of trainings. Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati

New: Virtual personal Java/DB trainings

After 6 years of on-site trainings in companies, organizations, schools and universities, last month I spent some time considering some other options for education, including online and multimedia options as well. 

One of the modern options today for trainings and seminars are the webinars. There are few platforms where you could attend to a mass event where one talks with a screen shared. It's pretty nice actually, but I don't find the platforms mature enough yet (especially with me and my Flash conflicts by default). 

Another great option is the video lessons. We do prepare video tutorials for our top priority product at the moment, but I'm quite sure they could be applied in the trainings as well. I did a pros and cons list and that option actually went at the bottom of my list. Why? Because video tutorials are a mentoring material with no option for feedback or questions during the video. This is the greatest benefit of the real life training - attendance guarantees you (usually) the ability to ask and receive adequate answers from an expert. This opportunity doesn't exist in the video recording. Also, technologies get updated in months so these videos has to be rerecorded again and again. The latest drawback is the copyright - as this is my job I would like to sell it in some way but we all know what piracy is all about - torrents and P2Ps could put an end on that initiative if someone uploads the videos. Probably some flash mechanism could protect it in an online platform like the webinars, who knows, but I vote 'No' here.

So basically a client of mine from another country contacted me for a personal training. He has a full-time job and he is an independent consultant so he is unable (and doesn't need) to hire a training hall and call me to teach a training. So I prepared an offer with the database training program to be trained via Skype or other video and voice sharing online technology. I am able to present my presentation slides on my screen and switch to Eclipse to run and alter demos while he is able to follow this real time and communicate this through the network in a real voice conversation. If he has the need to show something, he could share screen as well and I am able to check his examples and homeworks.

So that's the deal. Feel free to check this new option here for Java/DB/other trainings - prepared program packages or custom trainings if necessary. Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati

Freelance Seminar 2010

Last week we had our first formal Freelance Seminar in Bulgaria. After few conferences and public lectures we did a full-day seminar on freelance. The Freelance Lodge with cooperated with, MiNDS and CCB for that event to happend. 

Video materials are expected, more info is available here and here. However, we hope that freelancers all around the country will join our community and be responsible enough to help other events and workshops happen as well. Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati

Java2Days 2010 – Overview

 This week has been inspired by the power ot Java (this is how a movie like Javatar would probably start).


java2daysAnyway, I'm glad that I attended Java2Days event this year. It's been my second Java2Days event including the one in Oct 2009 (which I described in my Bulgarian blog with auto Google translation in EN). After few years being highly coupled with Java, I decided to do some freelance which lasts for about 2 years now. Meanwhile in addition to Java I've studied plenty of new technologies - PHP and Python in depth, different frameworks down there, few abstract programming structures for specific projects, set-top boxes etc. This makes me feel even more proud being a participant of such an event: now I am able to truly compare scripting languages and Java, dynamic against static typing in different cases - small and medium size projects, enterprise applications, distributed systems. 

Also, as a trainer in different Java-specific trainings (currently Java for QA engineers for VMware and Java EE in the Technical University of Sofia) it's priceless hearing the gossips 'from the back yard' and exploring new features from people being involved in the real process. Thanks to everyone who was passionate enough to talk on topics related to JEE, Spring, Wicket, HTML, mobile techies, Objective-C and others.


As always, the Java community presented some of the best shots in the' training industry'. It would be really unbelievable to see Gosling on the stage, but anyway other experienced developers/directors charged the field in the right way (the light way, talking of Java).

The two trainers I was specifically waiting for this year were Andrew Lombardi and Josh Long. These were the guys I enjoyed most last year (including Heath Kesler who couldn't show up this time). Reza Rahman and John Willis also had some great moments for the public. This year all of them did their best one more time - thanks again!

There were also another speakers that I noticed this year. Alexis Pouchkine, Oleg Zhurakousky, Vassil Popovski, Arun Gupta. Eugine Ciurana made a great show 'waking up' the crowd with some jokes and live performance. 


Java2Days this year was a mix of 3 conferences - Java2Days, Cloud2Days and MobileDay. Most of the people around (including me) expected Mobile2Days conf with mobile activity the first day, but it turned out that the mobile session is only for the second day.

The focus on Java this year was JEE and the Spring Framework. Scripting languages in the JVM also took part in the 'big three' of the list. Last year there were more presentations on different frameworks from the platform - JSF, GWT, Wicket, Spring and others. I kinda like the flame between different framework evangelists ;)

The introduction Java EE 6 lecture described some of the new features included in the JEE6 (released an year ago). So far every popular application server (and IDE) supports JEE6 fair enough to use it properly. There are noticeable performance improvements, optimizations (code-reducing ones), taking into consideration annotations (instead of the thousand XMLs) and a bit more convention over configuration (which could be a two-sides blade, but most of the time is time saver). 

Long and Zhurakousky presented Spring Integration 2.0 and Intro to Spring. It has been something between a discussion between them both and a stand-up show - Oleg was the sales manager of Spring and Josh was the interested client eager to learn that technology. It was really entertaining, good slides as well and nice overall performance.

Reza presented the DI for JEE - dependency injection was something we could have seen in Spring, but now it's fully supported in JEE (with CID as well). Some demos and real situation examples were demonstrated in this session.

After the lunch break I've been waiting for Andrew's performance. He did another Wicket presentation similar to the one in 2009. This time he recorded a screencast of his creating a Wicket demo. The screencast was recorded during the previous session so it has been almost 'on air' :) Wicket seems a neat framework to try especially if you work closely with designers (who insist on their plain HTML) and need some performance (seems way lighter than JSF for example). Another benefit of the Wicket stuff is the component-oriented architecture, ability for plain URLs (better SEO optimization) and others. Talking with Lombardi during the break we discussed different opportunities to use Wicket in a CMS system. Two existing solutions are Brix and Hippo (both in my testing TODO list).

Vassil Popovski presented the RESTful services topic. As a lead QA manager of VMware he demonstrated REST samples with some testing over there, with plenty of demos creating a bug reporting application. Good performance, real samples, nice work.

Second day I paid less attention due to additional work online and a meeting in the afternoon. Anyway, Gupta did another entertaining demo on Java EE platform as a start.

Eugene joined the sessions for day 2 as a second speaker in Vitosha hall. Gupta is a good speaker, but he's less dynamical and too monotonous for first lecture. Even though topic and demos were fine, all the guys were still sleepy before Eugene. The guy started singing "Who let the dogs out" and made us sing with him (some role singing), which naturally turned attention back to him. He proved himself as the open-source evangelist we've heard him to be. 

At 11:30 we attended the Froyo session in the Mobile hall. I was honestly disappointed on that - as a creator of Android application I expected to hear something meaningful. Despite that after 10 minutes of listening 50% of the attendees left the hall and went to hear another sessions. Nothing useful, nothing Android/Froyo related. 

After that session Emo Abadjiev has presented an interesting presentation named Objective-C for Java developers. Emo was a CEO/CTO of mine in Insight technologies and I have never seen him as a speaker. That's where the pleasant surprise came from - Emo demonstrated great technical and speaking abilities and proved his potential to be a pro trainer. It was really nice to hear his Objective-C story demonstrating his experience with writing for Apple hardware after many years with Java.

The last session I attended was the HTML 5 lecture - again from Andrew Lombardi. Useful theory, plenty of examples, great presentation show, the hall was crowded. That should be descriptive enough. Seems like Andrew was really surprised that there were many people using Opera in there and only 2 of the guys owned Mac machines. Well, pure truth - we still use Opera either on our own, or for testing purposes of web applications. And the Mac machines are usually PCs with Linux/BSDs around, so that's where that all comes from. 


I would really look forward to attend the next Java2Days here in Bulgaria. I hope that all of the great speakers would return and teach us something new and spicy. Also a good thing to think about is developing the MobileDay into Mobile2Days paying attention to development for Android, iPhone and BlackBerry (three of them has Java APIs to be used). Another interesting topic after the return of the scripting languages is Groovy and Grails with it. VMware are a general sponsor of the event and as they obtain the rights over Groovy, that shall be no that hard.

Another great reviews:

Ivan Ivanov Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati

The WebXpo event in Sofia


Yesterday I attended the WebXpo event in Sofia, managed by Web & Events. There were plenty of different topics to be discussed on website development, design, usability and so on. I've written a review in Bulgarian in my other blog.

It was a great pleasure listening to the discussion of the website price. Three experts from leading web development/design companies in Bulgaria did a workshop on how prices are calculated, how do they manage different clients and complex tasks etc. All of them mentioned that the higher prices when you recall to company are based on the professionalism that they imply in their products. The whole cycle requires brief specifications, development and design, testing, some usability experience tests, support, SEO and others. Things that could not be accomplished entirely by a small team of non-qualified and experienced developers. This one is a bit tricky, of course, because the companies have higher rates as well and disciplined way of working when the client might need some flexibility at this point. Anyway.

Some of the hot quotes from the event:

"If you have a website for yachts, you don't need 10K visitors, but 1 buyer."

"When it comes to support and fixes, relatives suddenly disappear"

"A website could be developed by a company or 2 students in the Technical University, but the probability it would ever be deployed is way higher when working with the company"

"How do you manage changes to the specs?", "We call the client with the new proposal (changes to contract and price)"

"Content has to be provided by the client, not the company. Otherwise he has to hire copywriters as well."

"10% of the people use IE6. This would increase the final price with 600lv. You want this or not?" Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati

Survior – Freelance tricks (presentation in NBU, Bulgaria)


I had a training on freelance tips and tricks in New Bulgarian University on Thursday. I uncovered some of the issues I've had during my first years of freelancing as well as some tricks how to avoid suspicious clients and projects.

My presentation included:

  • what does freelance mean
  • how to switch to freelancing
  • where can we find projects and clients
  • how to interact with them
  • how to present ourselves the right way on/offline
  • how to define our costs
  • how to manage the time
  • etc

Slides in Bulgarian are available in my Slideshare account. Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati

To summarize technical details for non-professionals


I currently lead a course for Database programming with Java and Oracle. This is my third course with that subject, but there is a specific detail here - my trainees are not experienced developers. They are all adult who have experience in different areas - construction engineers, accountants, administrators, scientists. This makes it difficult to present the technology in a way for all of them to understand it correctly.

Except the variety of examples in all of the lectures, I have to decrease the technical level of explanations. I use to speak with less development terms and explain slowly and with an increased attention paid to the students that have less understanding on the subject. I try to combine the visual and audial techniques. I also left my email in order to provide further details on particular topics if there are blur aspects of the technology.

In the beginning of every lecture I summarize the content from the last training. I take notes of the hard parts from the lecture for every student and test his memory and acceptance with practical questions.

It seems to improve the course quality when working with juniors to med developers and have to keep up to a schedule for each subject. Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati