FLOSS Project Planets

Drupal.org Featured Case Studies: The Roman Baths

Planet Drupal - Tue, 2015-03-03 11:01
Completed Drupal site or project URL: http://www.romanbaths.co.uk

The Roman Baths is the primary attraction of the six Bath & North East Somerset Council Heritage Services; the Roman Baths, the Fashion Museum, the Victoria Art Gallery, Bath Venues, the Bath Record Office and the World Heritage Site.

The Heritage Services team wished to migrate all six of the websites from Immediacy to Drupal, and included a full re-design as part of the project. The contract was won in open tender by Microserve and Torchbox against stiff competition nationwide.

Torchbox carried out the Design and UX Phase before passing responsibilities to Microserve for the Development Phase. By working to each organization's individual strengths, Microserve and Torchbox were able to provide an efficient and cost effective partnership whilst still keeping a collaborative and concise communication channel between all three parties throughout the project.

Key modules/theme/distribution used: FeedsSassonAdminimal - Responsive Administration ThemeCKEditor - WYSIWYG HTML editorDraggableViewsGatherContentHoneypotStyle GuideFeaturesEntity Construction Kit (ECK)Flex SliderOrganizations involved: MicroserveTorchbox
Categories: FLOSS Project Planets

Danny Angus: Put code in your google docs

Planet Apache - Tue, 2015-03-03 10:52
I'm writing a technical document using google docs, and I want to put code snippets into it.
I thought this would be hard, before I discovered http://hilite.me/

This awesome, and awesomely simple, web app converts snippets of code into coloured HTML.
It can format a comprehensive range of languages and apply an equally impressive variety of styles.

Here's a snip of javascript, I just copied and pasted it straight in here, so it doesn't handle the overflow well, but you have to admit that its pretty cool for something that has a quick copy/paste/click/copy/paste workflow:


for (var i = 0; i < dataObj.eventData.children.length; i++) {
if (dataObj.isProduction){
dataObj.eventData.children[2].outcome.coupling = "1";
}
if (dataObj.eventData.children[i].outcome.coupling.length > 0) {
outcomeData = dataObj.eventData.children[i].outcome;
priceBoost[counter] = Object.create(priceBoostObject);
priceBoost[counter].createPriceBoostHTML(outcomeData);
priceBoost[counter].applyPriceBoost(outcomeData);
priceBoost[counter].applyExtraCss(outcomeData);
priceBoost[counter].initialiseAnimatedImages('animated-' + outcomeData.id, 'images/test.png', 'test.html');
priceBoost[counter].checkTextWidth(outcomeData.id);
counter++;
}
}
Categories: FLOSS Project Planets

Cheppers blog: Rebuilding the Cheppers website with Drupal 8: The Age of Innocence

Planet Drupal - Tue, 2015-03-03 10:50

After a lively meeting, the Cheppers team decided to make our new website with Drupal 8. You can read about how and why we made this decision in the previous post. The following series of posts will document our progress, share the important lessons we learn, and highlight any mistakes we make in order to help others as they set out to use Drupal 8. This post will focus on our initial work for this project.

Categories: FLOSS Project Planets

Sebastien Goasguen: Rancher on RancherOS

Planet Apache - Tue, 2015-03-03 10:38
Someone at Rancher must have some cattle in the middle of Arizona or in the backcountry of California. Or one of their VCs might be in Montana sitting in a big ranch while Docker is eating the IT world. In any case, this post is short and sweet like veggies and not like cattle (TFW) and is about Rancher and the newly announced RancherOS. Check out the rancheros announcement.

Let's keep this short, shall we ? Docker is great, but it is a daemon running on a single host. Since you want to scale :) and operate multiple servers, you need something to manage your Docker containers across multiple hosts. Several solutions are emerging, of course Docker Swarm but also Kubernetes, Lattice from Cloudfoundry and even Apache Mesos. Rancher is one of these cluster management solutions for Docker. It does some nice things like cross-hosts container linking through a custom built network overlay (think Flannel, Weave, Socketplane).

