Ask HN: How should we structure this company? - <AUTHOR>

Ask HN: How should we structure this startup?
Cast of characters:
Person A has a significant consulting practice in an industry and wants to start building tools for clients that A thinks are resellable (a la 37signals).  A's got a prototype that is functional but doesn't scale both technically and as a product (only integrates with one client) etc.
Person B: Not interested in contract work but interested in working for equity stake in the company.  Smart technical guy who has worked with A in the past.
Backdrop:
Person A and B get along well, have worked together successfully in the past and during the development of the project.  B has now completed a rewrite of the software to support multi-tenants, scale to some reasonable estimate and the product is ready to go.  A is now working with his consulting client base to begin generating revenue for the product.  It looks like the product will make revenue, but relatively meager in the first few years (maybe enough to pay these guys a mid-5 figure salary if all the clients sign up).
Questions:
How should this company be structured so that it can function as a lifestyle business for both A and B?  What should A and B do to protect themselves from the other no longer participating in the business?  What if A and B want to take investment in the future?  If the percentage ownership is different for A and B, what's to protect the lesser owner?
Possible endings:
- Give A and B profit rights in an LLC
- A and B get equity that vests over time
- A and B get full equity immediately with some buyout provision
Thanks for reading this far and of course, we are also consulting a lawyer but would like to get founders' opinions as well. <comment><USER2> LLC: easy to setup, vesting/equity can be tricky, pass through taxes. C-Corp: harder (more expensive) to setup, vesting/equity relatively easy, double- taxation.

If you can swing it, I think the "right" way would be to setup a C-Corp so you've got all your ducks in a row from the get-go -- you won't need to worry about restructuring if you ever add staff/funding in the future, one of you decides to leave, etc.

