Showing posts with label Software. Show all posts
Showing posts with label Software. Show all posts

Thursday, June 16, 2011

All developers are not created equal - hence not interchangeable

Earlier yesterday I came across this article on the New York Times: Thieves Found Citigroup Site an Easy Entry. At first I thought, "Man, another big site had their customer data compromised", but as I continued reading this incident is a little bit different; especially the nature of the attack that was described in the article. The marketing and PR departments for these brands - and in this case Citigroup - need to be a little more careful about the kind of technical information that gets released when shit hits the fan.
Think of it as a mansion with a high-tech security system — but the front door wasn’t locked tight.
After reading through the article and the retarded nature of the attack you can't think of it as a mansion with a high tech security system; not even close. Some context on this attack:

In the Citi breach, the data thieves were able to penetrate the bank’s defenses by first logging on to the site reserved for its credit card customers.Once inside, they leapfrogged between the accounts of different Citi customers by inserting vari-ous account numbers into a string of text located in the browser’s address bar. The hackers’ code systems automatically repeated this exercise tens of thousands of times — allowing them to capture the confidential private data.The method is seemingly simple, but the fact that the thieves knew to focus on this particular vulnerability marks the Citigroup attack as especially ingenious, security experts said.
So, all these thieves needed to do is basically log in with their own or even someone else's Citigroup account and lo and behold this account number was present in the address bar after login. Changing it gave them access to someone else's account. A little script to repeat this for thousands of accounts and scrape the details.

This process was described by "security experts" as "especially ingenious". Really?!? This is the oldest trick in the book; i.e. mess around with the URL until you get somewhere. These "security experts" should get fired if this kind of attack was surprising.

The "what can we do, we got hacked" wagon got extremely popular in recent years, especially this year, but this Citigroup incident is different. There is no excuse for being on the "we are retards, we got hacked" wagon. When your "high-tech security system" is composed of changing account numbers in URLs, then what else can someone find if they look harder?

How does one get to this position? I think at the root of the problem is the thinking that people working in technology are interchangeable cogs in a giant machine. When you are building the pyramids, yes you can get 40,000 slaves and have them drag giant slabs of rock into place and stack them with virtually no way for an error to occur. And yes you can get another 40,000 slaves and replace the first 40,000 and they will still drag and stack the rocks as good as the previous 40,000 did. That mentality works when the tasks at hand are fairly simple and mechanical such as building the pyramids, or the production line at Ford. It is absolutely not valid in technology, yet there are many executives, project managers, and software architects today that think its possible.

The other part of the problem has to do with measuring expertise. The above assumption that developers, architects, designers, etc. are interchangeable also leads to the flawed assumption that a developer with 10 years of experience can replace any other developer with 10 years of experience as well. It is easy to get to that assumption when you think of these tasks as mechanical such as building the pyramids, or putting the wheels on a car. 10 years of experience developing doesn't have the same weight it did 30 years ago. Most developers today got into while they are teenagers, and hence by the time they graduate university they already have 10 years of experience developing stuff. Also, there are more technologies today that are available to the average developer to experiment with and try out, than there was 30 years ago. Hence why building technology systems  and development in general is a combination of science and art. The Sistine Chapel would have looked different if Leonardo da Vinci painted it instead even if he got the same directions from the Pope. The Pyramids would have looked the same regardless where the 40,000 slaves came from.

So for an online application that has to do with people's credit card accounts to fail at this level doesn't give me the warm fuzzy feeling that I should be getting when I read "Citi has implemented enhanced procedures to prevent a recurrence of this type of event." - if I were a customer.

Where else did you not do the due diligence you owe your customers? What other skeletons are in the closet? The New York Article should have started out like this:
Think of it as a tent with a zipper — but the zipper wasn’t closed.

Tuesday, June 29, 2010

the intersection of business and technology

Technology is useless if it does not deliver business value. Either it saves me time and hence money, or it makes me money. It has to be one or the other. Where does front end architecture fit in this picture? As the title points out, its right in the middle.