You can use Rancher with any set of Docker hosts. However, a new type of operating systems have started to appear. Container optimized OS. Or Just Enough Operating System for Docker. CoreOS, ProjectAtomic from RedHat, Ubuntu Snappy fit in that space. They aim to provide rolling atomic upgrades to the OS and run everything in it as a container. No more package manager, magic happens and you are always up to date. Package all your apps in containers, and use Rancher to run them in your cluster. End of story. Wait, enters rancherOS.
RancherOSA couple lines of bash make all the talking:

$ git clone https://github.com/rancherio/os-vagrant.git
$ cd os-vagrant
$ vagrant up
$ vagrant ssh
[rancher@rancher ~]$ docker version
Client version: 1.5.0

rancherOS is a super minimalistic OS exclusively for Docker. It goes further and also runs system services as container themselves. And I will let @ibuildthecloud talk about systemd and Docker as PID 1.

[rancher@rancher ~]$ sudo system-docker ps
CONTAINER ID IMAGE COMMAND ... NAMES
32607470eb78 console:latest "/usr/sbin/console.s ... console
d0420165c1c0 userdocker:latest "/docker.sh" ... userdocker
375a8de12183 syslog:latest "/syslog.sh" ... syslog
d284afd7f628 ntp:latest "/ntp.sh" ... ntp
The next logical question is of course....drum roll... Can I run rancher on rancheros. RinR not R&R ? And the answer is a resounding yes. I expect Rancher to come out in the next weeks maybe months with a solid product based on the two.
RancherIf you are interested to try out RinR then check out the Ansible playbook I just made. You can use use it to deploy a cluster of rancherOS instances in AWS, and use one of them as a master and the others as workers. The master runs in a container:

$ docker run -d -p 8080:8080 rancher/server
And the workers can register with their agent:

$ sudo docker run --rm -it --privileged -v /var/run/docker.sock:/var/run/docker.sock rancher/agent http://<master_ip>:8080
Once all the workers have registered you can use the UI or the API to start containers.


As you can see I tested this at web scale with two nodes :)
NotesIn this very early super bleeding-edge testing phase (as you can tell in my good spirit today), I did find a few things that were a bit strange. Considering rancherOS was announced just last week, I am sure things will get fixed. Cloud-init support is minimal, not able to add second network interface, support for both keypair and userdata at the same time seems off. The UI was a bit slow to start and building the overlay was also a bit slow. It is also possible that I did something wrong.

Overall though, rancher is quite nice. It builds on years of experience in the team with developing CloudStack and operating clouds at scale and applies it to the Docker world. It does seem that they want to integrate with and provide the native Docker API, this would mean that users will be able to use Docker machine to add hosts to a rancher cluster, or even Docker swarm and that launching a container would also be a docker command away. How that differentiates from Swarm itself is not yet clear, but I would bet we will see additional networking and integration services in Rancher. Blurring the lines with Kubernetes ? Time will tell.
Categories: FLOSS Project Planets

Modules Unraveled: Free Command Line Basics Series is Complete!

Planet Drupal - Tue, 2015-03-03 09:59

Command Line 00 - IntroductionWhen you're just getting started with a new operating system you have to learn how to get around and perform basic actions like navigating the file structure reading and writing files and creating and deleting files and directories. The command line (once you're familiar with its commands) can be used to navigate a computer's file structure much faster than through the GUI (Graphical User Interface). It is also very helpful when working with a remote machine, like a web server. One stumbling block for many first time command line users is the fact that when you first startup your command line, you're just given a blank screen with a prompt where you can type in your command. Since there isn't anything to indicate what you should do next you have to already know the commands before you get started. This series will lay out some of the most basic command line commands. These are the ones you'll likely use every time you start up the command line. We'll take a look at the pwd, ls and cd commands to see where you are in your file structure what files and folders are in your current directory and moving to other directories. We'll create and edit text files with the VI application and learn the basics of utilizing VI. We'll learn how to move, rename, copy and delete files and folders with the mv, cp and rm commands. There are plenty of other commands you might want to know but this is an introductory class and a quick Google search will give you all of the information you need.

