Archive for the ‘ IT ’ Category

Motivation Trick

I try to do a little of my programming tutorial every day but a problem I face is that more often than not I don’t feel like it, especially if the day before I got stuck on something and gave up.

By accident I found a way to overcome the dread regarding my tutorials and change it into excitement. All I do is read about computing/programming!

See I’ll sit there and have no motivation to boot up my computer, but lying on the couch, relaxing and reading? Yes Please!

I’ll open my book (At the moment – Understanding the Linux Kernel) and read for a bit. It doesn’t take long before my mind goes into logical, problem solving mode and I crave the work.

Then I have no problem continuing my tutorial, meaning I can pump out some solid study every day almost.

****

This probably works with everything, read about going to the gym to psych up for the gym for example.

Why I got an Iphone

In short: network towers.

My old phone, a HTC Wildfire was designed for Telstra’s next-G network. This means that the radio towers it picks up are unique to telstra (HSDPA 850/2100). I found this out the hard way when I tried moving to another Australian network and could hardly get reception in the middle of the city.

There are multiple frequencies of 3g radio towers (Four I think, maybe five) and most phones are only designed to pick up a select few (The ones that the network provider uses). However if I am planning on travelling and want to use the local networks I need to have a phone that can pick up as many providers as possible.

The popular phones (Iphones, also the samsung galaxy S) are designed to be homogenous, while the less popular phones try to save costs by making the same phone in different versions (Each version picks up different networks eg the HTC Wildfire A3335 vs the HTC Wildfire A3333). So the popular phones can pick up a greater range of radio frequencies.

Which means I can change between networks easily with an Iphone, while my oldphone was essentially useless on anything but telstra.

Painful thing about computing

So I recently got an iphone, I am not a big apple fan and actually prefer android in every way, however for many reasons I bought an old 3g off one of my mates.

The first noticeable thing was how slow it ran. But this isn’t a post to bitch about apple things.

I did manage to fix the slowness, it was because the old phone was trying to run new firmware which was too complex for it to handle. The solution was to downgrade the phone to IOS 3.1.3.

Anyway so I had this phone, downgraded and fast. But I needed my phone to be able to tether its internet, something that the old operating system didn’t do. To do this I needed to Jailbreak it and get one of the wi-fi hotspot apps.

So I set out to jailbreak this phone, in the process I had to do what is known as shaving the yak. I use Linux, which 90% of the jailbreak tools don’t like. I tried emulating windows, which itunes doesn’t like. My parents internet kept messing around with me, etc, etc.

Everything kept going wrong.

Normally when trying to solve a computer problem (Or any problem) it takes a few attempts. This is fine, you try a different angles until something works.

However to jailbreak this phone I literally had to try dozens of different tools and methods because nothing would work.

Then finally, after hours of pain I find a tool that recognised the phone easily (Which was in itself an achievement), and had a single button “Jailbreak”. 3 seconds after clicking this it pops up a message “Jailbreak successful”.

After so much pain, the problem was solved in 3 seconds.

This is why computing problems suck.

Internet Woes

Something that I am pretty proud of is that our new unit is lacking television and internet. These two things are the places where people waste most of their time and living without them is an eye-opening experience.

The reason for our lack of internet connection is that we really only plan on staying in this unit for 6 months, while every telecom company looks into locking us into a long term contract.

We agreed that we would simply upgrade our mobile phone (prepaid) packs and use them to tether internet. It is expensive data wise but it does allow us to be contract free.

Still there is no real urgency at the moment, my programming exercises were working fine without a connection and I can still google stuff on my phone. Which meant I was surviving fine, but I think for these new tutorials I am doing I will need access more often.

Specialisation

There is a scene from The Big Bang Theory joking about how none of the characters can fix a broken down car but at the same time they all know how an engine works. This can be related to most skills, knowing the underlying theory is one part, but being able to recall the nitty-gritty details that exist in reality is another.

Both theory and pragmatic experience are important because your skill development will reach a bottleneck if either is lacking. But there is a difference.

With cars it’s all well and good to know that an explosion pushes the pistons which turns the motor, then it connects to the wheels through the gearbox. But when getting under a car there are pipes and cables and belts going everywhere; you can get the car to do anything by playing with these little parts, but knowing what each individual one does is an achievement in itself.

Now I have reached an interesting stage in the development of my IT skills where I believe I am comfortable with the theory aspect of computers, however I lack the pragmatic aspect by learning a specific framework.

I realized this when I was playing around with the Unreal Development Kit. The tutorial was explaining things I already knew lots about, however the reason I couldn’t yet do what I wanted (in this framework) was because I didn’t know the specific functions intimately.

I knew how the engine worked but couldn’t tell you what all the specific little parts did.

With every programming framework there is always a detailed class tree that allows one to do everything you could possibly want to do. But it is huge, and remembering the names and syntax of each function takes time.

