Show HN: my database engine for GPU - <AUTHOR> https://sourceforge.net/projects/alenka/files/ <comment><USER3> Excellent work! I have a very small (marketing-related) nitpick:

Would you consider hosting your project on github instead of SourceForge? I don't say this to be trendy, github just has a much more pleasing interface in my opinion. It's also faster, subjectively at least.

<comment><USER4> I second this. I'd rather be at the dentist than on a SourceForge page.

I swear it's the "myspace.com" of open source hosting.

</comment></comment><comment><USER5> Congratulations, well done!

Our team has built an in-memory DB (hybrid, both column and row store available, also using advanced compression). We have investigated GPUs for scans, we found that while they can outperform CPUs, the bottleneck is the transfer of the data to the card. Since the card's memory is only in the GB's, and our databases are typically much larger this is kind of limiting, since you have to copy data back and forth.

Do you know what the maximum amount of GPU memory for a blade-like system currently is?

<comment><AUTHOR> It is 6 GB for Tesla GPU. PCI Express transfer speed is 5GB/s, with average compression rate averaging 4/1 the speed becomes 20GB/s so transfer speed is not a bottleneck anymore.

<comment><USER5> I see. So for a large dataset you would still hit a bottleneck, compared to a main mem store which also uses compression. But nonetheless it's a good idea to do certain operations on hot data on the GPU.

Which operations benefit the largest in your experience? I would guess scans with simple predicates and expressions. What about aggregations?