TL;DR: Watch the full series here for FREE!

If you're serious about building your Drupal site right, you'll find yourself looking into command line tools like Git and Drush.

If you don't work in the command line on a regular basis, that might be intimidating. Well, not any more!

This series is designed to be a primer on the command line basics, to get you comfortable enough with the command line that you can utilize command line tools without hesitation.

Once you've watched the series, you can move on to the Drush series to improve your Drupal-fu, and will be ready for the upcoming Git series (which will be awesome, by the way!)

When you're ready, you can watch the entire series, for free.

When you do, let me know if you have any questions or comments!

Tags: Command LineBasicsplanet-drupal
Categories: FLOSS Project Planets

4Sitestudios.com Drupal Blog: Inside HubDub Part 1

Planet Drupal - Tue, 2015-03-03 09:07

As we announced previously, 4Site has just released HubDub, a Drupal module that leverages the jPlayer framework and Popcorn JS to overlay web content—such as social media, maps, or web forms—directly onto a video as it plays. So... how does it work?

Storing the Data

The Drupal end of HubDub is relatively straightforward. All of the information about a video is stored in a fieldable custom entity, called HubDub Video. Apart from the usual metadata like title, description, author and a unique identifier, what do we need to keep track of? First, we need the location of the video itself. HubDub needs direct access to an M4V video file (or a live RTMP stream), so we store its location in the URL field. A planned enhancement will let this URL be the actual Vimeo (and eventually YouTube) sharing URL, which is a lot easier for end users to find. The module would then parse out the actual video file location.

For each overlay, we need to track the start time, end time, and the content of the overlay. We could have used Drupal’s built-in field types inside a field group for this, but that can get messy for unlimited fields, so we decided to create a custom HubDub Overlay field type. As a former TV engineer, my first instinct was to use something like SMPTE timecode for the time fields. But jPlayer can’t place overlays with anything approaching frame accuracy, so we went with two simple integer fields, representing the elapsed time in seconds since the start of the video. To make it easier to deal with overlays in longer videos, especially now that HubDub supports live RTMP streaming, we’ll probably use a field formatter (such as the HMS Field module) to display these fields in hours:minutes:seconds.

The overlay field is a textarea, using Drupal core’s Filter module to format the text for display. Allowing custom CSS, Javascript, and jQuery inside overlays opens up some awesome possibilities… and also some not-insignificant security issues. So by default we allow only the Filtered HTML text format, but the administrator can change this for trusted users.

Finally, to declutter the edit form, we provide an administrative title for each overlay, and collapse the field by default.

Displaying a Video

Okay, we’ve now got all of the information about a video stored in Drupal’s database. Now how do we display a video? Well, first of all, where do we display it? By using Drupal’s Entity API we get a page display for each video (almost) for free, but we wanted to give site owners the flexibility to place videos wherever they wanted, so automatically creating a block for each video was a no-brainer.

I’ve created lots of blocks in code before, but I’d never done so dynamically for all instances of an entity type before. It was a lot easier than I expected, as I learned from looking through the Views module. In the hook_block_info() implementation I load all the HubDub Video entities, then iterate through them with a foreach and add each video to the array. Then, in the hook_block_view() implementation, it’s just a matter of calling the callback with the right delta. There are still a few to-dos here, namely dealing with entity titles longer than 32 characters, and adding some caching for performance.

The page callback and block callback are almost identical. Pages need a title, so the page callback sets it, then it and the block callback each call the same display function, hubdub_view_video(). That function loads the HubDub Video entity, then dumps all of the metadata fields for that entity into Drupal's Javascript Settings array. Next, it iterates through all the values of the Overlay field and adds each overlay to the Settings array. Then everything gets passed to a theme function, which loads the tpl.php file that contains the div structure that jPlayer needs, and creates a series of hidden divs with the contents of each overlay. Finally, we attach some CSS, and the Javascript, which is where all the real magic happens. Look for a follow-up post in the coming days on the Javascript side of HubDub.

