Rashakil Fol 978 Super Senior Demiposter Team Colleague

NoSQL bandwagon marketing hype more than practical reality then?

No. Well, I'm not measuring hype, and I'm not sure if there even is hype. They're just tools. But they're useful. For example, a lot of Yahoo is powered by an internal proprietary NoSQL product.

Many NoSQL products out nowadays are quite poorly written pieces of software. Cassandra was and possibly still is one of them, according to some HFT developer I talked to about a year ago, who claimed and acted like it was common knowledge that it and others would disappear data. I've also heard that it's gotten better recently. MongoDB, for example, has a global write lock on each database, making it quite mediocre for writes. Almost all have bad performance when it comes to how they write to disk, and some others are shoddily glued together monstrosities of Java and MySQL. Also they're usually bad at managing the notions of datacenters and machines between datacenters.

Another reason NoSQL isn't that useful is because computer RAM capacities keep getting larger, we now have SSDs too, which means single-machine SQL databases or primitive multi-machine failover mechanisms can keep getting larger and larger. And single-machine network capacity keeps getting larger. And of course the upgrade path for an SQL database is "sharding" and more often "buying a newer machine".

But if you have craploads of data, especially a crapload of large blobs like images and such, terabytes or petabytes of data, you need some integrated system for managing …

Rashakil Fol 978 Super Senior Demiposter Team Colleague

700 million records is not a lot for one machine. (Several million users trying to retrieve information from 700 million records would be a lot, though.) Facebook has many many more records than that, because there are many postings and photos per user.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Dev-C++ is not a compiler.

You should try having reasons for your opinions in the future, it's a better strategy for being right.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

That is a low-specced laptop by modern standards, but it's not a cheap piece of trash by merit of being made by Lenovo, your classmate is an idiot. It's cheap because Lenovo's Ideapad line is a bunch of cheap laptops. Obviously if you're going to get the laptop that costs the least, it's going to be one of the worst laptops out there.

Also the CPU is two generations old, assuming I'm reading you correctly. I assume you mean an i3-370M, and 2.4GHz. It will suffer from significantly worse battery life that it would get with a later generation. However, it's powerful enough for any modern need, unless you want to play graphics-intensive video games.

It's a laptop, not part of your identity, so you shouldn't care if it gets insulted.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

The answer is that yes, exploiting security holes requires programming. And finding them requires knowing how to code, too.

