Latest Entries »

At Facebook, our engineers collaborate to create an open environment where ideas win and are executed quickly. Each week, our engineers will give you a look into what it’s like to ideate and build at Facebook in our new “Meet a Facebook Engineer” Q&A series. Check back weekly to hear from different engineers about what problems they’re passionate about solving right now, what they’re up to at Facebook and what advice they have for you.

 

Haiping Zhao

Haiping Zhao

Q: What problem are you most proud of solving at Facebook? 

A: Scalability problems. I truly believe the scalability problems Facebook has today will become the ones many other companies will have to solve tomorrow. More and more companies will have large websites with a lot of data, and keeping up with data growth is challenging. Facebook is among the first companies to attempt to solve these problems on a massive scale, and I’m proud to be part of the effort. Today, different companies and groups are coming up with separate solutions for similar problems, but eventually managing data will become more streamlined and more groups will be able to handle large amount of data with ease. This is exciting.

Q: What problem are you most passionate about solving right now?

A: As a part of my commitment to solving scale problems, I’m currently writing a distributed SQL database. I think traditional databases have already come up with a great way to abstract data access in SQL, but the context of old implementations has been single-machine based. Very few of these databases have done a nice job scaling up to handle very large amounts of data. In addition, not all databases have different ways to handle data with different access patterns, which results in inefficiency. My new database is trying to address these issues. I’m very passionate about this project because I think I’m getting a head-start on something that people will have to deal with soon.

Q: What does a typical day look like for you?

A: My day varies depending on which phase of project development I’m in. When I was initiating and preparing v1 of HipHop for PHP, I spent a lot of time finding the right people to discuss my vision with. These days were full of meetings and whiteboard discussions. After that phase, I started my coding phase, when I’d spend the day writing code on my laptop from the office, home, Starbucks, etc.—anywhere my soul could be entirely with my program! After this phase, I began having conversations about deployment issues and trying to solve real problems with my code. This is when I started to do intensive testing and deployment, which is the phase I’m in now with my database. Testing and deployment usually involves taking new feature requests and modifying existing code, which involves a lot more collaboration. Finally, once the code is running in production, most of my day will be spent monitoring machines and debugging live problems. I love each of these phases, and enjoy that I have the flexibility to tailor my day to whatever phase of development I’m in.

Q: Why do you come to work in the morning? 

A: I can hardly tell what is work and what is fun—coming to work in the morning reminds me of when I was a student in middle school, rushing to the computer room whenever I could. Even today, I rush myself to office after I park my car. Finishing a piece of code and watching it run makes me happy, and there’s the satisfaction in knowing that it will help make millions of our users happy, too.

Q: What advice do you have for other engineers?

A: As a senior engineer, I have been through the programmer ranks and have distinct advice for each stage.

For junior programmers, I highly recommend spending time with a wide variety of technologies, including HTML, CSS, JavaScript, PHP, C, C++, Java, and SQL. This can help you identify your interests and potential directions for career development. Knowledge-wise, it is also extremely beneficial to have broad understanding of different problem solving methods.

For intermediate-level people, I think Facebook is one of the greatest places for having impact. By taking on challenging tasks, you can make changes that affect millions of users. Nothing is more exciting than seeing your code change the world. Facebook counts on our talents to come up with genuine ideas, respectful communications, and great implementations.

For senior people like me, it’s really our job to coach young engineers on how to approach technical problems systematically and how to resolve disagreements gracefully. The job comes with the great responsibility of supervising the entire engineering force to move in a direction that we as a company are happy with. I hope senior engineers are willing to spend their time helping other people grow instead of just focusing on their own work. By putting ourselves into “sharing mode,” we can help build a great software community within our respective companies that will proliferate for long, long time.

Haiping Zhao, a senior software engineer, writes code…for fun.

All this is From my Tech. magazine

“How do you hack”?

“I wanna to learn hacking”.

“How to get started”?
“How can I get the password”?

“How do I crack “?

Do you have these questions in your mind for a while ? Most of you must have been asking here and there, with your friends, seniors, fellow hacker friends but hardly anybody answered you and those who did, their suggestions were not so satisfactory at all.

Drop the worries because we bring you a step by step guide for your voyage to calling yourself a Hacker.

Here we go:-

[1] First thing first, you need to get an Internet connection.

[2] Now, Net runs on Unix base system, I guess there will be no harm
saying that, because more than 80% server uses Linux!