<comment><USER6> I had investigated aggregates using gpu for building dwarf petacubes (<http://www.cs.umd.edu/~nick/projects/Dwarf.pdf>), and yes it looks viable.

<comment><USER7> I had not heard of that data structure before, thanks!

Sadly, it appears to be patented and thus of no use to me. <http://www.cs.umd.edu/~nick/projects/Dwarf.html> I think it's really quite crass and mercantile for UMD to patent basic computer science algorithms and data structures like that.

</comment></comment></comment></comment></comment><comment><USER8> Super cool, and thanks for sharing!

Are you familiar with APL/K/Q/J ? These implement column store databases which a programming language significantly more expressive and usable. K and J are also significantly faster than any other SQL database -- it would be interesting to compare K's ultra-optimized in-memory processing to the GPU -- I'm not at all sure GPU is going to win here in practice.

See <https://github.com/kevinlawler/kona> for an open source K implementation (the wiki has docs). Same language, newer version (with database integration) and english language instead of ascii chars is called Q see <http://kx.com/q/d/> (kdb1, q1 if you like longer, kdb, q if you like terser), and <http://code.kx.com/wiki/Main_Page>

<comment><USER9> I'm not sure K's in-memory processing is incompatible with running on a GPU, either. I've been working on a fork of Kona that has a very different architecture (e.g. a bytecode VM, generational mark/sweep GC, lexical scope), and I plan on experimenting with CUDA/OpenCL once the fundamentals are set.

<comment><USER8> Oh, K's in memory processing model is surely compatible with modern GPUs - <USER2> last for most primitives.

The thing I'm not sure about is whether the transfer overhead (GPU, CPU, Memory) would still be worth it in the general case. There's a question of what you're actually comparing to - e.g. you can have a (relatively) naive implementation, like the first commit of Kona was. You can have Arthur's cache-optimized-but-still-pure-C-and-CPU implementation (I think the main kona branch is comparable these days, but I'm not sure), which is faster.

And then, you can compare it to an SSE2/SSE4 version, still on the CPU; such a version does not exist afaik, but is easier to code than you would expect if you use ispc (<https://github.com/ispc/ispc/tree/master/examples>) or cilk- plus -- simple things with no data dependencies, as many K primitives are, often get a 4x speedup with ISPC.

Oh, and by the way, thanks for your work on kona and this message -- I've only been following kevinlawler's branch, but I'll start following you too.

<comment><USER9> The transfer overhead would only need to happen once if there's a sequence of GPU-able primitives, though. The dataflow analysis for that isn't too hard.

I'll check ispc out too, thanks. My fork* is using some SSE, via GCC-specific extensions (<http://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html>). It could be special-cased into Kona as-is, but I've found a better way to implement scalars than the elaborate preprocessor hack I did there. (Besides, tuning the reference counting would probably have a bigger impact, something like Deutsch-Bobrow at least.)

* It's not on github, yet; I don't usually post things there until they're reasonably usable end-to-end. My kona fork is mostly for pull requests; I'm talking about a completely new implementation.

Would you like to continue this discussion off HN? My contact info is in my profile.

</comment></comment></comment></comment><comment><USER10> Very, very cool. I'm always happy to see more ways to utilize the tremendous performance/price of GPUs.

So, what are the pros and cons of this approach? For a given hardware and energy budget, what kinds of task would be better suited to this kind of GPU implementation? Conversely, what kind of tasks would still be faster to run on a Core i7?

<comment><USER11> Agreed, seems like it has a lot of potential.

I remember some time back when GPUs were first being looked at for HPC uses I suggested a client look into them, but they were quickly dismissed due to their floating point limitation (which may have changed).

But DBs don't have huge FP needs. Another place GPUs are making a big difference is video editing, utilizing CUDA or OpenCL.

<comment><USER12> I think their floating point performance is improving.

<comment><USER13> GPUs have always had amazing floating point performance for single precision floats, that's basically all graphics is. The problem is that double precision support was traditionally non-existent, and has been slow until recently and it is still much slower than single precision float performance.

<comment><USER14> Double precision performance is now just half speed, which is the same as the CPU. Many applications are bandwidth bound, so running in double vs. single doesn't end up with a 2x difference anyway.

</comment></comment></comment></comment></comment><comment><USER15> now this is the kind of thing i come to HN for... but why oh why sourceforge?

<comment><USER16> github would be better for browsing. But the source is only 117k - I'm surprised how much of a barrier a few clicks and a few seconds was for me. (Partly, I expected it to be bigger.) The 21 files total 18832 lines; there's bison, lex, and a bunch of cuda files. Some is structured as doing similar things for similar cases, so not that long. It seems to include a reasonably complete implementation of SQL in the bison etc (and there are two example files of SQL query sequences). I'm impressed.

There are some line comments, but no overviews. :(

</comment></comment><comment><USER17> This is awesome. :)

Someone did something similar for PostgreSQL here:

<http://wiki.postgresql.org/wiki/PGStrom>

</comment><comment><USER18> That looks absolutely brilliant. So is the database all stored in the GPU memory? Or in main memory? Or does your engine handle storing to disk as well?

Pretty novel use of a GPU though, and if it's quick, it could be really useful.

<comment><AUTHOR> Thank you ! The data are stored on a disk and only the columns necessary for transformations are brought to GPU. In case the data does not fit into a limited GPU memory, it is processed piece by piece. I tested it on terabyte sized files so the data does not have to fit into GPU memory .

</comment></comment><comment><USER19> Looks like a very interesting approach to me given the recent developments.

Still I have a few questions regarding your numbers. Can you specify how much data you actually stream from disk? Because when doing some back of the envelope calculations (8 columns out of a 1.8B rows assuming 4b each) you would need to stream ~300MB/s from disk. Which seems very unlikely for your setup (except you have a super fast SATA drive, or SSD).

Now, with only 4GB RAM, your are constantly filling your RAM and transporting data to GPU. Plus you need to compress the data somewhere (on GPU?).

Do I understand the manual.txt correctly, that you can only achieve the performance when the data is written compressed to disk before? (While sorting it?)

I may be wrong, but the group by and join looked like versions requiring sorted data.

Can you please give a little more details on that?

<comment><AUTHOR> Here the details : Integers and decimals are both stored as 8 bytes. So one record takes 42 bytes. After compression it takes about 8 bytes ( I use FOR - frame of reference) compression and it works really well with decimal numbers (check the range of decimal numbers in lineitem.tbl file - usually you encode them in just a few bits). So I can stream about 10 million records per second from my disk. Which makes it exactly 180 seconds for 1.8B rows ( CUDA calculations are done in the background process). Records are decompressed in GPU and processed there. Actually the main bottleneck is not the disk access but the latency of CUDA calls - each call takes about 15 ms and when you process the entire file in chunks of ,say, 6 million records, it really adds up.

</comment></comment><comment><USER20> Interesting. I wonder how a GPU could best be put to use in a database engine. Joins, I suppose? Would be cool to read more about this implementation, however the readme is a bit sparse.

</comment><comment><USER21> antonmks, did you consider using OpenCL instead? If yes - why CUDA outweighed it?

<comment><USER22> Whether it's still relevant or not CUDA has a lot of mindshare in the academic community. Partially this is due to marketing and having their product out first, but also OpenCL has to go through some more abstractions. There was a quite popular forum post[1] a while ago now where someone claimed a 5x perf improvement from switching from OpenCL to CUDA and, while i havn't tested it myself, it's the sort of statistic that sticks in your mind.

______________________

1\. <http://forums.nvidia.com/index.php?showtopic=109684>

</comment></comment><comment><USER23> Column store, compare it with MonetDB (open source) and similar. This design is suitable for read-mostly databases. It's a trade-off, faster reads and much better compression. But the price is writes usually become an order of magnitude slower. It isn't good for transactional work (OLTP).

<http://en.wikipedia.org/wiki/Column-oriented_DBMS>

Also the author talks (other comments) about transfer rate when the real issue with GPUS is latency. Most GPUs don't have decent RAM caches and it's very hard to cover the latency.

Also: [http://reddit.com/r/programming/comments/oxq6a/a_database_en...](http://reddit.com/r/programming/comments/oxq6a/a_database_engine_that_runs_on_a_gpu_outperforms/c3kvts6)

</comment><comment><USER24> Very nice. I'm glad people are using their GPU's for something more productive than farming bitcoins.

</comment><comment><USER25> nvidia gpus only, right? does it work with ati as well? CUDA is probably more advanced, so it's no surprise.

</comment><comment><USER26> I love this kind of novel thinking. I'd definitely like to read more detailed articles on how this works.

<comment><USER27> If you look up columnar databases, you can find a whole host of research on how these things store data. Storing values column by column to do vector processing is pretty common, but I can't recall seeing one built for a GPU before. Kudos to the dev for diving in to implementing one, it's pretty neat stuff.

Try finding research papers about MonetDB, Vertica/C-Store, or Vectorwise for some background. Or follow the links here:

[http://www.dbms2.com/category/database-theory- practice/colum...](http://www.dbms2.com/category/database-theory- practice/columnar-database-management/)

<comment><USER28> I was looking at this a number of weeks ago to see if it would be feasible to speed up any SQL queries. There is a paper about this for SQLite: [http://www.cs.virginia.edu/~skadron/Papers/bakkum_sqlite_gpg...](http://www.cs.virginia.edu/~skadron/Papers/bakkum_sqlite_gpgpu10.pdf)

</comment></comment></comment><comment><USER29> What is the point of using "å" instead of "a"?

<comment> Tuna-Fish What's the point of using y instead of u?

Å and A are not at all the same letter. Although I agree that using characters outside of the ascii set for naming projects on the internet is probably a bad idea. If I had to translitterate Ålenkå to Latin chars, it would probably be Oolenko, but even that's not really that close. The Latin alphabet has a horribly limited set of vowels.

<comment><USER30> I wouldn't say it's related in any way to the alphabet in use. Take the English 'a' as an example: skate and car produce two different sounds out of the same letter.

Alphabets transmit words, much less so sounds.

<comment><USER31> > Alphabets transmit words, much less so sounds.

In English, that is. Some languages using latin script always use the same sound for the same letter (how it should be done, IMHO).</comment></comment></comment></comment>


OpenKiwi: An Open Source Framework for Quality Estimation - <AUTHOR> https://medium.com/unbabel/openkiwi-an-open-source-framework-for-quality-estimation-30c35a998a9f <comment><USER2> Good machine translation can be used in so many different ways that it will really help improving peoples' lives. It's great to see we are getting there!</comment>


So, I looked at Plesk's 404 Page - <AUTHOR> http://www.reddit.com/r/web_design/comments/ee4zc/so_i_looked_at_plesks_404_page/ <comment><USER2> Good thing plesk added that additional comment. Because their error message is so much more informative than the default IE provides to help the user in case of uninformative error messages.

Yes. That's really well done.

<comment><USER3> 1) It's a 404 page. The main information here is "your link doesn't work". No detailed diagnostic is needed.

2) This default 404 page can be customized to match a site layout and styling and possibly have search boxes, etc. to help you find the page you were looking for. You even helpfully get a comment to let you know to keep your page code over 512 bytes.

<comment><USER2> 1) the IE default page gives additional information what could cause the problem and how to maybe fix it. And it is localized to the users language. As such IE's page is much better for a non-technical user and doesn't at all impede the technical user.

2) the moment that page gets customized with all that info you propose it will be longer than the 512 bytes at which point IE will not display its customized error page.

Plesk's solution here does nothing but make life harder for non-techies (which admittedly don't use plesk) for no reason what so ever. The page served in the example is inferior to IE's page in all aspects. Hence my snarky comment

<comment><USER3> 1) Not all defaults are awesome. The issue here is that this is not even a _site_ default, this is a default for a multi-website management program.