The front end is a misunderstood piece of any application, it is usually overlooked, underestimated, and belittled. Its fairly common to perceive it as "toying" around, "no/low value", etc. Its also very easy to believe that all the stuff that happens at the backend is the stuff that commands the big bucks. Unless you develop low level software such as compilers, web servers, drivers, etc. here is why you are wrong, and why front end architecture matters.

You can't deliver "customer focused solutions" if you belittle the front end


Successful front end architecture means focusing on what is important for the end user, not you the developer, nor you the SQL ninja, and not even you the business SME.
I don't know how this upside down tradition started, but I might have an idea. Application development usually starts with the back end framework, you know the Springs, and the Djangos, the Struts, and the Zends. None of these deliver any value to the user, they do add value to the delivery team and make them -in a perfect world- deliver better code, faster. So how did this tradition start? (One that focused on starting in an area that couldn't be any farther from the end user) My reasoning is that it started with equating building end user software with constructing a building. The first step of doing that, is to lay the foundation, the stuff that will carry all the weight of the rebar, steel, concrete, pillars, roof, and all the occupants and their equipment. All this stuff is as far away from the occupants of the building as possible, but it is by far more important than whether the doors open in or out. The occupants of a building are first concerned about their safety, a "customer focused solution" in the construction industry is one that is first safe for its occupants. Everything else comes later. However, when we use this analogy to building end-user software, we start out right off the bat focusing on the wrong things. A customer focused solution starts with the end user, what will he be interacting with, and then works backwards to define the solution that is required to support that end user.

You can't slap an interface on it


Okay, you can, but you shouldn't. Can you slap a steering wheel in the backseat of the car? Sure you can. Should you? probably not. Why is the steering wheel in the front? because the end user needs to see the road. Start with the end user and work backwards to the solution. A more accurate statement is actually "slapping a back end on it", or "wiring the back end to the front end". That you can do. Why? Because at that point you know what the user wants, and you know how your front end will achieve it.

Another reason why not to do this, is if you care about your users' experience, you would spend more time thinking through the front end, iterating and making it better. Forget the focus groups. Forget the design committees. Empower qualified, creative, and responsible people to make usability decisions. Have real users developers use your application, and keep your mouth shut. Don't show them how to use it, or what they're doing wrong. Observe, take notes, and make it better. Focus groups could just make you chase your own tail, as what happened with New Coke.

Phasing in features


Good back end frameworks and architecture allow you to phase in functionality as you progress in the project. A good front end architecture needs and should do the same. This means, just like a good back end does, a good front end must utilize a common framework. Today, not much focus is given to the front end. In fact it is assumed it can be completed 100% with a "big bang" approach. We don't use a "big bang" approach with the back end, why do you do it on the front end? Because you tried to slap an interface on it...

Front end components need to be thoughtfully designed, with re-use and phase-in in mind. Don't attempt a one-size-fits-all approach to these components. It might make for less development, but if your focus is "customer focused solutions" then you need to account for different use cases and different user types/roles. Also, just like back end components get re-factored when duplications occur, so must front end components. Why the double standard? because the front end gets belittled.

More data is better data


Yes, your gut can have a lot of say when it comes to the front end. However sometimes the change has no affect on your gut. Does it matter if your links are underlined? or are you just doing it because [insert your favorite reason here, ex. because my dog wags its tail when it sees underlined hyperlinks] Design your front end to be able to gather these usage patterns, because "customer-focused solutions" support their decisions on customers' actions. Don't even ask your customer whether they like A or B better, keep your mouth shut and observe. Do they use your application more? better? quicker? when A is there? or when B is there?

At the intersection of business and technology lies the role of the Front End Architect (FA). This person should be empowered and trusted to make front end architectural decisions based on supporting data that will deliver value to the end user. The FA, is not a business SME, they're not a designer, but they could be. They are a technical person, a developer with the scars to prove it. They work with the business to figure out how to deliver this end-user value. The FA also works with designers to iron out any usability issues that may affect the end-user value and can be fixed via enhancing the look and feel. They also work with the rest of the developers to keep front end components re-usable, and phase in friendly.

Do you have an FA on your project/in your organization?

Monday, May 24, 2010

