Archive - Tech RSS Feed

Awesome Vintage Tech Ads

If you love this post… We just posted 116 More Vintage Ads!


You can laugh now, but some years ago you were getting a very nice deal by buying a $3398 10MB hard drive.


A sexy modem? Come on!




Two are always better than one. At least according to this 1978 ad from Technico Inc. TMS9900.


Remember Elvira, Mistress of the Dark? Besides appearing on TV in features like Elvira’s Movie Macabre Halloween Special, Elvira also invited Computerworld readers to “cut through paper-based CASE [computer-aided software engineering] methods with LBMS” software.


This ad won’t make any sense if you’re not a follower of the TV series Lost. However, if you are, you’ll find it amusing…


It’s small and light at ‘only’ 11+ lbs.


“With WordStar, you have a true screen image of what your printout will look like before you print it! With WordStar, you’ll erase, insert, delete and move entire blocks of copy.” Gee, it’s like magic!



Would you say this ad was a little sexist?



Every Kid Should Have an Apple after School.


In the future, everyone will use floppy disks.

Windows XP or 7 Wont Boot Right? Try This Quick Fix!

System-File-Checker-Tool

I think everyone has come across a Windows XP or 7 installation that won’t boot correctly because something is corrupted. Here is a tip to try to get things back in order. Go to Start – Run (or fire up a command line as admin) and enter in sfc /scannow . System File Checker will check all the Windows system files to make sure they’re in place and working properly, and repair as necessary.

Read More

And So It Begins… Windows Phone 7 is Storming Out of the Gates

ballmer-today-2010-10-11-600

November 8th, thats when Microsoft will try to reenter the mobile phone industry with some oomph! This morning the company partnered with various cellular networks (note the absence of Verizon) as well as handset manufactures are trying to redefine the “Windows Mobile” experience.

On T-Mobile Microsoft announced the:

  • HTC 7 Mozart has an 8MP camera and Xenon flash, Dolby Mobile and SRS Wow HD, a 1GHz Snapdragon processor, 512MB RAM and 576MB of ROM, and 8GB of internal storage. The phone itself measures 119 x 60.2 x 11.9mm, and weighs 130 grams. Bluetooth, Wi-Fi, a G-sensor, ambient light sensor and GPS are natural inclusions.
  • HTC 7 HD7 (Think if it as an EVO 4G) with a 4.3-inches, 16GB of storage and a 5MP camera
  • Dell Venue Pro which has a Pre like vertical slider and a 4.1-inch screen?

On AT&T:

  • HTC 7 Surround what sports a 3.8″ screen with a 480 x 800 resolution, 8GB, 1GHz processor, and there’s 512MB of ROM AND 576MB of RAM, Bluetooth 2.1, Wi-Fi, a g-sensor, ambient light sensor, and a 5MP camera with LED flash, capable of 720p video recording and a whopping 1230mAh battery.
  • The slim Samsung Focus sporting a 4-inch Super Amoled screen
  • .

On Sprint:

  • HTC 7 Pro featuring a 1GHz Snapdragon processor, 512MB of RAM, 576MB of ROM and 16GB, 5MP camera with LED flash (capable of shooting 720p video), and a giant 1500mAh battery. No 4G.

More is developing but I’m impressed with the phone lineup so far.

What Program Opens This F-in File? A list of EVERY File Extension Ever

fileext

How many times have you been asked to help someone open a file that was sent to them and you’ve never heard of the documents file extension? Thanks to this really awesome list you can now see that document was created in the most archaic obsolete program on earth.

Still can’t open the document – but hey – at least you know what created it!

Read More

WhoCrashed Tells You What Just Crashed Your PC

WhoCrashed is a freeware program that tells you what Windows component just crashed your computer.

This should help in diagnosing exactly what driver/program/plugin caused the ever so wonderful blue screen of death. Works with Windows 2000 and up.

Read More

RIM Announces the Blackberry Tablet: The Playbook

blackberryplaybook

Just moments ago RIM at the Blackberry developer conference announced their foray into the tablet market with the “Playbook”. They bill it as the worlds first professional tablet.

Its a 7″ tablet with a brand new OS for QNX designed for stability and security. The device will have 1GHz dual-core processors with symmetric multiprocessing, 1GB of RAM. Full HTML5 browser with FULL Flash 10.1 support (none of the Flash mobile stuff), 1080p video support with standard sized HDMI and USB connectors, full support to tether with a Blackberry and connect with Blackberry Exchange Servers, full multitasking as well as full media support.

