Postcards From Linux Part 1: Welcome to Linux

 By Shamus Dec 19, 2012 71 comments


So I’m using Linux Mint now. I’ve been installing Linux now and again over the years. It’s always interesting, but eventually I end up back on Windows after running into a problem with an unreasonably difficult solution, or discovering some bit of needed software just isn’t available. Each time I try Linux, I make it a little farther before I hit the point of “it would be easier to return to Windows than to put up with this.”

I haven’t gone back to Windows 7 because in order to properly install Win 7 this time I really ought to go in, back up EVERYTHING, and re-partition my hard drive so it makes some kind of logical sense. I’m not eager to do that, which is why we’re having this Linux Adventure of Discovery and Bafflement! and not just sucking it up and installing Windows.

We’re on day five of the experiment now. Here are a bunch of random observations about the experience so far:



I have reached a point in my life where using a computer that can’t run Minecraft is simply not an option. I’ve disqualified Minecraft from all future GOTY awards, because otherwise it would just keep winning. Forever. It’s more than just a game, it’s part of how I relax and think. If I get stuck on a bit of code or want to listen to an audiobook, I do it while Minecraft-ing.

I’m happy to say that Minecraft worked more or less flawlessly for me, right from the start. In fact, the Technic pack also worked flawlessly, which is good since that’s my double-favorite collection of Minecraft mods.



I used FileZilla on Windows for all my my FTP needs, which includes uploading every single image you’ve ever seen on this site. FileZilla is available on Linux, and looks and operates just as before. Nice, sensible, stable, lovely software.



Long-term, this is probably a deal-breaker. Linux support for games has been improving by leaps and bounds, and Steam for Linux is looking very promising. But we’re not quite there yet. I managed to get into the Steam on Linux beta, and under Linux my games library drops from 174 games to 16. That’s not Steam’s fault. That’s just the simple, understandable fact that less than ten percent of all developers bother making a Linux port. I was actually surprised to find the number was that high. (Most of my Linux games are indies. I’m sure the ratio would be even more depressing if I stuck to AAA games.)

I’ve installed WINE, but I haven’t actually used it yet.

Some interesting notes on performance:

In using the Technic pack in Minecraft, my framerate seems slightly lower than it was on Windows. Under windows, I could use the (Technic) mod to increase the view distance above the normal Minecraft maximum and still enjoy a smooth experience. Under Linux, I have to lower the view distance down to Minecraft standard, and even then I get occasional hitches if I turn around quickly.


The Technic pack also has a mod where sleeping in a bed will drop the game into a high-speed simulation mode. (This is so that crops can grow and furnaces can cook while you sleep.) In Windows, the game usually ran at ~7x speed while sleeping, so that one minute of sleep was the equivalent of simply standing beside the bed for seven minutes. Under Linux, the sim runs at ~11x speed.

Note that the first issue (visibility and framerate) is related more to graphics card and memory, while this latter issue (simulation speed) is mostly CPU bound.

I can’t really draw any firm conclusions about this. The framerate problems could be an issue with the Java environment on Linux, or a problem with graphics driver throughput, or a problem with something the OS itself is doing. It’s impossible for me to say. Still, I find the discrepancy interesting.



This is the big one. I’ve used Developer Studio for years. I love it. I don’t often love software, particularly from Microsoft, but if there’s a better development environment then I have yet to see it. Even the Hippie Freeloader Edition is excellent.

More to the point, when my computer died I was in the middle of working on some very Windows-centric code. I’ve been trying to make portable code (or at least theoretically portable code) over the last couple of years, and leaning away from Microsoft-specific interfaces. But for this project I had thrown away this forward-thinking attitude and just embraced the Microsoft Windows API with reckless sloth.

See, when you want to write some code to make a window, you want to use some pre-made code. API stands for Application programming interface, which is the system you use to talk to code that someone else has written. Assuming you don’t want to re-invent the wheel and make your own code to draw Windows with beveled edges, track low-level data coming from input devices, and re-implement all the logic behind minimizing, maximizing, resizing, closing, overlapping, clicking, dragging, copying, pasting, highlighting, focusing, and disabling windows, then you want to use some existing code.

The problem is that for Linux, Apple, and Microsoft, the code to do this is completely different. Not just different in the way that the code is written, but different in the way that the code is used. When the user clicks maximize, one GUI sends your application a Maximize message. Another one sends a resize message with a footnote that “this resize happened as a result of the user maximizing the window”. Perhaps the other one sends the application a notification that the window position has changed, and the program has to ask for more details if it wants to know the particulars.

