Peregrine’s research results discrepancies affect its stock price

I’ve always been fascinated by how companies function and how their operations affect not only the direct stakeholders that are the company owners and customers and/or clients but also their investors and the company’s position on the stock market.

Recently, I’ve had the chance to try out this stock trading online simulator called Wall Street Survivor, which upon registration boosts your virtual ‘bank account’ with $200,000 for you to try and invest on real world companies with regularly updated stock prices.

I learned about value stocks, growth stocks, and how to not make the newbie stock trader’s mistake. So for starters I thought I’d search for a company that doesn’t have a high valuation but has huge promises for the future.

I came across this Peregrine Pharmaceuticals Inc.  trading under (PPHM) which looked promising. Now I know, I’m not very professional into jumping straight into buying 5000 shares without consulting some balance sheets, income statements, and some history charts, but what the hell… since this is the beginning and I’m playing with an imaginary number that doesn’t have any value in real life, I thought I’ll give it a go.

Now, I didn’t just jump at it completely. I did read some news about it. Specifically about how Peregrine experiments with the bavituximab drug to treat non-small cell lung cancer ended up showing “major discrepancies”, which as a result affected its stock value tremendously plummeting it from a High $5.50 a share on 07/09/2012 to a Low $1.55 on 25/09/2012. Three weeks difference and a test result can tremendously affect the confidence of investors in Peregrine’s future stock value.

Check this link for more information:

Nevertheless,  I purchased 5000 shares at $1.55 and sold them after an hour at $1.87 (which turned out to be its Day High).  Made over a thousand bucks from that (which sadly was just some virtual cash resonating from my Macbook’s screen).

Anyway, it was an interesting and exciting experience, and I hope to learn more and keep advancing my stock trading and investment skills as time goes on.

Many thanks for taking the time to read this post.



Posted in Entrepreneurship & Investment | Leave a comment

Project: London Taxi Meter

I had the opportunity to work with an amazing group of people who were exceptionally talented at their craft, at the mobile digital agency – Conjure Ltd, where I built my first Android application, namely the London Taxi Meter.

I commenced my internship in the summer of 2011 during which I spent countless of hours developing the London Taxi Meter app. Being the sole Android developer at Conjure at the time had its advantages – which meant that I didn’t have to worry about someone else editing my code base and its disadvantages that I didn’t have a partner to practice some pair programming (something that I’d love to do more often). The app would eventually land on the Evening Standard’s “Essential Apps in the Capital” list, a proud moment for myself – even more so being my first Android app. Android and its fragmented ecosystem was difficult for me to adapt to in the beginning but artificial selection took its course and set me on the right path, after many sleepiness nights of coding and lots of coffee. It was not so much the functional part of the application that took the best out of me, but the countless adjustments of the user interface that needed to be done in order to have a visually good looking UI and consistent UX across different Android devices with different hardware and software specifics. Thinking about it now, the app’s main objective was to:

  1. Use the phone’s GPS sensor to identify the user’s current location
  2. Allow the user to enter a destination location (street name/zip code) and/or departure location. 
  3. Calculate the approximate shortest distance between the two locations and the time it would take to cover such path using an automobile – using Google’s Mapping service.
  4. Calculate the black cab taxi fare according to the taxi tariffs. 
  5. And present the whole information to the user.

Pretty much straightforward!

Straightforward, if you leave out number 5 that is. London Taxi Meter, uses a heavy customised UI which understandably took most of my summer time. (Google owes me a full summer – an internship would do (Thanks :D)). The app has been downloaded by more than 3000 users since it was first published in August 2011 on the then Android Market (now Google Play). You can check it out under the following link (don’t mind the 1 start ratings – they’re from jealous competitors):, I integrated Flurry analytics in this app which means that you get to see some statistics in terms of the types of users, including demographics, and devices that tend to use an app like London Taxi Meter.

Fig 1. illustrates the age distribution of users of the London Taxi Meter app. I have not set the flurry agent to gather age data from the app. Therefore, the following age distribution statistics is an estimate established by Flurry using phone information gathered from 652 users.

