winds.jpg

Followers

new post

Powered by Blogger.

20130126

The best approach to software development

Today, talking about doing a big design up-front (BDUF) sounds a bit ridiculous, right? Who would do that? That's not craftsmanship, is it? 

However, in the past, that would be considered the norm. Writing requirement documents, drawing architectural and very low level detail diagrams was the right thing to do. Well, that’s what very smart guys proposed on the 1968 NATO Software Engineering Conference and it worked for NASA and the US Department of Defense. I’m sure they know what they are doing and if it works for them, it will definitely work for our small CRUD application or one page website. And then it happened. It became a religion and the majority of projects in the following decades were developed like that.

No, but not nowadays. We've learned the lesson, right? We wouldn't make this mistake again.  

After watching a few talks in conferences and InfoQ, we understood that this is not a good thing. We’ve also read in some books that we should do TDD. The design should emerge from tests.

And of course, we should adopt an Agile methodology as well. Let’s adopt Scrum to start with. There are many books about it, certifications and even entire conferences dedicated to it. Of course we should adopt TDD an Scrum because that’s the best approach to manage and develop and software.

Oh, but what about all this lean stuff? Eliminate waste, limit work in progress, system thinking,theory of constrainsKanban. I heard it worked really well for Toyota so we should definitely do that as well. Why? Jesus, you just don’t get it. Of course that’s best approach to manage and develop software.

God, how could I forget? I was also told that I really should speak to my customer. We should really discuss the requirements so we can have a better understanding of what we should build. Are you using BDD? No!!! Wow! How can you develop software without that? Why should you use it? The answer is simple. That’s the best approach to manage and develop software. Don’t tell me that you thought that BDD was a testing tool. You are so yesterday. That was version one. BDD version threeis all about communication. It's about software development done right. Yes, I know it sounds alien but apparently we are supposed to speak to people. God, how on Earth we haven’t thought about that before? How did we develop software all these years? If you don’t use BDD, you are just doing it wrong. Why? Because that’s the best approach to manage and develop software. Duh!

Outside-In TDD, Inside-Out TDD, ATDD, Classic TDD, London School TDD? Really? Are you still discussing that? Don’t tell me that we you are still writing tests. What? Why are you wasting time writing unit tests? It doesn’t make sense any more. You should spike and stabilize. What if you don’t know what you are doing or where you are going? What if you just want to explore your options? Why are you writing tests? Oh, I get it. You were told that this was the best approach to manage and develop software. Nah, forget that. Unit tests are for losers. We write small services and just monitor them. If they are wrong, we just throw them away and re-write. And THAT is the best way to manage and develop software.

Architecture and design patterns? What??? Who are you? My grandfather? Scrap that. That’s for programmers from the 80ies and 90ies. In the real world we have our design emerging from tests. No, stupid. Not using normal TDD. God, which planet do you live? We use TDD As If You Meant It. We use this technique and PRESTO, the design emerges and evolves nicely throughout the life span of the project regardless of how many developers, teams and design skills. Every one can see code smells, right?

And what about DDD? Domain Driven what? Nah, never heard about it. Hmm.. hold on. I think I heard something about it many years ago, but probably it was not important enough otherwise we would have more people today saying that DDD is the best approach to manage and develop software.

Noooo. No no no no. No, I didn't hear that. Get out of here. Did you just say that you are still using an Object-Oriented language? STATICALLY-TYPED???? No, sorry. This conversation is a waste of my time. It's because of people like you that our industry is shit. The only way for this conversation to get even worse is if you tell me that you still use a relational database. Haven't you heard that functional programming is a MUST DO and just retards and programmers from the 80ies and 90ies use relational databases. Functional languagesNoSQL databases... Repeat with me. Functional languages, NoSQL databases. What a douche bag.

Ah, trying to be a smart ass? Yeah, functional programming appeared long ago in the 50ies and developers in the 60ies and 70ies preferred to use OO instead. But you don't know why, do you? DO YOU? They did use OO because they were a bunch of hippies that didn't take anything seriously. They were that sort of people that went to Woodstock, got high on LSD and had brain damage after that. No, don't take this whole OO stuff seriously. We are finally getting back to reality now. Functional programming and NoSQL databases are definitely the best approach for software development.

