Is front-end development having an identity crisis? - <AUTHOR> https://dev.to/assaultoustudios/is-front-end-development-having-an-identitycrisis-2224 <comment><USER3> I work for an ecommerce company that's just small enough that as a front end dev I wear a really big stack of hats. I regularly have to reach across .net MVC, React components, jquery, fairly complex scss and JavaScript written to what standards were 6 or 7 years ago in order to implement new features. On top of that, I regularly fill in UX and design work when a designer isn't available, and I run the company's entire A/B testing process, and even find myself working with AWS configuration and the build process occasionally. That said, I love it; getting to participate in so much of the process allows me to really get a feel for the entire structure of the site as a whole, and I feel like experience in one area often informs learning in others and helps me communicate with specialists from many different areas. I could see it being a bit overwhelming coming foremost from a design background, but in my experience you do not need a degree to do this work (Mine are in Biology and Psychology). It just requires you to put in the time to research, and I personally think it's time well spent (and a good boss will account for the fact that you may be learning things on the fly in setting project deadlines). Getting into the nitty-gritty of JavaScript and really understanding how it works and modern best practices will save you so many headaches later. I will say sometimes I feel pretty amateurish when it comes to the design aspect, because it relies so heavily on cultivating good design intuition, but even then I appreciate those opportunities to flex a different mental muscle.

<comment><USER4> I was in exactly your shoes, and they can be pretty big boots to fill. But being able to take on so many parts of the process feels really good and you get a greater feeling of ownership over the whole product. You can make smarter decisions and understand the whys of more requirements rather than just the whats and hows.

It also allowed me to develop a really strong pragmatism. With so much to learn you have to be really lean and effective with your learning and cut requirements where they don't make sense.

<comment><USER5> Unfortunately as I am experiencing it right now while it's great to be able to do lots of things and own the whole product, it is detrimental to your knowledge and your CV. I am in the job market after 14 years and my skillset is so specialised that it is hard to get a job. I got a few interviews but fell hard on home assignment. We'll see what the future brings.

<comment><USER6> I have the same fear with the road I'm taking now. I've changed jobs a lot in the last 10 years after staying at one job for 10, and just being a really good C# developer and then "architect" got me a long way. Along with barely passable front end skills.

But now that I'm trying to fill out the gaps on both ends - back end with a deep knowledge of AWS, Linux, Docker, devops, Node. and the front end along with some more project management experience, I'm trying to qualify for overpriced "implementation consultant" roles - since those are the only roles that pay significantly more than I'm making now in my market without going into management.

But the fear is that while having the broad expertise will qualify me for high paying jobs, there are relatively few of them out there. I have to have a deep understanding of at least part of the stack to get a job or contract gig quickly.

</comment></comment></comment></comment><comment><USER7> Something has gone very wrong in our industry. Typical in-house CRUD used to be relatively straightforward and a handful of developer/analyst hybrids could handle the vast majority of projects using tools like PowerBuilder, Delphi, Oracle Forms, etc. Now it takes roughly 5x longer and has to be divided into specialists, including a front-end specialist. JavaScript gizmos are always "breaking" when new browser versions come out. It makes DLL-Hell of the 90's look good in comparison.

Sure, the tools mentioned were more difficult to deploy to users, but we jacked up programming costs to gain deployability. We need better standards: HTML/JS/CSS/DOM is okay for some things, but one-size-fits-all has dragged down a lot of specialities, including in-house CRUD. Maybe we need one standard for "eye-candy" and games, and another for git-er-done GUI's.

I had hoped "The Web" would mature and solve the bottlenecks, but it didn't. Are we really stuck with 5x the programming resources? Accountants, wake up and bop IT on the head.

<comment><USER8> > _tools like PowerBuilder, Delphi, Oracle Forms, etc. Now it takes roughly 5x > longer a_

I've seen no evidence to support the suggestion that building CRUD apps for the web takes 5x as long as with something like PowerBuilder, Delphi, VB etc. The web is very simple but extremely flexible and you can get as much or as little out of it as you like. If it takes 5x as long it means the technical management is inept. I also have personal experience with some huge internal VB and Delphi projects during the 90s that were utter nightmares, and I know _anyone_ else working in that era can attest to similar experiences.

> _JavaScript gizmos are always "breaking" when new browser versions come out. > It makes DLL-Hell of the 90's look good in comparison._

This is just false. Standards compliant JS releases across the browsers have been extremely stable for years, there are no "JS gizmos" breaking because of browser releases. The DLL-Hell comparison is ridiculous, there is simply nothing even remotely comparable to that on the web today.

> _Maybe we need one standard for "eye-candy" and games, and another for git- > er-done GUI's._

This is an arbitrary distinction and not a technical one. The solution is to understand which problems need solving and then to select the appropriate tool (that you understand how to use) for the job.

<comment><USER9> _> I've seen no evidence to support the suggestion that building CRUD apps for the web takes 5x as long as with something like PowerBuilder, Delphi, VB etc_

Well, I have!