Fig 1. Age Distribution

Fig 2. illustrates the dominance of the male gender in terms of usage over the female gender. An indication that male travellers tend to use mobile technology to help out with their taxi journey more than females.

Fig 2. Gender

The following statistics show the usage in terms of numbers of new users according to continent/region. Interestingly enough, the Middle East outnumbers Oceania, Africa, and South America, and shows an incredibly close statistic with that of North America. Obviously, this is an app for usage in London only. Which could mean two things:

It is either being used by people who show an interest in assisting their local taxi journeys or it is being used by people who are planning to travel to London.

  • North America: 100
  • South America: 16
  • Europe: 2692
  • Africa: 20
  • Oceania: 25
  • Asia: 143
  • Middle East: 92

The following figure illustrates users by persona. Among the top users we have:

  • Business Travelers
  • Social Influencerse
  • Bookworms

Just below that we have the secondary range of users who are either:

  • Entertainment Enthusiasts
  • Casual & Social Gamers
  • News & Magazine Readers
  • Value shoppers
  • Sports fans
  • Catalog Shoppers

Fig 3. Users by Persona

Undeniably, the travel industry is here to stay and flourish even further. It is currently being disrupted by such companies as Hailo (“…to get a black cab wherever you are, whenever you want..”) and Uber (” … your on-demand private driver. Request a ride at any time using our iPhone and Android apps…”).

What’s the next evolutionary step ? Keep coming back at my blog for future posts on this subject!

Many thanks for reading!

Posted in Projects, Work / Personal | Leave a comment

Meet a Mentor

Had a great time last night at the Meet a Mentor event organized by the Graduate Development Community and held at King’s College London. Met a lot of amazing people from different backgrounds, got engaged in very interesting discussions which I will be outlining shortly but before that I will just add a few sentences about how the event was structured. We had around 40 attendees consisting of Undergraduates, Masters, PhDs, Agile Developers, Web Developers, and even Diabolic Developers, Software Architects, Analysts, CTOs, Founders, Freelancers, Authors, etc. We were essentially aggregated into groups of 5-9 people. Sitting on chairs in a circle with no table in the middle contributed to having more lively and informal discussions which I think was great. Each group had 1 to 2 mentors talking about their experience and answering questions from students within a period of 15 minutes before jumping to another group. That way we had the opportunity to hear from all the mentors that were present. The event started at 6:30 and stretched to around 8:30 (perfect timing). After that we headed to the Old Bank of England pub where we continued our lively discussions but this time with refreshing cold beers. They didn’t have Carlsberg at the bar so I went for a first taste of Chiswick which I mistook for Chipswick (one of those funny moments).

Here’s a list of some of the points made from the discussions last night:

Open Source

  • Getting involved in Open Source projects is a must for every developer and especially for students if you want to set yourself apart from the rest of your peers, just like it’s a must for a graphic designer to have a portfolio of their graphics work. It’s highly valuable by employers and some even value it more than your university degree itself. So get a github account, fork some projects you like and start collaborating or upload your own project and invite your friends to join in as collaborators.

Programming Languages

  • It’s always good to know more than one language, especially if those languages differ in paradigm. For example learn an Object-Oriented language like Ruby or Java and a functional language like Haskell, or partly functional like Scala.
  • There is an increasing demand for functional languages whose paradigm offers great support for concurrency. Scalability in some frameworks is in issue for example with Rails. It was mentioned that Twitter was originally built in Rails but due to Rails inability to scale properly has led them to switch to Java technologies.
  •  There was also a mention of PHP server-side code being used as an interface between the the user interface and a Java enterprise stack which handles all the business logic and the heavy computations.

