September 2nd, 2008
Download ‘Command & Conquer: Red Alert’ for Free
Personally I have a softer spot for Dune 2, but this is a cool freebie.
Geek 2.0: Think you aren’t a geek? Think again!
Proper geeks are definitely version 1.0.
Hands-On With Chrome: Clean and Crisp, But Needs Extensions
The ‘Net is ablaze with talk about Google Chrome and this was about the most interesting article I read.
Google Chrome Process Manager
Could this be the killer feature for Chrome?
Freedom Fry — “Happy birthday to GNU”
Stephen Fry has made a video about Free Software to celebrate the GNU’s 25th birthday.
Publishers should all have a /covers directory
Proof that the world at large still does not understand the Internet.
Why Lifehacker Readers Switched to Linux
Read why LifeHacker readers have decided to stop losing their hair.
Share:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Tags: Links
Posted in Uncategorized | No Comments »
September 2nd, 2008
I like features that make code more concise, manageable and expressive.
I was writing some code in Python that was essentially a function dispatcher where all the functions have the same arguments. When writing them in a more static language you have to specify all the arguments wherever they are forwarded when what you really want to say is take all the arguments and bung them into the next function. Not really a problem with cut and paste, but when you start changing the function protoype you have to make sure you change it in all the related places.
In Python you have the option of using *args which consumes the rest of the arguments of a function and puts them into a list. This meant that I could define lots of the functions which were just forwarding using *args and then pass them into the function being forwarded to using *args.
You can write:
foo1('yes', True, 100, 3.14, 'hello world')
def foo1(param1, param2, param3, param4, param5):
foo2(param1, param2, param3, param4, param5)
def foo2(*args):
foo3(*args)
def foo3(param1, *args):
print param1
def foo4(param2, param3, param4, param5):
print '%s %s %s %s' % (param2, param3, param4, param5)
foo1() is the long winded way to write it. foo2() just forwards all of the arguments. foo3() takes the first parameter (and prints it) and forwards the four remaining parameters. foo4() finally just prints out the four remaining parameters.
Anyway, the reason I liked it was it removed the horrific evolution overhead of rapidly developing some code. When I wanted to add/remove/consolidate parameters in the code for a lot of related functions using *args made it much simpler to do. You don’t have to settle for a little less perfect solution because making a minor adjustment is a large amount of work.
Share:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Tags: development, python
Posted in Uncategorized | No Comments »
August 31st, 2008
Intel acquires OpenedHand
Intel have acquired the company OpenedHand who are Linux mobile experts. I have been following the Clutter Toolkit they develop which is an OpenGL based GTK+ evolution and hope that it continues to develop.
Workflow and switching to Git, part 1: Processes
Workflow and switching to Git, part 2: The tools
Trolltech are moving their Qt code to Git source control (like everyone else). I hope this means there will be a super swanky interface at some point or qgit takes off. I have noticed that there is now DVCS support in KDevelop though thanks to the Google Summer Of Code…
Free Replacements for Paid ToolsFree Replacements for Paid Tools
Handy if you’re tight like me. VirtualBox definitely requires more investigation.
12 Great Free Games for the iPhone and iPod Touch
More stuff for free!
One Click Install, The Mock-Up
A look at simplifying installation.
10 Online Magazines for Developers and Designers
Top 10 Things That Annoy Programmers
Top ten lists are everywhere!
Album-loving artists blame iTunes for changed music tastes
They could make albums that should be consumed in one sitting… I’ve got loads that are designed like that from Marvin Gaye’s What’s Goin’ On to Dr Dre.
Firefox Improvements Could Make Browsing ‘20 To 40 Times Faster’
I thought the picture in this post is great.
The American Language in 3000 AD
And people find it hard to understand txtspk.
How to read a movie
An interesting post by Roger Ebert on visual storytelling in the movies (which applies to other visual media).
The Uncollecteds A-Z part 3 S through Z
More comics that need to be collected.
Share:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Tags: Links
Posted in Uncategorized | No Comments »
August 31st, 2008
There is a good post called The “Appliancising” of Free Software which talks about how free software is helping to make appliances of computing equipment and the diversification of the “standard” software. Perhaps not the best description but the post itself brought up some interesting points.
The way I see it is that the loudest complainers (who probably don’t even use free software) complain that there is too much choice in free software. Basically when you create a computer “appliance” you would use some custom software set up especially for that device. It is likely you would start with something like Debian or Gentoo and then customise it for your own needs.
Even writing commercial software the same thing occurs. I have seen the same product rebranded for not only different markets but for different resellers and agents. Then they all want their own customisations to differentiate from what is essentially the same software.
Doing the same type of thing with Windows is just insane. For a start you can’t really configure the system without undocumented things and jumping through many hoops, even Media Centers are pretty much equivalent editions possibly with some changed logo graphics with only the hardware providing the differentiating factor.
Also doing the same thing from scratch is brain-damaged. Reinventing the wheel for little or no benefit will just lead to maintenance headaches. As a developer I am fundamentally lazy and will reuse what I can because it is great to stand on the shoulders of giants.
I am looking forward to this future of diversity because one-size-fits-all doesn’t work and could supply better to tested and built systems that actually do what they say.
Share:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Tags: Free Software, Linux
Posted in Uncategorized | No Comments »
August 28th, 2008
7 Random Acts of Office Violence
See what most people keep bottled up in cubicles.
Developer Compensation: The New Reality?
Just to depress software developers.
5 ways to drive your best workers out the door
Nice points, but rarely seen in industry.
How To Launch Software
A look at how to best release computer software. Release Early Release Often.
Back to The Future (Part 1)
In order to solve a bug it is best to be able to reproduce it in a deterministic fashion.
Extend Firefox 3 Contest Winners
Great extensions get a well deserved pat on the back.
John Carmack Interview Part 1 and Part 2
I always find his interviews suitably techy and full of insight. I think it helps that he cuts through the flash of the day and does most of the work himself which any programmer has to respect.
28 Coolest Firefox About:Config Tricks
More cool ways to customise your Firefox.
Hype Cycle 2008
This made me think that Tablet PCs may be mature technology, but after using some I know they suck.
JavaScript frameworks
A quick round-up of all the best known Javascript frameworks.
Everyday GIT With 20 Commands Or So
I’m still stumbling through the world of Git with the finesse of a bull in a china shop.
Russell Keaton, Superman’s Fifth Beatle
Astonishing historical story of how the artist behind Buck Rodgers almost ended up drawing Superman. It’s amazing what can surface over 70 years later - and in the article they have a link to the photocopied pages.
Darth Vader Versus the Fantastic Four…Sort Of.
Go have a look, it’s Kirby-tastic!
The Uncollecteds A-Z part 1 A through H
The Uncollecteds A-Z part 2 J through R
Comics that should really be reprinted. Kirby, Master of Kung Fu, A1 and Warrior material from the UK should never have been out of print in the first place.
Share:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Tags: Links
Posted in Uncategorized | No Comments »
August 28th, 2008
The 5 Scientific Experiments Most Likely to End the World
Just to be a bit paranoid when the Large Hadron Collider is about to go online.
The State of the Language: An Interview with Bjarne Stroustrup
More about C++, its past and its future.
Open-source gaming goes commercial with Wiz handheld
Another example of Gamepark Holding’s handheld gaming devices. There is a great online community and it has support for loads of emulators mainly thanks to their previous device the GP2X. The Wiz will have an ARM9 533MHz and a 3D accelerator, so it will definitely be able to cope with what will get thrown at it (especially when you consider the GP2X had dual 200MHz processors).
Repeat tests show iPhone 3G doesn’t suffer from faulty hardware
Because real evidence should really trump hearsay and gut feeling.
TouchKit: Open Source Multi-Touch
Make your own multi-touch device, with software and the hardware kit. If you are a bit technically able you could create yourself a cool piece of kit.
20Q The Simpsons Edition
One Christmas I spent ages trying to see how good one of the 20Q toys was at guessing what I was thinking and I even went so far as to think of “corpse” and it came up with “cadaver”. With the Simpsons being a slightly smaller search space I can’t imagine it ever getting any answer wrong.
Picwing intros social digital picture frame
A Linux-based computer in a picture frame for digital content, currently in beta.
IOGEAR’s Wireless USB to VGA kit extends your monitor sans wires
I guess this might have something to do with DisplayLink…
Will “TV Widgets” Change the Way You Watch TV?
It’s amazing it has taken them this long to realise the whole TV channel does not have to be delivered over the Internet, but you can augment it with widgets. It’ll just be something else to adblock.
10 Most Beautiful Plasma Themes for KDE 4 Desktop
Linux and KDE together looking good.
Share:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Tags: Links
Posted in Uncategorized | No Comments »
August 21st, 2008
This + That = Completely Wireless Monitors?
Hey, I can dream, I have a lot of wires on my desk (and I had even more on my desk at DisplayLink because of the amount of monitors I was running). And if all this technology eventually comes to fruition, then how long until completely wireless CODA systems?
Share:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Tags: Monitors
Posted in Uncategorized | No Comments »
August 21st, 2008
So I’ve been writing in Python as part of my job for a month now… I am still writing using a text editor and running stuff on the command line (after dabbling in Eclipse and other Python editors). I can see why people like Python so much, it has some cool stuff.
What I discovered this week was the Queue object in Python. It is a thread-safe FIFO queue and it is there and ready to use. In C++ I would probably have found the definitive implementation through some library (hopefully in Boost) or I would have to roll my own with all the headaches involved in making sure just the building blocks work correctly. I’m not using it in the way that most people would expect but that is the great part of supplying solidly tested building blocks.
As usual the code I am writing needed unit-testing to make sure it did what it says on the tin. This meant a multi-threaded unit-test - I know this is a bad thing sometimes. I had to thrash it with the mountain of threads but the tests seem to work consistently (although I imagine it could turn up to bite me in the future). I am sure three-quarters of the code I have been writing are unit tests.
Some other great parts of Python I found is the function is a first class object, and I’ve even played a little with lambdas. I’m looking forward to investigating where the best place is to put the boundaries between C++ and Python code.
At the moment I am really at the tip of the iceberg stage, there is the 75% that isn’t so obviously on display.
Share:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Tags: development, python
Posted in Uncategorized | 2 Comments »
August 20th, 2008
15 Images You Won’t Believe Aren’t Photoshopped
From the beautiful to the ingenious to the utterly absurd.
GIT 1.6.0 Released
Since I am using this every day now it’s good to keep up to date. It also has some of the msysgit branch work merged in according to the changelog.
Latest “GPU Gems 2″ Chapters
More GPU Gems 2 chapters released for free.
Mozilla drags IE into the future with Canvas element plugin
Someone should be ashamed that in order to support new standard features someone has used the plug-in framework to supply it in IE.
Mozilla Screaming Monkey
Support for the latest Javascript in IE via a plug-in. Make that ashamed x2.
WebKit vs. Firefox: choice is a victory for integrators
More splendid pats on the back for two good packages.
7 Principles Of Clean And Optimized CSS Code
Helpful hints on CSS development.
Specialist vs Generalist
Everyone likes being in an arbitrary box.
Practical Efficient Memory Management
You can never know too much about your memory.
Advice for writers about research
Great, concise advice about research.
A copy of Bejeweled sells every 10 seconds
I helped that statistic by buying it for my iPhone.
Unboxed: Sony Play TV
Turn your PS3 into a PVR. If it had come out at the beginning of the year I’d probably have traded my Media Center in for one of these, but a new graphics card for £30 gave it a new lease of life.
Londoner videos his bullshit anti-terror stop-and-search
It’s for your safety.
Share:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Tags: Links
Posted in Uncategorized | No Comments »
August 20th, 2008
I’ve been writing Python professionally for about a month and I am still in the process of shaking out my C++isms. This is not a diatribe about how C++ is rubbish, because I think C++ is great. I am making some “mistakes” as I am in the learning process.
So today I was writing a function to parse a URL into the useful parts that make it up. I’d laid it out all nicely, written some unit-tests and it did its job exactly how I wanted. Then I was asked did the Python urlparse module not do what I wanted. Damn - as a C++ developer I’m used to rolling a lot of stuff that make up the building blocks of the software, so what I did was pretty natural. What I need to learn is to check the Python libraries first before doing obvious things.
The other thing I am rapidly unlearning is writing verbose loops. In C++ I am used to writing loops int he way I am expecting them to be executed. In Python you need to express them differently using list comprehension, which I am liking a lot. I even rewrote some loops today I wrote in my first week where I replaced seven lines with one that expressed the intent of the statement perfectly.
Another thing that weirded me out was creating threads. You create the variables for them, start them off and they know when to clean themselves up… I think it is because I am still thinking about the C++ scoping rules rather than garbage collecting.
I am sure these Python-ing mistakes won’t be my last, but it is interesting to wrap your head around some new things. I do miss manually managing my memory and knowing when stuff gets destroyed, I think it probably is because I’m paranoid and need to relax and go with the flow.
Share:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Tags: c/c++, development, python
Posted in Uncategorized | 3 Comments »