We actually did the test, with Anvil ([https://anvil.works](https://anvil.works)), which is explicitly a VB/Delphi- like platform for the web.

We took a straightforward CRUD-y consulting project as a spec, and built it with traditional tools and with Anvil. We did our best to keep it fair: We raced an expert against an expert, and we kept the web tech simple: simple templating, minimal JS, etc. And it was _still_ about 7 times faster with the Delphi-like tool.

(It was actually 10x faster if you just count dev time, but we counted overhead meetings too - again, in an effort to be fair. It was still "one week" vs "one afternoon".)

<comment><USER8> Huh? You don't see the irony in using a web toolkit as an example of how you can be more productive NOT using the web? Anvil is a VB/Delphi-like platform _for the web_ , it even transpiles python down to JS in order to run in the browser. You're proving my own point for me. The web is so versatile that it gives you the power to do whatever you want, including clone a Delphi form builder in the browser. How is that an argument against the web?

<comment><USER7> I'm skeptical such a tool can stand the test of time per browser changes. A code base may work this year, but not in 5. A dedicated CRUD-friendly GUI standard would likely be well-tested on CRUD because that's its main job, not cat videos nor Amazon product lists.

</comment></comment></comment></comment></comment><comment><USER10> I'm glad to see this post, and I'm glad front-end developers are starting to rebel against the nuttiness of what has happened in their corner of the web.

I declared myself out a while ago. It took some digging in of the heels and a bit of a short term career hit, but I no longer do much web development. I do data work, I guess they call it "data engineering" now, lots of pipeline stuff. My background was in math and operations research, and I do calculation as well as data pipelines, so it works out nicely. I really had to start refusing to do javascript, though.

I'd still do full stack (which means I handle simple frontend stuff but pass it onto someone more talented if it needs to be more elaborate) if we used Rails or something like it. That, I don't mind, and if I had to do it all myself due to it being a personal project, I'd happily keep things relatively simple in rails. If I needed something more specialized for data analysis, I'd probably write it as a service in python.

Til then, I love that ostensibly Polish expression "Not my circus, not my monkey". Front end developers are going through framework churn unseen since the MVC days of 2005. You do what you do, folks, have at it, knock yourselves out.

One thing, though - no, I'm not going to start writing data analysis code in Javascript so we can keep things consistent with the front end.

</comment><comment> jon-wood Over the last year or so I've started splitting what was once the big "Frontend Developer" role into two distinct parts. The first is the traditionally thought of one - taking mockups or a style guide and using that to create the visual elements of an application. CSS, HTML, and some JavaScript sprinkles.

The second is a much more development focused developer role, someone who can take the work done by the first variety of frontend person and then break it down into components and integrate that with a backend API in complex ways.

The two are very different roles which can rarely be fulfilled by a single person. I think we should stop trying to bundle them into the same thing.

<comment><USER11> Then the first should IMHO be called a front-end designer. Developer to me is someone who develops logic, not some interaction with JavaScript.

Think for example of developing a static website. I wouldn't ask a developer to do that, I would ask a web designer, which I expect to be versed both in "design for the web" (as opposed to, e.g., "design for print") _and_ being able to translate it to the chosen medium (that is, HTML and CSS).

Anything more (business logic etc) are the domain of a developer. So as soon as the site is not static anymore and becomes an actual web application, that's where designers are out of their area of expertise and developers kick in.

This is how we are organized where I work, at least.

<comment><USER12> > _and being able to translate it to the chosen medium (that is, HTML and > CSS)._

Writing good, maintainable HTML and CSS is fundamentally an engineering role -- how to deal with z-index, how to structure into components to avoid abuse of !important, the performance implications of animating transform() vs other properties, how to factor into variables for colors and distances, how to avoid spaghetti classes because CSS is fundamentally global.

In my experience, good designers and good engineers generally come from quite different mindsets, and I would never expect a designer to write well- engineered and maintainable HTML/CSS, the same way I would never expect an engineer to be versed in the intricacies of the rhythms of typography, color theory, or the emotional associations of positive and negative space.

<comment><USER13> They exist. They're exceedingly rare, though. I know only a handful and they tend to stick to one framework or way of doing things at a time to keep their learning burden to the absolute minimum. They're also pretty picky about who they work with.

(One of my friends that meets this description is looking for a new remote Ember gig. If one of you out there at a cool company looking for a new dev+designer send me an email and I'll intro you.)

</comment></comment></comment></comment><comment><USER14> Hi there. The reality is this was totally predictable. In the beginning things were simple. UI/UX is focused on creating the prototype and actual implementation was done by front-end programmers. But nobody likes to pay extra, so why not make designers code? Yes, i am one of those designers, old enough to remember frustration with tables and inline css. So if you asking your self why there are no more websites that are beautiful and usable? This is your answer: Is very rare someone with artistic abilities to have "programmers mind". Is enough frustration to deal with browser layout to expect someone to do full stack front-end dev. In the end you have mediocre designers (without basic understanding of color theory or typography) that are mediocre programmers (using all the cool JS tech, without CS basic understanding), so websites have interactive technology with design interaction from 2005:)

<comment><USER15> > so why not make designers code?

Well... I don't want to _force_ someone to do that, but I'd really really really prefer if design people actually _did_ code sometimes, so they understood the reality of what they're 'designing' from an implementation standpoint.

It may take you 6-8 hours to mockup something that is ... logically impossible, which someone 'signs off' on, then 40 hours for someone else to try to cobble together - pushing back is 'combative' and 'negative', etc.

You know how designers don't like people who ask for stuff that "pops" and then want more "pop"? Designers 'designing' stuff that creates practical impossibilities or gaps in state, etc. - programming folks hate that just as much as you hate 'make it pop' requests.

Hey - cool - you "designed" a form with 3 elements! The actual implementation options are 17 for that area. What should happen with 0 selected? Do we want notifications or help text?

Nice - that design looks really slick with 3 checkboxes in a pulldown, but you've sort of just invented a widget that doesn't really exist, will create accessibility nightmares, and you didn't show how this should behave on mobile/tablets.

The number of design people I've met who can actually reconcile clean design with real implementation, usability and accessibility issues addressed is very small.

<comment><USER16> I can sure relate to this. Or my favorite question: "What happens when I click that magnifying glass in the top nav?" and they say, "Oh, I didn't think about that!"

I doubt the real answer is for the designer to code (though it's nice when you get to work with someone like that), but you sure have to ask a lot of questions, and you never manage to check everything up front. Especially anything that doesn't immediately open a new web page, at every step there are just so many input possibilities: the user clicks this button or that, clicks elsewhere, types a bit here then a bit there, presses Enter, presses Tab, presses Escape, has a screenreader, is on a phone, is on an iPad, gets an error, gets 1000 results, changes the dropdown that enabled this other control. . . . I guess you do the best you can imagining flows up front, but plan on having some iteration as you discover gaps in the design.

<comment><USER15> > I doubt the real answer is for the designer to code

I'm not saying they have to code 100% of everything, but I'm really fed up with having to deal with that sort of "well gosh that's not our issue!" hands off sort of 'design' folks.

Internal design teams that work in the same building as the implementors/devs... maybe a different experience. I'm sometimes brought in and given "mockups" from an external team, done in whatever tool of the day they use, that have little bearing on real world web implementation.

it's apparently beneath some of these folks to learn css/html and use ... you know... a _web browser_ to mock up a _web site_. i don't care how much 'freedom' some tool gives you, you're just punting the hard implementation to someone else.

Came off a project recently like this - the original team had done 'weeks' of 'design' and 'planning' with an external design firm. "but plan on having some iteration as you discover gaps in the design" sounds nice, but in their mind, they'd already "thought a lot about it" 8 weeks earlier, so any implementation issues I found were somehow... my fault? my problem? "these guys are a really strong design firm..." who don't seem to have ever actually implemented anything they design, from what I could tell.

</comment></comment></comment></comment><comment><USER17> As a full stack engineer, I'm expected to know _all_ of frontend, _all_ of backend, and some level of devops. but I am not paid twice, or even close to twice.

I'm not complaining, just pointing that scope of frontend is still relatively small as compared to other roles.

<comment><USER18> I have been in the mobile space. Backend to me means: server side (rails/go/python), javascript, sql, devops, react admin panels, aws, css. Frontend to me means: Android or iOS. When someone says 'full stack' \-- that to me means they know iOS or Android AND all of backend.

<comment><USER19> Front end traditionally has meant the browser.

<comment><USER20> Mobile apps have been around for over a decade.

</comment></comment></comment></comment><comment> d--b > Frameworks like Angular or libraries like React require developers to have a > much deeper understanding of programming concepts; concepts that might have > historically been associated only with the back-end. MVC, functional > programming, high-order functions, hoisting... hard concepts to grasp if > your background is in HTML, CSS and basic interactive JavaScript.

Well that's the difference between a frontend developer and a designer... I don't think fronted dev has changed that much. frameworks have, but the core of the role is the same: understanding/organize ui states, understanding threading models, events, interact with backend apis, know some design, etc.

<comment><USER21> These "articles" on that site always leave the taste of frustrated redditors trying to make a name for themselves. They rarely make sense or have any meat to them and, after a few days of following it, I thoroughly ignore everything published there.

</comment></comment><comment><USER22> Front-end and back-end are pretty arbitrary labels. Labels like these first and foremost are designed to help those who try to commoditise development work (e.g. recruiters).

Why should someone be able to become an expert in HTML but not, say, SQL? Only because one of these runs on a client and the other typically runs on a server?

Software development should be about creating something useful. Usually, neither back-end nor front-end code is useful on its own.

By nonetheless making that distinction chances are you're creating a culture where developers neither take responsibility for the end result nor have any agency in it.

<comment><USER23> I totally disagree that they're arbitrary.

Front-end is commonly used to mean writing code that runs on a client browser or native environment, like iOS.

Back-end means writing code that runs on a server.

Sometimes they're intermingled code bases. At my companies, they aren't.

Browsers are sufficiently complex targets that it's reasonable to specialize.

<comment><USER24> To your surprise code that runs on a server can have a frontend and backend too, this holds true for a lot of other things too like compilers.

Frontend does not mean visual, not at all.

See: [https://www.quora.com/What-are-front-end-and-back-end- compil...](https://www.quora.com/What-are-front-end-and-back-end-compilers)

<comment><USER25> "Frontend developer" is shorthand for "frontend web developer" or "web frontend developer". There is rarely any ambiguity in that.

While a compiler has a front- and back end, I doubt there are many ads for compiler frontend developers or compiler backend developers.

<comment><USER24> There aren't many ads for any compiler related issues, but that doesn't mean they aren't "real".

</comment></comment></comment></comment></comment><comment><USER26> The biggest problem is most companies hire by ticking boxes. On the other hand, a developer is a developer. Yes, it will take a while for them to adapt if you hire a "Ruby developer" to do, say, embedded systems, so yes, it makes sense to check for patterns, but trying to match a profile is a somewhat unreachable target and useless to begin with.

<comment><USER27> A developer is not just a developer. I've been in the industry for quite a while and life for quite a bit longer and I have just never found this sort of pluggability in developers or people in general.

If you want someone to write an etl script from SAP to salesforce you could probably trip over one in the street. But if you want someone to define a well thought out data model in 3rd normal form with versioned entities, property based testing coverage and full CICD pipeline you will have to search hard.

<comment><USER28> There's a lot of software projects that don't need 'a well thought out data model in 3rd normal form with versioned entities, property-based testing coverage and full CICD pipeline' out there.

<comment><USER29> 9 times out of 10, the person applying 3rd normal form doesn't know what they're doing and ends up over-engineering the hell out of a project and making things much worse.

</comment></comment></comment></comment><comment><USER30> The way this works out at the shop I'm currently at is that you get a bunch of devs who are, for lack of a better description, 3/4 stack developers (back- end, database, anything on the front-end that isn't CSS), and a few other devs who are strictly involved in the design/HTML/CSS portion of projects.

This system seems to work out pretty well on most projects. There is a significant body if knowledge required to get the styling and markup in an application built properly, with a high degree of cross-browser compatibility, and in a reasonable amount of time.

When I think of a front-end dev I tend to lean towards this definition. Which leaves me at somewhat of a loss to describe my role as a "back-end" developer, as I spend a generous portion of my time coding with Angular.

<comment><USER31> I really like this term "3/4 stack developer". Is it used elsewhere or did you make it up?

<comment><USER30> As far as I know I made it up. It's the term I typically use to give potential employers (and other devs) a general sense of where my competencies are.

</comment></comment></comment><comment><USER32> I fully agree that the skill sets and demands of different roles sometimes all get labelled with the same title. But that is true of any developer role. Titles are not standardized to skill sets, and trying to do so for one type of developer while the rest of the industry is still varied makes little sense to me. Yes, you will look at job postings that aren't really what you do. So keep looking, just like the rest of us web devs do when an SW Engineer title ends up being an embedded C role on robotics, and not app development.

If you are struggling to find work, then expanding your skill set is the answer, not restricting the meaning of a specific title down to your comfort zone.

</comment><comment><USER33> Me and my collegues like to talk about the "back-end of the frontend". This includes all the client-side logic and scripting. You have a server-side application primarily consisting of validation and data storage concerns, and a back-end of the front-end implementing some business rules etc.

<comment><USER34> This is fun, in my last job I used to call "back-end of the frontend" the nodejs server (of which, as a FE developer, I was in charge too) that talked to the "real" backend and aggregated data from various other sources. So in your schema that would have been "the backend of the frontend's backend" :)

<comment><USER35> lol.. I really like having a Node server for the app to talk to... for the most part it removes a lot of barriers to basic data transformations for requests and merging results closer to other data sources.

Not having to think in a different language helps a lot too.

</comment></comment></comment><comment><USER36> Is'nt the real problem that the market for web designers have imploded as social media became the primary platform for web marketing and customer outreach for most small businesses, killing of the need for a bespoke semi static website.

Whit that role gone most web designers now find they are more needed as traditional app developers creating crud interfaces to data backend which requires less design and more business logic.

<comment><USER37> Things like squarespace and webflow probably contributed to this effect as well.

</comment></comment><comment><USER38> > MVC, functional programming, high-order functions, hoisting... hard concepts > to grasp if your background is in HTML, CSS and basic interactive > JavaScript.

And, conversely, HTML, CSS & basic interactive Javascript (or at least the UX/artistic aspects thereof) can be hard to get a handle on if your background is functional programming, high-order functions and hoisting.

<comment><USER39> No, not really.

</comment></comment><comment><USER40> I think it's less of front-end having an identity crisis and more that every major programming language is trying to do the job of every other one, as opposed to languages being specialized for certain tasks, Javascript and it's variants especially. But everyone's now got their preferred language and they won't budge. So it's another thing you have to learn in order to do the job, even if you don't actively use it.

</comment><comment><USER25> I think trying to standardize roles and role names is a pretty meaningless activity. Recruit for skills, not for some form of arbitrary title. In some stacks and some organizations these roles are well defined and meaningful - <USER2> they can be used internally.

But for external use (such as in a pay comparison or job posting) they are pretty meaningless. Just recruit a software developer and specify what skills the job requires.

Html/css to me is a design activity and probably better described as "web designers" or "interaction designers" and not developers at all (even if some JS is sprinkled on top to make the html come alive).

</comment><comment><USER41> There is a substantial amount of evidence that the most effective product teams are cross-functional, and in parallel, the most effective product engineers are cross-functional.

This idea doesn't necessarily hold up when you get into very deep topics like data science, db admin, cloud administration, server admin, etc. But it absolutely holds up for product development, and nearly all frontend, backend, and "modern devops" should actually be called by its real name: full stack development, or my preferred term, Product Engineering.

I view every single product-focused engineer we hire as "full stack with a focus". The job titles might say things like "frontend engineer" for SEO, but the descriptions are clear: you're going to mostly be working on frontend and we expect competency in that, but you might be asked to reach into other parts of the codebase, or at least have opinions on how things are designed there. You'll be asked to participate in product planning and design. Everyone is general, but you do have a focus which represents 80% of your work.

I know coding schools would love to just teach someone React and then the bare minimum of a NodeJS backend to check a box then say they're competent. Bad news: I've worked with a dozen coding school grads over my career, as well as a dozen people who classified themselves as "backend engineers". None of them were even playing the same _game_ as the people who took the extra time to expose themselves to the entire spectrum of technology a modern product might use. Mind you, many of these fullstack people were CS grads, many others were just people with no formal training. Formal training only matters if you limit yourself by how you've been trained, and then it matters in a negative sense.

<comment><USER42> I don't inherently disagree with you but you're not recognising that as tech evolves, you're asking people to span an extraordinary amount of complexity. In fact, the premise of the article is that front end development is now essentially two different roles.

</comment></comment><comment><USER43> It's amazing how little you can get done with a big team, and yet it's trendy in development to push for specialized roles that lead to huge communication inefficiencies.

</comment><comment><USER44> "'It secures HTTP requests and responses' wasn't deemed a sufficient answer when asked what an SSL certificate was in a technical interview for a front- end role."

I think I have to take the inteviewer's side there. Or I would at least ask a follow-up question.

<comment><USER45> Errrr no, that's a perfectly sufficient answer for someone who's primary concern is UI layer. Is it a secure connection or not? It is? Then we're done here.

</comment></comment><comment><USER46> The irony in this is that much of the complexity in these newer frameworks is supposed to make it easier to separate the concerns.

This is an area where flash actually did a good job. What was the deliverable from someone building a flash site to the web? The flash binary. There was little reason to try and blend the tooling of what the flash author built with the rest of the site. It was typically the point of the visit.

Instead, we try and do a ton of stuff to setup the developer to more easily incorporate a designer's work. We do basically nothing to allow a literal handoff of a deliverable.

Until that changes, I don't see it getting any more straight forward for designers/developers any time soon.

</comment><comment><USER47> A good front-end developer knows how to architecture code for creating user interfaces, has a sense of design, is aware of UX, is sympathetic to accessibility, understands how the browser interprets CSS, is knowledgeable about the browser's rendering pipeline, knows the typical performance of API calls anywhere in the front-end stack, gets the division of responsibility between front-end and back-end.

Any job posting asking for proficiency in Yarn or SASS or React or whatnot is for expert monkeys who will produce web trash.

</comment><comment><USER48> These titles are pretty meaningless in my opinion. Plus, what front-end developer means depends on who's looking anyways. Where I work, for example, my official job title is Senior Frontend Associate. What does this means exactly? I haven't got a fucking clue.

But what boils down to on the day to day is this:

I'll spend some time, turning mockups into static pages using HTML, CSS (and the occasional sprinkle of JS), but the bulk of my time is spent on implementation -- everything required to go from static site to a functional web application. Together with the other "Associates" on the team, we'll do everything from cutting the UI up into components, implementing business logic to handle behaviour and user interaction in these components, talking to the backend, and managing application state.

So what we decide to call these roles isn't important. Rather, i think, we should focus on hiring for skills. This means that we should do a better job of describing the skill sets, that we are hiring for.

If you are struggling to find work, you should invest time expanding your skill. Trying to restrict some arbitrary title to suit your comfort zone doesn't help either.

</comment><comment><USER42> Technology evolves. As it evolves, it becomes more sophisticated and the roles themselves become more specialised.

Twenty years ago you could have a designer writing simple HTML/CSS pages and then a Java developer filling in the functionality with JSP pages.

Today, the advent of sophisticated frameworks like React, and the browser becoming a highly capable development platform, it makes perfect sense to identify a separation of design-oriented UI/UX developer roles who are presentation experts and more engineering-oriented devs who focus on immutable state stores, app architecture, API design, implementation performance, testing, etc.

We really need good names for these two roles.

</comment><comment><USER49> Honestly - I would actually require front-end developers to have some backend coding experience in our case, we have a very large monolithic app that we are attempting to break down to a more MSA type app but it still needs upgrading. This means they will need to wade through code templated HTML / CSS / Javascript in order to re-skin the app.

I think this is in part why you see these skills mixed in on job descriptions. There often cannot be a complete separation of concerns.

</comment><comment><USER50> I'm trying to hire someone for this kind of role at the moment, and it's really confusing.

I need someone who can build a decent UI using Vue. I can do the tricky bits with Vuex and communicating with the server, but I do need them to be get the visual design parts of the thing, and the quite complex and advanced JS coding needed to make it happen. Am I looking for a designer or a developer?

I can understand how this blurs out to needing to understand MongoDB and functional programming. It's a tough line to draw.

<comment><USER51> You need two people, sorry.

You just described a designer and a developer.

<comment><USER50> I only have budget for one, and have met great designers who are also very good JS engineers. What do we call those people?

</comment></comment></comment><comment><USER52> To be fair, we could say programming itself also has identity crisis. Job posts don't look the same as they did 30 years ago. But in this case we accept it as part of the progress we've made. Frontend development is in the spotlight now, and it's in a far better position that it was a couple of years ago. Even for the same apps, I like them now compared to what they were a few years ago. It's a good time to be a web developer. Even better to be a web user.

</comment><comment><USER53> We have shifted a focus on the developer comfortability than on the user's. All these new implementations (or libraries fundamentally) biggest selling point is making the developer life easier. Although it may make them more productive, we lose sight on the user needs.

</comment><comment><USER54> Same thing happened to SysAdmins with the conversion to SRE. Industries change. Sink or swim.

<comment><USER55> Looking at many startups and even larger companies anything sysadmin and devops is for them just couple of clicks away in the AWS web console. They fail usually.

</comment></comment><comment><USER35> imho, if all you know are HTML and CSS, you are _NOT_ a front end developer.

Knowing JS and some additional information can get you a lot farther, and to where I might consider you one... I happen to reach for node first in most cases on the server, so would say that a basic understanding of JS, node and build tooling would be sufficient.

Personally, I _HATE_ getting cast into the "front end" box when I have a lot of experience across the stack, but am simple far more experienced than most on the front end.

</comment><comment><USER56> I saw a tweet the other day how react hooks are the controller of the MVC in react. Wtf

<comment><USER57> Ya that kinda makes sense. They seem like a great feature that will help smooth over some of the less sane patterns that exist in React today. I think "hooks" is a somewhat misleading name though.</comment></comment>


Mobilego 22M ICO – happening now - <AUTHOR> This team http://blockstarter.co/#!?project=mobilego is already raised 22 millions. Who invested already? Should I invest and why? <comment><USER2> What is most amazing about this guys is that they already have a mobile gaming platform (found this in their FAQ). I think this differentiates them from most of other ICOs, when people just collected money for future development.</comment>


The Pallets Project - <AUTHOR> https://www.palletsproject.com <comment><USER2> >Welcome to the Pallets Project... If you discover this right now, this is not announced yet and work in progress :)

[https://www.palletsproject.com/blog/](https://www.palletsproject.com/blog/)

</comment><comment><USER3> It'll be interesting to see what this becomes. Because most of this is(was?) part of Pocoo.org, which IIRC was Ronacher's site as well.

Hope this doesn't mean Ronacher's abandoning these projects, he's been a great influence with these projects. I've greatly enjoyed working with Flask, Werkzeug, Jinja, and his other projects.

</comment><comment><USER4> Hopefully getlektor.com graduates to a top-level project there one day.

</comment><comment><USER5> I don't understand why they call Flask a "micro framework" as illustrated on that page it requires all that other stuff to work.

<comment><USER6> It does not require all that other stuff.

Flask requires a lot of other stuff, and most people choose to use it with this other stuff highlighted on the page, but one can very well choose a different set of stuff.

Personally, I don't like the idea, but the term "micro framework" is not meaningless.

<comment><USER5> I like Flask but the first time I tried to use it and found it had all these dependencies I was disappointed. It kind of reminds if of when it was fashionable for people to post headlines like, "I wrote a blogging platform in 5 lines of code" and when you go look at it they used some massive libraries which are of course much more than 5 lines.</comment></comment></comment>


Upcoming Apple TV loses 1080p playback, gains apps... and will be renamed iTV - <AUTHOR> http://www.engadget.com/2010/08/11/upcoming-apple-tv-loses-1080p-playback-gains-apps/

<comment><USER2> Apple TV is only 720p for video now. The only thing that's 1080p is the menu!

<comment><USER3> Surely that's so they can release the iTV 2.0 w/ 1080p in a few months for a few hundred more bucks?

<comment><USER4> Right now their top purchase/rental resolution is 720p.

<comment><USER2> Yes, and people running third party OS extensions can only get 1080p to play with the aid of that broadcom card.

It seems odd that AppleTV was ever advertised as 1080p...

</comment></comment></comment></comment><comment><USER5> Consumers will probably like this, geeks probably won't.

The current model is x86 based (1 GHz or so, single core, something like a Celeron M) and runs a stripped down version of OS X. It's a bit underpowered, but with some work loading things it can run standard OS X apps. QuickTime can handle the same codecs used on OS X. With the current model, the more powerful but more costly Mac Mini is an alternative.

As described, the new model has a much less powerful and Mac-binary incompatible CPU, but it will use MUCH less energy and can handle h.264 playback with hardware decoding. That'll pretty much rule out adding codecs for those XViD .AVI videos many have laying around. Lack of an Intel CPU lowers cost significantly. It seems it could run app store stuff except for the input device hmmm.... maybe it should have a touch screen? Add video out somehow to an iPod touch?

Apple so far has stayed clear of directly supporting off-air or cable-tv PVR functionality. The USB tuners from Elgato Systems work well ("Eye-TV"), but with a Core 2 Duo it would take a dedicated hardware compressor to shrink archives down to h.264 etc at a decent quality level and in a reasonable amount of time.

Locked down like an iPad/iPod touch/iPhone, much of the geek appeal would be gone. The thought of a browser without ad-blocking alone is a big deal to some. (perhaps someone can fine a clear way to do some ad-blocking in a router with open-source firmware?)

Hopefully whatever Apple does will allow access to plenty of tv content that isn't costly. DRM issues (and poor support of video that people already have) could be a negative.

It'll probably have (DRMed) HDMI output but no VGA or DVI. Or maybe Apple will prove us all wrong and do something really surprising?

<comment><USER6> There are always some ways around things:

Ads: Atomic Web on the App Store includes and ad blocker though I do like the idea of taking care of it at the router level.

XVID/DIVX: The free app ServeToMe does real time transcoding. You install the server app and the client just streams H264. Works surprisingly well.

Hacking: Jailbreaking is about the same as rooting an "open" device. I'd bet those guys would have a bunch of emulators and other forbidden apps out within a week or two of its release.

<comment><USER7> ServeToMe does iPhone-resolution encoding... I doubt it would be easy to do 720p h264 in real-time.

<comment><USER8> I've used TVersity to transcode and stream 1080p in real-time through my xbox.

</comment></comment></comment></comment><comment><USER9> I was hoping for a refresh of the apple TV product line. Its too bad there is no 1080P playback, thats a dealbreaker for me.

<comment><USER10> Just out of curiosity what content would you be watching on an appple itv device that's at 1080p? The vast majority of its content is delivered via IP and 1080p video which streams at about 45Mbps isn't really realistic to be moving around on most networks. Most 1080p video is still going to be distributed the old fashioned way... On blu-Ray.

<comment><USER11> It's realistic enough that it's perfectly doable on Pirate Bay. Apple could have been innovative here and offered a (legal) BitTorrent network for downloading HD content.

I _think_ that a lot of non-technical people (even Apple fans) will have a hard time buying accessories for their shiny new "Full HD" flatscreen TV, and then buying an Apple TV that doesn't support it. Unless they reduce the price to the point where it's a no-brainer.

Fortunately, I'm still able to buy an Apple TV that supports 1080p without problems, called a Mac Mini :)

<comment><USER10> I disagree that its perfectly doable on pirate bay. Downloading and watching 1080p movies via the pirate bay is even an edge case for that service.

Take a look at their "High Res" movies

<http://thepiratebay.org/top/207>

First the majority are in 720. The ones that are in 1080 tend to be 10GB to 50GB in size and downloading them can take days (I've tried - on a decent cable modem connection). Then you need to store these beasts which means some sort of multi-terabyte storage server - or burning them to Blu-Ray or HD-DVD disk. A perfectly acceptable alternative but then you're not usually using an Apple "iTV" as your playback device.

So so far this is so far out as an edge case that Apple's choice still makes sense.

</comment></comment></comment></comment><comment><USER12> Let's forget the fact that ITV is a TV channel in the UK... Not confusing at all

<comment><USER8> I doubt it'll be releasing in the UK as iTV, as ITV owns the trademark and has done since forever. The confusion will be great enough that ITV could easily get an injunction in place to prevent the sale of the device so as not to weaken their brand name.

Why? Well because ITV is a video providing service, iTV is a video receiving service. You might get away with it, if ITV hadn't actually tackled the video receiving end of the market when they launched their Freeview (which they still partly own) which was a set-top-box for the receiving of free digital images.

There's going to be no Apple vs Apple in this case.

<comment><USER13> Indeed, prior to Freeview (and after ONDigital), they called the service ITV Digital, if memory serves.

</comment></comment></comment><comment><USER14> Wait a second, if it's going to have apps, what is the controller going to be like?

My guess: iPhone, iPod Touch and iPad is going to learn a new trick. Imagine a driving game where the controller is your iPhone (accelerometer and gyroscope for control) the screen can be used to control gear, and watch stats. If this is going to be true, the new Apple TV will seriously be something unique!

</comment><comment><USER15> And no doubt it's still slow as molasses. Sorry, I'll take my Mac Mini w/HDMI, running Plex any day.

<comment><USER16> The current Apple TV certainly is too slow. But the A4 in the iPhone 4 isn't slow at all driving media on its retina display...

</comment></comment><comment><USER17> Seems kind of strange to open the device up to such easy criticism. iTV? It doesn't even have 1080p!

<comment><USER18> This is Apple, no cut&paste on the original iPhone, no USB on iPad. I'm guessing the user experience wasn't what they wanted either with the performance of the playback, or with the speed of the download/streaming of 1080p from the store.

</comment></comment><comment><USER19> The app bit makes it clear this is set to be a direct competitor to Google's Android based TV solution.

Also interesting to move it to iOS4, the first previously OSX device to move to iOS? A sign of things to come?

<comment><USER20> If you are insinuating that the Mac lineup will be moving to iOS, I think you might be more than a bit off.

</comment></comment><comment><USER21> Coincidentally, the Apple TV device came up in random office discussion yesterday, and general concensus was that it should have been called iTv. Maybe Apple has secretly bought my company?

</comment><comment><USER22> iTV? That's going to cause some confusion in the UK.

<http://www.itv.com/>

</comment><comment><USER23> Damn, I was rooting for "iTube"</comment>


BTC addresses whose private keys are from SHA256 of another public address - <AUTHOR> https://twitter.com/4Dgifts/status/936223487986946048 <comment><USER2> When a company that I worked at was doing some testing with testnet bitcoins, I thought it would be useful to maintain an office pool based on a brainwallet, so that anyone could just use the testnet coins for experiments, and then send them back to the brainwallet. The passphrase was a dictionary word with a couple of trivial substitutions -- something like "company" => "c0mp4ny!" \-- to make it easy for developers to remember for ad hoc testing.

After I sent some testnet coins to the address but before I could even send out an email telling people about it, the coins had been stolen (it might have been in the same block that my original transaction appeared in, I don't remember). This was ~3 years ago, and on testnet -- the only thing I could imagine is that someone was testing out a brainwallet-stealing bot on testnet before deploying it to mainnet. I was very impressed.

<comment> ryan-c I think someone once told me this story in person at a conference.

</comment></comment><comment><USER3> I think a compelling theory is that these addresses are generated by blockchain.info accidentally hashing uninitialised memory instead of random data.

Uninitialised memory for blockchain.info would have a very high density of bitcoin-related data, and they also generate a large amount of keys.

If they (sometimes?) end up hashing uninitialised memory instead of random data, there's every chance that they'd sometimes generate keys that are hashes of bitcoin-related data. It is admittedly unlikely that they'd be hashing data that is exactly the right length to be a bitcoin address or txid, but there could also be another bug which means they hash data that is nul-terminated rather than a fixed size.

Both fitwear[1] (mentioned in the pastebin) and another user[2] have reported BTC inexplicably being transferred out of their blockchain.info wallets.

The next question is, if this is really what's going on, how has it happened? Is it an honest bug or has it been planted deliberately (by either a hacker or an employee) with the intention of being able to steal funds from some proportion of blockchain.info addresses?

There is also every possibility that fitwear and the person who wrote the pastebin article are the same person, and that it is maliciously designed to spread FUD about blockchain.info. We shouldn't jump to any conclusions without seeing a smoking gun.

[1] [https://www.reddit.com/r/Bitcoin/comments/7cw2uw/how_blockch...](https://www.reddit.com/r/Bitcoin/comments/7cw2uw/how_blockchaininfo_stole_65000_from_me/) [2] [https://www.reddit.com/r/Bitcoin/comments/7cx2tg/my_blockcha...](https://www.reddit.com/r/Bitcoin/comments/7cx2tg/my_blockchaininfo_just_got_hacked/)

EDIT: But wait a minute! Blockchain.info keys are generated client-side in javascript, to the best of my knowledge, so this shouldn't explain it at all...

<comment><USER4> If that is the case then it's likely there are many private keys that are SHA256 hashes of very low entropy data.

<comment><USER3> I've generated addresses for all nul-terminated strings over 10 chars from a memory dump of my bitcoin node, and I'm scanning my blockchain to see if any of them have been used.

So far I've found nothing.

<comment><USER5> What tools are you using to do that?

<comment><USER3> It's all very adhoc.

I used gdb to dump the bitcoind memory, I'm using [https://github.com/matja/bitcoin-tool](https://github.com/matja/bitcoin-tool) to output human-readable addresses, I'm using (a modified version of) [https://github.com/tenthirtyone/blocktools](https://github.com/tenthirtyone/blocktools) to parse the blockchain files, and some custom scripts to extract addresses from the scriptpubkeys and compare them against my list of addresses taken from the bitcoind memory.

<comment><USER5> I see, thanks. Wouldn't it be easier to communicate with bitcoind via the RPC interface?

<comment><USER3> Yes but that is orders of magnitude too slow. It would be fine if bitcoind had an address index, but it does not.

I need to setup a bitcore node one of these days...

<comment><USER5> Not only that, it doesn't even support looking up arbitrary addresses, I've just found. I'm looking for an alternate method.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER3> I've just re-read the pastebin more thoroughly and this stuck out to me:

> At some point between then and Nov 12, the compromised > 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit got into his online wallet as an > 'imported' address.

The 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit address is generated by using sha256() of his previously-imported address 1Ca15MELG5DzYpUgeXkkJ2Lt7iMa17SwAo.

The other confusing part is:

> fitwear's 15Z address sat unused until Nov 12 when fitwear transferred his 9 > BTC into it using blockchain.info.

Why did he send money to a random address in his "imported" addresses list in the first place? The usual wallet workflow would surely send change to an address derived from the wallet's actual seed, not an "imported" address. And fitwear would presumably have no reason to send money to himself on purpose, and even if he did why would he choose an "imported" address instead of one derived from the wallet seed?

So what exactly was fitwear trying to do here? The more I think about it, the more I think fitwear messed this up, and it's nothing to do with generating keys from uninitialised memory.

Possibly it's a combination of malware importing addresses into his blockchain.info wallet and him doing weird transactions that ended up losing him money, or possibly it's just FUD designed to discredit blockchain.info.

EDIT: [https://twitter.com/ryancdotorg/status/936087458223149057](https://twitter.com/ryancdotorg/status/936087458223149057)

> it sounds like maybe some bit of code decided "hmm, that's not a well > formatted WIF private key, it must be a brainwallet" without very clearly > explaining what was going on

That sounds plausible. Possibly fitwear tried to import the same private key in 2 different ways and ended up getting burnt.

</comment><comment> ryan-c The most likely explanation is blockchain.info trying to magically figure out how to import anything you supply, and the code decided to treat an address as a brainwallet since it didn't look like any known format of private key.

</comment><comment><USER6> This illustrates a very general problem in computer security: how do you know you can trust your hardware-firmware-software stack? It's not enough to simply trust your vendor (c.f. the recent High Sierra root vulnerability). Even a vendor who says they are prioritizing security and has the technical chops to make that happen (like Apple) can make mistakes. Worse, unless they have really good internal auditing, a single dishonest employee can intentionally insert a vulnerability that can go unnoticed for a very long time (e.g. GOTO FAIL). If the stakes are high (e.g. you can walk away with a few hundred million dollars, or enable whatever intelligence agency you are loyal to to spy on hundreds of millions of people) then the incentive to insert a back door becomes equally high.

It is quite easy to create a pseudo-random number generator whose output is statistically indistinguishable from a real random number generator but is easily predictable to an attacker. (It's actually much easier to do this than to build a secure RNG.) This makes random number generators particularly attractive targets for attacks. Access to reliable random number generators is crucial for any kind of security, but is going to become increasingly challenging as time goes by.

</comment><comment><USER7> I think I have an explanation, but I'm not sure, so I would appreciate criticism.

OP = person who posted pastebin

E = person who's been stealing and laundering funds

The key observation is that some people "create private keys from just about anything using Sha256 (i.e. Sha256(password/phrase)). This, of course, is NOT a recommended way of obtaining a private key since if YOU can think of the word/phrase, someone else can too"

Maybe E noticed this in 2014 just like OP did. Then she decided to try to make a lookup table. First she hashed everything in a natural language dictionary. Then to try to make her hash lookup table a bit bigger, extended it to any string of a given length like a transaction id, wallet public key, etc that appeared in the blockchain. This is somewhat similar to a standard cryptanalysis technique - where you try using everything in RAM as a key to see if it's the LUKS key - but using these particular inputs is admittedly ad hoc.

However, the next textbook step to attempting a lookup table is to do rainbow tables - which E started to do, but then gave up after a few iterations since the space was too large, and apparently this was enough, to have found the private keys for a significant number of other people's wallets.

Once the E had that, it's trivial to write a script that performs onward transfers to other accounts controlled she controls and steal money. It also makes sense to transfer the funds through several wallets as a laundry. It's strange that the transfers occur precisely along the links in the rainbow table (a rainbow table is really a forest of linked lists) - very strange. It's possible E just got lazy, since this is one of the easiest ways to write the script that decides where to send the money, once she controlled all these sha256-chains (chains in the rainbow table sense) already. Of course, that laundry's not good enough, since OP has now discovered it and made all of us curious to identify E.

<comment><USER7> I would appreciate any criticism of this hypothesis. Far fetched as this is, I don't really see why OP assumes an "exploit," when good old fashioned precomputation - rainbow tables - explains the observation. Thoughts? I may be totally off.

PS. There may be records of IP addresses involved in some of these transactions. Does anyone know where to find that kind of info, to see what IPs E was running the scripts from? People using VPSs, VPNs and Tor sometimes leak their home IP.

</comment></comment><comment><USER8> > One of the things that fascinated me was the ability for someone to create > private keys from just about anything using Sha256

I'm also fascinated by this. For my next Bitcoin Treasure Hunt [1], I've been coming up with a lot of puzzles that involve private keys. It's so much fun to think about different ways to encode them. My first puzzle wasn't too interesting, but this one should be much more fun.

[1] [https://formapi.io/blog/posts/bitcoin-treasure- hunt/#bitcoin...](https://formapi.io/blog/posts/bitcoin-treasure- hunt/#bitcoin-treasure-hunt-v2-0)

</comment><comment><USER5> I've been trying to follow along with the article in Python and nothing is working. The article says that private key "KyTxSACvHPPDWnuE9cVi86kDgs59UFyVwx2Y3LPpAs88TqEdCKvb" is "4300d94bef2ee84bd9d0781398fd96daf98e419e403adc41957fb679dfa1facd" in raw bytes, but decoding base58 and hexlifying gives me something completely different:

In [17]: hexlify(base58.b58decode("KyTxSACvHPPDWnuE9cVi86kDgs59UFyVwx2Y3LPpAs88TqEdCKvb")) Out[17]: '804300d94bef2ee84bd9d0781398fd96daf98e419e403adc41957fb679dfa1facd012774e1c4'

Does anyone know what I'm doing wrong?

<comment><USER3> I used this tool and was able to follow along with the ones I checked: [https://github.com/matja/bitcoin-tool](https://github.com/matja/bitcoin-tool)

Most likely the discrepancy is that you're using raw base58 instead of base58check

      $ ./bitcoin-tool --input-type private-key --input-format hex --input 4300d94bef2ee84bd9d0781398fd96daf98e419e403adc41957fb679dfa1facd --output-format base58check --output-type private-key-wif --network bitcoin --public-key-compression compressed
      KyTxSACvHPPDWnuE9cVi86kDgs59UFyVwx2Y3LPpAs88TqEdCKvb

<comment><USER5> Actually, it looks like it's a combination of bitcoin-check and chopping off the first and last bytes. It matches then. Thanks for the bitcoin-tool hint, looks great!

</comment></comment></comment><comment><USER9> You should not publish other peoples' private keys; dumb as they may be.

While you should be commended for letting users know that they should use e.g. key strengthening (or, preferably, random numbers) for their private keys, you should not leak what are, whether by chance or intention, the private keys of other peoples' (bots'?) accounts.

There's nothing illegal about being an idiot.

It may be illegal to leak others' financial account information.

<comment><USER10> But what if my private key is sha('There's nothing illegal about being an idiot.')

You just leaked my info!

<comment><USER9> "Check out these account bank account numbers that I guessed the password to"?!

</comment></comment></comment><comment><USER11> Background: [https://bitcointalk.org/index.php?topic=2488493.0](https://bitcointalk.org/index.php?topic=2488493.0)

<comment><USER12> Might as well link directly to the source: [https://pastebin.com/jCDFcESz](https://pastebin.com/jCDFcESz) which really I think should be the article URL anyway (the tweet just links here too). Very interesting find!

<comment><USER13> I checked, the pastebin link was submitted an hour ago to HN and was immediately marked as [dead].

<comment><USER14> Meta comment, but this is why it is beneficial for users to vouch for good articles so they don't get lost on the new page.

</comment></comment></comment></comment><comment><USER15> Looks to me like he stumbled on a bitcoin payment processing system?

That would explain how the "bot" knows a transaction is about to occur and why the bitcoins were being transferred within minutes of arriving.

The addresses he finds are temporary addresses a customer is directed to send payment, and then transferred to a more secure wallet shortly after confirmation.

<comment><USER3> Lots of people are running bots which immediately steal payments to weak addresses.

<comment><USER15> Those bots still have to spend time finding addresses. If the transfer happens in seconds or minutes, its more likely the address was already known and expecting a deposit.

<comment><USER3> The addresses are generated ahead of time and placed into a huge database. Every new transaction that is broadcast is checked against the database, and if any vulnerable outputs are created they are swept immediately.

For example, watch either of these talks by Ryan Castellucci: [https://www.youtube.com/watch?v=f2s3_UG9IPU](https://www.youtube.com/watch?v=f2s3_UG9IPU) [https://www.youtube.com/watch?v=foil0hzl4Pg](https://www.youtube.com/watch?v=foil0hzl4Pg)

</comment></comment></comment></comment><comment><USER16> If many of these originate with some large player like an exchange or a miner, shouldn't we perhaps be able to trace it back to that place, and notify them. They might of course already be looking at it now that it has been made public. Actually, you'd think that they would have noticed their money getting lost.

</comment><comment><USER17> Related, but on my mind: How could we ever know how many bots are transacting on the blockchain? It seems that it is ripe for manipulation by those that benefit from higher transaction numbers.

Are exchanges audited to ensure they aren't artificially inflating the price by using artificial buyers and sellers? It seems like there is every incentive to keep the price high, and it seems like doing so maliciously would be quite straightforward.

<comment><USER3> 1.) Transacting on the blockchain costs fees. It would be very expensive to fake bitcoin transaction volume. Even if you're a miner, your fake volume would be displacing real volume that would be paying real fees.

2.) Transactions on exchanges never hit the blockchain, so exchange volume and blockchain volume are unrelated. Furthermore, keeping the price high would not be "quite straightforward". What method do you have in mind? The _only_ way to artificially keep the price high long-term is to place infinitely-large buy orders at the minimum price you want. This will obviously cost you unbounded amounts of money and would be financial suicide.

<comment><USER18> > It would be very expensive

Even for early miners?

Edit: I should have written early _buyers_ , since those wouldn't mind paying extra after their asset appreciating 10000x

<comment><USER3> > Even if you're a miner, your fake volume would be displacing real volume > that would be paying real fees.

You'd be missing out on mining revenue. And given that the marginal cost of mining tends towards the marginal reward for mining, missing out on revenue is almost as bad as making a loss.

There would have to be a substantial incentive to fake transaction volume in order to make it worth it.

Additionally, given that blocks are full these days, there's not very much scope for increasing the apparent transaction volume anyway. The best you could do is replace large "real" transactions with a larger number of smaller "fake" transactions.

I just don't think it's likely to be happening.</comment></comment></comment></comment>


Real-Name Registration Threatens the Lively World of China's Microblogs - <AUTHOR> http://www.wired.com/threatlevel/2012/03/opinion_anxiaochinamicroblog/

<comment><USER2> I don't mean to be rude but is this news? Is this unexpected?

"Police report that shooting criminals dead cuts down on recidivism."

I got a huge exposure to Chinese culture at Google when there was a _huge_ blow up over whether or not the phrase 'free Tibet' was offensive or not. A lot of participation in that discussion came from Google China where engineers who lived and worked in China got to share their point of view on how we in the US perceive the way of things.

My take away from that experience was that there are people living in China who believe that their benevolent rulers maintain order in a country that has been operating peacefully for thousands of years and this system is much better and more durable than any sort of populace driven government. Further, those folks believe it is a small minority of trouble makers who "just don't get it" when it comes why this is such a great system.

I don't doubt for a moment these same people are so glad that Sino Weibo will demand real names so that those trouble makers will either shut up or get arrested and put some place where they can stop interfering in the harmonious existence of the country.

In short, I learned that two people who had been educated in the science of critical thinking, could look at the same data and come away with two _very_ different conclusions about what that data meant.

</comment><comment><USER3> Korea has this already, I believe?</comment>


Ask HN: Have you ever gotten up and danced around you made a piece of code work? - <AUTHOR>

I just some got QT animation working. For some reason I had felt like I never would down it. Have you found coding success to be really exhilarating? <comment><USER2> Absolutely! The more difficult the code, the more jive in the dance. I've also been known to "woohoo" and "aww yeah" as well.

I like it, like Shaun says above, it makes the tedium worthwhile.

</comment><comment><USER3> constantly, when working on things I am passionate about that is! It's what makes "the grind" tolerable.</comment>


Apple Maps Vehicles - <AUTHOR> http://maps.apple.com/vehicles/

<comment><USER2> This is impressive...while I'll be using Google Maps on iOS for a long time to come...Google has such a lead that creating one's own geospatial dataset seems tantamount to reinventing the wheel...yet, it seems dangerous to _not_ have competition in this area, as it gives one company almost unilateral power to define the existence of geography (at least for day-to-day usage). And of course, using Google Maps means buying into their user-information-sharing system. Glad Apple is using its money to take on the challenge.

<comment><USER3> For me the biggest problem with Apple Maps on iOS is usability, not data.

The first thing I've ever seen anyone do when they start a route on Apple Maps is pinching to zoom out. No, you need to use the overview button. Wait, where's the overview button? You need to tap the map to show the button, and then tap the button and it shows the whole route. After that you have to zoom back in to see what's coming up next in the route.

<comment><USER4> oh man that drives me up the wall, but i also noticed that it drives my mother up the wall too, i guess even a 50 year old lady with limited tech experience also saw through that flaw.

<comment><USER5> > 50 year old lady with limited tech experience also saw through that flaw.

It has been my experience that these are the people most likely to snuff out UI flaws whether they know it or not.

</comment></comment></comment></comment><comment><USER6> Does anyone have a photo of one of these vehicles? I'd love to see it.

Apple is certainly in the long game with their maps... One interesting thing to point out is that while google streetview started as a project to augment the maps with photos, it quickly became clear that these photos of the streets could be a primary way to gather accurate real-world data about the streets, one-way signs, street numbers, and so on. Clearly Apple is up to the same thing here.

<comment><USER7> This article has one: [http://www.macrumors.com/2015/06/17/apple-maps- vehicles-engl...](http://www.macrumors.com/2015/06/17/apple-maps-vehicles- england-new-orleans/)

<comment><USER8> They aren't very aesthetically pleasing...

<comment><USER9> So what? Not everything apple does has to be shiny. If they do the job, why bother?

</comment></comment></comment></comment><comment><USER10> Eight years behind Google. I'm interested to see how quickly they can catch up!

<comment><USER11> It's unlikely to take anything like 8 years. Much of Google's effort during that time has been refreshing images of streets they had already visited. If Google has visted a street 4 times to keep the data up to date, Apple only has to visit it once to be just as up to date (and continue to visit regularly after that to stay up to date, of course).

edit: mixmastamyk beat me to it by 1 minute, so +1 to you sir.

<comment><USER12> That's not entirely true; Google does not refresh _all_ of its data every cycle: some "rare" locations (where few people live) have been visited only once during those 8 years.

To catch up you need to cover all locations, not just the frequent ones, so that takes more than one cycle.

<comment><USER11> Google doesn't cover 'all locations' so I think that's a red herring. Their best bet is to provide a service with unique distinguishing features that is competitive with Google. Similar or competitive coverage is just one measure of usefulness.

</comment></comment></comment></comment><comment><USER13> Interesting and not something I'd have expected from apple. That actually brings up an interesting question... How many miles of roads are in the us? Europe? How many of these vans will they deploy?

</comment><comment><USER14> Previously: [https://news.ycombinator.com/item?id=9691055](https://news.ycombinator.com/item?id=9691055)

</comment><comment><USER15> It's great that they provide this detailed what location when data.

However, it demonstrates that their maps still have some way to go. E.g. They are driving around southern Hertfordshire this week, where I used to live. Dacorum is a borough, not the name of an actual place; I've never heard of Hertsmere or the three rivers; and Welwyn Hatfield are two adjacent towns. 3 out of 7 place names is not great.

<comment><USER16> Not sure that it helps, but the one local to me is Massachusetts, USA, and they describe it as "Suffolk (Boston)," where Suffolk is the county name. No one would use that in day-to-day talk… maybe they have some more or semi- official name of a "region" in your area?

</comment></comment><comment><USER17> Any news on whether Apple will contribute these findings back to OpenStreetMaps, like Microsoft's apparent provision of Bing aerial imagery?

<comment><USER18> Haha! No.

</comment></comment><comment><USER19> This is the page to check out if you want to go maps photobombing.

</comment><comment><USER20> An enourmmous task to accomplish, but it improves its mapping data

</comment><comment><USER21> I'm really excited to see Apple's 3d model of street view versus Google's 2d skyboxes.

</comment><comment><USER22> Next step: JavaScript API?</comment>


Nik Cubrilovic Omnidrive lesson - <AUTHOR> http://claycook.wordpress.com/2008/10/16/nik-cubrilovic-omnidrive-lesson/

<comment><USER2> I accept that sometimes some people have problems with communicating when there's a crisis ... it could be pride, or maybe deep personal problems that can just cripple them and make them feel unable to face the world.

But what you don't do is take a 100k investment, spend it all, and then effectively ignore that portion of your life (and moreover, everyone else's) while you just carry on. And post it all on the net.

That's just flagrant, and disrespecting society to be honest.

Nik had the potential to be a lasting media darling. In the Aussie IT scene entrepreneurs with charisma are thin on the ground and even with a failed startup under his belt he would have had an enviable reputation. He probably would have found himself sitting on boards as a non-executive director, or having VCs tripping over themselves to be a part of his next venture.

The lesson: be respectful in business.

</comment><comment><AUTHOR> This saga has been going for a while. The back story is here ~ <http://flickr.com/photos/bootload/2913315731/></comment>


South Korean military starts iPhone ban in its major buildings, permits Android - <AUTHOR> http://www.koreatimes.co.kr/www/news/nation/2012/04/116_109859.html

<comment><USER2> There's some editorializing in the title here. The ban only covers two buildings, and any phone that allows them to add the monitoring they require (not just Android phones) would be acceptable.

<comment><USER3> > _The ban only covers two buildings_

For now, with plans to phase in over a couple years, hence "starts ban".

> _any phone that allows [...] (not just Android phones) would be acceptable._

Of which Android phones are the vast majority.

Given that the title field is space-limited, I think the summary is a reasonable one.

</comment></comment><comment><USER4> What happened to the "pattern of lights" that would temporarily disable the iPhone camera? For concerts etc.

<comment><USER5> As far as I've heard, it was just a patent application, it doesn't seem to have ever been implemented.

</comment></comment><comment><USER6> What good is software "blocking" hardware functions?! Enemy countries could go around this in no time

<comment><USER7> I assume it's to prevent malware (presumably installed by an enemy), not to prevent the device owner from using the hardware.

Ideally the software is installed in a way (rootkit) that can not be duplicated by remotely installed malware.

</comment></comment><comment><USER8> I hope this trend won't spread to Europe. I do not want anyone to install stuff on my phone or monitor it.

<comment><USER9> Opposite to Korea's Samsung, LG etc, Europe soon won't have much (Nokia) to protect or prefer. In addition France and Germany are traditionally week in mobile and software. so i wouldnt expect any bans .

<comment><USER8> As I read the article it is more about the military's access to the source code, as opposed to protecting local businesses in this case, therefore they allow android which is open source.

<comment><USER10> Think this is more related to the fact that Android has a very plugable Device Management feature, that allows remote wipes, etc. iPhone has similar features but not as enterprise-friendly.

<comment><USER11> I agree with it. If Apple supports Device Management scheme, S.Korea Military won't prevent iPhone. Actually not just iPhone but all other phones that MDM cannot be installed.

<comment> Apple-Guy Apple iPhone has supported MDM for years: <http://www.apple.com/iphone/business/integration/mdm/>

<comment><USER12> This should be the top comment on this article.

S.Korea bans phones that do not support MDM. iPhone supports MDM. Therefore iPhone is banned anyway.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> I wonder how they determine that an Android device is actually running their MDM software instead of a fake program that simulates it while being observed by the authorities?

<comment><USER14> I think the intention is to protect government information from being obtained by someone gaining unauthorised access to the phone (e.g. an employee takes their smartphone into the building, goes to a meeting, and someone else compromises an app on the phone and uses it to listen in to the meeting), not to protect against the legitimate owner of the phone.

So the owner of the phone deliberately faking the MDM software is probably outside of the threat model.

That said, someone who managed to root someone else's phone remotely might be able to tamper with the MDM software in advance while wi-fi is still enabled so that it doesn't function correctly.

</comment></comment><comment><USER15> News! Some wannabe journalist just discovered what has been the norm everywhere around the world for ten years!

<comment><USER15> People obviously misunderstood me. This article talks about military forbidding camera phones and similar devices like something new. In most sensitive facilities around the world, you can't even get in with your telephone, whatever model it is, and particularly if it comes with a camera. The novel (and somewhat praiseworthy) part is that they decided to selectively allow some phones by "controlling" them.

</comment></comment><comment><USER16> This is just so they can favor Samsung Galaxy phones. We save their ass in the Korean war and prevent North Korea from using nuclear weapons Seoul. And, this is how they repay us; typical ingrates.</comment>


France Begins Shutting Down Alternative News Websites - <AUTHOR> http://yournewswire.com/france-begin-shutting-down-alternative-news-websites/ <comment><USER2> And so it begins.

Yet another government rushing through poorly thought out laws that shuts down freedom of speech and expression to 'protect people from terrorists'.

It's especially sad given that A, this is France we're talking about and B, this sort of fear is exactly what the terrorists want people to feel.

</comment><comment><USER3> Can some French readers of Hacker News please weigh in on this? Why are you tolerating this sort of thing after witnessing the damage the United States did to itself after 9/11?</comment>


The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js - c-oreills http://blog.mongodb.org/post/49262866911/the-mean-stack-mongodb-expressjs-angularjs-and

<comment><AUTHOR> I really don't understand this no-sql everywhere trend. Types and structure definitions ARE useful. There are times when you may find them cumbersome, but most of time they're not (especially when working in teams). The more i think about it, the more i think my ideal stack would be this :

Postrgesql with no-sql extensions ( for when you may need flexibility), typed python or typescript or dart( or any language with optionnal typing) on the server, and typescripted js lib on the frontend I'd call it the Optional Typing Stack ( but ots isn't nearly as good as "mean" i must say).

<comment><USER2> Of course types and structures are useful but why do I need it in my database as well as in my app ? That's one reason databases like MongoDB have become popular because you can deal exclusively with your domain model and treat the database like an object store.

So you still have everything structured but not have to worry about annoying migrations.

<comment><USER3> >Of course types and structures are useful but why do I need it in my database as well as in my app ?

Do you write bug free code 100% of the time? I'm pretty good, but I definitely don't. And when there are bugs in my code, I'm grateful for a RDBMS with enforced referential integrity.

I've also had to work on projects where the initial codebase was scrapped all together. When that's happened I've found having the data in clearly defined columns and relationships immensely useful.

<comment><USER2> I have unit tests around my domain model so just as confident as I would be if I was using an ORM library. With the advantage of course of not having to worry about yet another library to manage especially working on mainly Java apps.

And like many are doing these days I do all my joins in my app so that I have the flexibility of moving objects into more appropriate storage mediums e.g. Redis or Solr without major refactoring.

I am not dismissing the benefits of having business rules in the database only that they aren't always necessary.

</comment></comment></comment></comment><comment><USER4> The real problem with this MEAN stack for any real project is maintainability in 5 years time. You can almost guarantee that within 2 years, this stack will be semi-unsupported in favor of a newer JS library, with all the current devs and support on this stack jumping ship to better versions.

That said, this is a very awesome stack to use for hackathons and short projects or prototypes.

<comment><USER5> jQuery has been a pretty safe bet for years. There's no reason why one of these Javascript frameworks won't also become a safe bet as well.

<comment><USER6> Angular maybe but Express? Even the longevity of Node is a gamble in my opinion.

<comment><USER7> From Express's package page on NPM:

20 765 downloads in the last day 127 921 downloads in the last week 489 285 downloads in the last month

Since it's essentially Sinatra for Node.js, I don't think it's too big of a stretch to say that it will be a part of the stack for some time.

I would say longer than Angular, as browser-side packages seem to have more churn on the basis of adoption of newer browser features.

</comment></comment></comment></comment><comment><USER8> _A few weeks ago, a friend of mine asked me for help with PostgreSQL. As someone who's been blissfully SQL-free for a year, I was quite curious to find out why he wasn't just using MongoDB instead._

The lead in seriously harms the technical credibility of the rest of the entry.

<comment><USER9> Having done a large personalization project (25 million+ users) with Mongo as a proof of concept I tend to agree. It's great for small POC, but it still has problems under large applications. We took tailored our data collections to take advantage of memory locality, but for that project it wasn't a good fit. I'm more interested in Hyperdex at this point. Mongo is great for getting something up and running quickly.

<comment><USER8> MongoDB is very suitable for some tasks (though it has the inevitable young product edge issues that early adopters get to enjoy), but my core issue with the lead-in is that the author sounds like the _problem_ with NoSQL, which is the "everything is a nail, here is my hammer" mentality, assuming that products like MongoDB are the successors of RDBMS', when that is absolutely not true. They are different tools for different purposes.

<comment><USER10> What are the different purposes, and how do I know that have have one versus the other, versus another, etc?

<comment><USER11> SQL databases are strongly typed and extremely good at enforcing consistency, whether you want them to or not. They are quite good at preventing many classes of bad data from being recorded in the first place, and allow you to do some types of low level data manipulation (joining datasets, eliminating duplicates, finding mins and maxes, etc) extremely efficiently.

NoSQL, on the other hand, is weakly typed and makes few if any attempts to validate your data, pushing that responsibility back onto you. They are very well suited to storing inherently inconsistent data (which, as a corollary, makes them very good for prototyping, when your data model is rapidly changing and growing). They also allow you to link much larger datasets into a 'document' which is retrieved as a unit with no extra computation.

So it mostly boils down to what kind of data you want to store. If you find yourself almost exclusively saying things like "All users have a username that is a string" or "I want to be able to find all products that cost less than $20" then you're probably looking for a traditional SQL database. If, on the other hand, you find yourself saying "some products have a width and height, but some just have a height, and a few have a volume instead" or "I want to be able to add custom fields to products on the fly" or "I never want to see purchases on their own, I always want to see them joined to the user that bought them" then you should probably consider a NoSQL solution.

<comment><USER10> > SQL databases are strongly typed and extremely good at enforcing > consistency, whether you want them to or not. They are quite good at > preventing many classes of bad data from being recorded in the first place

>NoSQL, on the other hand, is weakly typed and makes few if any attempts to validate your data, pushing that responsibility back onto you. They are very well suited to storing inherently inconsistent data

Actually, I've had to deal with that first hand. It gets particularly nasty when multiple languages with varying type-tightness interact with the same data.

It's nice to hear someone else put this into words.

</comment></comment></comment></comment></comment></comment><comment><USER12> The NNN Stack: NoJS (Python, Twisted, Cyclone), NoNoSQL (PostgreSQL) and NoSQL (Elasticsearch).

<comment><USER13> And you're going to write your front end logic in what?

<comment><USER14> One of the many compile-to-JS languages. Or just using emscripten.

</comment></comment></comment><comment><USER15> MEAN or how to be redundant in the elements of your stack (Express.js is already a Node.js framework) just so that the acronym were somewhat sexy.

</comment><comment><USER16> Hi all,

Author of the post here. Thanks for the excellent discussion, this is a very interesting read. Let me make a few comments re: some of the more interesting points I've read.

1) I love Redis, but in my book, if you're already using MongoDB, its more of a tool for reducing latencies once you're looking to scale. If I'm just looking to prototype I'll probably use one or the other, but not both. I love the MEANR / MEANER acronym though, but I can't support the EJS decision, I'm all about Jade =)

2) AngularJS not good for hackathons? Sounds like a subject for another post. Granted it may be that I'm just extremely biased towards Angular, I was an intern with the Google team that developed it in '08 and I've been using it since v0.9.9. However, I find Angular's slick two-way data-binding to be completely indispensable for building a prototype. There are two primary reasons for this, first I find the paradigm of writing Javascript which explicitly references the DOM to be brittle, and second it makes life easier for my designer because he never has to worry about breaking the frontend Javascript.

3) I agree that Javascript is a rapidly developing language and many of the tools that I use may well be obsolete within a few years. However, I think that I benefit from using the tools that I believe are best in the meantime, and when better tools are released, then we'll change along with them.

Thanks again for the commentary, I really appreciate it. I'll be coming out with a few more posts in the near future, please be on the lookout =)

</comment><comment><USER17> This is funny. After using Angularjs at the recent techcrunch disrupt ny hackathon, I was mulling over writing a post that said Angularjs is not good for hackathons! To be clear, I am a newbie and am very impressed with Angularjs. That said, debugging Angularjs for a newbie is a nightmare. It was very brittle in our experience. Likely, this is because both my hackathon colleague and myself had less than a week's experience with Angularjs. We found that it was easy to find simple examples online, going to an actual app was VERY non-trivial.

<comment><USER18> What sort of debugging problems did you run into?

<comment><USER17> Stuff just wouldn't work :p (sorry ... I know this is first year CS grad speak but I can't describe it better than this) In the model view of batarang, I'd just see a bunch of scopes with nothing in there. Clearly, exploratory programming isn't a good idea.

</comment></comment></comment><comment><USER19> I recently built a HN clone (for a much smaller community) using exactly this. As a solo / moonlit act, staying in a single language had huge benefits for me.

But I don't see the point of using an ORM with MongoDB... not saying ORMs are bad, I just don't think they have much to offer when there is no SQL to abstract and when you're doing everything in JSON anyway (in this stack). If I'm missing something, happy to be enlightened.

<comment><USER20> > As a solo / moonlit act, staying in a single language had huge benefits for > me.

As someone who spends each day switching between Erlang, Ruby, Javascript and sometimes C (with various infrastructure components also requiring bits of Java or Go) I find a the idea of a one-language stack sort of mindblowing (though I've always sort of fantasized about connecting my Erlang servers directly to an Erlang VM running in the browser over the distribution protocol.)

Would you mind expanding on those "huge benefits", as you've actually experienced them? I've only ever really seen people describing theoretical benefits they imagine they might see if they did this, but nothing from anyone who has.

<comment><USER21> If you require expertise in 3-4 languages for a project, hiring becomes A LOT harder. And so does code review and assessment. Never mind the learning curve, attack surfaces, etc.

</comment></comment></comment><comment><USER22> Nice acronym, I use that stack + Redis. Need to find something else starting with E then I can brag about the MEANER stack.

<comment><USER23> RAMEN!

<comment><USER24> Genius.

</comment></comment></comment><comment><USER25> The MongoDB/AngularJS combination is really good enough on its own that you can shove most Language+Toolkits in there and have something together real fast I have use the following and its worked great each time

        MongoDB + Flask + Angular + Python
        MongoDB + Play + Angular + Scala

<comment><USER26> You should call it Scala + Play + Angular + Mongo. The SPAM stack.

<comment><USER27> Congratulations, you won.

</comment></comment></comment><comment><USER28> You can bring even more value to the table in terms of interoperability if you have the mongo api implemented on the client. No more looking at a different set of docs (backbone/angular/spine/ember/etc...) to figure out how to query the cache on the client differently than you do on the server.

The meteor guys have implemented this logic in a package called minimongo: <http://bit.ly/YmS3Y1>

</comment><comment><USER29> I've been working with a similar stack lately: MongoDB, ExpressJS, Node and Backbone/Marionette (Sorry, no snappy acronym). I've found it to be remarkably productive and would recommend giving it a try. Also, it's a lot of fun! If you're using Backbone (and apparently everyone is), you would do well to layer some structure on it with a framework like Marionette or Chaplin.

</comment><comment><USER30> Would be great if not for the CPS. I end up doing something similar except with Clojure instead of Node.js for my projects lately.

<comment><USER31> I'm currently a developer on the MEAN stack. Do you know of an example project where Node.js, or maybe even the client side js is replaced with Clojure?

<comment><USER32> Clojurescript clientside. Noir serverside. <http://www.chris- granger.com/projects/noir/> <https://github.com/clojure/clojurescript>

you could also use clojurescript serverside using node.js. this is what LightTable does iirc <http://www.chris-granger.com/lighttable/>

<comment><USER33> Be aware, Noir is deprecated: <http://blog.raynes.me/blog/2012/12/13/moving- away-from-noir/></comment></comment></comment></comment>


Disneyland Closes California Theme Parks - <AUTHOR> https://parentology.com/coronavirus-creates-massive-shutdowns-across-us-full-list/ <comment><USER2> Official word from Disneyland: [https://twitter.com/DisneylandToday/status/12382041026492661...](https://twitter.com/DisneylandToday/status/1238204102649266198)

</comment><comment><USER3> This is a terrible article, something like [https://www.cnn.com/2020/03/12/media/disneyland-close- corona...](https://www.cnn.com/2020/03/12/media/disneyland-close- coronavirus/index.html) would be much more informative and readable. Dang, is a link change in order?

</comment><comment><USER4> The article has a different title and doesn't back up the claim.

"Disney parks in Hong Kong and Shanghai, China have also been shut down momentarily, along with the parks in Japan. There has been no official mention of shutting down US parks."

<comment><USER5> New York Times reported they are closing Disneyland [https://www.nytimes.com/2020/03/12/business/disneyland- coron...](https://www.nytimes.com/2020/03/12/business/disneyland- coronavirus.html)

Not sure if they will also be closing the Orlando parks yet. Maybe it's worser in California or just due to government mandates.

<comment><USER6> Makes sense. New guideline is 250 persons in a public gathering. Lines for certain rides easily exceed that number.

<comment><USER5> Yeah. Last I seen some places said no more than 1,000 like in San Francisco. So figured in reaction to that. Don't think Florida is issuing stuff like that yet but probably monitoring things.

Edit: oh just seen the 250 ban is for the entire state of California. Just not county by county thing anymore. Looks like Universal Studios Hollywood too.</comment></comment></comment></comment>


Ternary Trouble in Perl - <AUTHOR> https://hackernoon.com/ternary-trouble-in-perl-fc138b345843 <comment><USER2> His problem has nothing to do with commas at all. my (@array1, @array2) = ...; will always assign all of the right side to the first array. This is just the way perl works with assigning lists to arrays. There's a few other ways you can do this instead.

        # with array references
        my ($arr_ref1, $arr_ref2) =
            (index($str2, '-') != -1) ?
              ([split /-/,$str2], [split /;/, $str4]) :
              ([split /:/,$str2], [split /;/, $str4]);

The above will assign two array references to each scalar variable.

The other option is similar but only works in newer perls with a feature called "refaliasing" and "declared_refs", which are still considered experimental, but which are expected to be marked as stable in 5.30 (If my memory serves)

        use feature qw/refaliasing declared_refs/;
        my (\@arr1, \@arr2) =
            (index($str2, '-') != -1) ?
               ([split /-/,$str2], [split /;/, $str4]) :
               ([split /:/,$str2], [split /;/, $str4]);

This takes the array references and assigns binds them to the arrays similar to what the author originally intended.

This is a result of the same problem that perl's default argument passing has with list flattening.

        sub foo {
          my (@a, @b) = @_; # load the arguments that were passed into the subroutine

          ...
        }

        foo(@data, @names);

That will result in both sets of values to be assigned to @a and nothing in @b, because @a ends up consuming everything.

Ref-aliasing with perl's prototypes will allow you to make this work like you might expect if you aren't experienced with perl's quirks but generally when you see this pattern you should be passing a reference to begin with and not trying to use the "magic" to hide that from the callers.

You can play around with these examples in an pastebin that allows running live perl code (server side), here [https://perl.bot/p/gblj94](https://perl.bot/p/gblj94)

EDIT: fix the code slightly, and provide interactive pastebin.

<comment><USER2> A slightly bizarre version of this that nobody should ever use. If you see someone doing this, tell them they are a bad programmer and shouldn't be putting code into production. It's also unlikely that this would actually be useful for the real code in the authors situation because it ends up mostly limited, but the technique can be useful even if this example shouldn't be done this way.

        # declare our arrays
        my @arr1;
        my @arr2;

        # alias specific elements to the arrays
        my \$first = \$arr1[0];
        my \$second = \$arr1[1];
        my \$third = \$arr2[0];
        my \$fourth = \$arr2[1];

        # assign to those aliases.  note the , 2) added to each split.  This forces each split to only ever produce two values.
        ($first, $second, $third, $fourth) =
            (index($str2, '-') != -1) ?
               (split(/-/,$str2,2), split(/;/, $str4, 2)) :
               (split(/:/,$str2,2), split(/;/, $str4, 2));

This is bad code simply because you're unrolling the arrays and not using things the way you should in the language. But this does demonstrate how refaliasing can be useful for doing some other weirdly specific things. This also works for things inside hashes and other perl data structures.

</comment></comment><comment><USER3> It appears the author is trying to assign two variables to a single result, essentially,

        my (@a, @b) = ["resulting", "string"]

Hence @b has no assigned value.

The Perl Beginners list is also a good place for this sort of discussion, [https://lists.perl.org/list/beginners.html](https://lists.perl.org/list/beginners.html)

</comment><comment><USER4> There are two issues here.

First, in list assignment the first array or hash will soak up all remaining values not yet assigned.

        my ($first, $next, @rest, @empty) = (1, 2, 3, 4, 5);

$first is now 1

$next is 2

@rest is (3,4,5)

@empty is undefined;

see: [http://perldoc.perl.org/perldata.html#List-value- constructor...](http://perldoc.perl.org/perldata.html#List-value-constructors)

The second issue is that the split() function takes an optional "Limit" argument (split /PATTERN/,EXPR,LIMIT)

This causes the example code (split /-/,$str2, split /;/, $str4) to be evaluated as split /-/,$str2,split(/;/, $str4) which evaluates as split /-/,$str2,2

Here, split /;/,$str4 evaluates to 2 because, in scalar context, split returns the length of the resulting list - since there are two elements after splitting $str4 it returns 2.

In this case, the result of splitting $str2 results in two elements so the limit doesn't matter.

If $str2 were 'This-string-has-many-dashes', the result of (split /-/,$str2, split /;/, $str4) would be:

        array 3[0] is: This
        array 3[1] is: string-has-many-dashes
        array 4[0] is:
        array 4[1] is:

see: [http://perldoc.perl.org/functions/split.html](http://perldoc.perl.org/functions/split.html)

</comment><comment><USER5> I want to preface this with _please_ don't write Perl like this, and don't blame it on the language.

But anyway, there are multiple issues. One is that, as other comments point out, all the results are going to the leftmost variable.

But the other is indeed fixable with parentheses. The code provided outputs two items when it presumably should give four.

        my (@arr3, @arr4);

        (@arr3[0..1],@arr4[0..1]) = (index($str2, '-') != -1) ? (split (/-/,$str2), split (/;/, $str4)) : (split (/:/,$str2), split (/;/, $str4));

        array 3[0] is: This string has two sentences
        array 3[1] is:   A dash separates them
        array 4[0] is: This string has different punctuation
        array 4[1] is:  a semicolon

<comment><USER2> Yea, using slices can accomplish this too. But if you're going to be using slices or a fixed number of elements on the left hand side you should also be using the third argument to split($delim, $input, $count) to tell split to only produce so many outputs. If the input string would split into more than two pieces in your original code you would end up overflowing into @arr4 and losing results from the second split.

<comment><USER5> Making it robust or sensible presumes there's some sort of coherent intent behind it, which was already disclaimed in the blog post.

</comment></comment></comment><comment><USER6> Check arr3[2] and arr3[3]

How would perl know to assign only the first 2 strings to arr3 and the next to arr4? It can't, so it assigns them all to arr3.

Also why such terrible names.

Also why ternary at all, it's clearly(!) less clear in this case.

</comment><comment><USER7> If you are not preserving the separator, why not

foreach my $sentence(@sentences) {

       foreach my $fragment (split /\s*[-:;]\s*/, $sentence) {

         print $fragment, "\n";
    }

</comment><comment><USER8> Try more parenthesis or perlmonks.com

<comment><USER9> Both are wrong answers.

[] "parens" (arrayrefs to enable two list assignments) would be ok, but we don't call [] parens, they are called brackets.

perlmonks is long dead.

<comment><USER2> Perlmonk's isn't dead even if it's a shadow of it's former self. That said reddit's perl subreddit [1] might be a decent choice as is IRC (freenode #perl, magnet/irc.perl.org #perl-help) for live help.

[1] [https://reddit.com/r/perl/](https://reddit.com/r/perl/)</comment></comment></comment>