Job Roles

  • If you work for a large organization as a front end developer you will not be expected to do the job of a back end developer and vice versa. However, in small to medium sized companies that is usually not the case and developers are found to get involved in both sides of the development process front and back-end. So you might want to consider adding some PHP or Ruby skills to your HTML and CSS skills.
  • The job of a Software Architect involves working with projects from inception to delivery. The software architect must be able to consider all kinds of factors that could influence the project whether they are related to technology or business. It involves considering issues such as regulations, risks, available budget, resources, technologies, methodologies, etc. You can become a software architect after years of experience since a software architect must be an experienced developer who has deep knowledge in a breadth of technologies and programming languages and is business acumen. There is a lot of communication involved so having excellent communication skills is key to this role.
  • If you’re going into freelancing than it’s important to remember that you should go for projects that pay on a per-day basis rather than those that have a fixed price. If you’re doing a project for a fixed price, than that could potentially lead you to do work for free if you can’t meet the deadline or if the client wants to change a previous feature. A client that pays on a per-day basis means that you can do extra work but for an extra amount of money.

Essential Skills

  • Being proficient in your technical skills it’s not sufficient and it’s not the only thing that employers are looking for. You must also have peoples skills and be articulate in how you communicate your knowledge and ideas to a technical audience and non-technical audience as well. It is considered to be fundamental skill to have and many good developers fail to get jobs because they lack communication skills. This was highlighted by almost all the mentors.


  • There was a lot of discussion on the Agile software development methodology. It was mentioned that for developers Agile makes life harder in the short term but easier in the long term. Obviously, it’s much better for the end user who at the very end of each iteration receives a working version of the software. And iterations usually last around two weeks. If you’re interested to learn more about Agile, I have blog post dedicated to that just below this one!!
  • It was also pointed that usually developers themselves write the test cases. And instead of hiring test monkeys they automate the whole testing phase and arrive at a point where test monkeys are not needed. A test monkey is a person who is temporarily assigned to test a software for a particular purpose.


  • There was a lot of discussion around maintaining zero downtime and avoiding loss of data in servers during faults. For example when a server goes down, the software using that server should immediately switch to another sever and maintain data consistency while at the same time the whole process should be unobtrusive to the user.
  • The cloud was part of the discussion as well, where it was pointed out that big organizations tend to be reluctant in adopting external cloud systems due to security issues and levels of trust.


  • If you want to start your own startup then you’ve got to love and believe in your product or idea. You’ve got to believe that people will buy and use it. Ideas can range from anything, but it is crucial that you feel passionate about yours. For example, you don’t like the current software that handles your finances. You want a new one that has the features you want or improves upon existing features. That could potentially be the kick-off of a new startup company that offers a better way of handling your finances.
  • To find partners or co-founders for your new startup it’s always crucial to meet up with new people, and what better way than to go to different events and chat with loads of people, talk about your idea and see if they they believe in it and share the same passion for it as you do.

These are some of the points made during the event that I managed to pick up from my memory. The meeting at the pub followed with discussions on topics like the C language, functional languages, OllyDbg, Quantum Computing, The Linux Kernel, Minix, Java, and loads of jokes and a lot of fun. If you have anything that you want to add or correct or want to have further discussion on then you’re welcome to do so. While you do that, I will take the moment to thank the Graduate Development Community for organizing once again a fantastic event. I will also like to thank all those who made it and especially the Mentors who volunteered for this, really appreciate your effort. For more great events like this refer to (Graduate Development Community)



Posted in Events | 2 Comments

Lego XP Game

I first learnt about Agile when I attended a Code Retreat at UCL(University College London) whereby we were put in pairs to practice Extreme Programming using TDD (Test-Driven Development). The retreat was code-oriented in nature and although it helped us understand the importance of working in pairs while practicing TDD it didn’t reflect the concept of Agile in a detailed way. It was mainly focused on the Testing part of the Agile process. However, the Lego XP Game event held at King’s College London, organized by the Graduate Developer Community and ran by ThoughtWorks, really pushed beyond the surface and helped me understand how Agile works in both principle and practice.
To avoid going the Wikipedia-style of providing you with a boring definition of Agile, I’m going to instead run you through the Lego XP Game event which at the end should give you a pretty good image of what Agile is all about.

