Msg Poisoning

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Email
  • RSS
  • Reddit

For those who don’t know me that well, my life has unfortunately been blighted for many many years by a mysterious condition that causes all sorts of rubbish illness type things. I’ve been on tablets for YEARS for acid reflux disease, IBS, had my gall bladder removed, anti depressants (at times, not always), been told to go to counseling, countless blood tests, endoscopies, barium meals, dietitians, crazy diets to find food intolerances blah blah blah. The doctor recently just accused me of being crazy and the whole thing being in my head. I’m so bored of telling people about them but necessary for the following explanations. I also have weird auto-immune reactions (skin rash, difficulty breathing, tiredness, muscle lethargy among others) to some food from one place that I don’t from another and all sorts of things. Seemingly no connection at all….

After a particularly bad few weeks on the old stomach etc, I was sitting having a jar with my splendiferous partner Andrew complaining about my plight for the millionth and trillionth time. We’d had a few and he piped up: “You know what? It might be MSG”. At the time I went pffft could be anything, but after thinking about it – I decided to do some research. I was amazed beyond belief.

Effects of MSG and MSG Allergy/Intolerance:

  • Competes with Cysteine for uptake in the digestive system. This can create a Taurine deficiency which is used to make Bile. Changes in the bile make up can have an affect on the whole system and cause abnormalities in your whole digestive system. Mainly of course, your gall bladder. I was diagnosed with gall stones at the age of 16 after suffering gall bladder attacks for the previous year. To have gall stones at that age is very rare and subsequently I had my gall bladder removed. The bile also effects your bowel especially when you have no storage facility (the gall bladder) as it just dumps the bile straight there. Dietitian says this is quite possibly an attribute towards the development of my IBS. This in turn also affects the acidity levels in your stomach – hello reflux disease! Not so nice to meet you!
  • Apparenntly MSG is not a true allergen but damages your nervous system therefore sparking an immune system type response including laboured breathing (check), skin rashes and flushing (check), unexplained severe fatigue (check), rhinitus (check), nausea (check and double check), a feeling of weakness in your limbs/ muscle lethargy (check), headaches (check), pins and needles (check) – hmm lets keep up with the research before jumping to conclusions so far.
  • MSG has been known to affect behaviour quite a lot causing unreasonable anger responses and irrational thought. We can all safely assume that I see red quite a few more times than perhaps I should?
  • MSG has also been known to exacerbate and bring on depression – ok I will admit this. It’s something I have suffered from on and off for years. Shhhh don’t tell 😉
  • Fat retention of up to 40%. When you are losing weight and hit that plateau even though you’re being super good? Probably all the msg in those low fat things you’re eating. I’ve already started to lose weight.
  • Induces food cravings so you eat a lot more and more often. My portion sizes since eliminating it from my diet are about half and I’m full for a lot lot longer.

I have now been off MSG for the past 2 weeks. I’ve had a couple of mishaps where I found yet another ingredient posing as something else but is actually MSG. More on those in a minute! I’ve also given up sweetners as they have the same affect on the body as MSG does.

MSG in ingredients lists:

  • MSG
  • Monosodium Glutamate
  • Monopotassium Glutamate
  • Glutamate
  • Glutamic Acid
  • Vegetable Protein Extract
  • Gelatin
  • Hydrolyzed Vegetable Protein (HVP)
  • Hydrolyzed Plant Protein (HPP)
  • Autolyzed Plant Protein
  • Sodium Caseinate
  • Wheat Extract
  • Calcium Caseinate
  • Textured Protein
  • Yeast Extract
  • Yeast Food/Nutrient
  • Autolyzed Yeast

The following also contain some factory processed glutamates and should be avoided for a totally MSG and varients free diet

  • Malted Barley
  • Barley Malt
  • Malt Extract
  • Anything with just “flavourings” as an ingredient
  • Maltodextrin, Dextrose, Dextrates
  • Caramel Flavouring (riboflavin)
  • Stock (The process of making it increases natural msg levels anyway – let alone the bought stuff with added “extras”)
  • Broth
  • Buillion
  • Carrageenan
  • Whey Proteins, Whey powder, Whey
  • Pectin
  • Protease
  • Lecithin (Soya Lecithin is in 95% of chocolate as an emulsifier – no wonder we like it so)
  • Anything that has just “seasonings” or “spices” as an ingredient without any other info
  • ANYTHING soy is out. Check bread for soya flour – most brands use it.
  • Cornstarch Fructose
  • Protein fortified anything
  • ultra pasturized dairy products
  • modified food starches
  • Lipolyzed butter fat
  • Citric Acid unless stated it’s from lemons. Most good things use lemon juice and most rubbish things just state citric acid
  • Milk powder
  • Dry Milk Solids
  • Gums (guar and vegetable)
  • Anything with enumbers starting in 6
  • Beta Carotine

