Browsed by
Author: matt

VR reveals why nobody should handle a weapon until they have basic training

VR reveals why nobody should handle a weapon until they have basic training

VR has been fascinating for revealing human nature.
In the course of 75 seconds on this video, this guy makes more fatal or near fatal weapons handling mistakes than just about anyone I’ve ever seen. The one at 2:46 is particularly cringe-worthy.
A new sandbox game called ‘Hot Dogs, Horseshoes, and Hand Grenades’ allows anyone to fire all kinds of weapons. What makes this video very relevant is that the mistakes this guy makes are almost all the classic ones that someone with no training does in real life. More than a few people have been killed and maimed by the exact behaviors this guy demonstrates.

Some of the ones you’ll see here are:

  • Unsafe muzzle direction (lack of any muzzle awareness really – countless times. Roof, self, other lanes, etc)
  • Sweeping body/others if they were anywhere around him
  • Accidental discharge
  • Looking down the barrel
  • Finger on the trigger when not intending to fire (see 3rd one)
  • Not knowing how to make the weapon safe – both unloading or checking chambers
  • Not making the weapon safe before putting it down
  • Not knowing how to load the weapon or check if it’s loaded
  • Lack of respect for the weapon

Any one of these would get you kicked off of any weapons range or training course. That’s saying the people around you didn’t tackle you first due to the mortal danger in which you were putting yourself and everyone around you.

12 Companies Hiring now that can let you travel the world

12 Companies Hiring now that can let you travel the world

It’s always a good idea to keep your eye on opportunities being created by our increasingly globalized world.

These 12 well-rated companies are well known for both permanent outpost positions or just making a few annual business trips for those that like to travel and work.

  1. kCura – Develops e-discovery software Relativity for managing large volumes of electronic evidence during litigation or investigations.
    Where Hiring: Chicago, IL; Hong Kong; Kraków, Poland; London, England; Reston, VA
  2. Hubspot – HubSpot is an inbound marketing and sales platform that helps companies attract visitors, convert leads, and close customers.
    Where Hiring: Berlin, Germany; Boston, MA; Dublin, Ireland; Portsmouth, NH; Sydney, Australia; Tokyo, Japan
  3. WeWork – WeWork transforms buildings into beautiful, collaborative workspaces.
    Where Hiring: Austin, TX; Buenos Aires, Argentina; London, England; Mexico City, Mexico; New York, NY; San Francisco, CA; Shanghai, China; Tel Aviv, Israel and many more
  4. ACI Worldwide – ACI Worldwide delivers electronic banking and payment solutions for more than 5000 financial institutions, merchants, billers and processors around the world.
    Where Hiring: Auburn, AL; Bogotá, Colombia; Elkhorn, NE; Limerick, Ireland; Midrand, South Africa; Munich, Germany; Naples, FL; India; Timişoara, Romania; Watford, England and more
  5. GovTech – Transform the delivery of Government digital services by taking an ‘outside-in’ view.
    Where Hiring: Singapore
  6. Gett – [Enables] consumers and businesses to instantly book on-demand transportation, delivery and logistics.
    Where Hiring: London, England; New York, NY; Tel Aviv, Israel
  7. DocuSign – Serving more than 250,000 companies and 100 million users in 188 countries to sign, send and manage documents anytime, anywhere, on any device, with confidence.
    Where Hiring: Bonn, Germany; Dublin, Ireland; Kōbe, Japan; Paris, France; San Francisco, CA; Seattle, WA; Tel Aviv, Israel; Tokyo, Japan; Warrenville, IL and more
  8. Etsy – Marketplace of individual sellers/creators of handmade or vintage items, art, and supplies.
    Where Hiring: Berlin, Germany; Brooklyn, NY; Dublin, Ireland; Hudson, NY; London, England; Paris, France; San Francisco, CA; Toronto, Canada
  9. ThoughtWorks – A global technology consultancy [that helps] you invent what’s next, and bring it to life with technology.
    Where Hiring: Barcelona, Spain; Beijing, China; Belo Horizonte, Brazil; Chicago, IL; Cologne, Germany; Denver, CO; Hyderabad, India; London, England; San Francisco, CA; Singapore and more
  10. Ancestry – Helps everyone, everywhere discover the story of what led to them.
    Where Hiring: Dublin, Ireland; Helena, MT; Lehi, UT; London, England; San Francisco, CA
  11. Tenable – Transform your security program with continuous visibility and critical context, enabling decisive action.
    Where Hiring: Columbia, MD; Dublin, Ireland; New York, NY; San Francisco, CA; Paris, France; Singapore; Stockholm, Sweden; Sydney, Australia; Toronto, Canada; Uxbridge, England and more
  12. Kronos – Offers the industry’s most powerful suite of tools and services to manage and engage your entire workforce.
    Where Hiring: Bracknell, England; Chelmsford, MA; Hong Kong; Lake Mary, FL; Melbourne, Australia; Mexico City, Mexico; Montreal, Canada; Noida, India; Port-au-Prince, Haiti; Zellik, Belgium

 

