Archive for May, 2013

Upgrade Linux Eee PC 901 4GB SSD

May 25, 2013

Update 01/09/2013 Looks like the SX300 mSATA SSD is incompatible with the Eee PC 901.

That’s the device with the 4GB primary SSD and the 16GB secondary SSD.

In looking at Offensive Securities new improved OS Kali, I was keen to take it for a spin. I’ll go over that in a subsequent post. This meant I’d have to find a suitable host for Kali. Kali can be installed on a myriad of platforms. It just so happens that the Eee PC 901 is an excellent device for the purpose, providing it has enough space (8GB incl the 300 security tools it ships with) which it currently didn’t.

For a while now I’ve had a couple of old Eee Pc 901’s I purchased a few years ago… with the 4GB Phison Primary mSATA SSD 50mm x 32mm and the 16GB Phison Secondary SATA SSD (2.5″ (70mm) long). I had read and assumed it to be correct that the mini card, that’s the smaller one in form factor and storage capacity was soldered onto the motherboard and that swapping it out was clouded with mystery and danger.

Top of the 50mm and 70mm SSD’s


Bottom of the 50mm and 70mm SSD’s


First thing I did was to upgrade the BIOS.
ROM: here.
HowTo: here. I used the Easy Flash.

Now the 16GB is easily replaceable as it’s on the bottom of the notebook by the RAM, but I don’t care about that drive. The boot order can’t be changed from the 4GB to the 16GB which is disappointing. So I had to replace the 4GB with a larger drive. As SSD’s are getting faster now also, we notice a significant speed increase. The Atom CPU’s do really well for their size and age, and with the 901’s even though they came out with solid state drives, the newer ones are considerably faster.
For a lot of different applications, the 4GB is just too small. I’ve been waiting for a purpose to use these devices. Now after a bit of research, I found out that the 4GB can actually be replaced without any soldering as I had initially thought necessary.
So that’s what I did. The Epc 901’s are great hacking devices. Light, still reasonably fast CPU’s for what they are and the devices can take a bit of a beating and with the SSD’s you don’t have to worry about HDD’s crashing.

Dismantle the 901

As always, remove all power sources first. That means remove the power cord and the battery. Remove all 13 screws from the underside of the chassis. This includes removing the RAM and 16GB plastic cover and removing the two screws holding in the 16GB SSD. Remove the 16GB SSD and the 1GB (unless you’ve upgraded to 2GB which I had) RAM module. Now of course I didn’t care about voiding the warranty as that was voided years ago.
Now turn the device over and you need to prise the keyboard off.

Removing Eee PC 901 Keyboard

The (3) plastic clips holding the keyboard on are along the top of it. I used a steak knife on each side, but you can use a jewellers screwdriver if you have one (maybe a better option, but the knives worked for me). When you’re pulling the keyboard up at the top, try and keep the pressure on the top edge of the keyboard pushing toward the bottom edge of the keyboard, this helps the clips release. Once these are released, the keyboard can slide up. You can see the 3 retainers on the bottom edge of the keyboard in the below image.

Eee PC 901 keyboard chassis

As you can see in the  above image, there are another six screws holding the top metal piece down through the motherboard I think and onto the bottom half of the plastic chassis. Remove these. Including the one that has the sticker that voids your warranty covering it… providing you don’t care about that?
Now remove the top half of the plastic chassis from the plastic base. There are some clips along each side, which release reasonably easy with a bit of jiggling. Pull the bottom (nearest to yourself) of the top half of the plastic chassis up. When you have enough room to get in between the top and the base with a small set of long nose pliers, pull the keyboard ribbon out of the motherboard (largest socket highlighted below in red) and do the same with the mouse ribbon (socket highlighted below in red on middle of board). Taking note of which way around they were. Then unplug the cable that transfers signal between the 4 top buttons above the keyboard from the motherboard (socket highlighted below in red, top left of the board).

Top of Eee PC 901 Mother board

Now the top piece of the plastic chassis needs to remain intact with the plastic hinge covers which are also part of the plastic running along the top of the top four silver buttons. this can be seen two images above. So this means quite a struggle to prise the plastic parts apart. Take your time. Lots of wiggling rather than excessive force is recommended.
Now once you have the top half of the plastic chassis separate. You’ll need to unplug the CPU fan wire (socket highlighted above in green). Then remove the two screws holding the motherboard to the base part of the plastic chassis. These are by the hinges with white arrows on the motherboard pointing to them.
Now there’s another cable at the bottom edge of the motherboard that needs to be unplugged. This can be seen at the bottom of the image below in the green highlight box.