What’s Next?

The initial release of HubDub is our “minimum viable product.” It works, but there’s so much more we have planned. A few of the things on our roadmap:

  • More granular access control for CRUD operations. Right now, all HubDub actions are controlled through one global “administer hubdub” permission. We’ll soon be adding the Drupal standard edit/delete own/any permissions.
  • Support for additional video providers, including YouTube, and non-m4v file formats.
  • Greater cross-browser HTML5 support.
  • Additional jPlayer options, configurable through the admin UI.
  • Media module support.
  • More user-friendly support for skipping to another point in the same video, or branching to another video, from within an overlay.
  • Better support for overlays on live streams. Right now, overlays are timed from the start of playback, but this doesn’t make sense for live streams. We’re considering just using the server time in hours:minutes:seconds, but we’d love to hear potential use cases and their requirements.
  • Eventually, a more user-friendly way of adding overlays. We’re considering a video player on the edit form, with a button in the player controls to add an overlay at the current playback point.

We're eager to hear your feedback! Please post bug reports, feature requests, and support questions in the HubDub issue queue.

We have even more details to share on how HubDub works under the hood, so stay tuned over the coming days. If you'll be attending the Nonprofit Technology Conference next week in Austin, stop by our booth (#214)! We'd love to chat and give you a demo. If you’re interested in a custom HubDub solution, integration with your CRM or AMS, or video production or editing services, please contact us.

Categories: FLOSS Project Planets

Europython: EuroPython 2015: We've opened the flood gates :-)

Planet Python - Tue, 2015-03-03 08:34

As announced earlier today, we have opened the early-bird ticket sales for EuroPython 2015. You can save up to 25% on the early-bird tickets, so book your tickets while they last:


https://ep2015.europython.eu/en/registration/


We only have 350 early-bird tickets available and expect them to be sold out in just a few days.

Enjoy,

EuroPython 2015 Team

Categories: FLOSS Project Planets

Calligra 2.9.0 is Out

Planet KDE - Tue, 2015-03-03 07:37

Packages for the release of KDE's document suite Calligra 2.9 are available for Kubuntu 14.10. You can get it from the Kubuntu Backports PPA. They are also in our development version Vivid.

Bugs in the packaging should be reported to kubuntu-ppa on Launchpad. Bugs in the software to KDE.

Categories: FLOSS Project Planets

Malthe Borch: Structured output from PostgreSQL via JSON

Planet Python - Tue, 2015-03-03 06:30

It might not be entirely obvious, but the table-based output from a SQL database often results in a lot of duplicate data being transmitted over the wire:

The string "Panama" appears 7 times in the protocol data stream. This overhead becomes significant as the number of rows increase.

If we use a structured output format such as JSON then we can express the same result without redundancy:

{"country": "Panama", "cities": [ {...}, {...}, etc. ] }

Of course, not all structured data is a tree. But if you're writing an API that ultimately returns JSON to the consumer then your output probably is.

In recent versions of PostgreSQL you can use the built-in functions row_to_json and array_to_json to select a json result instead of tabular data. The json result above might have been generated by a query such as:

select row_to_json(country) from (select name, (select array_to_json(array_agg(row_to_json(city))) from (select id, name, population from cities join countries on cities.country_id = countries.id limit 7) city ) as cities from countries where countries.name = 'Panama' ) country

It's readable and fairly succint, but it might be useful to abstract out the details and generate it.

In addition to bandwidth savings, there are significant performance gains to make. When you measure at the application level, the performance overhead in tabular versus structured output becomes substantial as the data redundancy increases.