From the original article on Glassdoor

Tanya’s plan to avoid the fallacies of crunching and bad work habits

Tanya’s plan to avoid the fallacies of crunching and bad work habits

Tanya Short gave one of the best talks I’ve heard in a long time about the fallacies of crunching and bad work habits many people have. The video is now up for free at the GDCVault. Her talk starts at 6:00 :
http://gdcvault.com/play/1024174/Indie

Summary of her points:

When trying to hit deadlines, she starts out by observing that most of the time we think ‘getting X done’ is our highest priority. It’s not. It’s actually #3:

Your real priorities:

  1. Don’t burn out (i.e. don’t die)
  2. Always keep in mind you’re going to do another – and you should be excited to do the next one even better.
  3. Get it done

That sounds great, but it also sounds a bit idealistic. She says it is not easy, but lays out these points.

Step-by-step roadmap to not dying:

  1. Believe it is possible to hold those priorities in that order
    Many great studios work and ship games without crunch. It can be done, she does it. You just have to be disciplined.
  2. Stop working ‘all the time’. Set work hours.
    It is a fallacy to think working all the time is better. Especially in creative fields. Creative work and creative problem solving require a relaxed mind to do it. Time away from work helps us be more productive. So set work hours and stick to them.
  3. Prioritize your tasks and re-prioritize as often as needed.
    In order to hit your deadlines, you need to know what you’re working on RIGHT NOW is important, not just urgent. If you focus just on the ‘urgent’ emails/tasks/etc, then you’ll never get into the steady workflow that is what makes your work great.
  4. Estimate your tasks. Re-estimate when needed.
    When you finish your task, ask if it took the time you thought it would take. You should do that with every task. It helps you get better at estimating.
  5. Cut the scope before you bleed out.
    If you’re 3 weeks out and realize you won’t make it, don’t immediately think about working more/harder/longer. 3 or more 60 hour weeks is scientifically less productive than 3 or more weeks of 40 hour weeks. You are doing worse work. Even if you think you are a special exception. Why can she say that? A study was done on 100 people that claimed they needed less than 7 hours of sleep. Only 5 out of the 100 could actually do it.
  6. Don’t give up – iterate steps 1-5 again and again
    These steps (production) is a skill. Skills can be developed. Skill development requires practice. So congratulate yourself when you do it pretty well, forgive and be kind to yourself when you don’t treat yourself as you deserve.
    We are primates. Primates need to be taken care of in a way computers and games don’t, so don’t act like that towards yourself. It’s not about how many hours you spend because everyone is different.

Other quotables:
A few long nights won’t kill you, but a few long months might. Especially if combined with other health and life factors.

Burnout is the feeling of being dulled as layer after layer of exhaustion accumulates. Burnout is the void left behind where your career could have been.

Then she has a real Benedictine moment: The moment right now will never come again. Every one of us will die. No matter what we create, all we have is right now. Don’t use up that joy, love, and creative energy you have by burning yourself out.

Keep death always before your eyes.
—St. Benedict: The Rules: Chapter 4.47


She doesn’t cite the studies, but I found some:

http://lifehacker.com/working-over-40-hours-a-week-makes-you-less-productive-1725646811

Libyan Desert Glass

Libyan Desert Glass