The Lego XP Game event started with an arrangement of groups of six to seven people which acted as Agile teams. We were around five groups in the room. Each group had a ThoughtWorks employee who acted as a client for that group. Then we were introduced to some of the Agile concepts and the different stages that take place in an Agile methodology. The challenge was to build a bird for the client using Lego. As part of the game, we were initially given a large set of Lego figures which would later be used to build our lame bird. The game consisted of three iterations. Each iteration consisted of five steps:

  •  Task Evaluation,
  •  Task Allocation,
  •  Development,
  •  Showcase,
  •  and Retrospection.

In each step we had around three minutes except for the developmet phase where we had around five minutes. When an iteration would start, the client would give as a set of tasks, or commonly known as stories, such as: Build the head of the bird, Give the bird wings, Give the bird 4 legs, etc. Each task had a business value from 100 – 500 with 500 being the highest value. The first step of each iteration was to evaluate the task in terms of its difficulty with a ranking score of 1, 2 or 3, with 3 being the most difficult to build. In the first iteration, we started evaluating the tasks given by the client, by giving each task a score from 1 to 3. Once that was done, we moved to our second stage of task allocation and prioritization where we had to decide which task to do and in what priority, according to their given score and business value. Once that step was completed we would give back the tasks that weren’t selected and proceeded to the next phase, that of development. I would say that this phase was the most exciting part of the whole iteration and also the one where we made most of the fundamental mistakes. We didn’t pay much attention to the client who was sitting there all the time, watching us as we scrambled all the Lego figures, and wondering “why the hell aren’t they communicating with me! They’re doing it all wrong.”.
Of course, we couldn’t read the client’s mind until we demonstrated the work of the first iteration to the client and recieved a lot of negative feedback. In the retrospection phase we discussed about the things that we did and the things that we didn’t do. Then we analyzed our actions and discussed on ways to improve them in the next iteration. During this time we also learnt that communication with the client is key to a successful Agile team. Another important factor in a successful Agile team is task allocation among team members. If tasks are not clearly assigned to each team member then problems will arise during the development phase and eventually will lead to deploying a product that is half-finished or is completely out of sync with the client’s requirements in the first place. In our next iterations we basically improved upon the forementioned factors and had a continous difficult time with our client as she was a little bit confusing at times in the sense that she didn’t know what she really wanted us to do. She would ask us to build part B and later would say that she meant part A. Therefore, another issue to bare in mind here is that the client doesn’t always know what she wants, as the picture below depicts:

Agile is increasingly getting adopted in many small software houses and big corporations alike. It is as such an approach to software development. It can be compared to other sofware development methodologies like the Waterfall model, Spiral Model, RUP (Rational Unified Process), etc. For instance, in the Waterfall model, you would go through the following stages in a linear sequence: Analysis, Design, Implementation, Testing, Deployment, and Maintenance. This model is effective when requirements are stable, the technology is well known, and almost everything is deterministic. Although, this may sound very good to your ears, it is very hard to find a project that comes with those characteristics. On the other hand, Agile is a rapid and incremental delivery of software. A project that is processed using Agile will evolve consistently with the client’s requirements. Agile focuses a lot on business value, software quality, simplicity, collaboration, feedback, commitment, and visibility. By building on these values one allows the requirements and design to evolve as the project evolves, can increase the ability to respond to changing business priorities and dependencies, and ultimately lead to better control of quality and work loads. This is probably much better explained in the Agile manifesto which goes like the following:

“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

  •  Individuals and interactions over processes and tools.
  •  Working software over comprehensive documentation.
  •  Customer collaboration over contract negotiation.
  •  Responding to change over following a plan.

That is, while there is a value in the items on the right, we value the items on the left more.”