The Mythical Man-Month

I think it was in first year software engineering that we had to read this book, and nine years later I really, really understand the underlying purpose of this book. It may just be yet another book back then, but the lessons that are hopefully learned from it will last a life-time - not just for software projects, but any project.

The Mythical Man-Month

Unfortunately on software project plans, developers, designers, testers, business analysts, product managers, etc. etc. are considered "just another resource" that are added and removed off of tasks. The assumption is that all are equally effective and skilled in all the required domains, and all will produce the same volume and quality. So in a perfect world it makes sense to scale the team to meet deadlines, although we don't live in a perfect and linear world, this is still the method of choice. Even though the biggest effect of this method; drastically increased non-linear communication time is widely known but mostly ignored.

Sadly this is the state of this industry, project plans that are too often disconnected from reality. I think part of the problem is driven by dividing tasks into a unit of time, after all that is how budgets are built, teams are put together, and progress is tracked. However on the other hand, this unit of time does not measure the real size of the task. Its just an illusion. Its like a building, we don't measure building size in number of months it took to build, we measure it by number of floors or in meters i.e. something relevant and real. If a 40 meter building was estimated to take 12 months, and in 6 months we are at 10 meters, then we are 25% done, and not 50%. However if this building were a software project its assumed we are 50% complete. Then at 10 months we realize we won't meet the deadline, forget about the Mythical Man Month and scale up. Why did this happen? Because software does not have a realistic metric, software is abstract.

Some say you get better at estimating over time, but that too assumes we live in a linear world. Ex. Project X took us 3 months, so we will estimate that project Y will take 9 months. We don't live in a linear world, and humans aren't good at estimating non-linear stuff. We may think that the second project is 3x as long as the first, but it could be x^2. However the hope is that over time you can make a non-linear project more linear by improving the processes for the non linear components. That effort is also non linear.

You can try to measure by team size, effort, or lines of code, etc. but all are just an illusion of measurement, none are real. Whether you measure buildings by floors or meters, you can translate between both. On the other hand, you can't translate lines of code into time, effort or team size.

I don't know what a better alternative is, but surely it is not this. Perhaps the problem is just trying to estimate that far into the future with too many unknown variables. Feel free to comment.

I recently read the book "ReWork" by the guys at 37Signals and one paragraph I absolutely loved has to do with project estimation.


The book is a must read.


Tuesday, April 20, 2010

Crash 'n' Burn: The 11th hour for Flash

Adobe's rhetoric continues after the curve ball Apple threw. The whining continues with this post: On Adobe, Flash CS5 and iPhone Applications.

Sadly, the whining doesn't change anything, and Adobe's argument would have been more valid if they didn't trying to lock developers into Flash/Flex and if it -Flash- were really open. Also, I think Adobe's Flash/Flex tools favor developing using Cold Fusion on the server side... you can use other server-side technologies however I believe the tools "play" better with Cold Fusion.

Apple's decision makes 100% business sense to me. They're advocating for their own platform, or open standards. Just like Adobe advocates for their own platforms, or open standards. What's wrong with that?

Flash filled a void in the 90s, but where is that void today? Is it even still needed? Yes its far superior technology, but its a closed technology. And to think that Android will succeed because it has Flash is just absurd. Android could be the iPhone's real challenger ONLY because it is open. The above post also seems to confuse "open" with "cross-platform". They're very different. Flash is cross-platform because its not open.

Flash needs something different right now, we don't need Flash to deliver rich content online anymore. We don't need flash to deliver sexy fonts. We don't need Flash to scroll and fade text. Soon we won't need Flash to play video - my Youtube embed below is still in Flash- . We don't need navigation built in Flash. So much stuff we needed Flash for (right or wrong) , that are just not needed today.

On to Flex, Flash's younger cousin. We - the majority - don't need that as well. Slowly but surely applications will move to the web. They may have some Flash components that could now just be as easily done in HTML5 or even HTML and some nifty JavaScript. Where I can see Flex fitting, is for these extremely specialized software, such as CAD or medical imaging. Such software is expensive and time-consuming to write, and would be a pain to translate into different operating systems. Such software also comes with heavy visualization, so its a good fit with Flash. Maybe thats where Flash will head, who knows? But there is definitely hardly any room today for Flash on the web.