In the early 1900’s, European explorers were making the first automotive forays into the Saharan desert. Their efforts sparked the imaginations of many explorers – to go further than any known travelers had ever gone before into this harsh terrain in search of fame, lost cities, and mysterious desert riches. The desert environment was brutal to these expeditions and many ended early in disappointment and some to tragedy.

In 1932, in one particularly desolate and inaccessible location, the explorer Patrick Clayton was making the first known forays into the brutal and windswept Saad Plateau south of the Great Sand Sea. As he was driving in one of the most hostile areas of the Sahara, he noticed something that shouldn’t be there. In a several kilometer area, he found chunks of yellow-green glass.

He collected some for the Egyptian Geological Survey. Clayton returned over the next couple years, collecting more samples until 1934 when he marked his last visit by leaving a whiskey bottle with a note inside

 [​IMG]

The Ancient Egyptians apparently found these glass objects as well, using them as decoration. One can even be found in a pendant worn by King Tutankhamun.

[​IMG]

Many scientists today think the glass was a product of a meteor exploding in an aerial burst right before impact to the Earth, causing the surface temperature to reach 1,800 degrees Celsius/3,272 degrees Fahrenheit. Some geologists associate the glass formed from such a large areal burst as analogous to trinitite which was created from sand exposed to the thermal radiation of early nuclear explosion tests. It is estimated to have occurred around 26 million years ago since glass was found knapped and used to make tools during the Pleistocene era.

The image below is of the possible crater from the remaining debris left from the aerial explosion in the area.

[​IMG][​IMG]

References:

Free on your birthday

Free on your birthday

I’ve made other posts that have lists of cool free stuff you can get on your birthday, but this is a link to an updated one for 2017.

http://www.hustlermoneyblog.com/eat-free-on-your-birthday/

Make sure you sign up for this stuff BEFORE the month of your birthday. Many of them send out coupons good for the whole month, but if you aren’t signed up before midnight of the first day of the month, you’ll miss out.

Ryan Holiday “sex sells” is dead, long live “outrage sells”

Ryan Holiday “sex sells” is dead, long live “outrage sells”

How does that old adage go, “Sex sells”? I always wondered what would take its place. Now, I think we know. The new adage appears to be: “Outrage sells”.

In this excellent article, Ryan Holiday talks about how he created a marketing campaign in 2009 on a shoestring budget about a fictional internet blogger Tucker Max in order to promote an independent film. They then proceeded to troll the public and our institutions on their way to huge sales. They reached #1 on the New York Times bestseller list, sold out college bus tours, and made millions in ticket, dvd, and book sales. Often using our public institutions and media against each other – all for publicity.

“But my favorite was the campaign in Chicago—the only major city where we could afford transit advertising. After placing a series of offensive ads on buses and the metro, from my office I alternated between calling in angry complaints to the Chicago CTA and sending angry emails to city officials with reporters cc’d, until ‘under pressure,’ they announced that they would be banning our advertisements and returning our money. Then we put out a press release denouncing this cowardly decision.

I’ve never seen so much publicity. It was madness.”

It all worked. Ryan Holiday published all the manipulation he did and how uncontrollably successful it was in his book, Trust Me, I’m Lying: Confessions of a Media Manipulator. He’s been approached by numerous people saying that this book is now ‘their bible’.

He describes his book thusly:

You’ve seen it all before. A malicious online rumor costs a company millions. A political sideshow derails the national news cycle and destroys a candidate. Some product or celebrity zooms from total obscurity to viral sensation. What you don’t know is that someone is responsible for all this. Usually, someone like me.

I’m a media manipulator. In a world where blogs control and distort the news, my job is to control blogs-as much as any one person can. In today’s culture… Blogs like Gawker, Buzzfeed and the Huffington Post drive the media agenda. Bloggers are slaves to money, technology, and deadlines.Manipulators wield these levers to shape everything you read, see and watch-online and off. Why am I giving away these secrets? Because I’m tired of a world where blogs take indirect bribes, marketers help write the news, reckless journalists spread lies, and no one is accountable for any of it.

He talks about how outrage can be leveraged with ruthless exactness:

Niche players and polarizing personalities are only ever going to be interesting to a small subgroup. While this might seem like a disadvantage, it’s actually a huge opportunity: Because it allows them to leverage the dismissals, anger, mockery, and contempt of the population at large as proof of their credibility. Someone like Milo or Mike Cernovich doesn’t care that you hate them—they like it. It’s proof to their followers that they are doing something subversive and meaningful. It gives their followers something to talk about. It imbues the whole movement with a sense of urgency and action—it creates purpose and meaning.

While many worried about “normalizing” their behavior, that’s the one thing they don’t want to happen. The key tactic of alternative or provocative figures is to leverage the size and platform of their “not-audience” (i.e. their haters in the mainstream) to attract attention and build an actual audience.

Let’s say 9 out of 10 people who hear something Milo says will find it repulsive and juvenile. But let’s say he can acquire massive amounts of negative publicity by pissing off people in the media? Well now all of a sudden someone is absorbing the cost of this inefficient form of marketing for him. If a CNN story reaches 100,000 people, that’s 90,000 people all patting themselves on the back for how smart and decent they are. They’re just missing the fact that the 10,000 new people that just heard about Milo for the first time. The same goes for when you angrily share on Facebook some godawful thing one of these people has said. The vast majority of your friends rush to agree, but your younger cousin has a dark switch in his brain go on for the first time.

His solution is an observation:

I realize there is legitimate fear of normalizing repulsive behavior. I’m not suggesting anyone give credence to real Nazi doctrine. However, historically, it’s usually true that banning and blocking usually has the opposite of its intended effect. Effective counterinsurgency usually involves bargaining, partnering and the reestablishment of norms—not hardlines.

In this, I think he’s hit the nail on the head. We must admit these things are out there. But instead of trying to silence them, ban them, shut them up, and break their windows – we must engage and defuse them. We may not like it, but other tactics only pour gas on the fire.

Personally, I think this is where a person could take a few notes on how God engaged with our broken humanity. I hear a fellow went out teaching this and they wrote a lot of that down in a book somewhere… 🙂

A few points to consider on that front:

  • The Christian always separates the infinite worth and beauty of the individual human person who is “created in the image of God” from their sin. This can be brutally hard at times – especially when that person wishes you real harm. This is how evil is disarmed. It is hard to hate others when someone sees the infinite beauty and possibility in you that they often do not see themselves. Hate is disarmed by love.
  • The cross is the center of the Christian life. It means dying to yourself to do what is best for others. As Louis CK said: The only time you should look at another’s bowl is to see if they have enough, not if you got your ‘fair’ share. It may require you to turn the other cheek. It might even cost your life as in the case of Christ.
  • A steadfast peace in your heart that comes from deep and daily relationship with God. With this relationship, cultivated in daily prayer and silence, you find something that can endure any trial and bring peace to any situation.
  • Trust in Christ that when you follow him in this wisdom, you will be taken care of. I have seen this many times in my own life and the life of my friends who have become priests. It may not be what you expect, but those that follow Christ are never abandoned.
  • Speaking only the truth. Without hyperbole, exaggeration, or outright lies. Let your ‘Yes’ mean yes, and your ‘No’ mean no. Anything else is from the evil one.
Set up VNC on Ubuntu 14.04

Set up VNC on Ubuntu 14.04

Setting up VNC on Ubuntu used to be pretty painless. But recent changes in Ubuntu and X have left it kind of a mess. It took me way longer to set up VNC than it should have, and finding the documentation wasn’t super-easy either. There were lots of broken guides. So, here’s what you need to do:

  • Follow these setup instructions first:
    https://www.howtoforge.com/how-to-install-vnc-server-on-ubuntu-14.04
  • When completed, however, a known issue means the screen will come up blue-grey and have few desktop controls if you try to connect to it. This is because (near as I can tell) the X manager currently used for Ubuntu doesn’t work over VNC anymore. You need to set VNC up to use an older desktop manager that
  • To fix that problem, you need to fix things according to this guide:
    http://onkea.com/ubuntu-vnc-grey-screen/
  • On your client, start the vncserver and connect to it by matching the final digit of the port number to the :X number you used to create it.
    • Example:
      host: vncserver :4 –geometry 800×600 (to create the server)
      client should use the ip: 10.23.47.150:5904
  • If you get an error starting the vncserver, increment the :2 to :3 or :4 and so forth until you find one not in use by some other user on the server.

