Ask HN: Advice for a Helicopter Technician? - <AUTHOR> I am currently a helicopter aircraft maintenance engineer (AME-M, diploma program) in Canada, with 5 years as a licensed engineer, taking care of 6 helicopters and a base by myself. At 27 years old, with 2 weeks on and 2 weeks off this would be the dream job of many. However, I have hit a plateau in career advancement and lost interest in aircraft, as a majority of the job is dealing with systems that are 50+ years old, to which I am only a parts changer. One of my career disappointments is being unable redesign failing mechanisms within aviation, even if the recurring problems have known solutions.
Throughout the past few years I have experimented with 3d printers, learning arduino and designing parts for mechanisms in the tinkering field. I have a keen interest in designing my own devices to function as tools for jobs or every day life activities. I am interested in automation systems or simple robotics to finish a task. In 2012 I enjoyed running a small company designing 3d printed tools to be used on helicopters in place of expensive metal cnc tools, however the industry is too niche to be fully self employed.
But sometimes I feel I am missing out on a lot of useful information and skills learned in university through an engineering degree program.
Is going to University to get an engineering degree worth pursuing at this point?
Given that I wish to pursue my own ideas and designs, what degree program would you recommend? <comment><USER2> > Given that I wish to pursue my own ideas and designs...

Then pursue your own ideas & designs. Next find a buyer. Figure out a way to get to market.