If nothing else, I _strongly_ recommend that you setup this new product outside the existing company that the consulting is done under. (I have direct experience with this as one of the companies I'm advising had to deal with this mess recently when they wanted to give out equity to employees, deal with investors, etc.)

<comment><AUTHOR> Hi paulsingh - thanks for the input. Agreed on setting it up outside the existing company that the consulting is done.

If we did it in the C-Corp, do you have any advice for how to handle the equity? Do both founders vest into it over time?

Not implying this would happen as both parties are relatively reasonable in this situation, but in situations where the companies aren't split equally, what's to prevent the majority stakeholder from diluting the minority stakeholder to nothing or to change the terms of the agreements themselves?

<comment><USER2> Vesting: Absolutely, no questions about it. Everyone should vest -- this keeps someone from getting equity and immediately quitting (for example).

You'll want to talk to a lawyer about anti-dilution provisions but I suspect that you'll want to make sure that the minority shareholder has voting rights to prevent situations like the one you describe.

FWIW, this is a relatively "vanilla" type of situation. (You'll setup a new company, each of you will sign over the IP to the new product and then have equity stakes in this new entity.) Have a lawyer review all the docs before you sign them and this will be pretty straightforward -- please do yourself a favor and don't cut corners just to save a buck. :)

</comment></comment></comment><comment><USER3> Since you may want to raise money, a Delaware Corp, with shares vesting over time for both A and B seems like a good fit. As far as profit splits go, that can be set forth in the bylaws however you want. A buyout option provision seems like a good idea too.

<comment><AUTHOR> Curious how buyout provisions are usually priced - seem like several options to me but none seem optimal:

1\. Based on some predefined amount 2\. Based on some metric like revenue of the company, number of customers 3\. FROR from an outside offer

Any other suggestions for methods?

<comment><USER3> You can base it on anything you want that seems fair to both of you. Sometimes in a company that is a good size but is not public, you might want to require a third party to evaluate the value of the company, and set forth a timeframe for the buyer to come up with the cash or note to buy the shares with. In a smaller company your CPA can probably come up with a value for you.

One thing to think about is what serves you now may not serve you in 2 years. If that is the case you can change the wording to suit the circumstances better when you need to. Talk to your attorney and ask what seems best based on your situation now.

One reason a buyout clause is smart, is that corporate shares are considered the same as money by a divorce court and can be assigned by the judge to the person's ex spouse. Meaning you could have a hostile, non-contributing person on your board. So be sure to talk to your attorney about that.</comment></comment></comment>


Pocket-Sized Virtual Keyboard Now Fits On Your Keychain - <AUTHOR> http://www.urbanlol.com/pocket-sized-virtual-keyboard-now-fits-on-your-keychain/

<comment> saw-lau Similar devices were made for the PalmPilot (never tried one, but remember they were being hyped back in the day):

[http://www.hutchison- whampoa.com/en/media/press_each.php?id=...](http://www.hutchison- whampoa.com/en/media/press_each.php?id=1329)

</comment><comment><USER2> hehe "fits on a keychain", I think most things fit on a keychain if you remove the restraint of "fits in your pocket"

I like the idea of these projection keyboards, but they need to be built into a mobile device, not carried around as another cigarette-box sized accessory in my jeans.

I also suspect that the lack of tactile feedback may make typing no faster than on the phone itself.

<comment><USER3> I can type pretty well on my iPad without tactile feedback, but not when the display is at an angle that makes it easy to see what I've typed (or am typing in response to).

I think the idea is great but agree it should be built into my smartphone ... until then, I'll stick to carrying my Logitech BT keyboard in my bag.

</comment></comment><comment><USER4> Does anyone have a link to a reputable review where the author has actually tried it in person? 'cos if this works well that is really cool.

</comment><comment><USER5> Terrible marketing strategy to emphasize product size. Normally any device smaller than regular keyboard is an achievement. They suppose to emphasize accuracy and usability.

</comment><comment><USER6> There are some really bad photoshops in there...

</comment><comment><USER7> I tried one of these around the time of the XBOX360 launch down at the Microsoft HQ here in Melbourne, Australia.

Needless to say: they are terrible.

They have a fundamental flaw of your fingers being in the way of themselves. You are forced to alter your typing style drastically and even then typos are frequent.</comment>


Toronto startup community runs Hack for a Cause - <AUTHOR> http://hackforacause.org/

<comment><AUTHOR> Hey everyone -

The goal with H4aC is to turn this into a movement.

We're trying to do the opposite of the TEDx model - minimize the red tape, but maximize the support. We're trying to build a framework for running a successful Hack and I'd love to get the HN community's thoughts on what we've got so far (<http://hackforacause.org/build.html>). Borrowed heavily from agile and lean principles, but scaling back the development cycle into 10 hours of coding is an interesting challenge.

We also relied heavily on tools like Dropbox and Github to centralize design assets and plan on open sourcing all the code.

I'm actually amazed we were able to ship 12 code-complete products including an API and I'd love to be able to build a framework to allow people in any community to run a successful Hack. Planning is underway for events in Dublin, Buenos Aires, Palo Alto, and Beijing and if you'd like to get involved or create a new community please reach out!

Thanks,

Sachin

</comment><comment><USER2> It's quite hard to describe that night. No egos, no ownership issues, and no politics. Caring and talented people coming together, shipping revolutionary products for an organization that is committed to freeing children from poverty.

</comment><comment><USER3> Also trying to open source all the code from the hack so future hacks and causes can iterate what's already created.

</comment><comment><USER4> Great initiative guys!</comment>


Ask HN: What are some alternatives to Show HN? Other platforms to showcase - <AUTHOR> <comment><USER2> [https://github.com/mmccaff/PlacesToPostYourStartup](https://github.com/mmccaff/PlacesToPostYourStartup)

They've put together a very comprehensive list of places to post your startup, and some will certainly be relevant to just side projects etc. Depending on what you're looking to showcase. This will certainly be one source I'll look to, for what I launch my side project.

<comment><USER3> I've had some great luck promoting [http://oppsdaily.com](http://oppsdaily.com) with some of the subreddits mentioned.

In addition, [http://reddit.com/r/financialindependence](http://reddit.com/r/financialindependence) does a weekly self-promotion thread which has been a nice little bump in traffic.

[https://www.reddit.com/r/financialindependence/comments/5y7b...](https://www.reddit.com/r/financialindependence/comments/5y7bfe/weekly_selfpromotion_thread_march_08_2017/)

<comment><USER4> Kudos on Opps Daily, big fan here, it's great!

<comment><USER3> Thanks! Glad you are enjoying it :D

<comment><USER4> Any tips on starting a newsletter? Or resources on landing pages, the newsletter design or mailing platform? Or anything you wished you knew before you started? :)

<comment><USER3> Wow, this would be a huge comment if I tried to tackle each of these topics! Also, it's only been about 2 months since I officially started e-mailing so take what I say with a grain of salt :)

I will say that It's been a valuable exercise to e-mail every unsubscriber and ask why they left.

The number one reason people leave is because they don't want to get an e-mail every day. We now offer a weekly recap email because of this feedback, and I've actually had people return to the list who had previously left.

Sending an e-mail to someone is a privilege. Especially a daily e-mail. In my opinion our time/attention is one of the most precious things we have.

I want the reader to be able to read and comprehend the opportunity in under 30 seconds and leave feeling like the e-mail had a positive impact on their day.

If you're looking for any advice in specific, get in touch, I'm always happy to help :)

</comment></comment></comment></comment></comment></comment><comment><USER5> Show HN is good for technical feedback, but often HN won't match up well with the target audience. An example where this comes up is when HN commenters complain about how they never read email newsletters so the sign up form / email required / create an account step is a "complete waste of time" (but email works!).

The most effective approach to actually getting customers is to build a reputation as a problem-solver within the specific, related niche communities and then offer the new tool as an alternative solution to problems. Most people posting HN front-page follow-up note how the wave of traffic doesn't typically convert well.

</comment><comment> grey-area If it's for a specific niche, probably best to contact newsletters or news sites about that niche, and try to get them to feature it, that's better than showing something to HN or similar sites. If you pick news outlets targeted at your subject area you get a specific audience who is already interested in your idea and is a much easier sell, and you might get far more useful feedback - you want to talk to potential customers ideally. You don't say what you want to showcase, it might help if you did as then people could give specific suggestions.

If it's Go related (written in Go or about Go), it's welcome at [https://golangnews.com](https://golangnews.com)

<comment><USER6> Is there a Rust equivalent to golangnews?

<comment><USER7> [https://www.reddit.com/r/rust/](https://www.reddit.com/r/rust/) and [https://this-week-in-rust.org/](https://this-week-in-rust.org/)

</comment></comment></comment><comment><USER8> If it's design-centric or technology that can helpdesigners, I'd suggest posting it on Designer News. The kind of designers on there varies, but I would say most are UI, product and front-end types.

[https://www.designernews.co/](https://www.designernews.co/)

</comment><comment><USER9> [https://www.producthunt.com/](https://www.producthunt.com/)

<comment><AUTHOR> But i am guessing product hunt does not showcase all products. There is a whole selection process.

<comment><USER10> well, it DOES list everything (in the 'new today' tab I think). But by default it shows the ranked list of products. In that sense, it works similar to HN where only top Show HNs are displayed in the homepage.

</comment></comment></comment><comment><USER11> I'm actually building [http://tagly.azurewebsites.net](http://tagly.azurewebsites.net)

It's like HN with tags and custom functionality. I use it mostly as bookmarking service about AI and Machine learning.

Example of custom tag, here is the tag: CommentsByHackernews -- [http://tagly.azurewebsites.net/Item/Details?id=7febe5f0-fe64...](http://tagly.azurewebsites.net/Item/Details?id=7febe5f0-fe64-436e-955f-63aa8cd7387c)

Fyi: Currently, i have never send an email to the ones who subscribed. So if you're interested : [https://goo.gl/forms/obYXBzhIE14kZcM73](https://goo.gl/forms/obYXBzhIE14kZcM73)

</comment><comment><USER12> I've recently made a StartupFeedback subreddit. It's still very small, but I think you might find it useful.

[https://www.reddit.com/r/StartupFeedback/](https://www.reddit.com/r/StartupFeedback/)

</comment><comment><USER13> [https://betapage.co](https://betapage.co)

</comment><comment><USER14> A good place to get some exposure pre-launch: [https://betalist.com/](https://betalist.com/)

Edit: here's an IFTTT recipe to get an email when a new startup is posted. So far this has been my main interface with betalist [https://ifttt.com/applets/13031p-email-me-when-a-new- startup...](https://ifttt.com/applets/13031p-email-me-when-a-new-startup-is- featured-on-betalist)

</comment><comment><USER15> I made a Discord channel [1] for startups and entrepreneurs. The goal is to have a place to hangout, share ideas, and chat with similarly ambitious people. It's pretty new, but every time someone in there has posted their site people have checked it out and given feedback.

1\. Point at Infinity - [https://discord.gg/F4jjKu7](https://discord.gg/F4jjKu7)

</comment><comment><USER16> I have been on [http://lobste.rs](http://lobste.rs) for quite a while now it's a small community with quality stories. But you need an invite to join.

<comment> grey-area Do you give out invites? I would like to join but didn't know who to ask.

</comment></comment><comment><USER17> I'm the CTO of Collaborizm.com a great place to post and get feedback from a global tech minded audience.

<comment><USER18> Probably a false positive but [https://www.collaborizm.com/](https://www.collaborizm.com/) triggers a warning from Bitdefender :

"Bitdefender Endpoint Security Tools blocked this page The page is blocked by Bitdefender Endpoint Security Tools Cloud (Phishing).

Access from your browser has been blocked."

</comment></comment><comment><USER19> This Thread is God-sent, thank you! We are almost done with the first version of our app - will be out around April!

</comment><comment> awinter-py FB/google ads</comment>


Ask HN: How to Build a Job Database? - <AUTHOR>

I need 14 questions answered by entry level engineers. I am also looking for entry-level people in finance and people with "dream jobs"
How can I find people to answer the questions?
Note: I cannot work through my university because of my university's relationship with companies, publicizing student information, etc. <comment><USER2> You could try <http://www.gopollgo.com>

You haven't been too specific about what you're trying to do, so there's not much else anyone can do to help without more information.

What exactly are you trying to accomplish?

<comment><AUTHOR> Okay,

I want to use entry-level employee information (had internship, graduate degree) about certain professions to graphically display hiring trends. Sort of like a Linkedin but without detailed questioning.

The job trends will be shown through images which are generated from questions to represent a worker's attributes.

If it helps:

<http://www.resumeicons.com>

yes,no?

<comment><USER2> Oh - I saw this posted the other day. Prefacing my answer - I don't understand the goal of your site, so I'm not sure how much I can help. I'd recommend that if you want people filling out your survey on your website, you'll need a much better interface. The site just doesn't look too professional or trustworthy. Sites like surveymonkey and wufoo can get you some nicer looking forms.

There's enough on linkedin to give you most of the information you'd need to graphically show hiring trends - many profiles are public, you'd get more than enough info to see what people are doing (profiles typically have college, grad year, and positions they've held).</comment></comment></comment>


Why don't we have Wayland on Raspberry Pi yet? (2018) - <AUTHOR> https://joshondesign.com/2018/03/26/linux_graphics_state <comment><USER2> I enjoyed the article but this quote jumped out at me: "What took thirty years to build isn't going to be replaced in a day." This was in regard to replacing X11 with Wayland. It's funny because it would be closer to the truth to say that X11 took 5 years to build, and for the last 25 years everyone has been trying to get off of it, but in the meantime piling more stuff on top of it since that's easier than starting from scratch. 25 years ago there were people saying stuff like, "I wish we had something else, but this is what we're stuck with, and it's just too much work to make a new window system, so let's just add another protocol extension."

So we're already 25 years into trying to replace X11, which is already far longer than the period of time in which it was being designed and actively developed on a foundational level. There's got to be some good lessons learned in all of this about software lifecycles or getting it right the first time or knowing when to move on or OS development by way of mailing list consensus. I totally get why it's still used after all these years, it performs an essential task- but I bet the original creators would be the ones most shocked that it's still a thing in 2019.

<comment><USER3> I've been reading through the Vulkan spec, which is in way similar in that OpenGL has been extended since its introduction in 1992 with more and more features to support new graphics capabilities as they evolved.

I've seen Vulkan called the successor to OpenGL, but reading the spec it seems more like the end game for raster graphics card programming. OpenGL 4.0 was released in 2010, and since then changes have been incremental. We more or less have figured out how to do raster graphics (ray tracing may be a different story), so it made sense to invest tens (hundreds?) of millions of dollars to develop the Vulkan spec, and then many millions more to implement it.

What other technologies are there were we are more or less at the end game? I know Qt5 widgets is considered feature complete for desktop apps.

<comment><USER4> Photoshop pretty much got it right a couple decades or so ago, and they've just been porting it, smearing on new lipstick, and figuring out how to make more money with it ever since.

<comment><USER5> I would argue that this is true of most of Microsoft Office as well. When did they really add a new feature to PowerPoint that you had to have?

And it's no surprise both Adobe and Microsoft have pushed people towards a subscription model for this software: Nobody in their right mind would pay for upgrades otherwise. Arguably Office you need every ten years to ensure you have security updates because of the amount of foreign content you process with it, but Adobe? Psh.

<comment><USER6> Don't know when it was added, but I recently found out that you can have multiple synchronized Word windows of the same document.

<comment><USER4> On different people's screens?

<comment><USER7> Yes (in Office 365, in your browser). See [https://support.office.com/en- us/article/collaborate-on-word...](https://support.office.com/en- us/article/collaborate-on-word-documents-with-real-time-co- authoring-7dd3040c-3f30-4fdd-bab0-8586492a1f1d)

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Wayland was designed to solve a very specific set of use cases and nothing more. The number of times I have read "wayland doesn't do that" or "that's not wayland's job" or "wayland is just the compositor" are telling. Of course a stack that is compositor + windowing toolkits is going to miss countless mission critical use cases in countless workflows, not to mention that it is an even further regression from composability in the window manager space and no, dbus is not the answer either, you can't make literally every program depend on dbus just to be able to do simple things like take a screenshot, or automatically rearrange windows. Every program having to use a toolkit or implement a message passing system themselves will never happen because few developers have the expertise needed to do so. This is in part why things like X11 were created in the first place, so that there could be separation of concerns. Wayland stomps all over that and thus doesn't even offer something that could become a defacto standard, so it seems that X11 will continue to live on.

<comment><USER9> What are your use-cases not addressed by Wayland?

The sway compositor has been standardizing protocols for screenshots, screen recording/streaming, composable desktop components and so on.

<comment><USER10> Just wait until everyone else creates their own standard protocols.

<comment><USER11> Nah, those protocols are also implemented in wl-roots which is the foundation of virtually every single wayland compositor, otherwise you'd have to write 50+k of lines of code yourself.

<comment><USER12> Only if you ignore the most widely used Wayland compositors on the desktop, Mutter and Kwin. I doubt all compositors built upon wlroots come even close to the user bases of those two.

</comment></comment></comment></comment></comment><comment><USER13> I totally feel this guy's pain. When I started at Sun there was a 'direct to framebuffer' window system which we called "Suntools" It was fast and pretty much all in the kernel and pretty awesome, except this new thing "X11" allowed you to have a big beefy machine (sort of a Raspi 3 equivalent today :-)) with its fans and noise in some machine room while the display and input was on your desk. There were even people who made things they called "X terminals" which were instant on devices that provided the display, mouse, Etc. Sun switched over to X11 and the UNIX windows wars began.

When the SparcStation I came out, I backported Suntools to its frame buffer on a lark and it was _screaming_ fast. That was pretty fun.

Oddly enough, I still use X11 a lot. I have probably half a dozen ARM systems around my office/lab doing various things, and it is simpler to run an X11 client locally and just kick off an xterm to these machines than it is to try to do some sort of KVM nonsense. It is also more capable than running a web server on the Pi and trying to interact with it via web "application" pages.

Oddly enough, I recently (like about 6 months ago) became aware of "KVM over IP" which, believe it or not, you hook this piece of hardware to the display port (or HDMI) and the USB port, and it sends the video (and HDMI audio), out over the network to a purpose built application on a remote system. Wow, sounds just like X11 but without the willing participation of the OS vendor :-).

The point I'm trying to make is there absolutely is a need for both. A direct to the metal way of cutting out layers and layers of abstraction so that you can just render to the screen in a timely way, _with support for UI features._ (otherwise we'd just program to Unity or Vulkan and be done). But their _also_ needs to be a standardized way of letting "well behaved" programs export their graphics and I/O across the network to a place more convenient for the user.

Arguing passionately for one use case at the expense of the other doesn't move the ball down the road. Instead it just pits one chunk of the user base against the other half.

<comment><USER4> Funny you'd mention that: I was just comparing a Raspberry Pi 3 with a 1990 SS2, which totally skunks it 86:1!

[https://news.ycombinator.com/item?id=19717416](https://news.ycombinator.com/item?id=19717416)

>How many more times faster is a typical smartphone today (Raspberry Pi 3: 2,451 MIPS, ARM Cortex A73: 71,120 MIPS) that a 1990 SparcStation 2 pizzabox (28.5 MIPS, $15,000-$27,000)?

Remember "2^(year-1984)"?

[https://medium.com/@donhopkins/bill-joys- law-2-year-1984-mil...](https://medium.com/@donhopkins/bill-joys- law-2-year-1984-million-instructions-per-second-3a8c92165cfe)

On Nov 8, 2018, I sent Bill Joy a birthday greeting: "Happy 17,179,869,184 MIPS Birthday, Bill"! (2 to the (year - 1984))

</comment></comment><comment><USER14> Woah - a huge flash to the past when I read this.

I ported Wayland to VideoCore4 (the multimedia engine in first Pi chip) back in 2011 - it was part of the Meltemi Nokia project that got cancelled the follow year - shame as it was pretty cool and had half a chance IMO. We worked with the team in Oslo on QT acceleration over GL ES and used EGL below Wayland (coupled with some magic APIs to get the VideoCore HVS to work well). Ported this to an ARM combo chip that had just the VideoCore GPU in it as well (no HVS) - it worked pretty well.

Prior to this however, I made a VideoCore demo that used a PCI bridge chip (from Broadcom) and you could plug it into a Dell laptop running Ubuntu and get accelerated video decode and also X11 window scaling working at 60fps. We nearly sold this into Apple for accelerating their macbook's but IIRC, getting the macbook into low power mode whilst the video was playing on the external chip was going to be soo much work that they gave up.

A even further back, I remember validating the HVS hardware block and writing the initial scaler driver for it (IIRC, scaler.c...) and made a dispman2 port for the driver. Circa 2006!

Great team - one of the most enjoyable set of people to work with I've ever come across.

<comment><USER15> If you connected with Eric Anhold and worked on this, you would help millions of Pi students and users. It is an opportunity.

<comment><USER14> I checked out Eric's work just - he's doing an amazing job! Much more thought put into the subject (security for GLSL being a huge topic on its own). The lack of MMU in the VC4 architecture is a huge pain point that probably sucks up most engineering cycles when it comes to arbitrary application environments using GPU resources like X11 or Wayland - when memory runs out, what to do? You can throw engineering resources at it, but engineering talent really needs access to VMCS on the VideoCore side todo any worth while work.

When we ported Android to the VC4 architecture the first time (~2010), the low memory killer in Linux was subverted to understand to kill Android applications based on their use of the VideoCore GPU memory and it worked pretty well, yet it would still close the primary running app once in a while. Run monkey over Android and all hell broke loose - really tough situations to defensively code fore. For example, for CX reasons, you had to ignore some GLES errors in the primary client due to low memory, then the system had to kill another application that was using the memory, then it would kill the EGL context for the primary application so it would refresh the entire app lifecycle using an almost suspect code path inside Android. Good times! Imagine Wayload has very similar challenges for normal desktop use.

<comment><USER16> The open source driver doesn't use VMCS, it instead puts aside a fixed block of memory (typically 256 MiB, which I think is also a limit due to some hardware bugs) for use through the Linux Contiguous Memory Allocator (CMA) that it then draws from.

VMCS only comes into the picture if you use video decode, but I think Dave Stevenson from the foundation hacked the firmware side to support importing Linux allocated memory blocks into VMCS so that you can do zero-copy decode and import into EGL (or more likely HVS, the EGL support for the formats is pretty limited).

(I really liked the design of the HVS - having pretty much scripted planes is a fresh approach over similar hardware blocks that have a fixed number of planes each with own idiosyncracies and limitations)

<comment><USER14> The HVS was a cool design - the only real issue if I recall was its limited line buffers meaning it was hard to determine what could be composited in real time, so we ended up always rendering to a triple buffer. It also did some amazing scaling in realtime, but this came with some crazy artifacts that were super painful to triage. The occasional "flash of bad pixels" in a live composition screen was really painful. I just remember I wrote the DPI and CPI peripherals that we brought up the HVS with - on a 4MHz FPGA complex, we had YUV camera input scaling up to a WVGA DPI screen running at 60fps on a distributed FPGA platform through the HVS. Fun times.

</comment></comment></comment></comment></comment><comment><USER17> I think the author is confusing something here

> The reference implementation of the protocol (Weston and it's associated > libraries) is written in C. That means you could wrap the C code with Rust, > which several people have done already [1] However, I get the impression > that the results are not very 'rustic', meaning it's like you are coding C > from Rust, instead of writing real Rust code.

> To address the problems of dealing with the existing native Wayland > implementations, a couple of the Rust Wayland developers have joined > together to build a new Wayland implementation in pure Rust called wlroots > [2]

[1] [https://github.com/Smithay/wayland- rs](https://github.com/Smithay/wayland-rs) [2] [https://github.com/swaywm/wlroots](https://github.com/swaywm/wlroots)

wlroots is written in C whereas wayland-rs - a Rust implementation of the wayland protocol (client and server) is written in - Rust.

I'm not familiar with either project, but this just stood out immediately when looking at the Github pages.

<comment><USER18> There's also wlroots-rs, which provides safe Rust bindings for wlroots: [https://github.com/swaywm/wlroots-rs](https://github.com/swaywm/wlroots-rs)

But yeah, you would still need the C toolchain with this.

</comment></comment><comment><USER19> I've been using swaywm on my laptop (XPS 13) with XWayland disabled for a few months now and have had very few problems with it. As far as I can tell Firefox works perfectly, except for some very strange behavior if I try to enable hardware acceleration.

I love how easy it is to configure via config files, external monitors work great, scaling on HiDPI displays has been totally painless. My days off fiddling with xorg config and xrandr are behind me.

I know the creator of sway hangs out here, so if you're reading this, thank you!

<comment><USER20> Without hardware acceleration doesn't watching video in the browser pretty much destroy your battery life and use most of your cpu time?

<comment><USER19> So I'm no expert but I believe there are actually two different notions of hardware acceleration at play here:

1) HW accelerated rendering in Firefox, which despite being unfortunately disabled by default on linux can in my experience be enabled (on about:config) without issues. This makes the experience of scrolling much smoother, so I usually do that. I don't think this has any observable effect on battery life for me. However, enabling this in Sway results in some very odd behavior that breaks certain things so I've had to disable it. I can go into more detail on that if you like.

2) Hardware accelerated video decoding. In contrast to the fist one, this makes a HUGE difference in CPU usage and battery life. However this unfortunately cannot be used in any browser AT ALL in Linux, regardless of setup or configuration. The way I watch youtube videos on my laptop is usually with mpv, which does use hw decoding if it is configured to do so.

<comment><USER21> I've used chromium-vaapi on Linux with some success. I don't think those patches have been accepted in upstream chromium though.

<comment><USER19> I may give that a shot, although I think chromium still requires XWayland, right?

</comment></comment></comment></comment></comment><comment><USER22> This article seems to be mixing up languages, which others have pointed out but not in full.

wayland-rs does not wrap libwayland, but instead offers a pure Rust implementation of the Wayland protocol.

Sway and wlroots are both written in C, but wlroots-rs is a project which wraps the wlroots C library in a Rust wrapper.

There are currently no mature Wayland compositors written in Rust.

Also, this article mainly focuses on the problems with Wayland on the Raspberry Pi, which stem mainly from the old proprietary drivers and the slow pace at which Raspbian gets up-to-date software. For most users, the experience is much better.

<comment><USER16> The irony of the Raspberry Pi in particular is that while the ARM side has seen multiple order of magnitude jumps in performance, the GPU and compositor hardware have of course remained at its original 2009 atrocious level.

The result is that the CPU drawing on a screen-sized framebuffer is fast enough that Raspbian will probably never, ever make the jump to full bells- and-whistles mainline VC4 drawing and atomic DRM composition. It would just end up using a lot more memory and break a bunch of hacks in the proprietary drivers that people have come to rely on for essentially still garbage tier performance and a system that randomly freezes because you ran out of graphics memory (which is forever limited to 256 MiB, memory that you surrender on boot to the horrendous CMA system).

I like the Pi a lot as a PoC platform given the availability and the fully open-source supported driver we have for it. But the HW specifications of all the parts that Wayland cares about make it very clear that the thing was only ever meant to do 1080P when you are piping frames from the video decode engine straight to the compositor and out the pixel valves.

</comment></comment><comment><USER23> Wayland, _in practice_ , couple too much the "compositor" with the driver stack, and the desktop/wm with the "compositor", and THEN the desktop/compositor/wm with applications (e.g. Firefox menus working or not depending on the desktop env in use)

Then end result is that it explodes your test matrix. I won't use it while it stays the case, because I don't have time to fight with basic graphic stuff being broken all the time, and it is ridiculous to expect things to be _not broken_ if the test matrix stays like that.

Plus it is starting to be old yet still missing half of the features, be it existing X features (ex: ssh -X), basic desktop GUI needs (ex: whatever is needed to implement Wine), or modern must-have (ex: colorimetry) (at least if was the situation a few months ago, hopefully there have been some progress since)

</comment><comment><USER4> >X is the graphical interface for essentially all Unix derived desktops (all other competitors [link to Display PostScript wikipedia page] died decades ago).

Since when was an X-Windows extension a "competitor" to X? Display PostScript was simply a proprietary X-Windows extension that fell out of fashion, not a competitor to X-Windows.

NeWS was a competitor to X-Windows that died decades ago, but Display PostScript was never a "competitor" to X-Windows, just like the X Rendering Extension and PEX were never competitors, just extensions.

But at least the article gets credit for calling it X-Windows instead of X11, to annoy X fanatics. ;)

[https://medium.com/@donhopkins/the-x-windows- disaster-128d39...](https://medium.com/@donhopkins/the-x-windows- disaster-128d398ebd47)

<comment><USER24> I'm not sure what protocol they used for remoting NeXTSTEP's native WindowServer, but I don't think it was X11. Some people did tunnel Display PostScript over X11, but that wasn't the only option and it was pretty kludgy.

<comment><USER4> That's right. DPS wasn't used for handling input events, or implementing the user interfaces widgets, which instead were implemented in Objective C running in another client process (usually running on the same machine), instead of PostScript running in the window server. DPS didn't handle events with PostScript in the DPS window server. Instead, it would ping-pong events over the network from the window server, to the Objective C client, then send PostScript drawing commands back to the window server. (Typically generic low level drawing commands, not a high level application specific protocol.)

So NeXTSTEP suffered from the same problems of X, with an inefficient low level non-extensible network protocol, slicing the client and server apart at the wrong level, because it didn't leverage its Turing-complete extensibility (now called "AJAX"), and just squandered PostScript for drawing (now called "canvas").

So for example, you couldn't use DPS to implement a visual PostScript debugger the way you could with NeWS, in the same way the Chrome JavaScript debugger is implemented in the same language it's debugging (which makes it easier and higher fidelity).

[https://medium.com/@donhopkins/the-shape-of-psiber-space- oct...](https://medium.com/@donhopkins/the-shape-of-psiber-space- october-1989-19e2dfa4d91e)

>The Shape of PSIBER Space: PostScript Interactive Bug Eradication Routines — October 1989

>Abstract

>The PSIBER Space Deck is an interactive visual user interface to a graphical programming environment, the NeWS window system. It lets you display, manipulate, and navigate the data structures, programs, and processes living in the virtual memory space of NeWS. It is useful as a debugging tool, and as a hands on way to learn about programming in PostScript and NeWS.

</comment></comment></comment><comment><USER25> Can I just say that I think it's great that we now ceased to have a monoculture in display servers for Unix-based systems? It was the last one, I believe.

I mean, we've had choices for text-editors, for shells, for programming languages, for GUI toolkits, for desktop environments, for window managers, for remote-desktop servers and viewers, for ssl/tls implementations, for web browsers, and even for kernels.

The only thing everyone using Unix-based systems all had in common was that they had to use X for graphics. I think we had choices for implementations for X (Xf86?) before we ended up just using Xorg, but now we even have the choice to not use the X protocol.

Having choices is good. Having diversity is good. I hope we stop trying to see this one as everyone converging to using only one. We can have both, like we do now. I think that's the best.

<comment><USER4> Why not just use a full screen direct-to-hardware web browser as the window manager, and talk to clients, servers and other screens via HTTP, WebSockets, two-way streaming video and screen sharing via RTP, etc?

The reason X-Windows sucks is that it's not extensible, and Wayland is only incrementally and quantitatively better than X11 (like X12 or Y), not radically and qualitatively better (like NeWS or AJAX).

Wayland has the exact same fundamental problem that X-Windows suffers from. It's not extensible, so it misses the mark, just like X-Windows did, for the same reason. So there's not a good enough reason to switch, because Wayland failed to apply the lessons of Emacs and NeWS and AJAX. It should have been designed from the ground up around an extension language.

Web browsers are extensible in JavaScript and WebAssembly. And they have a some nice 2D and 3D graphics libraries too. Problem solved. No need for un- extensible Wayland.

<comment><USER26> > The reason X-Windows sucks is that it's not extensible

Years of configuring modules in XF86Config and matching things up between the server and the client and that thankfully going away quite a bit with Xorg would make my conclusion the opposite and yet also suggests it didn't really matter as much.

</comment></comment></comment><comment><USER27> I think it is important to point out that _Wayland is a specification_ [0] and not some blob of software.

[0] [https://wayland.freedesktop.org/docs/html/apa.html](https://wayland.freedesktop.org/docs/html/apa.html)

<comment><USER28> So is everything else in the world of software. You begin with a specification and then you start writing code.

<comment><USER27> Well, sometimes. Paul Graham and others from the lisp-ness crowd talk about coding without a clear idea of where to go. I'm not in a place where I 'speak' any language clearly enough to write without a plan.

I suppose for most enterprise stuff what you say is true (how else will we commit to coding targets we won't hit for prices we can't afford on timelines that make dog races look slow? - I suppose I'm a little early in life to be jaded, but I am familiar with bureaucratic nightmares that value image over substance).

</comment></comment></comment><comment><USER29> Do note that the article is mainly about Wayland on the raspberry pi. Of course Wayland isn't the default most places yet (Fedora being the big exception, I think), though you can install it on most distros.

I've been Wayland/Sway on NixOS for a while, and I really like it.

One question though - the article seems to say that wlroots is a Rust project, but it seems to very much be a pure C project? ([https://github.com/swaywm/wlroots](https://github.com/swaywm/wlroots))

<comment><USER30> What do you like about it?

For general use it seems as if it'll be something that makes no difference to my day-to-day usage of my computer other than a warm fuzzy feeling that the underlying protocol is "right".

<comment><USER29> That's true - the two things I really like are no screen tearing ever (be that scrolling Firefox or YouTube videos) and that warm fuzzy feeling.

Edit: I also like Sway quite a bit (over i3/X) - its configuration (outputs, input devices, etc) makes a lot more sense and is a lot easier for me than trying to change stuff in different places and in different ways with X.

</comment></comment></comment><comment><USER31> After reading [http://techtrickery.com/keyloggers.html](http://techtrickery.com/keyloggers.html) I am not sure if I ever want to have Xorg installed anymore. Wayland is great but it seems like having a fully featured *nix desktop without XWayland installed is still hard to achieve.

<comment><USER20> Wayland is insufficient in and of itself to prevent keylogging.

[https://github.com/Aishou/wayland- keylogger](https://github.com/Aishou/wayland-keylogger)

At present Linux desktops aren't very secure against user installed malicious software. It is however fortunate that most software is installed from curated repos.

It's not clear that just switching to wayland is worth much at this point in time.

<comment><USER32> That link is a blatant lie. Redirect each wayland client's stderr to a different term and you will see that the process (keyboard/mice input + graphics output) isolation is still working as intended.

<comment><USER20> It's not a blatant lie. There is probably no default install in which I would not feel it absolutely necessary to change every credential stored on a system if it ever ran a compromised binary and a new install from scratch.

At best you are hoping that the malicious binary someone tricked you into running didn't also take advantage of an additional vulnerability to compromise everything. Keeping in mind that your adversary has every opportunity to test against the same environment you are running.

The only linux environment that I've aware of that takes isolation really seriously is qubes and even that isolation could be violated in theory.

I want desktop applications to have features that right now require substantial permissions to effect. The primary defense is and will likely remain not to install malicious software in the first place by installing from curated sources.

<comment><USER32> It's a blatant lie because the author of that code snippet is trying to trick the reader into thinking that Wayland's isolation somehow has been broken, but that's not true at all.

In the real world, any secure desktop solution is going to require a reliable execution environment ("security is only as good as your weakest link"). If you don't trust the user to properly handle that, then you must ensure they don't do anything stupid or dangerous to themselves by restricting what they can do. For desktop applications this usually means to execute them in a sandbox (such as Flatpak). QubeOS tries to do something similar, but stumbles upon the inherently insecure design of the X Server, and has to work around it running separate X server instances for each unreliable X client.

</comment></comment></comment></comment></comment><comment><USER33> Last time (which was when Fedora first shipped it by default) I looked at Wayland, it took me less than an hour to run into several showstopper issues and move right back. The ones I remember include being incompatible with the proprietary Nvidia drivers (and no plan to ever fix that), huge input lag (apparently stemming from the, um, "interesting" idea to make the compositor responsible for all input) and lots of random stability issues. Have these things been fixed? Apart from a general dislike of X11, what are the reasons one should consider a switch nowadays?

<comment><USER34> > incompatible with the proprietary Nvidia drivers (and no plan to ever fix > that)

I've heard that Nvidia is fixing this in KDE Plasma and maybe Gnome too. (Fuck proprietary drivers though, and fuck Nvidia.)

> huge input lag

that's odd. Gnome's compositor is not the fastest, but it generally works okay for many many people.

> the reasons one should consider a switch nowadays

\- No screen tearing ever, every frame is perfect

\- Real HiDPI support, different scales on different monitors, many compositors support "Apple-style" fractional scaling (render at ceil(scale) and downscale on GPU)

\- Proper touchscreen support, without dragging the mouse pointer along

\- Touchpad gesture support (this miiiight have been bolted onto X with XInput2 as well)

<comment><USER35> > (Fuck proprietary drivers though, and fuck Nvidia.)

I _love_ nVidia's drivers. They "just work" and I don't need to muck about trying to understand why this version of this video driver doesn't play right with that version of drm or this kms setting.

Don't get me wrong, there are benefits to being a proper, native component of a modular display system. But what's the point if none of them work, only support random subsets of the hardware, and crash left and right?

<comment><USER36> Good for you. I have the worst Linux experience in 20 years, because I was tempted to buy a high-end laptop that happened to have a nVidia graphics card (ThinkPad X1E). Never ever will I touch hardware with nVidia. Certainly, I might not be the target audience for this - I don't play games and work mostly in a terminal and browser.

Once I managed to make it work, and that I am now able to select between the NVidia and Intel - I have to tell, that I do not see any difference, in performance. However the performance is below what I was used on the previous computers - it might be due to the high resolution (3840x2160).

Connecting external monitors is a nightmare. It produces a lot of heat. And it made me lose so much time! In this case I do not even care about proprietary or open source drivers - I just want it to work.

I never had a more sluggish linux system since 1995. Even typing in the browser or in the terminal makes me make mistakes, so much lag is there.

</comment></comment></comment></comment><comment><USER37> This rant would be better directed at the landscape of cheap, poorly-supported ARM devices like the Raspberry Pi and its clones.

These manufacturers should be developing proper GPU drivers for mainline with full KMS/DRM/mesa support before they even sell their boards to the public claiming Linux support.

Wayland and Xorg work just fine on Intel integrated graphics, Intel has been setting the standard here for over a decade now.

<comment><USER38> The Pi is running on a set top box chip that has been "graciously" thrown over the wall by Broadcom. Broadcom are not friends of the open source community.

>These manufacturers should be developing proper GPU drivers for mainline with full KMS/DRM/mesa support before they even sell their boards to the public claiming Linux support.

Broadcom or the Pi Foundation? One doesn't care and one doesn't have the resources.

</comment></comment><comment><USER39> Because it's just not ready yet. It doesn't cover all the needs it must cover in order to be considered superior to X.

At least that's the only reasonable explanation I can find.

</comment><comment><USER40> Meh. As far as I'm concerned, Wayland is strictly inferior to X, so long as it fails to support network transparency / remoting. Talk to me when they have a real solution for this, besides VNC or supporting RDP.

<comment><USER41> Xorg remoting was poorly designed to accomodate DRI/DRM, video card acceleration and had adequate performance to only display primitives on screen. Thats the reasons of poor Xorg remoting adoption. I dont remember seeing anyone in this decade using it - it hands down lost to vnc/nx and rdp.

<comment><USER42> I've not seen anyone using VNC or remote Xorg for years. Is it really _that_ important these days?

<comment><USER25> The bar for being important enough to not discard when it works and is the only solution to particular problems is not very high.

I know of no other method to forward individual programs GUIs to other machines. Abandoning X is abandoning a power we have.

You're right that it may not be used as much. Last time I used it was to debug why selenium tests running in chrome were failing in a server with a virtual display (Xvfb) when the tests would work in any developer's machine. I forwarded chrome's GUI from a docker container in a server in another room via my development machine. Its window was neatly tiled next to my other windows in my tiled window manager. You wouldn't be able to tell it wasn't running locally. I don't have to mess around with a desktop inside a desktop. Such neatness in UX is a comfort I'd like to keep.

I'm all for making a new, more efficient display server, but please don't take powers away.

<comment><USER43> > Abandoning X is abandoning a power we have.

A power that literally no one uses.

Well, no one that matters anyway. For values of "matter" equivalent to "uses a modern desktop".

Whatever the case, modern development heavily favors coding for the common case, not supporting a flexible framework that can accommodate fringe cases. And in 2019, your use case is fringe.

<comment><USER25> > A power that literally no one uses.

I just told how I used it.

> Well, no one that matters anyway.

I don't matter? That's kind of rude.

> Whatever the case, modern development heavily favors coding for the common > case, not supporting a flexible framework that can accommodate fringe cases. > And in 2019, your use case is fringe.

Are you going to say that accessibility features should also be discarded? Being deaf or blind are not the common case.

<comment><USER43> "Modernity", "network transparency is irrelevant in $CURRENT_YEAR" and "nobody uses those features anymore" are among the most commonly cited reasons why you must abandon X NOW and switch to Wayland. Those and "muh security". (The very real security issues with Xorg could be mitigated or eliminated completely with a more sophisticated X server design.)

Like it or not, you will have to come to grips with the fact that the Linux desktop and graphics-stack discussion is dominated by developers from the age of GNOME, who haven't put much thought in beyond how they personally use their own MacBooks. These are the ones calling the shots, and they've decided that X is obsolete, that network transparency is cruft that should be eliminated, and that Wayland is suited to task. So Wayland will be the supported solution going forward.

> Are you going to say that accessibility features should also be discarded? > Being deaf or blind are not the common case.

Given the shit state of accessibility under Linux, I'd say yes, it is fringe to the people building the Linux desktop. If you're disabled, it makes much more sense to get a Mac or Windows machine.

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> Half-offtopic: I find it very interesting that Rasbian sticks to LXDE. I thought that was going to slowly disappear, with LXQt having developer attention and there being no path forward towards HiDPI and well, Wayland (because neither GTK2 nor Openbox support these).

LXQt currently still uses Openbox, but you can replace it with KWin rather easily. I don't know what is then still missing to create a proper LXQt Wayland session, but it seems feasible.

I guess, one does not really need HiDPI on a Raspberry Pi, but yeah, Wayland would be nice.

</comment><comment><USER44> I recently switched back to Arch and decided to try out Wayland. So far, I have only had some problems with Firefox, which could be solved I'm just being lazy. My one wider complaint is no autokey support, which isn't planned on being added. Overall, solid replacement to X11

<comment><USER34> I'm not sure what exactly you mean by autokey, but you can implement various keyboard tricks on various levels…

If you have a compositor that supports plugins, such as Wayfire, you can write a plugin: [https://github.com/myfreeweb/numbernine/blob/master/wf- plugi...](https://github.com/myfreeweb/numbernine/blob/master/wf- plugins/mod2key.cpp)

You can also do things on the evdev level by listening to keys and emitting new keys from a virtual device. My tool for that: [https://github.com/myfreeweb/evscript](https://github.com/myfreeweb/evscript)

</comment></comment><comment> c-smile The article is focused on essentially old idea of framebuffers:

> Even more ideally these memory chunks would just be textures in the GPU.

And that idea is very far from modern world of high-DPI monitors.

In high-DPI UI you cannot operate on textures anymore.

Window surface shall be represented not by bitmap (that is O(N) complex to fill by CPU) but rather CommandLists:

       [opFillRect,0,0,100,100]
       [opFillPath,...]
       [opBlitBitmap,...]

Window compositor shall pass such command lists to GPU for rendering.

This way to fill rectangle on window's surface will be O(1) complex operation - just to send [opFillRect,0,0,100,100] command to window (and so to GPU) for rendering.

<comment><USER16> I believe you are at the wrong stage, mentally. This is all about the _compositor_ that puts the final image on your screen together. The input to this component is always a list of textures with associated meta information (offset on screen, scaling, alpha mixing, Z position.. whatever your compositor offers). How these textures are created is not the business of the compositor - and the routine case is of course through GPU drawing!

There are two things to mention here that are of particular importance on mobile systems. Lots of chips now have compositor hardware - separate silicon from the GPU that can read textures, scale them, blend them and push the resulting pixels directly to the screen. And second, the word "texture" is used here to mean "any format that GPU, compositor and video decode engine can read or produce" \- in stark contrast to the old framebuffer approach, it is essential that things stay in their "native" format for as much of the pipeline as possible and are never CPU read or modified, which would require conversion.

</comment></comment><comment><USER45> Thanks for this great primer! Not quite through with the article, but I've recently been using my Raspberry Pi as a workstation (I mostly use SSH anyway), and I've had issues / confusion with hardware acceleration and X vs. Wayland for a long time.

I never seem to be able to get hardware acceleration to work properly in Linux on my MacBook---whenever I open up a webpage, CPU usage goes through the roof, unlike in Mac OS. Wayland seems to help a bit, but there seem to be lots of bugs than can only be fixed by the window manager.

</comment><comment><USER46> I had a full Plasma Wayland session running on AArch64 RPi in mid 2016, so this is just wrong.

The only issue is that the Raspbian downstream kernel and broadcom's proprietary userspace drivers are a pretty big mess and not compatible with anything.

When not using any of them, you get a much better experience with software compatibility.

</comment><comment><USER47> I don't mind if it exists on the Pi, so long as X is still an option. I use the remote desktop facilities X provides even more with Pis than with any other platform, and to the best of my knowledge, Wayland doesn't have anything like that.

</comment><comment><USER48> Last time I coded for the Raspberry Pi, gen 2, I used Wayland with Sway on Arch Linux ARM. Fast and more responsive than the standard DE provided by Raspbian. Was running Sway on Raspbian but needed access to the latest version of Go.

</comment><comment> amiga-workbench I've been using it ever since it became available in Fedora, no more screen tearing out the box like X, but it does cause me issues on my ThinkPad with a Wacom Digitizer. I could probably fix it quite easily if I stop being lazy.

</comment><comment><USER49> Did beos and haiku use X? I think not, then how do their graphics systems work?

<comment><USER50> Direct to hardware. There is a framebuffer driver that IIRC uses VESA primitives, and a few other more generic drivers with bit blitting and OpenGL support.

<comment><USER49> Has anybody tried porting that system over to Linux?

<comment><USER50> Everyone tied to that is much more focused on actually getting Haiku OS to work everywhere.

</comment></comment></comment></comment><comment><USER51> > It delegated all of that to X windows and user space drivers.

and

> Further slowing down progress is X-Windows. X is the graphical interface for > essentially all Unix derived desktops (all other competitors died decades > ago).

I'm confused. What's "X windows" and "X-Windows?" Is he talking about the X Window System?

[https://en.wikipedia.org/wiki/X_Window_System](https://en.wikipedia.org/wiki/X_Window_System)

</comment><comment><USER52> I wish I'd seen it when it came out he sort of stopped at the first hurdle when it came to trying to compile.

</comment><comment><USER53> Ubununtu, hilarious typo

<comment><USER54> "I can spell banana but sometimes I forget when to stop"

</comment></comment><comment><USER55> tl;dr: shitty graphics hardware vendors who don't care about Linux support.</comment>


Ask HN: How to find a mentor/advisor? - <AUTHOR>

Hey guys,<p>Me and my co-founder are in the process of writing our MVP, but as we're both students without serious connections in the tech world, particularly the entrepreneurial/valley world, I feel like we should have a mentor or advisor to give a little guidance. Not somebody to really help with the code or anything but rather grant some wisdom on the other parts of startup life. Would it be wierd/rude to have an open-call of sorts, of people that might be interested? Should we, perhaps, aim and cold call somebody we admire and respect and see if perhaps they would take us under their wing? <comment><USER2> HN'er DanielBMarkham has done this. A few months ago he posted a request for HN'ers to be his "advisors". I've participated (a little). Daniel has made fantastic progress on his new product and I've greatly enjoyed the reports he sends.

<comment><USER3> I can't emphasize how awesome it is to have advisers. Here are a couple of tips I've learned in the last two months:

1) Have a bunch of advisers. With ten or more advisers, if they only email you a couple of times a month you can get a huge amount of feedback. Whereas if you only have one or two advisers the bandwidth just doesn't work out.

2) Good advisers are not just boosters. I'm really lucky to have some HN'ers helping out and they have been terrific about giving me negative feedback when it's warranted. Lots of folks can cheer you up or pat you on the back. Good advisers give you a good reality check.

3) Never use an email distribution list. I did this the first time I sent an email to my adviser list and it was a big mistake. People are taking the time to personally help you, the least they deserve is a personal email and conversation. Yes, it's easy to send things to lots of people at once, but it's really counterproductive. You're not trying to spam people, you're trying to engage them.

4) People will usually over-promise and under-deliver. This is just human nature. It's easy to say you'd like to actively help out with something but lots of times lots of other things have higher priority. This is another reason for having a larger list of advisors.

As this latest startup nears beta status, getting and using advisers was the best decision I've made so far.

<comment><AUTHOR> Awesome, thanks a lot for the info. I think we'll be following in your footsteps.

</comment></comment></comment><comment><USER4> My 2 cents:

Attend and participate in local technology and business meetings/events. Even if you are not in the immediate 'Valley', you will still meet some local business folks who might be willing to serve as a mentor and open up additional contacts for you.

You also mentioned that the both of you are students...possibly approach a professor for advisement?

</comment><comment><USER5> You'd be surprised what you'd get just by asking politely. Find people you think can help you and that would be good teachers and just ask.</comment>


A Small City with Big Delusions - <AUTHOR> https://www.strongtowns.org/journal/2019/7/30/pine-island-a-small-city-with-big-delusions <comment><USER2> Infrastructure. Infrastructure. Infrastructure.

-Steve B.</comment>


Huawei will take Root in Semiconductors in all Directions: HongMeng will Future - <AUTHOR> https://sparrowsnews.com/2020/08/08/huawei-in-semiconductors-in-all/ <comment><USER2> "We won't make this mistake again. We will control all sectors of our semiconductor business."

Rule No. 1 in Business: NEVER turn away a paying customer.

When you do that, your customer will become your competitor. Not only will you lose his business, you also lose a lot of your other customers' business.

Very bad decision. Julia Roberts in 'Pretty Woman' says it perfectly: "Big mistake. Big! HUGE!"

</comment><comment><AUTHOR> "Unfortunately, we only did the design of the chip, we didn't do the manufacturing of the chip." Said, Yu Chengdong "This is really a very big loss, a great pity!"</comment>


The Posh Pen Paradox: when writers and artists fear their tools - <AUTHOR> https://www.newstatesman.com/culture/art-design/2018/03/posh-pen-paradox-when-writers-and-artists-fear-their-tools <comment><USER2> I've noticed that the people that really develop skill in an area almost always use inferior instruments and material when they're first developing the skill.

Paradoxically, getting a brand new guitar can be the worst thing to do for a child interested in music. A simple used one with scratches and stickers pushes the child's focus to their own skill, not to the object.

Though it isn't true for everyone, I've also noticed that skilled practitioners beat up their high priced tools in ways that doesn't degrade their performance, and they're always able to compensate for inferior situations and build methods of adaptation if they frequently lack the ability to control the situation. For example, a programmer may set up a linux machine that they can always SSH into if they can't control the computer they're working on in order to have a familiar environment or a chef may keep a spatula and a carefully thought out pre-selected set of spices with them to always be able to make something flavourful while traveling.

<comment><USER3> Another reason for this may be that skilled people know enough to ignore marketing claims.

Let's take guitars. You can get a squire (introductory model), a Fender made in Mexico (intermediate, a few hundred dollars) or an American standard (top of the line, a few thousand dollars). Most working musicians I know will stick with the Mexican fender, because they know there's not much difference between them and the Americans (The Mexican guitars are quite nice), and you can gig with it without worrying that a scratch or nick will tank the value.

So who buys the American fenders? People in their 40s and 50s who play guitar, but not professionally. For them, the guitar is a collectors piece. The story behind the guitar matters more than how it plays. Don't get me wrong, American standards are great guitars. But unless you're looking for a very specific tone, the Mexican fender will do the job.

<comment><USER4> Squire makes lovely guitars. I owned one for some time in my first years (never became professional, play to myself on and off since years), it was a cyan strat, and people were amazed with the general intonation of the thing. The stupid 16yrs old version of me traded it for a shitty acoustic because I didn't have the money to buy a second one. I could still have that cheap piece of beauty and play it with joy.

The whole "tone" business (pun unintended) is a bit shady IMO. With an electric instrument, the wood contributes only so much to the tone. I'd look for sustain, feedback and intonation over that, especially in the cheaper segment. You can set up some nice tones with volume and tone on the guitar and the equalizer on the amp. Put on a nice set of strings and you're good to go. Tip: use a tuner app to test the notes from random places all over the neck, at least one note each fret. Make sure everything is in tune. With some cheaper guitars, they place the first few frets correctly and don't care that much for the rest.

</comment></comment></comment><comment><USER5> I can attest to doing this with a camera. In 2012, I bought an entry level dSLR, it's about $500 and specs that were middle of the road at the time. By today's standards, it is ancient and lacks a lot of cool features. I took some amazing shots with it and I also learned a lot about photography in the 5+ years I used it. For example, I took about 60k photos with it so thats a lot of mileage on the camera.

Putting technical features aside, it also lacked a lot of nice to haves that more expensive cameras come with like dust proofing and water resistance. The body was made of plastic instead of a magnesium alloy with plastic. The lenses were a bit lower quality than you can buy for the full frame lenses.

I wouldn't have realized that new tools doesn't mean new and better photos until last year I bought myself a Canon 6D and decided to learn a new camera all at once. It was boring and tedious, I wanted to go back to my old camera. Eventually the photos started looking better but I felt less inspired by the new camera. It had all the cool new features I wanted but it didn't feel like my camera.

<comment><USER6> I find this a bit strange; generally the best thing about more professional cameras is better controls, not better image quality. I don't like Canons of that era because of the limited dynamic range, but a 6D is a very ergonomic camera and handles better than any consumer Canon or Nikon.

I have an issue with very capable, modern cameras too. I have a Sony A7r, which I find too versatile, to the point of being distracting unless I'm focused on getting a very specific picture. I prefer using high end, but older, film cameras, like a Contax G2 or an Hasselblad.

<comment><USER7> The best thing about high end professional cameras is low noise, faster and more reliable autofocus, and outstanding low light performance. In good light there's little difference between a cheap prosumer model and a high-end pro model. But try shooting a scene in candlelight or star light, and the difference is stark.

Ease of use also matters. Prosumer cameras often have a single rotary that has to be switched between aperture and shutter. Pro cameras have separate rotaries, which is much easier to work with.

I've always been fascinated by the way that consumer and prosumer equipment is often harder to use than true professional equipment. Pro-grade tools usually just work. Even when there are plenty of options, the workflow is usually intuitive and straightforward.

Consumer gear often adds consumer crappiness - special modes for taking ski photos or food shots in a consumer camera. if you know what you're doing, this reliably gets in the way. And if you don't know what you're doing, you probably won't know how to select the special "helpful" presets anyway.

I used to own one of these, which is supposed to be a beginner's keyboard:

[https://www.youtube.com/watch?v=pf61mYDtt64](https://www.youtube.com/watch?v=pf61mYDtt64)

It made some decent sounds, but it was _incredibly_ awkward to use, with a baffling combination of hidden settings, obscure button sequences, and bizarre features.

So personally I've always wanted the absolute best tools I can get. I get very, very frustrated with tools that don't work properly or get in the way, irrespective of price.

<comment><USER6> I didn't mention autofocus because I generally use manual primes and don't even try to shoot moving subjects, so it's not really an issue for me.

Single-dial consumer cameras are annoying, I also generally really like to have a physical exposure comp wheel, good Sony and Fuji cameras generally have one (and my old Contax G2 does, too), while it tends to be some bad modal "hold the button and turn the wheel" affair on Nikon and Canon ones.

"Scene mode" dials are basically a helpful hint to let you know that you shouldn't buy that camera.

</comment></comment></comment></comment><comment><USER8> It's really nice when you're learning to program that you can make something without the fear of misusing some resource like paper or paint (other maybe than time).

Yesterday I wanted to see if I could make a program that checks if a word is a palindrome. Open a text editor, a terminal and a browser. Done.

<comment><USER9> For programmers I think it is more about the tools, you may keep yourself from spending too much on a keyboard, mouse or a new monitor, maybe a license for your favorite ide.

For example I remember when I bought one of the early LCD monitors, using expensive CRTs until then. The difference was huge, suddenly I could code for 10 hours straight without feeling tired at all!

On the other hand I kept away from SSDs for more than I should. Again, such a huge productivity boost by making my computer so much responsive that immediately I thought "why didn't I buy this 2-3 years ago".

A more recent example, couple years ago I moved and at the first couple months hadn't set up my home office, so I started using my laptop's keyboard and just kept doing it. I thought it was ok until recently I switched back to an external keyboard. My typing improved tremendously, much faster, less errors, actually blind typing all the time now. Again, inertia didn't let me realize what I was losing all these years.

But I also think it is important to start from lesser tools and upgrade as you go. A novice most of the time can't really appreciate a professional tool and as many people wrote in other comments, obsessing too much with the tools at the start can hinder the path towards your real goal.

</comment></comment><comment><USER10> I perceive this in myself to an extent. I have always thought it was about wanting to save the best materials for some sort of magnum opus, rather than waste them on everyday work. I don't think that's entirely irrational.

I do it with non-creative things too. I have some bottles of really nice whisky, but i don't drink them. I'm saving them for when a whisky-appreciating friend comes round, and we can enjoy them together. I drink the crappiest stuff i have when i'm on my own.

<comment><USER11> Every whisk(e)y lover needs to have a go-to "scoffin' whiskey" for when you need a drink, as well as some good stuff for when you want to revel in it, wether alone or with a fellow aficionado (or even just friends who enjoy being given the expensive shit). For me, my scoffin' whiskey is Grant's. Cheap and cheerful, and easily available in 1l bottles.

</comment></comment><comment><USER12> I've shelved or packed away countless notebooks over the years, usually because I know my handwriting is terrible and my organizational skills are crap.

</comment><comment><USER13> Take that brand new notebook you're afraid to write in-because--for whatever reason--maybe you want to dedicate it to a project that's not yet ready, for example; or you don't want to spoil it: turn it upside down and to the back. Write notes, grocery lists, whatever for a few days in the pristine notebook. Turn it back and now you are ready to write in it.

<comment><USER14> I have more blank notebooks than I'm comfortable admitting (without Internet pseudonymity)

<comment><USER15> Suggestion: Carry one of them around in a bag for a week or two so it gets broken in. Might reduce the 'newness' factor. Then do as parent suggests (use back for shopping lists)

</comment></comment></comment><comment><USER16> I bought a new 2011 MacBook Pro, added an SSD, maxed out the RAM and picked up a 27" Apple Cinema Display. Someone broke in and stole it.

I replaced it with a used IBM ThinkPad T60 and the cheapest LCD monitor I could find at Best Buy on Black Friday. I got more done on that computer than I probably ever had, since. Learned Rails, completed tons of projects, and it lasted me through 3 jobs. Whenever I hit a rut these days with my current MBP I think about throwing it all out the Window and grabbing a T450 or X230 and starting all over...

<comment><USER17> I have a similar story. I had a thinkpad x201 and it broke. I opened it up, tried to fix it, couldn't. After a couple of weeks having no computer, I created a OpenBSD installer USB from another computer (the installer image was surprisingly only 30 MiB, so I could easily create the USB in a couple of minutes from someone else's computer).

I installed OpenBSD on an old Asus 1000HE netbook I had lying around. I used the machine for a couple of weeks, and I felt I was really productive. I wrote a simple network manager, learned Org-Mode, learned Xorg customization, read Atlas Shrugged in Emacs :) ...

Then I built myself a desktop, installed Windows 10 on it. Got a 32 inch big screen. I am nowhere as productive, because everything comes so easy.

There is something about spartan environments, that makes you more disciplined and focused. On the other hand, you need comfortable tools to go further.

Another interesting point is, even when I was building my desktop, I picked out the cheapest parts, didn't even buy a case. I put the components in two adjacent shoe-box sized cartons, and hooked a push button to the mother board power pins. I could've easily spent much more money on it, but didn't. I guess I also fear making a huge commitment to the tools I use.

</comment></comment><comment><USER18> I've definitely observed and experienced that. On the other hand, there's also the opposite phenomenon (maybe it should be called the Titanium Driver Paradox): that beginners buy expensive high end gear that doesn't really do them much good at their current level: mediocre singers buy fancy microphones, mediocre cyclists buy fancy bikes, etc.

</comment><comment><USER19> I've observed the opposite in computing more frequently. Many people seem to care too much about appearances, when using a simpler or cheaper tool is better overall.

My desktop computer is over 10 years old. This is hard to believe for many people. Why don't I upgrade? The reason is that a 10 year old computer is plenty capable for my work. I don't see much reason to upgrade now or in the near future. The hardware is still in good condition, and until it breaks in a way not easily repaired or my needs change, I will keep using the computer.

Another example is software. I see this dynamic among many Git users. I use primarily SVN for version control in personal and work projects. These are projects with no collaborators. SVN has less friction in my opinion. Many Git users I know seem to think that because I use SVN regularly that means I am too stupid to use Git. I'm not, and at this point I'd offer to show people who think so my public GitHub profile as evidence now that I am contributing more frequently to an open source project. I think many of these Git users would find that SVN has less friction and is an overall better choice for certain small projects if they gave it a chance. But to many, using Git is partly about maintaining an appearance of being elite, and they don't want to look like a newbie by using SVN.

<comment><USER20> I used cvs, svn and git, sequentially when they were most popular. Every step along the way was a big improvement, and the step from svn to git is a much bigger improvement than cvs to svn.

Svn is a pile of crap. Remote operations take ages. Switching branches takes ages. Applying the same diff to multiple branches - you're better off extracting your own diff files and applying them manually. In fact creating branches is such a PITA you just don't bother. Stashing work in progress - again, create your own diff files. Svn was such a pile of crap I built my own system to extract and restore diffs of work in progress, as well as a tool using 3-way diffs for handling conflicts when base moved on after I needed to restore my diff.

<comment><USER19> Your use case differs greatly from mine, and this is what makes me prefer SVN most of the time. I tried to make this clear in my first post, but I'll explain in more detail.

I agree that SVN doesn't do branches right. If I needed to use branches, I'd use Git or Mercurial. But the projects I use SVN for have no collaborators and only one version of the files. There is no need for branching here. So the branches argument is irrelevant. (And for what it's worth, I've heard this argument from a half dozen people who have tried to make me switch to Git.)

"Stashing" is a Git term, and again, it doesn't really apply to my use cases because there's only one version of the files and I'm the only one using the repositories.

I use version control so that I can keep track of the history, roll back changes if necessary, and keep my files synchronized across a few computers. There's no collaboration involved.

This is where SVN is advantageous. I am not claiming that SVN is advantageous in all cases, just the ones my small projects fit in. And for me, that's most of the cases I use.

As for remote operations, I haven't found that to be the case. And I haven't mentioned the SVN features I like that Git doesn't have either.

</comment></comment></comment><comment><USER21> this behavior isn't exclusive to writers and artists. people still put screen protectors on their phones. If you have something you can't afford to replace, you're going to be careful with it, if you can't believe you can use it without some risk of breaking it, you're not going to use it unless you have to.

This is rational behavior, at least so long as the premise that there is some risk associated to using the tool is correct.

<comment><USER22> The difference between a screen protector and scratches buttons on a guitar's body is the scratches on the body do not affect the guitar's performance whereas a scratch on the glass of your screen could have permanently affect the use of your phone.

<comment><USER23> What I find interesting is when people will point to their plastic screen cover covered in small scratches as proof of why they need it. Generally, those same scratches would not have been present on the actual glass screen and are only proof that their screen protector is of inferior quality.

I'm also unsure if the order of operations is: 1) I treat my phones poorly, thus I should get a screen cover. OR 2) I have a screen cover, so now I can treat my phone poorly.

</comment></comment></comment><comment><USER24> What's the solution?

I abandoned a woodworking project last month because I doubted the finished cabinet would be worthy of the wood. So how do you move past that block?

<comment><USER25> The same way you adjust to cold waters. Just jump in! Embrace the discomfort. You'll get past it soon enough. And then reward yourself with a hot shower and a hot cup of coffee after (metaphorically).

</comment></comment><comment><USER26> That's, uhh, very much not the case for photography.

<comment><USER27> You sure about that? I always thought I never was good enough to "deserve" an SLR, but I recently took one on a vacation and was pleasantly surprised that, not only were my photos better, but I was also able to improve on the automatic settings in many cases (weird lighting, etc), albeit with some trial and error.

High quality tools tend to raise the "quality ceiling" but also tend to be unforgiving of mistakes. Sometimes all you need is a little more confidence in your own ability, and some room to make mistakes with the fancy new tool.

<comment><USER12> Can definitely relate to this — though I own an SLR, I'm so afraid I'll hurt it that I've never taken it to places where I'd really enjoy getting better shots, instead opting for my phone's camera.</comment></comment></comment>


Ask HN: Should I invest time into Degree or Repository/Portfolio? - <AUTHOR>

Im in a unique position where I have already started a degree in Interaction Design (1st yr) but I strongly believe that this is not a good use of my time, especially considering that with the speed that the scene is changing, a lot of what I will learn will be outdated by the time I graduate. I'd really, really love to hear what you all have to say about this! PS Im also considering just moving to SF and taking CS classes at community college. Thanks. <comment><USER2> First off, I'd like to point out that there's no reason you can't do both. While I was at college, I built several successful projects, conducted research, took jobs and interned in my chosen field (computer security) while working towards a computer science degree. For me, ultimately, the decision to drop out and take a senior position in my field was something I couldn't pass up.

That said, I've always heard and respected the opinion that dropping out to run _towards_ an opportunity is different than running _away_ from, say, classes that you're worried might not be super relevant by the time you graduate.

On one hand, you're right--fields change very quickly, and surely your sophomore classes will seem dated in three years when you land a job in your field. However, dropping out _will_ present challenges later on. I, personally, have been lucky enough to not run into many obstacles because I don't hold a degree--primarily because the companies I've worked for do not place huge amounts of stock into a degree--but many other organizations would.

For now, stay in school. Learn your trade. Work on side-projects so that you have an impressive portfolio when you graduate. If it doesn't work out, or if an opportunity too good to pass up presents itself, jump on it. Don't drop out for the sake of dropping out. Besides, college is a great place to network with people whose connections may be invaluable some day.

 _Also,_ and this probably goes without saying, this decision is ultimately up to you. Asking on the Internet about it will not make up your mind, nor can random HNers, as intelligent as they may be, tell you what to do. The above comment just consists of some thoughts I have on an issue that strikes close to home.

<comment><AUTHOR> i agree with you on all fronts, and wanna just add that i am indeed considering dropping out so that i can run, if not sprint, towards my goals. for example, html is taught in the 3rd year at my school. by that time, i imagine i could not only learn html but create an entire portfolio of websites.</comment></comment>


We can solve the terrorist encryption problem with this one simple solution - <AUTHOR> http://everythingsysadmin.com/2015/12/five-reallys.html <comment><USER2> > None of their dire predictions came true. "Indeed, in 1992, the FBI's > Advanced Telephony Unit warned that within three years Title III wiretaps > would be useless: no more than 40% would be intelligible and in the worst > case all might be rendered useless. The world did not "go dark." On the > contrary, law enforcement has much better and more effective surveillance > capabilities now than it did then."

This seems like a silly argument as the goal of publicly available strong end- to-end encryption is to make exactly this prediction come true. Strong privacy advocates are rarely concerned with their friends or even some corporations having their data, it's precisely the vague yet menacing government agencies monitoring everyone's online activities that are the targets of these 'encryption for everyone' projects.

I absolutely agree with the author in general but there's no sense pretending that protection against mass surveillance and state level actors isn't the end goal.

It seems like the tech community is stuck on encryption because they belive their government is evil, corrupt, and if they can just win this one fight then they will be able to shield themselves from the rights violations they can't hope to change. It's noble but incredibly defeatist. State level actors will always have smarter people and unlimited resources to break whatever walls you try to put up. This won't end until surveillance is made impossible via legislation (or I suppose revolution if that's your thing).

<comment><USER3> Surveillance won't be prevented through legislation. If the will existed to do that, then that same will would simply reform _how_ that surveillance got used.

Power always desires more control for its own sake, and this still applies even when that power is divided via democracy.

Essentially government itself is inreformable with regards to this subject - not this government, not that government, but the entire class of mandatory centralized controllers [0]. It will always seek more control and legibility - the only way for boundaries to get set is for things to be physically _impossible_. It seems like the existence of encryption could be a law of nature, so it makes sense to build on that and fortify the boundary rather have legislating mathematics look almost reasonable.

[0] This is not a complete indictment of concept. Government can still create good things and be a force for good. But many aspects of reality are not straightforward for it to control. Long ago we decided it was a Bad Thing when a government starts implementing the invasive controls necessary to reach over these boundaries. When a government goes down that path, we call it _totalitarianism_.</comment></comment>