Natural sources of MSG in high quantities and foods to avoid

  • Hard italian cheese – particularly parmesan
  • Mushrooms
  • Over Ripe Tomatoes
  • Soy and Soy products
  • Sea Vegetables (I love that crispy seaweed!!)
  • Marmite, Vegemite, Bovril etc
  • All “Low Fat” of “Non Fat” products
  • Condiments such as Ketchup
  • Most pub chips
  • Spreads (marge, olive oil spread etc)
  • Aspartame and sweetners
  • Stock based products such as stews, gravies etc
  • Peas
  • Any longer life bread and bread check all bread for soya flour
  • Packet meats such as ham – the preservatives make me ill
  • Only eat normal foods at restaurants – no sauces or anything mucked about with.
  • Salad dressings
  • Fast foods – any of them.
  • Squash (Robinsons however now have a “natural range” which doesn’t make me ill. Quite nom too.
  • Any drinks except water really.. they all have sweetners and msg derivitives in.
  • Concentrated juice drinks (most mixers in pubs)
  • Alcopops
  • Biscuits
  • Chocolate
  • Sweets
  • Preserves and Jams

This list I’m sure will grow as I experiment!!

Two weeks later however, I am not on my tablets anymore. My stupid phobias and anxiety has significantly decreased. I don’t feel sick all the time anymore. Pins and needles significantly reduced. Much more energy. Much less anger. Happier healthy me :) I’ve gotten it a bit wrong a few times and suffered (now I’m not used it to it, I’m finding it hard to just work through like I have done) but these are rapidly decreasing. I’m much more proactive and just getting on with things in my bonnie manner I used to have as a child rather than crazy banshee irritable witch woman. I can’t believe the difference. 15 years…. it’s a long time to constantly feel ill and a long time to wait to feel like normal and I couldn’t be happier. I have recently taken on an allotment with my boy and we are really looking forward to quality home grown no added fodder food that keeps kirstie as kirstie instead of kirstie as twathead. Yay!! Even my programming has improved haha!

Lets hope it continues!!! I believe that a lot of people are sensitive to MSG due to the amount of people that react to high quantites in fast foods and obviously chinese but don’t realise it. Hopefully this will enlighten people to maybe try and stop poisoning themselves quite so much. I can’t have any but it can only be good for others to reduce the intake. Obesity is on the rise and the amount of rubbish we now put in our food – I can see why!

Keep your brackets on dear!

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Email
  • RSS
  • Reddit

Lots of people use different names for these, I personally favour “curly brackets” though their correct term is apparently “braces”. These are usually found round conditional statements and the like in PHP. At least you HOPE they are! Quite often I come across places where they have been left out for some reason – usually lazy coding.

[code lang=”php”]

$value = “thing”;
if ($something === true) doStuff($value);

[/code]

Now alot of people would say: “It’s only one line so it’s ok to leave out the curly brackets this time and keep the code on one line to enhance performance”. Performance implications for some curly brackets is minuscule and means that the code does not flow when you read it. It makes it harder to find problems and also when you need to add some logic you can end up making a right royal mess such as:

[code lang=”php”]

if ($something === true)
$array = array(
“thing” => “apple”,

“action” => “eat”
);
$doStuff($array);

[/code]

By adding one more element to the if statement (the array) $doStuff is going to doStuff whatever the outcome of the if statement. A mistake like this becomes very very hard to spot and can be easily made when in a rush to add last minute changes or change logic in a tight deadline. By keeping the curly brackets in – coding standard is maintained and error margins reduced. Here’s how that last statement should have looked.

[code lang=”php”]