OpenGL ES 2.0/3.0 Offscreen rendering with glRenderbuffer

OpenGL ES 2.0/3.0 Offscreen rendering with glRenderbuffer

Rendering to offscreen surfaces is a key component to any graphics pipeline. Post-processing effects, deferred rendering, and newer global illumination strategies all use it. Unfortunately, implementing offscreen rendering on OpenGL ES is not well documented. OpenGL ES is often used on embedded/mobile devices, and until recently, these devices haven’t typically had the graphics bandwidth to keep up with new rendering techniques. Compound this with the fact that many mobile games have simple gameplay/small screens that do not need such complex lighting models, many people now use off the shelf engines for their games, and that there is still a good amount of mobile hardware out there that doesn’t even support render to offscreen surfaces, and it is no surprise that few people use the technique and it’s not well discussed.

In implementing offscreen rendering for OpenGL ES, I turned to the very good OpenGL ES Programming book as it has a whole chapter on framebuffer objects. When I tried the samples in the book, however, I was having a lot of difficulty getting it working on my linux-based mobile device. A lot of the implementation examples use a technique of creating framebuffer objects using textures, but you can also use framebuffer objects via something called render buffers. One reason this is good to know is because many hardware vendors support very few render-to-texture formats. You can often find yourself struggling with your implementation not working because the output formats aren’t supported.

Thankfully, I found this article and thought I’d copy the information here since it’s the only place I’ve seen working code that demonstrated the technique. It also includes the very important step of reading the output format and uses glReadPixels() so you can validate that you were writing correctly to the offscreen renderbuffer surface.