So download a any Linux distribution (to begin with I would like to suggest Ubuntu or Linux Mint).

[3] Its time for a change. Install Linux in your hard drive!
Its not like I’m the enemy of other OS, its just the human nature to
avoid the change! if its critical Re-partition your hard drive for dual
boot. If you are using Windows don’t even bother about it, they are for
lamer anyway.

[4] Get comfortable with Linux environment. By this time you should learn
about major distribution & their philosophies. Try different stuffs!
Change themes, install software! write your own review in blogs, create
fb pages and google groups and post a lot [I wonder how many are still
active!]
“Ahh! awesome! just can’t wait for new release of 12.04″ something like
that.

[5] Start learning about a programming language called C. You can try switching

between the different IDEs, and some bozo will tell you C is just
back screen!

[6] This is the time where you find your self into the religious cult of
the distro’s. Now start learning Black Screen with blinking cursor called
shell. You will realise the importance of that black screen! (I bet you
hated the Blue screen while in the far past you still used windows).
Learn until you are comfortable without mouse and GUI stuffs.

[7] You grow impatient when you can’t find stuff which you want! And someone tells
you to ask in IRC and they also tell you that

they are very decent folks! and really helpful. You make
fool out of yourself taking with bots or Getting kicked out / banned.
You then realise that you should read the Rules which will eventually make your habit
of reading the man pages of every command even though you don’t get it.
Dunn’t worry your are 5% away out of lamerland!

[8] You will find that gcc is not only the C complier but collection of
complies. It’s man pages can be turned into a 500 page book. In mean time
branch out to some cool scripting languages like python, Perl. You might
also want to try writing your own Linux programs. Read them, use them, Read them
again, because what you read at the first time will confused you often.
Now play with Perl, C, C++ on your system until you can actually
program. Now practice programming for a while until you get at least

good at it. Give yourself plenty of time to practice.

[9] Its the time when you should have the Linux Journal Archive. Now its time
to grab some book called Operating System. Now its time to leave your
kiddish Linux and go for something serious. I guess you would, bye now, have realised

that what you were using was totally for posers.

[10] By this time wikipedia, distro forums, programming forums would have
been your most visited sites, and u realise the groups in the facebook are
filled with posers and bozo. You have understood the true meaning of hacking
and you have piled the books and might have also running Apache server!
FTP and samba too.

[11] Install a non-kiddish Linux on your system. Install everything. If your
system boots up properly to Linux, then congrats! Now that you are
running a real OS, read the docs, man pages, how-to’s, FAQs, etc. Of
course, you won’t understand most of it right away, but read all this
stuff anyway, so you will know where to look for it later.

Read it all? Ok, go back and read it again. You are 5% off the way to be hacker!

[12] Now configure your system. For this you have tons of text files to edit,
and you will realise that GUI installer is useless after all. But at this
point you might possibly know how to ask a partly or fully genuine/
intelligent question on the net. You subscribe tons of mailing list.
Whatever you do, DON’T POST ANYTHING, because nobody wants to read
anything you have to say yet. Just lurk for a year or two. You *might*
now be on IRC (as long as nobody remembers you were one who use to talk
with bots).

[13] Now you need to get and read all the RFCs. Because they contain
information that is vital if you want to hack on internet. Again, you will not
understand everything the first time, so read them
all again. You must learn about the Cryptography, File sharing, SSH, SSL,
802.11, lots of stuffs. By this time you would have 100 books queued up,
and long list of your personal notes and reference cards.

[14] By this time you must be able to understand the developer mailing list

one you subscribed long time back and few security related mailing lists which you used to
ignore and divert them to trash. You should have enough info to try
some simple hacks, so try some. If they work, great, you are almost a
junior hacker. If they don’t work, then do some more reading and try
again. Don’t give up, keep at it even if it takes you a few years.

[15] Explore the net. Try things. Look for security holes. Read a lot of
source code. Write some hacking utilities. At this point, you are now a
real junior hacker and start pasting someone’s database in paste bin!

This whole process does take a little bit of time, but it is the
quickest way for an lamer to learn to hack. Some of you lamer don’t have
the brain power to complete the above 15 steps, but try anyway…

True, this might take you a few years, but it will be worth the wait. If
you post anything too early, people will know that you are still a lamer
and wanna-be, and everyone will laugh at you and flame you and call you
nasty names, just like when you were on Windows!

