Yesterday, 22/09/2011, was a day that Facebook introduced many new features for the developers to build on it. It has been days since we saw lots of new features on it, of which some people complained about. I was waiting for the conference to start; unfortunately it was already late for me to wait for the kick off. I got the chance to see some of the new features that they added, some which are not yet released and others which have been around for a while. I try to summarize the features I like most.
This feature is in short the new profile in Facebook. Previously, the profile page of a person shows a small picture of his/her at the left top corner and tiles of pictures on top, followed by the school he/she attend, the work place and few others. According to the guys architecting the new layout, this is not something that describes someone fully. Say if you graduated five years ago, just like me, and you had posted pictures of your graduation and a friend of yours who you went to college together is looking at your profile, what would he/she see? The current pictures of yours, the latest status updates and some other new things.
Time line, the one people talk about a lot since the announcement on the F8 event, which is not released yet is a new way of presenting one’s profile information collections. The first thing you will see on the time line is a larger picture which the owner chooses to represent him/her. The owner will build a profile from the best moments of life as they happen in time. You can add or remove important parts as you feel; if you had no Facebook account when you graduate you can add it when you have one.
The other interesting thing is the applications added to the time line. Today is Friday and I want to watch a movie on Netflix, assuming I have all the connection speed :); a friend somewhere likes my selection and can join me. How about cooking or exercise ….
Take a break
You read a lot so let me share with you something that I heard on the event opening. There was this guy named, Andy who looks exactly like Mark, the founder of Facebook. He was talking about poking. He said ‘How many times have you regret poking someone you don’t know much or is not close to you when you are drunk? we have a new feature called ‘slow-poke’ where your poke stays for 24 hours before the target sees it, You can cancel it when you are sober.’ That was a joke 🙂 I love to have that kind of thing for the status too, the next one is….
Location is the other addition to Facebook status update. Say I am going to Merkato to buy something and I wanted to share it with friends. I just type ‘Going to Merkato’ and select the city or the specific location below the status update box. Friends can see that and join me. You can also tag the pictures you upload, where it is taken. This is best when you have your friends in different lists. The friend list is the other new feature which in my opinion is copied from Google+ Circles. You group your friends as ‘Close friends’, ‘College friends’, ‘Colleague’s’ and so on. If you want to share your location with only your close friends you post it only for them, if interested they will join you there. This lets your friends connected to you emotionally. Friends list is a convenient way of sharing things, better than the earlier version of it.
Ticker is a feed of the latest status updates of your friends. This one is already released since two or three days ago. You hover your mouse over a friend and you can see the latest activities, wherever on Facebook you might be, and comment on it. The Ticker is found on the top right corner, even if you scroll, it would stay there for easy access. This is shown for the online friends so that you can comment and discuss on the photos and status updates in real time.
I guess this one is made for me and people like me. I don’t want to see the details of people that are ‘just friends’. Honestly, all of us have people that matter in our life. You can choose what to see and what not! Say you haven’t opened Facebook for a week and you logged in, If I am the closest friend of yours, clearly you can’t see my status updates before few days because some other ‘friends’ have already flooded your feed. In the new feed, you can select what to see at the top, whose status updates to see and which ones not to see. The updates will just show you the total number of news you have. You are not going to miss important things from the people you care about. When you open the profile of a person, there is a button called ‘Subscribe’. If you click on it, you will see every update of that person; this is more like twitter’s ‘Follow’ button with few differences.
Happy Ethiopian new year. I think Microsoft is also using our calendar, they release a lot of new products in the past week. Last week was another special week full of new arrivals in the technology industry. Microsoft has introduced a lot of new technologies on the ‘BUILD’ conference that run for days. One of the latest technology is Windows 8, an operating system for the ‘post-post-pc’ era. Since the release of the iPad, most people were saying that the pc is dead and the time is for tablet. Samsung’s Galaxy, Hp’s tab and Amazon’s Kindle are some of the releases who run on ios and Android, which are specifically designed for the tablet not for pc. According to Microsoft, however, the future is not just the tablet and the pc is not going to die. Microsoft is confirming that, windows 8 is the future OS for both the pc, the tablet and mobile devices. I am into new technologies and like to play with it. I downloaded the Windows 8 developer preview and was trying to install it on my laptop since last week. Unfortunately, I it was not as easy as I expected it to run it on my pc. I didn’t want to take the risk of playing with a new release OS on my laptop even to dual boot it. I was trying to have a virtual hard disk to install on it, unfortunately I couldn’t make the USB disk bootable, I end up with an error ‘bootsect.exe’ is not compatible. If you are lucky here is a good link to walk you through.
I choose to try it on a virtual machine with Virtual box from Oracle. The iso file I downloaded was a 64 bit one, however, the desktop I have is 32 bit. For the guest operating system to detect the CPU as a 64 bit, I had to change the BIOS of my pc for hardware virtualization so that the guess OS detect the CPU as a 64bit. Fortunately my PC is Optiplex 760, which supports hardware virtualization. Please note here that, it also required the model of the CPU, say if it were Optiplex 755 or earlier, it won’t support.
Anyways, I had the chance to install the windows 8 on my virtual box. I used my mouse and key board to navigate through the different features of the OS. According to the presenters on the ‘BUILD’ conference, it would take less than a minute to boot and let you start working on it. I wish I had a touch screen to navigate like I do on a windows phone, but it feels even good with a mouse and key board.
The IDE (Integrated Development Environment) has improved in the windows management, search tools and so on. C# has also been made to support asynchronous calls in an easy way. I am still trying to see what is new in general. I hope I will have one more post before the official release in Addis Ababa.
“For the good that I would I do not: but the evil which I would not, that I do.” Rom 7:19 I am not a preacher but I do read the Bible and I am not going to talk about the verse I read. I found this quote while I was reading and at the end it says, ‘O wretched man that I am! Who shall deliver me from the body of this death?’ I don’t know if the picture here could show what I intend to show with the post, but in my opinion, that animal there feels like wretched surrounded by lots of people around it. I think it feels like it’s not in a place it belongs.
I was looking at the code I wrote few months back. At the time I wrote it, it felt like a normal thing. It performed what I wanted it to do and the application has been implemented. It is this time that made me say ‘for the good that I would I do not…’. I had a chance to see the video of Uncle Bob’s presentation about clean code and also read the e-book. It was on how to make the code as clean as possible for future maintenance. After watching the presentation, I promised myself I would do my best to write that kind of code, the good thing, but the evil was what I did. When I looked at it for sometime and couldn’t figure out exactly what I was trying to do with a specific line of code…. ‘O wretched man that I am!’.
I have been working for years as a programmer. In my previous years, I worked with a team of developers. Each of us came from different projects working with other people having a different way of doing things. We set standards for that project for making the communication between us easier. Though there were challenges with some guys aligning them to the teams way of doing things, it was a good experience. However, that doesn’t mean there was a code review. We just write it and it works, then we are good to go. Whenever we talk with other developers, we talk about design patterns, how to write a SOLID code and so on. We read something interesting, we try it in a sample project, may be with the default ‘Hello world’ kind of project. When the time comes to use it in a real world project, the issue of time comes along with it. We rush and forget all the promises we made. I know for sure there are guys who keep the promise to themselves.
Most of the applications I took part in involve a back end database access or are used in an application that access a database. Some are made public and accessed through the internet, some are used internally within an organization. The importance of keeping the promise and doing it clean starts in designing the database, followed by the code that talks with the database ( Forgive me here: I said design because I did things with relational database mostly.) There comes the challenge and temptation to do it the quick and dirty way than the clean way. In the days where we had no luxury of choosing the ORM (Object Relational Mapping) tools, we used to do it ourselves (Oh, I feel like I’m old). Selecting between data adapter or data reader, using stored procedures or inline query …. were some of the choices we had to make. I remember there was a tool which generates classes for each table, with the CRUD (Create, Read, Update and Delete) methods having in-line queries in it. There was a guy who used that code to build a website which ended up in an SQL-injection attack. I am not going to bother you with the mistakes made by not taking due diligence in design and coding. Today, a friend sent me an email about Operation Shady. It says that about 70 prominent organizations were attached in an operation called shadyRAT. This year, 2011, was a year that we heard a lot about hacking and it’s consequences; remember SONY. Imagine the developers of the sites that were attacked, definitely when they look back at the code and hear how the hackers gained access…. The same is true during maintenance; Sometimes a code written to update something somewhere affects another module which doesn’t seem to be connected.
I think this post is more of a confession; Confession of a wretched developer. May be I will be writing sometime what the solution is. I think there is no absolute way of writing a neat code but there is for sure a way of writing a better, readable and maintainable code. I guess I might be lucky to get to that path soon. I will tell you on how to do it if I succeed; will tell you who shall deliver, but in the mean time, if you have any idea on how to do it…. the floor is yours.