Read More

Screw with your neighbors sanity (and garage doors)

The Skylink universal remote control transmitter is a remote for almost any gate or garage door opener. Yes, UNIVERSAL. Translation, it operates most national brand garage door openers. Hmmm, no door is safe.

$25.00 for a universal door opener to any garage – imagine the possibilities!

Read More

javascript frameworks, oh how thee pain me.

Web Developer?… writing and application?… want the front end to be badass?… welcome to the club.

I’ve been working with JavaScript for roughly 4 or 5 years at this point. My first apps, if you can even call them that were randomized ads being server from an array on my buddies web site once his traffic picked up. It was not only my first attempt at JS, but also one of the early programming lessons of my life. With that said I’m old school, I can write an AJAX request by memory, I can tell you about the days of old using invisible iframes and having inter page communication between objects to do essentially what XMLHttpRequest does now (yes I know, using them is still a key to many apps). With that said doing a good ole getElementById(‘x’) never phased me in the least. The idea of building a DOM structure with document.createElement and document.appendChild…


var heart = document.createElement('heart');
chest.appendChild(heart);

With that said, I could continue down my route and stick to my ways, but a man that stands still in his knowledge is a man that gets left behind. So I’ve started researching JS frameworks and the pros and cons of these now necessary evils/saints.

I personally fell for jQuery. Clean syntax, ease of use, functionality… all of these things put it leaps and bounds ahead of it’s competitors in my book. Looking over Prototype.js markup usually makes me walk away from the computer grumbling about a nose bleed and makes me smoke a cigarette. With that said I’m not your typical JavaScript programmer from my experiences working with others in this field. I feel that a good JS program much like any other should consist of “Objects” since the language is considered OOP, or atleast some what I tend to take advantage of that. For more complex applications I’ll write a series of objects with self contained functionality to control multiple facets of an application. An example of this would be a web based jabber client I wrote about a year ago.

The interface and most every functionality was controlled via a series of objects. I’ll give a short example of what I mean.


function Chat()
{
this.connected = this.establishConnection();
etc.
}

Chat.prototype.handleMessage = function(ejabberdPacketObject)
{
var chatInstance = this.activeChats[ejabberdPacketObject['username']];
if(!chatInstance)
{
this.activeChats[ejabberdPacketObject['username']] = new Conversation(ejabberdPacketObject);
etc.
}
}

function Conversation(incomingConversation)
{
this.username = incomingConversation['username'];
this.appendChatLog(incomingConversation['message']);
}

Conversation.prototype.appendChatLog = function(msgText)
{
msgText = this.username+" : "+msgText;
this.chatLog += msgText;
etc...
}

For all of the fans of Object Literal Notation, I know I’m a sinner, but I really do believe prototyping objects is the way to go because of readability and memory management. I’ll make it up to you and write the next piece in OLN.

So long story short I’m working on a dynamic Pedigree builder, it’s rather simple really, it needs to build out the HTML DOM dynamically adding generations to a pedigree. But I figured I would use jQuery to ease some of the extra markup overhead of appendChild and getElementById calls plus get all the fancy fancy shiny flashy effects as well. I ran into an interesting issue that gave me a headache for a few hours so I wanted to present it to whoever may be running into the same issue and propose my fix.

See when I do development I like to store references to my DOM elements in Object properties to prevent looking over the DOM again plus it just makes it easier to grab DOM references in context.


this.myDiv = $('#gen1');
this.addGenBtn = $('#gen1 input.add_generation');

Using that with jQuery would fetch the input with a class name of ‘add_generation’ inside of the DIV with the ID ‘gen1′. Which is great, we get the correct element back and all the extra functionality supplied by jQuery including the ‘click()’ functionality… I know I know I could use ‘onclick’ but as my Grandpa says “If you’re gonna get wet, might as well go swimming”… basically what I’m saying here is if you’re using the framework, might as well implement it wherever you can. So now that we have the reference in place we can do stuff like this.


Pedigree.generations[5].myDiv.append('stuff');
Pedigree.generations[5].addGenBtn;

Another habit of mine is also passing the reference of the parent object to the DOM node itself for cross reference purposes. This way the DOM node can “phone home” easily and react to user information and interaction accordingly. Such as this.


this.addGenBtn.Parent = this;

Now this may seem kind of clumsy but I’ll show you why I do it personally.


