My solution is simple: I'm 5'11 and 330 lbs, and I look like a rocker/biker. I leave my laptop at the bar while I go take a piss, and sure enough, it's still there when I get back to my beer. If someone has the steel balls to grab it, I'll track them down via GPS/WiFi, apply various blunt objects to their vital organs, and burn their house down... with the lemons!
Or you could just carry your laptop with you. That's what them fancy $20 tote bags with the straps and handles are for.
When I was more of a road warrior (read: when I still had a valid driver's license), I bolted a steel cage under my seat, where I could slide in the laptop and lock it under key. Aside from keeping it out of sight, it also meant people who knew where to look would still have to break into the car without setting off the alarm, remove the seat and unbolt the cage from the floor. Or whip out the plasma cutter:P Even if I forgot to lock my door, that would slow them down enough that they'll either get caught, or move on to another target.
I did catch a thief once, he was clawing at it with a wrench, so I took his wrench and beat him with it. That was the last time anyone ever tried to steal my shit.
Christ that's a fat fetch. I had no idea... I always assumed with integrated memory controllers, that caching and fetching would use the same width as the core itself, as they were with the numerous SoC's I used.
Games are a different bubble, because gamers tend to be all bark and no bite. We complain but still throw money at the diseased companies because we want our fix. We're basically software crackheads.
In the application space, things are a bit different. Take a company like Adobe, whose widely-distributed software is notorious for being slow and unstable. Hardly a week goes by without a designer bitching that Photoshop runs like a dog on his brand new machine. If someone were to come along and release a compatible, feature-complete product that runs twice as fast on half as much memory, it would KILL!
I've seen this first-hand as I watched Corel spiral down into obsolescence. They had the superior word processor for the longest time, but as they kept adding obscure functionality and remodeling the dumb thing with more and more interpreted / indirect code with each successive release, it grew increasingly sluggish and troublesome. MS Word took the lead because it was lean and mean, despite costing twice as much. Had they fired that idiot manager Richard, who kept pushing for these pointless rewrites, and instead focused on polishing what was already there, I dare say the office suite marketshare might be drastically different today. For a 1.0 release, sure, the unoptimized crap is good enough, but for 2.0 it would be nice if some of the development time were spend on improving what was already there, rather than adding more crap.
Business users don't always need more, sometimes they just want the features they already have to work better.
I haven't hosted nor attended a LAN party in, well heck I can't even remember... at least a decade. The last time I even played a PC game with another person on the same segment was when we 2-manned Diablo II, and that was at least 3-4 years ago. It's just way too much hassle anymore.
Very occasionally we'll play a console game in split-screen, or for sports titles it's just one screen with different-colored markers for each player. 99% of the time though, we just play online with a mic headset or Ventrilo. The RL meetups are strictly for RL stuff, like food/drink, band jams, game day at the bar (an excuse to get away from our wives)... we just don't see the point in traveling to just play a quick video game when it's much more comfortable and convenient to do so online whenever the hell you're bored. At best, we'll make "play dates" to get a large-ish group going for certain games, like say Call of Duty or various racing titles that are best enjoyed while launching various hyper-offensive slurs at your drinkin' buddies. All that requires is an SMS or phone call, no tedious packing/driving/unpacking/wiring/breaker-flipping ritual.
When discussing China and the Internet, calling it "evil" is redundant. They are almost completely immune to legal repercussions, our governments are too pussywhipped to blackball the trade industry, and China knows this. It is the only card they ever play. They have us by our consumerist balls, so they can get away with anything.
It is for these reasons that I drop ALL packets entering my network from China, except for VPN connections from the handful of contractors with whom I actually work. I've done this for the better part of 7 years. There is simply no business incentive for me to deal with that market, while they have all the reasons in the world to fuck with my sites, services and users. They can join the rest of us when they learn to play nice.
Who the fuck would want to use Sony Vegas anyway ? Even if it came with a free case of beer, I still wouldn't touch it.
I think this site is a joke. They may have sniffed a handful of torrents, but for the most part this seems like that same Russian attention whore (of 3FN fame) trying to make himself relevant by pissing people off. Apparently it wasn't enough for him to host a shit ton of botnet C&C nodes and scam sites...
Shit like this is why I think we should have an Internet tribunal, where unforgivable swine are judged by a jury of tech-savvy peers and booted off the goddamned wire.
I occasionally do use assembly, but not for the entire program. I just apply it sparingly where it yields the greatest benefits. Most C compilers have gotten quite good at automatic optimization, but there are some scenarios where a bit of hand-tuning still helps.
I kind of got into a pro-assembly rant there, but what I meant to say is that assembly was a tool, to be used where appropriate. The only times I wrote software in pure assembly were when I had nothing but DEBUG.COM, or if I was participating in a 256 or 4096-byte competition (for kicks). Today, we write lots of software using scripting languages and bloated frameworks, so the proper approach now might be to rewrite the most-used functions as C code and link that in as an external plugin. Just look at Facebook, they have that HipHop tool that translates PHP to C++ and compiles it. I think that's a perfectly valid approach, as it lets the developer continue using the relatively easy PHP (with some restrictions), then turns it into native x64 code that can really scream. Any time you can avoid an interpreter, you'll see significant performance leaps.
My point is we should be using all this computing power to help us write better software more quickly, by making use of code generators and optimizing compilers. The manufacturing industry makes extensive use of robotics, where one tool helps to create the next progressive iteration of that tool. We should apply that same methodology to software. Use current tools to make the next generation of tools better/faster/easier.
By the way when you see a computer game demo these days, do you think "These guys are on crack if they think everyone's got one of those cards?", or "With these recommended specs what is this written in, VisualBasic?" ?
Sometimes, yes. There's one game in particular, that I play a fair bit. It has roughly Xbox (1) era graphics, yet manages to stutter on my balls-to-the-wall quad-SLI GTX 295 system. Even just one of those GPUs should be able to run the stupid game at 300 fps, but the engine is such a mess that it somehow wastes all that time doing nothing useful. I'm also going to mention that the entire game is only 2.5 gigabytes, yet takes about a minute to load one level. With my absurd hardware, I can copy the entire folder in about 5 seconds... So yes, this thing is an insult to Visual Basic. I could write this game in Perl and it would still run ten times faster.
If it's a one-off, and the upgrade route actually does only cost $50 for more memory, yeah, sure, add the Ram. The problem with the Wilhelm anecdote is that nobody sane would have overlooked that simple detail, unless it's one really stupid dead-dumb-and-blind company.
If your software is being deployed to thousands of machines, which would each require an upgrade, you'd better optimize the crap out of it.
If your software is being deployed to a group of servers, where an 8% reduction in CPU and memory usage saves you from adding another $15k node and possibly other infrastructure upgrades, you should spend up to $30k in man-hours optimizing that thing. Scalability today avoids a lot of headaches tomorrow.
Agreed. It is even more frustrating when you know how little effort would be required to drastically improve performance in many of these apps.
There's one app I love to pick on, because it is legendary in its inefficiencies, and that is Cubase - the multitrack audio production tool. Just to launch it on this $10k PC takes about 15 seconds, because it looks through a few directories for a number of plugins, does god-knows-what with each of them, and eventually presents a blank workspace for me to actually start working. It doesn't actually enable any of the plugins at launch, and each one still takes a second or two to load when you select it. Is it querying for the plugin's name, version and other metadata ? That shouldn't take 2 million CPU cycles per file... Is it preloading them all to speed things up later ? No, because the app still pauses and the audio stutters when you load a new effect or instrument. So what the fuck is it doing that takes so long to launch the host app ? It's doing bullshit, that's what.
I say this as a programmer who was writing assembly back in the day, and have written audio apps and plugins and plug-hosts. Cubase just wastes CPU time and memory doing nothing of value, as do most modern apps. Why ? Because today's developers don't give a crap. Their bosses don't give them the time or resources to do things right. Their workstations probably suck and take too long per build/test/debug iteration. And maybe, just maybe, the developers themselves don't know what their doing, thanks to the many colleges cranking out useless degrees and the industry-wide abomination that is Java, teaching people to write prose rather than code.
It's not though, because were that software properly written in the first place, we would already be at the 1 second swap on the "old" hardware, and the SSD would make it 1/10th of a second. If all these dramatic improvements in hardware performance are met with equal regressions in the software, then why the heck are we upgrading in the first place ?
Does Firefox need 10 seconds and 400mb of Ram just to launch ? Yes, it does, but according to the functionality it provides, this should be possible with less than 1/10th of the resources, and no, it wouldn't require writing everything in assembly language. It wouldn't require ANY assembly, just a modicum of sanity and restraint from the developers. The OS, which provides all the services Firefox consumes, uses less memory than that. It's not working with massive data sets, I certainly don't have 400mb of text and images loaded in the one tab, so where the heck is all that excess being used ?
Anyone pairing a C2D with less than a gig of Ram should be tarred, feathered, then chucked into a wood chipper. I haven't built a desktop with less than 2 gb of Ram in at least 6-7 years - and I don't mean my own, I'm talking about PCs I've built for non-techy friends and family.
If you have 12GB in your PC, and you're using it normally, you can disable swap entirely. Sure, your commit rate will jump a bit, but you still have several times more Ram than you need. Swap space has a usefulness even when you have memory available, because a properly tuned VMM will treat it as low-priority commit fodder - meaning if an app requests 10 gigs of buffer space, but has not yet put anything in there, the VMM will earmark swap first, so as to not tie up physical RAM until it is actually needed (if at all). In a sense, it's an accounting trick that allows the OS to "borrow" memory without necessarily using it. It's like a line of credit for memory; you're best to avoid using it, but if you need a security deposit for something, that mastercard is ideal. Swap is like that mastercard. It can help swing you through tight spots, but if you abuse it, you enter a world of pain...
There are some of us who are quite proficient with assembly language. We also had some very sloppy compilers back then, so the two went hand-in-hand.
Back then, I would build a first prototype in straight C (or whatever), then identify the bottlenecks and rewrite those functions in assembly. Heck, in school I wrote a few QBasic games/apps that linked in some assembly calls. Sometimes I'd get cocky and copy the assembled code directly into a QBasic variable, then execute it. For common stuff like blits and mouse calls, I could type those opcodes from memory. You wouldn't think a QB game could handle 3D graphics as 320x200 on a 386, with sound effects and digital (MOD) music, but with a modest application of hand-tuned code, you can write the script-like glue in whatever language you want with only a minimal impact on final performance.
I'm not saying we need to write all apps in raw assembly, that's absurd. We rarely did that back in the day, except for extreme situations and bragging rights. Today's compilers seem to do a good-enough job, but the faster they get, the more our so-called developers push into truly wasteful practices like nested script interpreters - most PHP and Ruby frameworks fall into that category. Do we really need 16-core machines with 48gb of Ram to push a few pages of text ? Not if we were writing actual computer code, and not this navel-gazing techno poetry that's more for humans than machines.
This is what I thought when I bought a Mac, not long ago. My initial impression was that this overpowered laptop was running a lot slower than it should. I don't know what OSX does under the hood, but goddamn that thing was slow. Then I threw one of those hybrid drives at it, with the 4GB of SSD cache, and now it feels "normal". Maybe it's because I'm spoiled by the truly ridiculous SSDs in my PC, or maybe Mac users are accustomed to things being a bit laggy, but to me it screamed of excess background I/O.
It does cut both ways though. An SSD can hide excessive seeking, but it can also underline scalability issues. I have one particular tool that fails to maximize the SSD's throughput, which is quite shameful considering its a video file (de)muxer. It peaks at about 60mb/sec, regardless of the I/O subsystem - whether it's a spinning disk, a Velodrive, or a freaking ramdisk. It is neither CPU nor I/O bound, but there's something fishy in the loop that causes it to idle a lot. For all I know, the guy may have inserted a sleep() in there for some random reason. And no, I haven't found the time to look at the code yet.
I see the SSD as one tool in the arsenal. It has its pros and cons, and is not a magic "solve everything" device. It certainly cannot entirely make up for developer ignorance.
Okay then can you enlighten me a bit ? I haven't done any hardware design in quite a few years so my knowledge may well be outdated, but my understanding is that an x64 processor fetches everything in 64-bit chunks. If you're storing a 16-bit value, it will still grab the 64-bit "window" where it resides, and discard the excess. If you do this en-masse, it wastes a ton of memory bandwidth and dirties the cache. Am I wrong ?
For #2, you're absolutely right. Windows has to load a bunch of 32-bit libs for backward compatibility. I will edit my post accordingly:D
For #3, yes a 64-bit program has access to wider registers and more of them, but having the 8 extra registers is of little benefit if you don't need them in your busiest loops. I say this as someone who used to write game engines in assembler, back in the day. Mind you, it's been a while since I did any serious profiling of compiled code, so if GCC et al. can put those extra regs to good use, I stand corrected.
I didn't use a mouse until roughly 1994, when DOS 5 + Windows 3.1 were the standard. Up until then, it was all keys. It wasn't a problem for me to learn the mouse, and in fact my current mouse has 9 buttons, while the one I'm eyeing has 17 (yes that goofy Razer Naga). To me, pointing is a necessary evil, but it should not monopolize half of my dexterity. If my hand is going to be sitting on a device for any significant amount of time, that device had better be a multitasker so I can put my other fingers to use. If I could somehow have a fully-functional keyboard that is also a pointing device, that would be the holy grail. Maybe something inspired from those weird one-handed chording keyboards, but I think i'd want it to be a two-handed affair with less chording. Hell, make it two simultaneous mice:D
Ahh but the difference is a PC app can detect the presence of said suckage, deliver an appropriate error message, and save the developer the hassle of reading a stupid bug report for something that is not a bug.
Dude... I looked into some of those sites and I want to THANK YOU! I've shifted more into software dev lately, but I did sign up for a few of those onsite support agencies for those months when my software contracts are a little sparse. OnForce in particular seems very well organised. I knew of a local company like them, but the pay was blah and the company itself was rather messy, so I had stopped looking.
You are right about XCode being a mess. It crashes a LOT and for seemingly random reasons, like for me it likes to crash on startup, but then I'll do exact same thing, open the same project, and it works perfectly fine the 2nd time.
That said, once you have it working, I find they did an OK job of it. Yeah, the weird semi-visual stuff with the IBOutlets and whatnot, that's friggin' messy, but I find I can work very quickly now that I'm used to it. I've only been doing mobile dev for, I dunno, 6 to 8 months, split between IOS/Android/Win7/BB, so maybe a third of that time has been in XCode. It's no Visual Studio, but it gets the job done satisfactorily for me.
Android, to me, is a clusterfuck because I'm nowhere near as experienced with Java as I am with C. I also find the platform to be quite fractured, and things that work great on my device, tend to have odd quirks elsewhere, sometimes even crashes I can't reproduce, but since all mobile platforms are so restrictive, there isn't a whole lot I can do to prevent these issues or even document them in a meaningful way. I've learned more from the Android Market's automatic crash reports than from 6 months of beta testing and experimentation...
Disclaimer: I fuckin' hate Blackberry. I hate it as a phone. I hate it as a development target. I hate the company for being woefully stuck in the 90's and being a terrible place to work (I contracted there briefly).
The very first time I heard them throw the name BBX around, I immediately thought of the other BBX, the one that powers an assload of retail management backends and terminals. How a company like RIM, with its much fanfared "business platform", could be oblivious to the other's existence, well that's absolutely moronic. I'm sure quite a few of their clients use BBX in their retail operations. I'm just a lone I.T. consultant who did some very minor work with POS systems, and I know about it.
It would be kind of like Apple trying to call their next phone the "Unix". Yeah, DUH!
If you have the patience to read reviews for a half hour or so, you will hear all the pros and cons of any given hosting company. On top of that, they often post exclusive deals in that forum which can be quite a bargain. It is *THE* go-to for hosting discussion. Very highly recommended!
Or you could go the no-brainer route and get a cheap dedicated server from a place like Leaseweb. I've been with them for years, and I think they have US-based "bargain servers" starting around $80 or so, but that's entirely self-managed, so you need to know enough to set up your own Apache/SQL stack on CentOS or Ubuntu or whatever the kids are using these days. Like I said, I've been there for 5+ years, their service used to be ass back then but now it's top-notch, and the price is hard to beat for what you're getting. Traffic is cheap there too, heck you can get 100mb unmetered for under 2 bills if you don't mind slightly boring hardware.
My solution is simple: I'm 5'11 and 330 lbs, and I look like a rocker/biker. I leave my laptop at the bar while I go take a piss, and sure enough, it's still there when I get back to my beer. If someone has the steel balls to grab it, I'll track them down via GPS/WiFi, apply various blunt objects to their vital organs, and burn their house down... with the lemons!
Or you could just carry your laptop with you. That's what them fancy $20 tote bags with the straps and handles are for.
When I was more of a road warrior (read: when I still had a valid driver's license), I bolted a steel cage under my seat, where I could slide in the laptop and lock it under key. Aside from keeping it out of sight, it also meant people who knew where to look would still have to break into the car without setting off the alarm, remove the seat and unbolt the cage from the floor. Or whip out the plasma cutter :P Even if I forgot to lock my door, that would slow them down enough that they'll either get caught, or move on to another target.
I did catch a thief once, he was clawing at it with a wrench, so I took his wrench and beat him with it. That was the last time anyone ever tried to steal my shit.
Christ that's a fat fetch. I had no idea... I always assumed with integrated memory controllers, that caching and fetching would use the same width as the core itself, as they were with the numerous SoC's I used.
Thanks for the update :D
Games are a different bubble, because gamers tend to be all bark and no bite. We complain but still throw money at the diseased companies because we want our fix. We're basically software crackheads.
In the application space, things are a bit different. Take a company like Adobe, whose widely-distributed software is notorious for being slow and unstable. Hardly a week goes by without a designer bitching that Photoshop runs like a dog on his brand new machine. If someone were to come along and release a compatible, feature-complete product that runs twice as fast on half as much memory, it would KILL!
I've seen this first-hand as I watched Corel spiral down into obsolescence. They had the superior word processor for the longest time, but as they kept adding obscure functionality and remodeling the dumb thing with more and more interpreted / indirect code with each successive release, it grew increasingly sluggish and troublesome. MS Word took the lead because it was lean and mean, despite costing twice as much. Had they fired that idiot manager Richard, who kept pushing for these pointless rewrites, and instead focused on polishing what was already there, I dare say the office suite marketshare might be drastically different today. For a 1.0 release, sure, the unoptimized crap is good enough, but for 2.0 it would be nice if some of the development time were spend on improving what was already there, rather than adding more crap.
Business users don't always need more, sometimes they just want the features they already have to work better.
I haven't hosted nor attended a LAN party in, well heck I can't even remember... at least a decade. The last time I even played a PC game with another person on the same segment was when we 2-manned Diablo II, and that was at least 3-4 years ago. It's just way too much hassle anymore.
Very occasionally we'll play a console game in split-screen, or for sports titles it's just one screen with different-colored markers for each player. 99% of the time though, we just play online with a mic headset or Ventrilo. The RL meetups are strictly for RL stuff, like food/drink, band jams, game day at the bar (an excuse to get away from our wives)... we just don't see the point in traveling to just play a quick video game when it's much more comfortable and convenient to do so online whenever the hell you're bored. At best, we'll make "play dates" to get a large-ish group going for certain games, like say Call of Duty or various racing titles that are best enjoyed while launching various hyper-offensive slurs at your drinkin' buddies. All that requires is an SMS or phone call, no tedious packing/driving/unpacking/wiring/breaker-flipping ritual.
When discussing China and the Internet, calling it "evil" is redundant. They are almost completely immune to legal repercussions, our governments are too pussywhipped to blackball the trade industry, and China knows this. It is the only card they ever play. They have us by our consumerist balls, so they can get away with anything.
It is for these reasons that I drop ALL packets entering my network from China, except for VPN connections from the handful of contractors with whom I actually work. I've done this for the better part of 7 years. There is simply no business incentive for me to deal with that market, while they have all the reasons in the world to fuck with my sites, services and users. They can join the rest of us when they learn to play nice.
Who the fuck would want to use Sony Vegas anyway ? Even if it came with a free case of beer, I still wouldn't touch it.
I think this site is a joke. They may have sniffed a handful of torrents, but for the most part this seems like that same Russian attention whore (of 3FN fame) trying to make himself relevant by pissing people off. Apparently it wasn't enough for him to host a shit ton of botnet C&C nodes and scam sites...
Shit like this is why I think we should have an Internet tribunal, where unforgivable swine are judged by a jury of tech-savvy peers and booted off the goddamned wire.
Funny, I've been with four different ISPs over the last decade, and they've all had the same A-class.
You must live in an overbloated and cheap knockoff of ancient Rome.
I occasionally do use assembly, but not for the entire program. I just apply it sparingly where it yields the greatest benefits. Most C compilers have gotten quite good at automatic optimization, but there are some scenarios where a bit of hand-tuning still helps.
I kind of got into a pro-assembly rant there, but what I meant to say is that assembly was a tool, to be used where appropriate. The only times I wrote software in pure assembly were when I had nothing but DEBUG.COM, or if I was participating in a 256 or 4096-byte competition (for kicks). Today, we write lots of software using scripting languages and bloated frameworks, so the proper approach now might be to rewrite the most-used functions as C code and link that in as an external plugin. Just look at Facebook, they have that HipHop tool that translates PHP to C++ and compiles it. I think that's a perfectly valid approach, as it lets the developer continue using the relatively easy PHP (with some restrictions), then turns it into native x64 code that can really scream. Any time you can avoid an interpreter, you'll see significant performance leaps.
My point is we should be using all this computing power to help us write better software more quickly, by making use of code generators and optimizing compilers. The manufacturing industry makes extensive use of robotics, where one tool helps to create the next progressive iteration of that tool. We should apply that same methodology to software. Use current tools to make the next generation of tools better/faster/easier.
In that case, he could just rent space from an actual rsync backup provider.
By the way when you see a computer game demo these days, do you think "These guys are on crack if they think everyone's got one of those cards?", or "With these recommended specs what is this written in, VisualBasic?" ?
Sometimes, yes. There's one game in particular, that I play a fair bit. It has roughly Xbox (1) era graphics, yet manages to stutter on my balls-to-the-wall quad-SLI GTX 295 system. Even just one of those GPUs should be able to run the stupid game at 300 fps, but the engine is such a mess that it somehow wastes all that time doing nothing useful. I'm also going to mention that the entire game is only 2.5 gigabytes, yet takes about a minute to load one level. With my absurd hardware, I can copy the entire folder in about 5 seconds... So yes, this thing is an insult to Visual Basic. I could write this game in Perl and it would still run ten times faster.
If it's a one-off, and the upgrade route actually does only cost $50 for more memory, yeah, sure, add the Ram. The problem with the Wilhelm anecdote is that nobody sane would have overlooked that simple detail, unless it's one really stupid dead-dumb-and-blind company.
If your software is being deployed to thousands of machines, which would each require an upgrade, you'd better optimize the crap out of it.
If your software is being deployed to a group of servers, where an 8% reduction in CPU and memory usage saves you from adding another $15k node and possibly other infrastructure upgrades, you should spend up to $30k in man-hours optimizing that thing. Scalability today avoids a lot of headaches tomorrow.
Agreed. It is even more frustrating when you know how little effort would be required to drastically improve performance in many of these apps.
There's one app I love to pick on, because it is legendary in its inefficiencies, and that is Cubase - the multitrack audio production tool. Just to launch it on this $10k PC takes about 15 seconds, because it looks through a few directories for a number of plugins, does god-knows-what with each of them, and eventually presents a blank workspace for me to actually start working. It doesn't actually enable any of the plugins at launch, and each one still takes a second or two to load when you select it. Is it querying for the plugin's name, version and other metadata ? That shouldn't take 2 million CPU cycles per file... Is it preloading them all to speed things up later ? No, because the app still pauses and the audio stutters when you load a new effect or instrument. So what the fuck is it doing that takes so long to launch the host app ? It's doing bullshit, that's what.
I say this as a programmer who was writing assembly back in the day, and have written audio apps and plugins and plug-hosts. Cubase just wastes CPU time and memory doing nothing of value, as do most modern apps. Why ? Because today's developers don't give a crap. Their bosses don't give them the time or resources to do things right. Their workstations probably suck and take too long per build/test/debug iteration. And maybe, just maybe, the developers themselves don't know what their doing, thanks to the many colleges cranking out useless degrees and the industry-wide abomination that is Java, teaching people to write prose rather than code.
It's not though, because were that software properly written in the first place, we would already be at the 1 second swap on the "old" hardware, and the SSD would make it 1/10th of a second. If all these dramatic improvements in hardware performance are met with equal regressions in the software, then why the heck are we upgrading in the first place ?
Does Firefox need 10 seconds and 400mb of Ram just to launch ? Yes, it does, but according to the functionality it provides, this should be possible with less than 1/10th of the resources, and no, it wouldn't require writing everything in assembly language. It wouldn't require ANY assembly, just a modicum of sanity and restraint from the developers. The OS, which provides all the services Firefox consumes, uses less memory than that. It's not working with massive data sets, I certainly don't have 400mb of text and images loaded in the one tab, so where the heck is all that excess being used ?
No, we haven't.
Anyone pairing a C2D with less than a gig of Ram should be tarred, feathered, then chucked into a wood chipper. I haven't built a desktop with less than 2 gb of Ram in at least 6-7 years - and I don't mean my own, I'm talking about PCs I've built for non-techy friends and family.
Disable the pagefile entirely then. A gaming machine doesn't need it. Heck, it doesn't need 16gb of RAM either. 6 or 8 would be more than enough.
If you have 12GB in your PC, and you're using it normally, you can disable swap entirely. Sure, your commit rate will jump a bit, but you still have several times more Ram than you need. Swap space has a usefulness even when you have memory available, because a properly tuned VMM will treat it as low-priority commit fodder - meaning if an app requests 10 gigs of buffer space, but has not yet put anything in there, the VMM will earmark swap first, so as to not tie up physical RAM until it is actually needed (if at all). In a sense, it's an accounting trick that allows the OS to "borrow" memory without necessarily using it. It's like a line of credit for memory; you're best to avoid using it, but if you need a security deposit for something, that mastercard is ideal. Swap is like that mastercard. It can help swing you through tight spots, but if you abuse it, you enter a world of pain...
There are some of us who are quite proficient with assembly language. We also had some very sloppy compilers back then, so the two went hand-in-hand.
Back then, I would build a first prototype in straight C (or whatever), then identify the bottlenecks and rewrite those functions in assembly. Heck, in school I wrote a few QBasic games/apps that linked in some assembly calls. Sometimes I'd get cocky and copy the assembled code directly into a QBasic variable, then execute it. For common stuff like blits and mouse calls, I could type those opcodes from memory. You wouldn't think a QB game could handle 3D graphics as 320x200 on a 386, with sound effects and digital (MOD) music, but with a modest application of hand-tuned code, you can write the script-like glue in whatever language you want with only a minimal impact on final performance.
I'm not saying we need to write all apps in raw assembly, that's absurd. We rarely did that back in the day, except for extreme situations and bragging rights. Today's compilers seem to do a good-enough job, but the faster they get, the more our so-called developers push into truly wasteful practices like nested script interpreters - most PHP and Ruby frameworks fall into that category. Do we really need 16-core machines with 48gb of Ram to push a few pages of text ? Not if we were writing actual computer code, and not this navel-gazing techno poetry that's more for humans than machines.
This is what I thought when I bought a Mac, not long ago. My initial impression was that this overpowered laptop was running a lot slower than it should. I don't know what OSX does under the hood, but goddamn that thing was slow. Then I threw one of those hybrid drives at it, with the 4GB of SSD cache, and now it feels "normal". Maybe it's because I'm spoiled by the truly ridiculous SSDs in my PC, or maybe Mac users are accustomed to things being a bit laggy, but to me it screamed of excess background I/O.
It does cut both ways though. An SSD can hide excessive seeking, but it can also underline scalability issues. I have one particular tool that fails to maximize the SSD's throughput, which is quite shameful considering its a video file (de)muxer. It peaks at about 60mb/sec, regardless of the I/O subsystem - whether it's a spinning disk, a Velodrive, or a freaking ramdisk. It is neither CPU nor I/O bound, but there's something fishy in the loop that causes it to idle a lot. For all I know, the guy may have inserted a sleep() in there for some random reason. And no, I haven't found the time to look at the code yet.
I see the SSD as one tool in the arsenal. It has its pros and cons, and is not a magic "solve everything" device. It certainly cannot entirely make up for developer ignorance.
Okay then can you enlighten me a bit ? I haven't done any hardware design in quite a few years so my knowledge may well be outdated, but my understanding is that an x64 processor fetches everything in 64-bit chunks. If you're storing a 16-bit value, it will still grab the 64-bit "window" where it resides, and discard the excess. If you do this en-masse, it wastes a ton of memory bandwidth and dirties the cache. Am I wrong ?
For #2, you're absolutely right. Windows has to load a bunch of 32-bit libs for backward compatibility. I will edit my post accordingly :D
For #3, yes a 64-bit program has access to wider registers and more of them, but having the 8 extra registers is of little benefit if you don't need them in your busiest loops. I say this as someone who used to write game engines in assembler, back in the day. Mind you, it's been a while since I did any serious profiling of compiled code, so if GCC et al. can put those extra regs to good use, I stand corrected.
I didn't use a mouse until roughly 1994, when DOS 5 + Windows 3.1 were the standard. Up until then, it was all keys. It wasn't a problem for me to learn the mouse, and in fact my current mouse has 9 buttons, while the one I'm eyeing has 17 (yes that goofy Razer Naga). To me, pointing is a necessary evil, but it should not monopolize half of my dexterity. If my hand is going to be sitting on a device for any significant amount of time, that device had better be a multitasker so I can put my other fingers to use. If I could somehow have a fully-functional keyboard that is also a pointing device, that would be the holy grail. Maybe something inspired from those weird one-handed chording keyboards, but I think i'd want it to be a two-handed affair with less chording. Hell, make it two simultaneous mice :D
Ahh but the difference is a PC app can detect the presence of said suckage, deliver an appropriate error message, and save the developer the hassle of reading a stupid bug report for something that is not a bug.
Dude... I looked into some of those sites and I want to THANK YOU! I've shifted more into software dev lately, but I did sign up for a few of those onsite support agencies for those months when my software contracts are a little sparse. OnForce in particular seems very well organised. I knew of a local company like them, but the pay was blah and the company itself was rather messy, so I had stopped looking.
I raise my glass to you, sir!
You are right about XCode being a mess. It crashes a LOT and for seemingly random reasons, like for me it likes to crash on startup, but then I'll do exact same thing, open the same project, and it works perfectly fine the 2nd time.
That said, once you have it working, I find they did an OK job of it. Yeah, the weird semi-visual stuff with the IBOutlets and whatnot, that's friggin' messy, but I find I can work very quickly now that I'm used to it. I've only been doing mobile dev for, I dunno, 6 to 8 months, split between IOS/Android/Win7/BB, so maybe a third of that time has been in XCode. It's no Visual Studio, but it gets the job done satisfactorily for me.
Android, to me, is a clusterfuck because I'm nowhere near as experienced with Java as I am with C. I also find the platform to be quite fractured, and things that work great on my device, tend to have odd quirks elsewhere, sometimes even crashes I can't reproduce, but since all mobile platforms are so restrictive, there isn't a whole lot I can do to prevent these issues or even document them in a meaningful way. I've learned more from the Android Market's automatic crash reports than from 6 months of beta testing and experimentation...
Disclaimer: I fuckin' hate Blackberry. I hate it as a phone. I hate it as a development target. I hate the company for being woefully stuck in the 90's and being a terrible place to work (I contracted there briefly).
The very first time I heard them throw the name BBX around, I immediately thought of the other BBX, the one that powers an assload of retail management backends and terminals. How a company like RIM, with its much fanfared "business platform", could be oblivious to the other's existence, well that's absolutely moronic. I'm sure quite a few of their clients use BBX in their retail operations. I'm just a lone I.T. consultant who did some very minor work with POS systems, and I know about it.
It would be kind of like Apple trying to call their next phone the "Unix". Yeah, DUH!
This.
If you have the patience to read reviews for a half hour or so, you will hear all the pros and cons of any given hosting company. On top of that, they often post exclusive deals in that forum which can be quite a bargain. It is *THE* go-to for hosting discussion. Very highly recommended!
Or you could go the no-brainer route and get a cheap dedicated server from a place like Leaseweb. I've been with them for years, and I think they have US-based "bargain servers" starting around $80 or so, but that's entirely self-managed, so you need to know enough to set up your own Apache/SQL stack on CentOS or Ubuntu or whatever the kids are using these days. Like I said, I've been there for 5+ years, their service used to be ass back then but now it's top-notch, and the price is hard to beat for what you're getting. Traffic is cheap there too, heck you can get 100mb unmetered for under 2 bills if you don't mind slightly boring hardware.