Bottom of Eee PC 901 Mother board

Now wiggle the motherboard up left side first with the audio ports rather than the right side with the VGA port as the VGA port is sticking through the plastic chassis further.
Now you can finally remove the 4GB mini PCIe SATA SSD (socket shown above in blue highlight box) and replace with a larger faster one.
I used a 64GB A-Data SX300 mSATA SSD.

See my next post for Reassembly of the Eee PC 901

Interweb content I used which aided my decisions and the process:
Directions with images on how to pull the 901 apart but a little ambiguous and missing essential info
Pictures and speed test

In a subsequent post I’ll go through Setting up Kali Linux on the Eee PC 901


Software Engineer Interview Quick Question Set

May 11, 2013

Ice breakers

  • Tell us a little bit about yourself and what drives you?
  • Ask a question from their CV that is positive, ‘what was your greatest success in your current or last role’
  • What’s your ideal job?
  • Can you give us one thing you really enjoyed in your last job?
  • What about one thing that you didn’t enjoy as much?
    How did you solve that?


  • How can you implement unit testing when there are dependencies between a business layer and a data layer, or the presentation layer and the business layer?
  • The development team is getting near release date. They start saying things like, we’re going to need a sprint to test. What would your reaction be?


  • What measures have you taken to make your software products more easily maintainable?
  • What is the most expensive part of the SDLC?
    (hint: reading others code)

Design and architecture

  • Can you explain some design patterns, and where you have used them?


  • Have you used scrum before? (If the answer is no, move on)
  • If you were taken on as a team member and the team was failing Sprint after Sprint. What would you do?
  • What would you do if you were part of a Scrum Team and your manager asked you to do a piece of work not in the Scrum Backlog?
    (hint: manager needs to consult PO. Something has to be removed from Sprint backlog in order for something to be added)


  • When do you use an abstract class and when do you use an interface?
  • How do you make sure that your code is both safe and fast?
  • Can you describe the process you use for writing a piece of code, from requirements to delivery?

Software engineering questions

  • What are the benefits and drawbacks of Object Orientated Design?
    (hint: polymorphism inheritance encapsulation)
  • What books have you read on software engineering that you thought were good?
  • Explain the terms YAGNI, DRY, SOLID?
    (hint You Aint Gonna Need It. Build what you need as you need it, aggressively refactoring as you go along; don’t spend a lot of time planning for grandiose, unknown future scenarios. Good software can evolve into what it will ultimately become. Every piece of code is code we have to test. If the code is not needed, why are we spending time on it?)

Functional design questions

  • Which controls would you use when a user must select multiple items from a big list, in a minimal amount of space?
  • How would you design editing twenty fields for a list of 10 items? And editing 3 fields for a list of 1000 items?

Specific technical requirements

  • When, where and how do you optimize code?

Web questions

  • How would you mitigate SQL injection?
    (hint: looking for multi layered sanitisation. parameterised SQL. Least privileged account for data access)
  • Have you used XSS and can you provide us an example?
  • What JavaScript libraries have you used?
  • What are some of the irritating limitations of CSS?
  • How would you remove the ASP.NET_SessionId cookie from a MVC controllers Response?
    (hint: Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now;)


  • How does JavaScript implement inheritance?
    (hint: via Object’s prototype property)

Service Oriented

  • What are the 3 things a WCF end point must have, or what is the ABC of a WCF service?
    Address – where the WCF service is hosted.
    Binding – that specifies the protocol and its myriad of options.
    Contract – service contract defines what service operations are available to the client for consumption.

C# / .Net questions

  • What’s the difference between public, private, protected and internal modifiers?
  • What are the main differences between the .NET 2.0 and 4.0 garbage collector?
    (hint: background GC was introduced)
  • Describe the different ways arguments can be passed in C#
    (hint: pass val by val, pass val by ref, pass ref by val, pass ref by ref)
  • We have a Base class, we have a child class that inherits BaseClass. Does the child class inherit the base class’s private members?
    (hint: this is normally good for a laugh)
  • Have you ever worked with a deadlock and how did it occur?
  • When should locks be used in concurrent programming?
    when synchronization cannot be performed in any other way. This is rare. With careful thought and planning, there is just about always a better way. There are many ways to synchronise without using locks. System.Threading.Interlocked class generally supported by the processor
  • What are some of your favourite .NET features?

Finally, this question is from Google; can you quickly tell us something that we don’t know anything about? It can be anything.