Reference and Copies:

17 Steps to Hack
Ubuntards
some cools stuff which i can’t remember

My Landing Page

One page where yo can read my stuff..

Click here to goto my Landing Page.

Although the unit has just gone into mass production, there’s an awesome thread going on over at the official forums full of ideas people have for how they will be using their Raspberry Pi.

I’m going to try to list the best of them, and will update the list from time to time.

  • Webcam server
  • Vehicle tracking (using an add-on GPS module)
  • Streaming internet radio box
  • Vehicle Diagnostics, full OBDII logger with touch screen interface
  • Baby monitor
  • Media server by adding a couple of USB hard drives
  • Media receiver (for XBMC or PLEX)
  • Video chat
  • Game emulator, running MAME (build your own arcade cabinet?)
  • Network Attached Storage setup (NAS)
  • Mini web server
  • FTP server
  • Proxy server
  • Firewall
  • Portable Media PC
  • Run an alarm system
  • Security webcam (with motion sensor)
  • Control garden lighting
  • Control sprinkler system
  • Wearable computer
  • HTPC for TV web browsing
  • HTPC for streaming Netfilx / Hulu etc
  • In car Computer
  • Thin client computer
  • Game server
  • IRC / chat server
  • build a cheap laptop
  • build a cheap tablet
  • create a digital photo frame
  • Asterisk VOIP server
  • PBX
  • Home automation system
  • MP3 player
  • Portable personal computer, you can use it anywhere you can find a monitor.
  • multitouch screen coffee table
  • Wall hanging screen with voice control for network pictures, weather, news and RSS feeds
  • Cyber Cafe computer
  • Video conferencing system
  • Personal weather station / logger
  • Control a light display
  • Control an LED board
  • Put it in an old mac classic or mac plus case as a general purpose computer
  • Intelligent photo frame with touch
  • Wardriving setup
  • A dedicated Synth, possibly with touch screen
  • Solar powered desktop computer
  • CNC controller
  • High tech birthday / Xmas presents
  • Backup server
  • RSS ticker
  • High tech alarm clock
  • Mini projector
  • DOSBox for games
  • Processing farm for SETI@Home
  • Cafe media player
  • Brains for Arduino setup
  • Mumble server
  • Industrial manufacturing controller
  • TOR server
  • BitTorrent seedbox
  • Family notice board
  • CD / DVD ripping device
  • Car black box with video
  • Wall mounted, interactive mood lamp
  • Robotic telescope / camera controller
  • Display photographer portfolio images
  • BitTorrent client
  • SMS gateway

Ubuntu for Android

Canonical’s announcement of Ubuntu for Android kicked up quite a stir, but it also left me with a few unknowns. The idea is that your phone becomes a mobile PC, switching from Android into full desktop Ubuntu mode when you dock it to a bigger display, keyboard and mouse. But just how well does it perform? When is it coming? How is it coming? And will tinkerers be able to install it for themselves? Canonical let a few tech enthusiasts into its London office to try out the software and pepper one of its engineers with questions. First, the good news: Ubuntu for Android is everything it’s been claimed to be. It’s a functional desktop OS that sits alongside Android, shares the same kernel and has full read / write access to everything on your phone (the connectivity hardware itself plus contacts, emails, videos, apps and pretty much everything else.). It’s also ready for ARM-compatible Ubuntu apps, potentially expanding the range of things your phone can do.

The bad news? It needs to be faster — a lot faster. The prototype we saw was running on a TI OMAP 4430-powered Motorola Atrix 2 that had primarily been chosen for its ready-made docking accessory. The software hadn’t been customized for that handset and neither Motorola nor TI have so far been involved in the project. Despite this, some tasks ran surprisingly well, like watching a video or adjusting a photo. However, surfing on the Chromium desktop browser suffered too much hanging and it was also clear that multi-tasking would be a serious burden. According to Canonical, better performance will come when manufacturers tailor the software to their newest handsets and offer it pre-installed. The company is doing everything it can to make that happen

Ubuntu with it’s software firm Canonical is the commercial entity behind Ubuntu aims to turn your Android device into your one-stop hub for all of your multimedia needs with ‘Ubuntu For Android’.

In short, you dock your device and it’s your computer!! you pick it up, and it’s your mobile!!!.

