It's not really a side project but I spent today rebuilding the website for our asbury park, nj based coworking space - http://cowerks.com - would love some feedback/copy editing.
http://imgur.com/QUGUkxa PAGS: Programming Assignment Grading System. I'm a Msc student and a teaching assitant. Grading programming assignments of students takes so much time because of preparing files, environments, viewing code, multipe outputs etc. Besides my research, I developed this Docker based web application, where assignments are Dockerfile + run script + required/supplied/output files.
Main motivation: I can grade ~80 student projects in at most 1 hour, even looking at code besides their output. It took almost 2 days before, and repetitive tasks made me lose my mind. It keeps me sane, and saves me tremendous time. http://pags.cs.bilkent.edu.tr
Yes, and they can open same ports, same message queues, semaphores concurrently without problem, and makes it easy to define custom build environments. As a bonus, students can replicate my exact environment, so they cannot say "But it works on my machine"
Really like the idea, my uni is currently investigating use of domjudge to mark assignments, but couple that with face to face feedback while reviewing the code.
It's a really good idea to have something like this to create a canonical build environment. We've had quite a few issues on my course of "it works on my machine". The only thing I'm wondering about is GUI programs. Currently it looks like those wouldn't be possible, which is unfortunate, because several of the main programming assignments I've had have been Java GUI applications, C++ and OpenGL programs, etc. I wonder how these could be done?
I have already evaluted this; You can expose VNC through a port, and use NoVNC to play it on browser over websockets. The problem is, it is too slow and would generate a big burden on server.
In early March I whipped up http://Listen2EDM.com because I was tired of searching for new music manually through SoundCloud, GrooveShark/Spotify still sort of required discovery, and Pandora just didn't fit my personal pain-point.
While social media stats are meek, it's averaging about 32000 minutes played back each day (~400 uniques/day; ~2000/week). This has motivated me to develop it further and make the UI a bit more friendly, as well as features. The current iteration is http://i.imgur.com/Y6uNgkC.png
Great site! I'd really recommend you change the name though. 'EDM' is pretty cringe-worthy word these days (much like 'electronica' and 'alternative'), and just generally doesn't roll off the tongue too well.
I'll check yours out later, but have you tried Slacker? I got tired of Pandora because it tended to get too repetitive longer-term, but Slacker seems to have stations controlled by actual DJs that rotate new music in and out.
I'm actually planning to add "favorite playlists" so you can mix/match certain genres.
There's no back-end algorithm to determine what tracks you'll like... but developing a "likes"/"favourtites" system is easily doable. Will DEFINITELY consider it.
Also, I strongly disagree about the name change -- "EDM" might sound stupid, but its widely accepted terminology, and you instantly know what the site does based on the name.
EDIT: Since you mentioned Spotify, an "Open in Spotify" link for each song would be killer so users can save songs they like for later (if this is in there and I missed it, woops). Either way it's in my bookmarks bar now (and you need a favicon!).
> "EDM" might sound stupid, but its widely accepted terminology
Sure, it's widely-accepted terminology in the US or by people who are disinterested enough to label all electronic music as "EDM". It's also starting to refer to a very 'American' style of dance music, so it probably will turn off a lot of people, especially those most involved/interested in electronic music.
Music genres are one of those identity-defining topics[1], so it's best to sidestep the whole issue if there's any doubt!
I would argue against "EDM" in the name not because it sounds stupid, but because it limits the point of reference to a very specific style of music in a worldwide music-playing web service.
The reason why "Spotify" and "Rdio" are such good names is because musically they are undefined by the service and defined by you; you can listen to almost any kind of music on them. Also I think it's better to avoid acronymns; that can be a little obscure. Don't limit yourself or your business to identity-defining topics. See: Amazon, Zappos, Google, Apple, etc.
Pretty cool site man. We launched an customizable SoundCloud player that could fit in pretty nicely here. We even have a player skin that would match your color scheme :)
I hate to be that guy, but nothing you have under IDM is actually IDM. It's decent glitchhop/dubstep, but I don't know how/why you created that sub-category to shoehorn IDM in there somewhere.
This is a final class project (Advanced VB.) After the semester's over i'll probably rewrite it in C# (because I really am not a fan of VB) and find some use for it.
Edit: I just realized my last post made it look like the name of the app was "Homework"... no, it literally is homework :)
Finishing a project (Synthesis and analysis of vanillin from eugenol for those interested). Looking at some NMR-spectra. I love LaTeX for collaborating, makes everything much easier to manage.
I published my first chrome extension the other day. Its a very simple UI tweak (http://i.imgur.com/QoTK0N6.png) that adds buttons to move through Youtube videos frame by frame. You can also use mouse wheel to scroll through frames, which has lent it the name 'Frame Scroll'.
I'm working on an iOS app that lets you run Apache Bench (and dig & ping) from your phone. It has a Rails back-end that actually performs the ab command and parses the results into a JSON response.
All: it's not clear yet whether we should have "Screenshot Saturday" and "Idea Sunday" as regular features, or whether they should be weekly if we do. Happy to hear arguments pro and con, though perhaps not in this thread. (Edit: On second thought, we might as well discuss it here and keep it at the bottom.)
If are going to have these regularly, we'll ask the whoishiring account to post them automatically. That's the only account currently allowed to make bot submissions, and it seems better to extend an existing system than create a new one.
In the meantime, we changed both the title and the text of this submission to be closer to previous editions.
Currently I like the idea of Screenshot Saturday. If I'm not mistaken Hacker News wants more user created content. Screenshot Saturday allows the community to know what each other is working on, and can even help people build traction for their projects. I wouldn't be surprised if in the future people have their weekly Saturday posts prepared in advance with links to their email list sign up and Twitter handles. I do still think though that it should be named "Side Project Saturday"[0].
I'm indifferent about Idea Sunday, so if you were to remove one to keep the automated submissions to a minimum I would ask that it be that.
Yeah I understand that perspective. I really think that these are the type of posts that won't be upvoted like some post about Elon Musk or Bitcoin. I guess there's a good potential for promotional upvotes since there are so many people invested in the post being seen. Would it be possible to not count upvotes from people who post comments? (Not comments of comments, however.)
I'd like to propose a Problem Thursday's, in addition to Idea Sunday.
Topic: What problems are you experiencing that you want solved? IMO this is more conducive to creation of solutions and idea generation than Idea Sunday.
1) Sharing of problems doesn't impose any constraints on the solution, allowing readers to identify their own solutions (and thus feel more attached to the potential solution). To explain another way, my hypothesis is that people would rather come up with their own idea (aka solution) to a stated problem, than build out someone else's idea of a solution. (Even if the leap from problem -> solution is one cognitive cycle and nothing revolutionary).
2) I'd rather see people solving problems
All that said, the Idea Sunday thread is great, too.
Personally, as somebody who constantly works on small side projects I find Screenshot Saturday both entertaining and educational. I would assume that it should be reserved for early concepts or work still very much in progress while Show HN be used for finished or at least MVP level projects. In other words I hope Screenshot Saturday stays here...
While we at it, I would love to see Seed-fund HN monthly. It would be quite easy at this point for 1 or 2000 HNers to throw $50 each each month and fund one or two projects.
Idea Sunday, Screenshot Saturday, Problem Thursday, etc, the Invisible Hand [1] will probably regulate their worthiness and the right frequency.
Some will be have more discussion around them (Ideas, Problems) than others (Screenshots, MVPs,etc..) just because it is easier to talk the idea than to implement it. However Screenshots and MVPs benefit from the exposure of a single thread on the front page, I call this co-Marketing.
I think what we see here is the HN community expressing a need for more tools and ways to fully benefit from the community. The community wants to share ideas, show off their work, get help in solving problems, hire hackers. I would like to see more of all these.
I love the idea, and it makes me push myself harder when I see submissions that are light-years ahead of my project. It's almost to the point of intimidating how good some of these are..
I've been working on a simple news scraper to make a custom news aggregator for the websites I usually read.
I published an alpha version today on npm, and would really appreciate your feedback.
https://github.com/anmonteiro/mns
Simple photoalbum sharing service to host on your own (I use it for friends/family). Main purpose was to allow groups to collaborative upload and create albums. Also wanted to test some new things (koajs, reactjs). Feedback appreciated!
Localize.js, a javascript library for translating websites. It detects and translates text on your website, and provides a UI for ordering and managing translations.
The traditional localization approach is very time intensive, and requires a large time commitment to implement properly. Localize.js automates most of the localization process, which lets you localize your site in ~10% of the time it would normally take.
The traditional way you'd localize a website is by replacing text in your template files with string keys. For example:
<h1>Hello world!</h1> .
becomes...
<h1>{{ t 'homepage.hello_world' }}</h1>
You'd then maintain dictionary files that maps "homepage.hello_world" to "Hello world!", with a separate dictionary for each language. Additional complications arise when you want to pluralize phrases, since different languages pluralize phrases differently, etc. It's a pain to setup an effective localization workflow using the traditional approach.
Localize.js handles all of this automatically, and removes the need to convert your template files or manage your own phrases and translations. If you're interested in trying it out, I'd love to get in touch :) bp@brandonpaton.com
This game started at a game jam two years ago. It became an evening and weekends hobby, then it became a full commercial release, and we just launched on steam. (http://store.steampowered.com/app/250050/)
I thought that after the game launched I would have some time to relax. But support, bug fixes, responding to media requests, and planning next steps has kept me very busy.
Any advice on getting started with Unity? I've always tried to start a weekend project and get inevitably get bogged down in the details of Unity/Mono.
We started by hacking up the 2d platform sample game project that Unity bundles. Getting started was a bit rough, and the results from the first weekend were pretty buggy. Once we got to know Unity we were pretty happy with the decision though.
I'm sure that there are good resources for getting up to speed quickly, but unfortunately I don't have any recommendations for how to do it.
One suggestion that I can make is to stick to C#. Unity offers "Javascript", but Unityscript isn't really Javascript, and is more headaches than it is worth in my experience.
Congrats for the awesome game! :D It's really fun — and I also had lots of fun watching the playthrough on Game Grumps. (where I originally found out about it).
One thing I wondered: do you have a random Knight name generator based on something like markov chains, or do you just have a very, very long list of knight names?
Also mad props on the visual effect of the lava heating up the rocks, it looks super realistic. Did you write a custom shader for that?
I also picked this up after seeing it on Game Grumps. The combination of the game looking pretty interesting and them being really bad at it convinced me to just pick it up and finish it myself.
Just checked out the game trailer and it looks really good! The concept seems fun and the graphics are amazing. However I have to admit that I feel the title is not appropriate and a better one should have been chosen.
I saw your game on reddit a long time back, I really enjoyed it! Thanks for the reminder to go pick it up (I got the mailing list updates but ignored them)
Do you think you will be releasing another game under the same name?
Been working on my first Rails app for a few http://sixtasks.heroku.com because I think the idea of a to-do list is powerful, but the concept needs refining.
Also, I wanted to be able to track my productivity in a tangible way, and Six Tasks helps me do that: http://i.imgur.com/5bbLxJo.png
Trying to add features like smarter task recording, and maybe tagging list items, idk I'm just making it up as I go along
Thats actually pretty amusing, though I can't help but wonder whether it will only be convenient if actually integrated into DOTA/Facebook etc. At the moment, isn't it just DOTA: Stalker?
I'm really not sure. It emerged from a few of my friends noticing that we often check each other's DOTABUFF pages, especially after a few of us moved to the opposite coast. I suppose it's basically just DOTA stalking at the moment.
That's also a potentially interesting title... DOTAstalker.
Together with my brother I've been working on our little passion project "Nations Online" (still very early stage). The goal is basically a decent Civilization-like game that runs in the browser and on tablets with improved and larger scale multiplayer (at least up to 32 players) and 3D graphics. It was mostly born out of frustrations with Civ 5's slow and buggy multiplayer mode.
The server is based on Scala & Akka, the client is plain JavaScript and WebGL/ThreeJS.
For early stage it looks pretty good! Would move to see it completed. It suit Civ style play particularly well if it could be set up to notify everyone when it was their turn (similar to how some online chess apps function).
A web application for my Computer Science dissertation (I'm writing up the report at the moment).
The idea was to produce a web app that you upload your bank statements to, the system categorises the transactions and then predicts how much money you will spend in each category next month.
Underneath the system is using machine learning techniques to model the spending, deciding whether or not a particular transaction will occur and triple exponential smoothing to predict how much would be spent.
I'm currently seeking research participants if any UK based (not tested with non UK data) users would like to give it a try: http://secure.pezcuckow.com/register. There's a survey link on the home page.
--
Edit: I also put together a biblatex checker which I've been using to validate my reference files for my report.
Neat. I just posted on reddit so I guess I'll just grab the same text.
-----------
This is still an expense tracker "Spendy".
- Multiple currencies are handled smooth. You have one main currency but you can add multiple others and set up exchange rates for them. You can add expenses/incomes for them in any currency and in the log-view it will automatically show you both the entered currency and a smaller converted amount in your main currency. Perfect for travellers.
- Easy, quick. Non verbose UI.
- Data will not be locked in in any way. Dropbox sync, email data in CSV etc.
- Pretty? Color theme can be changed.
- Basic basic basic charts for now. 14 days overview is implemented. Will do more later.
-----------
So I've worked a bit more on the app and I thought I'd put it here again.
This is the previous version: http://i.imgur.com/L54TV4O.jpg
- Changed color to green, although I've made the color-theme chooseable by the user (see the bottom). The color theme is on the buttons, the "tints" (such as some text colors and etc).
- Made the Money log entries bigger/more space.
- Less stuff in the menu.
- Added a "settings" panel.
- Chart is now colored and includes both incomes and expenses.
- Before I had alertviews for lots of things. This has been replaces by inline buttons (see: delete/edit). These are also affected by the users chosen color btw.
- The tag-view is still bare-bones, but centered and alternating row-colors.
- The Currency-view is completely remade, see the bottom for how it looks. I tried to make "more" out of virtually no info and I do think it worked pretty well.
NodeJS module to convert maps (shapefiles, geojson, topojson, or KML) into 3D models that are suitable for 3D printing. I've done a lot of 3D printing of map data before, but mostly using a pretty manual process to create the models. This auomates the whole thing.
The posted image is population by census block group in the bay area. The raw data is shown on the left and my converted 3D model for the 3D printer is on the right.
Getting it ready for github and I'm also planning to publish it to npm. It's still pretty rough around the edges, so hopefully in another weekend or two I'll get it out there.
219 comments
[ 4.7 ms ] story [ 267 ms ] threaddisclaimer - it is built on squarespace.
Main motivation: I can grade ~80 student projects in at most 1 hour, even looking at code besides their output. It took almost 2 days before, and repetitive tasks made me lose my mind. It keeps me sane, and saves me tremendous time. http://pags.cs.bilkent.edu.tr
Looks like an area someone could create a company :)
noVNC: https://github.com/kanaka/noVNC
While social media stats are meek, it's averaging about 32000 minutes played back each day (~400 uniques/day; ~2000/week). This has motivated me to develop it further and make the UI a bit more friendly, as well as features. The current iteration is http://i.imgur.com/Y6uNgkC.png
So I went with whatever I could think of.
Open to suggestions :)
There's no back-end algorithm to determine what tracks you'll like... but developing a "likes"/"favourtites" system is easily doable. Will DEFINITELY consider it.
Also, I strongly disagree about the name change -- "EDM" might sound stupid, but its widely accepted terminology, and you instantly know what the site does based on the name.
EDIT: Since you mentioned Spotify, an "Open in Spotify" link for each song would be killer so users can save songs they like for later (if this is in there and I missed it, woops). Either way it's in my bookmarks bar now (and you need a favicon!).
Sure, it's widely-accepted terminology in the US or by people who are disinterested enough to label all electronic music as "EDM". It's also starting to refer to a very 'American' style of dance music, so it probably will turn off a lot of people, especially those most involved/interested in electronic music.
Music genres are one of those identity-defining topics[1], so it's best to sidestep the whole issue if there's any doubt!
[1]: http://paulgraham.com/identity.html
The reason why "Spotify" and "Rdio" are such good names is because musically they are undefined by the service and defined by you; you can listen to almost any kind of music on them. Also I think it's better to avoid acronymns; that can be a little obscure. Don't limit yourself or your business to identity-defining topics. See: Amazon, Zappos, Google, Apple, etc.
I'll consider adding a Spotify link in the next version (will be released soon, I hope).
RE: Favicon. I need a lot of design stuff! I'll whip up something for the next iteration too.
Check it out at https://www.toneden.io/player. The repo is at https://github.com/ToneDen/toneden-sdk.
Just hit me up if you want some help integrating it.
Evidently, they are not always accurate. :(
Homework - a basic CRUD app in VB to manage reservations for a movie theatre, through a remote database connection.
Edit: I just realized my last post made it look like the name of the app was "Homework"... no, it literally is homework :)
Finishing a project (Synthesis and analysis of vanillin from eugenol for those interested). Looking at some NMR-spectra. I love LaTeX for collaborating, makes everything much easier to manage.
Its on the Chrome store: https://chrome.google.com/webstore/detail/frame-scroll-for-y...
and I wrote a short blog post: http://michaelyockney.com/frame-scroll-extension-for-chrome/
https://github.com/curtisgithub/swiftacular
http://imgur.com/APYWfLn
The back-end is a Rails API, the front end is an Ember app. This was a nice project to learn Ember.
I'm working on an iOS app that lets you run Apache Bench (and dig & ping) from your phone. It has a Rails back-end that actually performs the ab command and parses the results into a JSON response.
If are going to have these regularly, we'll ask the whoishiring account to post them automatically. That's the only account currently allowed to make bot submissions, and it seems better to extend an existing system than create a new one.
In the meantime, we changed both the title and the text of this submission to be closer to previous editions.
I'm indifferent about Idea Sunday, so if you were to remove one to keep the automated submissions to a minimum I would ask that it be that.
[0] https://news.ycombinator.com/item?id=7580150
Topic: What problems are you experiencing that you want solved? IMO this is more conducive to creation of solutions and idea generation than Idea Sunday.
1) Sharing of problems doesn't impose any constraints on the solution, allowing readers to identify their own solutions (and thus feel more attached to the potential solution). To explain another way, my hypothesis is that people would rather come up with their own idea (aka solution) to a stated problem, than build out someone else's idea of a solution. (Even if the leap from problem -> solution is one cognitive cycle and nothing revolutionary).
2) I'd rather see people solving problems
All that said, the Idea Sunday thread is great, too.
Idea Sunday, Screenshot Saturday, Problem Thursday, etc, the Invisible Hand [1] will probably regulate their worthiness and the right frequency.
Some will be have more discussion around them (Ideas, Problems) than others (Screenshots, MVPs,etc..) just because it is easier to talk the idea than to implement it. However Screenshots and MVPs benefit from the exposure of a single thread on the front page, I call this co-Marketing.
I think what we see here is the HN community expressing a need for more tools and ways to fully benefit from the community. The community wants to share ideas, show off their work, get help in solving problems, hire hackers. I would like to see more of all these.
http://imgur.com/a/92W2u
https://github.com/rverton/circlephotos
1) http://i.imgur.com/S6gv2Gt.jpg
http://hopgenie.com/ - Community for travelers with travel tips, advice, questions etc.
2) http://i.imgur.com/DI2sO5o.png
http://sciboards.org/ - News aggregator / Q&A for scientific research
Localize.js, a javascript library for translating websites. It detects and translates text on your website, and provides a UI for ordering and managing translations.
Docs: https://localizejs.com/docs/usage/installation
The traditional way you'd localize a website is by replacing text in your template files with string keys. For example:
<h1>Hello world!</h1> .
becomes...
<h1>{{ t 'homepage.hello_world' }}</h1>
You'd then maintain dictionary files that maps "homepage.hello_world" to "Hello world!", with a separate dictionary for each language. Additional complications arise when you want to pluralize phrases, since different languages pluralize phrases differently, etc. It's a pain to setup an effective localization workflow using the traditional approach.
Localize.js handles all of this automatically, and removes the need to convert your template files or manage your own phrases and translations. If you're interested in trying it out, I'd love to get in touch :) bp@brandonpaton.com
You can also translate text manually, like this: Localize.translate('Hello!');
A game, built in Unity, about sacrificing knights and using their dead bodies to solve puzzles.
http://i.imgur.com/qeuo84C.jpg
http://i.imgur.com/g1oFM31.jpg
http://i.imgur.com/7PoX6th.jpg
This game started at a game jam two years ago. It became an evening and weekends hobby, then it became a full commercial release, and we just launched on steam. (http://store.steampowered.com/app/250050/)
I thought that after the game launched I would have some time to relax. But support, bug fixes, responding to media requests, and planning next steps has kept me very busy.
http://www.LifeGoesOnGame.com
I'm sure that there are good resources for getting up to speed quickly, but unfortunately I don't have any recommendations for how to do it.
One suggestion that I can make is to stick to C#. Unity offers "Javascript", but Unityscript isn't really Javascript, and is more headaches than it is worth in my experience.
One thing I wondered: do you have a random Knight name generator based on something like markov chains, or do you just have a very, very long list of knight names?
Also mad props on the visual effect of the lava heating up the rocks, it looks super realistic. Did you write a custom shader for that?
Knight names are a mix of a list of names, and a random name generator that pulls from a pool of first names, surnames, titles, etc.
The lava heat on the rocks is indeed a custom shader, put together by our artist.
Any connection to that, by any chance?
EDIT: Hmm, HN doesn't do Markdown?
Do you think you will be releasing another game under the same name?
It's really hard to say what's next. There will probably be more work to do on Life Goes On first.
Also, I wanted to be able to track my productivity in a tangible way, and Six Tasks helps me do that: http://i.imgur.com/5bbLxJo.png
Trying to add features like smarter task recording, and maybe tagging list items, idk I'm just making it up as I go along
A semi-social stat tracking website for DOTA players. More advanced statistics than gathered by DOTABUFF, but those aren't shown in the screenshot.
That's also a potentially interesting title... DOTAstalker.
Together with my brother I've been working on our little passion project "Nations Online" (still very early stage). The goal is basically a decent Civilization-like game that runs in the browser and on tablets with improved and larger scale multiplayer (at least up to 32 players) and 3D graphics. It was mostly born out of frustrations with Civ 5's slow and buggy multiplayer mode.
The server is based on Scala & Akka, the client is plain JavaScript and WebGL/ThreeJS.
The idea was to produce a web app that you upload your bank statements to, the system categorises the transactions and then predicts how much money you will spend in each category next month.
Underneath the system is using machine learning techniques to model the spending, deciding whether or not a particular transaction will occur and triple exponential smoothing to predict how much would be spent.
Screenshot of the homepage (fake data): http://i.imgur.com/Tr05dfd.png
I'm currently seeking research participants if any UK based (not tested with non UK data) users would like to give it a try: http://secure.pezcuckow.com/register. There's a survey link on the home page.
--
Edit: I also put together a biblatex checker which I've been using to validate my reference files for my report.
http://i.imgur.com/an054GS.png https://github.com/pezmc/biblatex-check
-----------
This is still an expense tracker "Spendy".
- Multiple currencies are handled smooth. You have one main currency but you can add multiple others and set up exchange rates for them. You can add expenses/incomes for them in any currency and in the log-view it will automatically show you both the entered currency and a smaller converted amount in your main currency. Perfect for travellers.
- Easy, quick. Non verbose UI.
- Data will not be locked in in any way. Dropbox sync, email data in CSV etc.
- Pretty? Color theme can be changed.
- Basic basic basic charts for now. 14 days overview is implemented. Will do more later.
-----------
So I've worked a bit more on the app and I thought I'd put it here again. This is the previous version: http://i.imgur.com/L54TV4O.jpg
And this is the new one: http://imgur.com/EtcpEqp (excuse the layout and/or the large res)
I'll see if I can sum up the changes:
- Changed color to green, although I've made the color-theme chooseable by the user (see the bottom). The color theme is on the buttons, the "tints" (such as some text colors and etc).
- Made the Money log entries bigger/more space.
- Less stuff in the menu.
- Added a "settings" panel.
- Chart is now colored and includes both incomes and expenses.
- Before I had alertviews for lots of things. This has been replaces by inline buttons (see: delete/edit). These are also affected by the users chosen color btw.
- The tag-view is still bare-bones, but centered and alternating row-colors.
- The Currency-view is completely remade, see the bottom for how it looks. I tried to make "more" out of virtually no info and I do think it worked pretty well.
Any feedback is welcome!
-------
And a short GIF of the app in action. http://imgur.com/PFnRae7
-------
EDIT: Format. Sorry about the length of this text.
[1] http://en.wikipedia.org/wiki/Linus%27s_Law
NodeJS module to convert maps (shapefiles, geojson, topojson, or KML) into 3D models that are suitable for 3D printing. I've done a lot of 3D printing of map data before, but mostly using a pretty manual process to create the models. This auomates the whole thing.
The posted image is population by census block group in the bay area. The raw data is shown on the left and my converted 3D model for the 3D printer is on the right.
Fix for ugly `npm` output.