For instance, in the example above it might be convenient to include a description of the country (in this case Panama). In a traditional tabular output, this presumably longish string would be copied into every result row, perhaps 1-2 KB per row. In the structured output the description string appears only once.

Using a Python driver I measured a similar query and found the json version to run in about 1/3 of the time.

Categories: FLOSS Project Planets

DrupalDare: Google Pagespeed Module and Drupal

Planet Drupal - Tue, 2015-03-03 05:27
Google is trying to make the web faster! Every site owner should be aware off the Google Pagespeed tool (and YSlow) to make sure that the website they are running is as fast as it can be. The optimization tools they offer are great for anyone working with Drupal. But Google have taken it one step further by introducing Google Pagespeed module for you webserver that does a lot of optimization on the fly. The question is - does it make sense for Drupal?
Categories: FLOSS Project Planets

InternetDevels: Drupal modules for social networks integration

Planet Drupal - Tue, 2015-03-03 03:55
1. Service links module

Service links module simplifies attaching additional social links or javascript buttons into the content. It grants advantages to the developers who can add more buttons and rearrange them. It is created on Drupal and for Drupal so that doesn’t include any commercials or spyware.

Read more
Categories: FLOSS Project Planets

Europython: EuroPython 2015: We have lift-off

Planet Python - Tue, 2015-03-03 03:26

We are pleased to announce the launch of our all new EuroPython 2015 website. Over the last few weeks, we have been very busy setting up the infrastructure, talking to sponsors, getting the logo designed and the site prepared for the launch. So here it is:


https://ep2015.europython.eu/


Many thanks go to our launch sponsors who have signed up early to give us that extra boost in motivation to get the conference and it’s website ramped up in only 6 weeks:

Meet our Launch Sponsors

But that’s not all. We’ve also prepared an extra bonus for you:

Early-bird Ticket Sales

Later today, at 14:00 CET, we will be starting the early-bird ticket sales. Set your alarms for right after lunch to grab your tickets. We only have 350 early-bird tickets available and experience shows that they will be sold out fast.


PS: We’d like to thank our friends at Python Italia for making the EuroPython website code used for 2011-2013 available for us to use.

Enjoy,

EuroPython 2015 Team

Categories: FLOSS Project Planets

Brian Okken: Test First Programming

Planet Python - Tue, 2015-03-03 03:19

Occasionally referred to as Test First Development, Test First Programming is a beautiful concept that radically changed the way I approach software development. The ideas of Test First Programming and Test Driven Development are often muddled together. However, Test First is powerful enough to stand on it’s own. I think it’s important to present the […]

The post Test First Programming appeared first on Python Testing.

Categories: FLOSS Project Planets

pgcli: Release v0.16.1

Planet Python - Tue, 2015-03-03 03:00

Pgcli is a command line interface for Postgres database that does auto-completion and syntax highlighting. You can install this version by:

$ pip install -U pgcli

Check detailed instructions if you're having difficulty.

This is a minor bug-fix release that fixes unicode issues with hstore.

Bug Fixes:
  • Fix unicode issues with hstore. Previously the unicode type caster for hstore was done via a hardcoded oid. This is wrong since the oid for hstore will vary between different databases. Now the oid is determined at the time of connection and a type caster is registered accordingly.
  • Fix an error when database is changed using \c.
Categories: FLOSS Project Planets

QtSpeech progress

Planet KDE - Mon, 2015-03-02 21:49

This week some changes in knotifications/knotifyconfig/kanagram/okular are in the works. The kanagram changes are already on master, the others are in review. Those changes are bringing back the use of text to speech features via the new QtSpeech module. Some have asked what the status of QtSpeech is, so I thought I'd share a bit about it here.