In a real world Agile project, you would expect the following phases: Planning, Design, Test, Code, and Release. These phases would be repeated in many iterations.
In planning, usually the client defines and provides the requirements for the project in the form of stories. The XP team assigns a cost to each story. Then in the Design phase the team defines an implementation guidance for the stories and continously designs and refactors the software by improving its internal structure while keeping the external behaviour intact. The next step would usually be the actual software implementation which is preceeded by first defining a set of test cases for the required functionalities. Hence, a TDD(Test-Driven development) approach. In the testing phase, the XP team would define Unit tests before any code is written. The tests are then run to ensure that our software fails, which prompts the developer to fix those fails through actual coding. The tests are re-run until they are passed and the whole cycle repeats again. At the very end of each iteration a working piece of software is released to the client. The client can then run some specificed acceptance tests which focus on the overall system features and functionality that are visible and reviewable by the client. Here’s a picture that encapsulates the Agile XP process:

I would like to thank the Graduate Developer Community and ThoughtWorks for organizing this fantastic event. If you live in London and you are a passionate developer then you should definitely follow the GDC and attend their meetups. You will have the chance to talk with some of the brightest minds in technology in London, and learn about some of the best Open Source technologies. Hope that by reading this article on Agile XP you will have a decent understanding of what Agile is all about.

You’re welcome to comment and ask any questions you may have.

Thank you!!

Posted in Events | Leave a comment

Installing Subversive in Eclipse Helios

In this tutorial we’re going to assume that you’re using Eclipse Helios

Since eclipse doesn’t have a subversion plug-in integrated in it we need to install it manually. And for that we will use subversive. Another alternative would be to use subclipse but in this tutorial we will stick with subversive.

To do that follow the steps below:

  1. Fire up eclipse and go to Help > Install New Software
  2. In the ‘Work with” textbox type:
  3. Expand the Collaboration box
  4. Then tick the box next to Subversion SVN Team Provider (Incubation)
       5. Click Next, Accept the agreement and Finish.
After finishing the installation eclipse will ask you to restart Eclipse for the changes to take effect. After restarting Eclipse follow these steps to install the SVNKit Connector:
  1. Go to Windows > Open Perspective > Other.
        2.  Select one of the SVN Kit 1.x.x options (e.g. SVN Kit 1.3.2)
        3.  Then click and click Next , read and accept the agreement and click Finish.
Eclipse will prompt you to restart it. After you’ve restarted Eclipse follow the next steps to connect to your online repository:
  1. Go to Window > Open Perspective > Other…
  2. Click on SVN Repository Exploring
  3. In the SVN Repositories view on the left hand side click the icon as in the figure below:
In the URL textbob type the URL of your local/online repository and complete the User and password fields which are the ones you use for the repository. And click Finish. If Eclipse prompts you for a password give the same password as the one for your repository.
And with that you have successfully installed subversive in eclipse and connected to your repository.
Now to actually code and commit changes to your repository you need to follow the following steps.
Normally, after you connect to your repository you will have a SVN Repositories tab on the left side of Eclipse where your repository link has been created:
As you can see I’ve added my repository on the left. In order to edit the file(s) and folder(s) inside that repository you need to link it with a project/folder/file in your local computer so that you can make changes and commit them. Right now your in view mode you cannot edit the files. To make it editable you need to follow the following steps:
  1. Right-click on the repository and select Find/Check Out As…
You will be presented with the following window:
As you can see, I chose the option to check out with the name specified, which means the project that will be created will copy the whole project and it’s name as well and will be stored in my Eclipse workspace.
You can also save the project with a different name in your workspace or somewhere else by checking the first option.
After we’re done we click on Finish.
Next we switch our perspective from the SVN Repositories to the Java perspective by clicking the double arrow icon on top right corner of Eclipse (see Fig below):
After you’ve switched to Java, you are now able to edit the files and folder and commit them to your repository. To commit, you first change a file in Eclipse and then save the file and right click somewhere inside the code of the file or on the file itself in left-hand side and go to Team > Commit.
That’s it for setting up subversive in Eclipse and editing your repository within Eclipse.
Happy coding!
Posted in Version Control Systems | Leave a comment