This song is dedicated to Adobe Flash, I don't know who your savior will be, but you really need one right now...bad.

Sunday, January 24, 2010

The agile kitchen

Last year I posted about why successful restaurant kitchens are more Agile than many software 'kitchens'. Tonight, I'm posting more about this topic.

A good software developer is disciplined, just like a good chef is disciplined. Both will put extra effort to make that application or dish 'hit that sweet spot' nom nom nom. Both will cook stuff up that will add value, and not just because they can. The average chef will say "Yes" to every customer request, the good chef will use common sense and say "No" to some i.e. "No I will not put extra sauce in your lasagna because blah blah blah" - after all, this chef knows more than me and I trust their judgement. Certain requests are accepted right away - no discussion - like "sure I'll hold the nuts".

Now imagine the restaurant owner, they're not a chef, they're a manager. At the end, they are concerned about making money; after all it is a business and they didn't open this restaurant to just provide this excellent chef with a job. If the customer wants extra sauce, the manager's response will most likely be "Sure, thats X dollars extra" - the famous "change request", but thats another day's topic.

A Waterfall kitchen

Consider a "waterfall kitchen". The manager needs to know exactly how many people are seated, what each one of them are ordering, how complex each order is and how many chefs are in the back before scheduling any one order. In reality, most kitchens don't operate that way because you can't keep everybody waiting until all the orders have been taken. Finally, when the orders come out, some may be cold because of waiting so long and will be returned for re-heating. While re-heating, chef will notice that the broccoli doesn't look fresh anymore and needs to boil some new ones. Other orders will come back because they were incorrect. The chefs held the nuts on the wrong order and now a diner is choking outside. Now, all the chefs are waving their hands over their heads that it wasn't their screw up, the Manager is looking at the wait staff and developers to find someone to blame. The wait staff can't remember the details of the order they took 5 hours ago and then the customer mentioned they are allergic to nuts 15 minutes after that. The chefs say they cooked what is on the ticket...

So, clearly this "waterfall kitchen" can't work, why would it? The other problem with this kitchen is that by nature it will resist change. Because dishes are cooked at the same time, and the head chef inspects them at the same time, and waiters serve them at the same time, a change will wreck havoc.

But when can it work? That model would work when food is delivered. A catering service can't send each dish down on its own - obviously that won't work. There is only 2 trucks and they have two parties to cater to so all the food for one party needs to be delivered together to save delivery time, gas, etc. As for change, this model still works here because there are usually different varieties of food, and if you are a vegetarian or allergic to nuts the responsibility falls on your host to have something available for you - not on the caterer or their kitchen.

Anyway, I'll leave you with Chef Ramsay now and one my favorite episodes of Kitchen Nightmares - the case of the authentic Indian restaurant that served french fries and do-it-yourself curry...