function Generation()
{
this.myDiv = $('#gen1');
this.addGenBtn = $('#gen1 input.add_generation');
this.addGenBtn.Parent = this;
this.addGenBtn.click(this.addGeneration);
}
Generation.prototype = {
addGeneration:function()
{
this.Parent.myDiv.append(this.Parent.blankGenTemplate);
}
};

See now the functionality from an event also has a reference to it’s parent properties and methods. This can be very very handy in the long run. And this is where the problem set in. When the ‘click’ event handler fired, yes, it passed back the associated DOM element as expected. Meaning if I placed a console.log() call and logged ‘this’ to firebug I was seeing the DOM reference I expected. However, any properties and methods I added to that DOM object were neutered.


...
addGeneration:function()
{
console.log(this); // returned input DOM node...
console.log(this.Parent); // returned 'undefined'
}
...

Now me being an old school developer I’m used to saying “getElementById” and getting back exactly what I expected, any new methods or properties I add to that element will reside there until otherwise noted. So this threw me for a loop, but a simple loop that I was looking at from the wrong angle. See jQuery hands back an Object of it’s own when you “query” the DOM. This is what leads to all the fancy added functionality, so although it appears you’re getting back just your DOM node with some extra methods slapped on the end you’re really receiving and jQuery object with your DOM reference tucked neatly inside.

Long story short should someone run into something along the lines of this and require a cigarette much as I did when there is a very simple, very quick, and very easy fix… I almost don’t feel like even publishing this article because I know some people are going to go “well no shit dumbass” but I feel like there might be someone out there that could use this information. SO here it goes.

When you “query” the DOM as mentioned above it returns a custom jQuery object so appending methods/properties to that object does indeed append them, but it does so in the jQuery Object scope which could indeed be useful in some cases. However when using the event controls such as ‘click()’ the scope returns the event reporter. This is why in the example above logging ‘this’ outputs the input element, but it doesn’t see a .Parent reference. It doesn’t see this reference because we technically never put it in place. The trick to fixing this is damn simple though.

See when a jQuery object is returned it’s much like a prototyped/extended array. If you check the object out you’ll see it has a .length property and THIS is where it stores the raw DOM references. So basically using it like an array is the trick.


this.addGenBtn = $('#gen1 input.add_generation');
this.addGenBtn[0].Parent = this;
this.addGenBtn.click(this.addGeneration);

Now in that example we grabbed the first node of the array which is the raw DOM element to create our .Parent property. Now we can use the idea’s stated above without skipping a beat. Also note that if your “query” returns more than one item you can easily loop over the object just like an array and achieve the same idea like so.

this.divControls = $('div.collapsible');
// loop over DOM elements and reference parent object
for(var a=0,z=this.divControls.length; a(lt*)z ; a++)
{
this.divControls[a].Parent = this;
}
this.divControls.click(this.handleCascade);

*(lt) = word press won’t allow a less than because of template munge.. so yea, sorry.

So, with everything we’ve discussed here, I now give you an example (non functional) of the kind of functionality I was trying to achieve.


// pedigree class
function Pedigree()
{
this.init();
}
Pedigree.prototype = {
generations:[],
init:function()
{
// hook up DOM and such
}
},

// generation class
function Generation(parentGen)
{
this.init(parentGen)
}
Generation.prototype = {
init:function(parentGen)
{
this.parentGen = parentGen;
this.masterPedigree = this.parentGen.masterPedigree;
this.generation = this.parentGen.generation+1;
this.buildDOM();
this.hookupDOM();
},
buildDOM:function()
{
// create interface, skipping these
},
hookupDOM()
{
var divName = '#gen'+this.parentGen.generation+'-'+this.generation;
this.myDiv = $(divName);
this.addBtn = $(divName+' input.add_generation');
this.addBtn[0].Parent = this;
this.addBtn.click(this.addGeneration);
},
addGeneration()
{
this.Parent.masterPedigree.push(new Generation(this.Parent));
}
}

Hope this helps anyone else that runs into scoping/object confusion using jQuery later on. If anyone has any questions or comments I’d love to hear them. To the JS dev. community… I know my ways might seem a bit unorthodox so I’m sure I’ll get nice and crucified.

If anyone is going to the Ajaxian conference in Boston next week (Sept. 29th – Oct. 1st) and would like to hang out and shoot the shit feel free to drop your email here and I’ll get in touch.

For those interested in learning more about jQuery jQuery homepage.

Once again, hope this helps, and sorry it’s so damn long ;)

OS X + Journler = Noteably Wonderful