The upshot is that a programmer who wants to port a project from one operating system to another can’t just do Find & Replace on their code to replace CreateMicrosoftWindow () with CreateLinuxWindow () and call it a day. The programmer is going to need to re-write huge sections of the program. The more Windows code you use, the more re-writing you need to do and the more complex porting it will be. At some point the changes are so extensive that you’re basically starting over.

In this project, I had used a LOT of VERY specific windows code. For the record, I’ve been working on the software that I used to make my Drawn To Knowledge videos. The interface is very complicated. (I’d show you a screenshot, but I can’t run it right now, because I’m on Linux.) There are many edit boxes, sliders, buttons, drop-down boxes, color pickers, and all kinds of other fussy little controls.

Now I’m on Linux and cut off from my Microsoft development tools. I have a few options:

  1. I could port to Linux. It might be good to learn how coding works here in Linux land. Porting my project would take a long time, and if I ever decided to move back to Windows then I’d have to port it again. This would be good for educational purposes, but not good for the project itself.
  2. I could port to Qt. This is exactly the sort of situation Qt was made for: A platform-independent, interface-heavy application. On the other hand, I am not a fan of the Qt development environment. When I ported Project Octant from Qt to Visual Studio, it was like being given a hammer after spending all day pounding nails with a brick. You can grow accustomed to a clunky interface, but that’s not the same thing as having a good interface to begin with.

    I could use Qt and it would be The Right Thing To Do for the purposes of portability. (My speed problems with Qt wouldn’t really be an issue. I wouldn’t be rendering interface elements into a 3D window, and speed is not as critical on this project.) But I really dislike the Qt environment and what it does to my workflow. Bleh. But maybe.

  3. I could look for some other third-party solution. In the past, my search for interface code has been focused on looking for things that will render interface stuff into a 3D window. Here, I just need generic window controls. Something like wxWidgets could get the job done. I’d still need to pick a development environment for Linux. But in theory once I was done with this port I ought to be able to go back to Windows if I wanted.

I dunno. It’s a big decision and I don’t really know enough to make it yet.