Dogmatism, religion, context, curiosity, inquiring mind and pragmatism

Before I conclude, I just want to clarify that by no means I'm criticizing any person or group of people behind some of the methodologies, technologies or techniques mentioned above. These people have done an amazing job thinking, practicing and sharing their own ideas of how software development could be done in a better way and for that we should all be grateful. Our industry if definitely better with their contribution.

My main criticism here is about how the vast majority of developers react to all these things. It is not just because someone, somewhere wrote a book, recorded a video or gave a talk in a conference about something that it will make that thing right, in all contexts. Quite often, we fail to question things just because the people promoting it are relatively well known. We fail to understand the context where a methodology, technology or technique should be best suitable for. We fail, quite often, to use our own judgement because of the fear to be ridiculed by our colleagues. We should stop being dogmatic and religious about things. This just leads to stupid decisions. Doing things for the sake of doing or because someone else said so is just plain wrong and stupid. 

Being a good developer means to be inquisitive, curious and pragmatic. Never religious. Never dogmatic. Curious means that we should be eager to learn about all the things mentioned above and many many more. Inquisitive means that we should investigate and question all the things we learn. Pragmatic means that we should choose the right tools, being technologies, methodologies or techniques, for the job.

Context matters. 

Whenever you see people saying that we should or shouldn't do something, ask them why. Ask them about the context where they tried to do (or not to do) what they are saying. 

Software development is not the same thing of producing cars. Once the car is ready, you don't go back to the manufacturer and ask them to add another wheel or put the engine somewhere else. Developing software for expensive hardware is not the same thing as developing a simple web application with two pages. Hardware has an specification that you need to code against. Quite often, you don't even have access to the hardware because it is just not built yet. The cost of a bug in production is not the same for all applications. The cost of a few bugs in a social networking or cooking website can be very different from the cost of a few bugs in a trading or financial system processing millions of transactions per day. Working with a small team, every one co-located and with easy access to customers is very different from working on a project with 10+ teams spread in 5 countries and different timezones. 

Read and learn as much as you can. However, don't assume that everything you read or watch applies in every context. Make informed decisions and trust your instincts.

The bad news is that there is no best approach to software development. Maximum we could say is that there are certain technologies, methodologies and techniques that are more suitable to a specific context.

In case you are really trying to find the best approach to software development in general, I hope you don't get too frustrated and good luck with that. If you ever find it, please let us know. It's always interesting to know about different approaches. Maybe unicorns really exist. Who knows?

Read More »
7:08 AM | 0 comments

20130124

Libyan war casualties in Saltcoats care home


the3towns can reveal Libyan nationals injured in the recent war that saw the overthrow of Colonel Gaddafi are currently housed in a Saltcoats care home.

Arran View in Burns Avenue, which normally looks after elderly residents of local towns, is providing beds and recuperation facilities to ten Libyans.  Mr Kenny Valentine, a director of Bupa, which owns Arran View, told the3towns, “We are working with NHS Greater Glasgow and Clyde to look after ten people from Libya who were injured during the recent conflict there.  Their treatment and care is being paid for by the Libyan Government and has been arranged by the Scottish Government.”

Mr Valentine said Bupa was proud to have been chosen to help with the rehabilitation and recovery of the Libyans, adding, “We wish them a speedy recovery so they can return to their families.”

The new residents of Arran View were brought to Scotland to receive specialist treatment from the NHS.  They were fitted with prosthetics after losing limbs during the recent armed conflict in Libya, in which Britain provided military support to rebels fighting forces of the Gaddafi regime.

For the SNP Scottish Government, Health Secretary Nicola Sturgeon said, “It is right that we play our part in the UK effort by helping innocent casualties from the war in Libya where we can.

“Scotland offers excellent prosthetics care and we can now offer this quality of care to others who urgently need it.  All of the patients have suffered lower limb amputations and one is a bilateral amputee.”

It is understood the Libyan Embassy in London is funding the care of the ten people currently recuperating at Arran View.

Read More »
7:27 AM | 0 comments

What’s in a Dog’s Name?

