When to quit? - <AUTHOR> I have a slight dilemma... I was brought on as a software engineer for a large company back in September. I was an intern for this company for ~2 years prior and had a great time working there, until I started full time.
The team has changed drastically since I started interning there. In the beginning, we did all of our development in-house with ~5 engineers + myself. I was able to get help anytime I needed it, but now 99.9% of the development is done off-shore.
I'm now the ONLY in-house developer with NO understanding of the current applications we're working on. Not only that, but we've switched technologies from Rails to Spring. I'm really good at Rails/Ruby and can work on those types of applications without much help at all. When it comes to the new stuff, I take in a deep breath and then think to myself run away as fast as possible.
The new code has almost no comments. The new code almost ALL needs to be refactored -- and this is landing on my shoulders.
My question to the community is this... when should I quit? I want to leave ASAP but I have no other job offer on the table. Every day I come to work and ask myself "why the hell am I here?" because they don't need me. If I dropped off the project, nothing would really change because I haven't contributed anything to the project and I'm having a lot of difficulties learning from the devs -- especially when I can't even learn from the code base.
I started this job ~3 months ago, so would it be legit to just remove it from my resume and spend my time finding a new job?
Help! <comment><USER2> I would start looking for a new job immediately, but stay in your current job until you have something lined up. It's much easier to find a new job when you are already employed. Relax and just focus on developing your skills and learning as much as you can while you are there. What's the worst that could happen, you get fired or laid off? You are considering leaving the job off of your resume anyway. You might as well collect a paycheck while you are looking.

Learn everything you can about Java/Spring even if you never intend to write another line of Java in your career. It's always helpful to be familiar with other languages. Be polite to your employer and (when you have a new job lined up) just say you are moving on to an opportunity that is better aligned with your goals.

I once worked on a project that required refactoring classic ASP code written by a company in India. The code was a rat's nest. The site had hundreds of pages and most of them had three or four copies of the code commented out (this was their "version control system"). At the time I hated it, but looking back I learned a lot about what not to do and how to be a better programmer. I used the opportunity to create automated tools to clean up the code and experiment with new technologies.

</comment><comment><USER3> > The new code has almost no comments. The new code almost ALL needs to be > refactored -- and this is landing on my shoulders.

As the ONLY in-house developer-- can you help your employer? That is to say, can you manage-up and make the necessary changes? Can you learn the new technologies? If you could make those changes, how might that impact the attitude toward your work? How might overcoming these challenges help you grow professionally?

It's easy to run and find a new job. It's much harder to stay and fix things. But that's how great careers are made.

<comment><AUTHOR> I can refactor the code. I can learn the new technologies. But what I can't do, is grow as a developer in this environment.

I'm also afraid that the offshore team won't learn to write code correctly the _first_ time and that I'll become the "refactoring guy" \-- which is a horrible way to develop software.

For a first job, I shouldn't be telling devs who've been in the industry for more years than I have, that they're doing it wrong. I should be the one being told I'm doing it wrong. I should be the one copying and pasting code, but I know better than that to do it right the first time.

Aside from switching technologies, it's more about how we get things done. Java and Spring aren't the problems, it's more of everything else that's the problem.

<comment><USER3> > For a first job, I shouldn't be telling devs who've been in the industry for > more years than I have, that they're doing it wrong.

You've got 2 years internship experience, plus a battle-field commission as the ONLY in-house dev. Suggest re-framing these obstacles as a laboratory for self-development. The ability to find common ground, encourage candid collaboration, and solve problems is a desirable leadership quality.

But if you can't help, then you shouldn't take your employers money.

</comment></comment></comment><comment><USER4> Totally. Your career is yours alone. If you don't need the money immediately then why be unhappy?

Put it this way. You've spent 2 years 3mos at this company. You're a free agent and now is the time to focus on other career opportunities. Your boss won't fault you. When people ask what you're gonna do just say you are evaluating your options. If they ask why you are leaving just be very straight forward.

Be prepared for a counter offer if you are critical to the team.

</comment><comment><USER5> Yes, that is completely legitimate. Nobody is going to bat an eyelash if you do that.

</comment><comment><USER6> I'd go with your gut on this one and get out of there as quickly as possible, without something else lined up. I say this knowing this cannot always be the right answer for every dev in this scenario, but if you are one of those who is unwilling to settle in life/career, are talented, and are confident in your ability to get hired if you set your mind to it, well...

I've been there myself, and it is hard to go against the herd telling you to play safe and stay for the security/money. Life is short, make yours worth while and take risks on yourself. Jobs, money, and titles are fungible for those who are truly great practitioners of their craft. This might sound like anti-advice, but a great way to ensure you have all the job prospects in the world going into the future is truly falling in love with practicing your craft and be uncompromising for things that get in your way of that.

One thing I would mention before you fully depart is to go for a "longshot" pitch to your superior(s). Put together a plan for how the department could be put back on track and show you can help reach that vision. Find out why the Rail to Springs change was made, why outsourcing is being preferred, what the department's goals are, your thoughts on moving forward, and how you can lead such a change, etc. Worst case, you know for sure this isn't the right fit. Best case, you get a promotion to lead and bring the change the department needs. If you have plans to be more than an employee someday, you might also enjoy finding out how the series of events lead to a poor outcome came about. Something to take insight of, if you ever venture off on your own (plus, it is interesting to know how the world "works").

I wish you the best in life and career!

<comment><AUTHOR> "I'd go with your gut on this one" \- That's what I've been telling myself for a couple of months now, but I haven't been able to convince myself of it yet! So thank you!

And as for the management part... it's a lost hope to be honest. I think one of the reasons they switched from Rails to Spring was finding the right Rails developers was difficult. The company doesn't pay competitively, so that was a big hit on offers to Rails devs. Additionally, it was harder to find Rails devs.

The funny part is... we got this offshore vendor for Java Spring and none of them knew Spring. So we would've been better sticking to Rails and had them learn Ruby from the get-go.

<comment><USER6> Your thoughts as to why the changes came about would have been my own first guesses, without knowing the situation. You are right, it might be a lost cause but I still see a longshot pitch due to the "opportunities" I've seen you describe (e.g. recently occurred, Java productivity vs Ruby productivity, new devs don't know Spring, scrapping codebase(s), etc). Some thoughts:

      - Determine/guess the costs of the outsourcing and use it as the base for your
      pitch. (i.e. what can I do with ~200k for my own pitch)

      - They are open to shifting things off-site, use this to your advantage. Rails
      devs are hard to find? What about a distributed team of talented Rails
      developers? No longer are you restricted to a ~50 mile radius. Depending upon
      your location, you might have a higher cost of living than remote developers
      which is in your favor. Your candidate pool is now huge. Etc

      - Fewer/more talented developers over more/less talented developers who
      don't even know the framework (Spring).

In all honesty, I'd expect the pitch to fail given the number of seemingly poor decisions made up higher to date. I am curious, is the software being developed an expense for the company or does it make money for the company? I'd expect the former, given the descriptions. Tip: If you can, work for projects that make companies money and are not seen as an expense. That subtle difference has huge impacts on management, pay, decision making, etc.

<comment><AUTHOR> It's actually a replatform project that generates no money for the company. The old application is running on Rails and we're rebuilding everything in Spring and adding a boat load of new features.

</comment></comment></comment></comment><comment><AUTHOR> Phew thanks for the replies! I kept telling myself this in my head but I really needed some reinforcements to make sure I wasn't crazy.

<comment><USER7> I would certainly think about the other replies that people have given, but allow me to give you a slightly different view of your situation and the industry as a whole. When I was first starting out I wrote in Basic and then very shortly after in C. From there I moved to Visual Basic and I thought "Wow! What am I doing? I'm not comfortable in this. I am much more efficient and happy in C or my old Basic. This is the worst idea ever!" But, I did it. Then there was C++, .Net in various flavors, and Java also in various flavors. Each time I thought this language/framework stinks! It's actually a relatively common thing to think from a developers standpoint. In very recent years I have learned Ruby and Rails as well as some Python and Django. Then a few weeks ago a very lucrative and fun contract came up in PHP (of all things)! At this point I feel very comfortable with three ideas in my career that might be useful to you:

1) There is no perfect language and all of them can do amazing things with the right person (me! and heck you too!) behind them.

2) Sometimes I will be less effective when I am starting in a new or changing environment but half the fun is finding where I can lead and make great changes for the users.

3) Offshoring will exacerbate issues these issues but my ability to make substantial impacts increases exponentially with the amount of offshoring that is going on within an organization. I capitalize on this.

Obviously, if you are just tired of being there and don't want to stay, then leave. Though I would suggest like either that you find a job before you quit your current position. However, if the whole code base needs a good refactoring, by all means, make an impact! Start in a small piece and make a difference. Start to lead.

<comment><AUTHOR> I totally understand where you're coming from and thank you for the reply.

I completely agree that there's no perfect framework and I definitely feel the pressure of switching to something new; however, I have been working with Spring since ~May and although I follow best practices to the best of my ability, the offshore team doesn't.

The team leads that I work with in-house don't even understand the application enough to help me along the way, so any help I get is from the offshore folks who've completed the dev work and understand the applications -- which eats up their dev time too. I can't even rely on documentation or comments in the code because almost none of these things exist. So to understand a feature flow, I have to read through copy/pasted code with some Java classes spanning 2000 lines of code that need to be refactored. All while keeping to unrealistic release deadlines (which I'm sure I'll find anywhere else lol).

Some of these problems stem from how our BAs create the user-stories. Our BAs have a tendency to bloat stories and write them in a waterfall-like fashion -- when we're Agile. So the offshore devs take on too much work, point them far below their real size, and write shit code. The code comes back to us, and we have to redo it -- there's nothing good about this. We've tried changing how BAs create stories, etc. but nothing has changed, it really feels like all hope is lost.

<comment><USER8> > The code comes back to us, and we have to redo it -- there's nothing good > about this.

Implement code review and start rejecting their pull requests with constructive criticism and mentoring.