Frederik Gladhorn created the QtTextToSpeech module a while ago as a test to see how feasible it would be to wrap all the platforms Qt is supported on's TTS APIs in one easy to use Qt API. This turned out to be a great idea in my opinion. The predecessor to QtSpeech in KDE applications was Jovie, formerly known as kttsd. While it worked for the most part it required a daemon to be running which spoke with different synthesizers (originally) then was modified to use speech-dispatcher directly instead (when it was renamed to Jovie). QtSpeech on the other hand is a library. If you want to use it, you link to it in your application, create a QTextToSpeech object, and pass any text to speak to it's "say" method. No D-Bus connection required, no daemon required, just a small, light library that wraps the native platform TTS API directly.
As for the status of QtSpeech, I'm afraid it's not quite ready for prime time. It wont likely get added to Qt 5.5 which has feature freeze next Monday. It is however ready to be tested, improved, etc. on each platform. Most of it's API is implemented completely on linux, The basic API (saying text) is implemented on Android, Windows and Mac OS X. Patches are on gerrit to implement the rest of the API (getting available voices, locales, setting the voice) on OS X and will be written soon for Windows also. I plan to spend a bit of time on it each week so it will be ready for release with Qt 5.6 and I hope anyone else interested will join us.
More information about QtSpeech can be found here http://qt-project.org/wiki/QtSpeech. I hope this update has been helpful.

P.S. Here's a work in progress screenshot of the example widget Frederik created which is inside the QtSpeech git repository as it appears on OS X.


Edit: The wiki has been moved apparently. It's now found here: https://wiki.qt.io/index.php?title=QtSpeech

Categories: FLOSS Project Planets

500yearfarm.com and New Blog

LinuxPlanet - Mon, 2015-03-02 21:13
Just realizing that there are some of you that follow this blog that don't necessarily follow me in other places. So I thought I'd post a quick update to say, any farm related stuff has been moved off this blog and onto blog.500yearfarm.com and if you want to check out the new 500yearfarm.com website I'd love to hear some feedback on it.
Categories: FLOSS Project Planets

Paul Rowell: Drupal Camp London 2015: Improving the CMS user experience

Planet Drupal - Mon, 2015-03-02 20:40

I gave a talk at Drupal Camp London this year, focusing on the UX of CMS users a.k.a the forgottten Drupal user. Below are the slides and a few notes to accompany them.

Categories: FLOSS Project Planets

Matt Raible: How To Setup Your Own Software Development Company, 6 Years Later

Planet Apache - Mon, 2015-03-02 20:03

Just over six years ago, I wrote a popular post titled How To Setup Your Own Software Development Company. I'd just left LinkedIn a few months earlier and was enjoying consulting life again, working with a group of friends at Evite. In the article, I wrote about how I liked consulting because it forces you to keep your skills up-to-date and it pays a lot better. I also talked about the type of legal entity you should form (I have an S Corp), what business insurance you should buy, what I had for health insurance and how I automated payroll and tax payments.

I recently received an email from a reader, asking me if I had any updated thoughts.

It's been nearly six years since you wrote the article about starting your own business ... and thanks, by the way.

I am starting my venture into independent contract work as a software engineer (Java technology) in California and most likely will setup an S corp entity.

Seeing that you wrote this six years ago and things have considerably changed in the U.S. (economy, health care, etc.), I was wondering if you had some updated thoughts to share, perhaps some learned lessons even.

And also, I have questions about business insurance: what type of insurance should I opt for? Is there really an umbrella insurance out there? Or does each (or many) clients out there dictate the insurance you need?

Yes, a lot has changed in the last six years. The economy has improved and health care costs have risen. Through this time, I've been able to continue to operate as an independent software developer and keep the contracts flowing. Personally, the biggest changes in my life have been outside of work. I met an exceptional woman, traveled to conferences all around the world with her, got married, traveled some more, then bought a VW Westfalia so we could have lots of fun traveling in our own backyard. All the while, I've worked for some great clients. I built a team of hot shots at Time Warner Cable (many of them still work there), I skied the awesome powder of Utah while working at Overstock and I enjoyed a long-term contract at Oracle. After Oracle, I got into the healthcare industry and I've been working in it ever since.

In fact, I just finished working for a healthcare company last week and I'm on the hunt for my next gig in April. Check out my LinkedIn profile if you'd like to see my résumé.