William Shakespeare may have posed the question “what’s in a name?”, but in my opinion, his answer doesn’t apply to everything. Some people think that how a dog behaves is completely dependent on their breed and their training. Even though breed and training do come into the mix, there are a few variables that are overlooked, perhaps the biggest one of the being what you decide to name you dog.

Some of the most common dog names seem to go with certain personality aspects that you can expect from your dog. From famous dogs on television, to dogs that I have met in real life, here is a list of ten common dog names and the personality traits I associate them with.

Lucky: Typically given to pound puppies or dogs that have suffered some injury and overcome it. Ironically a dog named Lucky is likely to have a rather unlucky life despite his consistently positive attitude and go-getter mentality.

Patch: A dog named patch is usually named so because of his coloring. What usually comes to most people’s minds when they think of a Patch, is a knee high white dog with black patches, one of them inevitably being over one of the eyes.  Patches are rather protective of the owners and can take some time to warm up to strangers. Despite being slightly stand offish, he will never fail to come through for his human when he is needed most 

Lucy: Shy and docile, a dog named Lucy will always appreciate you. She won’t display her personality around you unless she feels extremely comfortable but once she does your stomach will ache from laughing so hard at her clumsy demeanor and goofy personality.  

Max: A Max is always confident and prefers to be the alpha male in any group. He needs an owner who will train him with a firm but loving hand. Given enough structure, Max will be a great guard dog but will still have plenty of love left over for you.

Bella: With no real personality of her own, a dog named Bella won’t ever contribute much to the atmosphere other than some piddle on the carpet when she gets over stimulated. 

Lady: A dog named Lady will surely live up to her name. Poised and ever charming, Lady will rarely need behavior correction beyond her puppy stage.

Buddy: Buddy may be your buddy but because of his overwhelming amount of energy, you need to make sure that you correct his behavior when needed. While he would never intentionally do something wrong just to prove a point, his enthusiasm for the world around him often gets the better of him and he can’t hold off his instincts to pounce and play. 

Lola: When named Lola, your dog will definitely become the show girl of your household. Always vying for you attention, she will be quite a handful but when given the amount of attention she requires, she will make a great family pet and companion.   

Duke: A typical man’s-man dog, all Duke wants to do is lay down on a giant pillow in front of the TV after an early morning of flushing geese. He is a stereotypical gentle giant and will never hesitate to give you a big sloppy doggy kiss across your face. Special care needs to be taken to make sure that Duke gets the amount of exercise that he needs because he is not likely to ask for it himself.

Roxy: Sass and personality rule the personality of the pup. Roxys are stubborn and opinionated, especially when it comes to strangers, but they are ever loyal to their human counterparts. She needs lots of interaction with strangers to keep her comfortable and to avoid her becoming aggressive towards those that she doesn’t know. 

Author Bio: 
Ron Rutherford is a writer with a passion for nature and a soft spot for Thai food. He currently freelances for havahartwireless.com, which specializes in progressive and humane

Read More »
7:21 AM | 0 comments

20130122

This is the cause of People Shocked Can Jump Off


Little surprises in life sometimes fun, which is why many people love surprises. But if surprised to shock and make people die, it is a heartbreaking tragedy. There are some people who have this disorder. By scientists, a condition that can lead to death shock is called hyperekplexia.

More recently, researchers in Britain have found that the presence of abnormal genes that cause disease are called shock or more formally called hyperekplexia. Patients with this disease have an exaggerated reflexes shocked when responding to sound and touch. Startle response will be followed by muscle stiffness that can cause respiratory problems and sudden death.

Strange disease is caused by a genetic mutation causing multiple nerve cells can not communicate properly. In particular, these mutations affect the removal of a molecule called glycine to move between cells.

Glycine sends inhibitory signals that reduce the response to sound, noise and touch. Disease in patients in shock, inhibitory signals is not running. As a result, it reinforced stimulus and the resulting dangers.

In a research report published Journal of Biological Chemistry, scientists at University College London and Swansea University in Wales analyzed information from 93 people shocked disease patients worldwide.

Scientists have identified 19 new genetic mutations GlyT2 building blocks of protein which is responsible for the transport of glycine into the cell. Researchers also found that mutations in GlyT2 is a major cause of disease shocked 8 cases in England and Spain.