<comment><AUTHOR> It seems to be an issue because the offshore folks are saying they do code reviews... but when we review the code, it's clear that they're not - or if they are, they have no idea what's good code and what's bad code.

The main issue is that I need to be mentored. It's my first full-time job and I shouldn't be the one mentoring anyone unless they're an intern with no knowledge of enterprise software development.

</comment></comment></comment></comment></comment><comment><USER9> I think you need to leave. Start looking immediately even if you are not sure yet.

BTW I am in the exact same position right now myself. I did not follow what I am going to suggest to you next. But I hopefully have learned my lessons and won't be here again. These lessons were learned through mistakes I made and still make.

1\. Always be looking for a job.

This means you should often be checking for jobs in your career field, even if you know there is no chance you would leave. Make sure you keep in mind:

Growth or looking for your next step. Too many people go from one job to the same job elsewhere. They are passing up a great opportunity to change their direction!

What kinds of things/skills others are looking for in an employee with your skillset. Helps you keep yourself employable.

Temperature and pay of your field. Is is waxing or waning in popularity?

This also reminds you to keep your resume and profiles updated.

2\. Keep in mind it can be 1-3 months to find a new job that works. So, see #1 again to keep that number at the low end. Careers outside of tech can expect much longer timeframes.

3\. It is a numbers game.

There are odds that work in your favor and odds against.

Timing is probably the biggest single predictor of your happiness and pay. For example, I work in IT. If I am applying for jobs in Nov-Dec I know I am probably a backfill replacing someone who is leaving. Backfill gives you great negotiation room but are almost guaranteed to be difficult. Why difficult? Logically, there must be some reason the last guy is leaving. And you will be expected to be at least as good, and lastly you will have to quietly clean up his mess.

Timing is also almost impossible to control. So keep that in mind. See #1 again to improve those odds.

HTH.

<comment><AUTHOR> Yeah, the only thing I'm afraid about is leaving this job for another job of the same quality.

I did an interview at a company where my old mentor works and they've been looking to expand and hire new engineers, but it's been 2 months. I just sent his boss an email to see if anything's changed, because that'd be my #1 choice -- work with a mentor I know is good and if he says the place is good, I trust his judgement.

Now to wait and see if luck is on my side -- but I've started applying elsewhere, so I'll keep my fingers crossed.

It's just scary leaving a job when I don't have another lined up.

<comment><USER9> It is scary to leave one job without another I agree.

The worst part is the fear that you will make a mistake out of desperation to just get something going. And you know what, unfortunately that fear bears out as fact, at least it has for me.

Historically I take the jobs that paid the most or made my hire the easiest by just being there when I needed them. This was a mistake though. It put me in some lousy jobs that I had very little chance of succeeding in, and before I even started.

I am really hoping this time out I can change that history; and I hope the same for you.

Good luck to you.

</comment></comment></comment><comment><USER10> All the answers here are really good. I would just add some advice for your new job (if you choose to change) : Always ask for a detailed presentation of the product and the current work in the interview. First, that is showing them that you are interested in the job and everyone like talking about their work but even more important than that, they cannot hide anything.

You will see instantly from what they do currently and how they present it which type of company they are, you will see any management issues, how good everything is done and how they care about their product(s). Nothing can be hidden this way. As a software developer you have a tremendous choice about the type of company you will work, so life is too short too work in a company you don't like !

</comment><comment><USER11> I'm in a similar situation. Started as a software engineer this summer and it was a perfect work environment: boot-strapped with fast-growth ($50m in 2 years), pingpong/food, good team, $85-90k + 0.2% equity. Then they hired some executives who started changing our roles and let go some of our teammates. I'm still technically an engineer but I'm working on functional tasks that a high schooler is capable of (eg. powerpoints, researching prices, documenting).

Not sure if I should stay just because it's paying well and is mind-numbingly easy work or leave because it's soul-draining and the company is likely to fail with the new management.

<comment><AUTHOR> Ouch! That's really unfortunate that your job has changed so much since new management took over.

I'm on the same side of things -- weighing the good monthly pay vs. finding something I actually enjoy.

</comment></comment><comment><USER12> I'm in a similar situation. I've been recently promoted doing a job that I didn't like before and I decided to accept the money and the new offer. Now my life is a pain, my productivity is very low, I'm working 60 hours/week and I totally hate what I'm doing (mostly very old Java products customization). I think I'm going to quit even without a new job, cause I have no free time to search for a new one. Remove nothing from your resumee, why should you? I suggest you take your life and career back from what you are doing... and enjoy your time the most you can.

</comment><comment><USER13> Start interviewing. And I'd secure an offer before giving your 2 weeks notice.

</comment><comment><USER14> Before I was a working programmer, I worked in graphic designer and 3D modeler and sometime animator. In 2008 I was working for an architecture firm building pre-visualizations for the projects they were either currently building or ones they were bidding on. I'd dabbled as a web developer as a hobby for a couple years.

Then the bottom dropped out of the economy and I was laid off. I took it as a chance to turn this whole web hobby thing into a full-time gig. After two months I landed a job as a web developer at a very small printing company. They needed someone who could blend design and web dev into one role, and it seemed I fit the bill. They had another dev and apart from that had no idea how to build a website. I was grateful I wasn't going to have to dig into my savings any more. Three days in I already started dreading going to work in the morning. I didn't gel with my manager, we constantly misunderstood each other. I never understood what he was looking for design-wise, so I kept bugging him for clarifications. I got the impression he thought I was a diva. And the dude was a printing industry vet, who just didn't understand the web at all. It wasn't a good fit.

I was rescued that Friday by an offer from a different company I'd interviewed with. So after a week, I walked into the owner's office, told him I had a better offer[0], and that I was leaving now. I walked right out the door. No two-weeks notice.

That job is notably absent from my resume. Why would I put it there? The whole point of a resume is to sell yourself to potential employers. If you don't want it to come up in future job interviews, don't put it on there, and it won't.

No one else is going to look out for your career[1]. I almost look at my personal career development as my actual "job" and positions at companies as steps along the way. Take charge of it. You get to be responsible for your own path.

[0] It really was a better offer. Something like a 40% pay raise, WAY better benefits, a boss who understood what I did and could communicate what he wanted, and a very nurturing company culture.

[1] Well, someone else might. Some companies are better at this than others. But no one's going to advocate for you the way you would. So you might as well get used to doing that work for yourself.

<comment><AUTHOR> Yeah you're right, if I remove it from my resume, no one will ask about it. I figured since I recently graduated, it's not uncommon to be 'unemployed' for 3 months or so after graduation.

It'd definitely be best to wait until I have another offer, but I find that I'm far too stressed over something I have the power to change.

I shouldn't be this miserable at my first job -- at least I had hoped that prior to starting.

</comment></comment><comment><USER15> I think it's important that, on the way out, you tell your current company the truth - that they put you in an impossible situation. It won't help you any, but it might help the next person not be put in the same situation.

Don't tell them this in malice or anger, but do tell them.

<comment><USER16> I've never seen this be effective. I worked at a place that had quite a few people leave within a few months, all citing more or less the same issues I did, and still to this day the culture and problems are the same.

The truth is if the problem is management then it's very unlikely any meaningful changes will ever be made.

<comment><USER15> > The truth is if the problem is management then it's very unlikely any > meaningful changes will ever be made.

I agree that it's unlikely. But if nobody says anything, then it's even less likely.

One truism of business is "The higher the management level, the less truth you hear." If you're on your way out (having another offer in hand that you're taking), your downside for telling them the truth is very small. Management _might_ listen. It's unlikely, and even if they do it still won't help you any, but it's still worth the attempt.

</comment></comment></comment><comment><AUTHOR> Thank you all for the replies, they really helped me analyze both sides to finding something new.

I've decided to stick it out and make the most of it while I look for something more suitable for my skill level. At worst, this position has shown me what I'd like to avoid in the future.