Ubuntu being an app within the Android frameworks, it’s a completely separate OS which resides alongside Android, only rising to prominence when connected to an external peripheral such as a dock. That said, it does share a kernel with Android, and in Ubuntu for Android, one can access the device’s hardware and store data such as photos, contacts and music.

When it’s not being used, you won’t even know Ubuntu for Android is there since it doesn’t hinder battery life or RAM, simply sitting in the background, waiting patiently for its next chance to shine like a benchwarmer.

It will allow you to run any app you can run on desktop Ubuntu, coming with a Chromium browser, Thunderbird email, Rhythmbox music player and Shotwell photo editor as standard. It will be compatible with any device running Android 2.3 (Gingerbread) or above, but unfortunately, you won’t just be able to simply download and install it yourself, since Ubuntu is currently liaising with mobile vendors and carriers to install the software at manufacturing stage.

The Advantage is this Why we have to carry two devices, when you could carry only one? Your next high-end android smartphone has far more horsepower than you’ll need on a phone, and more than enough for a laptop. So Android -Ubuntu, the world’s favourite free operating system, to give you a full productivity desktop that fits in your pocket. Android for the phone experience, Ubuntu for the desktop, all on one device, running at the same time.

Technical specifications:

Ubuntu for Android requires minimal custom hardware enablement, allowing fast and cost-efficient core integration. It requires a core based on Android 2.3 (Gingerbread) or any subsequent version.

Ubuntu and Android share the same kernel. When docked, the Ubuntu OS boots and runs concurrently with Android. This allows both mobile and desktop functionality to co-exist in different runtimes.

Shared services and applications are delivered using a Convergence API module which ensures the tight integration between desktop and mobile environments. Work is balanced across the cores of the phone. When the handset is not docked, both CPU cores transfer their full power to Android.

Android-Contacts

Features:

  • A complete Ubuntu desktop for docked Android phones.
  • Secure full-featured web.
  • Unified contacts.
  • Calendar coordination.
  • Messaging and calls.
  • Simple integrated settings.
  • Social networking services.
  • Default applications like Chromium web browser, Google Calendar, Google Docs, Thunderbird email client, Gwibber,VLC Player, PiTiVi,Ubuntu Music Player, Ubuntu Photo Gallery, Android dialer etc.

Android Messaging

Specifications are quite high:

  • Dual-core 1GHz CPU
  • Video acceleration: shared kernel driver with associated X driver; Open GL, ES/EGL
  • Storage: 2GB for OS disk image
  • HDMI: video out with secondary frame buffer device
  • USB host mode
  • 512 MB RAM or more

. To tide you over in the meantime, click past the break for a hands-on video.

Check out the Video >> Ubuntu-Android

If you want to test another Linux distribution I would simply start the installation, format the partition of your previous Linux installation and select it as storage for the new one.

If you want to go all the way back to windows only you will have to start/boot from the Windows CD

With Windows 7:
chose to repair Windows
start a command prompt and issue the following commands

bootrec.exe /fixmbr
bootrec.exe /fixboot

With Windows XP:
chose to start the recovery console
select your Windows installation
at the command line issue the following commands

fixmbr
fixboot

After restarting the computer you should automatically get into Windows.
Rightclick the “My Computer” icon and select Manage (or manually navigate to the Administrative Tools within the Control Panel)
navigate to Storage > Disk Management
Format the Linux partition

Display- Aakash Tablet has a 7 inch resistive touch screen with 800 x 480 pixel resolution.

Operating System- Akash Tab runs Android 2.2 (Froyo).

Processor- It has got a single core 366 MHz processor plus a HD video co-processor, 256 MB RAM and 2GB internal flash memory.

Supported Multimedia Formats-
Aakash Tablet supports Image formats like .png, .jpg, .gif, .bmp. Supported Video Formats include MPEG2, MPEG4, AVI and FLV. The Tablet also supports audio formats such as MP3, AAC, AC3, WAV and WMA.

External Connectors- Aakash Tablet supports Mini and Full USB, has got two SD card slots (memory expandable up-to 32GB), a SIM card slot, Video Out, a 3.5 mm headphone jack support and HDMI port.

Internet Connectivity- Aakash is a Wi-Fi 802.11 a/b/g enabled Tablet with a Web Browser having Standards Compliance, xHTML 1.1 compliant, JavaScript 1.8 compliant and safety compliance. It also offers separate software for online YouTube videos.