Kitchen Nightmares - The Curry Lounge (sorry embed disabled for this video, and can't find one that can be embedded...) My favorite part starts at 5:40.

Sunday, January 10, 2010

Blast from the past - Team Athena

Back in 2005-2006 when I was finishing up my Software Engineering degree, we had to build an autonomous search and rescue robot using the Lego Mindstorms kit. Here is a video I found this morning of our robot "Athena" - the lean and mean machine - saving a poor, helpless, and yolk-less egg...

Monday, May 18, 2009

Lessons learned from Gordon Ramsay

Ever watched an episode of Kitchen Nightmares? I mainly got into it because of the similarities between running a kitchen  Gordon Ramsay style and how a lot of software processes could look at Gordon Ramsay for direction.

Ramsay's kitchens are agile kitchens and if his kitchens followed a waterfall model like many software teams do then you would end up getting your food at 2am after arriving for supper at 6pm. Anyway that is not the topic of this post, but you can read more on this at Clinton Begin's Blog.

Can you become successful by being average?

What makes a good dish a great one?
Every ingredient in a great dish is there for a very specific reason, there is not 1 unnecessary ingredient. Nothing is out of place and each element captures a component of the dish's essence.
Presentation, presentation, presentation. That is the second element of a great dish. A great dish is inviting, once you see it you already know how you are going to 'attack it' and you are not left confused where to start.

Why simple works better?


A good software engineer says "No" more than they say "Yes"
Cooking a great dish requires a lot of discipline; building great software also requires great discipline. It is very tempting to just add more ingredients or more features into a dish or software, but that temptation needs to be resisted; someone needs to act like a referee and reject anything that does not add value. Just because you can, does not mean you should. As a software consultant I always find myself facing customers that want everything under the sun in their application. They want everybody and I mean everybody to use it for everything. There are many problems with this philosophy, mainly you end up with a very cluttered software where it's main essence has been diluted. This is where I find myself asking over and over again What value does that feature add? Who does it benefit? How many will benefit from it? Keep in mind that 80% of your revenue is generated by 20% of your customers.

Gordon's cooking style is simple, and whenever he walks in to a failing kitchen he ends up simplifying and idiot proofing the menu more than anything else. A lot of restaurants fall into the trap of trying to satisfy all their customers even if doing so takes away from the restaurant's essence. This seems to be a common mistake amongst all restaurants shown on Kitchen Nightmares. Surprisingly lessons learned from these failing restaurants can be applied to failing software as well. One episode I remember is the case of an "authentic" Indian restaurant in Notting Hill that had french fries on their menu! Yes french fries in an "authentic" Indian restaurant. The owner's flawed reasoning is because some customer's wanted french fries. This is a simple example where discipline was required and if the customer wanted french fries they can go to the nearest McDonald's or KFC - not an "authentic" Indian restaurant. If it goes on the menu it will be ordered, but don't trick yourself into thinking just because it was ordered or used then there was demand for it.
I am a true believer that doing one thing great is better than doing a half assed job on 10 things. I hear the phrase "Jack of all trades" often in the software / consulting industry I don't particularly like it because it literally means you are not exceptionally good at anything, just average in many things i.e. "Jack of all trades; master of none". I don't see anything to boast about there. Don't get me wrong, there is nothing wrong with knowing a lot of trades, but everybody needs one or two trades where they are really good - and I mean really. So can you make a career for yourself out of being a "Jack of all trades" - I don't think so. 
In his book Malcolm Gladwell talks about the 10,000 hour rule where for one to call themselves an expert at anything they need to have done that for at least 10,000 hours. Consider one who works an average work week of 40 hours and no weekends, it would take you 5 years of doing nothing but that one thing to become an expert at it. If you are a "Jack of all trades" then it could take you 10 years, 20 years or maybe even a life time before you become an expert at any one of these trades. Point is, it is very easy to be a "Jack of all trades" but it is difficult to be a "master of one"; so focus on a few things or ingredients and become really good at delivering these ingredients together. Now you have a unique selling point. Next time remember this when you are just about to describe yourself as a "Jack of all trades".

Presentation is the second criterion for great dishes and excellent software. Making 12 features look awesome is always an easier and simpler task than making 120 look okay. Get the basics right first and then build from there. If you mess up on the basics, you really don't have a chance.

So how can you tell the difference between an excellent dish and an average one if all you have been tasting are average dishes?


Tuesday, May 05, 2009

MAMP: Mac, Apache, MySQL, & PHP

Install Apache, PHP and MySQL on a Mac in a few clicks. Search "Mac Apache MySQL PHP" and the first result you will get is MAMP. Like the popular LAMP installs for Linux you can do the same with a Mac with just a few clicks. You also get additional features that I have not seen on LAMP installs: a command and control center and Dashboard widget.


Monday, April 27, 2009

Free Ad-Hoc Business Intelligence and Database Reporting

I struggled for the past week searching for an easy to use, intuitive and ad-hoc business reporting tool. Today I came across Wabit from SQL Power - a Canadian consulting firm that specializes in business intelligence reporting. There are a lot of software out there, but they were either not free, complicated to setup, or required SQL knowledge.

Wabit is really easy to use and SQL Power did a really great job making the interface as intuitive and easy to use as possible. One thing I really needed is the ability to drag and drop tables onto my canvas and select which columns I need for a specific report. Wabit does exactly this, and does it very well.

It also comes with a WYSIWYG editor to design the report, you can drop labels in, drag in the queries you built and finally export the report to PDF.

When I started looking for a Business Intelligence database reporter I started looking for web applications, I figure that would be easiest way to get one, but I was wrong. The first database reporter I came across seemed promising after using the online demo was xreporter. It turned out to be complicated to setup with different components that needed to be installed and configured separately and then I was not able to get it to work. To make matters worse the available resources did not help me figuring out what I did wrong.

Slowly over the past week I came to accept that free, opensource, online BI tools are either non existent or very badly marketed. Today I decided to change my search angle, and decided to look for BI tools for Macs. I have a Mac and when I need an application for something I had no troubles finding it. Lo and behold after 20 minutes of searching there it was - the business intelligence tool for the rest of us. If you are not looking for bells and whistles in your BI tool, give this one a try.

Finally Wabit comes for Mac OS, Windows and Linux which is the other secondary requirement. I'm a PC and my customer is a Mac, so if I were going to walk him through using it, or troubleshoot problems I need to have it as well so this is great.

One problem I did find - not directly with the application but with Postgres - is that Postgres does not support cross-database queries. After generating a query through the GUI and then dropping the query within the report you will get a :

"ERROR: cross-database references are not implemented".

To resolv this just edit the SQL Wabit generates and remove the [DATABASE_NAME].[TABLE_NAME] from the FROM and WHERE clauses.




Tuesday, April 21, 2009

PhotoMap: Snap, Grab and Walk away

Following an earlier post about improving university campus maps I found this neat mobile application that allows you to make better use of a physical map.

Basically you snap a photo of the map whether its at a theme park, mall or university and have the application read your phone's GPS coordinates at two landmarks and mark the landmarks on the image.

Now you can walk around and follow yourself on that map. Definitely a handy little app to have next time you are feeling like a tourist or a freshman on a campus on your first day of classes.




Sunday, July 06, 2008

Is this the coolest way to browse Flickr or what?



I Came across this Flex app (flash) a few weeks ago that searches tagged flickr images that match your choice of keywords. The app is called Tag Galaxy, try it out.

So once again I am MIA on this blog for several months now. Nevertheless I have been very busy the past few months working on some very interesting projects.

Google Earth Day 2008
What have you done for Earth Day this year? I was on a team that developed a website for others to make publish what they will do for Earth Day.

Martha Stewart Store Locator

A map based store locator for MarthaStewart.com allows users to search for stores that hold Martha Stewart products. Filter stores by city, zipcode, radius, product and retailer. Very neat!

Audiograff.com
A really cool Google Maps mashup that plots the location of music events - currently in the UK mainly, but will grow to world wide events at some point. The other neat component is that the database is loaded with new events from Ticketmaster every day! Got a band? what are you waiting for?

On another note, I bought a Nikon D40 recently and started reading about photography. I am really impressed with the picture quality of the D40, I barely have to do anything and the pictures come out ' redonculously' awesome! I will put up some of the best shots soon - maybe I can tag them and get them to show up on tag galaxy! All in all, I am very happy with that purchase.

This was a pretty generous update on Random Sh!t tonight for the very few readers left out there. I'll try to be more active in the future.

Come again

Wednesday, August 01, 2007

Deja vu!


I was checking out findbyclick.com (a community to share map locations and points of interest using the Google Maps application), and I decided to check out the location for Pentura Solutions where I started working this week. To my surprise I found a black car parked right behind the office in an almost empty section of the lot and I thought "Deja vu!" This was the exact same view I saw today when I left the office at 6pm today, but from the top. Check it out, you never know what you might find other than the gazillion Tim Horton's and Starbucks locations already posted!

Friday, September 22, 2006

First attempt at Autodeskin' it!

I am taking a graduate level Mechanical Engineering course for my Masters degree. Its a 3D Surface Modelling course. A program called AutoDesk Inventor is used to build 3d objects from 2d drawings. I started playing around with it today to figure out how things work in it. The final result is the following drawing:



Hmm..this would look neat on my desk at home..or even in my office (aka a cubicle)

Monday, September 18, 2006

Google your computer

Since I formatted my computer last week I had to reinstall a lot of the software I initially had. I was downloading Google Earth since I like just playing around with it once in a while, and I came across Google Desktop. It brings Google search to your desktop and allows you to search for files on your machine very quickly and efficiently. It has several nice features since you can add several gadgets suchs as weather, news, etc. I took them all off since itll probably just slow down my computer, plus I dont need all these things all the time.
By default the Google Desktops bar will appear on the right of the screen, but it took too much space so I just moved it down to the bottom in the taskbar and then made it more compact by removing all the other unecessary features like the weather.



I also installed a neat virtual desktop called MSVDM and thats what you see in that image next to Google Desktop. This gives you 4 virtual desktops to organize your work on. I am a fan of multiple desktops and alway use it on my Apple laptop and it just makes working on several things less chaotic. For example on one desktop you can have your favorite email program open, and on the next desktop your assignment work, while on the third you have some reference website for your assignment. Switch between desktops by clicking on the desktop number and everything assigned to that desktop will appear while the rest is minimized. That is why it is called virtual, as its really not 4 desktops, but it just behaves as if there were 4.




Sunday, August 13, 2006

Windows XP on Apple Power PC? Why??

Although I prefer Mac OS, Windows still has some advantages...one actually. There are a few applications I use that are only available for Windows. For example, I play this web based online game called Utopia. You can download a calculator to help you do some calculations that can help you make decisions in the game. Unfortunately this calculator is only available for Windows and the developer does not want to port it to Mac OS for whatever reasons he has so I need to use Windows for that. I have another laptop with Windows but this weekend my friend's cat decided to chew the power cable and now the laptop cannot charge its battery. So I spent the weekend looking for a Windows emulator for Mac OS that is FREE. I came across something called Q and it looks like it works, but its really slow. Heres a screenshot of Windows XP on Mac OS:


Strange? Yup it looks strange!

Thursday, July 27, 2006

Fresh Mac OS X Tiger for Vicky

So I purchased OS X Tiger earlier in the summer and didnt get the chance to install it properly on my G4 PowerBook. Today I erased everything and started from scratch. I made sure to burn the free software the guy I bought this from (off eBay).

So why is it called Vicky? The story behind that is one of my friends had a PowerBook as well and he showed me the voice recognition stuff on it and how it can tell "knock knock". The voice he used was called "Vicky". So when I showed this off to some ppl they started calling it Vicky.

Anyway its 2am and I am tired. I have a meeting with the School of Grad studies tomorrow noon, I wonder what that is all about.

Thursday, July 06, 2006

Linux virtual keyboard

Since it doesnt make any sense to have a physical keyboard inside the flight simulator it makes a lot of sense to get a virtual keyboard such as xvkbd. Like any other open source project, it comes with the source so that you can modify it to your own needs. After playing around with it yesterday to figure out what needs to be done to tailor this for FlightGear and Vdrift I got a draft of what this virtual keyboard might just look like at th end. Ofcourse theres a few more keys that need to be added. You can also have several of them running so for example I get the FlightGear keyboard running, and then another default keyboard to allow for regular input into the machine. Heres a screenshot after setting up the necessary options:

So at the top is the default keyboard if needed. Below it to the left is a numberpad to allow enterring coordinates and other autopilot options in FlightGear. Finally, the FlightGear keyboard is on the right. I split them this way because I thought it would be good for the user to just have whatever keyboards they need and minimize the rest. Ofcourse this script should be put on the desktop to easily start these up using the touchscreen.




Like I promised, World Cup updates will be over when its done and only if Italy wins, otherwise Ill be ranting about that for a while (jk, even I can get bored from Italy and its soccer) The final is on Sunday, and against the Frenchies. For those who recall the Euro Cup two years ago, theres some unfinnished business between the French and the Italians when the Italians unfortunately lost a game they were winning until the last two minutes (break a leg Wiltord!) On the other hand, the Italians have a better squad today which works like one machine so I doubt the French have a chance of even scoring. Note that the Italian goal did not "lose its virginity yet" except for that own goal. (Now that sentence sounds a little bit dirty...too dirty) Don't you come and tell me "but they beat Brazil", since when does Brazil have no shots on goal, I don't get it but I am glad that team is out.

Now on to a topic a lot of you love to joke about - " Nael's Deportation Adventures". Although I was accepted into grad school by Computing and Software, I still need a final approval from the School of Graduate studies and that is what I am currently working on. My cumulative gpa doesnt satisfy their requirements, but thats just because of first year, and that had nothing to do with what I am doing now so my professor sent a letter along with my application. Hopefully that works out and I get my letter so that I can renew my permit and NOT get deported. I am still playing on both fields though and applying for jobs just incase something goes wrong (aha..deportation contingency plans), so I have an interview tomorrow with a startup in Toronto. Let us see what that brings us. Until now, I am still more interested in what I will be doing in grad school althought it might not pay anything but at the end I believe I shall be better off.

..and ofcourse Forza Italia!

Saturday, May 20, 2006

How To: Reset 'root' password on Mac OS X

I purchased my Apple PowerBook G4 a year off eBay. I got a really good deal for it and saved around $500 on the retail price and it was only 4 months old. Anyway, the lady I purchased it off gave me an 'administrator' password which I thought would also be the 'root' account password. To my surprise it was not, and today when I was trying to install FlightGear on my PowerBook I could not since I did not have permission! So a little search on Google was useful because I learned that I can reset it without having to restore my machine and lose my stuff (no isn't porn!). It was real easy:
  1. Pop in the restore CD/DVD
  2. Restart the machine
  3. Follow the re-installation until you can access the menu
  4. Choose the 'reset password' option
  5. From there you can reset any password including the 'root' account
That's it, now I have access to my 'root' account. Thanks to my infinite wisdom I decided to restore while maintaining my files (another option available) and then found out that I lost all the Unix tools available including 'gcc' and 'make' and now I cannot compile and install FlightGear. All of this to install the damn flight simulator! I guess it was not meant to be.

Thursday, May 11, 2006

Picasa2

I just downloaded Picasa2 by Google and it is a photo organizer. Really neat application plus it gives you the ability to blog your photos on eBlogger right from the application. That is what I am doing right now and I decided to choose a photo of Athena taken on March 18 2006.


Athena is Team 4's autonomous search and rescue robot designed for our capstone course SE 4G06. Athena was one of the few robots to not use any rotation sensors and is almost completely dependent on the environment changes around it. There are a few instances when things were timed but those were timed against the battery level so changes in that would not drastically affect the robot's movements.

In the actual race Athena tied for first place, but really we were ahead by 1 sec although the judges gave the other team the benefit of the doubt and decided to make it a tie. Unfortunately coming in first does not mean you have the best robot. I can admit that Team 6's Tortoise was the best robot produced. That robot CANNOT get stuck and they had a very impressive presentation proving that. Based on four rules, Tortoise can always navigate itself out of troubles. Tortoise did not win the race, yet it did win the competition and they more than deserved it. So the morale is - Slow and easy wins your thesis competition
Posted by Picasa

Saturday, May 06, 2006

Testing the Mail-to-Blogger address

I finally got to fool around with all the features that come with this
blog and I find this Mail-to-Blogger e-mail interesting. I like the
fact I can send out an email to my blog. I still do not know why anybody would
do this and not through the website. Can someone really be in a hurry to
post a blog? Maybe its for those who use their phones to write blogs. That
would make sense as to why this feature is necessary..but still..I am not
convinced. Regardless, I found it interesting.

I also got my Google's Adsense working and I modified its positions. The
nice thing about this blog is that I get to play around with the template
however I like, unlike other blogs that just force you to use their
templates. I might revamp this whole blog one day if I have nothing better
to do..I am starting to think it is a little bit sketchy.

-------------------------------------
Nael El Shawwa
B.Eng.Mgmt
elshawn-at-mcmaster-dot-ca