</comment><comment><USER17> Its normal, read this [http://michaelochurch.wordpress.com/2012/04/13/java- shop-pol...](http://michaelochurch.wordpress.com/2012/04/13/java-shop- politics/)

its posibly that you are the victim of a power struggle at the management level

</comment><comment><USER18> Yes, I would tell management they hired the wrong person and move on.

</comment><comment><USER19> run, run as fast as you can.... Offshoring of this kind is wrong in all ways and the software it produces is terrible. I don't believe that it is working model and you will become just refactoring machine with zero interest in the product development/improvement and after while you will start hating your job.

Don't waste your time. If you are not bound with visas or other strings in that company, just go away.</comment>


What is the Flame Virus? - <AUTHOR> http://www.techopedia.com/definition/28640/flame-virus

<comment><USER2> "Deadly" virus? I'm OK with a little hyperbole to stir up user interest, but calling a computer virus that spies on people is hardly deadly.</comment>


Jubilee, a new Rack server for JRuby based on the high-performance Vert.x - <AUTHOR> https://github.com/isaiah/jubilee
<comment><USER2> This is awesome! I would love to see some benchmarks compared to say, Puma. I'm a huge fan of Vert.x and I love this!

Edit: The demo chat application looks totally awesome! [http://22.214.171.124:8080/](http://188.8.131.52:8080/)

<comment><USER3> warning: there is no script escaping so someone malicious could redirect you to other sites, etc. use with care.

<comment><USER2> Thanks Ryan :)

</comment></comment></comment><comment><USER4> I am planning a big ruby benchmarking blog post in the next week or so. I will definitely add Jubilee to the existing list of rack servers to test with!!!

<comment><USER4> Right now I plan on testing rails, sinatra, cuba, plain rack, probably the frameworks previously benchmarked here: [https://github.com/luislavena/bench- micro](https://github.com/luislavena/bench-micro)

I plan on benchmarking on thin, unicorn, puma, WEBrick, torquebox 3, torqbox (torquebox 4), trinidad, passenger, and I guess now Jubilee.

I was also thinking of doing some EventMachine based stuff like goliath and whatever else I can find in that space.

From my early benchmarks last weekend torqbox is the fastest and pure rack is a lot faster than sinatra or rails. Sinatra is not nearly as fast as I thought it was compared to pure rack. A simple thin server running ruby 1.9 got about 1500 req/sec for hello world using Sinatra. Torqbox and jruby brought that to about 5000 req/sec. Plain rack was about 6500 req/sec on ruby 1.9 and thin and on torqbox it was 10,250 req/sec. For reference, my golang hello world was getting 10,500 req/sec.

I'm very curious where Jubilee will land in that mix.

<comment><USER5> One more ruby framework that might be interesting to test would be grape. [https://github.com/intridea/grape](https://github.com/intridea/grape) Thanks for the work you've done with bench-micro. I was not aware of all of those frameworks.

<comment><USER4> I can't take credit for bench-micro, but I was also really excited when I found it. And yes I'll add grape to the list.

</comment></comment></comment></comment><comment><USER6> Anyone willing to craft a Jubilee test implementation for us [1]? It would be nice to see the Torqbox versus Jubilee grudge match (which should echo the Undertow vs Netty title fight).

[1] [https://github.com/TechEmpower/FrameworkBenchmarks](https://github.com/TechEmpower/FrameworkBenchmarks)

<comment><USER7> Since both Jubilee and TorqBox are easy to install, I did a quick test of both on my machine with the TechEmpower JSON app to get a feel for the relative performance - [https://gist.github.com/bbrowning/8244516](https://gist.github.com/bbrowning/8244516)

My laptop gets 19k req/s with Jubilee and 118k req/s with TorqBox on the same Rack app. While Java on Vertx does fare very well in benchmarks, it's incorrect to assume this directly translates to other languages and frameworks written on top of Vertx also having the same high performance.

<comment><USER8> I guess you didn't warm up the JVM before running the tests, since the Jubilee/Vert.x stack is more heavy than the undertow counterpart, it takes longer for the JVM to apply the optimisations. I also did some benchmarks for Torqbox and Jubilee, you can find the results here: [https://github.com/isaiah/jubilee/wiki/Benchmarks-against- ot...](https://github.com/isaiah/jubilee/wiki/Benchmarks-against-other-jruby- commandline-webservers)

Torqbox won the rack test, and Jubilee out performed in the rails one.

<comment><USER7> I did warm up the JVMs, actually. Those Rails numbers are far too low for TorqBox. Perhaps the best thing to do is add this to the techempower benchmark suite so a 3rd party can run and present the results.

</comment></comment></comment></comment><comment><USER9> Looks awesome. Any rails or Sinatra benchmarks ?

<comment><USER8> They are, you can find them here [https://github.com/isaiah/jubilee/wiki/Benchmarks-against- ot...](https://github.com/isaiah/jubilee/wiki/Benchmarks-against-other-jruby- commandline-webservers)

</comment></comment><comment><USER10> How does this compare to Torquebox? When would you use one over the other?</comment>


Iran to Permanently Suspend Gmail - <AUTHOR> http://online.wsj.com/article/SB10001424052748704140104575057621649270154.html <comment><USER2> It does say, "Google Inc.'s email services" - would that include Google Apps (free, pro) too? That sure would suck ...</comment>


Office Depot computer scans gave fake results - <AUTHOR> https://www.consumer.ftc.gov/blog/2019/03/office-depot-computer-scans-gave-fake-results <comment><USER4> I don't understand this... If I as an individual did the same actions, I would be charged with fraud. I might even serve time in prison for it.

In this company, someone up the chain of command knew they were doing this. Someone at some point was presented with "we'll give them fake scan results to upsell our services" and said "yes".

Why is that person not being charged with fraud, just like I would have been? What makes it just a fine and a slap in the wrist just because they're a big company?

<comment><USER5> Smart modern companies arrange it so that upper management never has that sort of moment. They break the law by setting up perfectly legal incentives and requirements that just happen, by their combined effects, to encourage or even require the minions to break the law. At no point is this ever acknowledged, and there is almost always a clear written policy stating that employees are expected to obey all relevant laws and regulations. This ensures that, when systematic fraud like this is uncovered, there is nobody to take responsibility and nobody has to go to jail, or at least nobody who matters.

<comment><USER6> The ability to make accountability disappear seems to be one of the greatest tricks we've learned in modern society. You hit the nail on the head, this idea of setting an environment where criminal behavior is emergent is a great trick. If you do it right and the emergent behavior is revealed, you will always have the defense of "I did not intend for this to happen," deferring blame to complexity and other things outside one's control. Is there a handbook or something that outlines these types of tactics?

<comment><USER7> I don't think it is all that modern - see the infamous "rid me of this turbulent priest". As for a handbook likely not as it would be what turns a perfect crime to a convictible one.

<comment><USER6> In the old days a master was responsible for those under him. People were owned, they were not viewed as people with their own agency. Anything bad they did was treated as a sign that their master failed in disciplining them properly. With the increasing complexity of organizations, this idea of a high level boss bearing the entire responsibility for all of his underlings becomes unreasonable. We also have a different view of individuality now -- this particular development is modern. So I attribute this disappearing act of accountability to the increasing complexity of things and perhaps too much faith in individual autonomy. But I agree that people have always naturally tried to make accountability disappear, it's just that we are really really good at it now and the world is often too complicated to come to the bottom of any matter efficiently.

<comment><USER8> If organizations are too complex to hold someone accountable for their actions, then perhaps those organizations are too complex to allow to exist.

<comment><USER7> Good in principles for avoiding self creation of abusable situations but I'm not sure about in practice.

The problem is complexity creep really and there is little serious effort in "code maintenance". The law itself demonstrates such problems. The Justinian Code was one example of a famously successful refactoring and ironically its creator despite his talent was also very corrupt.

One ancient solution which probably wouldn't scale well with needed complexity was "reading of the laws" \- a periodic reading aloud of all laws on the books and if any were forgotten and went unobjected to they were automatically repealed as essentially irrelevant.

Just hard limiting complexity isn't a very good solution given increased complexity of the world and scale it often ammounts to "if I can't understand it ban it". It is populistic and anti-intellectual and a bit of a meme - <USER2> what can be easily understood is better and what can't is worse. Except reality doesn't work that way - the main reason why we bother with extra complexity and difficult to understand fields is because it works better.

Needless complexity may be a good concept to define abusability but defining it is tricky just like pinning down Hollywood accounting - where do you formally draw the line between overmarketing and intentionally torpedoing profit margins without proof of intent?

<comment><USER9> Maybe no hard cap, but a soft one imposed by way of criminal liability up the chain for a pattern of illegal behavior at the bottom, even where the higher- ups didn't know and purportedly didn't intend it. Complexity and missing accountability and controls is then a direct personal threat to decision makers. Of course, we'd probably get bigger cover-ups.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> AHAHAHAHA!

About time. One of my first tech jobs was with Office Depot, where I was hired on as the technology lead, thinking that I was going to be sharing my 2008 era knowledge. I still remember feeling excited and sharing with the store my first laptop sale, explaining how I was able to sell a Windows Vista Basic machine with a copy of Windows XP and a stick of memory. My boss was quick to tell me that they don't make any money on that stuff and selling high end items with the amount of time that I spent doing that sale was actually hurting the store. So I could either lose my job or sell extended warranties and services, and earn 5-10 dollars a sale. I was 20 years old, wanted a new iPhone, and was living with my parents, so my path was pretty clear.

At Office Depot, we had two kinds of warranties, either a "Kit" or a stand alone warranties. With services, we had the "make your computer faster" and "so you just bought this pos, lets make it faster". With warranties, I went straight for the scare tactics, such as your printer ink cartridges could leak all over over or the new chair you bought could have a castor leak grease, both of these were not covered under the normal warranty, but for 25-100 dollars, you could be protected from the unpredictable. With services, we just put your new computer on a cabinet where we ran a flash program that showed "vulnerabilities", and for 100 dollars, we could patch up this machine that would have been hacked to shreds by the Chinese if it were not for us brave souls.

I made two grand that month and was given an award by the Office Depot district manager. I felt like shit too. I was able to get my conscience back after helping people under the table when they bought one of our bullshit comfort blankets and wouldn't anything other than the shredder kit - <USER3> included a bottle of literal synthetic snake oil.

<comment><USER11> Thanks for sharing that story. Although I'm a little surprised that you eased your conscience by (IIUC) committing tax fraud.

<comment><USER10> It was all for free.

<comment><USER11> > It was all for free.

Awesome. You used the term "under the table", which I've always understood to mean a cash transaction that won't be reported in tax filings.

<comment><USER12> 'Under the table' means 'out of sight'. It is used to indicate money changing hands but that's not the only use.

<comment><USER13> Every single time I've heard "under the table" it means "without documentation" and is used in the sense of not paying taxes.

</comment></comment></comment></comment></comment></comment><comment><USER14> Office Depot, Staples, Office Max : These stores need to die. I've never felt worse by stepping into these stores without some clerk coming up to me about up selling this kind a bullshit.

They're old relics that need to die like Sears did. They're not innovating, they're getting desperate as we've seen RadioShack in early 2000's leading up to its bankruptcy in 2015.

Furthermore, they pay poorly to their employees, and there is a whole bunch of toxicity in there. Best Buy was on its way on the same path but they've saved themselves by a narrow margin. I still despise their "Geek Squad". They take advantage of uninformed consumers and it's sleezy. It makes me angry just thinking about it.

The leaders and executives that run these businesses are completely and utterly out of touch with their core business values, innovation and having a vision for the company. Spineless bozos.

<comment><USER15> I've never had a good experience in Staples. I really try. Every time I go in I think it will be different. It never is. I don't know why I do it. They're just really close and handy for those odd things. It just never ends well. The last time i went in was for pens. It ended with me arguing with a security guard who decided i'd been looking at the pens too long. He stood there yelling at me while I purchased my pens, threatening to call the police...i'm still not sure why...and the cashier was trying his best to be polite and completely uninvolved.

<comment><USER16> Sometimes it feels like you can have someone who takes their job extremely seriously to a fault or someone who couldn't care less and lets everything bad happen, no way to have someone right in the Goldilocks zone.

<comment><USER15> Yeah, pretty sure that's was what it was. It was pretty quiet in there. As soon as I walked in the security guard started following me. He asked me immediately what I was doing there and what I wanted...I said pens, so he escorted me to the pens aisle,.stood there for a bit getting impatient before telling me to hurry up. I said straight up to him that if he was suspicious of me and wanted to watch me fine, but not to sit there and tell me to hurry up. That was when he started yelling.

He never really did anything just stood there and yelled. I just kind of ignored him at that point. I found the pens I wanted and he followed me back to the register. That was when the threats of calling the cops came.

I dunno, I could understand if I'd looked or acted shady or something. But I was on my way home from work, dressed reasonably, shaved and groomed and all that.

<comment><USER17> I would have told him to call the cops honestly. What are they going to do? You've done nothing wrong, in fact, you're the victim of harassment. In a just world they would ream out the idiot security guard for wasting police resources.

<comment><USER15> I did...several times and laughed at him and asked what he planned to tell them i'd done. By that point, i was feeling fairly adversarial and was in the process of purchasing the needed pens, so i stopped giving a shit. He didn't have an answer for that but he pulled his phone out and everything just, didn't dial for some reason.

I even told him i'd wait for them to show up and we could all have a nice talk. By that point, the cashier had finished, he'd made no move to call so i left. He kinda followed me to the door and just stood there while i walked away.

I feel kinda bad for the cashier. He was young, looked like a highschool student or something. He looked really uncomfortable and really tried his best to be completely uninvolved. I was extremely polite with him. Told him to have a good evening and thanked him profusely for the pens. This seemed to anger the security guard more.

</comment></comment></comment></comment></comment></comment><comment><USER18> I feel that the FTC's story leaves a few things to be desired. Here's a timeline:

1) Circa 2009, scammy "PC Diagnosis" scam starts.

2) Feb 2012, class action filed against Support.com for scareware up-selling a subscription service. [1]

3) Nov 2016, two TV affiliates run similar tests finding they're ripping off customers. [2]

4) Nov 2016, Office Depot discontinues the scam.

[1] [https://en.wikipedia.org/wiki/Support.com](https://en.wikipedia.org/wiki/Support.com)

[2] [https://www.pcmag.com/news/349821/office-depot-caught- sellin...](https://www.pcmag.com/news/349821/office-depot-caught-selling- fixes-for-non-existent-pc-prob)

I feel like this could use a postmortem more than what feels like a congratulatory press release.

I'd be curious to know if there were complaints filed with the FTC prior to November 2016.

</comment><comment><USER19> I used to work for Support.com in a senior technical role during part this window of time, but not directly on the Office Depot tenant.

Support.com followed similar practices of other scanning software like MBAM (MalwareBytes) and SAS (Super Anti Spyware) at the time. In fact, Support.com acquired Super Anti Spyware.

The big problems were:

a) their staff is incredibly poorly trained, mostly because they barely pay above minimum wage to these workers, their training barely covers more than the UI of their tools and they're pushed on resolution time. These workers don't have much skill and don't have much reason to care. They basically don't know the difference between spyware/adware and infections.

b) Office Depot was upselling this on brand new computers which are bundled with loads of adware. Effectively they were telling customers that their brand new computers were infected.

Support.com is an incredibly stupid company who repeatedly hired their business development people from failed companies (ex-Radio Shack, CompUSA and Circuit City hires were the rule, not the exception). That said, they weren't the only bad actor here.

Also, nobody should be surprised that this company was founded by Mark Pincus of Zynga fame.

</comment><comment><USER20> This brings to mind Home Depot's free "water tests" hanging at the entry to every store, emblazoned with the Home Depot logo. Free water test! Make sure what your family drinks and bathes in and cooks with is safe! they say.

The reality is that everyone gets an urgent call from a sales rep about some vague characteristics of your water that urgently need to be corrected by one of their $7,000 water softening systems that nobody actually needs. The salespeople are relentless, they call daily, and insist on finding a time when "both spouses" will be home to listen to their pitch. I haven't been subjected to that but I'm sure it doubles their chances of one person caving to their high pressure sales tactics.

When I first came across this, I was stunned that a big name retailer with a lot to lose would do something so shady and unethical. I wonder if they even actually do test the water and would notice or tell you if it was actually loaded with lead or something else.

<comment><USER21> I have never noticed that, but yeah that sounds sketchy.

(Relevant to your post, if you actually want a water test (in the US), check with your state's cooperative extension -- they probably offer something unlikely to be associated with salesmen, e.g. Virginia: [https://ext.vt.edu/food-health/home-water- quality.html](https://ext.vt.edu/food-health/home-water-quality.html) )

</comment></comment><comment><USER22> The actual complaint: [https://www.ftc.gov/system/files/documents/cases/office_depo...](https://www.ftc.gov/system/files/documents/cases/office_depot_complaint_3-27-19.pdf)

</comment><comment><USER23> A lot of big brands launder their shady services through secondary service providers, or indirectly profit off of shady third party service providers.

<comment><USER24> Yep. I worked at a toys r us in high school, and can say that selling toys was a secondary priority. A sales associates main purpose was to sell extended warranties offered through some bullshit 3rd party.

I don't know how prevalent this was, but I was trained to lie to customers in order to sell them. I was told the warranty would cover any damage to products at all, and 5 months in I finally read the fine print and realized I'd been used to scam hundreds of people. Quit shortly after.

</comment></comment><comment><USER25> Can anybody speak to why some of these "deceptive claims" settlements end up as a settlement with the FTC, which collects and disperses the funds in the form of refunds, while others end up as a class action settlement, where some private party sues on behalf of a class?

In a standard class action lawsuit, the lawyers for the plaintiff (if successful) get a pretty nice cut of the settlement, and the remainder is dispersed to class members.

But if the settlement is with the FTC, does it get its own cut, or does the entire settlement amount go out to class members?

</comment><comment><USER26> Sears automotive service all over again.

<comment><USER27> What did they do?

<comment><USER26> Unnecessary repairs.

[https://www.nytimes.com/1992/06/12/business/accusation-of- fr...](https://www.nytimes.com/1992/06/12/business/accusation-of-fraud-at- sears.html)

</comment></comment></comment><comment><USER28> _" Many of us would gladly take advantage of a free computer tune-up from a big-name retailer. We wouldn't suspect the tune-up might be a tech support scam."_

Funny, that's precisely what I would suspect it was.

</comment><comment><USER24> How likely do you think it is that the settlement amount is less than the money made running this scam?

<comment><USER29> Well the article said that customers were charged 'up to $300'. Let's be conservative and say customers were charged $150 on average. $35 million/$150 = 233,333. So the question is, did they scam more than 233,333 people? I'd bet so.

<comment><USER30> The question is what percent of total scams were caught and fined, since for the people committing them, it's a total fines / total profit across all scams calculation. Additionally, the fines come out of company money, and presumably, executives have a network to fall back on so losing their job isn't likely an issue.

</comment></comment></comment><comment><USER31> This is similar to the VW emissions scandal in reverse.

</comment><comment><USER32> Welcome to running Windows on your computer. What a steaming pile of garbage software is that companies can defraud people like this.

<comment><USER33> I'm not a Windows user, but pretending that retailers aren't also ripping off Mac users using similar tactics is just dishonest.

<comment><USER34> A big selling point of this scam is the "tune-up" to disable the loads of bundled crapware that comes preinstalled from OEMs. How much bundled crapware comes preloaded in a Mac?

<comment><USER35> itunes?

<comment><USER32> Not funny.

<comment><USER35> Yes, it's just sad.

<comment><USER32> No it isn't. You're just bashing itunes because you believe it's good to bash Apple Computer. That's just dumb, not to mention a huge waste of time, time which you will never get back.

<comment><USER35> No, I've used itunes. It's sad.

<comment><USER32> I've used them too. Clunky but they worked just fine, the music got transported between my Apple laptop and my Apple telephone. What's the problem?

<comment><USER35> I haven't used any recent versions for obvious reasons but the interface was horrific and it had all kinds of odd connection issues.

I was only using it to help someone who couldn't work out how to do something really basic, just get music from their PC to their phone or whatever.

It felt to me like Apple was deliberately making things overly difficult to force less-patient people into their ecosystem of paying for songs on every device separately and not downloading drm-free mp3s that you actually own. This was a long time ago.

I was left thinking that there's no way a billion-dollar company could put out something this unintuitive and shitty unless they had an ulterior motive.

I forget the details but it was super painful and I will lead a happier life if I never have to deal with it again.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER36> It seems absolutely insane that the FTC is going after Office Depot for this. . . .and not $100B+ illegal collusory and monopolistic activity of Google's Doubleclick server, AdWords sales, and AdExchange intermediation businesses. It's like the FTC has time traveled to 2019 from 1959. This can't go on forever.

<comment><USER37> Judging from the downvotes you need to be more clear why you believe their activity (which specifically?) is illegal and monopolistic

<comment><USER38> Judging from the downvotes, one might do well to learn the concept of "on topic". I don't give a shit about Google, but whataboutism is a sure fire way to earn some down arrows.</comment></comment></comment>


What got you here on Apple, won't get you there on Android - <AUTHOR> http://tomasztunguz.com/2011/04/15/what-got-you-here-on-apple-wont-get-you-there-on-android/ <comment><USER2> uh, what?

>No need to connect the phone to a PC or to fire up the Android Market. In contrast, Apple uses iTunes, a client application on the PC, to install applications. The extra friction in that process reduces app installs and trials, limiting the effectiveness of web-based app distribution.

I don't know about you, but the "open the Appstore app" from a link on my phone sounds identical.

I don't think I've ever bought an app via iTunes on the desktop. You click a link on the web, which opens to the install page in the iOS appstore, and click install. What about that process is cumbersome?

This article doesn't feel like it issues real advice for android development for iOS devs (the purported aim) nor does it feel the author gets iOS by the basic misunderstanding of the common web marketing funnel for iOS apps.

<comment><USER3> > I don't know about you, but the "open the Appstore app" from a link on my > phone sounds identical.

It's not identical, because he was talking about browsing the Market on PC (or tablet, if you must) and installing apps from there. All you need is to login into Android Market with the same account as you are using for the device and you can push apps to your phone. No cable necessary.

<comment><USER4> To be fair, of the last three years of owning an iPhone, I can only remember two or three instances where I was reading about an app and had an impulse to purchase it right then and there.

I do see/understand the advantage of having a deep-link on their homepage allowing me to purchase the app without having to launch iTunes (or the App store on my iPhone), but of the few instances (Camera+ was one and I forget the others) I didn't find the "friction" of having to launch the app store on my device much of an issue.

On that note, purchasing apps is more of a "casual" thing for me. When I'm interested in buying an app, it's usually done in "batches". And it's usually done when I've got nothing better to do (before bed, on the train, etc.) so settings where browsing the app store on the phone is the most comfortable.

<comment><USER5> Is it possible that your habits are partially trained by the device's strengths? It's easy to install from the app store so that's what you do. Don't you think that if you could install apps from the web you might do so after getting used to the feature?

It's a new feature for Android, so this article is really just hitting on how to market to users. It's saying play to Android's strengths, don't try to market the same way you market on iOS (which involves getting on the featured app list). The Market is much more algorithm driven in it's rankings so that approach doesn't work. But if you can spread your app in a viral manner on twitter and facebook with a link straight to purchase/download, how can you say that's _not_ good advice?

<comment><USER2> >It's a new feature for Android,

Oh, so by android he means, 5% of android owners. Sorry, that's not a great thing to base a strategy around and it would be nice to clarify the different methods iOS has and the fact that this is only in Android W.Y.Z and only 3 phones have that delivery mechanism yet.

(Don't think I am not POed that apple is again on multiple versions. Why are they lagging the Verizon iOS version).

<comment><USER3> New as "since 2.2", which means something over 2/3 of android users can use this feature.

<comment><USER5> Actually I meant new as in since January. But yes, it works on most Android phones. I meant new as in people aren't used to using it yet. It's something I'm sure a lot of Android owners aren't aware they can do. Which might be an advantage for those developers who do use it in marketing.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> One thing I've found painfully missing, as an app developer, is any sort of analytics around the purchase flow of apps in the App Store.

For example, I have no idea how many people visited my app page from their iPhone, from the web deep link, from iTunes and I don't know what % convert. As such, I can't do any A/B testing on images/text content/price, etc (actually I could but it be indirect) on the actual purchase pages.</comment>


10 equity free acceleration programs with open applications - <AUTHOR> https://www.indiehackers.com/forum/10-equity-free-acceleration-programs-with-open-applications-79ce05362d?commentId=-LQsc3b_Jwp_cKUlARgD <comment><USER2> Thanks for submitting the post. I am the author of this post. I am happy to answer any questions you may have</comment>


Has MacHeist been hacked? - <AUTHOR>

Looks like MacHeist.com has been hacked or they're playing pranks on us (not linked for obvious reasons).<p>Edit: here's a screenshot: https://dl.dropboxusercontent.com/u/2119748/Screenshots/Bildschirmfoto%202015-01-18%20um%2019.29.13.png <comment><USER2> Google Translate on the text:

"We are down to you. Your pain and sorrow is our great pleasure . All your base are belong to us.".

The title of the site is also set to "Mac Robbery".

Same thing is on their Twitter account.

I don't think this is a prank - they were in the middle of a bundle sale which should have been running for the rest of today.

The background and the picture of Kim don't appear to exist anywhere else on the web according to GIS.

</comment><comment><USER3> doesn't seem like a real hack to me...

type killOverlay(); in console to get rid of the game and allow access to the purchase page.

</comment><comment><USER4> Whoa, it does look like a real heist. I don't know any korean, but ok dol bi bim bap is delicious.

<comment><USER5> [http://macheist.com/order/nano3/RBJZGWRR5A01988D1/](http://macheist.com/order/nano3/RBJZGWRR5A01988D1/)

</comment></comment><comment><USER6> seems so.

[https://twitter.com/MacHeist/status/556879808840630274](https://twitter.com/MacHeist/status/556879808840630274)</comment>


Picking Apart the Crashing iOS String - <AUTHOR> https://manishearth.github.io/blog/2018/02/15/picking-apart-the-crashing-ios-string/ <comment><USER2> What I'm really curious about is how bugs/errors in the iOS typesetting algorithm result in a crash, rather than just wrong or nonsense typesetting -- and how the last time this happened, they appearently just fixed the specific case, but not the ability of bugs/errors in the typesetting algorithm to crash the system.

I am _not_ surprised there will be errors/bugs in the typesetting algorithm, as the OP demonstrates, this stuff is extraordinarily complicated to do for every language/all of unicode. But if you have something so complicated that bugs/errors aren't surprising -- you'd think you'd want to make sure they didn't cause hard crashes.

<comment><USER3> The crash seems to be in CoreText. CoreText is embedded/linked in Messages, Spotlight, Springboard, etc. CoreText is written in C.

The fix would be to rewrite CoreText in a memory safe language like Swift. This would be "hard". Or put CoreText in an XPC container. This would both be "hard" and result in terrible performance.

For more details on how hard C, memory management, systems programming, and operating system development is please refer to your local copy of Modern Operating Systems by Andy Tannenbaum.

<comment><USER4> I'm guessing C is how they get the performance they need. Re-writing in Obj-C or Swift would likely have speed tradeoffs.

<comment><USER5> C code only got fast thanks to 40 years of optimizer improvements, taking advantage of UB.

<comment><USER6> Huh? C is fast (compared to Swift) because using it doesn't imply sprinkling lots of sugar (like ARC) into the resulting machine code.

Simpler languages like Fortran can turn into even faster code than a C implementation. UB optimizations aren't that relevant for real-world performance.

<comment><USER5> Code generated by C compilers is fast in 2018.

Code generated by C compilers for C64, Spectrum, Atari, Atari ST, Amiga, Mac, CP/M, MS-DOS, Windows 3.x, Nintendo, MegaDrive,... systems meant many times the code would be 80% like this:

        void some_func(/* params */) {
          asm {
             /* actual "C" code as inline Assembly */
          }
       }

Lots of Swift sugar also gets optimized away, and there is plenty of room to improvement.

The code that current C compilers don't generate, many times is related to taking advantage of UB.

They also generate extra code for handling stuff like floating point emulation though.

Just as an example, IBM did their whole RISC research using PL/8, including an OS and optimizing compiler using an architecture similar to what LLVM uses.

They only bothered with C, after making the business case that RISC would be a good platform for UNIX workstations.

<comment><USER6> Why bring these ancient home computer platforms into play? Those were totally different to program for. Why not compare a C compiler from 1998 to one from 2018, on x86 (no SSE of course)? C compilers _have_ gotten better, but not spectacularly.

>> The code that current C compilers don't generate, many times is related to taking advantage of UB

Compilers are really smart in optimizing things that aren't relevant to the real world.

For example, this code would reduce to "return 32" in most modern compilers:

      int return32(){
        int x=1;
        for (int i=0; i<5; i++){
          x*=2;
        }
        return x;
      }

Does that make impact in real-world code? Almost certainly not, it's a contrived case. Most UB cases fall into the same category.

>> They also generate extra code for handling stuff like floating point emulation though.

Not necessarily.

<comment><USER5> > wWhy bring these ancient home computer platforms into play? Those were > totally different to program for. Why not compare a C compiler from 1998 to > one from 2018, on x86 (no SSE of course)? C compilers have gotten better, > but not spectacularly.

To clear up the myth among young generations that C compilers always generated fast code, regardless of the platform.

As for something more modern, in 1998, C code quality was still at a similar level to other system's languages, before they started to fade away thanks to the increase in UNIX, Linux and BSD adoption

For example, given that Delphi and C++ Builder share the same backend, their generated code was quite similar, even if it would require disabling some of the Delphi's security checks.

> Not necessarily.

Sure, it all depends on the CPU being targeted.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> My guess would be that it's some aspect of _measuring_ the text that is causing the crash: when you click in an editable text box, there is code to track down where the cursor should be placed. This is done by measuring various sub-strings of the whole line.

If measuring the sub-strings gives surprising results (sub-strings being visibly longer for example), this could cause the algorithm to fail in any number of interesting ways: for example if a binary search is used to locate the cursor position, it could break the invariants of the binary search.

<comment><AUTHOR> Well, the crash occurs for Spotlight without me clicking anything or having any cursors anywhere.

But yeah, this is one of my theories about it. One of the previous crashes had to do with an Arabic string which got _longer_ when you truncated it, which made snipping it to display in a notification have bugs.

It's interesting to see it's causing a _segfault_ , i'd expect measuring bugs to cause clean assertions or shitty rendering. Which is why I'm also wondering if it's actually a disagreement on the number of "characters" in the rendered things.

> If measuring the sub-strings gives surprising results (sub-strings being > visibly longer for example), this could cause the algorithm to fail in any > number of interesting ways: for example if a binary search is used to locate > the cursor position, it could break the invariants of the binary search.

Cursor positions are based off of grapheme clusters -- there's a defined algorithm for that. Though different parts of the system may disagree on the specifics of the algorithm causing such a crash.

However, that doesn't gel with the fact that it's only specific consonants causing this, all versions of UAX 29 do not consider any differences between Indic consonants for a single given script.

<comment><USER8> UAX 29 doesn't really describe how to handle Indic text very well.

[http://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries](http://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries)

> Grapheme clusters can be tailored to meet further requirements. Such > tailoring is permitted, but the possible rules are outside of the scope of > this document. One example of such a tailoring would be for the aksaras, or > orthographic syllables, used in many Indic scripts. Aksaras usually consist > of a consonant, sometimes with an inherent vowel and sometimes followed by > an explicit, dependent vowel whose rendering may end up on any side of the > consonant letter base. Extended grapheme clusters include such simple > combinations.

> However, aksaras may also include one or more additional prefixed > consonants, typically with a virama (halant) character between each pair of > consonants in the sequence. Such consonant cluster aksaras are not > incorporated into the default rules for extended grapheme clusters, in part > because not all such sequences are considered to be single "characters" by > users. Indic scripts vary considerably in how they handle the rendering of > such aksaras—in some cases stacking them up into combined forms known as > consonant conjuncts, and in other cases stringing them out horizontally, > with visible renditions of the halant on each consonant in the sequence. > There is even greater variability in how the typical liquid consonants (or > "medials"), ya, ra, la, and wa, are handled for display in combinations in > aksaras. So tailorings for aksaras may need to be script-, language-, font-, > or context-specific to be useful.

For example, in Chrome, we added an extra rule to not allow grapheme clusters to be split after Indic virama characters, but later had to modify the rule to not apply to Tamil viramas:

[https://chromium- review.googlesource.com/c/chromium/src/+/84...](https://chromium- review.googlesource.com/c/chromium/src/+/843461)

I don't know the exact cause of this crash, but I can see why Apple might be running into trouble with their logic for these languages. I suspect their algorithm for computing grapheme clusters has a bug causing an inconsistency somewhere.

<comment><AUTHOR> Yeah, I'm aware, I've been arguing for UAX 29 to handle consonant clusters for a while. The current draft has handling for it: [http://www.unicode.org/reports/tr29/tr29-32.html#Virama](http://www.unicode.org/reports/tr29/tr29-32.html#Virama)

However, given that some Brahmic scripts prefer explicit viramas (Malyalam, also Thai I think), this will probably be restricted to Brahmic scripts where joining is always preferred (even if not possible).

I'd been testing UAX 29 stuff out before and Apple seems to follow the spec. For example, Chrome and Firefox seem to do special handling for e.g. flag emoji (distinguishing between regional indicator pairs that render as a flag vs those which don't -- i.e the ones which don't correspond to a country code). But Apple follows the spec rigidly. In particular it does not consider joined consonants to form a single EGC.

I could be wrong on that, though.

<comment><USER9> Nit: it's "Malayalam". I noticed the same typo in your blog post.

<comment><AUTHOR> lol I keep making this mistake. Thanks.

</comment></comment></comment></comment></comment></comment><comment><USER10> I cannot trigger this crash on iOS 10.3.2, despite repeated attempts. I can reliably crash friends' phones by iMessage for all friends on iOS 11.

That suggests to me that Apple made changes to CoreText, and _did not perform adequate regression testing._

All software has bugs. I understand that. But I suspect a large part of power users' and developers' growing frustration with Apple is that they keep introducing severe, kernel-panicking, root-exposing bugs in software that previously did not exhibit the problematic behavior.

Honestly, how do you _not_ have a stringent regression testing requirement for changes to the "Core" of the operating system?

<comment><USER11> > Honestly, how do you not have a stringent regression testing requirement for > changes to the "Core" of the operating system?

By not managing expectations and deadlines properly. Especially if schedules are overriden from a manager who is not aware of the ramifications of changing something in the core.

<comment><USER12> And this is about to change, according to some recent news: [https://www.bloomberg.com/news/articles/2018-02-12/how- apple...](https://www.bloomberg.com/news/articles/2018-02-12/how-apple-plans- to-root-out-bugs-revamp-iphone-software)

</comment></comment></comment><comment><USER13> Very interesting article. It gives a bit more perspective to the problem than the simplistic view that iOS has a problem displaying a certain character onscreen.

This particular bug shows the problem with multibyte characters (terminology may be wrong, perhaps multi glyph is better) where certain parts of the character become left or right associative based on context.

<comment><AUTHOR> You want "multi-codepoint graphemes" probably. Or really "things involving combining characters". There isn't really a term for this.

<comment><USER14> I believe the Unicode term is "grapheme cluster".

<comment><AUTHOR> Not exactly, no.

क्र is currently not a grapheme cluster, for example (there is a proposed change to UAX 29 to make it such, but that doesn't handle all such cases).

The strings in this situation are three grapheme clusters according to the spec even though they usually render as a single "thingy".

</comment></comment></comment></comment><comment><USER15> Not directly related to the crash, but I have a question about Telugu and similar scripts: How do their speakers think about the structure of the script? Do they consider each vowel and consonant a separate "thing" that just happens to get written as a complex grapheme, or is the grapheme the unit you think about and it just happens to be made up of smaller parts? I.e [https://en.wikipedia.org/wiki/Telugu_script#Consonant_Conjun...](https://en.wikipedia.org/wiki/Telugu_script#Consonant_Conjuncts)

Also, do you learn the large number of graphemes separately? Or are they the "obvious" way to write the consonant and vowel? Or is there a set of rules you learn?

<comment><AUTHOR> I can answer your question for Devanagari:

\- You normally think of clusters as single "letters". The word for them in Marathi is "joined letter". This notion of "letter" may not be totally in line with what English speakers would expect.

\- You still think of clusters as having component parts that make it up. However, क्ष/ज्ञ and sometimes त्र are thought of as their own "fundamental" consonants even though they're clusters. I think folks think of things like क्र as being both -- a letter of its own, that is built up from component letters.

\- Most of the clusters in Devanagari are predictable. So for any given pair you usually know how to make a "half form" for the first one and join it on, or you know how to stack them. Usually whilst reading it's obvious because you see the components; and whilst writing it's usually fine to try what makes sense.

\- For unpredictable clusters, you just eventually get used to them. No different from learning that some words are spelled weirdly in English, really. Though I very much dislike ह्म , ह्य, and द्य since they're kinda confusing.

I think Bengali has a lot more unpredictable conjuncts; I stumbled across this a lot when I tried to learn the script a year ago. I suspect folks just get used to those.

<comment><USER16> As someone who can read both Devanagari and English/Latin script, I'm just curious, when you read Devanagari does the text size need to be larger for good comprehension?

There seems more subtlety with the word structure, like tiny little flicks which seem to have significant meaning. While Latin-like script has characters like the comma/full-stop, and modifiers like the dot on the i, these are far rarer than Devanagari's modifiers from what I have seen.

Another related question is, because Devanagari's information density seems higher, does that mean shorter text for the equivalent information?

PS - Sorry if anything I said was offensive, that wasn't my intent. I am just an ignorant idiot wanting to learn someone's experience with a different language script, nothing more.

<comment><AUTHOR> Not really, I can read at normal text sizes. But it is somewhat annoying (much like how tiny English can be readable but annoying to read) and used to have my default font size bumped up by one in my browser. I currently have it bumped up quite a bit for Chinese because I _really_ have trouble with the "tiny little flicks" problem in Chinese.

The consonants of Devanagari are easy to tell apart; they are pretty different. In most cases the "similar" ones are basically with an extra line (प/ष, ब/व) or with a little loop (य/थ, ट/ढ) . (The line/loop has no semantic meaning, these letters are just random letters that look similar) . The only super annoying one is घ vs ध -- the thing up top is a loop in the second one, but depending on the font/handwriting can be rather unclear.

The vowels are also easy to tell apart. There are 12 main ones, and they're made up from some really basic components which are quite distinguishable.

So you can easily distinguish consonant+vowel combos.

Consonant clusters can get tricky, like I said there are a bunch of ambiguous ones. Fortunately you end up realizing which is which and then it's nbd. But like, द्म and ह्म can be infuriatingly similar and you just get it from context.

Bear in mind, at one stage you start sight-reading words, so the actual details of the word matter less.

> Another related question is, because Devanagari's information density seems > higher, does that mean shorter text for the equivalent information?

Visually? Yeah. Words can be really small. But it ends up roughly being the same number of code points (and probably more bytes in UTF-8).

<comment><USER17> > I currently have it bumped up quite a bit for Chinese

It really annoys me when websites/apps keep the same font size for Chinese that they use for English. 8pt Chinese is awful to read.

<comment><AUTHOR> If you use Firefox or Chrome you can change default font sizes in preferences on a per-language basis. You can also change the default font used. It's pretty useful, lets me replace shitty system fonts with better ones and also bump up the size for Chinese.

It does not apply to text using absolute font-sizes however, just text that uses things like font-size:medium (or inherits the document default font size, which is also medium)

</comment></comment></comment></comment></comment></comment><comment><USER18> Fonts are hard. I don't think CoreText is worse than others, most vendors seem to have a history of horrors, and at least it's not rendering fonts in a kernel driver like Windows did(!?) - see for example the Project Zero series of "one font vulnerability to rule them all" \- [https://googleprojectzero.blogspot.com/2015/07/one-font- vuln...](https://googleprojectzero.blogspot.com/2015/07/one-font- vulnerability-to-rule-them-all.html)

</comment><comment><USER19> Has anyone yet traced this to a specific syscall? Seems like the perfect opportunity for whipping up a fuzzer to spit arbitrary unicode into the system and see what else crashes.

<comment><USER20> Would that even be possible on iOS for non Apple employees?

My idea would be just to create a program that continually creates Unicode strings and display them on screen with a pause before creating and displaying the next. Record the screen and see if any thing exciting happens. Would never end, if there was a SETI @ Home style program for it with insentives for running it would be cool.

<comment><USER21> > Would that even be possible on iOS for non Apple employees?

iOS emulator (part of XCode) might be enough.

<comment><USER20> Ah. Forgot that existed for some reason. (Windows/Linux user that gets screwed out of programming for my own phone. Hate that....)

<comment><USER22> Use Hackintosh or a VM.

<comment><USER20> Given that Apple does not design their OS to work on anything but their hardware, the pain I would incur trying to set up either option is just not worth it. Unless someone has published a stable and updated pre-built VM for macOS, it just seems like nothing but trouble.

<comment><USER23> Not so long ago I was pleasantly surprised by how easy it was to setup a Hackintosh VM in VirtualBox --- all I did was create a VM with the default settings, add the all-important SMCDeviceKey, insert a completely stock El Capitan ISO, and it booted up and installed on the first try. All on hardware that was as non-Apple as it gets (a ThinkPad.)

The only thing that I found somewhat confusing and perhaps a bit un-Apple was the fact that the installer would not prompt me to partition and format the HDD first, but was perfectly happy to let me try to select and then fail to install onto the install media itself (with an odd "not enough space" message); I had to use the Disk Utility to do that _before_ going back to the installer. I've always wondered why --- even Windows' installer includes partitioning and formatting as one of its steps.

<comment><USER24> Like because there isn't a single current official device with a user replaceable hard drive.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER25> People interested in this bug may also be interested in "An Introduction to Writing Systems & Unicode." Part 3[1] in particular discusses complex scripts.

[1] [https://r12a.github.io/scripts/tutorial/part3](https://r12a.github.io/scripts/tutorial/part3)

</comment><comment><USER26> I went to the Apple Store in Burlington, MA yesterday (2/16/2018) None of the 'geniuses' there knew about this bug or how to fix it. They reminded me of microsoft drones following a troubleshooting script. 1) Reboot the phone 2) reset the phone 3) do a dfu restore..

After they did this my phone would not recognize its sim card. You see my phone originally had AT&T service. Then I switched to sprint some months back. I guess the dfu restore ended up relocking my phone to AT&T. At least that's what the Apple geniuses said. Then they said I had to go to a sprint store.

This is the first time I was disappointed with Apple's human help. I remember past experiences going in there with a frayed power supply cord - they gave me a new one. On other occasions they replaced my phone when they couldn't fix it. They never spent more than 30 mins trying to fix a problem and always fixed it. Their knowledge was deep. This time their opinions were confabulatory - for example one guy said 'your phone does not have the antennae to work with sprint' EVEN THOUGH I reminded him I walked into the store with a working iPhone using sprint. Another one said that sprint jailbroke my phone and that's how they got it to work. WRONG. Another one said that the phone was 'soft unlocked' and relocked itself after the DFU restore. I felt sad for Apple because I know that's not what they were about.

Then I suggested they replace my phone, the manager lady's eyes bugged out, her voice became stern and said ' There is no scenario where you walk out of here with a different phone'. This is the first time they wasted 5 hours of my time and actually caused me to have more trouble than what I walked in with.

Galaxy here I come. or maybe pixel2

</comment><comment> brian-armstrong The broader question is, I think, how can any textual sequence cause a crash. Text should be regarded very skeptically by the text renderer. What could this be doing that it invokes a crash? Where else is this team not being careful? It reeks of process problems.

<comment><USER27> My question was, why was there not a unit test for this? It seems like it would be trivial to step through every character combination for each language they support and make sure it doesn't cause a crash.

<comment><USER28> Unicode allows for 17 planes, each of 65,536 possible characters (or 'code points'). This gives a total of 1,114,112. This crashing sequence is five characters long.

Your unit tests would have to go through 1.71650179e30 sequences to be guaranteed to catch this one. At a test rate of 1 millisecond per sequence, that's just 4×10^9 × the age of the universe, according to wolfram alpha.

<comment><USER29> > Unicode allows for 17 planes, each of 65,536 possible characters (or 'code > points'). This gives a total of 1,114,112.

Allows for 17 planes, but only small portion of those are actually used. According to Wikipedia[1], currently Unicode has 148944 codepoints + 128k private use ones (which might, or might not make sense to include in unit tests). So your time estimate is off by mere 5 orders of magnitude.

<comment><USER28> (148944 ^ 5) milliseconds to years = 2.324 quadrillion years .

Doesn't really change the result, imho.

</comment></comment></comment></comment></comment><comment><USER30> @Manishearth

Thats a great explanation (though quite a bit of it was too much for me to understand).

The only correlation I can think of, is that the Kannada script keyboard and full support for the script rendering in the UI didn't exist in iOS until iOS 11.0. So it is crashing for Indic scripts that were supported pre iOS 11. Probably Apple tweaked something in iOS 11 for the languages already supported and broke something.

<comment><AUTHOR> Huh, that's an interesting theory.

</comment></comment><comment><USER31> Does anyone have a link to a thorough reverse-engineering of the bug from someone decompiling/source-diving?

I tried replicating it on High Sierra out of curiosity (single text file with the broken character, opened in TextEdit to cause a crash) and noticed that the crash doesn't happen in consistently the same way each time (I got 8 crashes in a calloc call in CoreText's OTL::CoverageBitmap::Reset, 4 crashes in a malloc in Foundation with no CoreText in the stack trace, plus 10 KERN_INVALID_ADDRESS errors from various places, as well as one time it opened successfully with no immediate problems). Seems like a memory corruption error somewhere earlier, but I'm not sure how to figure out where–I tried rooting around in CoreText with Hopper for a bit but didn't get very far.

<comment><AUTHOR> [http://www.cloudscan.me/2018/02/coretext-crash- osx-10133-lld...](http://www.cloudscan.me/2018/02/coretext-crash- osx-10133-lldb-voltron.html)

</comment></comment><comment><USER32> (I should probably try this myself, but…) The equivalent programs on other systems are HarfBuzz (open-source) and Uniscribe / DirectWrite (Windows). Did you consider checking what they do with the equivalent text (presumably they don't crash)?

<comment><USER33> No crashes on Debian harfbuzz.

</comment></comment><comment><USER34> Funny, this is the same person that wrote the new str find functionality in rust 1.24

<comment><AUTHOR> Turns out I like doing unicodey things :)

</comment></comment><comment><USER35> Not sure why I'm not able to trigger this crash on any Apple devices in the office - saw on twitter about how it was messing with iphones even if it was an SSID, unable to replicate here though.

</comment><comment><USER36> Would fuzzing help with this?

</comment><comment><USER37> shoulda used JS

</comment><comment><USER38> Does anyone else think that this could be related to Auto-Correct having problems with the malformed expressions?

<comment><AUTHOR> This happens whenever the system is asked to render text; it doesn't have to be editable.

(it's just easier to trigger in text boxes because you paste and that's it)

<comment><USER38> Oh, gotcha. Yea not sure auto-correct could cause that. I initially read it was only related to text-entry and thought auto-correct was likely since it was affecting multiple apps indicating an OS issue.</comment></comment></comment>


What is Hacker News? - <AUTHOR>

This post is spurred by seeing the Hacker News guidelines this evening: [Moderator: feel free to remove this]
What IS Hacker News?  Is it a social site for startups? Or venture capital?  Is it similar to Slashdot (or was Slashdot once similar)?  Is it a combinator for startups? (No pun intended).  Or is it a more "elite" group of like minded individuals?
I am relative newcomer to the Hacker News scene, being a member for just under a year, but I've gained significant knowledge from those that participate here. I own and manage a well established Internet business, but with regards to Hacker News I struggle to understand who exactly Hacker News is designed for, and targeted to. Frankly, I suffer from an identity crisis at times.
I may need to be content with the understanding that I gain great perspective for my business by reading and participating here, but my curiosity still recommends that I ask this question.
Warm regards,
Lindsay <comment><USER2> Hacker news is designed for and targeted at hackers. In the sense of the word that means people who write code, not people who break into things. Other people with similar tastes also like it.

Since it's run by YC and the initial users were mostly YC founders, there is inevitably a startup spin to the stories that are popular here. In fact the site was originally called Startup News. But it turned out to be boring to have so much of a startup focus, so we changed the name and the focus to be more general.

<comment><USER3> What is a hacker?

A hacker is someone whose appetite for the universe is never quite satisfied. The hacker seeks to understand: himself, others, what surrounds him, the tools he uses, the things he enjoys, how things fit together. The hacker seeks to build: ideas, means, practical applications, businesses, cultural movements. Some build just one, some build them all. The hacker seeks to learn, to experiment, to solve, and to learn again.

The male pronoun above is of course used merely out of grammatical tradition. Hackers are male and female, young and old. Hackers are in Silicon Valley and in the middle of cornfields, they are in industrialized countries and in developing ones, they date back centuries before the term was coined and will exist as long as does the human condition.

I guess that turned into something of a manifesto. But that's what I believe is embodied in the spirit of the hacker.

<comment><USER4> I think what you're describing is a more general class of people. Hackers are the subgroup of such people, who are dealing mostly with computers and writing code.

</comment></comment></comment><comment><USER5> Everyone is here for a different reason. Some people love startups, some love technology, some love programming. Some just like to learn new things.

If you look broadly at the topics, discussions and members I think it's somewhat obvious that there's a common denominator in all of this. Hacker news is a collection of intellectually curious people who enjoy interacting with and being challenged by likeminded souls. This is evidenced by the generally well-thought out comments, stimulating submissions and the tendency to downvote comments that aren't interesting or add to the conversation.

Hacker news is simply a place where you can meet other people that value intellectual integrity and a good conversation about an interesting subject whatever that may be.

<comment><USER6> I'm mostly here for the technology / programming stuff, but I do appreciate the entrepreneurial factor. It seems to bias the content towards ideas that are potentially disruptive, as opposed to press releases and unfocused technophilia.

<comment><USER7> "potentially disruptive"? Please elaborate. I find that the ideas mentioned here stem from other ideas mentioned here in a mostly positive fashion.

<comment><USER8> "Disruptive" here is being used in the sense that Schumpeter called "creative destruction" the engine of capitalism.

In other words, an idea that has the potential to change the world, probably in a way that will break somebody's rice bowls (while quite likely creating some new ones).

Like what Craigslist and eBay have done to newspaper classified advertising.

<comment><USER9> Nice words ! One of the example :[http://www.dailymail.co.uk/sciencetech/article-1307646/iStet...](http://www.dailymail.co.uk/sciencetech/article-1307646/iStethoscope- The-iPhone-app-replacing-real-thing-hospitals.html)

</comment></comment></comment></comment></comment><comment><USER10> Hacker News was created by Paul Graham. You may also want to check out some of his essays at paulgraham.com. Here is one which gives some background on why he created Hacker News, and his thoughts on it as of Feb. 2009.

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

<comment><USER11> I think HN still very much reflects the mind of Paul Graham and his range of interests. Obviously he's an expert in startups, but he's also one of the best practical psychologists I've read. And I think this is a site about the mindset that produces programmers, entrepreneurs and people who like to do difficult, mentally-challenging projects and be delighted by the challenge.

</comment></comment><comment><USER12> It's a site for greedy nerds.

That's my honest opinion, can't mod me down for that, right?

<comment><USER13> Me too. Except (and correct me if I'm misinterpreting you) while you see this as an insult, I see it as a compliment. It is a site for people that are smart and love to learn. It is a site for people that know what the want, and are willing to take the risks to achieve that. It is a site for people that are creative, productive, and try to produce things that the people around them need or want. So yes it is a site for greedy nerds, and that is one of the reasons I enjoy coming.

</comment></comment><comment><USER14> You really seem to have two different questions:

\- Why was HN created, and/or what is the guiding purpose behind changes?

\- Why do people come here?

The former can really only be answered by pg. I'd guess he finds it somehow useful for YC proper. It gives a combination of PR (not quite the right term, but the best I can think of) for YC and a source of information on part of the applicant pool. Again, only a guess. It's also entirely possible that pg just wants to create a good community.

I can give my perspective on the latter. I come here because the quality of the frontpage links tends to be pretty high, and the (median) quality of the comments is even higher.

<comment><USER15> It's also a muse application for the design of arc, pg's new dialect of lisp.

</comment></comment><comment><USER16> I dislike the term "hacker." It can and does have nefarious connotations that demean the term. I prefer "programmer," "developer," or "coder." Why run the risk of having someone misperceive your use of the term

<comment><USER4> Because "programmer" or "developer" can include people from other programming subcultures, like VB programmers and other types of coders who view coding as just another profession for getting a salary, and/or tend to be merely "consumers" of what Big Companies produce.

</comment></comment><comment><USER17> Hacker News was born as a website for YC participants, grew up as a curious little brat interested in all kinds of technical topics, then had a minor identity crisis (hacker vs. entrepreneur) during adolescence, and now seems to have settled in favor of taking the middle ground between hustler & hacker.

</comment><comment><USER18> Hacker News is what helps me to stay up to date with the latest news and trends in technology, to hear interesting people, their opinions on various topics, to find useful resources that help to do my work in better way.

Basically it's a fresh air that I need to breath every day.

</comment><comment><USER19> Hacker News is a place to share news and discuss the world with technology minded, intellectually curious people.

YCombinator is a seed stage venture capital firm. The founder of YCombinator started and runs Hacker News, but there is no other affiliation.

</comment><comment><USER20> I guess the confusion comes from the system being named "Hacker News" when the content is rarely hacker-related. This struck me as somewhat as a misnomer as well, but I've since gotten over that. . .

<comment><USER21> How do you figure? I rarely see anything on the homepage that isn't of interest to hackers.

<comment><USER22> You'd have to have a _very_ broad definition; imo, about half the front-page content on a typical day is hackerly. Much of the rest is just general- interest news/politics/economics/business/motivation/self-help/etc. Not that there aren't many hackers also interested in those things, but it's hardly required, and many aren't. Not surprising, either, but I think it's a particular slice of hackerdom. Since it was formerly called Startup News, it's got more of the variety of hackers interested in the biz/economics angle, as opposed to, say, the classic Bell Labs type of hacker.

</comment></comment></comment><comment><USER23> It's reddit for adults.

</comment><comment><USER24> You know those stories you hear of the (by now) mythical "Homebrew Computer Club" of yore?

...yeah, like that.

</comment><comment><USER25> I read it because it has intelligent discussions relevant to anyone who works with computers in business.

</comment><comment><USER26> You might check out the guidelines for the site.

<http://ycombinator.com/newsguidelines.html#>

<comment><USER27> "This post is spurred by seeing the Hacker News guidelines this evening"

<comment><USER26> That was edited in...

<comment><AUTHOR> actually, it was part of the original comment</comment></comment></comment></comment>


Discrimination in Tech: History Repeats Itself - <AUTHOR> http://danluu.com/tech-discrimination <comment><USER2> The comparison of percentage of women majors by field has a problem. There are two very different ways that the curve for a field can reverse direction compared to the others like it did for CS in the mid '80s.

1\. Something is keeping women out, or

2\. Something is drawing men in.

If you look at the numbers of men and women entering the fields, you will find that it is #2. Before the mid '80s, the number of men entering CS and the number of women entering CS were both growing at about the same rate, which was similar to the rate of growth in other fields.

Then the number of men entering started growing much faster. The number of women entering continued to grow, at about the same rate as it had been.

There has been speculation on what might have caused this, but as far as I am aware no good evidence for any particular theory.</comment>


Dell Allows SIPCOM to deliver Software to Users Worldwide - <AUTHOR> http://technozooo.com/2012/03/dell-permitted-sipcom-to-deliver-software-to-users-worldwide/

<comment><USER2> Nice info .....</comment>


Ask HN: Thoughts on a super ytmnd generator done in javascript? - <AUTHOR>

mashface.net
This is something a friend and I made because we where frustrated at how limited youtube doublers and the like are. It gives you as many light boxes as you want which you can resize. The boxes can take youtubes, images, mp3s and html. The boxes can take css rules and other content specific rules depending on the box's url. eg. If the box holds a youtube you get a loop rule. Some examples:
http://mashface.net/#/w3rews
http://mashface.net/#/m3ik2g
Chrome only sorry. <comment><AUTHOR> <http://mashface.net/#/w3rews>

<http://mashface.net/#/m3ik2g></comment>


Show HN: Trendr - <AUTHOR> Hello, My team and I would like to showcase an application we made as part of a 3 and a half week project. We're very eager to see what people think of our app so we decided to share it here on HN! Our vision for this app was to empower people within the finance industry by allowing them to visualize correlations between finance sectors and keywords that are trending on Google.
http://trendr.xyz
Please keep in mind that this is an academic proof of concept. There are several issues regarding Google rate limiting our application since there's no real API for Google Trends; it's entirely possible 'new' keywords that are not stored in our graph database will fail to load because the initial data we need from Google won't load. <comment><USER2> Sounds great. The landing page, which is nice and light with no visual burden on the user. However, it's not quite clear what exactly a user should put in the single input box? The placeholder 'Trendr' does not really help at all. I understand that if the user waits a moment the placeholder changes but even still it's unclear what I should put in there. (Also there is probably some survey somewhere that demonstrates some really high percentage of users wait less than some really short space of time and hence will never see your placeholder text change).</comment>


The Architecture of Open Source Applications - <AUTHOR> http://www.aosabook.org/en/index.html <comment><USER2> Favorites:

\- SQLAlchemy by Michael Bayer: [https://www.aosabook.org/en/sqlalchemy.html](https://www.aosabook.org/en/sqlalchemy.html) (nice observation of core language on top of SQL, then the separate declarative/orm system)

\- LLVM by Chris Lattner: [https://www.aosabook.org/en/llvm.html](https://www.aosabook.org/en/llvm.html)

\- Audacity by James Crook: [https://www.aosabook.org/en/audacity.html](https://www.aosabook.org/en/audacity.html) (interesting mentionings of wxwigets)

Note that pretty much everything in volume 1 and 2 is interesting, though!

What would be nice to see, non-exhaustive:

\- Blender: Especially 2.80, an analysis of its GUI/widgets, integrated python scripting, and everything else (wiring into graphics cards, rendering, shapes). There's a lot of stuff that could be covered

\- Gimp / Inkscape / Krita

\- Saltstack / Ansible / Fabric or PyInvoke : These have nice abstractions on top of system functionality / programs and delivery magic that'd be fun to go into

\- GTK, QT

\- Tiling window managers, e.g. i3, swaywm, awesome

\- Wayland, Xorg

\- Kdevelop, VSCode, Atom, Electron

\- React, Vue, Angular (it'd be nce to see more js)

\- Android SDK

\- Unity3D SDK, Unreal SDK

\- .NET Core

\- black (python formatter), clang-format, prettier

\- docutils, sphinx, pandoc

\- systemd, mesa, cairo, pulseaudio

\- implementations of python (cpython), typescript, lua, luajit, haskell ghc, swift

<comment><USER3> Really curious why you'd want to study these unless you already had strong fundamentals in application architecture and are not afraid to expose yourself to antipatterns. GIMP/GTK in particular are a cornucopia of terrible ideas stemming from ignorance and prejudice.

<comment><USER4> What's wrong with gimp? Been using it for a decade with no trouble.

<comment><USER5> Poor/questionable [initial] architectural decisions at a codebase level don't mean that the end product doesn't work (WordPress IMO being a very good example of this -- famously crufty codebase but the product definitely does the job). Just means it's not _necessarily_ a great subject for an architectural breakdown.

<comment><USER6> WordPress is a fork of b2.

</comment></comment></comment></comment></comment><comment><USER7> This is interesting, however I'd say most of the software on this list not relevant for 99% of software architects / engineers ( ie all of us working on web / server side applications for BigCorp).

It's not the fault of the authors of course, in my experience there's not many organisations interested in explaining stuff like this out in the open.

It would be great to see the architecture of: \- a large scale distributed system \- a typical web app with UI, web tier, data tier maybe thrown in some eventing for good measure. \- maybe anything else that needs to talk across a network all the time.

Nick Craver from Stackoverflow does a great job of explaining this for how SO do it, any other good examples would be great.

<comment><USER8> In case anyone else is curious: [https://nickcraver.com/blog/2016/02/03/stack- overflow-a-tech...](https://nickcraver.com/blog/2016/02/03/stack-overflow-a- technical-deconstruction/)

</comment></comment><comment><USER9> Implementing QuantLib is also an interesting read on how the open source C++ library was built.

Although is a library for a small niche is interesting how Luigi Ballabio explains the process with some comments of why some decisions have been taken and some corrections/modifications that happened in the library.

[https://www.implementingquantlib.com/posts/implementing- quan...](https://www.implementingquantlib.com/posts/implementing- quantlib.html)

</comment><comment><USER10> Great article on Continuous Integration: [http://www.aosabook.org/en/integration.html](http://www.aosabook.org/en/integration.html)

</comment><comment><USER11> I'm confused. Is this an ad?

<comment><USER12> Imho a bit. Its a Cc by licensed book. But part of the revenue is for the Oss projects who participated. You can get a download without costs.</comment></comment>