if ($something === true) {
$array = array(“thing” => “apple”, “action” => “eat”;
$doStuff($array);
}

[/code]

simples!

PHPUK Conference 2010

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Email
  • RSS
  • Reddit

Business Design Centre – 26th Feb 2010

A brilliant day, albeit one slot had zero interest for me.

Firstly we were greeted rather half-heartedly by the bloke who ran the show – Scott Macvicar, which went on to a talk about the simplicity of development. Really good – for the first 30 mins, then it seemed like he was repeating himself a lot, that talk could’ve been half as long. However, such as it was and was actually a really good talk. I like any other developer, loves knowing that he/she holds the only knowledge to how an api works and making brilliant and inspired choices when it comes to problem solving. This is not a good thing though. In commercial development, knowledge sharing, convention, simplicity is key. It was very useful to be reminded of this.

The second talk I attended was on AntiPHPPatterns. It was so interesting to learn just how much new applications are reliant on old technologies! I agree with Stefan Priebsch that globals belong back in the dark days of PHP4 and was seriously shocked, but quite amused by the fact that a previous framework I’ve worked on beat them hehehe. There were constants just to define something along the lines of INDEX_CATEGORY_LIST_ITEM_1_FONT_SIZE etc etc. I think that’s been addressed in the new rewrite thank goodness! It was also good to have a suspicion of mine confirmed that singletons are rarely appropriate in PHP and are used far too much! What’s the point when PHP is single threaded. I can see the point of static variables and classes obviously but the pattern is somewhat designed for multi threaded languages like Java etc. Thanks Stefan!

After a quick break to go get my freebies (disappointing this year I’m afraid, not an ElePHPant in sight!) I was sat down again to listen to a lecture on the new features of PHP 5.3. This was really informative as I have yet to find time to really experiment with it. I’m super excited about namespaces but will admit I took a while to grasp the point of anonymous functions that Fabien was giving us. It all seemed a rather too complex answer to a problem. Nice to know that dependency injection is something that more and more people are addressing. Symfony claims to have the only commercial “Injector” which prepares your objects. I may be being a bit stupid, but I failed to see the point when you can’t store the dependencies to be called (thereby still having to remember what to give the injector to prepare…). I would be really excited to take that forward to the point where not only is dependency injection stablised through the injector, but also without the object being created knowing about the injector, and the injector not caring what dependencies it’s given without the logic having to “hard remember” what it needs. I have built a service locator in the past with handles exactly how to create objects (each call is $locator->getSessionServer()) etc etc and the locator (along maybe with the injector) would give you exactly what you need each time. Of course, this may be going a bit far, but I’m not the only one who’s had that idea…….

Lunch was an MSG fest (turns out all kinds of stock is banned therefore the stew was a bad move) so I pretty much tried not to vomit/pass out/fall asleep through the next lecture on CouchDB. A very similar app to MongoDB which was talked about at work by one of the senior developers. I must say, Jon’s talk was more eloquent and easier to take on board without feeling that inherent mistrust in schemaless dbs. I would say more – but I was suffering rather so wouldn’t like to comment. This was the slot where I just couldn’t decide. I’d also just won Windows 7 Pro and was rather unhappy at not winning an XBox. I use Ubuntu and left Microsoft behind yonks ago…. Never mind! It’s still good to win 😀

The next talk sounded really promising on paper as it was going to include monitisation for mobile. Turns out it was just about how to use the PayPal API. Rather dull and look, it’s another API, when I need it, I’ll read the docs. I’ve integrated with enough 3rd party APIs to know what I’m doing. An ex-colleague of mine walked out as he was so unimpressed. I lolled :)

The last talk I attended (along with the rest of my colleagues who it was really nice to spend some time out of the office with and get to know them a bit more) a lecture about the design and development of Web Services. I was super chuffed to realise that I actually knew most of what she said and the things she does as best practise – I do too. Big Woop! Maybe I should’ve gone to that IBuildings interview after all….. The talk was given by someone from there called Lorna Mitchell who is a rather well known specialist and it was the first time I’d seen her talk. Very informative and I didn’t fall asleep. Good start.  My favourite development also being building standalone APIs, I had a good end to the conference.

My rather genius boss won a trip to the US for being super clever so we were all happy :)

All in all – a good day. But note to PHPUK – more ElePHPants next time please!

Bespoke Frameworks

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Email
  • RSS
  • Reddit

Quite possibly, you may in your time be presented with the phrase: “Why do we want to use other people’s code when we can make our own. This gives us an edge commercially”.

I have been faced with this a number of times in my career as a (rather lazy – I have an inherent mistrust for energetic, type frenzy ones) programmer. Many times I’m confronted with legacy frameworks that are still being used in their unfinished and rather tatty state.

There are several reason why companies have their own framework, usually developers that created the initial building blocks were around before PHP frameworks became a hot topic or even readily available/any good. This is what I (and most others) call a “Legacy Framework”. Quite an apt term I believe as most bespoke frameworks are littered and usually clogged up with vast amounts of legacy code.

While at a previous job (one I loved regardless), we had a framework built in PHP4 that was entirely procedural where a few attempts had been made at OO programming with the addition on inc files with thousands of standalone functions in. This is actually probably a little unfair as there were a few classes scattered around where the lead developer had given it a shot. That being, back in 2007, we were faced with the conundrum that PHP4 was about to be dropped and therefore no support was going to be available. Bear in mind at this point PHP5 had been out for 3+ years already so that in itself was a surprise to contend with! This meant that the real issue was the previous framework. Although it had been almost rewritten entirely once already, there was just no feasible amount of time to spend refactoring it so it ran using Zend Framework. While we had rewritten a lot of the code from its PHP4, procedural days, it was impossible to remove all the legacy code and build new features at the same time without dedicating months only to the refactoring of it. However thanks to Zend Framework having an extensive library that doesn’t mean you need to incorporate its MVC architecture – a lot of our code ran a lot more efficiently and through refactoring one part of the identification process of mobile users, we slashed loading time from 15secs to 0.5secs. (I did this – I’m ruddy proud of it too hehe!).