And for that matter, if you leave the wrong settings unset on recent versions of IIS, this message won't go out anyway, since IIS will push its _own_ default page for non-200 responses.

2) It's trivial to have a simple, CSS-based site layout that requires less than 512 bytes in the base HTML page. For a simple notice that this isn't a known page on the site, but here's a search form, you could easily still be under 512 bytes.

</comment></comment></comment></comment><comment><USER4> Instead of padding their 404 with a smarmy comment, they could have padded it with, you know, actually useful navigating tools for visitors.

<comment><USER3> It's a default page provided by _web hosting management software_. You use Plesk to manage multiple web sites, which may not be related to each other or even use similar backends (for instance, if you're a web host with multiple clients).

The people managing the code and content of the site in question are responsible for customizing their error pages.

<comment><USER4> Good point. This makes more sense as a default 404 page.

</comment></comment></comment><comment><USER5> Microsoft products are full of annoying features like this. Another example is Outlook and the way it removes arbitrary newlines from plain text emails.

Also: <http://www.fourmilab.ch/webtools/demoroniser/>

Choice quote: Rule of thumb--every time Microsoft use the word "smart," be on the lookout for something dumb

<comment><USER6> I think the reason for that is that their products are designed for PHBs not techies.

</comment></comment><comment><USER7> This applies to Chrome as well, FYI.

<comment><USER8> > jimrhoskins 13 points 6 hours ago[-]

> Chrome does it too, FYI

> permalink report reply

<http://www.reddit.com/comments/ee4zc/_/c17gc36>

</comment></comment><comment><USER9> I've seen this in countless webservers. I'm guessing it must be part of a server package or something because the wording is always the same.

<comment><USER10> Resin (and possibly others):