2020201171 comments. (Seventy-one is the largest supersingular prime!)

  1. Wedge says:

    I’ve use wxWidgets, in the form of wxPython, for developing a couple of projects and I loved it. Of course, the “Python” part helps with portability, but I had very few issues knocking the code back and forth between Linux, Windows and OSX.

    For an IDE, you might check out Eclipse, if you haven’t already. It’s natively for Java, but it has plugins for pretty much every language under the sun–I’ve used it for C/C++ before and it works well.

    • LegendaryTeeth says:

      Seconded for Eclipse. You can use it to write Qt stuff if you like, too.

    • Nyctef says:

      I’ve tried Qt, hated it, poked around a bit with wxWidgets, which seems fine, but I’d have to put in a vote for GTK which I haven’t had any major problems with and seems to be pretty sensible.

      • Bryan says:

        GTK plus PyGTK plus glade.

        Generate an xml file from glade with a description of the UI, then load it up into your python program via PyGTK (a python-class set of wrappers around the lower-level — SWIGged, I believe — GTK libraries), and go nuts.

        Of course, if you’ve never done python before, this is probably not the right solution. But for me, it works *wonders*. It’s natively cross-platform (there are windows versions of all of python, gtk, and pygtk — though I should note that your program will have dependencies if you do this), and the versions of glade that I’ve used (2 and 3, IIRC) have all been great at designing the interfaces, once I figured out how GTK does control layout.

        (You don’t align controls to pixels like I’ve always had to do in every version of Visual Studio up until 2005 or so. You tie them to edges, so that window resizing will automatically resize the various controls. Ones that prefer fixed sizes will resize after ones that don’t by default (so something like a GtkNotebook or whatever control it is that displays rich text will take up all the space by default), but you can set explicit properties on the controls to modify this (“expand” versus … uh, crap, can’t remember the other one offhand) if you need to.

        Anyway, maybe not useful for Shamus (especially since it’d involve porting everything to python, unless he wants to start using python anyway… :-) ), but still, this gets my vote for $random_gui_program that people need to write.

    • Phill says:

      I’ve recently tried using Eclipse for java android development after years of C++ in Visual Studio, and have found it pretty easy to get on with. It doesn’t have all the features of VS of course, but it has enough of the common ones that I can write and debug code in Eclipse without it feeling too weird – from a user perspective (and for writing relatively simple, few person projects at least) it feels quite similar to VS.

      One other suggestion for Shamus – I’ve not tried it myself, but Winelib ( might be worth a try – essentially it is a library that implement win32 API calls on linux (and is basically what WINE uses to emulate being a windows OS).

      Obviously it won’t be as fast as writing native Linux code, but if the performance is good enough in practice for what you want to do it ought to be one of the easier solutions to try.

    • Volfram says:

      I used Eclipse at work for 3 years. Not bad(quite good, actually) but my favored IDE at home is called Code::Blocks, and it is indeedy available for Linux.

      As a small bonus, it has support for that D programming language I keep trying to convince you to check out. ;p

      • evilmrhenry says:

        Agree on Code::Blocks. I’d recommend it for c++ stuff.

      • Agreed with Code::Blocks as a reasonable cross-platform IDE for C/C++ work with enough plugins to give you most of the added features you may miss/need. Eclipse is the big name for non-MS IDEs (outside of the Linux crowd who augment a command line text editor and call it the only true way to code) and it does a reasonable job of everything except the updating process (although coming back to it after a year of not having to use Eclipse it seemed better now, maybe because I’m only using a stripped down selecting of modules right now compared to when I was previously running Eclipse daily) and supports all the languages you are likely to use but I’ve often felt it is close enough to the feel of VS to make you miss the real thing.

        If you’re looking for another suggestion then KDevelop is rather nice (even if it is built for KDE stuff, it only adds a few lib packages to get it running on Gnome and makes for a fine general purpose C++ IDE with all the expected code completion and navigation features) but I haven’t seem how the debugger side of it works yet.

  2. Anorak says:

    Wow, I’m really excited to read these posts! Can you post your machine specs? I’m curious about the lower fps / higher cpu efficiency you’re seeing in Java.

    I’m really very excited about Steam coming to linux, and the fact that an “aaa” game (Serious Sam 3) came in so quickly is very encouraging.

    With wine though, I’ve never really been a fan. Sure, some things work great, especially older games, but new stuff is often a giant pile of “almost works” and “apply these 400 tweaks” for it to be worth while. For normal programs it’s often fine, but games have never been great for me.

    The problem, I suppose is that old chestnut about there being an mindbogglingly large number of hardware combinations, and in the open source world nearly everyone will have slightly different versions of libraries installed, depending on your distro and what other software you might have installed.

    For development, I like to use Netbeans, because it supports GCC as a compiler, and linking is nice and easy. I’m also used to the interface because I use it for Java in Windows.

    I usually try to write cross-platform code in the first place, so I try to stick with using SDL for window management.

    Is the drawn to knowledge software using any external libraries? How does it handle font loading, image loading, and so on?

    EDIT: Also – as a fun project, does Drawn To Knowledge run in WINE? Now that I’d be really interested to know.

    • Deadfast says:

      I second trying Drawn-To-Knowledge-O-Matic in WINE. There is a very good chance it will work with no problems.

    • Shamus says:

      Just for brevity: Draw To Knowledge is actually called “Chalkboard”.

      Chalkboard doesn’t need fonts, so that’s not a problem. It uses DevIL for image loading. OpenGL for rendering. OpenAL for audio.

      Does NOT run under WINE. I tried while writing this post. Nothing happens, which means anything might be wrong. Chalkboard doesn’t have a ton of specific error-checking / reporting, so if it’s failing on something fundamental at startup (OpenGL, file access, window creation) it’s impossible to tell where or what. This hasn’t been a problem until now because I just used the debugger for that sort of thing.

      • Anorak says:

        Heh. My 3d vision project was called Chalkboard. /unrelated.

        I suppose that’s the danger of developing your own program: you use it until it breaks, then debug it. There’s no sort of QA cycle where a team of people systematically try and break it, and you’re less likely to build in logging or error handling.

        I also suppose that getting it working in wine is going to be hard when you can’t develop in windows to add error handling and logging.

        It’s why I dread handing off any program I build to my friends to play with – it will invariably just choke and die on something I never even thought about, and of course there’s nothing to tell me (or them) what the problem is.

      • Deadfast says:

        Have you tried running it in a terminal?
        wine chalkboard.exe

        If it’s a WINE problem it should give you some message. Might be you’re just lacking some libraries, I think OpenAL isn’t included by default for instance.

    • TMTVL says:

      Add a vote for Netbeans here. I’ve found it even more user-friendly than VS (then again, it might be because I use Netbeans for Java and VS for C#, but whatever).

      • Kerin says:

        At risk of making the Linux scene look even more schizophrenic than it already does, I can’t stand Eclipse or Netbeans because they’re clunky, unintuitive, and run so slowly as to drive a man mad. To be clear, when I say “run so slowly” I mean everything – typing is unresponsive in larger classes, menus take a disturbing amount of time to render, clicks don’t register immediately.

        And no, my machine isn’t slow – eight cores, 4ghz a pop. 16GB of RAM, too. Absolutely no excuse for an IDE to run that poorly.

        • somebodys_kid says:

          I’m not a fan of eclipse either. Could never get into a good flow with it. Maybe it was all of the useless plug-ins I had installed.

          • harborpirate says:

            Eclipse probably does feel clunky and overbearing for those that have been developing in Linux from the start.

            If you’re making the transition from Visual Studio, though, using Eclipse will be like falling out of bed. Almost all the stuff you expect will be there, intellisense, syntax highlighting, compiling code out of the box, some debugging, plugins, etc. Its not as mature a tool as VS is, but its a pretty fair imitation.

            Intellisense, in particular, has become almost a deal breaker for me. I can work without it, but looking up classes/method calls/events the old way feels like real drudgery. Intellisense+autocomplete has made me probably several times as productive.

            • Deadfast says:

              Hm, that’s interesting. I, for one, cannot stand IntelliSense for C++. I tried a trial of Visual Assist and that was way better. I felt like I had control of the IDE again. Unfortunately it’s rather expensive for a student like me.

        • Neko says:

          Agreed, while I don’t think diversity is a problem for the linuxes, I never could enjoy Eclipse. The interface is just so noisy. If I do use an IDE, I use Qt Creator, but most of the time I find nothing wrong with a good text editor and g++, perl, or javac.

          Haven’t given KDevelop a try yet, should do so one day.

  3. Anorak says:

    Also – as a fun project, does Drawn To Knowledge run in WINE? Now that I’d be really interested to know.

  4. Mike C says:

    You may want to look at Eclipse or MonoDevelop for an IDE, although there isn’t really any IDE that competes with Visual Studio. There’s also the Mono project if you’d like a common cross-platform framework (as an alternative to the .Net framework).

  5. Ed Lu says:

    Maybe I’m a young hipster programmer, but I learned how to use vim, gcc and Make this summer and I absolutely love it. I’m pretty much doing all my development on Linux now, and have Windows installed only for games.

    That being said, I haven’t tried to manage even a moderately-sized project yet (University is draining all the creativity out of me, plz halp) so I don’t know how bad that is without tools to help you visualize things.

    • Cerberus Public Relations says:

      That’s how I did a lot of my programming in school, too. But when you start working at any large software company, in most cases, you’re going to be designing and programming things that need to integrate with a lot of other people’s code. These other developers have all been taught from different books, so to speak, so a lot of your time is going to be spent digging into other people’s source code to figure how and why they did something a particular way, and that’s a task for which you really need a good IDE.

      • Tetracyclic says:

        If you have the familiarity with it, you can use the command line as your IDE, and as many large open source projects show, the vim/emacs, gcc, Make toolchain is very powerful with some configuration.

        A vim set up similar to the one mentioned in <a href=""Vim as your IDE is very powerful when combined with standalone command line tools.

        But of course it does require being reasonably confident with the command line and vim for fluidity and certainly has more of a learning curve than a GUI, so it’s not for everyone.

        With that said, even with very large projects it is an incredibly flexible set up for a wide variety of languages and shouldn’t be discounted. It takes surprisingly little time to get running with it, as long as you are happy to immerse yourself in it and lose some productivity for a short while.

        • Phill says:

          Thing is, once you’ve got used to a fully featured IDE with a good debugger, you get used to being able to recompile bits of code whilst in the middle of execution to test stuff, change variables (and vewi them in a nice class heirarchy tree for that matter), examine (and change) arbitrary areas of memory, or when stepping through code line by line, take the exeuction back to an earlier point in the function to go through it again to spot something you missed…

          Basically there is a vast wealth of coding and debugging tools available in an IDE that can’t be replicated in a vim (or emacs) plus make plus gcc environment. Sure, you can do just fine without them – I did for many years – but once you’ve got used to just what you can do with a complete IDE, you’ll find that there are a whole lot of new features that you *do* use, that greatly improve your productivity, and if you have to do without them you suddenly notice how slow and painful everything is.

          (Disclaimer – it is some years since I worked with the whole emacs/gcc thing, so I don’t know it if has improved dramatically in the last few years).

          • Tetracyclic says:

            I’ve used a lot of IDEs and I’m a very big fan of Visual Studio for Windows development, but I’ve yet to come across anything that I really miss from a full-blown IDE that wasn’t available from the command line. I should point out that I’m including tools like gdb in this stack (there are even plugins that integrate gdb directly into vim, like vimGdb and clewn.) The only thing I really miss is the near-prescience of IntelliSense.

  6. Deadfast says:

    Since you’re going to be doing program on Linux I cannot recommend enough you have a look at valgrind.

    As for an IDE, I’ll repeat what others have suggested – Eclipse. The C++ version is called Eclipse CDT, although which version you pick just governs which features are in by default with the rest being available to install as plugins at any time.
    There is also KDevelop which is pretty nice. Trouble is it will require you to install quite a few KDE libraries.
    Both have valgrind plugins available if you feel uncomfortable using it from within the terminal.

  7. Abnaxis says:

    Whenever I use Linux, I always, always, always have performance problems with video cards. I think it’s largely because developers and video cards come up with little custom optimizations in the windows environment that don’t port well, though admittedly I’m still having problems with an Intel chip, whose driver is developed open source…

    Most of the problem is that I want to go whole-hog FOSS, with as little proprietary software as is feasible, using Fedora. I bet I would have less trouble with Mint, bu where’s the fun in that?

    • Anorak says:

      Nah, it’s more because until recently, the major video card makers couldn’t give a badgers’ about Linux drivers. And the Open source drivers are reverse engineered. Once NVIDIA and Intel started working with Valve, things got a lot better very quickly, but not for the whole range of cards.

      • Abnaxis says:

        And the Open source drivers are reverse engineered.

        I…don’t think so? Intel actually shares the source code of their drivers and makes development versions of them freely available on public repositories. That’s the definition of an open source driver, is it not?

  8. Port it to GTK. You’re using Cinnamon, for which the GTK widgetkit is the native look anyways, and GTK looks passable enough on windows platforms, too. The interface is described via xml, so you can even reasonably edit it with notepad et al.

    Also, it has got bindings for pretty much any language I know of, so with the know-how gotten from this, you could jump into R, Python, Haskell or what have you whenever you want. QT is C(++ ?)-only, afair, so there’s that.

    P.S.: Welcome to the fold. :)

  9. Thomas says:

    You’re actually pretty stunning lucky with your game selection (or rather you buy good games from caring community interacting developers who are more likely to port to Linux).

    There are, I believe, 36 games on the entirety of Steam that run on Linux and you manage to have 16 of them!

    • Ed Lu says:

      If you got the Humble Bundles, I think a lot of those games can be played on Linux (excepting the most recent THQ one, although apparently they are looking at porting).

      This reminds me Shamus; if you haven’t, you have got to play Spacechem. After discovering it was in the list of my Linux games and that the Steamcloud saves couldn’t be loaded, I spent four or five hours straight, playing through it and finally solving that dang puzzle on the fourth world I couldn’t figure out the first time.

      I think you’d enjoy it; at it’s base, it’s a game about parallel computation.

      EDIT: I just looked it up and apparently someone made a brainfsck interpreter in its sandbox mode. Does that mean it’s Turing Complete?

    • Shamus says:

      Wow. Total accident. I have nearly half of all Steam Linux games, without trying. Amazing.

  10. MNF says:

    I have the dubious pleasure of having to use Eclipse for work, and switching to it from a good IDE (IntelliJ IDEA/Visual Studio 2010 + ReSharper) has nearly driven me to the brink of madness.

    Eclipse is one of the most bloated, unresponsive programs I’ve used – with a slew of consistently poor UI choices nested on top. Given that it was originally an IBM project, this is not the least bit surprising.

    I wish I could offer an alternative, though. I know some people at work using IntelliJ IDEA as a C++ IDE, but that’s a halfway solution, at best.

    • Zak McKracken says:

      I think this impression is depending heavily on what you’ve been doing before and what you’re trying to accomplish.

      Me, I’m usully just coding small python projects, and for me, Eclipse looked really roundabout. Never had any performance issues, but compared to using either nedit (which gives my syntx highlighting and nothing else) or one of the lighter Python-specific IDEs (like Komodo or Spyder) it’s just very very roundabout.

      Not so for other colleagues who code and collaborate much larger C++ projects. In my workplace, eclipse has become the standard IDE, not because the boss decided but because the programmers insisted. There are still some who prefer either emacs or nedit (or vi for the hardcore types), and that’s fine, but within the “proper IDE” users, everyone seemed to like it or at least get along well.
      That said, we’re not coding UIs…

      So, my guess is that it’s good if you are both working on something a bit larger than a few pages of code and have become accustomed to how it works.
      Maybe there are also some configuration matters, to make it work as you prefer it to. There’s really a lot of options, and I bet there are lots of diverging ideas about how an IDE _should_ behave within the programming community.

  11. fenix says:

    Remember that with Steam on Linux, most of the humble bundle games haven’t been made available on it yet since it’s still in beta. Also Valve has stated that they plan to port their entire library to Linux as well.

    Another interesting note is that Gabe Newell has pretty much confirmed that Valve will be making a Steambox console which will use Big Picture mode on top of Linux and will likely use general purpose hardware. That would mean the games built for that platform would likely work on a normal linux install meaning a lot more upcoming games on the platform including AAA titles.

    On top of that, Wine keeps getting better and better.

    So games might not be as much of a dealbreaker in not too long.

  12. kddekadenz says:

    I like Linux a lot. I switched after having problems with Windows, too.
    I use Linux Mint, too.

    I even do develop a RPG using Linux, you may want to check it out:
    It has natives for Linux and Windows. I will release the code under a open source license, once I found the motivation to organize it :P

  13. Mad says:

    I agree, VC++ rules them all. The next best thing I know is Qt Creator. It works really well with CMake too so you can use the creator on Linux / Mac and just create VC projects on windows.

  14. Licaon_Kter says:

    Still using an AMD video card? That would be the reason for the slowdowns, nVidia’s Linux support is mostly on par with the Windows one, and they keep it up to date.

    The number of Linux games on Steam is a function of: beta nature of Steam, the number of games available on Steam, games that have a Linux version to begin with, have that version approved by Valve for service and of these you only see the ones you bought anyway. I have 16 Linux games on my Steam account too yet you have 8 that I don’t have.

    AAAs might be here in time:

    Also Kickstarter became a platform for gamers voices and part of those voices requested and finally received a Linux version.

  15. Alex Broadhead says:

    Howdy Shamus,

    I suspect it’s not available to you, but Xcode is actually a good, free IDE…for the Mac. I like it better than Visual Studio.

    I think I’ve recommended JUCE before as a cross-platform GUI toolkit; it might be worth at least a look. It supports Windows, Mac, Linux and, supposedly, iOS and Android?!? (I’ve only used it for Windows/Mac work.)


  16. The Unforgiven says:

    How is not being able to just go ‘Find & Replace’ an upshot? That seems like something that would make life 1000 times easier for programmers everywhere.

    • Shamus says:

      When you say “the upshot is…” you’re saying, “the point of all this rambling is…”. Upshot is not good or bad, but merely the wrapping-up of a previous thought.

    • anaphysik says:

      upshot =/= upside

      However, I’ll note that the only reason that I’m used to ‘upshot’ is the fact that Shamus uses is SO often. Otherwise, I’d be as confused as you, even with me being a native English speaker.

      The upshot of that: Shamus is an old man who uses old man words.

  17. Ancorehraq sis says:

    But Shamus, why are you using FTP in this day and age? Almost all network protocols from the 80s share the same undesirable properties:

    1) A vast history of remote shell vulnerabilities in server software
    2) Insane network latency properties
    3) Credentials sent in the clear, and of course
    4) UIs so crusty that any GUI wrapper becomes instantly infected.

    I fully admit the security objections are religious (I refuse to use any clear-text protocol unless unavoidable).

    Why not give rsync a try? The magic sequence is “rsync -avzP source/ host:destination/” (mind your slashes) and it’s simple enough to just use from the command line.

    • Nick says:

      Because FTP is simple and it works for when you just want to dump some files onto a server, and filezilla lets you do that with a few clicks, without having to bother opening a terminal and specifying commands.

      Unless you’re running business applications, most people don’t care too much about security of the data transfer. They want something they can click easily. Now, if Shamus was uploading a business critical patch of a server bit of software, then I’d agree with you. Just seems OTT to me to worry that much about security there.

    • The Gecko says:

      1) We had a remote root vuln in SSH just last year. Nothing is exempt – although yeah, you probably see it more in FTP because there’s a ton of different implementations of varying quality in use, whereas SSH tends to almost always be OpenSSH, which is very mature.

      2) Latency != throughput.

      3) FTP-SSL. I likewise don’t let people upload to my FTP server unless they’re using encrypted ftp. Client doesn’t support it? Get another client. Some older profs insist on using telnet. I wish them the best of luck encrypting their session and entering the ciphertext by hand.

      4) Drag-and-drop is still helpful for people who don’t use the command line all day. This is just how some people grok computers. People in their twenties have very plausibly probably never seen a command line (their loss.)

      Of course, I don’t actually use FTP much myself anyway – like yourself, I stick to rsync. That said, yeah, a bunch of old 80′s protocols weren’t really designed for the internet we live in now. Just look at email and all the problems that come along with it. The functionality is great, don’t get me wrong, but it just wasn’t designed for the hostile networks we find ourselves on these days, and so we have pretty fundamental problems with spam, impersonation, etc. that aren’t going to easily go away.

  18. lethal_guitar says:

    Hmm, I have worked a lot with Visual Studio, and yes, it works. But.. I keep hearing a lot of praise along the lines of it being the greatest IDE of all. And seriously, I’m not too sure about that.

    Why? Well:
    - The only way to get Refactoring Tools for C++ development is a commercial 3rd-party Plugin.
    - Managing dependencies is still utterly painful unless you use CMake or something (which by itself works much much better in a Linux environment).
    - Autocompletion works most of the time – since VS 2010. In 2008, it was a joke.
    - etc..

    Then we have a “new class”-wizard – which is very limited and generates code which doesn’t fit my coding style. Now, if you want to customize this wizard’s output, you have to hack away at an obscure JavaScript program hidden deeply in your VS installation – I’m not kidding. There is support for easily adjustable templates, but only for C# etc. – not for C++.

    Sure, some of this can be attributed to C/C++ being like it is – and yes, a lot of things work well in VS, and some things are way better than in Eclipse. But for me, it’s far from being “the best” or “perfect”. Very far.

  19. MALfunction84 says:

    Hey, sweet. My Minecraft mod was mentioned (not by name) on this blog.

    Shamus, when you mentioned the Technic pack recently, I immediately wondered what your thoughts were on Somnia. I hope it’s not too off-topic, but this seemed like the best opportunity for me to ask.

    • Shamus says:

      The truth? I’ve been using it for so long that I forget its not part of the base game. I’ll run vanilla Minecraft once in a while, click on a bed, and then get confused when I pop back out a second later.

      Your mod really does just feel more correct. Also, it makes you think about defenses. If you go to sleep at sundown in regular Minecraft, then no monsters will spawn and the world will be safe when you emerge in the morning, EVEN IF YOU LEAVE YOUR FRONT DOOR OPEN.

      Your mod forces the player to construct real defenses and pay attention to lighting. Much better.

      • MALfunction84 says:

        Wow, mission accomplished. Everything you mentioned was on my list of design goals (plus the time-saving simulation, of course). I never imagined that it would be used as a benchmark, though.

        Thanks for the feedback!

  20. Neko says:

    I wonder, were you using 32-bit Java on Windows and 64-bit everything on Mint? Might explain the Minecraft differences, maybe. It’d use more RAM, which might contribute to slowdowns when the view distance is large (although TBH it’s quite likely to be the fault of graphics drivers), but it might help speed up the CPU-bound stuff.

    The Steam Linux Beta just announced it’s now an Open Beta as I was writing this comment. I feel less special now, but at least those who didn’t get in before can try it out now. I’m not so concerned about the scarcity of games, for me the killer app is being able to see my Friends List even with my desktop machine off.

  21. The Snide Sniper says:

    If you like the Visual Studio-style interface but need to use it with Linux, consider Code::Blocks. It’s free, open-source, cross-platform (in case you want to keep it when you go back to Windows) and rather similar in interface.

    Sorry about sounding like a salesman there. I can’t think of a better way to say it.

    Best of luck in your endeavors.

  22. Winter says:

    My suspicion is your Linux video drivers are worse than Windows video drivers. This is likely true for a couple reasons and it will result in reduced video performance. Linux’s advantage in running the simulation is likewise unsurprising–it’s got IBM and other “big iron” types pushing code into it that makes that stuff as efficient as possible.

    The games are why i keep my Windows partition around. If Steam Linux works and i can get enough good games in there probably my Windows partition will be given the boot.

    UIs… well… UIs are a damn disaster regardless. I know you’re probably expecting this comment, but since you have used Visual Studio so much you’ve probably grown accustomed to it quite intimately… not so much the alternatives. I don’t know what to recommend that will make things run better, though. Could always poke some Virtual Machine options, though!

  23. Sam says:

    Shamus-If you need to run Windows apps, you might want to check out ReactOS, it runs Wine at more low level code for performance and compatibility

    • neothoron says:

      I have the feeling that ReactOS is a project that made sense 10 years ago (heck, release 0.0.7 is dated from 1998!), and would have been great if it had been anywhere near complete 5, or even 2 years ago.

      I cannot help but wonder if their goals are still worth achieving, in a world where classical Win32 development is becoming less relevant, with even Microsoft promoting a whole new set of APIs for Windows centric development.

  24. neothoron says:

    There are a few programs that help run Windows programs under Linux by using WINE. I can think of PlayOnLinux, mostly focused on games, and CrossOver which is commercial software. (I do not remember the exact relationship of CrossOver with WINE developers, but I believe there is one). Both of these programs follow the same principles:
    * They isolate each program that you want to run with WINE into its own “WINE environment” – that allows using different versions of wine depending on what the program needs exactly;
    * They automate the running/tweaks necessary to run known programs;
    * They both have the drawback that the isolation means that you can’t run the program, or their instance of WINE, from command line easily afterwards;

    I have used naked WINE and CrossOver Games (which at that time was a separate product from regular CrossOver):
    I was able to run World of Warcraft, Starcraft II with regular WINE without too much issue, thanks to Blizzard making games WINE-friendly.
    CrossOver was very useful while it lasted, but I did not renew my subscription because I was playing less and less Windows games.

    In the end, with the Humble Bundles and other indie games (that are apparently all based on SDL libraries and thus run very well on Linux), the smorgasboard of kickstarter game projects that also feature Linux compatibility, Unity3D and Steam, I am convinced that 2013 (or 2014) will be the year of gaming Linux. (slight sarcasm intended)

    As for porting Frontier over to something Linux friendly… You are going to be up against at least API, compiler and OS issues. My experience says that even the API part is hard unless either you know the target API and your program very well, or the program was designed to allow such porting. I would recommend that you keep on with the existing project, because porting is not much fun. My recommendation for the future on Frontier would be that when making / reviewing code next to / a Win32 specific call in Project Frontier, consider using an alternative or wrapping the call somewhere in your own utility class / file.

  25. Blitztiger says:

    I’d think the Mindcraft issue is either poor driver support for your card on Linux, which there’s probably not much you can do about, or an issue of the Java you have installed. By default on Mint OpenJDK is installed, which works great and isn’t an issue… until it is. You can install the official JRE, but I’m not sure of the name of the package, or if it’s even in the repos. If it isn’t you can download it from Oracle’s website, but from what I remember that is a hellish experience that I wouldn’t wish on my worst enemies.

  26. Zak McKracken says:

    Wow, I’m amazed that so many of your games actually do run on Linux.
    I’ve been using Linux for some time, but I never used it for “serious” gaming. I’ve got a humble bundle and like some of the games that came with my suse 11.2, but I’ve always found it best to have Both systems in parallel, with Windows for playing and Linux for the serious work. The advantage is also that you can always use Linux in case of viruses or hard drive failures to fix the windows installation without booting it.

    Actually, I’m a bit troubled about more games running on Linux these days, because thaat is distracting me much more from what I should be doing. And that’s on top of having an internet connection and places like this website …

  27. ArtForz says:

    I’m wondering how you as an author can promote Technic, (in)famous for distributing mods without the mod authors’ permission.
    Especially when there are modpacks like FeedTheBeast with a less… cavalier… attitude towards respecting authors’ wishes and copyright.

    • Shamus says:

      I didn’t know there was any controversy surrounding it. I heard somewhere that Technic was awesome (and it is) and downloaded it from the site. I don’t really read forums.

      • Andrew_C says:

        There was controversy, there was major drama. They didn’t have permission for the mods when it was first released a year or two years ago, they have permission for all the currently included mods. It was an honest but stupid mistake, however.

        Some people can’t forgive and forget and have to bring up ancient history every time that modpack is mentioned. And the rather juvenile fanboys that the modpack attracted as a result of being highlighted by a popular youtube channnel didn’t help.

  28. Steven Wobblewobble says:

    I genuinely hope Valve’s initiative will lead to more game developers targeting Linux. That may well make me to finally take the jump from Windows.

    Right now people associate Linux gaming primarily with indies, but that may as well change if general perception changes. For AAA developers it’s significantly easier to find spare man-hours to do the porting, while for an indie studio this may be more trouble than it’s worth, time-management wise; Michael Goodfellow’s blog is a good example of how making a project cross-platform can be complicated and unfun.

    Of open-source IDEs, I personally had better luck with Netbeans than Eclipse. I tried Emacs and it wasn’t my thing at all.

    Using an interface library like wxWidgets is, IMO, a good idea even when targeting a single platform. Raw APIs are full of weird compatibility quirks, and libraries are often better at presenting a consistent interface.

    Also, many mods in Technic pack are used without authors’ permissions. If such a thing is a big deal for you, consider alternatives.

  29. wererogue says:

    Every time I try to find a decent IDE for Linux I end up giving up and falling back on Vim, make and gdb in a big huff.

Leave a Reply

Comments are moderated and may not be posted immediately. Required fields are marked *


Thanks for joining the discussion. Be nice, don't post angry, and enjoy yourself. This is supposed to be fun.

You can enclose spoilers in <strike> tags like so:
<strike>Darth Vader is Luke's father!</strike>

You can make things italics like this:
Can you imagine having Darth Vader as your <i>father</i>?

You can make things bold like this:
I'm <b>very</b> glad Darth Vader isn't my father.

You can make links like this:
I'm reading about <a href="">Darth Vader</a> on Wikipedia!