So you’re running OS X and keeping track of your schedule. If you’re anything like myself this means at some points you have Stickies open, maybe a couple looming unsaved instances of “Textedit” or possibly even a word file, some even resort to spreadsheets. Maybe you’re a note fanatic however and seek more organization so you’ve started using “Mail” app to keep track of idea’s and notes or gone to a new extreme and setup some filters and labels so you can email yourself ideas as reminders.

All of these methods work, success greatly varies depending on your work and thought style however. With this in mind I will say that Journler isn’t going to be for everyone… or maybe it is!

Price:
journler right from the get go won me over with it’s price … FREE! (as in beer. for now). This is a “feature” pretty much non-existent in this software market with some apps/suites costing up to $130! Now you probably noticed I said “(for now)” above, this is because the developers are moving the application over to a shareware model… everyone’s gotta make ends meet.

Features:
The feature set is what sold me (as it should be when using an App.) it can be as cut dry and simple or as needlessly complex as you desire. This is something we don’t usually see. From most of the “personal productivity” software I’ve used you’re given a series of tools and a set idea as to how they are going to be used. Not the case with journler.

Notes:
Keep your thoughts stored just how you had them. Attach files, record your own video or audio clip. Insert HTML elements … make a todo list with HTML checkboxes. Toss pre-fixes on list items or high light a line out of a copy and pasted paragraph. I would go so far as to say that the interface for composing and organizing your ideas inside your notes rivals Word or Open Office.

Organization:
Labels, Tags, and Folders on my! Corny I know, but seriously you’ve the ability to organize your notes any given way… even multiple ways! Using Labels and Folders would be enough to keep a veteran personal productivity app user happy. When you consider Tagging and Smart Folders along with this the way you organize your ideas almost becomes blaring obvious.

Smart Folders: (my favorite feature)
It’s like real time message filtering for your notes. You’ll create a Smart Folder that doesn’t actually contain anything, nor will it ever per-say. Smart Folders are more like a logic location, any give item can span multiple Smart Folders based on that items characteristics. I’ll give you a simple example.

I’m a web developer by choice and trade, I love it. With that said at any given time I’m usually juggling work, freelance, and my own projects simultaneously. This means I have serious collisions of time and ideas. I might have 50 separate tasks from 3 different projects 13 of which are Urgent. Now rather than look over notes from a 3 projects and find the ones I’ve labeled as “Urgent” I could simply create a smart folder. Using the stupid simple interface I could add a “requirement” or “exclusion” for items that should appear in this folder. In my example I’ll say I want “all” notes with a “label” or Urgent. The smart folder would instantly populate with my 13 labeled notes for all projects/categories/etc.

Great!… now lets say an entire project is placed on developmental hold, these tasks are no longer urgent because of the dev freeze but once that project begins development I’ll need them to remain urgent. I could now edit my Smart Folder and depending on your organizational preference exclude that project from showing up in said filter. If using folders you could tell the smart folder to “exclude” notes from folder “project foobar”… or if using tagging (my preference) “exclude” notes tagged “foobar”.

Application Integration:
Talk about stream line! Journler hooks into some of OS X’s most popular Apps. While composing a note attach a file (also note the files are reference pointers, so if you update that file… it’s updated in the note) using finder… or view an attached file in Finder. However you can also attach a contact from your Address book, or email a file/note from Mail. Attached an XLS file… have Office installed, it already knows and shows the Office Excel Icon as the viewing option. Listen to an MP3 file you’ve attached or watch a vid right inside the app using native Quicktime support. Hook dates into iCal and link them to existing iCal entries. It even hooks into Spotlight, just type in the title of the note you want to view and Spotlight tracks it down, hit enter and it opens right up in Journler. All of this is done so smoothly you’ll start to wonder why other applications don’t do it the same way. As if that wasn’t enough Apple Script integration allows you to write your own functionality!

Summary:
I consider journler although one of my newer Apps easily one of my MVP apps. As I get more used to it and discover new ways to use and implement it the more I fall in love with it’s simplicity and functionality. I’d suggest everyone give it a week worth of trial and see if you don’t agree. It’s so open anyone could find a way to utilize it…. and I mean anyone… Soccer Mom’s to NASA engineers.

check it out @ http://journler.com/

Now Rolling OpenID

As a huge fan of single user sign on UNEASYsilence is now allowing commenting via OpenID. We are utilizing the WP-OpenID plugin and all you need to do is plugin your OpenID URL into the website field in our comment area and you are good to go!

Page 2 of 213«12345»102030...Last »
Privacy Policy | About Us | Contact Us | Write for us