FLOSS Project Planets
Urban Insight operates a highly successful on-demand video service, Planetizen Courses. The service keeps improving rapidly; it’s not uncommon for new features to appear on the site. One recent enhancement allows the system to keep track of progression in videos as they are being watched.
This enhancement allows for two new features:
Last Monday, Phase2 hosted a distribution hackathon at DrupalCon Amsterdam. While we were excited to see what our hackers would come up with, we were blown away by what was accomplished in an evening of hacking. The winners of the hackathon developed a Drupal 8 distribution called Drupal Promo Kit. This distribution allows anyone to easily create presentations and landing pages using Drupal. Other hack projects included Open Atrium Apps, Panopoly apps, and more. I got to chat with the hackathon winners: Kate Marshalkina , Konstantin Komelin, John Ennew, and Mariano Barcia, to learn how they came up with their idea and how they did it:
Q: What was your inspiration for your hackathon project?
A: We wanted to test our skills in Drupal 8 and see if we could build our own distribution. We also wanted to build a unique solution that was useful and meaningful.
Q: How did you prep for the hackathon?
A: About a week before the hackathon Kate and I (Konstantin) brainstormed potential hackathon ideas. Our goal was to decide on a project that we could complete by the end of the hackathon, so once we decided on our idea for the project, we decided on the scope of our project and the minimal and maximum viable product. We then decided on the tools we would use including Bitbucket, Google docs, Slack, and Trello.
Q: And once you arrived at the hackathon, what was your experience working with other people?
A: When the hackathon kicked off, we announced our project and goals to everyone and found some new team members that were interested in what we wanted to do. John Ennew and Mariano Barcia joined us and it was amazing how easy it was to pick up and start developing with other Drupalers. We were able to start developing rapidly in just a couple of hours. It didn’t matter that we were all coming from different backgrounds, with different skill levels, we were all speaking Drupal, a universal language.
Q: What do you think is the value of hackathons?
A: Hackathons are a great opportunity to meet other Drupalers in the greater Drupal community and work together to solve problems. Hackathons at Drupalcon are special because your team can come from all over the world, and you all have different cultures, different jokes, and new ideas. Not only do you build friendships throughout the event, but all the different perspectives and experiences strengthen your project. Hackathons let you dive into something you are interested in and at the same time, it can help push Drupal forward. We learned so much about Drupal 8 while working on this project, and we plan on taking our experience and feedback to the core team to help improve Drupal 8.
Interested in learning more about Drupal Promo Kit? Check it out on Drupal.org! We want to thank all the hackers that participated in our hackathon, and can’t wait to hack with our brilliant community again soon! See more images of the hackathon and other DrupalCon Amsterdam photos on our Flickr!
I will not attend a single conference this year.
No PyCon. No Traveling for packed days of community building and education. No lower key conferences in my own home city, even. Not a single conference will list my name as an attendee for the enter year of 2014.
And I feel great about it!
My decision not to attend any conferences this year was an intentional one and has been both uplifting and life saving. The thing is, I absolutely love conferences. I love going to PyCon more than I love most holidays. I’m enormously excited to live in the area that hosts both NCDevCon and All Things Open. Hell, I love conferences so much I organized my own just because I wanted to attend it so badly.
As an enormous supporter of tech conference attendance, I realized that I had no choice but to take a hiatus from attendance. I had something to prove to myself.
I am a skilled developer who grows in my craft through my experience and I am valuable to my teammates, projects, and to myself. I am all of these things through the efforts of my job, which I am very good at. I am all of these things without pouring my energies and emotions into community events and contributions.
What I needed to do was prove to myself that I don’t need to attend conferences. While conferences are incredibly rewarding, enriching, and wonderful I also grew concerned that they were growing into a trap for my self confidence and my self worth. I grew concerned that I was channeling a lot of my valuation of myself through my attendance and participation in these communities.
I went from a self-taught kid messing around with computers in his spare time to a full-time Python consultant supporting his family on what he taught himself to an important member of a growing development team and projects of value to large, important corporations. In a few years time, I became one of the people that I had looked up to when I was learning from the community of programmers I had found online.
When I was younger and teaching myself, I hoped to one day attend PyCon.
When I grew more experienced, I hoped to one day be able to afford PyCon.
At some point, there was a year when PyCon slipped by and rather than look up to and forward to one day going, I spent the time depressed because I was yet to be able to attend. My freelancing made enough money to pay the bills, but not to attending something extra like this. It was a real pain point for me. It hurt. It made me feel inadequate as a developer.
I wondered, more than once, how all these other people attending and loving PyCon were able to be so much more successful than me.
But, it happened. I got better at my job and in turn got better jobs and, eventually, I attended PyCon. I attended three PyCons in a row, and began attending other conferences. I travelled for them as well as attended local conferences, like NCDevCon and All Things Open. I organized PyCarolinas and it was one of the most rewarding experiences of my life. I gave my first talk last year and flew to New York to speak on a live panel about offline applications on the web. I had made it. I was part of the in crowd. I was one of the cool kids.
And none of this is bad. I don’t regret any of this. My choice not to attend conferences this year isn’t any decision that my past attendance was a bad idea, or that it would be a bad idea to attend this year, even. After investing so much self worth in my success with conference going, I just realized that I had to prove to myself that I don’t rely on them. And it was a success, so far. While I haven’t attended any conferences this year, I’ve accomplished things I’m proud of at work, and on my own. I am succeeding in feeling good about myself, and that is an accomplishment in and of itself.
I am not an imposter.
Next year, I’m going to have a great time at a few conferences.
It seems that every week we hear about a new high profile hacking. For example, it just came out that numerous financial institutions, in addition to JPMorgan Chase, were hacked. We live in an incredibly accessible world where those on the other side of the globe can easily knock on our digital front doors or even try to pick the locks. So, how can we try to figure out where the weak points are in our security? How can we find the tasks to work on to beef up security? One option is to perform a threat analysis.
A threat analysis for computing systems is...
Systematic detection, identification, and evaluation of areas or spots of vulnerability of a facility, operation, or system.
Let's look at some ways we can dip out toes into a threat analysis. This is not all inclusive and you'll need to go well beyond these ideas but they are a place to get started.
You'll notice I suggest documenting many of the aspects discussed. Documenting them helps to communicate the system and details to others who can offer insight and it helps to visualize what's happening.Diagram Your System Architecture
Above is a simple example of a CMS based website, such as a common Drupal site. In the diagram diagram document all the components, even elements that browsers download from 3rd parties or components that aren't user facing.
Once you have the diagram look at all the interconnects between the different parts. For example, you may serve your pages over https but the connection between the web server and the MySQL isn't over an encrypted connection. That could offer a route to peek in on data.
Also, look at who can access what ports on what servers. If Memcached is accessible to anyone who knows the IP of the server the data in it can be retrieved by anyone. In this picture private networks, cloud security groups, or some other protection should be in place to protect anyone from ever accessing Memcached or MySQL.
Looking at the system can help you identify places to secure communications. It's an easy place to start identifying tasks.Data Storage
Many sites store information about customers. This ranges from mundane settings through personally identifiable information (PII). Imagine an e-commerce site where someone gets into the database or can even just monitor the traffic between the web server and the database. They'll know customer names, email address, home address, and more.Type Where Encrypted? Products MySQL No Name MySQL No Address MySQL No ... ... ...
An easy way to get a view of the data you're storing is with an old fashioned table. List out everything from the content that's displayed to the private details (even those sent to web services like a credit card processor).
Once you have this information you can combine it with the accessibility of the system and start to get an idea how open data is for hackers. It's also an easy place to start finding tasks to make the data more secure. For example, can information like addresses be encrypted?Security Update Plan
Software is insecure. The more complicated the software the more likely there are holes in it. The software powering the Internet has regular security updates to fix the problems as they are found. By regular I don't expect a week to go by without needing to update one thing or another.
How do you update software? Is it automated? Is it often? How often? For example, it's great to install updates to a CMS but what about the web server, the database, the operating system they are on, and everything else in the system?
Document how you handle updates and then look for ways to improve on and automate the updates.Reviewing Logs
Hacking attempts happen. Some people will even scan the entire Internet to see what's open. It's not all the hard to scan the entire Internet and you can do it at a slow pace in under a day.
Part of handling threats isn't just handling them but identifying bad situations quickly and reacting. That's where good logging practices can come in. Look at the log review practices and automate as much as possible.
Make sure to log everything (minus information such as passwords) and review those logs. If an IP address keeps trying to access your systems but fails to authenticate you should know about it. If systems are accessed when you don't expect them to be or from locations you don't expect, you should know about it.Just the beginning...
These few things are just the beginning but a good place to start. Initially, this can raise a number of places to improve the system while getting some of the security thinking more in place.
my last post was about Randa, here is what happened in Brno.
I already started my travel on Thursday to be able to attend the KDE e.V. AGM.
My flight took of in Basel and I went to Vienna to continue my travel from there by bus.
In Vienna I met the first KDE people and Akademy started for me, discussing things while eating a Schnitzel.
On Friday we had quite a long AGM but I think it was important and there were a lot of important decision made but we still have a lot of them ahead of us. If you are a KDE contributor and want to take part in decisions concerning the future of KDE you should become a member of the KDE e.V. .
The day ended with the sponsored pre-registration party at the redhat office, with free food and beer to welcome us.
The next two days we had many different, amazing talks. If you haven't been to Akademy this year I would like to recommend you to watch the recordings of the talks available here (just select the day and click on the header of the talk).
On Monday the Bof's started.
The frameworks Bof on Tuesday took on for ages it was just so much to discuss, the room was so full that not everybody was able to attend and we hat to share tables and sit on the floor. But we all had something to discuss.
On Wednesday we had a day trip to the Brno reservoir. After a pleasant ride on the ferry, we had a small hike to Veveří Castle. We explored the castle and soon found a small beer-garden.
On the way back all attendees tried to huddle into a small shelter by the bus station, for no reason, which was much to small for all of us. We took the bus back to the reservoir to have supper at the next restaurant. It was a great day trip.
The shelter was much to small for all of us.
On Thursday we had our own small KDE Windows workshop, I helped some people to prepare their KDE Windows setup and explained our emerge build system. Some of them are still complaining about build issues on Windows and I count that as some kind of success.
Of course late night hacking was quite important for us and after some struggle to get up a wireless LAN we hat a place to meet and hack in the hostel.
The room was marked with a print out "Hacking-Room" and the Erasmus students at the hostel were quite bewildered by our presence and our doings.
Also going out is important for Akademy, as some discussions are best done over a few glasses of beer.
There was the amazing beer stock-exchange and the food place in town where you can order meals with a huge amount of meat, which was just awesome (I'm sorry but i forgot the name of the place).
For some of us the visit to a place where the beer was served in little model trains was a absolute highlight. One of us even got his (child's) menu served in a model train.
All important stock information you need to order the next beer at the beer stock-exchange.On Friday I got home, after one amazing but taxing week, full of conversation and decisions.
One question I have been asked was whether it is to inconvenient for Windows developers to install the extra-cmake-modules(ECM) so that we should ship them in each frameworks tarball. And if so, should we ship a package targeting Windows developers (a .zip file) containing the ECM scripts and a package targeting Linux developers (a .tar.xz file) not containing the ECM scripts. What do you think?
So now I'm already looking forward for the next Akademy to see you all again.
In this week's episode Addison Berry and Amber Himes Matz sit down together in a quiet room at DrupalCon Amsterdam to give a quick recap on their week at the largest European DrupalCon. We chat about other events outside of the DrupalCon sessions themselves, some cool sessions, and a bit about the new Drupal 8 beta.
Let’s face facts: I am not a coder. With a lot of caffeine, much googling and more time than is reasonable, I *can* code my way out of a paper bag, but that’s about it.
So it is highly unlikely you will ever see my username tied to a module or on a list of contributors. Sure, I created the occasional new issue on a module’s issue queue or provided feedback for a patch I needed, which in itself is a form of contributing. But messing around with core? Funny. Me writing a patch? Nope. Sprinting? I only run when being chased.
According to d.o then, I am not a contributor.
The outward problem with this is that the language around contributing back to Drupal is code-centric. The current system places emphasis on how many commits you have and how many projects you maintain. But there is hope for those of you who, like me, won't be contributing back code anytime soon.
I am a co-organizer for the Fox Valley Drupal Meetup Group in the western suburbs of Chicago. We held our first camp in 2013 and I was part of the team that helped pull it off, and we recently wrapped our 2014 camp.
When the idea of the inaugural MidCamp was getting kicked around, I offered up my logistics help for that as well. And I'm on deck as the logistics lead 2015.
Through my non-Drupal day job, I have extensive print experience and do a fair amount of video production work tied to the annual conference we host. So I was all over session records for all three camps, and I'm working on a rebooted session recording kit that the Drupal Association is very interested in learning more about.
My print skills have been tapped by the core mentor team, mostly because I was hanging around a bunch of them at Drupalcon Austin and they needed materials printed for the mentored sprints at Drupalcon Amsterdam.
Hell, I even got roped into catering the extended sprints at Austin mainly because I am passionate about food, especially when it comes from something with four wheels and an engine.
My point: there are many opportunities to give back to the community and the project as a whole in real life. It took me a while before I realized that yes, I am a contributor. Just not in a way that is currently measured. But that's not why I do it. I am forever indebted to all the heavy code lifters that I depend on for my work. It just feels good to be able to give back.
So while it’s highly unlikely you’ll ever see any kind of percentage powered by kthull on a Drupal site, I’ll continue to lend my time and talents where I can. You should too.Tags:
"To take an action or make a gesture intended to preserve one's reputation or honour"I argue that this expression is under-used in this day and age of privacy violations.
Awesomeness from Saturday Morning Breakfast Cereal!Privacy is notTech folk like me were surprised at the publicity around the leak of celebrity nudes a few weeks ago. With the continuous string of NSA scandals over the last years, we didn't expect anybody to still think their data was safe online. Apparently, we still have to make the argument for privacy...
For many people, privacy and the arguments against NSA style "collect it all" spying seem moot: "I have nothing to hide".
Now this argument has been solidly debunked in various articles, breaking down to these main reasons:
- You don't know what you have to hide
- You should have something to hide
- Privacy is a basic human need
You don't know what you have to hideIn the US, the federal government can't even count the number of laws one can break, and Moxie argues:
If the federal government had access to every email you’ve ever written and every phone call you’ve ever made, it’s almost certain that they could find something you’ve done which violates a provision in the 27,000 pages of federal statues or 10,000 administrative regulations. You probably do have something to hide, you just don’t know it yet.
A society with perfect surveillance means anybody could be locked up at any time as everybody does things wrong all the time. Law enforcement becomes arbitrary (and consequently a great means for controlling people who do things the government doesn't like). Just one recent example: in Washington, being smelly is a crime.
Moxie does not even discuss changes in policy and politics. What is legal today can haunt you tomorrow! This is not a hypothetical situation: in World War II tens of thousands lost their lives because the Dutch government kept extensive records on every citizen.
You should have something to hideThe second point is that if laws were never broken, they would never be changed and progress of society would come to a stand-still. In a world of perfect law enforcement, slavery would still be with us, sodomy laws would be in effect and women wouldn't be allowed to run businesses or perhaps even drive cars. Probably nice for bureaucratic governments (things are simpler that way) but I don't think it is wise to limit the world our kids live in based on what we can deal with and understand today...
Despite their very real impact, these arguments, to many of us, seem mostly relevant around an oppressive regime. We're happy that the protests in Hong Kong are aided by techology but it doesn't make us use them.
Privacy is a basic human needThen there is the argument that people need privacy. Not because they do illegal things, but just because. The often-heard explanation: when you go to the toilet, you close the door. Not because you do something illegal there, but just because you'd prefer doing it alone!
This might not feel like a strong argument, perhaps that is why Moxie doesn't mention it. But it goes far deeper than the other reasons for privacy, to something very central to us, human animals. Everybody feels a need to present themselves well to others! We use make-up, proper clothes, perfume and deodorant. We act and speak careful, ever mindful of the impression we leave on people. And privacy is central to control over how others see you.
Marying as WoW characterSaving faceWords like reputation and honour in the definition of "saving face" by wikitionary make it sound like a big, special thing, but it is true for everybody, every day: we all go through extraordinary length to control how others see us. It is why we carefully choose the clothes we wear and the car we drive. We even wear different faces around different people. Loving husband or wife, funny friend, hard working employee, trusted confidant, sensitive and dedicated son, powerful wizard.
We are careful to keep these separate. If one of your parents would suffer from cancer, you would share the pain with close friends, but not the poker friends at the bar. You'd share that you had to deal with a burn-out a few years ago with your husband, but not your colleagues. If you lose your job you keep up appearances to some friends, but share your feelings with others. You would tell at work about your kid puking over you at breakfast but not about your wife who suffers from depression.
The carefully build impressions others have of us are maintained at almost all costs, and we don't even realize it. It is more obvious in some situations, of course - when something bad happens to you but you don't want some group of people to know; or, typically, when dating or soliciting for a job, when you put up your best, cleanest face and present yourself as perfect as you can. Or when you get very upset when certain information (private pictures, habits or hobbies) become public. But you always care about your appearance.
Losing control?Modern social media are putting a bit of a wrench in this form of social engineering we all engage in. A date or potential employer can look us up on the internet, finding out things we'd rather not share. And if the data isn't available openly, they can probably just pay for it. Awareness of this is still rather low but, like the Silicon Valley folks keep their kids from using computers and even send them to analog schools, many tech people I know are far more careful with their online profile than the average consumer, who happily takes the free data storage for uploading their lives to servers in the cloud.
There is a time factor at work here. This technology arrived when my generation was (mostly) old and wise enough not to put too much embarrassing stuff online. But just think of everything you did before you turned 18 - I don't know about you, dear reader, but I sure don't want that online. Yet this is exactly what the current and future generations face! Why else are tools which promise to delete your data after a short time, like Snapchat and friends, so popular - and why else do people get so upset when the promises about deleting data are broken?
Because they are being broken, and will continue to be, either by the companies themselves (your data is worth more than you think!) and by governments, hackers and so on.
I think it is important to realize how a lack of privacy impact us, as humans. In the end, it might be the most important argument: in this digital age, we lose the abilities to control how we present ourselves to others. Time to take back our data and decentralize.
EDIT: some news that came out one day after my blog post prompted some further thoughts.
Photo taken at the Druplicon with Drupal professional Marcel Ritsema and the team of Dutch Drupal shop Merge.
So what is an all-round Drupal professional like me? That's someone who mainly uses Drupal as a tool to build websites and web apps, knows how to build a module and a theme (sometimes shares them with the community), but does not necessarily understand all the nuts and bolts of core, especially of the Drupal 8 core.
This blog post is about the 5 most valuable talks I’ve...Read more
Venue: The Campus, Bryanston
Not your average office park. It's nicely landscaped and has a huge center beach or pitch or lawn (depending where you're from). The buildings are all named after famous sports venues like Lemans. The nod to us Yanks (NOT New York Yankees) in Wrigley Field was a nice touch.
Best of all 100MB/day of internet for all who enter. That's not ideal if you're wanting to watch Youtube videos, but plenty if you just want to check a speaker bio or do con-related stuff. I thought the organizers did a great job of keeping the con inexpensive but valuable.
The catered food and drinks were really good, by my standards at least.
Apart from an unfortunate plumbing problem in the men's bathroom the second day that was quickly repaired, everything went off without a hitch.
Talks that I went to:
Ludell-Doughtie Writing Python Code to Decide an Election Keynote - he outlined the methodology and process they used during a recent (Libyan? - there was Arabic right-to-left text in the data) election.
The main take-aways for me were
- Use pre-written, open source software packages to standardize things, because you won't have time to roll your own or dink with inconsistent data/code formats when you are in the thick of it.
- It's a huge responsibility to write code for an election and manage the data, but it's a cool project.
My main takeaways:
Astronomy is wickedly cool and based on instrumentation, precision, and data paucity and, ironically, an overabundance of data (on average about 10GB/day, up to 50GB/day). Crawford mentioned more than once the desperate need to "catch as many photons as possible because there are so few coming in." Yeah, photons, like particles of light, just wow.
Python is used for everything where it is appropriate to use it. There are plenty of problems that don't require you to be a genius rocket scientist like Crawford. sysadmin, data, and, perhaps most importantly, web. They're using MySQL and a web frontend to distribute data throughout the world on a daily basis to other astronomers who need it. I'm always biased toward raw data myself; it is critical, but if you can't distribute it, it's not worth much.
Good talk for me to attend.
Albert Nel - Using Python in Blender Nel is a total joker (in a respectful, entertaining, good way), but not enough of a joker to bely a serious love and enthusiasm for both Python and Blender.
My own experience with rendering 3D stuff is a little dinking around with POV-ray. Blender is different in that it's big on animations and honoring the laws of physics. Writing Python to automate Blender is similar to, for lack of a better analogy, writing or recording VBA macros in Excel.
Nel did a lotto ball live demo and a Lego movie ocean demo (aside: I *LOVE* live demos, even when they go wrong - it's one of the best parts of Open Source conferences versus say, a godawful boring company Powerpoint presentation - thank you to the Nelster for accomodating us).
Blender is fun.
Allison Randal The Earth is not Flat (and Other Heresies) Keynote - a lot of times I don't relate a lot to keynotes because it's about super high level programmer craft stuff (disclaimer: I've worked as a dev, but I'm a geologist by trade) that I can't really control or understand.
So my mind wandered as Randal gracefully moved about the stage in her pixie frame and calmly laid down her knowledge. As I much younger man I would have been thinking, "She's so smart . . . and a very attractive individual to boot . . ." As a curmudgeony old fart my thoughts go more towards the "Damn - she's in perfect shape, speaks well, and knows what the hell she's talking about. I'm SOOO jealous; why can't I be like that?" In all seriousness, what always blows me away when I see Randal talk is the calm, matter of fact way she just presents facts and opinions without any malice or belligerence.
At one point she responded to a question by saying essentially, "Don't use AWS; use OpenStack <if you want to accomplish X>." Amazon was one of the three top corporate sponsors of the event, but it wasn't a SPEAK TRUTH TO POWER/VIVE LA REVOLUCION kind of thing, just a "this is what I think based on what I know."
I'm glad she's with "us" (the open source community) instead of selling her soul to the commercial world (which she could do at great profit).
Takeaway (tongue-in-cheek) - my view of me vis a vis Allison Randal (I'm the guy on the right).
They say "kill your heroes." Until I drop 40 lbs. and learn to express my ideas in a less conflict ridden manner, I am not ready to kill anything. Sorry, Ms. Randal. I hope this isn't too creepy, but you're going to remain the queen on my hero pedestal for a while :-\
Dr. David Mertz What I Learned About Python - and About Guido's Time Machine - from Reading the Python-Ideas Mailing List Keynote - David took an example of an idea for a sum function for lists and walked through all the considerations of sanity, performance, implementation, and ultimate rejection.
- The idea has to be intuitive and make sense (he actually experimented with this socialogically - that was kind of cool).
- The implementation has to be consistent.
- Performance matters (a lot).
- 1 trumps 2 and 3.
Adrianna Pińska An Introduction to Regular Expressions in Python Don't let the name fool you; this Polish lady speaks the Queen's English quite well. She apologized (sort of) ahead of time saying she would talk too fast, but, really, the talk was paced just right. I was really happy having gone to it.
My takeaways (for regex):
- Start with very general matches (.* for example) and work towards specific matches to gain skill and confidence.
(Aside: it's none of my business, but I think Ms. Khan is Muslim - she wore this really cool black-red combination outfit with a red head scarf - I borked my picture with my point and shoot camera, but I think a video of the talk is online. Anyway, for a diversity-oriented talk, the outfit was not only cool and classy, but perfect for a South African con).
Ridhwana's talk was well structured with some humor interjected. She started out with the most important point - that she loves coding and wants to do this for a career. There were a number of valid points and ideas put forward - it's worth checking it out online.
My main takeaway: IIRC not once did Ridhwana mention a Code of Conduct policy nor did she dwell on personal experiences with harassment. Essentially, she has had a pretty good experience with colleagues thus far. After a year with an all male crew (her excepted), she learned that prior to her arrival, firm rules had been established regarding off-color humor (basically banned) and such. For me, this is a pretty good example of how some firm (but not excessively draconian) rules can help make programmer-land a women friendly place. Ridhwana's point was that (at least in South African society) this is typically how relationships go anyway. You meet someone, then after some time you get to know them better, and at that time, you can loosen up a bit more as appropriate.
Hallway track: there were fewer than 150 people at this con IIRC, so if you wanted to talk to anyone, there was time. People involved with the new kilometer array telescope project, people involved with the older telescopes northeast of Cape Town, speakers, Dr. Mertz, Allison Randal, a PhD in computational mathematics who specializes in computer vision, South African devs, the organizers of the conference - where else could a grunt open pit mine geologist like me have access to such luminosity? pycon.za is pretty sweet.
The presentation covers the basics for creating a print back-end on a CUPS print server. The process is very straight forward and allows you to setup, essentially, print to anything - even your own application. Printing to an application can have a surprising number of applications given that nearly everything no matter how old or basic can print.