In my case, on an Intel graphics part, I found that the format (which is also the most recommended one) that worked  was GL_RGB/GL_UNSIGNED_SHORT_5_6_5. Steps 1-8 is standard OpenGL ES setup code that is included so you can verify your setup. Step 9 is where the glFrameBuffer and glRenderBuffer objects are created.

 

    #define CONTEXT_ES20

    #ifdef CONTEXT_ES20
        EGLint ai32ContextAttribs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE };
    #endif

    // Step 1 - Get the default display.
    EGLDisplay eglDisplay = eglGetDisplay((EGLNativeDisplayType)0);

    // Step 2 - Initialize EGL.
    eglInitialize(eglDisplay, 0, 0);

    #ifdef CONTEXT_ES20
    // Step 3 - Make OpenGL ES the current API.
    eglBindAPI(EGL_OPENGL_ES_API);

    // Step 4 - Specify the required configuration attributes.
    EGLint pi32ConfigAttribs[5];
    pi32ConfigAttribs[0] = EGL_SURFACE_TYPE;
    pi32ConfigAttribs[1] = EGL_WINDOW_BIT;
    pi32ConfigAttribs[2] = EGL_RENDERABLE_TYPE;
    pi32ConfigAttribs[3] = EGL_OPENGL_ES2_BIT;
    pi32ConfigAttribs[4] = EGL_NONE;
    #else
    EGLint pi32ConfigAttribs[3];
    pi32ConfigAttribs[0] = EGL_SURFACE_TYPE;
    pi32ConfigAttribs[1] = EGL_WINDOW_BIT;
    pi32ConfigAttribs[2] = EGL_NONE;
    #endif

    // Step 5 - Find a config that matches all requirements.
    int iConfigs;
    EGLConfig eglConfig;
    eglChooseConfig(eglDisplay, pi32ConfigAttribs, &eglConfig, 1,
                                                    &iConfigs);

    if (iConfigs != 1) {
        printf("Error: eglChooseConfig(): config not found.n");
        exit(-1);
    }

    // Step 6 - Create a surface to draw to.
    EGLSurface eglSurface;
    eglSurface = eglCreateWindowSurface(eglDisplay, eglConfig,
                                  (EGLNativeWindowType)NULL, NULL);

    // Step 7 - Create a context.
    EGLContext eglContext;
    #ifdef CONTEXT_ES20
        eglContext = eglCreateContext(eglDisplay, eglConfig, NULL,
                                               ai32ContextAttribs);
    #else
        eglContext = eglCreateContext(eglDisplay, eglConfig, NULL, NULL);
    #endif

    // Step 8 - Bind the context to the current thread
    eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext);
    // end of standard gl context setup

    // Step 9 - create framebuffer object
    GLuint fboId = 0;
    GLuint renderBufferWidth = 1280;
    GLuint renderBufferHeight = 720;

    // create a framebuffer object
    glGenFramebuffers(1, &fboId);
    glBindFramebuffer(GL_FRAMEBUFFER, fboId);

    // create a texture object
    // note that this is commented out/not used in this case but is
    // included for completeness/as example
    /*  GLuint textureId;
     glGenTextures(1, &textureId);
     glBindTexture(GL_TEXTURE_2D, textureId);
     glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
     glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);                             
     //GL_LINEAR_MIPMAP_LINEAR
     glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
     glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
     glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_HINT, GL_TRUE); // automatic mipmap
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, renderBufferWidth, renderBufferHeight, 0,
                  GL_RGB, GL_UNSIGNED_BYTE, 0);
     glBindTexture(GL_TEXTURE_2D, 0);
     // attach the texture to FBO color attachment point
     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
                         GL_TEXTURE_2D, textureId, 0);
     */
     qDebug() << glGetError();
     GLuint renderBuffer;
     glGenRenderbuffers(1, &renderBuffer);
     glBindRenderbuffer(GL_RENDERBUFFER, renderBuffer);
     qDebug() << glGetError();
     glRenderbufferStorage(GL_RENDERBUFFER,
                           GL_RGB565,
                           renderBufferWidth,
                           renderBufferHeight);
     qDebug() << glGetError();
     glFramebufferRenderbuffer(GL_FRAMEBUFFER,
                               GL_COLOR_ATTACHMENT0,
                               GL_RENDERBUFFER,
                               renderBuffer);

      qDebug() << glGetError();
      GLuint depthRenderbuffer;
      glGenRenderbuffers(1, &depthRenderbuffer);
      glBindRenderbuffer(GL_RENDERBUFFER, depthRenderbuffer);
      glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16,     renderBufferWidth, renderBufferHeight);
      glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthRenderbuffer);

      // check FBO status
      GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
      if(status != GL_FRAMEBUFFER_COMPLETE) {
          printf("Problem with OpenGL framebuffer after specifying color render buffer: n%xn", status);
      } else {
          printf("FBO creation succeddedn");
  }

  // check the output format
  // This is critical to knowing what surface format just got created
  // ES only supports 5-6-5 and other limited formats and the driver
  // might have picked another format
  GLint format = 0, type = 0;
  glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT, &format);
  glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE, &type);

  // clear the offscreen buffer
  glClearColor(1.0,0.0,1.0,1.0);
  glClear(GL_COLOR_BUFFER_BIT);

  // commit the clear to the offscreen surface
  eglSwapBuffers(eglDisplay, eglSurface);

  // You should put your own calculation code here based on format/type
  // you discovered above
  int size = 2 * renderBufferHeight * renderBufferWidth;
  unsigned char *data = new unsigned char[size];
  printf("size %d", size);

  // in my case, I got back a buffer that was RGB565
  glReadPixels(0,0,renderBufferWidth,renderBufferHeight,GL_RGB, GL_RGB565, data);

  // Check output buffer to make sure you cleared it properly.
  // In 5-6-5 format, clearing to clearcolor=(1, 0, 1, 1)
  // you get 1111100000011111b = 0xF81F in hex
  if( (data[0] != 0x1F) || (data[1] != 0xF8))
      printf("Error rendering to offscreen buffern");

  QImage image(data2, renderBufferWidth,  renderBufferHeight,renderBufferWidth*2, QImage::Format_RGB16);
  image.save("result.png");
Fedora scp: connection refused

Fedora scp: connection refused

I was trying to scp some files and kept getting this:

scp: connect to host 134.xxx.xxx.xxx port 22: Connection refused

Some linux distros, like the ancient Fedora 21, have ssh daemon turned off by default. So, turn it on:

sudo service sshd start