Hot answers tagged

1155

Many of the answers here are really, really good. But the OpenGL and Direct3D (D3D) issue should probably be addressed. And that requires... a history lesson. And before we begin, I know far more about OpenGL than I do about Direct3D. I've never written a line of D3D code in my life, and I've written tutorials on OpenGL. So what I'm about to say isn't a ...


110

This hack has to be understood in context. It was published at a time and in a culture where Unix running on all kinds of different hardware was the dominant system. What made the attack so scary was that the C compiler was the central piece of software for these systems. Almost everything in the system went through the compiler when it was first installed (...


72

The purpose of that speech wasn't to highlight a vulnerability that needs to be addressed, or even to propose a theoretical vulnerability that we need to be aware of. The purpose was that, when it comes to security, we'd like to not have to trust anyone, but unfortunately that's impossible. You always have to trust someone (hence the title: "Reflections On ...


62

Developers just need to provide a package for a distribution. Each distribution then has a way to install this package. This way can be in a terminal (apt-get) or via a graphical interface, e.g. Ubuntu Software Center. The beauty is that developers just have to care about building a proper package; the distribution makers take care of the rest, and each ...


60

Today, most database management systems (e.g. PostGreSQL, MongoDB, etc...) internally keep their data inside OS files (in the past, some DBMSs used raw disk partitions directly). On recent computers still using spinning hard disks, the disk is so slow - relative to the CPU or the RAM - that adding a few software layers is not relevant. SSD technology might ...


53

No The attack, as originally described, was never a threat. While a compiler could theoretically do this, actually pulling off the attack would require programming the compiler to Recognize when the source code being compiled is of a compiler, and Figure out how to modify arbitrary source code to insert the hack into it. This entails figuring out how the ...


41

This is coming from a developer who has worked in both the .NET and Java frameworks. The ones who are getting upset and mad about this situation are either shortsighted, lazy, or just stupid. Before I get downvoted hear me out, it is not because I feel Java is a superior platform to .NET, actually its quite the opposite. The C# language is MUCH better and ...


41

Because they don't need to. Linux distributions usually have working package management systems, unlike Windows, where every single application has to re-implement installation and updating over and over and over and over again.


39

Here is my personal experience with IDEs. I installed all IDEs I could find, and played with them all (that is what I would advise you to do) : kdevelop I personally use it. The version I have installed crashes, but I downloaded the latest version from their site, and it works good. It is simple to configure and great to use. They support custom build ...


35

£100/month? How much do you cost? How much is going to cost your training? If it's £100/month but you can get a .NET app up in a month, while you will need at least 3 to 6 months to get your node.js/C++ app running, go for the .NET. Seriously. Your time is way more expensive than these little £100/month. Ideally, yes, you're right in your analysis. What ...


29

A "Unix like" system may be fully compliant with the Single UNIX Specification, the collective name of standards for what qualifies as a Unix system, but at the same time Unix is a registered trademark of The Open Group and vendors of Unix like systems need to get their systems registered to officially qualify as Unix. Currently the registered UNIX 03 ...


28

Platform independence in software means that you can run the same code with little or no modification on multiple platforms. The devil is in the details: It depends on what you define as "the platform". In some cases this may be a specific hardware / machine configuration. In other gases in may be a "generic PC". In other cases it may be a virtual machine ...


28

A software is real time not when it is as fast as possible, but when it is guaranteed that a process completes within some determined time slot. In a soft real time system, it is good but not absolutely necessary that this is guaranteed. E.g. in a game, the calculations necessary for a frame should complete within the period of a frame, or the framerate will ...


27

Some pointers: Filesystem case sensitivity If your file is called HelloWorld.php this: include "helloworld.php"; is legit on Windows and will work. But Linux filenames are case sensitive, you can have files called HelloWorld.php, helloworld.php, hEllOwOrlD.php in the same directory. So you should develop on Windows as if you were developing on a case ...


25

First, my favorite writeup of this hack is called Strange Loops. This particular hack could certainly (*) be done today in any of the major open source OS projects, particularly Linux, *BSD, and the like. I would expect it would work almost identically. For example, you download a copy of FreeBSD that has an exploited compiler to modify openssh. From then ...


24

I've done a fair amount of work supporting HFT groups in IB and Hedge Fund settings. I'm going to answer from the sysadmin view, but some of this is applicable to programming in such environments as well. There are a couple of things an employer is usually looking for when they refer to "Low Latency" support. Some of these are "raw speed" questions (do ...


23

Although this is opinion-based, I think it's just another historical artifact. Early OSes used a simple file system design for performance that was reasonably strongly tied to the characteristics of the hardware available at the time, and it's been the same way ever since. It's difficult to change the old file read/write APIs for more transactional query/...


22

Interestingly enough I periodically have the same problem in the opposite direction. I'm primarily a UNIX coder, but I periodically have to port stuff to Windows. I can't tell you the number of times I've wanted to pull my hair out because I can't find the appropriate check box for a compiler option buried in one of 35 preference setting pages for a project. ...


22

There are two different memory limits. The virtual memory limit and the physical memory limit. Virtual Memory The virtual memory is limited by size and layout of address space available. Usually at the very beginning is the executable code and static data and past that grows the heap, while at the end is area reserved by kernel, before it the shared ...


22

Most closed-source, non free-as-in-beer software for Linux does come with installation wizards. So does some closed-source, free-as-in-beer software, at least until most major distributions pick it up. For open source software, package managers are a clearly superior solution. So what about the early stages before open source software gets picked up by ...


19

File pointers are not the only way to access files on POSIX systems (which, obviously Linux is). As a matter of fact, the FILE struct exists to make it easier to work with files in a cross-platform manner (fopen() will work on both Linux, Mac OS X, any BSD and Windows) and to provide some facilities like transparent buffering (buffered I/O is way faster). ...


17

Mac OS X can only contractually be run on Apple Hardware. iOS requires the Cocoa framework and to have access to a Mac to sign the keychain. While you can use Objective-C on Linux using the OpenStep libraries, you can't push the applications you develop to iOS due to the lack of the correct Cocoa API libraries and while you can push to a jailbroken device ...


17

There's no particular technical reason, but the developer tools Apple provides only run on Macs, and I don't see them being in any hurry to change that. With regards to third party developer tools, Apple very publicly dislikes them, and given Apple's absolute veto power over what gets in the App Store, it's not a great idea to invest any significant ...


17

Git was not designed as much as evolved. Take a look by yourself. Clone the official git repository, open it in gitk (or your favorite graphical git log viewer), and look at its earliest revisions. You will see it originally had only the very core functionality (the object database and the index). Everything else was done by hand. However, this small core ...


16

Firstly, Linux as the new platform is not that big of a problem. Java is based on the JVM which does a pretty good job on hiding the system and the hardware. If you need to dig into the OS, than neither Java nor C# are the language of choice in my opinion. It's much like developing PHP. You can do it with a webserver on both Linux and Windows, and in almost ...


16

Basically, Apple's policy is that in order to develop for iOS, you need a Mac. They have all sorts of reasons for doing it that way: increased sales on the desktop market (which isn't exactly Apple's cash cow), controlling the development platform, better brand exposure, you name it. Now, there may be tools to develop iOS apps without a Mac, but these will ...


15

Does this affect all languages? This attack primarily affects languages that are self-hosting. That is languages where the compiler is written in the language itself. C, Squeak Smalltalk, and the PyPy Python interpreter would be affected by this. Perl, JavaScript, and the CPython Python interpreter would not. How does this relate to just-in-time ...


15

bash has been around since 1989, and its syntax is largely compatible with that of the much older Bourne shell, which was released in 1977. Huge swaths of core functionality in many operating systems (most Linux distros, OS X, and indeed most POSIX-compatible operating systems), and many real-world systems (make systems, automated tests, initialization ...


14

99.5% of what's in a Linux distribution is aggregation of existing packages. Unless you have some ideas for a new way to do installations or package management or intend to rewrite everything from awk to zcat from scratch, there really isn't a lot of programming involved.


Only top voted, non community-wiki answers of a minimum length are eligible