I've learned quite a few lessons over the last several years. As an independent developer, the biggest thing I've learned is marketing is key. I've always known this, but I've been reminded of its importance a few times. When I worked at Taleo (after Overstock), I was on a 3-month contract that turned into a 9-month contract that got a 1-year extension when Oracle bought them. The work was challenging, but the application was outdated. Getting them to adopt new technologies like Bootstrap and AngularJS was difficult. When Oracle took over, they offered me a 1-year contract at a great rate. I accepted, never thinking it would be difficult to get paid from someone like Oracle. It took them over three months to pay my first invoice and it took me another three months to get payments flowing regularly. I felt like I was trapped. I felt like I could quit, but that wouldn't speed up the process of getting my invoices paid. From this experience, I'm hesitant to start with any contract that's longer than three months.

During my time at Oracle, I didn't blog as much as I had previously (because the day-to-day work wasn't that exciting), but I did still speak at conferences. Last year, I took the year off from speaking at conferences altogether. Speaking is an excellent marketing tool. Because of my lack of speaking, I saw a downturn in contract opportunities in Q4 last year.

As far as health insurance is concerned, I continued to have a disaster prevention plan, with a $5K per year deductible. I paid around $300/month for this, and rarely used it. By riding my bike to my office in downtown Denver, and skiing a bunch in the winter, I felt like I was pretty healthy. After I stopped eating sugar last fall, I became much healthier. So much healthier that I've stopped taking high blood pressure medication. Today, I don't pay for health insurance. Trish went back to IT Security Sales in November and she was able to get me on her company's plan for $100 cheaper than what I was paying. I didn't have dental insurance for the last five years and I did have to shell out $5K for a tooth implant at one point.

For business insurance, I have the Business Owner's Policy from The Hartford. I pay around $600/year and I've gotten that back when I've had laptops stolen or accidentally killed my iPhone. I've got automated backups going all the time, so I haven't lost any data in several years. This insurance policy and its liability coverage has been "good enough" for all my clients, including the big ones.

I think the biggest lesson I've learned in the last several years is that the best way to be rich is to be rich in time. I've always dreamed of making $500/hour and working 20 hours per week. While $500/hour sounds crazy, you know there's consultants out there that are making that kinda cash. They're probably not in software, maybe they're political consultants, or former professional athletes, but those consulting rates do exist. In software, there's certainly companies that bill those kinda rates. My rates for the last several years haven't been that good, but they've been pretty awesome.

Earlier this year, I had the opportunity to work 20 hours per week instead of 40. It was one of the greatest work-life experiences I've had to date. I was still able to pay all my bills, and I had time during each-and-every-day to do something fun. When working 40 hours per week, exercising and cooking dinner were somewhat of a chore. When I flipped to working less, work became the chore and exercise and cooking became the fun parts of my day. I read somewhere recently that if Americans valued health over wealth, we'd be a lot better off. I felt like I did this when working less and that I was rich in time.

Related to feeling better over making more, I've started to target employment opportunities that offer a good team to work with. For the last year, most of my contracts have been with remote clients, where they haven't required me to travel onsite. While this sounds great in theory, I do miss the comradery that exists when working with a team. Working with someone over a Skype/HipChat call is nothing like sitting next to each other and cracking jokes while writing code. Don't get me wrong, I love remote work, but I do think it's important to be onsite and collaborating face-to-face at least once per month.

To those individuals looking to start their own Solopreneurship, I hope this advice helps. It's been a great experience for me.

Categories: FLOSS Project Planets

Justin Mason: Links for 2015-03-02