Tangential story-- how James Dyson did it. >[https://www.goodreads.com/book/show/955045.Against_the_Odds](https://www.goodreads.com/book/show/955045.Against_the_Odds)

<comment><AUTHOR> I would say my worry would be pursuing a product where investors or customers would expect a highly educated engineer vs say DIY type maker. Thanks for the advise and link, I did not know Dyson's story.

<comment><USER2> > investors or customers would expect a highly educated engineer ...

This is a WHO problem, straight forward to solve.

Find an esteemed, respected, pedigreed individual with a significant background in this space to serve your start-up in an advisory or consulting capacity.

Imagine someone on staff @ Cambridge > [https://www- edc.eng.cam.ac.uk/people/academics.html](https://www- edc.eng.cam.ac.uk/people/academics.html)

</comment></comment></comment><comment><USER3> Industrial design is an exciting field. If you are not interested in starting your own company again then I think a degree would be great for future prospects.

I don't know which degree or which college though.

<comment><AUTHOR> Perfect I will look into Industrial design, thank you.

</comment></comment><comment><USER4> What do you want to do instead of what you're doing now and how does getting a degree help you do it? Wasn't clear to me from the post.

<comment><AUTHOR> Would spending the time and money in say getting a mechatronics degree, in hopes of being more legitimate in the startup world, be worth the ROI? Or is it legitimate enough to just be a tinkerer plugging away at projects/products and learning from text books at home, in reference to the startup world.

<comment><USER4> I don't think the degree will be worth it. I'd say keep plugging away. I doubt you will find a better situation to do so than your current one if you're getting 2 weeks off at a time.

</comment></comment></comment><comment><USER5> Maybe consider an MBA in industrial design or manufacturing. Depends on if you want to run/scale a tech business or fiddle with laser sinters.

<comment><AUTHOR> Thanks for the reply, I would prefer doing both, but definitely have a stronger interest in creating a niche business again.</comment></comment>


We plan to have Chrome hide ads that do not comply with the Better Ads Standards - <AUTHOR> https://blog.google/topics/journalism-news/building-better-web-everyone/ <comment><USER2> I really don't see this going down well.

The ad networks that aren't Google aren't going to be happy. They may admit that this could reduce the use of full ad blockers but they're going to loathe that they had no say. Plus, these experiences were shitty for the user but they must have worked.

From a publisher point of view, on the one hand, this is likely to bring reduced revenue from the folks who don't use ad blockers, that will be bad for the publishers. On the other hand, there's the hope that users will stop installing ad blockers and revenue should finally stabilise somewhat. Like the ad networks, I think many publishers will be upset about not having a choice.

And finally, from a user perspective, this doesn't go far enough. Many users will install ad blockers to get rid of the ads on YouTube alone and there are a ton of other unacceptable ad formats that the "Better Ads Standards" don't cover (like animated ads, small sticky ads, ads that look like download buttons).

It seems to me like Google's desperately trying to plug the leak on a sinking boat with a straw. It might mitigate things for a while but it won't do anything to solve the actual problem.

<comment><USER3> > but they're going to loathe that they had no say.

They had a say. They could have responded to the race to the bottom state of ad display tech. They could have recognized that they were in a tragedy of the commons and formed a coalition for better ads.

They didn't. They continued the race to the bottom.

Each day they continued to push awful ads that harmed the user they were voicing their opinion.

I agree with the rest of your comments, though...

<comment><USER4> I guess we'll find out if Internet content disappears because of a lack of "Gotcha!" advertising.

My guess is that the Internet will be just fine.

<comment><USER5> Especially the non Web bits.

</comment></comment></comment></comment><comment><USER6> IMO, this is begging for an anti-trust lawsuit. Google, the largest advertiser on the web, building web browsers that block other networks ads. I believe they're going through with it now partially because they don't expect an active anti-trust presence from the trump admin.

<comment><USER7> The post says they'd block ads from their own network that violate the standard as well

<comment><USER8> Very simply, Google can ensure its own network never violates it's own rules. But other ad companies don't get to set those rules.

<comment><USER9> > But other ad companies don't get to set those rules.

Strictly, neither does Google, as long as they are following the industry group's standard. Sure, Google is a member of that group and may be able to _influence_ the standard, but so are a lot of other companies, from Facebook to the Washington Post. I doubt any one company can run away with the standard without the others having a say, or at least making a big stink.

</comment></comment></comment></comment><comment><USER10> The biggest ad company in the world gets to decide what is and isn't acceptable for an ad and actively censor it in the most popular browser in the world? It's funny how some things turn out in the long run. I don't see the situation getting better anytime soon. At this point, Chrome is the new IE6: whatever they choose becomes standard because of their huge market share. Ho well, at least it doesn't break all of my sites.

<comment><USER11> Not IE: not bundled, not integrated, easily uninstalled. If people don't like this move, there are a myriad of other browsers available for them to choose from.

<comment><USER12> IE was extremely replaceable.

Microsoft tried to tie it in as much as they could to leverage it being the default and justify it being bundled, but the other vendors share at least an equal share of the blame for _completely dropping the ball_.

How long did Netscape Navigator/Communicator 4 linger? How many wasted resources were poured into things like the integrated page builder in Communicator instead of features? Do you remember trying to use Netscape 6 Beta or whatever it was called before it became Mozilla?

IE 5 and 6 were initially just that much better. Heck, _IE was even the best browser on Mac for a while circa 2000-2002ish_.

MS deserves a ton of extra blame for letting IE6 stagnate for five freaking years until Phoenix->Firebird->Firefox got them off their asses again, but don't blame them for having the better product when that initial war was won.

But, another key difference here is that Google has much more incentive to keep improving Chrome and web standards even if they get more and more market share, since their user-facing products are web properties, and Microsoft's were not at the time.

<comment><USER13> I'm not sure that's entirely fair to Netscape and Mozilla. Early versions of IE had absolutely horrible standards compliance, so there was a substantial lock-in effect. Other browser developers had to expend considerable resources to emulate IE's rendering, bug for bug. Even Microsoft had to bend over backwards to maintain compatibility, via the once notorious quirks mode.

</comment></comment></comment></comment><comment><USER14> I'd rather someone implement a tipping API where I can allocate money per website per minute (or hour spent). When the money runs out, depending on the configuration, the website can choose to serve me the page or ask me to reload (on money for the website)

They get small amounts of micro transactions (I'm talking less than a cent) and I change my behavior to stop going to useless sites.

everyone wins!

personally, I believe ads are a disease. if your website isn't worth paying a penny to go to for an hour, then just shut down. a penny an hour could be very sustainable for plenty of sites. take some random forum: 15,000 thousand users per month, let's say the average user goes on for an hour a day, or 30 hours a month. 450,000 cents is about 5 thousand a month. not too shabby. if your website is that awesome up the price to 10 cents and increase your money an order of magnitude.

the problem is the culture of "free", unfortunately.

<comment><USER15> Something like Google Contributor, which was just relaunched today?

[https://contributor.google.com](https://contributor.google.com)

Discussion here: [https://news.ycombinator.com/item?id=14467702](https://news.ycombinator.com/item?id=14467702)

<comment><USER16> That is "pay to block ads" and doesn't cover the OP's use case of "pay to use this site" (afaik, I could be wrong). That use case is important for sites that don't want to use ads in the first place.

<comment><USER17> This is pay the site to replace what they would get from an advertiser.

</comment></comment></comment></comment><comment><USER18> This is sad. When you follow the link they provide for the Better Ads Standard there is a link to the coalition's privacy policy at the bottom of the page which says clear as day that third parties such as social networks are monitoring your use of the site to facilitate "interest based advertising". That says it all, they want ads to be more palatable so them and their accomplices can track your every digital move. This will make Creepy Google tons of money by selling out their most precious resource while they continue to build skynet.

Whatever happened to "Don't be evil"?

<comment><USER19> "Don't Be Evil" was basic PR: figure out what you're most hated for, and loudly, repeatedly insist that you're the opposite of it. Delta promises comfort and ease in coach, which should only remind you of how hellish that experience can be; Google bragging that they weren't evil should've been an instant red flag.

<comment><USER20> The continuing repetition of this PR catch phrase by Google fans as "proof" that Google is benevolent is mindblowing to me.

<comment><USER21> Well, I've read that Google coded XKeyscore for the NSA. And in retrospect, Shumeet Baluja's _The Silicon Jungle_ almost confirms it.

<comment><USER20> I wouldn't be at all surprised if that was true, particularly given Google's incredibly close relationship and revolving door with the government. I haven't read The Silicon Jungle, but I might have to do that now.

<comment><USER21> It's a great book.

"Shumeet Baluja, Ph.D., is currently a Senior Staff Research Scientist at Google..."

[https://research.google.com/pubs/author35.html](https://research.google.com/pubs/author35.html)

</comment></comment></comment></comment></comment></comment><comment><USER22> Am I so very cynical, that I assume that Google Ads will be assumed by default to comply with these standards? And that therefore, those using Google Ads to advertise will have their ads shown 100% of the time, while the exact same ad served on the same page, but via a different ad network, might not be shown?

<comment><USER23> FTA (emphasis mine):

>In dialogue with the Coalition and other industry groups, we plan to have Chrome stop showing ads _(including those owned or served by Google)_ on websites that are not compliant with the Better Ads Standards starting in early 2018.

<comment><USER24> They key here is not 'which ads' get shown, but rather which _websites_ will be allowed to show any ads at all.

<comment><USER25> If this follows the trend of what happened to YouTube advertising (TV 2.0) in that certain websites will be targeted for demonetization without any transparency or consistency, this will open a giant hole for competitors to eat one of Alphabet's core businesses. Perhaps leveraging this use of control over Chrome to effectively cripple competing ad networks with perfectly reasonable ads on websites that don't want to provide profit to Google will open them to litigation as well.

This will be interesting.

<comment><USER24> Google's Display network is only a small fraction of their advertising revenue.

Search advertising revenue is #1 by far.

Google can make a lot of mistakes in every other vertical. As long as they don't screw up search they can fail as much as they want.

</comment></comment></comment></comment></comment><comment> tuna-piano A few years ago, Chrome decided not to add a "mute tab" option, explaining, "After much debate, we decided not to proceed with a tab mute control, as this crosses a very important line: If we provide Chrome controls for content, we're implying that Chrome should take on a responsibility to police content."[1]

It appears their opinion has changed. Of course, it's likely due to financial reasons[2].

That said, Chrome has blocked pop-ups forever... and I think I agree with this decision, as it will help both Google and content owners. I don't think most people won't install ad blockers if ads aren't obnoxious.

[1][https://thenextweb.com/google/2014/02/11/google-explains- won...](https://thenextweb.com/google/2014/02/11/google-explains-wont-add- mute-tab-option-chrome-considers-tab-audio-api-extensions/)

[2][http://www.businessinsider.com/pagefair-2017-ad-blocking- rep...](http://www.businessinsider.com/pagefair-2017-ad-blocking- report-2017-1)

<comment><USER15> Mute tab seems to be enabled by default now, so they must have changed their minds a while ago.

EDIT: Found an article: [https://venturebeat.com/2015/10/20/you-can-now-mute- tabs-in-...](https://venturebeat.com/2015/10/20/you-can-now-mute-tabs-in- chrome/)

<comment><USER26> As far back as Sept. 2014 chrome://flags/#enable-tab-audio-muting was available in dev builds. I think I've probably had it enabled for about as long.

</comment></comment></comment><comment><USER27> Sorry Google, I'm going to block them all anyway. And if your browser won't let me, I'll use one that will.

<comment><USER19> Firefox/SeaMonkey, NoScript, uBlock Origin. It's pretty cozy over here.

<comment><USER28> Curious to see mention of SeaMonkey! Do you have personal experience with it, and if so how does it stack up?

Was checking to see how often it appears on HN and it seems to have shown up a handful of times with the recent discussions of the browser wars, along with another Firefox-derivative/alternative I've never heard of before: PaleMoon.

<comment><USER19> SeaMonkey's pretty good -- it's Firefox oriented towards developers. I almost feel like it's a bit faster than Firefox proper, even though I'd expect it to be slower from extra developer tools; regardless, it can run all the same plugins, and it's a good choice of browser for software-related jobs.

</comment></comment></comment></comment><comment><USER29> None of this solves the fundamental problem with ad-centered revenue models, which is that advertising has driven down the quality of content by forcing sites to optimize for cheap clicks. Even if you're blocking ads, you're still being affected by them, because they're driving the strategies of the sites you visit and defining the metrics by which they judge their own success.

Don't get me wrong; this is an improvement, and a welcome one in my opinion. Pre-stitials in particular were never anything more than a slimy way to get around pop-up blockers. But ultimately the internet needs a new way to make money. I don't claim to know what that is, unfortunately, but I think the problem is clear.

<comment><USER30> Tip jars. Support the content you value without having to deal with ads.

[http://micheleincalifornia.blogspot.com/search?q=Tip+jar](http://micheleincalifornia.blogspot.com/search?q=Tip+jar)

</comment></comment><comment><USER31> My parents don't realise that when they click on the top link of a google search result, they are clicking on an ad. I'd guess that many many other people don't realise this either.

That would seem to categorise these adverts as deceptive, right? So, when will Google be blocking these adverts?

<comment><USER32> I have seen many people - young and old - do the exact same thing, not knowing they are ads.

</comment></comment><comment><USER33> Eh, I'm using adblockers forever. There is zero content that I absolutely can't live without. I miss the "old" days when folks were publishing sites for the love of what they were doing.

<comment> Method-X People still publish sites for the love of it. That never changed. Not every site has ads.

</comment></comment><comment><USER34> This is just industry self regulation in the face of otherwise impending "doom" from the ad blocking trend.

</comment><comment><USER35> This sounds great on the surface, but when one of the biggest tech companies in the world becomes the arbiter of the internet, we all lose.

</comment><comment><USER36> > But the reality is, it's far too common that people encounter annoying, > intrusive ads on the web--like the kind that blare music unexpectedly, or > force you to wait 10 seconds before you can see the content on the page.

I can't help but point out the irony that sound-playing, (mostly) unskippable ads precisely describes Youtube, before you can see the (video) content.

<comment><USER37> The sound of a YouTube ad doesn't come from an unexpected place.

</comment></comment><comment><USER38> "The new Ad Experience Report helps publishers understand how the Better Ads Standards apply to their own websites."

Only Google could put something that forces all websites to A) use this tool and B) comply with this tool, or else, as a "helpful tool for publishers".

When you have a 70%+ market share (Chrome Desktop and Android browsers) you leave websites with ads no choice but to do what you want, how you want, and hope for the best.

If you've looked at the tool, you realize it's going to work just like Mobility reporting and Safe Browsing. Google will tell you there's a problem and take action. In this case, the action is to cut your revenue. I'm sure there will be a hotline to call if it makes a mistake though.... (that's a joke)

Shame on you Google.

</comment><comment><USER39> Mark my words: This will be the basis for legitimizing out-of-band popups from publishers on Chrome asking you to disable your non-Chrome ad blocker.

<comment><USER40> Way ahead of you: "With Funding Choices, now in beta, publishers can show a customized message to visitors using an ad blocker, inviting them to either enable ads on their site, or pay for a pass that removes all ads on that site through the new Google Contributor."

</comment></comment><comment><USER41> I can't wait to see what Apple, Microsoft and Mozilla's response is going to be.

<comment><USER42> Presumably: Blocking ads that are deceptively listed as being part of search results.

</comment></comment><comment><USER43> It's buried a bit, but the most noticeable change is arguably that Google is productizing blocking ad blockers. From the release:

"As part of our efforts to maintain a sustainable web for everyone, we want to help publishers with good ad experiences get paid for their work. With Funding Choices, now in beta, publishers can show a customized message to visitors using an ad blocker, inviting them to either enable ads on their site, or pay for a pass that removes all ads on that site through the new Google Contributor."

</comment><comment><USER9> _Compromise: an agreement or a settlement of a dispute that is reached by each side making concessions._

If any one side were perfectly happy with this solution, it would probably mean it's not a very good solution. Of course the ad networks don't want to have to follow any standards. Of course the content producers that are making good money with ads that may fall foul of this don't want anything to change that might reduce their revenue. Of course users would rather get rid of all ads. None of that is realistic or sustainable. If advertising doesn't get its act together, ad blocking will increase even more over the large year-over- year increases it's already seeing[1], and at some point content producers will find they aren't making enough money anymore to sustain that advertising model because nobody is seeing their ads, and it will all come crashing down.

Would another model rise up in its place? Sure. Would that be any comfort to the people that ended up having to get a different job because what they were doing was no longer sustainable and no new model can take over instantaneously? Doubtful.

Whatever you want the eventual model to be, the only way forward that doesn't strangle the market while it's happening includes everyone involved taking responsibility for their part. _And this definitely includes the consumers._ Your "I can do whatever I want to bits delivered to me / I have no responsibility to watch the advertising expected to fund the content I'm consuming" arguments never really held up anyway, and they definitely don't if the other side gets its act together.

Privacy concerns are still valid, but ad blockers never actually _fixed_ that, they just added an extra level of complexity to the equation. Use facebook? Guess what facebook probably knows about every site you've visited that has a like button while your facebook session is still active. Your only hope is legislation, and you'll be lucky not to get a raw deal out of that, and your only hope of a good outcome there is awareness and activism. Acting like your ad-blocker actually helps all that much is just sticking your head in the sand when that's the next real fight for online rights.

1: [http://www.businessinsider.com/pagefair-2017-ad-blocking- rep...](http://www.businessinsider.com/pagefair-2017-ad-blocking- report-2017-1)

</comment><comment><USER44> So Google picks what ads you see on non-Google sites? Zero conflict of interest there...

</comment><comment><USER45> This is an attempt by Google to funnel more ad revenue and try and kick out competitors in one stroke.

It will only work partially.

As other commenters have said -- this doesn't go far enough though, which is understandable, they won't pull the rug under their own feet.

And no, users won't start uninstalling adblockers with happy smiles.

I guess for the huge scale Google operates in there _will_ be slightly increased revenue for a while though.

</comment><comment><USER46> I'm only using a blocker, because I don't want to be tracked and sucked dry of any data. I wouldn't mind some ads on the pages I visit.

<comment><USER47> I don't think you can have ads without tracking these days.

</comment></comment><comment><USER48> False, there is no such thing as better ADs.

</comment><comment><USER49> How does this not get government intervention when Microsoft got it for bundling IE as the only broswer for Windows? This is like being the company in charge of fuel efficiency for car manufacturers while also owning 50% in aramco.

</comment><comment><USER50> This really gives legitimacy to all ad-blockers; although I guess that ship has mostly sailed anyway. Still, you can't say it's inherently wrong if you implement some version of it yourself.

</comment><comment><USER15> Previous discussion: [https://news.ycombinator.com/item?id=14463732](https://news.ycombinator.com/item?id=14463732)

<comment><USER18> Despite the overwhelming negative reaction in that discussion thread, Google decided to go ahead with it. What does that really say about Google and friends?

<comment><USER51> It's almost as if Hacker News is some kind of unusual bubble that doesn't reflect the opinions and viewpoints of the general public.

<comment><USER18> Good point, I do fall for the reinforcing echos of like-minded people. It's good to be reminded once in a while, but I do still find Google's, Facebook's and more recently Microsoft's business model really creepy.

</comment></comment></comment></comment><comment><USER52> Meh, I'd rather arbitrate my own filters, thanks. Will continue not using Chrome :)

</comment><comment><USER53> This smells like bad monopolistic and anti-competitive initiative!

</comment><comment><USER54> Nice ... will still keep an independent adblocker :)

</comment><comment><USER55> What's the response when a competitor (rightfully IMO) claims this is a blatant abuse of googles position as the leading browser provider?

</comment><comment><USER56> What they mean here is actually "We plan to have Chrome hide ads that do not comply with Google's standards" and I challenge anyone to show that this isn't Google trying to silo advertising even more than they already do.

</comment><comment><USER57> This is dumb. Even if I admit a lot of these ads annoy me.

Back in the day Google would just lower the ranking of sites with banner ads. That sort of makes sense. They're a worse result, so show them lower. Fine. We should still decide this with traffic, but hey we can debate that.

To give Google/Chrome broad authorization to block people from seeing content that Google doesn't like scares the hell out of me, even if it's under a thoughtful banner.

Random made up example- what if next time Google picks a consumer advocacy group that says PayPal is a bad service, and blocks ads on sites that use PayPal? (Google offers Wallet)

I would grant them blocking ads that activate Android vibration- I consider that borderline malware. I grant pop-up ads, opening a new tab I didn't ask for is also arguably malware. I do not grant them blocking a wide variety of types of content just because marketers are abusing it. That's bad precedent. Rank them down, warn the user, heck put a "click to play Flash" lock on it. But don't take control away.

Google also hints at services that would let a website lock down when it detects ad blocking and force people to pay or otherwise engage to get access to the site. I think that's already one trojan horse. Google can stop you from trying to generate revenue off users, oh by the way we sell a new system where you can pay to get that back.

I don't like anything about this, even though I agree that screw those ads.</comment>


Writing kernels that boot with Qemu and Grub – a tutorial - <AUTHOR> http://www.cs.vu.nl/~herbertb/misc/writingkernels.txt <comment><USER2> Nice but very incomplete article. Some observations below...

You _will_ need to build a cross compiler toolchain (binutils and GCC). I.e. i686-pc-elf-gcc for 32 bit or x86_64-pc-elf-gcc for 64 bit. The compiler that comes with your OS is built for a different target and may have downstream patches, esp. if you're on Ubuntu. Things may seem to work initially but you _will_ encounter strange bugs sooner or later.

Build a bootable and debuggable ELF file, not a flat binary. All it takes is a slightly different linker script. You won't get very far without a debugger on bare metal projects.

You need to zero fill .bss section in the boot code before jumping to C code.

I recommend using gas instead of nasm. You might like Intel syntax but you'll need inline (at&t) assembly in C code anyway. Nicer to have just one syntax. It's just an assembler syntax, you will get used to it in a matter of hours

Use a makefile. Fancy build systems (e.g. cmake) aren't nice with kernel images.

See below for examples. The first one isn't my project but I contributed the linker script, Makefile and README for making bootable ELFs. The latter is my x86_64 toy kernel project from years ago.

[https://github.com/Overv/MineAssemble](https://github.com/Overv/MineAssemble)

[https://github.com/rikusalminen/danjeros](https://github.com/rikusalminen/danjeros)

<comment><USER3> > You need to zero fill .bss section in the boot code before jumping to C > code.

GRUB does this for you. See this thread from a few years ago: [https://news.ycombinator.com/item?id=7590790](https://news.ycombinator.com/item?id=7590790)

<comment><USER2> Hah, it was a response to my comment back then too.

Either that applies only to multiboot v2 or there was a bug in qemu loader since I had a non-zero value in .bss.

</comment></comment></comment><comment><USER4> I'm impressed they got grub onto a hard disk image without needing root; I didn't think you could do that. I struggled with that for a while, before I found grub2-mkrescue, which I think is much easier if you're just starting out. The entire sequence to create a CD ISO is,

      # Stage the data we want in our image:
      mkdir -p isofiles/boot/grub
      cp grub.cfg isofiles/boot/grub/.
      cp kernel.bin isofiles/boot/.

      # Make the image:
      grub2-mkrescue -o os.iso isofiles

      # Clean up:
      rm -rf isofiles

Which I got from the tutorial here[1], which is also excellent.

[1]: [http://os.phil-opp.com/multiboot-kernel.html](http://os.phil- opp.com/multiboot-kernel.html)

<comment><USER5> How is booting from a CD not being "root"?

<comment><USER6> Booting from a CD is outside the OS permissions system. The parent poster is talking about _making the CD image_.

<comment><USER7> Why should creating an ISO need root? It shouldn't be any different than creating a tarball or a zip file.

<comment><USER4> As pjc50 notes, it _shouldn 't_; absolutely nothing about creating either ISOs or hard disk images requires root, in theory — it's just a file, after all. But in practice, tools like losetup and mount both require it. The part I found novel in the article was the mtools package, which I didn't know about.

Linux has made progress here, such as FUSE for mounting in user space. But FUSE doesn't support file systems that the OS inherently supports, for example. My understanding is that you need to write a FUSE driver for, e.g., ext2, even though Linux is perfectly capable of mounting ext2 as root.

Block devices and partition tables present another hassle.

I suspect ISOs are more easily done simply because non-root users have more need to create them: UI applications for making ISOs readily exist, but I can't think of any common applications that deal with disk images that don't already have root.

</comment></comment></comment></comment></comment><comment><USER8> This is a good resource.

About a few years ago I was offered a $10K bounty to make Solaris 7 work with QEMU, and the only progress anyone ever made was mounting the ISO image as a hard drive image and install from there. Nobody ever got the NIC card to get on the Internet. I found out CDROM0: or something could access the ISO image. Everytime I set up TCP/IP it would cause a kernel panic, or lock the system up, or crash. I was given like a week and could not do it. Then I found out about Hackers in Russia trying to do the same thing and not getting anywhere. Apparently the Solaris 7 Kernel has a NIC bug in it where some pointers are out of place. It was solved in a Y2K CD-ROM from Sun which is no longer offered.

Client who wanted me to make it work has a failing SPARC Server with Solaris 7 and needed everything the same. Problem was fixed in Solaris 9, but they needed Solaris 7 even if 9 is backward compatible.

Writing a new Kernel for Solaris 7 based on the old Kernel that works with QEMU might just work. Remember it is QEMU SPARC that I was working with to get networking going.

But if the best and brightest Hackers couldn't get Solaris 7 to have networking, then I for sure couldn't do it either.

But there is a need to emulate any sort of hardware no longer supported or made anymore because many businesses run on software created for those old hardware and software standards and when they can't buy the old hardware or it costs too much, it is better to just run it on QEMU.

<comment><USER9> > businesses run on software created for those old hardware and software > standards and when they can't buy the old hardware or it costs too much, it > is better to just run it on QEMU.

Or rewrite the software. At some point they're just going to pay more for not upgrading than it would cost them to start from scratch. And that's not including the cost of teaching people to manage old solaris boxes and dealing with non-accelerated QEMU draining your power budget.

<comment><USER10> Or port the software. I was given the task to port a soap-based MLOC client- server application from kylix-apache to modern delphi xe-apache.

All I had to do was to fix everywhere that used ansistring which meant rewriting compression, variants handling, hashing and porting a bunch of delphi library stuff that changed in the past 14 years.

After a few months and a gigantic commit on a few dozen files we can now debug everything, all apache modules run smoothly on windows and even android clients work.

<comment><USER9> If you have access to the source, that's possible of course. But I'm assuming that Solaris 7 also means you're stuck with proprietary, closed solution.

</comment></comment></comment></comment><comment><USER11> If a lightweight operating system won't do and you don't want to create a full OS from scratch you can try a unikernel based on includeOS or mirageOS (the few ones I know of).

If this is still not good... try visiting [http://wiki.osdev.org/Main_Page](http://wiki.osdev.org/Main_Page)

</comment><comment><USER12> This mentions ubuntu 7.10, so must be from early 2008 - still very educational and interesting, but probably worth mentioning the age, since x86_64 has become ubiquitous, kvm / bhyve / xhyve have appeared, EFI, virtio, directly booted kernels, other stuff I'm sure ...

<comment><USER2> x86_64 is more work to get bootstrapped than 32 bit mode, it might still make sense to do hobby hacking projects in 32 bit mode.

Although I've not worked with EFI (only multiboot) so I'm not sure how different it would be.

<comment><USER13> well, the nice thing about EFI is that it already places you into long mode

<comment><USER2> But how does it configure the page table?

There's no identity mapped mode in x86_64, which slowed down my work because of chicken/egg problems in early boot page table configuration.

That being said, I'd probably be using EFI in long mode if I was starting a bare metal project on x86_64 in 2016.

<comment><USER13> UEFI identity maps the memory.

UEFI applications are kind of weird, as until ExitBootServices is called they are regular hosted applications that need to call the EFI boot services to do things like allocating memory, once ExitBootServices is called they take full control of the system</comment></comment></comment></comment></comment>


Ask HN: What are your productivity hacks? - <AUTHOR> I've been trying to be more productive by taking small, concrete steps. What systems have you set up for yourself?
Here's what I have.
1. Whiteboard tasks for the week, w. daily assignments
2. Check emails once an hour
3. Set default page in FF as a blank page(as opposed to Gmail, Reader, etc.)
4. Tea, not coffee. Cup of water on hand at all times.
5. 7 pull ups each time I use the bathroom.
Equipment-wise, multiple screens tend to help. A good chair too. <comment><USER2> I like to keep it simple. My list has 1 item on it. I work on that until either it's done (often) or I struggle so much with it that I decide to change plans (rarely).

For the last 2 days, I've been writing a model configurator that explodes input parameters into individual objects. I probably have 8 or 9 things dependent on this (not really sure yet), so I plug away until done. Then I'll figure out the new only thing on my list.

I've tried every conceivable "productivity hack" and nothing has worked as well as this. I have scratch pads, paper on the wall, 20 colors of markers, and all kinds of automated tools for scheduling and planning. I've varied my diet, my exercise routine, my daily routine, and almost anything else I could vary, and none of it really mattered. All it ever really did was take focus away from the real task at hand.

Just identify your critical path, remove it, and repeat forever.

I started with this and fine tuned what worked for me:

<http://paulgraham.com/procrastination.html>

Other inspiriation:

"I see only one move ahead, but it is always the correct one." chess master Jose R. Capablanca

<comment><USER3> _Just identify your critical path, remove it, and repeat forever._

Remove it? I don't understand; could you please explain?

<comment><USER4> I parsed it as "resolve", or remove it from the plan because it's done.

</comment></comment></comment><comment><USER5> A friend of mine was working in a lab, writing his thesis with 4 people who were either professors or doctors in electronics. He asked once - what is the most important thing you did for your success.

They all discussed it and agreed on this rule:

If you have 10 things to do, and you do them all in parallel, you will be done slower with ALL of them, than if you do them one after the other.

That's the biggest productivity hack - do things one after the other, and not all at once.

<comment><USER6> this should be at the top of the comments.

</comment></comment><comment><USER7> 1.

Prioritization. Spending 10 minutes every end-of-day planning the next day.

2.

Scheduling chaos time. Leave spare time every day and every week which is like extra time to get the tasks done. So there is no backlog.

3.

Using leechblock firefox plugin to make sure I don't read google reader, HN etc before lunch.

4.

Making plans public. I used to have an accountability partner where we both used to tell each other what we'll achieve for that day. And then check up on each other at the end of the day.

5.

Scheduling meetings at the end of the day. While there are exceptions because of time conflicts, most of my meetings happen at the end of the day. And sometimes during lunch.

<comment><USER8> _4\. Making plans public. I used to have an accountability partner where we both used to tell each other what we'll achieve for that day. And then check up on each other at the end of the day._

That is a genius idea. Nothing like peer pressure to help you achieve stuff.

<comment><USER9> I really like the idea of no wasted time before lunch. Trying to remove reader/hn for the entire day sucks, but maybe knowing "only" after lunch would help increase my rate on my already more productive morning time.

</comment></comment></comment><comment><USER10> My wife and I own two small software companies (similar product, different niches) and have a small cattle ranch. We work from our house and also have a 14 month old son. Being productive is essential for us to manage our work/life balance.

A few things that have worked for us:

1) Hire someone to be on the "front lines" so you can queue your tasks while your business still has timely responses

2) Minimize switching hats throughout the day (marketer to programmer to customer service)

3) Avoid computer distractions \- Remove programs from dock (use QuickSilver instead) \- Remove notifications (menu bar items icons, widgets, growl notifications) \- Remove bookmarks bar from Safari and FireFox \- Remove email notifier and only check 1-2x a day and when you are ready to answer them

4) Plan ahead by creating tomorrow's ToDo list today

5) Separate Google Reader feeds by subject and only read specific subjects when wearing that hat

6) Stop bookmarking URLs and saving code snippets - it will probably be out of date by the time you need it (assuming you can remember where you saved it)

<comment><USER11> So true about number 6, I must have thousands of bookmarks and URLs saved that I've _never_ referred to.

</comment></comment><comment><USER12> My best productivity hack has to be the "million dollar idea list" that is SEPARATE from my daily to-do list.

Every time I have an idea now, I force myself to put it on that list, and if I'm still thinking about it in 2-5 days, then I'll allow myself some time to explore it further.

It has saved me hours a week. I used to explore an idea immediately for up to an hour, sometimes more, and all that time is lost because several of the ideas shouldn't have been allowed even 2-seconds.

<comment><USER13> Just this morning I've set up a wiki for myself to help with this problem.

As ideas come in, I'll post them to the front page under "free floaters" (working on quicksilver action for that right now), then as they start to form or as I do research, I'll start fleshing out the pages for each idea.

I'm hoping the wiki aspect will also force me to look at how individual ideas might be related. I'm thinking of it conceptually as a mind map that changes with time.

I'm not sure if MediaWiki has the ability to view those relationships at a high level, but if not, I'll write something that does.

<comment><USER6> very similar idea here. I also run a mediawiki wiki on my laptop, and my pile of ideas is in a template I call the idea garden. The front page of the wiki is a pile of templates: to do list, idea garden, and a subject-matter-specific meta template that has two levels of links into all the other areas. Been using it for over a year now, swear by it. SVN and PHP are not cool, but it works, and that counts. BTW, what plugins are you using? I'm using

* SpamBlacklist (just in case) * ConfirmEdit (just in case) * Cite * Parser Functions * FCKEditor * Quiz

I'm getting mediawiki and plugins through mediawiki svn, and apache, php, postgres, etc, from macports. You?

<comment><USER13> I haven't yet looked into the plugin's available, but I'll check out the ones you mentioned.

I've installed PHP, MySQL, and MediaWiki from zips/installers on a Windows server I have access to so I could hit it from any of my computers or (eventually) phone.

I guess I could have set it up at home, but I don't like keeping my computers on 24/7. I'm considering getting an Asus EEE box that supposedly only needs 20W, so I may revisit that in the future.

</comment></comment></comment></comment><comment><USER14> I've tried every productivity trick under the sun but very few things ever work for me, or at least not for very long.

The system that has worked best when I can bring myself to stick to it is:

1) Write a small paper list before going to bed of what I want to do tomorrow.

2) Tidy my room and get any work materials that I will need (which for me normally just means relevant books etc) ready on my desk.

3) Try to start work the moment I get up.

4) Record what work I do on a simple paper based schedule in 30m blocks during the day. I'm somehow less likely to procrastinate if I know that I am going to have to write down that I've done it.

Thats about it. Getting up at the same time every day and avoiding too much coffee helps too.

I seem to be able to stick to this system fairly well most of the time but when something happens that causes me to stop, then it often takes me weeks to get back on track.

Whatever system you use, just make sure it is as simple as possible. You don't want maintaining your time management/productivity system to become your full- time job!

Hope this helps ashishk

<comment><USER15> I like your record keeping idea. I'm going to try to that to make myself more accountable to myself.

</comment></comment><comment><USER16> Once a week, take something you're doing ad hoc and systematize it, or take something you've systemized and measure it, or take something you've measured and improve it, or take something you've improved and automate it.

Note that the above suggestion is self-referential.

</comment><comment><USER17> Positive thinking. Every hour of every day. My productivity increases greatly when I take a break and imagine beautiful things, funny things, myself and others enjoying success etc rather than reading news online or playing negative video games (for example).

</comment><comment><USER18> In addition to other suggestions, I would suggest the pomodoro technique if you're in an environment where you deal with reactive/disruptive work mixed in with focused work. <http://www.pomodorotechnique.com/>

Depending also on the variance of your work- if there is work that requires lots of contexts (phone-work vs. appointments vs. programming vs. design...) there's always Getting Things Done (GTD). I would also recommend GTD if you deal with lots of incoming data-streams, paperwork, or if you are generally unorganized.

</comment><comment><USER19> 1\. Outsourcing tasks that don't require my specific involvement to my offshore team. 2\. Dining out instead of cooking. It is not much more expensive to dine out, but it saves me time (grocery shopping, cooking time, cleaning time). 3\. Roomba. I will never vacuum again. Ever.

<comment><USER20> It's unhealthy, though, isn't it? I have a hard time finding places that are healthy, fast, tasty and cheap all the same time. Whereas I can quickly cook healthy cheap and tasty meals.

<comment><USER19> Not at all. Living in California makes it easy...there are a lot of health- conscious options for dining out in LA (my favorites are Japanese, Vietnamese, and Thai food), and all chain restaurants are now required to provide nutritional content for the whole menu.

<comment><USER21> Definitely not the case in Texas (yet); although, Austin is better than most cities over here.

</comment></comment></comment></comment><comment><USER22> 1\. set noprocrast on HN

2\. use a separate browser for Gmail

3\. don't check emails automatically. Only if I think of it.

4\. only read online news once during the day, at lunch, and use instapaper.com to defer articles that might take more than a few minutes to read.

5\. the null default browser page is a great idea - but in the past I've taken it further, with a message asking if I'm browsing for work. I've also thought that a script displaying my current todo list or bug count, etc. would be a good default page.

</comment><comment><USER23> When working at home, where other people (e.g. your parents) live:

A closed door.

</comment><comment><USER24> 1\. Focus on one task at a time, and make a clean break when switching to another task. No multitasking.

2\. Make lots of tea in the morning and put it in a thermos. The tea stays hot all day, and I don't have to go through the entire brewing process every time I want another cup.

3\. Use software that tracks time spent on tasks. (I use a bug tracker with that feature.) I find it very motivating when I know I'm on the clock.

Actually, it seems like there's a entrepreneurial opportunity here. Maybe a service where a representative checks in on the client from time to time to make sure that the client is staying on task. Kind of like a for-profit "accountabilibuddy."

<comment><USER22> Nice name - I once had an idea for an accountability buddy web site for grad students, called 'e-advisor'. Basically you sign up and it sends you an email every so often asking about your progress. If you don't reply fast enough, it notifies your actual advisor that you're slacking.

<comment><USER25> I think the word "accountabilibuddy" was taken from an episode of south park.

</comment></comment></comment><comment><USER26> My number one rule is to reduce the code, compile, test iteration cycle.

If your compiles are too slow then get a faster computer.

Writing a hardware driver or developing embedded code? Make sure your test hardware is sitting on your desk. You can have it somewhere else if it's ssh- able and has a remote reboot button that's accessible from the command line. Because if those are true then your build is scriptable.

Always make sure that you have to run only 1 command to compile and load your new code to the test hardware (IE, up-arrow return does it all). If you have to do more than one thing to get your code running then you are wasting precious brain cycles on your build process which can be as big an interruption as a phone call or email, especially if the things you have to type aren't even the same every time.

At the moment I'm violating this principle by having to drive 15 minutes to get access to my test machine. I can program there too, but it's kind of a hassle. Needless to say this project has dragged on for weeks longer than it should have. Sigh.

</comment><comment><USER27> I batch my tasks for greater efficiency. If I have to do 3 meetings in a week, I try my best to schedule them all in the same day. I check email only once a day. Check and go through regular mail only once a week. Do all my shopping, groceries, errands all in the same day once a week. Also I try to never do any work after dinner.

</comment><comment><USER28> A proper amount of sleep, say 8 hours is usually creamy for myself, your mileage may vary. For myself at least, I find that if I don't get proper sleep that the performance lost over the awake time just isn't worth skimping on sleep. That and I feel like shit.

</comment><comment><USER29> Modified GTD.

1\. Instead of a weekly review, I assign _every_ task a date -- that's the date I want to next think about it (either to do it, decide it's no longer important or to set a next time I want to think about it).

2\. Every morning, without fail, process my inbox (Todo and email), assign dates to things, review that set of things I wanted to review that day (and act according to step(1) above) and then get on with my day. Usually, this is a ~10-15 minutes task.. This amortizes the weekly review over every day.

3\. Capture any and every actionable idea I have in the same system. (at the moment, I use Things and email todos into it when I'm on the go)

I put everything in this system -- not just work items. It's all stuff-I-have- to-do-in-my-life.

</comment><comment><USER30> I've been gradually building an app to help me do a form of time-boxing. Plus have about 5 different ways to set reminders for myself.

One thing I got from the the Getting Things Done universe is that having a reliable way to offload notes, thoughts, plans, etc. is essentially, because it means you can safely forget about stuff. That allows for better focus on whatever it is you decide to do right now.

I wrote about some of my CLI todo/tasks/bugs hacks here: [http://blog.rubybestpractices.com/posts/jamesbritt/James_wil...](http://blog.rubybestpractices.com/posts/jamesbritt/James_will_be_right_back_after_these_interruptions.html)

</comment><comment><USER31> Mine is pure-ironcald discipline. That, and you love to do the things that you're doing.

Everything else, work only in short term. Plus you don't need discipline to do what you love to do.

So, just make something a daily task and stick to it for at least 30 days.

</comment><comment><USER32> I run pomodoros: [http://www.bestbrains.dk/Blog/2009/02/21/CanATomatoChangeYou...](http://www.bestbrains.dk/Blog/2009/02/21/CanATomatoChangeYourLifeThePomodoroTechnique.aspx)

<comment><USER33> Same here, really simple and powerful technique. Just focus on what you need for 25 min, than pause for 3-5 minutes. Repeat as needed.

</comment></comment><comment><USER34> When writing code, think about the best solution for the problem while not sitting behind a computer. Then start coding without testing/refreshing your browser after every single line of code you've written. Once you feel confident the code should be ok, then start testing. You'll definitely be more productive this way, I know I am.

</comment><comment><USER35> Power Naps.

EDIT: And if you can, cook only twice a week, making enough for a few days. Setup coffee machine before going to sleep.

</comment><comment><USER36> 1) ifconfig wlan0 down

2) No matter what, I always sit down at my desk at 10AM and fire up Emacs first. Even if I don't know what I am doing, as soon as the project builds and I scan the first few lines of code, yesterday's hacking session comes back to me and I resume work.

</comment><comment><USER37> 1\. Remove Facebook from my bookmarks toolbar 2\. Restrict myself to one time- leeching website (HN, Stack Overflow, Google Reader) open at any given time 3\. Keep IM, IRC, and Twitter in a separate space so that I have control of when I see updates.

</comment><comment><USER38> I wrote some kind of todo/task list management sw for myself: it is just task prioritized by some factor, one task displayed one time, with some browsing functionality.

It works for me, I am using this system for more then one year and love it.

</comment><comment><USER39> 1\. I check e-mail once a day(could probably move to a weekly schedule although I don't think I could ever attain Knuth like batching prowess).

2\. I turn off cell phone when working on something important.

</comment><comment><USER40> 1\. Turn off sound/visual notifications for email. 2\. End long running compilations/tests scripts with 'say "compilation done"' as a cue to stop browsing the web.

</comment><comment><USER41> While playing Daft Punk's 'Veridis Quo': 1\. Read about Lisp. 2\. Open XCode. 3\. Code in Objective-C. :P

</comment><comment><USER42> How (7) is a productivity hack?

<comment><AUTHOR> pretty indirect, the idea is to do something physically active to increase blood flow, awareness, etc.

might be more effective to wash ones face with cold water though.

</comment></comment><comment><USER43> 1\. Work on problems I care about.

</comment><comment><USER44> control your thoughts. no daydreaming.

turn off the music.

</comment><comment><USER45> 1\. Vim

2\. Efficient shell usage

3\. Alternating coffee and ganja

I think only the last one's a hack but it's a damn good one.

<comment><USER20> I second (1) and (2) - but for me (3) has a periodicity of roughly 4 years (I can't remember which one college was ... and I've become insomniac in grad school).</comment></comment>


Halide (a language for fast, portable computation on images and tensors) - <AUTHOR> https://halide-lang.org <comment><USER2> I want to see an AV1 decoder written one Halide.</comment>


Forgetting Firefox - <AUTHOR> https://medium.com/@trog/forgetting-firefox-c04dba853263

<comment><USER2> (Disclaimer: I work for Mozilla)

1) I was disappointed that Mozilla continues to be seen as a tech company even by people in the know (author says he was/is a web dev). Mozilla is a political organization with a mission[1] to keep the web open. It was instrumental in the whole net neutrality thing[2], runs a series of worldwide programs that teach kids and adults about the web and web development, and is trying to push for standards wherever it can.

2) I don't have hard growth numbers for Firefox for Android, but it is a very good browser and has consistently been rated highly in the play store, and has between 50-100 million downloads and rising.

3) With some recent plays, Chrome seems to want to become the next IE. While the Blink/Chromium team itself seems to be committed to the open web, it seems like internal pressures may be driving some proprietary features or shipping things too early. (This last sentence is purely my personal opinion and speculation). In addition, the rise of web sites which say Chrome only, is quite scary (looks at WhatsApp Web). Apple only really has a lead on mobile and MS, Apple and Google aren't exactly friends at the corporate level. At this point, Mozilla getting out of the standards space could just lead to three web ecosystems (IE-Win, SafariPhone, Chrome-droid), which would be disastrous.

The author doesn't seem to realize that having a strong, competitive browser allows Mozilla to have the influence he says it needs to have. Even if we decided that email was important too, is there a strong business model in email like there is for search? Further, email itself seems to be fairly standardized and respected. The monopoly of Exchange is in corporate environments, where any other company could come in break the hold with a compelling enough product. Email itself is highly fragmented, since there are millions of mail servers out there, all of which have to talk to each other. So it is hard for any one server to make up its own rules. There are only a handful of popular browsers. Vendors can very easily implement cool features they want which won't work in other browsers. It seems it is in the best interest of Web developers to not let them do it, by saying no to using browser-specific APIs on public websites.

This is also a resource problem, Mozilla the company simply does not have enough engineers to throw at everything.

[1]: [https://www.mozilla.org/en-US/mission/](https://www.mozilla.org/en- US/mission/) [2]: [http://www.politico.com/story/2015/02/tom-wheeler-net- neutra...](http://www.politico.com/story/2015/02/tom-wheeler-net- neutrality-114785.html#ixzz3QcSoC932)

<comment><USER3> Hi,

I'm the author! Thanks for the feedback. Some notes:

1\. I do realise Mozilla is not first and foremost a tech company. But I do feel that it accomplishes its mission - driving towards an open web - /through/ technology.

2\. I have FF for Android; it's a great browser. I don't use it generally. I'm definitely glad it's available and appreciate having the choice.

3\. Agree about Chrome, and I note as such in the article (in fact a Chrome developer has commented on that point in the Medium article).

I definitely think Mozilla having a strong browser is important. I don't want Mozilla to stop working on Firefox, I'd just rather it move into a maintenance mode with focus on a few key features and improvements rather than what appears to be change for the sake of change - and the extra effort going into Thunderbird.

Your points about email fragmentation are perfectly valid - but the same was true of the web until there was some really great client software to help drive innovation around them. That's what I think/hope could happen with a stronger Thunderbird.

I love Firefox and it's still my primary browser. I can't see myself changing to anything despite the exhortations of my peers and colleagues. I love everything about Mozilla so please keep up the great work!

<comment><USER2> Also, it seems I don't understand Medium, but I'm unable to see any comments there, or even find some button that says 'comments'. Do I have to sign in to even read comments?

<comment><USER3> This was my first ever Medium post and I don't really get it either. As I look down the page I see little comment icons with numbers in them that I can click on and expand out. Not sure if they are publicly visible though..?</comment></comment></comment></comment>


Chrome now uses clang for production builds on Linux - <AUTHOR> http://article.gmane.org/gmane.comp.compilers.clang.devel/39700 <comment><USER2> Does anyone have details on why they made the switch ? The email states very little improvements, even a bug on 32-bit Debians. Is this only because of the license of the compiler ?

<comment><USER3> The licence of the compiler doesn't affect what you build with it. I expect the reasons are the same most people are switching to clang:

* Modern modular design (everything is libraries) * Faster compile times * Nicer error messages

The modular design in particular is a good reason that might not be obvious at first. It lets you do things like debuggers, code formatters and static analysers in a _much_ more sane and robust way than GCC's "no plugins, everything must be separate and flaky" way.

<comment><USER4> I recently heard a google employee come speak at my university about how google's main codebase is compiled using clang, and their janitorial work is done using clang mapreduce [1]. Furthermore, that google employee talked about how google is working with the LLVM team to integrate the toolchain into visual studio for cross-platform compilation [2]. Pretty cool stuff!

[1] (similar talk) [https://www.youtube.com/watch?v=mVbDzTM21BQ](https://www.youtube.com/watch?v=mVbDzTM21BQ)

[2] [http://llvm.org/docs/GettingStartedVS.html](http://llvm.org/docs/GettingStartedVS.html)

<comment><USER5> " google is working with the LLVM team to integrate the toolchain into visual studio "

the 3 giants are working together...

</comment></comment></comment></comment><comment><USER6> Next stop Windows! Then they can use all the modern C++ constructs they like...

</comment><comment><USER7> How about Chromium? Are they switching too?

<comment><USER8> Chromium doesn't ship binaries to end users. Linux distros that have chromium build it from source. But I suspect that they are probably going to switch to clang as the recommend compiler for development.

<comment><USER9> They are here.

[https://commondatastorage.googleapis.com/chromium-browser- sn...](https://commondatastorage.googleapis.com/chromium-browser- snapshots/index.html?prefix=Win/304464/)

</comment></comment></comment><comment><USER10> It's been a good run, but we're finally seeing the end of free compilers.

Over time, using Clang effectively will require proprietary modules from Google, Apple, et all and the GCC project, long dead, will haunt us from the grave.

We'll tell stories to our children about how when we started learning to program, it was easy to get started because compilers were free, but now the only free compilers are toys, ill-suited for anything but the most basic education.

A special thanks to everyone who helped make this possible by attacking GCC and championing LLVM whenever possible. I hope it's very, very easy for you to write extra modules for your new proprietary compiler.

<comment><USER11> LLVM has a far more "free" license than gcc does. GPLv3 is indeed less "free" than MIT style licenses regardless of what RMS says.

<comment><USER12> That depends on if you are encouraging "free" for societies interests or "free" for individual/corp interests. GPLv3 encourages the former, but not the later. The two interests almost always come into some degree of conflict (although in many ways are compatible).

I view the flamewarz between BSDish and GPLvX licenses as similar in spirit to the arguments between laissez faire capitalism and northern European social capitalism.

<comment><USER11> I'm not encouraging either just taking the word "free" in the purest sense. GPL has more restrictions than MIT/BSD and thus is less free.

<comment><USER13> The GPL isn't about the freedom of the dev to do whatever they want, it's about the freedom of the code to always be available.

EDIT: Essentially, saying you aren't free because you're not free to kill me without repercussion is absurd. GPL advocates view freedom the same way: You can't do something to hurt me, but that doesn't make you less free.

<comment><USER14> So, BSD/MIT are the software license equivalent to allowing people to kill without repercussion?

It seems your analogy is a wee bit overwrought.

<comment><USER13> That's quite literally not what I said. I said that freedom does not inherently mean no limitations. Murder was my example, but that does not mean I equate software distribution to murder. (I had figured this crowd would be astute enough to reason as much.)

For the record, I believe that the BSD and MIT license allow the distributor to withhold source from me, which does "hurt" me from my point-of-view.

As an example, How many chemistry and biology lab machines have you seen running windows 95 or dos because the company won't release updates for old software and want you to buy a new machine?) I've seen many, and it's very difficult and expensive to keep them running at times because they don't work under emulation for various reasons.

<comment><USER14> > I said that freedom does not inherently mean no limitations.

No, it pretty much does: [http://www.merriam- webster.com/dictionary/freedom](http://www.merriam- webster.com/dictionary/freedom)

It's true that too much freedom can produce awful results but let's not redefine the word?

<comment><USER15> I recommend that you read up on Negative liberty ([https://en.wikipedia.org/wiki/Negative_liberty](https://en.wikipedia.org/wiki/Negative_liberty)). The freedom from interference by other people is an important freedom, and can only exist by limiting the actions of others.

To reference Erich Fromm, its not about "freedom to", but "freedom from". If you modify or distribute a work based on a copyleft work, you have "freedom from" being sued for patents, DRM, or proprietary copyright restrictions. If the work was based on a permissive licensed work, no such freedoms are given. You only have freedom to distribute the original work or modifications of it.

<comment><USER14> This is a great reply, but it gets very deep into parsing and subjective opinion without coming to any sort of concrete conclusions (that can be applied to licensing anyway).

Personally, I'm happy for others to use most of my code without contributing back. Does that therefore mean that you and I have different definitions of the word "freedom"?

If so, then why isn't that in the dictionary? Do we need separate dictionaries?

<comment><USER15> If you want to give people freedom to modify and distribute your code, then that is a freedom as per the same dictionary that I use. I have no problem with its definition.

Freedom to, and freedom from, both include the word freedom. They share philosophical ideas, most which originate from the ancient Rome. The question we are having is how to solve the paradoxes which said philosophy created.

I thus personally prefer to use the word liberty rather than freedom. Liberty is commonly understood to have a philosophical connotation, while freedom is more associated as mechanical concept. A slave can reach freedom by running away, but to gain liberty, they got to be given rights.

(Not to imply that BSD isn't granting some liberties. It is. The above is about the word freedom.)</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


The keyboard will be gone in five years - <AUTHOR> https://www.cnbc.com/2019/04/18/voice-technology-will-replace-keyboards-in-five-years-vc-investor.html <comment><USER2> No.

Can you imagine an office full of developers all talking to their machine to enter code...

It wouldn't work at all.</comment>


Graham's Number - <AUTHOR> http://myscienceacademy.org/2012/09/30/grahams-number-numberphile/ <comment><USER2> It is worth noting that while Graham's number might have held a record for the largest number used in a serious proof, his up arrow notation does NOT hold the record for the fastest growing computable function used in a serious proof.

The record for that probably is Goodstein's function. See [http://en.wikipedia.org/wiki/Goodstein%27s_function#Sequence...](http://en.wikipedia.org/wiki/Goodstein%27s_function#Sequence_length_as_a_function_of_the_starting_value) for more. At 12 it already has surpassed Graham's number.

The result that this function was used to prove is that there exist computable functions that cannot be proven to be computable using the Peano axioms. And the reason that it cannot be proven computable is that it grows faster than any function that _can_ be proven computable using the Peano axioms. (Ackermann's function is an example of a fast-growing function that can be proven computable using the Peano axioms, and therefore which must grow more slowly than Goodstein's function.)

<comment><USER3> When you say "a fast-growing function that can be proven computable using the Peano axioms," do you mean that the Peano axioms are used to compute the function, or that the Peano axioms are used to _prove_ that the function is computable?

<comment><USER2> I mean that they are used to prove it.

Basically anything that you can prove using direct calculation and induction a finite number of times on the integers can be proven starting from the Peano axioms. It is not obvious that there are computable functions that those methods of proof do _not_ suffice for. Goodstein's function grows too fast for this to suffice for.

The proof that it is actually computable requires transfinite induction on the countable ordinals.

<comment><USER4> Grain of Salt: I'm not an expert by any means.

This is really cool and interesting, but I have to also admit to being deeply skeptical. I'm going to try to read a lot more on the proof, but it seems incredible (in a negative sense) that transfinite induction could prove that a finite number of operations suffices for anything.

Similarly, "computable" and "transfinite" would seem on their face to never belong in the same proof.

Obviously I don't have the math background to make any claims, but right now I can't convince myself that this could possibly prove what people claim it does. (Edit: Or maybe a better way to state my objection is, it seems to me like the axioms one would need to accept to prove this might not really make sense when trying to describe computable systems.)

<comment><USER2> The wiki link I gave before outlines the transfinite induction proof. I can give the idea of the same proof without any reference to infinite ordinals.

First let's take a slightly more verbose notation than the wiki link uses. Let's say that B(b, b', n) is the operation put n into hereditary base b notation, then change the base to b'. Let's define G(b, n) as 1 if n = 0, and otherwise as 1 + G(b+1, B(b, b+1, n) - 1). Then the original G(n) is just G(2, n).

If n < b, then by induction on n we can easily prove that G(b, n) is well- defined (here being well-defined is the same as being a finite number), in fact it is just n + 1.

If n = n_1 b+n_0, with n_1 and n_2 < 0, then by induction on n_1 we can easily prove that G(b, n) is well-defined.

Now by induction we can easily prove that if 2, n_0, n_1, n_2 are < b then G(b, n_0 + n_1 b + n_2 b^2) is well defined.

We can go farther and by induction we can prove that if m, n_0, n_1, ..., n_m < b then G(b, n_0 + n_1 b + n_2 b^2 + ... + n_m b^m) is also well-defined.

Now we're in a position to prove that G(b, b^b) is well-defined. After that we repeat the previous proof and find out that if k < b^b then G(b, k + b^b) is well-defined.

Now we can do an induction proof that G(b, 2 b^b) is well-defined.

And so on. In fact what we discover if we're careful is this. For each hereditary base pattern, there exists an inductive proof that G(b, n) with that hereditary base pattern is well-defined. The challenge is that the necessary proof _changes_ as the hereditary base patterns get bigger.

What transfinite induction provides is a way to describe, in a unified way, the underlying idea behind all of those different inductive proofs into a single one. In particular every hereditary base pattern is mapped onto a (possibly infinite) ordinal. The operation B(b, b', n) does not change which ordinal you're mapped on to. But the operation -1 always decreases the ordinal. Thus we get a decreasing sequence of ordinals. And transfinite induction says that all decreasing sequences of ordinals must terminate in a finite number of steps. The pattern of the necessary inductive proofs is dependent upon the ordinal.

What the Peano axioms lack is any way to unify all of those individual inductive proofs into a single one. Thus for any given integer n we can come up with a proof that G(b, n) is well-defined. But we can't prove that fact for all positive integers n with a single proof.

Therefore this is really an exercise about the limitations of the set of possible proof techniques that the Peano axioms provide, and not about the limitations of computability.

(Of course the limitations of computability on real machines are much, much stricter than the limitations of the Peano axioms. We can't say much that is useful about G(12) other than, "Unbelievably big."

<comment><USER4> OK, that is really cool, thanks!! I may get back to you with questions once I wrap my head around it a bit more.

</comment></comment></comment></comment></comment></comment><comment><USER5> If you live in London, Matt Parker (one of the guys in the video) regularly does various comedy gigs in the area. I highly recommend them, they're always mathematical or scientific and a lot of fun.

He's done his bit on Graham's number in a couple of them before.

<comment><AUTHOR> Indeed, Matt is always entertaining. I regularly speak on the same program, appearing with him in, for example, "Festival of the Spoken Nerd" as a guest speaker.

Details of the FotSN tour can be found here:

<http://festivalofthespokennerd.com/>

<comment><USER5> I think I saw your juggling talk at FOTSN in Shepherd's Bush, very entertaining! But you were up against the tough competition of a Lego clock.

</comment></comment></comment><comment><USER6> For those without Flash Players -

[0] <http://en.wikipedia.org/wiki/Graham%27s_number>

[1] <http://en.wikipedia.org/wiki/Knuth%27s_up-arrow_notation>

</comment><comment><USER7> A rather obvious mathematical fact, which I never really noticed before watching this video (perhaps because of notation or the rarity with which it comes up) is that exponentiation and its higher-order forms (arrow notation) is not associative. Is this just a mathematical curiosity or is there any consequence to it? Is there a reason right-associativity was chosen as the default?

<comment><USER8> I think right associativity was "chosen" because left associativity would be redundant (since (a^b)^c = a^(b*c)), and so it saves on bracketing and generally makes things slicker.

</comment></comment><comment><USER9> I was lucky to get Graham as a professor for an undergrad discrete math course at UCSD. He's incredibly funny and besides his ability to juggle can also speak a fair amount of Mandarin. Definitely one of my more memorable classes.

</comment><comment><USER10> For a moment I had thought this is like Erdos number or Bacon number, but now with PG at the center. Your number is one if you have worked with him etc.

<comment><USER11> _Ron_ Graham was a close friend of Erdős, so if you were to co-author a paper with him, you would have a Erdos number of 2. ;)

<comment><AUTHOR> I have, and I do.

</comment></comment></comment><comment><USER12> After experiencing a significant moment of inability to conceptualize while watching Graham's number be described, I think the brain might have some kind of stop-gap to stop your cognitive functions from failing. Either that or I need more practice in imagining large numbers? Do mathematicians learn special tricks to holding large-number concepts in their minds?

<comment><USER13> Yes, I can quite easily think of Graham's number - I call it G.

You might think that I'm saying that in jest, but it is actually the way of things. There are quite literally an infinite number of numbers. Why should Graham's be important enough for us to consider. For that matter, why should we consider 1?

The answer lies in part in the question - why - it must be important in some way. That is exactly the case - we only consider numbers that, for some reason, relate to problems we are facing, whether it be in mathematics, programming, or grocery shopping, and even then not on their own merits. Past a certain point, you don't hold numbers in your head as little balls, but rather their decimal encoding. That's a clever hack, but not without its downsides. Ask some people randomly if they were in a position to decide, how much budget would they allocate to save 10000 birds, and ask others the same with 100000 birds. The mean of the second answer would not be ten times that of the first (unless your subjects know and actively try to work around that particular bias).

But back to Graham's number - if you think the only way to imagine it is to hold its decimal notation in your head - the obvious question is why? Why not hexadecimal? Octal? Why any base-p encoding at all? The usual reason to use base-10 is to quickly get an idea of the magnitude of a number relative to things we are familiar with and do some simple arithmetical manipulations on it. Both of these are pointless for Graham's number. Relative to familiar things like billions and trillions it's quite a ways of the chart, and adding, subtracting, or even raising to powers of such makes relatively no difference.

Besides which, in this case it isn't really pointless, it's impossible. Jokes about collapsing into black holes aside, there aren't enough bits of information in the universe to encode the decimal representation of Graham's number. There aren't enough bits of information to encode the number of digits of that. Not enough even to encode the number of digits of the number of digits. Interestingly, there also aren't enough bits to encode the number of times you'll have to repeat taking the base-10 logarithm to get back to a universal scale.

Which goes to show that not only your mind, but no entity in the universe can accomplish the feat of representing an arbitrary number in decimal notation, mathematician or otherwise. And what is the point, really? G is a perfectly good symbol, and so is g_64. Usefulness is important, not imagining a string of balls. For that matter, I bet you've been perfectly content to use Pi on at least a few occasions, even though in terms of representability in decimal, it is infinitely worse than Graham's number.

<comment><USER14> > The mean of the second answer would not be ten times that of the first

I'm not sure how good an example this is to argue your point, because the second answer _should_ only be ten times the first if the cost structure is a linear function with a zero constant term. Which seems like an awfully big assumption -- you might get economies of scale (nonlinear, decreasing derivative), or you might pick the low-hanging fruit first and then have to go after more difficult birds (nonlinear, increasing derivative), or you might have fixed costs that give you a constant term.

That being said, many people do have a lot of difficulty conceptualizing the difference between millions, billions and trillions [1].

[1] <http://xkcd.com/558/>

</comment></comment></comment><comment><USER15> Blog spam? Please link to the YouTube video instead - the article gives no extra information.

Nevertheless - very interesting topic! Also terrifying.</comment>


Oulu- the world's northernmost tech hub is making a comeback - <AUTHOR> https://www.thenordicweb.com/blog/oulu <comment><USER2> Ahh, fond memories of x2ftp.oulu.fi from waaay back in the day. So exotic and faraway...</comment>


Logipedia – Encyclopedia of Formal Proofs - <AUTHOR> http://logipedia.inria.fr/ <comment><USER2> How does this relate to the _Archive of Formal Proofs_ [1] and _Mizar 's Mathematical Library_ [2]?

[1] [https://www.isa-afp.org/](https://www.isa-afp.org/)

[2] [http://mizar.org/library/](http://mizar.org/library/)

<comment><USER3> The systems you mention use a declarative proof approach that's more similar to the way humans might write a math proof, or to the way computer code is written. In contrast, Coq and Lean use "proof scripts" that are more like writing your stuff in a custom macro-assembler that will break as soon as one changes anything in the "script", or even just upgrades to a newer version of the underlying software. Even the resulting proof is basically not readable on its own without re-processing it with the software itself. (Coq used to have a declarative "mathematical proof language", but it was unmantained and they removed it.)

Other systems, e.g. Agda use "proof terms" that are more like a proof that can be read "declaratively", but one where _every_ single step has to be recorded; there's no provision for the system to "fill in" some gaps, unlike with declarative proofs. This can definitely impact readability/surveyability of a development, but the inherent maintainance problems of "proof scripts" do not arise.

I'm not sure what Dedukti is going for from this basic POV. They mention that they're trying to build a general framework that can support multiple logical/proof systems, but the details are not that clear. It's probably going to be a bit clunkier than the systems you mention, particularly at this early stage of development.

<comment><USER4> I thought Dedukti has a small kernel. Although "small" may be a relative thing (relative to other dependently typed systems.

</comment></comment></comment><comment><USER5> I've always wanted a 'Wikipedia for formal proofs'. It's never materialised though, sadly.

I would've expected such an online Encyclopedia to form around Coq or Isabelle/HOL, as these languages/assistants seem to be the most popular.

Unfortunately, I've never seen enough momentum behind one proof language to give a wiki a chance of becoming something substantial.

It seems the formal proof community (which is already small) is so spread out over several languages, that it's hard to get the fire burning.

<comment><USER6> I think a large part of it may be that people are still inventing the languages and we haven't seen enough industry adoption to settle down on a handful of good ones.

We're still in the Cambrian explosion of new ideas and languages.

The best way to get to the future you want is to keep using them and convincing others to join you!

</comment></comment><comment><USER6> Oh very good!

I started a repository for TLA+ modules years ago that I was hoping would turn into something like this [0]. Like many projects I never took it very far but I've been using formal methods in practice for a couple of years now, might be worth revisiting...

[0] [https://github.com/agentultra/software-spec- library](https://github.com/agentultra/software-spec-library)

<comment><USER7> what kinds of ways have you been applying TLA? I've been considering whether it's worth learning for practical purposes.

<comment><USER6> I've used it most often to understand a poorly understood piece of a system that is giving the team a lot of trouble. An example would be a feature that went into development quickly and was iteratively developed in an agile fashion. The senior developer was smart and made some diagrams and accompanying prose to describe the system from a high level. However once the system had been in production for about six months users were discovering and reporting strange behaviors. I wrote some TLA+ models to verify the design and discover the under-specified behaviors.

I've also used it in the design/planning phase of a new project. We started writing models for key features and even hooked TLA+ into our CI pipeline. We planned to also integrate the TLA+ models with quickcheck so that the latter could verify our implementation based on the specification. However that didn't get too far unfortunately.

TLA+ has mostly been useful in helping me understand and solve hard problems where code alone is insufficient as a specification.

</comment></comment></comment><comment><USER8> There is also Metamath [http://us.metamath.org](http://us.metamath.org), another wonderful resource. Would be really cool if these two projects could integrate.

</comment><comment><USER9> Something related to this Logipedia that I'd be interested to see (or work on building one day) is a site intermediate between this and Wikipedia -- a site where users can view or create logical arguments, and combine smaller arguments into larger ones. I'm not sure how many people would actually use such a site, but it'd surely promote a higher level of public discourse than, say, Twitter. The only way we really communicate online is using strings; there has to be some potential for something more structured.

<comment><USER10> I feel like we need a wiki/wolfram-esque system where knowledge is derived from axioms, propositions, and theorems, all of which can be toggled and shared by users. If you have the flat-earth axiom toggled on, or some set of axioms and propositions that lead to a flat-earth theorem, then you'll see a different entry of knowledge about the earth than I will. We just have to accept that nothing is completely provable in any concrete sense, and people will disagree about the noumenon. Flat-earth is an extreme example, but there are ambiguous parts of our models that you can interpret different ways, and data that can be reasonably argued as (in)valid. I think a unified system of disunity would be more clever than the patchwork of IdeologyPedias we have today. Once sets of truths have been distributed they could be given precedence by a user, with additional optional toggling, and then used/redistributed. I remember seeing an open-source project attempting this, I thought it was called OneModel but my google searches for that name are turning up an unrelated data company. The code seemed pretty gnarly to me at the time, but it's been a couple years since I looked at it.

Edit: changed ridiculous grammar for clarity.

<comment><USER9> I think we're of a similar mind -- I was imagining a system where a user could input certain premises they agree with or values that they hold, and then they could see what conclusions follow (or would follow, with the addition of further premises). You certainly could end up with dubious conclusions, given what premises you start from. At the very least, though, different ideologies would actually come with an explicit set of premises, and people who disagree with those ideologies would be able to see exactly what they disagree on.

</comment></comment></comment><comment><USER11> (Not knowledgable about formal proof systems here.)

Does it have something like a "test suite" or a "build status" constantly verifying that the various claimed implications and equivalences are valid, and/or that the translations into other languages are valid?

</comment><comment><USER12> Since we're mentioning alternatives, there's also [http://vdash.org](http://vdash.org) .</comment>


How will my plan to build and sell aluminum unibody laptops fail? - <AUTHOR> * Aluminum unibody
* Normal scissor-switch laptop keyboard
* Off the shelf high resolution IPS panel
* Large glass trackpad
How hard could it be?
# Design
Laptops don't need a lot to be a world apart from plastic laptops that flex and creak and overheat. Apple seems to be the only manufacturer that knows this, apart from IBM with the ThinkPad which Lenovo is now diluting (RIP) and Microsoft lately (shoutout). Key is a sturdy unibody bottom piece made of a material with good heat conduction (aluminum). Run the fans only when you have to, avoid filling up with dust. Basically get "inspired" by Apple's Macbook Pro. Copy it's airflow design.
Make it have a simple, attractive shape with flat surfaces and rounded corners. Taper off the edges to make it seem thinner and also to allow it to be picked up from a flat surface.
Get a good off the shelf high resolution IPS display.
Have a large glass touchpad.
Sacrifice 1-2mm of "thinness" and put a proper normal scissor-switch keybard in.
75-100 watt-hours of flat lipo batteries.
Put in a couple of key ports that are sorely missing from the MacBook. Don't go overboard, save yourself from the cost and complexity.
# Execution
Hire one or two highly experienced electronics design and manufacturing professionals. Hire a core team of highly motivated and moderately to highly experienced engineers. Start with only one model: the 15 inch. Go for a price around $1000-1500. Market at small scale to developers for the first couple batches of laptops. Iron out potential quirks in product, supply chain, and customer support. Then, if all stars align: launch at $999, same hardware features as a MacBook Pro plus some ports minus the touchbar. Create and ride the Macbook killer media hype and simultaneously run a quality "hip, cool, and happy people use this laptop" marketing campaign to build the brand. Get more funding and run more marketing campaigns. Sell a lot of laptops to people who want a great aluminum unibody laptop. Profit. <comment><USER2> I would argue more than hardware (there are decent-ish non Apple options out there), the problem lies in software.

As such I think perhaps a better plan would be to start a company that owns the entire end-to-end user experience of a Linux distro, ruthlessly chasing down inconsistencies, jank, rough edges, etc and putting huge priority into responsiveness and "just working" over being interesting or novel. Some would argue that Canonical does this with Ubuntu, but I don't think they go far enough... if they did, practically nobody would consider anything but Ubuntu for desktop usage, but that's far from the truth.

I would even go as far as forking major FOSS projects like LibreOffice and giving them the same treatment (upstreaming the more universal improvements, of course), making the apps fit perfectly into your distro. Include WINE by default along with "profiles" that are constantly updated and automatically kick in when running popular Windows programs (eliminating tedious config). Find 2-3 PC vendors to tightly couple with for day 1 support on new models and such.

Essentially, you'd be reproducing Apple's software software strategy except fully FOSS, making money off of support and PC vendor kickbacks.

</comment><comment><USER3> The NRE would be millions, maybe over $10M and the COGS alone would probably be $1,500 so I don't think the unit economics work.

An ODM model might be a better idea; ASUS is probably willing to design and build a customized ZenBook with your logo for a much lower price than you could do it as a separate company.

</comment><comment><USER4> There are a few products out there like what you describe:

Dell XPS: [https://www.dell.com/en-us/shop/dell- laptops/xps-15/spd/xps-...](https://www.dell.com/en-us/shop/dell- laptops/xps-15/spd/xps-15-9560-laptop)

ASUS Zenbook: [https://www.asus.com/us/Laptops/ASUS-ZenBook-Pro- UX501VW/](https://www.asus.com/us/Laptops/ASUS-ZenBook-Pro-UX501VW/)

That doesn't mean you can't do better. I think the machinery to make unibodies will mean a large capital cost, so you might need large volumes make the economics work.

<comment><USER3> Also [https://www.razer.com/comparisons/blade](https://www.razer.com/comparisons/blade) and [https://consumer.huawei.com/us/tablets/matebook-x- pro/](https://consumer.huawei.com/us/tablets/matebook-x-pro/)

</comment></comment><comment><USER5> It will fail because building laptops isn't a profitable business as you think.

The margins kind of sucks and the equipment in order to make it is very expensive. I don't believe Dell or those companies that make it, make the whole thing. They generally don't even assembly it. It makes no f. sense as companies are able to work in limited scope, otherwise they start to become very ineffective.

Companies that make money with it probably make it due to having a large scale and being able to negotiate a good price for the hardware it gets in.

If I would try to do so something, I would try to understand well the business and see what makes it expensive. For example, is it physically feasible to make the bodies cheaper in a 10x scale? If yes, then maybe open a company that sells only that part that you figured out and after you try to get into that market.

It's a very, very, very tough market. If you think it is a good business, buy those companies stock. I wouldn't though.

<comment><AUTHOR> Do the margins really suck on a $6000 Macbook Pro? I have a strong feeling there's a significant margin on these laptops, even the $2400 Macbook Pro.

<comment><USER6> The OP isn't Apple. They're competing with sub $1k laptops made by reputable manufacturers who spread their branding and marketing costs across a lot more products, probably by trying to offer higher-value internal components which must be acquired without access to the larger manufacturers' low cost supply chain and bulk discounts.

</comment></comment></comment><comment><USER7> try to pick and choose your hardware to be 110% compatible with macOS. Be a cheaper (clone) Mac, and let the users to easily hackintosh it... but with proper plausible deniability.</comment>


Male hormonal anticonception trial halted - <AUTHOR> http://press.endocrine.org/doi/abs/10.1210/jc.2016-2141 <comment><USER2> The abstract doesn't say _why_ :

"Following the recommendation of an external safety review committee the recruitment and hormone injections were terminated early."

Was it because of this? "The frequencies of mild to moderate mood disorders were relatively high."</comment>


Show HN: web2txt, API to send text messages from your app for free. - <AUTHOR> https://github.com/orangethirty/web2txt

<comment><AUTHOR> I wrote this to circle around the costs of services like Twilio for micro apps. My wife needed this functionality for her job, and we both thought that paying Twilio for it wasn't a good option. So I wrote this, and it gives you the same basic functionality. It works, and she is happy.

It works by using the option mobile carriers give you to send text messages through an email address.

Questions are welcomed.

By the way, I'm available for Python contracts. :)</comment>