I’m a staunched believer in using 3rd party frameworks for production but must admit have learned a lot about the fundamental best practices of basic coding by using bespoke frameworks and building parts of them of my own. A friend of mine (who I’m lucky to know as the guy is a PHP genius…) referred me to a rather informative blog which said that every PHP developer SHOULD build their own framework, but never put it into production. He basically says that it’s a grand idea to learn the basics – but a community framework is 99% the right way to go.

Community is very important in open source development these days. Without it, you lose great opportunity for feedback and code being refactored till it’s at it’s absolute best. I don’t know of anyone who has the time to do this alone. If I have a question on Zend Framework, Symfony, Code Ignitor etc, there are so many forums I can consult for the answer. The problem with bespoke frameworks is that they are rarely documented well enough to find an answer quickly. You are left rummaging around not very well documented code. In the instance of some previous frameworks I’ve worked on – add procedural code to this! Not fun reading through 3000 lines of code to find out what the hell is going on!

Also – what’s better? A. Hiring someone who can hit the ground running with knowledge of your framework already? of B. Hire someone and let them spend a few months getting to know it before they can do major enhancements and features with it? This all depends on your commercial outlook I guess.

With this in mind, I will be using Zend Framework for all my personal projects with google and forums as my friend when I get stuck!

Tips for successful voluntary development work

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Email
  • RSS
  • Reddit

One might say: The best work you do, you do for free.

In the realms of voluntary work, I think that saying should be changed to: The best work you do, you do for yourself.

Don’t get me wrong, I think that a lot of selfless people do a tremendous amount of good work for others. I myself have recently started expanding my own voluntary work to include services that I might otherwise charge a great a deal of money for. This is all in the good name of Scouting. I love going to Scout and Explorer Scout meetings and giving these kids a purpose in life; but lately have been drafted into the District’s IT initiative due to my job being roughly that.

Let me explain the set up behind this organisation. You have national Scouting, which is then split up into the various counties in the UK, mine in particular being Kent. This is then split up into districts, the one I’m involved with being the Swanley district. A veritable source for kids of all ages in the area to learn, develop and grow within a successful, giving but also proud organisation. Let me take this post from being a slur and take it back to a technical case study…. My frustrations hold no place here.

The IT directive started as the District deemed that the web presence at the time was serving no purpose, about the same time as I joined the Scouting movement purely by coincidence and was quickly drafted to help within this initiative. I took this on with great gusto! I was proud to be able to give back to this community. I was reminded on various occasions that I was not at work and that this should have little impact on our working lives. A hard task for someone who spends all day doing that exact job I tell you! This directive has failed however for a few simple reasons. The first being that there was no person in charge of this directive who actually had a clue what was needed or wanted. A common problem that us professional developers face on an almost daily basis I hasten to add! Add this simple flaw to a group of people who spend their personal lives dedicated to a non profit and non paid voluntary past time and you have in one short word; disaster.

Unlike a professional outfit, this type of work is often done by people who take basic development skills/want to learn web development and apply them to this type of work in order to provide a wider presence for their causes. A grand gesture to say the least. We have committees, projects, development strategies the same as any company but these go unmanaged and are most of the time a rather ad hoc, “when I have time”, “when I can be bothered” basis. This in a company usually leads to a few sackings and a restructuring. In a voluntary organisation – you take all the help you can get.

In short a few tips for keeping those stress levels low and the success rate high:

1. Make sure that all meetings are recorded and sensible action points laid with regard to time available rather than time it SHOULD take.

2. Appoint someone who has the time to give to manage projects.

3. Take the time to train as many volunteers as you can to minimise impact on daily life. If you are stretched – you won’t do your best.

4. Although you can’t have a day to day normal running of a project – you can adopt sensible methodologies of working over a longer time period or a wider team. Agile is my personal favourite.

5. Make sure that people are being used sensibly to do sensible tasks. I.e don’t appoint someone who knows nothing of databases to run a project that includes building one.

6. Make sure that people talk to each other. In one case, we had someone promise a project without telling the right people he had done so (we were unaware) and without making sure that it is feasible in the first place. (It wasn’t.)

7. Don’t try and take everything on, you end up taking everyone on.

8. Don’t forget, it’s for a good cause and everyone is there for the right reasons.

With these – you will have a much happier experience in my view. It sounds very simple, but they are easily forgotten.