Planet Apache - Mon, 2015-03-02 18:58
  • Glowroot

    “Open source APM for Java” — profiling in production, with a demo benchmark showing about a 2% performance impact. Wonder about effects on memory/GC, though

    (tags: apm java metrics measurement new-relic profiling glowroot)

  • “Everything you’ve ever said to Siri/Cortana has been recorded…and I get to listen to it”

    This should be a reminder.

    At first, I though these sound bites were completely random. Then I began to notice a pattern. Soon, I realized that I was hearing peoples commands given to their mobile devices. Guys, I’m telling you, if you’ve said it to your phone, it’s been recorded…and there’s a damn good chance a 3rd party is going to hear it.

    (tags: privacy google siri cortana android voice-recognition outsourcing mobile)

  • Halcyon Days

    Fantastic 1997-era book of interviews with the programmers behind some of the greatest games in retrogaming history:

    Halcyon Days: Interviews with Classic Computer and Video Game Programmers was released as a commercial product in March 1997. At the time it was one of the first retrogaming projects to focus on lost history rather than game collecting, and certainly the first entirely devoted to the game authors themselves. Now a good number of the interviewees have their own web sites, but none of them did when I started contacting them in 1995. [...] If you have any of the giddy anticipation that I did whenever I picked up a magazine containing an interview with Mark Turmell or Dan [M.U.L.E.] Bunten, then you want to start reading.

    (tags: book games history coding interviews via:walter)

  • Pub Table Quiz – In Aid of Digital Rights Ireland

    Jason Roe is organising a Table Quiz in Dublin on March 26th to support fundraising efforts by Digital Rights Ireland. We will supply tables, questions and a ready supply of beer and maybe finger food.

    (tags: dri pub-quiz fun dublin quizzes)

  • Why are transhumanists such dicks?

    Good discussion from a transhumanist forum (via Boing Boing):

    “I’ve been around and interviewed quite a lot of self-identified transhumanists in the last couple of years, and I’ve noticed many of them express a fairly stark ideology that is at best libertarian, and at worst Randian. Very much “I want super bionic limbs and screw the rest of the world”. They tend to brush aside the ethical, environmental, social and political ramifications of human augmentation so long as they get to have their toys. There’s also a common expression that if sections of society are harmed by transhumanist progress, then it is unfortunate but necessary for the greater good (the greater good often being bestowed primarily upon those endorsing the transhumanism). That attitude isn’t prevalent on this forum at all – I think the site tends to attract more practical body-modders than theoretical transhumanists – but I wondered if anyone else here had experienced the same attitudes in their own circles? What do you make of it?”

    (tags: transhumanism evolution body-modding surgery philosophy via:boingboing libertarianism society politics)

Categories: FLOSS Project Planets

Carl Chenet: Backup Checker 1.2 : verify remote backups

Planet Debian - Mon, 2015-03-02 18:00

Follow me on Identi.ca  or Twitter  or Diaspora*

Backup Checker is a command line software developed in Python 3.4, allowing users to verify the integrity of archives (tar,gz,bz2,lzma,zip,tree of files) and the state of the files inside an archive in order to find corruptions or intentional of accidental changes of states or removal of files inside an archive.

The major feature of this new version is the ability of Backup Checker to use Unix streams. Using classic Unix tools like OpenSSH or wget, Backup Check is able to verify a remote tar.{gz,bz2,xz} archive. The following example verifies a tar.gz archive located on remote server through SSH:

$ ssh -q server "cat /tmp/backup.tar.gz" | ./backupchecker.py -c . -

Another short example with the FTP protocol, to verify a tar.bz2 archive located on a remote server through FTP:

$ wget --quiet -O - ftp://user:pass@server/backup.tar.gz | ./backupchecker.py -c . -

Moreover in this release, a new option –configuration-name allows the user to define a custome name for the files generated by Backup Checker (default is defined from the name of the archive using the -g or -G options).

It is a major step for Backup Checker. It is indeed easier and easier to use Backup Checker in your own scripts, allowing to fully automate your backup controls.

Several companies now use Backup Checker to secure their backups. Let us know if we can help you.

As usual, any feedback is welcome, through bug reports, emails of the author or comments on this blog.


Categories: FLOSS Project Planets
Syndicate content