"The new findings confirm that mutations in the gene GlyT2 is a major cause of this disease. If the nerve cells do not get enough glycine, the glycine is released will not be enough. This prevents the transmission of inhibitory signals, "says the researcher, Beatriz López-Corcuera as reported by Live Science.

The researcher explains that this disorder has been present from birth. In infants, the disease can cause sudden infant death syndrome or sudden infant death syndrome (SIDS). These symptoms usually decrease after the first year, and most babies can survive to adulthood.

Read More »
10:31 PM | 0 comments

Why Google Can Track Infidelity!


selingkuhThis is a warning for anyone who was having an affair. Through service Street View in Google, your car could be detected where I was, as experienced by a husband in England.



As reported by The Sun, the husband was saying goodbye to his wife away on business. But, as she surfed the internet and open a service Street View in Google, discovered that the car belonged to the husband's Range Rover berparkir in front of her affair.

The incident, the woman who was not named was sued for divorce her husband.

Street View is a Google service launched last March 20, able to see the streets in 25 cities across the UK. This service could provoke protests because they entered the people's privacy.

Earlier there was the case of a man caught being out of the sex supply store, and it made ​​him ashamed to be teased because his friends and family.

Read More »
9:06 PM | 0 comments

Popular Ways to Healthy Living in Antiquity


What is the secret to the longevity of ancient wisdom? How did the people from the past to maintain longevity?

1. Meridian Therapy

Meridian is a tissue that controls the flow of blood and life force throughout the body to ensure proper functioning of all the parts. According to the Huangdi Neijing (Yellow Emperor), they are the key to life and good health. Ancient people believed that in order to maintain the smooth flow in the meridians, stimulating, giving a massage or doing acupuncture to the acupuncture points Hegu, Neiguan and Zusanli is the most important, because they are connected to the head, heart and other organs respectively.

2. Macrobiotics

Ancient people believed that food and drinks can be healthy for the body, repair damaged organs, prevent disease and help maintain longevity. They advocated the idea of ​​"the crops being the main source of food, fruits for additional, domestic animals and poultry to supplement nutrition, and vegetables to supplement," They also see the importance of seasoning blend to bring balance.

3. Living according to the seasons

Ancient wisdom run seriously. As the seasons change, so do all living things. Thus, ancient people believed that man should eat and live according to the changing seasons. Fight against nature means health.


4. Detoxification

All internal negative energy, such as depression, overeating, fatigue, or external negative forces, such as excess or lack of natural elements such as wind, sunlight ... may be the cause of the disease, and they are considered as toxins in the body. Cleaning and nutrition through diet and medication can help maintain internal balance.




5. Meditation

Meditation is important in the study of longevity. Mind dominates the body. When the mind is calm, all parts of the body remains in tune and harmony, which are essential for good health. On the other hand, when the mind is filled with anger, too excited, scared ... body off balance and vulnerable to disease.


6. Cultivating Character

If the character does not just make themselves peacefully, but also help to reduce one's bad thoughts or bad words, and will add enthusiasm to help others. When the mind is cleared, the heart is filled with joy and openness, thus, health will not be far from you.

Read More »
12:45 AM | 0 comments

20130121

HDR Tone Mapping Using Film Profiles


By definition, an HDR image contains more latitude in pixel brightness than can be displayed on a monitor. When you take a standard digital photo of something bright like the sky at sunrise, a short exposure may capture the sky properly, but the ground will be black. Re-expose to capture the ground and now the sky is blown out.

The really maddening thing about digital cameras if that you get to see the photo right after you take it. So you see your black ground on the screen but then look up to find that the ground isn't black at all. In fact, it may look about as bright to you as the much lighter exposure where the sky is completely gone. There you stand with your eyes easily able to see everything, a little annoyed with your camera's poor showing.

In a nutshell, the problem is dynamic range. You eyes can capture a wide dynamic range, but the camera is capturing a narrow one. HDR photography lets you combine different exposures to create a floating point image that represents the real world scene being photographed, sans your camera's limitations. But then when you want to show these scene-referred pixels on your monitor, you have to do some tone mapping.

