Showing posts with label links. Show all posts
Showing posts with label links. Show all posts

Sunday, 19 August 2012

2012 Agile Software Development for Healthcare summit materials

Note: Since I became news editor for InfoQ (you can view my posts here) I do not post to kreskanotes very often. I do have some posts that I wrote with infoQ in mind that didn't make it to the page, so I will be putting them here so the effort is not completely lost. They will be tagged with infoQ label.

The Agile Software Development for Healthcare summit, organised this Autumn in Berlin by Pharma IQ, hopes to repeat the success of the Software Design for Medical Devices events that took place in the United States in the past few years. The aim of the conference is to “create a valuable platform for knowledge and experience sharing with an integrated mix of theoretical and case study driven presentations”. The organisers prepared a lot of research and downloadable materials that you might find interesting, even if you don’t plan on participating in the conference.
The materials which you can access on the summit’s web page contain:

Software Development Tips you can learn from Xing 4.0, a different interview, which allows the listeners to pick up useful tips and lessons from Traian Kaiser, Director of Agile Project Management and PMO at Xing.

Friday, 9 March 2012

Qcon 2012, Keynote - Resilient Response in Complex Systems

I was a bit late to the Friday's keynote at London's QCon (thanks, Southern trains) , but I managed to take some notes from John Allspaw's "Resilient Response in Complex Systems" talks. Here they are:

1. There are number of things that go wrong when the teams are faced with a failure of a complex system.  There's refusal to make decisions caused by either lack of authority (people want to make a decision but they are not sure if they can), lack of information (people can't make a decision, they can only guess) or bureaucracy and politics (people that are able to make a decision can't make it fast or without some approvals). There is "heroism" - individuals who walk away from the team to focus on what they think is the solution for the problem. If they success they send a wrong message to the team and the company - that the issues are solved by individuals, if they fail they abandoned the team when facing a disaster. There are also distractions - you need to be able to cut down the distractions to minimum  when dealing with a disaster. This means irrelevant emails/links/social events but can also mean isolating business owners from the team if they only add distractions when "panicing" over the outage.

2.  SRK Framework: http://en.wikipedia.org/wiki/Ecological_interface_design#The_Skills.2C_Rules.2C_Knowledge_.28SRK.29_framework

3. A good example on how to deal with a disaster can be found in so called High Reliability Organisations (HRO - for example companies which work can affect human life or health, places like air traffic control or hospital). They are very complex, they have to trade off between efficiency and thoroughness, they usually engineer-driven.

4. "Managing the Unexpected: Resilient Performance in an Age of Uncertainty" by Karl E. Weick 

5. The ways HRO deal with disaster: the teams are close to each other, they share the tools and the information, there is overlap in skills and knowledge, the team members can be moved from one team to another. Over-communication is the norm. There is safe environment in which teammates can point out errors and mistakes - reporting of errors and mistakes is awarded.  There is high level of "unease" - everybody is used to idea that disaster will happen, and they are prepared for it. People have high level interpersonal skills. There are publicly available detailed records of previous incidents. Patterns of authority are dynamically changing to meet the demands - people directly dealing with the problem have the power to fix it.

6. Drill - practice troubleshooting under pressure, be comfortable with your tools,try to come up wit new ways your system can break, and practice the ways of dealing with those. The are actions that can be taken immediately when a disatser happens, make sure those are fast and automatic for your team.

7. The law of stretched systems

8. Near misses - communicate them and widely distribute them. They happen more often than actual distaters so you get much more volume of incidents to improve on. They are a reminder of the risks.

9. Spend as much time understanding why your team succeeded as on why the team failed. When faced with choice wether to analyse your success of your failure choose to analyse both. Think what and why things go right.

10. Learn from other fields, train for outages, learn from mistakes (and avoid politics and bureaucracy), learn from successes as well as failures.  

Monday, 5 March 2012

Cloud Architecture training at QCon (3)

Notes from the last part of the Cloud Architecture training at QCon.

This part was mostly about Cassandra - why Netflix uses it & how they use it. There were bits about monitoring and about scalability of their system. Here are the most interesting points:

1. CAP Theorem - Choose Consistency or Availability when Partitioned. Master-slave vs Quorum models.

2. An overview of current Netflix Persistence stack. It included info on Memcache, Cassandra, MongoDB and MySQL.

3. Introduction of Netflix open source tools for Cassandra users: Priam - Cassandra Automation and Astyanx - Cassandra java client. Both can be found on github. We also heard about Netflix contributions to Cassandra.

4. Interesting background on why Netflix uses Cassandra. Makes me really wonder about our use of Riak... Also we've got a very details Cassandra data flows for single and multi region apps. Included the replication, backup, archive and logging mechanism. It's all backed up by S3.

5. Cloud bring-up strategy - they used Shadow Traffic Redirection, worked in iterations, one page at a time, starting up with the simplest . They managed to "sell" the cloud to all developers early on a development boot camp. Most of the issues they faced were around key management and early lack of experience with the AWS.

6. The monitoring is based on logs (they log everything almost all the time). The logs are processed in Hadoop and are used to generate reports. They use AppDynamics as a portal that gives them deep look into what's running in production.

Last slides covered the structure of the team - notably small sys-ops, and DBA teams and very strong java dev teams.

Overall the training was very useful and packed with interesting info. I can see at least two more posts coming out of it. It also made me note some questions for Shopzilla's cloud migration in EU.

Cloud Architecture training at QCon (2)

Here are the notes from today's after-lunch session of Cloud Architecture training at QCon.

We've moved on to more detailed architecture description of what is currently running under Netflix customer-facing apps. Here are the most interesting bits I noted:

1. Finally I have good names for our client and site libraries that we use in Shopzilla. Netflix calls them SAL - Service Access Library and ESL - External Service Library. I like the way they use ESL to call up local cache and that service side cache has it's own SAL and can be accessed by webapp via ESL or from service. I think our clients may be still too thick and our site libraries are too thin at the moment.

2. The main problems Netflix developers tried to solve during the switch were: the development teams interaction and the kitchen sik objects (like Movie or Customer). The first one was fixed by more service oriented architecture, with grained libraries and well defined responsibilities, for the second they used "facets pattern" which I'll describe later. Basically it's about understanding that objects can be represented differently when they are used different. It gives developers a way of working with the same objects without breaking each other.

3. Lots of good practices on logging and monitoring. Especially on how to use hadoop/hive and AWS for that. Note to self - figure out a way for us to collect usage analysis data.

4. We got a nice overview of Amazon, and Netflix tools that are used and were developed during the migration. We've heard about S3, SQS, some third party tools like GeoIp and keystore /HSM. There are some new open source tools going to be releases soon by Netflix - watch this space: https://github.com/Netflix

5. We also heard about how they deal with security, making sure that only right people have access to the instances, but also limiting the ways services can cal each other - only services that are part of certain security group can call a service, easy way to find out who calls who.

Cloud Architecture training at QCon (1)

I'm attending the Cloud Architecture training by Adrian Cockcroft today. Here are my notes from the morning session.
http://qconlondon.com/london-2012/presentations/show_presentation.jsp?oid=3889

We have around 40 people in the room, 3 girls including myself, two of them are IT students. 90%+is the usual while male programmer type (the session kicked off with introductions from the audience, I haven't been asking people what they do on my own :)). So far the highlights for me were:

1. Netflix dev team slides & other resources we all can find online, see: http://www.slideshare.net/netflix http://techblog.netflix.com/ and http://developer.netflix.com/

2. Learning about how Netflix team works with Amazon providers: no sysops team, developers pushing builds over from testing to production. Fully in-cloud QA environments. Overreaching specs, almost no-existing capacity planning. Also, the out of the box account/keys management provided by amazon wasn't good enough, so they had to implement they own.

3. Discussion about other providers, actually the reasoning behind why Netflix uses Amazon and not any other cloud provider is not that interesting - Amazon is the only one that can handle scale. What is interesting is to learn about the risks they had to look into before even deciding to go to any cloud. Apparently if forced to they can move out of Amazon in 3 months. At the moment they would move into private cloud, simply because there is no other provider that can handle a company of the that size.

4. It seems like different teams in Netflix own different services, so you wouldn't get two teams or more messing around with the same service. They do CI & they release to production a lot (just like we do :)), but they had to move to the cloud to do that.

5. Moving to the cloud took 3-4 years. The bulk of work was to actually re-factor the system so it's more manageable. It's amazing how many things were broken and needed fixing before the move. We saw a noce chart of all the component that were moved to the cloud, seems like the process was very similar to what we do in Shopzilla, however the scale of the system, and the scale of changes introduced was much bigger.

6. Really good (and only 10 minutes long) explanation of the anti-architecture approach. A bit like the boxes method we use right now, but geared more towards developers. Will try that one out soon :).

Still want to hear more about how they detect issues in production (they use the canary method for releases, but what about the issues that can only be detected after some time? Do they use splunk, do they have some automated monitoring systems? Who owns those (no SysOps, no CM)?)

Monday, 4 July 2011

Problem with shutting down Tomcat via cargo?

I spend some time trying to fix that one, so I figured I should put it on the blog, so I won't forget about it.
We use cargo maven plugin at work to set up some container tests for our services. One of the services I checked out had a problem with it's container tests but only when they were executed via our hudson.
The error message said something like:
org.codehaus.cargo.container.ContainerException: Failed to stop the Tomcat 6.x container.

and below that:
org.codehaus.cargo.container.ContainerException:
Server port 8009 did not shutdown within the timeout period [120000]


Now I don't know much about anything as complicated as ports allocation, but I can check if something is running on a given port (thank you google). I run following command after the build failed on our hudson box:
netstat -an | grep "8009"
tcp 0 0 :::8009 :::* LISTEN

Again, don't know much about this stuff, but I'm guessing something is still running on that port. I don't own hudson box, and I don't want to break anything, so I decided to just change the tomcat AJP port for my container tests. To do that I used a cargo plugin configuration property (cargo.tomcat.ajp.port), like that:

org.codehaus.cargo
cargo-maven2-plugin


tomcat6x


file:///${basedir}/container/apache-tomcat-6.0.18.zip
${project.build.directory}/container-install-${test.container.port}



standalone
${project.build.directory}/container-config-${test.container.port}

${test.container.port}
-server -Xmx256m -Xms256m
8093

...

...



That worked pretty well, tomcat is now closing fine and the build is successful.

If you need something even more sophisticated when you start up your container, you can use ant run tasks in start and or stop goal. For more info you can check this Curiously Correct blog post.
For more info on cargo maven plugin visit cargo.codehouse.org, especially their maven plugin tips page.

Tuesday, 28 June 2011

Misko Hevery knows what I think about static methods

And he can explain it so much better than I can:
http://java.dzone.com/articles/static-methods-are-death-testa

Tuesday, 27 October 2009

What do I do on the train when I'm too lazy to work?

Lots of people ask me what do I do on a train. I spend two hours commuting to London every day, and luckily I travel in comfortable, not very crowded train which route gets me exactly where I need to be without changing. So far I used to watch movies and TV series on my laptop, listen to music on the phone and read books i.e. do the standard stuff. I do a lot of reading about development and I'll prepare a short post about the books I've read lately. I do some coding as well as other work (writing emails, receiving emails and so on...). Last week I've decided to get all hip and trendy and start playing games. I did throughout research of gadgets that I can use and narrowed in down to those:

  1. IPhone/IPod touch - not really a mobile console, bu it's a hell of a gadget and they do make games for it. Discarded as too expensive, and not really what I need as a gamer (the games aren't very impressive, and no chance for playing any of my faviourates on that one).
  2. Nintendo DS - cool games (super Mario!), support for old snes games, remastered final fantasy series. What's there not to love? Maybe small screen and ugly graphics. And resolution that wont allow watchign movies or doing anything else except of playing Nintendo games.
  3. PlayStation PSP - now that's something. Good games, lovely screen, movies and internet browsing. Tekken 6! Pricey but not as pricey as apple toys, and you can get older models (psp 1000, 2000) at decen prices with packs of games and movies on e-bay and even amazon. Definitely interesting option, that I will ocnsider when writting the letter to Santa this year.