I now know I have to do this when I choose the framework that I want to specialize in. But at this stage choosing one is making me nervous. Do I learn the framework for Web Apps? or Game Dev? or learn the Linux Kernel? maybe Mobile Apps?

I guess it really isn’t that big a decision, but it kinda feels like it. Anyway I’m not at the stage where I need to choose just yet because there are a few little things which I need to do first.

Hollow Satisfaction

For the last couple days I have been messing around with the idea of making websites. It is an area that I have had much curiosity for because I never really understood how the whole internet concept worked.

That has changed as of today. I now feel capable of doing most things in regards to website creation (Not like an expert but I  have confidence that I would know where to look to solve any problem).

Here is what I did:

  • First I took my Raspberry Pi and loaded a web-server onto it.
  • I registered a free domain name.
  • I configured the router to forward requests to the server.
  • Finally I installed word-press (After relearning basic MySQL), and added a custom theme with plugins for a checkout so you could buy my theoretical T-Shirts.

It took ages, but I managed. And then I thought long and hard about what I had achieved. I realised that the end result was nothing. Sure a crappy website existed and I completely made it from scratch. But it meant nothing.

Learning it was awesome, but having finished was insignificant. Re-enforcing the whole journey being more important than the finish idea.

Applied computer science

I finished up my Ruby on Rails tutorial last night and I felt that it was a little anti-climatic. There was no rush of achievement or anything. But there was a little excitement in what it meant, it meant that I could start working on my Raspberry Pi.

The Raspberry Pi is a fully working computer, probably with the power of a pentium 2 but with a little added for graphics. But because the only place to store anything is on the SD card it means that the really low level tools (The boot-loader and the kernel) are exposed and easily modified.

This allows for us to mess around with some parts of the computer that are normally pretty difficult; this sort of programming is named Bare Metal (because you are working almost directly with the hardware).

So I spent today learning all the basics and getting the tool-kits working. Then after many hours I managed to do something really simple: I got a little green LED on the board to light up. That is all I did.

But the significant thing about this insignificant LED was that it is the first external thing to ever come out of my efforts in computing.

Normally when I am playing around with this stuff, all that ever comes about are a few pixels changing on the screen. This LED is tangible, it required a signal down a specific line to power up the LED. It isn’t much more effort to make the signal work all kinds of electronic circuits.

And there was a significant feeling of achievement, all because a silly little light turned on.

Raspberry Pi

Today I received my new Raspberry Pi, the credit card sized PC, and I am feeling really giddy. The reason I bought it is to teach myself about lower level computing concepts, like how does the operating system work and how does the computer communicate with all its different resources (Because this computer is so small and theoretically more simple than a full sized PC).

You receive this thing and it comes with no instructions what so ever. There is just it, in its box, and you get told nothing. Granted there are dozens of manuals on the internet but I like the idea, “This thing has many uses, you don’t need to be baby fed information, figure it out yourself”. Too many things these days come with more warnings and instructions than necessary (Mostly to reduce a companies liability) but it makes you feel like the designers don’t think you are capable of using basic items correctly.

But I am really excited, I haven’t been this excited over a “thing” in ages. But I must pace myself, I still am half way through my Ruby on Rails tutorial and I need to finish that before I let myself play with this new toy.

Computing Power

I have had my laptop approximately 4 years now, it isn’t a particularly fast computer (Even when brand new) but for most of the tasks required of a PC it runs faster than many of the brand new computers.

There is one reason for this: I refuse to let if fill up with crap.

It might seem excessive but I have been reinstalling the operating system monthly. It is inescapable that a computer will be infected with all sorts of random things just from casual use. These rogue processes tie up the CPU and causes the computer to run hot (my CPU’s hardly ever run over 15%) the side effect of a computer that is running hot is that it damages the hardware (Reducing your computers lifespan).

This is especially so in windows, where it seems everything you install needs to have access to the CPU from boot.

Reinstalls are only a hassle because you have to backup all your data. If you save all your important documents on-line (Or have an SD card in the computer all the time) and then keep everything on your hard disk organised (I only really have my music saved there). Then making backups is easy.

Then you are free to do a fresh install of the operating system. Your computer will run amazingly while everyone else complains about how they need to upgrade.

The problem with on-line programming tutorials

I have done a lot of programming tutorials and they all have one thing in common. They are all out of date the second they are released, not so much the content they are teaching, but the stuff the tutorials depend on for the actual code to work.

Today I was trying to do this tutorial and it turns out one of the files that were needed for it to compile got completely removed from Linux a few years back. So there  was no remedy to make this code work ever. That made me a bit sad. So I moved onto another tutorial but faced errors every step of the way.

I am giving up for the night and going to try again tomorrow with a fresh head.

Design a site like this with WordPress.com
Get started