Here are examples of tone mapping available in Adobe Photoshop and After Effects. The first four are the standard ones that ship with Photoshop, while the last two are made using a technique I'll show you.


Legend:
1. sRGB / Gamma 2.2 curve
2. Highlight Compression
3. Equalize Histogram
4. Local Adaptation
5. Film Profile Tone Mapping
6. Film Profiles + color correction and film grain

The sRGB curve in #1 is what is typically displayed by default. A gamma curve is applied to the 0.0-1.0 range and the rest is clipped. This is what you'd get from just taking a regular photo.

Options 2-4 try to bring bright values down into visible range without crunching the other pixels too badly. You can see in each example that more detail has been brought out around the sun and the coarse clipping has been reduced. However, each technique has trade-offs. You'll notice that detail is lost in areas where a bright object comes close to a darker one such as the disappearance of a clear horizon line near the sun. Local Adaptation can sometimes produce halos in these circumstances as it fights to maintain contrast while bringing pixel values together. Sometimes the image comes out looking more like a painting than a photo.

Don't get me wrong, each image is different and these algorithms can produce some good results. But a tone mapping technique I have grown to like involves simulating the way film would capture that same scene. For one reason or another, people have always had a fondness for the look of film, and many movies are still shot on film for this reason. But what is it about the look of film that people like so much?

One explanation is that film is the original high dynamic range capture format. Even under long exposures a film negative is never absolutely 100% exposed, so the bright areas of highlights can retain detail that would be lost by a CCD.

After Effects CS3 ships with a series of ICC profiles that describe the response of different film stocks to light. Since an HDR image describes the actual light in a scene, converting from the linear HDR color space profile to a film stock profile using the Color Profile Converter creates a simulated negative in Log space (make sure you use the Absolute Colorimetric intent). From there, you can apply a Theatre Preview Profile, which simulates that negative getting printed on a film positive and the projected. So if you trust the color science involved, you're looking at your scene as if you had shot it for a Hollywood movie.


Looking at example #5, you can see that the results are pretty impressive. There is a good tradeoff between detail around the sun and detail in the rest of the scene. And the sun has a very nice film-style glow around it with no hard clipping at all. Since the film profile response is a simple curve, you don't get any of the artifacts of the other tone mapping methods. Finally, there is probably something about the simulated printed film that will remind you of all the movies you ever saw before the dawn of the digital age.

In this case I'm doing everything manually—I've disabled all color management by using no working space profile and checking "Preserve RGB" in the HDR files. The same process can be set up as a display LUT so that your project lives in linear, but gets viewed through the film preview. To do so, set a linear project working space, turn on Display Color Management in the View menu, and then turn use View > Simulate Output > Kodak 5218 to Kodak 2383, which uses the same settings I am. However, to actually output an 8-bit JPEG or TIFF with the film look, you'll have to set up the Color Profile Converter as I have.

In example #6, I have done a little more processing. By applying a Levels call to the original linear HDR pixels, I can do a realistic color correction where light is brought down in the scene as it would in nature, making it cooler in this case.

Then I add a little film grain while the pixels are in simulated Log space, in between the two Color Profile Converter applications. Add grain is a 16-bit effect, but this matters little because log space does not need floating point values over 1.0. In fact, Log is usually stored in 10-bit Cineon files, so you have more bits than a typical film scan would.

By switching the simulated film stocks, you can also see how your same scene—accurately stored as an HDR image—would appear using different stocks. Much cheaper than experimenting with the real thing.


Read More »
7:46 PM | 0 comments

OpenColorIO for After Effects

OpenColorIO ("OCIO") is an open source system for managing color in film production pipelines. It was originally created for internal use at Sony Pictures Imageworks, who then released it publicly in July 2010. It now includes an After Effects plug-in that I contributed.

The main advantage of OpenColorIO is that it will function identically across all programs that support it. So if you want to make sure that your color transformations in After Effects match those in Nuke (now shipping with OCIO), this is a way to do it.

Of course, like any open source project, the plug-in is free. Anyone is free to download the code, build it themselves, or contribute a change. Here I've got pre-built versions for you, which I'll try to keep up to date with the evolving OCIO library. A PDF manual is also included.

Read More »
7:45 PM | 0 comments