App Store- Akash Tab supports more than 150000 apps to keep you entertained throughout the day.(Not Android Market)

Battery- The 50 gram Tablet has a 2100mAh battery with a standby time of 3-4 hours.

Supported Document Formats- The supported document formats include DOC, DOCX, PPT, PPTX, XLS, XLSX, ODT and ODP. The Tablet has also got PDF Viewer and Text Editor.

Aakash in Hindi Language means ‘Sky’ and probably the device is ready to reach the same height. The main target of this tablet is students who always admired Tablets but had to murder their feelings due to lack of money. Aakash has all the basic features which are frequently used by everyone and can be easily bought by the students just by saving their pocket money for a few days. Though it is disappointing that the Tablet does not have a camera and will not have access to Android Market, can’t expect so much at such a price. Overall the Tablet is a very good deal for everyone.

AAkash Tablet

Features of Ubislate 7

Network: Wi-Fi, GPRS phone network
Central processor unit speed: ARM Cortex-A8, 700 Mhz
Operating system: Android 2.3 Gingerbread
Battery: 3200 mAh
Price: INR 2,999

  • High quality web anytime and anywhere.
  • You can connect your Ubislate 7 via GPRS or WiFi.
  • The amazing GPRS system will eliminate the need of external dongles and allow free access to internet anywhere.
  • The faster WiFi connection will never make your YouTube videos to lag.
  • You can use the Datawind’s patented acceleration technology for a faster web access even when on any GPRS network, across the country.
  • You can have access to Web, Emails, Social Networking and much more.
  • HD quality video playback will never disappoint you.
  • The expandable 32Gb will give you access to many apps and many files to store in your tab.
  • You can use any ordinary pen drive to access the data.
  • The best part is, its a phone where you can make voice calls and receive calls.
  • You can connect your 3G dongles to browse internet via USB ports.
  • Inbuilt Speakers and Integrated Mic is present in the ubislate version.
  • You can find 2 USB ports, 1 Memory card slot, 1 Sim support slot for GPRS and a 3.5mm Jack for headphones.

Repetitive stress injury (RSI) and eye strain are common ailments among computer users, and there’s no silver bullet for avoiding them beyond taking regular breaks to relax.

To help you deal with this problem, the 20-20-20 rule suggest that after every 20 minutes, you (the computer user) should take a break for at least 20 seconds and look at objects that are 20 feet away from you.

A couple of different free utilities that can help you remember to take your regular breaks (both of which i know are: WorkRave (Windows and Linux) and EyeDefender (Windows). Mac users, you may want to check out Time Out.

You can also take steps to improve your physical workspace with eye strain in mind–for example, moving your monitor just below eye level reduces eye strain.

No matter how you remind yourselves to take regular computer breaks, eye strain and RSI are serious business, and not something you should ignore if you spend a significant amount of time in front of the computer.

How you set up to compile C++ programs depends on whether you are using Windows or Linux/Unix. This page describes the approach to use if you have a Linux/Unix machine. If you have a Windows machine, read this page instead.

To establish that your Linux/Unix system has the correct C++ compiler installed, at the command prompt type this:

g++ -v

If your system is set up correctly, this command will launch the compiler executable and print its version. If an error message is printed instead, you will have to consult your documentation to make sure the compiler is installed and set up correctly.

It is necessary for the programmer to pay attention to many compatibility and style issues. There may even be some incompatibilities within the C++ compiler’s own library routines, so this shell file may not always result in a successful compile even if your program is flawless. But in general, it is a good idea to establish high standards as a student, to become accustomed to good programming style.

Now set up a convenient data directory in which to place your programs. Create a file named temp.cpp with this content:

#include (iostream)…in angle brackets

using namespace std;

int main()
{
cout<<" "Hello World!"<<endl;
return 0;
}

Again, you should be able to copy this little program from this page, and use a text editor to save it as “temp.cpp.”

Move to the directory in which temp.cpp is located, and type this:

g++ temp.cpp

If you have not made any errors, the program will compile uneventfully, and a program file named “a.out” will be created in the same directory.

To execute your program, type “./a.out” (your system may require slightly different syntax) and press Enter. The program should run, and print “Hello world!” on the display.

This series of actions confirms that you have acquired a C++ compiler and it is working properly.

Click For full size image

Click For full size image

Tested on Ubuntu & Pinguy OS

Follow

Get every new post delivered to your Inbox.