After all this research was done I had a list of things I wanted to do with my gaming gadget, and amount of money I was ready to spend on it at the moment. And than I had a chat with my friend, who is a long time gamer, and a retro gaming expert: "Well if you want to play Mario and rpgs and you've got your mac book which you drag to work and back home every day, why won't you use exactly that?"
And then he pointed me at ZSNES which is SNES (Super Nintendo) emulator that can be used both on mac and pc. There's a lot of games available to run on this emulator (they're called roms), and they are great games indeed: Super Mario World 1 and 2, Chrono Trigger, Final Fantasy series up to Japanese VI part, just to mention my favorites!


Check out this video to see the best ones.


Also visit the http://www.sydlexia.com/top100snes.htm to see a list of games with descriptions and comments.

I do admit it's a bit retro, and maybe not as hip as I hoped, but hey - maybe this time I'll finish FF6 (last time I got to the end of the world ... which is around half of the game :))! Besides last time I've checked retro was fashionable, so what the hell.

Check out ZSNES on project's Home Page and enjoy.


Tuesday, 5 May 2009

Contact Form

Haven’t written anything for a while.
New contact form is added to kreska's box (and soon will be added on kreska's notes). I used facebox and this tutorial.
Lots of things happened (hence the lack of new posts lately): I've got new job (yay) in London (3 hours in train every day - booh), but I will be doing Java again (yay). Also I have my SCJP exam this Thursday (booh). Will add more stuff here once I’ll be done with all of those things :).