(Or we could get butthurt and chatter on about how one person could write the code and another might deploy it, and gosh, some people are morally wrong, how dare they be so? But that's boring and we might as well find something more entertaining like watching the paint dry, or arguing about what the definitions of words should be.)

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Definitely don't believe the expert.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

For the first programming language to learn, the universal recommendation is Python. Many people will argue you can go wrong with Java (to contradict the sentence fragment hwoarang69 emitted) and your goal, being to get your mental model of programming up and running, is best served with Python. (Other languages could certainly work, of course, too.) Fewer people will argue against starting with Python than any other language.

Resources include the Python documentation, and things like Learn Python The Hard Way which is supposedly good.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

What browser/OS, Rash?

Firefox 13.0.1, Windows 7.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

The dual hard drives thing is just something I am used to. My school made a dual-partition on our drives at the network (IE: we would have to be on the school network to change it) I got used to the idea of a C:\ drive for programs and a D:\ drive for files.

Or maybe one for Windows and one for Linux.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Maybe your system is broken, and doesn't flush the output buffer (or displays it incorrectly) when the program exits. Try adding a cout << flush or perhaps a cout << endl before exiting main.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Actually to be honest I might be thinking of the prior generation of XPS's. So don't necessarily dislike XPS's altogether -- however the 1366x768 screen is too weak.

As for your parts, I assume they'd work (specwise they work), but I wouldn't be able to tell you whether they'd be incompatible.

Your T430 config is fine except I don't see why you configured two hard drives.

Labdabeta commented: Thank you for all your help! +4
Rashakil Fol 978 Super Senior Demiposter Team Colleague
  • a 120GB SSD should be OK, at least for a while.
  • dell XPS is a cheap laptop. The only durable laptops Dell makes are Precisions and the highest-numbered Latitudes. The general recommendation is to avoid XPS's. And that laptop in particular is a terrible configuration. It has a 1366x768 screen. It has the last generation of CPU at what is probably not a marked-down price, and it's an underclocked low voltage chip. And you're paying a horrible price for that.
Rashakil Fol 978 Super Senior Demiposter Team Colleague

Let me type some more text into the editor as another test. I haven't experienced the problems lately so maybe they have magically been fixed, or maybe a browser update changed some wonky behavior. Today Daniweb actually managed to crash Firefox, so there's that. What if I type faster? Blah blah blah blah blah balh balahahaaa

^ right after I typed that last "a", there was a scrollbar, and the cursor was on the subsequent line, in a weird tabbed position

Okay, while writing that last sentence, I got another weird scrollbar situation, and got a screenshot: http://i.imgur.com/IkaGU.png

The cursor is shown there out in the middle of nowhere, on a line that doesn't have any spaces or tabs on it.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Software Development is something I enjoy but I feel like I am more of an ideas person and may not get all the satisfaction I require from work by simply writing code for years on end.

This is code talk that says you suck at programming. So I perused your posting history, and four months ago you couldn't write a recursive factorial function without asking for help. So indeed you do suck at programming and computer science in general.

What you need to do right now if you want to not suck at your job, be it in a management role that you eventually get, or a job as a programmer, is to stop sucking at programming. That's the path you need to venture on, otherwise you will be an incompetent who gets in other people's way. I don't know if you will actually achieve this, some people manage to improve themselves and others do not. Another option is to avoid software development as a career altogether.

Trentacle commented: a little blunt, but accurate and solid advice +0
Reverend Jim commented: This is just rude. +0
Rashakil Fol 978 Super Senior Demiposter Team Colleague

Your point being?

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Do a depth-first traversal through the decisionspace, ordering by expected time of finishing the design having made that decision.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

When it comes to gaming, I guess it's pretty clear you will be much happier if you spend 1/3 of your money on a desktop, 1/3 on a laptop, than spending $2400 on a horrible gaming laptop.

If you want to build a gaming desktop, the place to look is here: http://forums.somethingawful.com/showthread.php?threadid=3458091. Scroll down to the "Sweet Spot Performance Gaming" system for component suggestions. (That's $600, doesn't include PSU or the case.) The CPU and graphics card are both better than the ones on the $2.4k laptop that you specced out. The CPU will be fast enough for the next 5 years certainly, the GPU, maybe not.

This leaves the question of what laptop to get. You wouldn't go wrong if you got a Thinkpad T430 with an i5-3320M CPU, 1600x900, Advanced-N wifi, 9 cell battery. Upgrade to a 500 GB 7200 RPM hard drive (for $40) and worry about getting an mSATA SSD, to be used as a cache drive, later. (Probably: get an Intel 313 SLC 20 GB mSATA cache drive.)

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Okay. I will reply in more detail this evening.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

I think it would help to imagine your future self using this computer.

You've made comments based on the weight of a sub-5lb computer. This is 6.8 lbs. I don't think you appreciate how heavy and bulky this thing is.

Imagine your future self playing video games on this computer. A year later, some new game comes out and you can only play it on medium settings. Then a few years after that, your computer is this bulky gigantic thing that can't play any new video games at high settings, with horrible battery life.

Okay, let's just imagine the next year. You're playing video games on this computer. How happy are you? Now suppose you're playing video games at a slightly worse resolution, with slightly worse settings. How happy are you?

The difference in happiness is approximately zero.

The difference in happiness between carrying around a 6.8 several-inches-thick behemoth such as this and some other laptop is much less.

You could get a Retina MacBook Pro instead of this laptop.

You could get a Sony Vaio Z with a quad-core processor and detachable sheet battery instead of this laptop. (That's what I have, it's great.)

You could get an Ultrabook with an IPS display, plus a reasonable gaming desktop, instead of this laptop.

Basically, stop everything, don't get this laptop.

If you want to be some super e-peen gamer, get a desktop, then at least you'll be able to upgrade it every two years.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

I did not get rid of MSOffice suite. This is because my program is a co-op program and while I am on the job I may very well need/wish to use MSWord/Excel. Also my e-mail is compatible with MSOutlook, which is familiar.

You won't be using your personal laptop at any co-op job you have.

MS Office Professional costs $350 USD. You will hypothetically use it to write up the odd essay. For starters, even if you want to use Outlook, you should be getting Office Home And Business, which is $200 USD, not Professional. However, there's no reason to use Outlook for university email at all. Outlook is designed for way more than that and not worth paying for. There are countless free email clients and the probability stands that you'll end up using webmail or forwarding the email to a personal gmail account. So if you were to get any Office suite, it should be Home and Student, which is $120 USD. But really you don't need that either. You can always get it later if you feel yourself missing it. You won't though.

(If you're a sane software engineering student you'll be typing whatever essays you have in Emacs or Vim and then copy/pasting them into OpenOffice before printing it out and turning it in.)

For example, in my computer science degree here is a list of some of the Windows programs I used more often than MS Office (which was preinstalled on my university-configured …

Rashakil Fol 978 Super Senior Demiposter Team Colleague

"Diamond" Thermal compound: Drop it. They aren't selling you an uncoolable computer that needs an upgrade to special compound.

Windows 7 Ultimate is a complete waste of money over Win 7 Professional (which is a waste of money over Win 7 Home Premium). Drop that.

12GB of RAM? You are going to configure the minimum amount of RAM (probably 4GB) and buy the rest separately and install it yourself, unless you're paying under $25 per 4GB of RAM, right?

Microsoft Suite |Microsoft Office 2010 Professional Edition |My school taught me to use ALL of them well!

You don't need that at all. Drop it. You're not going to use it at all as a software engineering major, and the odd humanities class that wants a document in electronic .docx format will be able to take what google docs or OpenOffice spits out.

OS Perf. Drive |Intel 80GB 310 Series mSATA SSD - Preconfigured as an OS Drive (Primary Drive C:) |To boost OS speeds + keep it clean
Primary HD |120GB Intel 520 Series SATA3 Solid State Disk Drive |High speed + decent storage, for my programs
Secondary HD |120GB Intel 520 Series SATA3 Solid State Disk Drive + Caddy Case |Replaces DVD slot, for files etc.

First of all, a single 240GB Intel 520 costs exactly twice as much as a single 120GB Intel 520 drive, so you should definitely just get one of those instead of two 120GB drives. Second, the purpose …

Rashakil Fol 978 Super Senior Demiposter Team Colleague

And such access patterns are very favorable for good pre-fetching performance.

That's true only at the base of the tree. If you're jumping from index i to 2 * i + 1, for any large i, you won't get prefetching performance from that reason.

Grouping every 1+d or 1+d+d^2 trees into contiguous blocks should ostensibly improve things, even though you say a COB-tree is not worth it. It's an isolated change to how parent/child indices are computed, so it's do-able, too.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Both of these can be empty types, of course.

I assume you know they'll end up taking up space.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

I think there was a bit of confusion because your use of the term B-tree is not the standard use of the term, combined with your mentions of BST. In particular, one does not take a BST structure and then wrap it inside a B-tree. A B-tree is a structure that replaces a BST, for example every leaf node is of the same depth. The B-tree structure I am thinking of is described at http://en.wikipedia.org/wiki/B-tree .

Because the BST structure exists to provide key ordering (and balancedness) and the B-tree structure exists to provide the same thing, they're redundant. However, what you were really describing was not a balanced BST, it's a balanced BT. Putting a balanced BT inside a B-tree (with nodes ordered how?) can make sense. (Incidentally, putting nodes whose locations are ordered by some comparison of points in R^n space can be done somewhat sensibly using a continuous space-filling curve based comparison function.) However, I don't think this is what you're doing.

Well, on a reread...

You can't "replace a binary search tree with a B-tree", you can choose to store the binary search tree in a contiguous array with a breadth-first layout (i.e., a B-tree for short).

So now it is more clear what you are doing, I think. You are storing the root of the tree in an array of index 0, its children in indices 1 .. d, its grandchildren in indices d+1, ..., d + d^2, its great grandchildren …

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Yeah, I thought about inlining the adj-lists in the nodes. It is a good idea, and would probably be beneficial w.r.t. memory access patterns. The problem is that it requires a limited fan-out (or branch-factor) on the graph, and I'm not sure I can easily deal with that in my graph algorithm (and I would have to run empirical tests to gather statistics on the average fan-outs generated by my probabilistic graph-algorithms to see how much of a waste it would be and about the effect of the limited fan-out). So, for now, I'll stick to a dynamic array (or list) for the adj-lists.

The point is that small lists should be flattened, large ones will need to use another contiguous chunk of the heap.

That's interesting... Can you elaborate? I thought it would be pretty hard to flatten adjacency-lists, near impossible, unless it is limited fan-out and inlined. Also, how would I or could I go about to try and make the placement of the partner nodes relatively localized in a manner that reflects the localization of the B-tree nodes, without having to tie them too strongly to the B-tree layout (otherwise, it boils down to the same problem as having no partner nodes at all).

If you have a partner node containing representations of the tuples (pointer-to-space-partitioning-thing, outward-adjacencies, inward-adjacencies), the representations themselves might look like this in memory:

uint16_t offset_of_space_partitioning_thing;
uint32_t num_outward_adjacencies;
uint32_t num_inward_adjacencies;
void *outward_adjacency_0;
void *outward_adjacency_1;
...
void *outward_adjacency_n_minus_1;
void *inward_adjacency_0; …
Rashakil Fol 978 Super Senior Demiposter Team Colleague

B-tree: a breadth-first memory layout to store the nodes, their associated data, and the data associated to the edges of the tree (the details of this implementation are not so relevant). This component exposes a standard tree interface (set of functions like add-child, get-parent, etc.).

BST logic: an implementation of a binary search tree (in the very general sense). In actuality, this is a space partitioning tree (not necessarily binary either), so the logic is a bit more complicated than a simple red-black tree, for instance. Overall, the idea is that this code handles all the operations to look-up nodes, insert / delete, re-balance and so on. This code only deals with the standard tree interface (it is agnostic of the underlying data structure).

It is quite important that you explain what this actually is. The ostensible BST is not even a binary tree. So how can you possibly call it a BST, then? I thought you were replacing your binary search tree with a B-tree. What is this "B-tree" then, if it's being used to hold what was once in some non-binary tree? And what are its keys by which it sorts values? Why is there both a B-tree and a space partitioning tree?

The notion of a space-partitioning tree is that a given node represents some subset of space, no? Is it important to you that this space-partitioning tree structure be precisely preserved? What do you actually want the space-partitioning tree for?

How wide are the …

Rashakil Fol 978 Super Senior Demiposter Team Colleague

I'm going to reply in several separate posts because it's hard to organize everything in one, and the points are basically unrelated.

What you seem to be describing is a cache-aware B-tree implementation, with some bit-trickery.

The purpose of that is not to be cache aware (since cache lines are neither 32k nor 1GB), it's to make pointer sizes smaller so that you can pack stuff more tightly in memory.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

You mean, how much total disk storage?

If you're some mega-torrenter you can get an external hard drive. Internally I think 120 GB gives sufficient breathing room. To need more than 180 GB internally is pretty weird. That's based on certain usage patterns, though. I'd say 150 GB or more. That's assuming you get an SSD. If for some reason you get a rotational drive inside your machine (certain Sagers can be configured to have two drives) then it's relatively cheap to just upgrade to 500 GB 7200 RPM. (Don't get 5400 RPM drives.)

Rashakil Fol 978 Super Senior Demiposter Team Colleague

More succinctly:

I know .NET is a Microsoft framework. I currently use Visual Studio 2008 for C++ programming in school. Am I using .NET?

No.

What is .NET? More specifically, is C++ a .NET framework by default? Does it just relate to the class libraries?

.NET, in terms of actual software, is a bytecode interpreter (which interprets .NET bytecode) and set of library functions. C# is a programming language that (typically) gets compiled to .NET bytecode. (Bytecode is a series of instructions, in a particular format, evaluated by a program called a bytecode interpreter. ".NET" has a particular format for its bytecode.)

C++ is a programming language that (typically) gets compiled to machine code. (Machine code is a series of instructions evaluated by a bunch of wires called a CPU.) In your case, probably x86 machine code, or amd64 machine code.

(we're talking 5 to 100 times slower programs, depending on many factors).

It's more like 1-3 times slower, for C#, most of the time.

For four, C++ has features that are unparalleled in .NET or JVM and which are, for technical reasons, not possible on any kind of on-the-fly compilation / byte-code interpreted framework.

Not really. There is no reason C++ cannot be evaluated by an interpreter, or with on-the-fly compilation. (For example, look at the things LLVM can do.)

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Generally speaking, having different linking structures overlaid on the same information is a very normal thing. A common example is when you want a one-to-one bidirectional dictionary, where you can lookup values by key or keys by value.

The appropriate solution is situational. If you have, for example, things concurrently iterating through a tree, your data structure would have certain limitations than they would otherwise lack.

There are many ways to link stuff together. To get the language straight, let's say you have values of type V, with x.key() being the key (of type K) by which the value x (which is of type V) gets compared.

Naturally one way to implement your tree and graph is to have a balanced BST consisting of BST nodes of type BSTNode each containing a value of type V, and an adjacency list which you might say is a List<BSTNode *>. (I'm just repeating this so that if this is inconsistent with what you've said, it's now obvious.) The BST is ordered by the comparison x.key() < y.key().

So obviously, to improve locality of lookup, you put things in a B-tree. (Might I ask: How many keys are in your B-tree nodes? If your b-tree nodes are wider than an L3 cache line, are there really locality advantages? (In prefetching, perhaps?) If you're hitting swap, buy more RAM. If it's 1 TB, buy some SSD's.)

So now you have a b-tree, or generally some kind of lookup structure that has V values packed …

mike_2000_17 commented: Great answer! Thanks! +13
Rashakil Fol 978 Super Senior Demiposter Team Colleague

It would help if you told us what the error was.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Look for books on Objective-C. Objective-C++ is just Objective-C with C++ features. Once you've learned Objective-C, you'll know how to use Objective-C++.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

I feel that I should make a separate post telling googlers in general what the most important parts of the machine are.

They are:

  • Quality of human interface.

    • The screen resolution on a 15" laptop should be 1920x1080 ("FHD"), but on a 14" laptop, 1600x900 ("HD+") would be acceptable. (There is well known 15" 95% NTSC gamut 1920x1080 option on the market, with good viewing angles. That's what you should get.) I recommend trying very hard to avoid anything less than 13" screens and anything less than 1440x900 if you want to to real work on your laptop.

    • The keyboard and mouse quality. Nothing's worse than having a bad trackpad or terrible keyboard. Thinkpads have the best keyboard/mouse, Sager/Clevo laptops are not bad.

    • Battery life. Quite important. With the right laptop you don't have to carry an adapter at all. Also, often you'll be in situations where there are no power outlets nearby. This is a trade-off with weight and portability, though.

    • Weight and Bulk. The ideal laptop is infinitesimally thin, has a 40-inch screen, and folds up into your pocket. But today, you can get a lighter laptop by paying more money for a better-engineered machine, or by sacrificing performance or battery life.

  • Performance

    • Get an SSD. Getting one SSD, from which the computer boots, and on which programs are installed, is the biggest improvement in desktop computer responsiveness today. It's a more important upgrade than the processor. (However, you can't switch the CPU of most laptops, but …

Rashakil Fol 978 Super Senior Demiposter Team Colleague

No matter what, getting a laptop for gaming performance is a fool's game. It'll be behind the latest games pretty quickly, and so it'll only remain an up-to-date piece of machinery for a short while. Realize that this entire post lives within the warped mindset of the 15" gaming laptop worldview. Really you should get a smaller laptop. But now let's enter the world of 15" laptops...

As for the brand, I have heard general praise for Sager notebooks. (Not unconditional blind love, just general "this is a laptop that isn't a broken POS" praise.)

As for the notebook itself, my general recommendation is: In any 15" Sager you must get the FHD 95% NTSC gamut 1920x1080 display. That's the most important thing. Also get a quad core processor. (An i7-3xxxQM). Get an Intel Advanced-N or Ultimate-N wifi card. (It gets better reception than the stock wifi card and that's important at a university.) I can't give recommendations about graphics card because I don't know much about this generation. Don't configure RAM for prices higher than $25 per 4GB dimm, or $65 per 8GB dimm. Get an Intel SSD, and only after comparing the upgrade cost against the cost of buying separately. (Maybe Crucial SSD's are fine. I'd be willing to take the risk on a Crucial-branded SSD.) Many Sager notebooks have a "second hard drive" option. I recommend considering going for that, with one SSD and one rotational hard drive. It's easy for college students with fast internet connections …

Rashakil Fol 978 Super Senior Demiposter Team Colleague

The editor is basically broken. For example as I type this text, it blah blah blah hold on, I'm padding out the text a bit so that it spans multiple lines. Let's see what happens. And so we get some more padding to the reply. And some more padding. Anoethuo thue toeh utohe tuho etuh ontehu ontehu onh ontehu santheou sntoheu sntahu ontehu ntoehu ntoehu ntoehoe uontheu ontehu ontehu ntoeh untoeh unto heuntohe ntuho entuho entuho entuho entuh ontehu. Okay. At this point the text box is rapidly alternating between sizes, getting larger and smaller as each character gets written. And then it stops, and a little later happens again, like around the beginning of this sentence.

Press Enter and you get a scrollbar, then press Enter again and it's gone.

Here is some code.  Now the whole page scrolled while I started typing code.

Now we're done with the code. And some more testing..

And now that I've accidentally inserted some quoted text and removed it, the text box is much smaller than it used to be and now has a scroll bar. It is only several lines high. This is the narrowness I witnessed previously.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Also it folds up into your pocket.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

When I go to reply to a post, the textbox is absurdly tiny, and since it's no longer a browser textarea, it can't be resized using browser controls. It's basically unusable.

Also I'm not contributing an article when making this post. I am creating a new thread.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Your professors might have their own ideas as to what kind of computer to use. You might want to wait until you are actually in school to get a system. That way, you are not buying a computer now, and then learning later that your computer science professor recommends something else. Or perhaps reach out and try to contact one of your future professors now.

A ha ha ha ha ha nope.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Just forget the desktop and crazy remote desktop schemes. You don't need a desktop for anything, and remote desktop will get tiresome fast. You should get a laptop and an external monitor. It'll have more power than you could need. You should get a Thinkpad T430 with Ultimate-N wifi, a 1600x900 screen, and the highest-numbered i5 CPU. Configure it with 4GB of RAM and buy another 4GB stick separately. (Or buy an 8GB making for 12 GB of RAM, you could upgrade to 16GB later.) Also configure it with the cheapest hard drive and replace that with a 120GB Intel 330 SSD or better. The SSD is the most important upgrade when it comes to improving general system performance.

(Do not get an OCZ SSD. These are well known to have reliability problems. Their main benefit is blazing speed for high loads. The Intel 330 and Intel 520 brands are reputed to be reliable, so I recommend going with those.)

The reason to get a Thinkpad is because as a student you'll want to get high-quality and speedy customer support in case anything goes wrong. You get that with Thinkpads. Since you're a student thus a laptop-abuser probably a 3-year warranty is worth it, not the standard 1-year. (It was worth it for me.) Also, Thinkpads are fairly well built so the probability of something going wrong in a given year is less than with cheaper laptops, given the way students abuse it. (I.e. if you drop it, there's less …

Rashakil Fol 978 Super Senior Demiposter Team Colleague

"Big data" is when you have more data than typical relational databases are capable of handling efficiently.

It isn't really a field of computer science or something that you can "study". If you're writing applications that use a ton of data, there's essentially the question of what tools to use for storing the data, and the question of what ways in which you can efficiently process the information. The knowledge you need is that of what tools are out there for this purpose, like various "NoSQL" data stores or the practice of "sharding" some SQL databases. Unfortunately some of the "NoSQL" data stores are mediocre software applications written by web developers who thought they could do systems programming.

People only get good at this by doing it, or are already good at it without doing it by the very nature of generally being good at programming.

On the other side there's the question of engineering database management systems for storing these. There's the distributed computing side of this and the storing-stuff-on-disk-and-caching-it-in-RAM side of this. What it takes to be good at that is to not suck at data structures and algorithms and be good at math and be a good systems programmer. This isn't really a new sort of subject, it's been around for a long time. The general tilt of this field depends on the relative price of storage and CPU in terms of component cost and energy cost.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Start with Cryptography Engineering.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

It's probably too late for the OP, but for any google searchers out there, definitely don't get a game design degree from DeVry, or anything from DeVry. There's a whole community college system and state college system out there that's much cheaper and much better for you.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

1972 was four decades ago. You could be alive during the sixties.

Another option is WW II, which is one of the most interesting times in technological history.

Any earlier and you start entering the pre-penicillin days which is not a very fun experience. You could go to Mozart's time and mess with music history.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

This is not a computer science question. And it's not interesting.

Also the answer is that there are no such tools. (Or if there are, they aren't good. Heck, there aren't any good 2D UML tools. The fact that you're specifically asking for 3D instead of simply the most optimal UML visualization tool probably means there's something wrong with your worldview.)

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Never mind. I can't see the point of replying to a question like this. These terms are obviously not specific to some particular sort of customer relationship, so your question is nonsensical.

silvercats commented: how about telling which part is not clear,other than posting a useless answer and wasting time? thanks +0
Rashakil Fol 978 Super Senior Demiposter Team Colleague

Regardless, C++ is still hell on a new programmer. It's probably not the case that for their first game or two they need to avoid a garbage collector.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

The answer to your second question is that you won't (after all, that's what the definition says), unless the omega and O bounds are looser than they could be.

Rashakil Fol 978 Super Senior Demiposter Team Colleague

Um, no? Why would it be?

Rashakil Fol 978 Super Senior Demiposter Team Colleague

(That depends on your competition.)

Your degree and GPA don't matter. You have to not suck at programming.

The only purpose your degree or GPA matters in this game is for the purpose of getting a company that might like to hire you to give you a phone screen. (It also functions as a signaling mechanism that may affect how much money they offer you for your starting salary.) (Also there is the learning that happens, which makes you a better programmer.)

What really matters is evidence that you don't suck at programming. For example, projects (in your free time) that you have written for fun (or allegedly for fun) will put you ahead. That'll mark you as a non-retarded actual programmer, not just somebody who takes tests and copies off of his groupmates on projects. This means there's less of a chance that you suck at programming, before you get interviewed (because there's actual code you've written that we can see) and after you get interviewed (because there's evidence that you can actually do real things and not just contrived interview problems).

Basically, as your GPA crosses a certain threshold, you go from being high-probability of being retarded to low-probability of being retarded. This range probably goes from 3.2-3.6 and it depends on the school, and the reason there's a range is because factors whether the student was working while in school and how much they cared can skew the outcome. Even the most lazy of smart people can't …

happygeek commented: well said sir! +0
hussain_786 commented: YOu are correct +0
Rashakil Fol 978 Super Senior Demiposter Team Colleague

If these are the only objects here and there's no recursive functions in there, your problem is that the bitmaps are too big. There's simply no place for hidden references to stick around. (These images: are they 3.5 MB compressed, before they're loaded? Or are they 3.5 MB as bitmaps?)

You might be able to make your program survive by forcing a garbage collection at certain times.