[http://www.google.com/codesearch/p?hl=en#LjVQoypFBrg/modules...](http://www.google.com/codesearch/p?hl=en#LjVQoypFBrg/modules/c/src/isapi_srun/protocol.cpp&l=170)

And this has been around since forever. I feel old.

</comment></comment><comment><USER11> So, whats the reasoning behind it?

<comment><USER12> Short messages are usually of the form "404 - File not Found". These are non- informative for many users ("what does it mean?"), don't give any recovery options ("what can I do now?"), and aren't localised.

<comment><USER13> And this is a perfect example of an uninformative error page. Why they felt the need to pad it out, I don't know.

<comment><USER3> Because it's a default error page intended to be customized.</comment></comment></comment></comment>


Developers can profit by building affordable housing almost anywhere - <AUTHOR> http://www.citylab.com/housing/2015/10/affordable-housing-is-a-moral-choice-and-the-numbers-prove-it/411235/ <comment><USER2> I don't like how this treats "affordable housing" as though affordability were a built-in property of construction. The way to make housing affordable is to build lots of units, so that you don't have too many people bidding on too few apartments. If you don't do that, then everything is going to be expensive no matter how shitty you make it (see San Francisco). If you do do that, then you can make the units nice and they'll still end up being cheap.

<comment><USER3> You mean, build houses where people want to live and where the jobs are?

I am pretty sure you only have to build enough houses for three hundred million people.

</comment></comment><comment><USER4> I have a seriously hard time believing housing shortages are the result of bad people and not the underlying economics and regulations. And when you openly state that the purpose of your program is to demonstrate a particular point of view, I am not surprised when, lo and behold, the program confirms what you programmed it to confirm. I would oe much more interested in an honest, agenda-free analysis of the housing market.

</comment><comment><USER5> The source for this article's is the web app linked at [http://www.affordableownership.org/inclusionary- housing/incl...](http://www.affordableownership.org/inclusionary- housing/inclusionary-housing-calculator-tool/). I attempted to sign up to so I could use it, but the captcha test is broken for me. Has anyone here been able to try it?

<comment><USER6> Yes, I have it. Haven't been able to test it thoroughly, but so far it functions as advertised.

</comment></comment><comment><USER7> There will always be a shortage of below-market-rate housing by definition. If there were enough of it, it would be market rate.

<comment><USER8> Except that pretty much any measure of market-rate is likely to be biased. From the FED's estimates biased up to rental sites biased down.

</comment></comment><comment><USER9> Also, the creator of this site can profit by 10% per year by working for 10% more than it takes to afford ramen noodles and live in a tent.

</comment><comment><USER10> 10% is hardly a rate of return to brag amount, especially since dense housing requires large amounts of capital tied up for multiple years. Assume a complex takes 18 months to build. Then that 10% is even less.

<comment><USER11> A 10% projected internal rate of return is unlikely to attract the capital necessary to develop multifamily housing. The lower the projected returns, the higher the risk.

Unlike VC, a project that goes south has a massive impact on a portfolio. There are not 1000:1 real estate projects to make up for losers.</comment></comment>


KidsRuby on Raspberry Pi – another video demo - <AUTHOR> http://www.raspberrypi.org/2011/09/kidsruby-on-raspberry-pi-another-video-demo/ <comment><USER2> This is yet another cool thing, which Raspberry Pi could be great at, but for some reason I get this uneasy feeling about this board. It must be because it has so much potential.

What worries me that they Pi team is very non-chalant about the order handling part.

* release is some vague time in November

* You can't pre-order one yet(granted the way Pandora handled it was worse)

* They claim to be able to handle large volume

They may be in for a rude surprise when the huge masses of interested buyers descend on whoever handles their orders.

What I fear most is them making 1000-10,000 boards, when the demand is probably 1,000,000.

EDIT: I realized what gives me the negative feeling: it is this huge positive vibe on the Pi forums, I have seen it too many times on over-hyped products.</comment>


Hilma af Klint was the first abstract painter - <AUTHOR> https://www.theparisreview.org/blog/2018/10/12/the-first-abstract-painter-was-a-woman/ <comment><USER2> I was just at the Guggenheim exhibition. I liked some of the paintings, but I wasn't really moved by it; I was much more taken by her naturalist paintings and sketches of insects (which were in the minority). However, it was intriguing to think about how these paintings were conceived nearly in isolation, preceding the abstract art movement by almost a decade.

</comment><comment><AUTHOR> There's also [https://dangerousminds.net/comments/meet_the_swedish_mystic_...](https://dangerousminds.net/comments/meet_the_swedish_mystic_who_was_the_first_abstract_artist).

</comment><comment><USER3> There are a bunch of good high res photos of some of her serious abstract works here: [https://www.julochka.com/2014/05/theosophic-works-hilma- af-k...](https://www.julochka.com/2014/05/theosophic-works-hilma-af- klint.html)

</comment><comment><USER4> I stumbled two weeks ago across her through following picture. [https://goo.gl/images/EhsqdP](https://goo.gl/images/EhsqdP)

Totally flashed me

</comment><comment><USER5> Whistlers falling rocket (nocturne in black and gold), sort of blurs the line

<comment><USER5> Thinking more we have Turner making everything super blurry to the point that it's just fields of color.

</comment></comment><comment><USER6> The surname is wrong in the title, it should be Klint, not Klimt. It's an interesting read however, although I'm no art expert by any means, I've always liked abstract paintings as they have a sort of liberating effect on my mind where the imagination in some cases can run completely it's own course.

<comment><USER7> And Klimt of course was a very different artist, not particularly abstract unless you count the decorative elements, and very, very male.

Which makes the slip in the title here a bit poignant, as a lot of people think it was gender bias that kept af Klint out of the art canon for so long.

[https://en.wikipedia.org/wiki/Gustav_Klimt](https://en.wikipedia.org/wiki/Gustav_Klimt)</comment></comment>


HTML5-based shooter for web and mobile - <AUTHOR> http://www.webworks.dk/enginetest

<comment><USER2> Lots of Java exceptions for an HTML game!</comment>


How to Solve the Ventilator Shortage - <AUTHOR> https://www.nytimes.com/2020/03/22/opinion/health/ventilator-shortage-coronavirus-solution.html <comment><USER2> FTA:

> Here, too, we can all drop our job descriptions to solve this problem. Big > tech needs to rapidly build and scale a cloud-based national ventilator > surveillance platform which will track individual hospital I.C.U. capacity > and ventilator supply across the nation in real-time.

> Such a platform — which Silicon Valley could build and FEMA could utilize — > would allow hospitals nationwide to report their I.C.U. bed status and their > ventilator supply daily, in an unprecedented data-sharing initiative. I have > no doubt that the tech brain trust now sitting at home on Zoom can mobilize > to get this done.

</comment><comment><USER3> Is anyone working on this? As I see it, it's not too complicated a problem. Who's in? Someone to help build the database? ICU administrators would have to be on point to do actual counts and updating....tiles could be used for real time tracking if hospitals don't already have their own methodology...Amazon/UPS logistics might be tapped to do the actual movement of ventilators to address the waves...</comment>


Show HN: A simple way to visually share your favorite musical artists - <AUTHOR> http://everybandilike.com/ <comment><AUTHOR> This is just a simple project I made. The goal is to be able to quickly share bands you like without having to painstakingly rank them one by one.

Feedback appreciated!</comment>


Show HN: AI to help you write fast. modes: gen, legl, hp, research, got. [OSS] - <AUTHOR> https://writeup.ai <comment><AUTHOR> I built writeup.ai to learn more about machine learning. I underestimated the amount of time it would take (thought 1 month, took 3, classic 3x off) ... alas, the feature creep of my judgement was hard to manage.

I learned WAY more about deploying ML in production environments than neural networks. ML DevOps was surprisingly hard. the ecosystem is a bit fragmented with managing TensorFlow / PyTorch / Docker / Nvidia dependencies. since there's SO MANY ongoing changes they have a lot of out-of-date documentation.

the backbone of the algorithms running this is from gpt-2 (openai's text generation algorithm). i experimented with almost all of the other text models including bert, transformer-xl, xlnet. i looked into ctrl (salesforce). most of them had incredibly high memory requirements, speed wasn't the fastest, or the output wasn't as good as gpt-2. this isn't a knock on the other algorithms, they were designed with the focus of answering questions in test sets (reading comprehension, etc).

i fine-tuned gpt-2 medium w/gradient checkpointing for five different datasets: legal, harry potter, game of thrones, song lyrics, academic research. training was relatively straight forward, but the data scrubbing was incredibly tedious. i'm still training/updating the research models.

reddit has made some amusing harry potter and game of thrones fanfiction w/this so far: [https://www.reddit.com/r/FanFiction/comments/d5s9yh/i_made_a...](https://www.reddit.com/r/FanFiction/comments/d5s9yh/i_made_a_bot_that_writes_fan_fiction_with_you/)

app hosted on google cloud. everything is run via docker containers (which is also hard w/nvidia). autoscaling on usage. the main inference runs off from either cascade lake (cpu, surprising reasonable performance), k80s, or p100s. i experimented with the speed and profile of them a lot.

open-sourced at [https://github.com/jeffshek/writeup- frontend](https://github.com/jeffshek/writeup-frontend), [https://github.com/jeffshek/open](https://github.com/jeffshek/open)

i'm going to write a detailed blog post about the code/deployment/infrastructure soon if you're interested. love to answer any questions and get feedback! thanks!

</comment><comment><AUTHOR> No one will ever see this self pep talk, but posting on HN and finding no one cares about your project makes me quite sad.

Just have to pick your head up and continue.</comment>


For the first time, scientists can control human brain cells using quantum dots - <AUTHOR> http://www.sciencedaily.com/releases/2012/02/120215083025.htm

<comment><USER2> Links to wrong story.</comment>


Apple Is Planning a New Low-Cost MacBook, Pro-Focused Mac Mini - <AUTHOR> https://www.bloomberg.com/news/articles/2018-08-20/apple-is-said-to-plan-revamped-low-cost-macs-to-reignite-sales <comment><USER2> Too little, too late. I bought an X1 Carbon earlier this summer and have been pleasantly surprised by Ubuntu.

I don't think I'll be in the market again for another 2-3 years and by then I may be fully sold on Linux.

I was a hardcore mac enthusiast from 2006-2018... But the past few years have resulted in a lot of disdain for the company.

<comment><USER3> Same here. At least for the moment I'm happily running Arch on an X1. Not that there aren't tradeoffs but man, Apple has been killing me the last few years. I can't do the dongle life.

<comment><USER4> What do you plug in that means you need dongles?

Your screen can go into the USB-C, so can power. What else are you plugging into a laptop that can't be done over WiFi or Bluetooth?

<comment><USER3> Yes, a screen's HDMI can go to USB-C… with a dongle. Am I guaranteed the upstairs conference room will have one? Nope, better pack the dongle. USB drives, USB headphone/mic adapter, the list goes on and on. I'm not saying it has to bother you but it does me.

<comment><USER5> And when the MacBook had HDMI I had to carry dongles for VGA and DisplayPort. One person's native format is another's required adapter.

<comment><USER6> Sure, but HDMI and mini-DisplayPort covered my needs pretty well without adapters. Was it perfect? No. Was it usually enough? Yes.

</comment></comment></comment></comment></comment></comment><comment><USER7> I really hope the lower cost MacBook is actually just the MacBook Pro without the touchbar.

<comment><USER8> And with TouchId

<comment><USER9> Why not FaceID? I'd appreciate that in a laptop.

<comment><USER10> If they can also get a snazzy notch into the laptop, like on the iPhoneX, they'll earn another customer!

/s

</comment></comment></comment></comment><comment><USER11> I'm kind of intrigued by what a pro-focused Mac Mini could be.

I agree on the top level that a desktop computer in 2018 is actually probably more niche and pro focused than laptops, which have become the default computers for people.

But Apple has the iMac Pro and the upcoming Mac Pro update. So, what would a pro-focused Mac Mini be? It would need the reliability of a desktop machine, something the laptops have struggled with.

I guess I could see this being useful for someone who wants external displays, but doesn't need that much power.

<comment><USER12> Apple does have one fairly unusual pro-level use case, which is that you need to have a macOS machine if you want to develop iOS applications. Having a relatively low-cost (i.e. under $1,000) macOS machine you can plug into an existing monitor and keyboard makes iOS development easier to get into for people and companies who aren't already 100% Apple-focused. A reasonably spec'ed updated Mac Mini would fill that niche nicely.

<comment><USER13> Just a different form factor for the new macbook without a display, maybe $700?

</comment></comment></comment><comment><USER14> I just wanted an updated mac mini...not a "pro" model. Whenever Apple attaches the word 'pro' on a product it usually means "a fuck ton more expensive".

<comment><USER15> I feel like no matter what Apple does, people will never be happy.

If it was a "consumer" Mac Mini, you'd complain "Apple has given up on Pro users".

I recommend waiting until they come out with pricing and the details before writing it off glibly.

<comment><USER16> You know what would have made developers happy? Regular refreshes on the cheese grater tower. THAT IS ALL ANYONE HAS EVER WANTED. Nope, we get a trashcan that is over priced, can't be upgraded, and also still gets zero updates.

<comment><USER17> The cheese grater mac was really incredibly designed. it's a shame they decided to limit things with the trashcan one. apple if you are listening please let people upgrade or at least replace parts when something goes bad in the desktop line. don't make the desktop a huge ipad.

<comment><USER15> Agree - Looks like Apple has listened and they are working on a new modular Mac Pro machine : [https://techcrunch.com/2018/04/05/apples-2019-imac-pro- will-...](https://techcrunch.com/2018/04/05/apples-2019-imac-pro-will-be- shaped-by-workflows/)

<comment><USER18> "Modular" might mean "you can plug in a bunch of things with Thunderbolt", mind you.

<comment><USER19> They already did that with the "can" pro design and they said this will be different and more upgradable.

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> I still have a Late 2012 Mac Mini i7 and it runs great. Upgraded the RAM to 16GB and put in an SSD, runs like a dream. Would definitely look at upgrading if the newer ones were compelling enough.

<comment><USER21> Are you developing for iOS 11 with it?

<comment><USER20> It handles everything I throw at it (Scala/Akka/Node, Docker, Discord, Slack, Million Chrome Tabs, ect etc etc)

</comment></comment></comment><comment><AUTHOR> Note that this has been rumored for awhile, but since this post is by Mark Gurman, it has much more weight.

</comment><comment><USER22> Dated Mac Minis were the thing that pushed me over the edge with Apple, and back to Windows. Then multiple reasons lead me back to Linux, and finally back to Mac :P.

Much too late to save me from trying every other OS again, but I'll still be happy to finally have a modern Mini.

</comment><comment><USER23> Back in around 2012, when I was working at at consultancy, they had slowly started replacing MacBook Pros for Mac Minis.

The case was simple: greatly reduced cost for IT and the same, if not better, performance than the MacBook Pros.

I think Apple saw this pattern. If they'd carried on matching the laptop chips in core counts and with eGPUs on the horizon, you would have been able to build a desktop computer, with a faster graphics card than the Mac Pro with and a great monitor with spare change left over.

On benchmarks it would beat the Mac Pro in single core performance and have a better GPU.

It makes sense they crippled it until now.

They've realigned it into their line up with an expected very powerful Mac Pro, which if this is anything to go by may indicate they are not worried about GPU performance being close to the Mac Pro. Expect it to be priced similar to a MacBook Pro, minus screen, with similar performance.

</comment><comment><USER24> There is an almost 100% chance of me buying one of those when they come out.

I already have a Windows desktop and I'd love a small Mac desktop for iOS development and Unix stuff to keep on my desk too.

If the laptop is cheap and fast enough, I might instead replace my Thinkpad x220 running Fedora because I do occasionally want to do some computing away from my desk.

Either way, good on Apple for expanding the product line. That's what everyone's been asking for, but I'm sure that because it's Apple were talking about a vocal minority will be out in force to tell us why this decision sucks.

</comment><comment><USER25> Owning a unicorn 2012 quad-core i7 Mac mini for use as a server.. (more horsepower than the current i7 dual-core Mac mini) ..

The Mac mini love might be a little late:

\- Intel NUC is a compelling option especially the high end ones with GPU. Ubuntu is excellent on this. So is docker. And on and on.

\- Mac minis were the Original NUCs in a lot of ways in terms of performance/watt. If current Mac minis hit $1200, a $2000 touch point wouldn't be out of the question.

\- Still it would be interesting might be the ability to stack and connect multiple Mac mini pros to create a new Xserve...?

One can hope, I suppose.

</comment><comment><USER26> I'm strongly suspecting this new "low cost" MacBook will be the first to have an Arm chip

<comment><USER27> I think if the options are a Macbook running ARM or an iPad being used like a Mac, I'd prefer the iPad used as a Mac. If we had mouse support and a way to set up a new sandbox to run arbitrary code temporarily (but still securely) like spinning up a Docker instance, we'd be there already. Meanwhile a Macbook running on ARM needs all new software and will necessarily have things it can't run, with the extra negative of not having 10 years of apps built specifically for the platform.

Basically, use the platform they already have to its full potential, rather than creating a new platform in a slowing niche.

</comment></comment><comment><USER28> For about 2 years and then it'll abandon it again.

Witness: \- mac mini (for most of it's life) \- mac pro (G5, dustbin variant) \- both low and high end laptops at different times

Basically you can't buy Apple and expect to stay up to date by the looks of things.

</comment><comment><USER29> Any predictions on the price of the rumored "low-cost" MacBook?

<comment><USER30> Sounds like it is replacing the Macbook Air, so I'd guess it will start around $999.

<comment><USER31> The previous low cost entry was the MacBook Air 11", I think the base model was $899. I would like to see them start around there. Small is nice.

<comment><USER32> Still soldiering on with my 2012 Macbook Air 11″. A bit more horsepower would be nice as would 16Gb rather than 8Gb, but I don't want the extra weight or size (or Touchbar) of the Pro. An i5 MacBook with 16Gb memory is over £1500 and feels like only a moderate upgrade over my current laptop. Hoping that whatever Apple release is 11″ or 12″, although I'm pretty certain it won't be.

<comment><USER33> It's still my favourite machine ever. Mine has dual core i7, the MacBooks don't look like an upgrade in any way.

</comment></comment></comment></comment></comment><comment><USER34> Depending on specs this might work for me. I'm on a 2013 iMac but I don't want to replace it with another iMac because I need (and already have) a second monitor to connect my work laptop to. I'd love something with the power of a current (non-pro) iMac. Don't know if that means a top of line mac mini or a bottom of line mac pro.

</comment><comment><USER35> Just posted this, but what if the Mac Mini could be paired with an iPad for screen/keyboard and portable use?

[https://ckluis.com/rumored-mac-mini- pro-7feed0cc38b2](https://ckluis.com/rumored-mac-mini-pro-7feed0cc38b2)

</comment><comment><USER36> Will the new Mini have a T2 processor for secure boot and disk encryption?

<comment><USER37> All future Macs will have T chips; why wouldn't they?

<comment><USER36> The Mini doesn't include a touch bar that requires a T2.

<comment><USER38> Neither does the iMac Pro; the T2 is a security device first, touch input controller second.

<comment><USER39> It does all kinds of stuff. It is also the SSD/Flash controller running Apple's own software for it.

</comment></comment></comment></comment></comment><comment><USER40> No mention of the Macbook Pro then. My eyesight can't cope with the 13/12" models and the only alternative right now is a Macbook Pro which can't handle the heat generated by its processor. I thought Mac Mini and Pro were opposite ends of the spectrum? Sounds like a bit of "creative" marketing to me.

<comment><USER41> The MacBook Pro overheating problem was completely fixed with a software update a month or so back if I remember correctly.

</comment></comment><comment><USER42> I have a 2013 Air. I wish the ram was extendable :/

</comment><comment><USER43> Chromebook competitor?

<comment><USER24> I doubt it would be cheap enough to compete with most Chromebooks, and the depending on how you spec it the 12" MacBook and the 13" MacBook pro without touchbar already compete with the high end Chromebooks like the Pixelbook

<comment><USER43> You might be right about the first part.... but I don't think if Apple were worried about Chromebooks that they'd be concerned with the Pixelbook... more so the educational market eating up the low cost Chromebooks.

<comment><USER24> Apple is hugely concerned about low cost Chromebooks eating the educational market, but it's because they want them to be using iPads not Macs.

Releasing the $329 dollar 2017 iPad was a direct response to Chromebooks in the educational market. It was actually a rather unusual product for Apple. It replaced the iPad Air 2 and did have a newer processor, but saved on cost by being thicker than the Air 2 and lacking a laminated screen. For reference, the Air 2 was the first iPad to have a laminated screen and the current iPad Pro models still do.

<comment><USER43> Makes sense thanks

</comment></comment></comment></comment></comment><comment><USER44> Normally I would be excited, but now when I hear about Apple updating any Mac hardware I get worried about what will be removed or broken next.

It will be very disappointing to me if yet another laptop comes out of Apple with no useful ports, an unreliable keyboard, and the goofy Touch Bar.

</comment><comment><USER45> First: Apple, take my money.

Second: Honestly until you show me real things, I am not seriously counting on such news reports. Apple failed to show interest in laptop and desktop machines and is fully focused on phones. I am looking for Intel's Canyon Hades Nuc as a replacement for my old iMac.

<comment><USER46> > Apple failed to show interest in laptop and desktop machines and is fully > focused on phones.

Well they overhauled the laptops not too long ago, and the Mac Pro is receiving a complete overhaul and is due out sometime next year, I think. (They're also working on a new pro display, they mentioned.)

I'm not saying all their updates have been phenomenal, but they are definitely spending some non-zero time on these things.

</comment></comment><comment><USER47> I've been hunting around for a new netbook that would bridge the gap between portable and durable. This isn't it.

It really burns that most reporters turn to Apple products, a brand for which I have SEVERAL criticisms. My main complaint being that people purchase their products as fashion statements/status symbols first, and as tools second.

The situation is compounded by the fact that journalism schools like Columbia swear by Apple stuff, and only mention Android/Windows as an afterthought.

[https://journalism.columbia.edu/technology- guide-2016-2017](https://journalism.columbia.edu/technology-guide-2016-2017)

<comment><USER48> Your main criticism of Apple products is other users' motivation for buying them?

<comment><USER49> Seeing other people happy for seemingly inexplicable reasons is maddening.

<comment><USER27> The only time you should worry about someone's happiness is when they're unhappy. Their reasons for being happy are their own and no one else's.

<comment><USER49> I didn't say it was rational, but who hasn't complained at some point that the music their (kids/parents/neighbors) love is garbage?

(And to be clear, I value what Apple brings to the table, but I see too much of this sort of complaint not to recognize its origin.)

<comment><USER27> In reality, it's just gatekeeping. _Those_ people can't _possibly_ appreciate the thing they have, so they don't deserve to have it. I see the same thing with so many other things: that "soccer mom" doesn't use that Jeep for off- roading, so she's not a real Jeep owner. That old man can't drive his Corvette the way it _should_ be driven so it's a waste. That amateur guitarist doesn't deserve that Gibson Les Paul, he should have the Epiphone Les Paul Jr.

Some people have such a need to be unhappy or offended constantly. It's really not healthy.

<comment><USER49> I was trying to be generous, but yes. As a card-carrying member of the Jeep and IT communities, yes.</comment></comment></comment></comment></comment></comment></comment>


Secrets of the Masters - An Algorithm for Learning to Program - <AUTHOR> http://all-things-andy-gavin.com/2011/09/11/video-game-programmer-method/ <comment><USER2> I coded the first two Crash games with Andy (and, on Crash II, with two other really awesome coders as well). I couldn't agree more with the recommendation of picking an old-school game and setting out to copy it. When it comes down to it, I pretty much learned to program games by, uh, programming games. Crappy ones, initially, but eventually pretty good ones. Then, an "A+" title at Naughty Dog.

I remember "discovering" double-buffering in high school when my friends and I were creating an Archon clone for the Atari ST (a 68000-based machine). My sprite was tearing and flickering all over the place; I then realized _that's_ what double buffering was for. Sort of in the spirit of the modern (and massively overhyped) hackathons like the one that's going on in NYC this weekend, we'd stay up for 48 hours straight coding. Snow days were the best: you might get 4-5 whole days of hacking in! Man, we learned a lot coding clones of old games.

We made a PacMan clone with 100 levels. Sure, it was just a PacMan clone, but we had incredible fun making it, and it ended up being not only a great lesson for me in game programming, but an early lesson in how to structure a "big" program. ("Big" in quotes because it was only big relative to other stuff I'd written.)

And lest you think this kind of thing went out with the 16-bit era, I met a 13-year-old earlier this year who made a very convincing Pole Position clone in Flash. I'm totally hiring this kid when he's old enough for me to legally do so... unless PG funds his first startup when he's 15. :)

So, yeah -- if you want to learn how to code games, start coding a 2D sprite classic from the 70s or 80s and, most importantly, _finish it_. It might take you a year or more, but by the end you will have learned _a lot_. Then do the same thing with a more modern 3D game (a Doom-style POV game, for example). You will reinvent a lot of stuff, but you'll really know it cold. And these little games make great portfolio items that will help you land a job on a good game development team.

</comment><comment><USER3> _If you don't like to read, either learn to or find yourself a new career._

This is so true. About two years ago I realized that a significant chunk of my time was reading. I would read howtos, api docs, in depth analysis of things, both directly related to my job that day and programming in general. I did an analysis and realized that I was easily reading the equivalent of a 1000 page book a week. I have since taken efforts to both increase the quantity and quality of my reading, and it has paid off. I actively seek out topics I am ignorant of, and deeper articles on topics that have interested me. I also try to look at tools I don't expect ever to use. In all these cases I just read. This has given me a breadth I hadn't enjoyed before, and I suddenly have access to a whole new understanding when I and my co-workers encounter problems -- "hey let's look over here for ideas, that field has encountered similar problems"

 _DO NOT EVER LEAVE THE COMPUTER IF YOUR PROGRAM DOES NOT RUN._

I disagree with this. There is a point at which I need to just be done with an issue for now. This give me a chance to background process the problem. The number of times the answer "just comes to me" while doing something else has given me a certain amount of faith in temporarily walking away from the problem. A lot of people call this the "shower solution".

<comment><USER4> I have, on occasion, intentionally left a program in a state that would generate a compile error to give me a place to start the next day.

Edit: Incidentally, I do agree with the sentiment in the article, though, which is that you should develop in manageable chunks and avoid derailing so far from a working program that you can't see the results of your work within a reasonable amount of time.

<comment><USER5> I tend to replace them with assertions that blow up the tests. I never leave a compile error.

Usual format:

       Assert.Panic("not finished");

</comment></comment></comment><comment><USER6> I'm really glad to see someone discussing the actual mechanics of how they program. We need more arguing about which mechanics are the best and less arguing about which tools are the best. I'm sure the top 1% of programmers are the top 1% because of their awesome mechanics, not their awesome tools.

In my experience the quality of your debugging facilities determines a lot of how important it is to program by accretion. If you are getting really high quality tracebacks when there is a bug, it tends to be safer to add a lot of code at a time.

For me the Holy Grail has always been for my program to run on the first go without any bugs. I have achieved this for small Python scripts. To write conceptually correct code on the first go requires a much higher level of mental engagement, but it is far more satisfying than working by trial and error. (I guess it is probably all right to have trivial bugs like a forgotten import statement or a misfired library call.)

</comment><comment><USER7> I guess I expected something more secret. That's pretty much what I do, except for the 'don't leave the computer if the program doesn't run' bit. When the program doesn't run, and I'm pulling my hair out that's the -best- time to leave the computer. Go get some fresh air, a soda, maybe a nap... Anything to take your mind off it long enough to think straight again.

<comment><AUTHOR> There are no magic bullets here. Becoming a great programmer takes a LOT of time and effort. It's fun and rewarding, but not exactly easy. :-)</comment></comment>


If You're in the W20 Batch and Need Housing - <AUTHOR> Hi everyone,
I currently work at a startup called Roombase that connects tenants to flexible landlords. After talking to a couple of YC Alumni, it came to my attention that one of the biggest challenges you will all face while attending YC is finding short term housing in the area.
We believe we can help solve that issue by matching you and your team to homes with rental agreements that fit your needs. Free of charge.
Please do not hesitate to PM me should you have any questions. I look forward to finding a place for your team to stay.
You can also contact us through our website at https://www.roombase.io/ <comment><USER2> Hacker news does not contain a PM feature, I recommend including an email address in your profile or post.</comment>


Simple Living Manifesto: 72 Ideas to Simplify Your Life - <AUTHOR> http://zenhabits.net/2007/09/simple-living-manifesto-72-ideas-to-simplify-your-life/

<comment><USER2> Idea 1: Keep the number of ideas in which you simplify your life manageable.

<comment><USER3> Thinking about how to achieve simplicity is actually quite complex. It doesn't happen easily.

I liked John Maeda's book, Laws of Simplicity <http://weblogs.media.mit.edu/SIMPLICITY/>

</comment></comment><comment><USER4> 72 Ideas? This is the internet. I don't read anything with a number like that preceding a list.</comment>