Wednesday, 25 March 2009

World first programmer was female

I failed to notice Ada Lovelace Day yesterday, but I still want to remember this extraordinary women - world’s first programmer. Check out her wiki page.

Tuesday, 10 March 2009

Icon pot - free icons for personal AND commercial use.

Highly reccomend this site to any developer. Icon sets that are listed there can be used in any personal, or commercial project without any back-links or credid to the author. I guess anybody will agree it's not easy to find those.
Link to the site: www.iconpot.com
and to the rss feed: feeds2.feedburner.com/iconpot

Thursday, 19 February 2009

How to make your css better

Still on the track of being The Greatest Front End Developer in the World :).
Here's nice and practical list of advices on how to make you css better.
Will try to implement at least few of them.

Wednesday, 18 February 2009

CSS and sprites = fun, fun, fun.... fun

Many big players are using it (facebook for example). Big files full of small images - tiles used as sprites in your CSS based UI interface. I like it - reminds me of old mobile game development times :). Did that for the external links menu on left side of website. Seems to work fine.
What would be a post without a useful link?

Dependency properties in WPF

Guess it's not a good idea to work in .NET if you don't know anything about it. Well, nobody asked, so here I am, trying to figure out what's WPF all about.
Beware world of UI Developers :)
Here's a useful link about dependency properties.

Tuesday, 17 February 2009

Javascript rss reader

Just put an url to the feed you need to read and generate nice simple and working(!) script that shows needed data on your website. Wanted to use PHP functions before, but they have troubles with connecting remote servers through firewire on my server.
Get it here

Wireframing of website and applications

I'm getting more and more interested in UI design and devlopment of apps. I'm kinda pushed into that in my current job, but I'm begining to like it. Stumbled on wireframing while going through some documents from project I'm working on, and decided to investigate.
Here is an interestng link