Hacker Newsnew | past | comments | ask | show | jobs | submit | kurnikas's commentslogin

So I've actually built patterns using their system. Basically you define a layout using JS and defining a series of points and offsets and lines. You can refer to variables such as body measurements or other dimensions for bags. https://freesewing.eu/ is their more "consumer" facing site where you can enter your measurements and then download sewing patterns sized for you specifically.

One of the other nice things they do as part of the pattern design process is testing the pattern makes sense at many "scales" and so you can actually define a "body" the size of a doll and use this for defining dolls clothing, or make really size inclusive clothing, there are members of the community with varying disabilities such as forms of dwarfism who otherwise struggle to find appropriately sized clothes.


I got dinged for clicking "report as phishing" as part of that process forwards it to microsoft threat intelligence in outlook and so their systems said I forwarded and therefore fell for the phishing, now I look for a particular header and put all of those messages in a "phishing" folder


I run my organization's phish sims, and we had a similar issue one month. A bunch of people failed for downloading attachments. When I looked into it further, all the attachments were downloaded by the same Czech IP address. With some research, I found that it was an AVG IP address. The fix is very simple. The phish sim service has a place to exclude IP ranges. Any activity from those IPs are just ignored. I'm sure all phish sim services and software have this ability.


Question: why is clicking on the (test) phishing email's link "fail"? Isn't the whole contract between browsers and society that one can safely open any website they want (ie loading a webpage is safe), and what you do on the actual site is the actually unsafe op?

Asking because in the vast majority of cases, the phishing landing page has way more signals to recognize than the email headers.


Unfortunately not. If there is a 0 day vulnerability, or you're running an older version of a browser for a known patched issue, you may find yourself with a remote code execution, or 0 click download. Or it could be another kind of exploit, maybe your email service is vulnerable to XSS attacks. Like operating systems, browsers can have security issues too. So trusting your browser to see if a phish is really a phish is just unnecessary risk. I've worked with clients that have ended up with crypto lockers from clicking the link. Even from the IT side, I'm not going to increase the risk by opening a known phishing link to check how good it looks. If I am, it's going to be in a system that doesn't have active logins to other systems/sites, and is in easily disposed and reset. Check out all the YouTubers getting channels hacked with session stealing. Yes, they are falling for phishing attacks, but you really don't know what the attack vector is going to be. It might just be a fake login, or it could be much more sophisticated.


Thanks, that makes sense!


Now when I see a phish, I check to see where it is coming from. 97 percent of the time, it is a test. We're getting these tests often enough that I just assume that's what it is.


Which is fine, actually. If you see it and think "oh, IT is at it again" and delete it or report it, mission accomplished, because there is still that 3/100 chance it is real.


It only works on fake fishing.


So when you look at the sender of a suspicious email and it's not the phish sim service you just go ahead and open it? That doesn't sound like a problem with the phish sim.


It's certainly a problem with the phish sim if you're trying to teach people not to open random links and instead you're teaching people not to open phish sim emails.

It fact, it can be actively harmful if it creates a false sense of security.


> We've simply gotten used to them: Dealing with the idiosyncracies of bash, vi, or the JavaScript type system

This stuck out to me, there seems to be a trend in UX/UI where any move away from the "simplest path" is seen as a huge negative. Could it be the case that we use these tools (especially UI patterns like vi) because after the learning curve the give a huge amount of value? It seems like we are assuming that we should make a developer tool with the same level of "immediate familliarity" that we try to build into a website where customers will bounce easily, for an audience who is willing to spend time learning a tool if it provides value to them.


Rich Hickey has a pretty interesting take on this very topic where he compares programming languages to instruments, and how instruments aren’t for beginners. How it takes work to become good at playing an instrument, and how that isn’t a bad thing.

> But look at this guitar player with blisters. A harpist has blisters, a base player with blisters. There's this barrier to overcome for every musician. Imagine if you downloaded something from GitHub and it gave you blisters. Right? The horrors!

That whole talk is filled with some interesting takes on designing and building software (with the usual skew that paints Clojure in a good light, so take it with a grain of salt if necessary).

[1] https://github.com/matthiasn/talk-transcripts/blob/master/Hi...


> Imagine if you downloaded something from GitHub and it gave you blisters. Right? The horrors!

I'll have to remember that next time someone mentions that C should be a dead language.

(I actually think C is a fine language, but should be deftly handled)


> Imagine if you downloaded something from GitHub and it gave you blisters

You mean Haskell?


I'm a designer [0] and an engineer — you'll take my shell from my cold, dead hands.

There are two issues here:

a) Designers trying to simplify everything beyond usefulness is a good instinct gone haywire. Simplification helps, but without an understanding of accidental complexity versus essential complexity, one is bound to end up painted into a corner with no flexibility left in the app. Few designers understand this, and those who do got it the long way round — by working on products that have a lot of essential complexity, like AdWords, and by repeatedly fighting those battles

b) An engineer's operating environment, OS, IDE, shell, terminal, is a reflection of the inside of his or her mind writ large. Like every Jedi has to build their own lightsaber, every engineer has to go through this pain of building out their weapon, because one's workflow is how one thinks, how you look at the problems at hand. No UI designer can help with that.

[0] (Because it's relevant to the context: ex-Google, ex-Facebook as professional experience)


I like this idea of how "one's workflow is how one thinks".

There is a great little book - Daily Rituals [0] - that goes into many artists' and scientists' daily habits. The habits are very much along the same lines as your thought - they are workflows for how the individual tends to think best.

I'd love to see someone put together a website or book that did that in the context of software engineers' workflows. Does someone know if a resource like that already exists?

[0] https://www.goodreads.com/book/show/15799151-daily-rituals

-edited for grammar.


I digress but I am really interested in your experience as both dev and design as I am going in this path too.

How did you juggle acquiring skills for both roles? Also, where there times you had to struggle between the two mindsets on a task?


[flagged]


You could take it up with Cisco, who have been certifying "Network Engineers" for decades.

I get your complaint; my father is a fully qualified and slightly/weirdly eminent electronics engineer (and IEEE member), so from a young age I've been made aware of the sanctity of the term in that context.

But the term has been used in other contexts for a long time, and most people understand the distinction.

It's not a hill worth dying on. Best save your energy for more important battles.


There is a difference between being an engineer and holding a license (e.g., PE) from some organization.


In some jurisdictions the title "engineer" is protected because it does imply that the person is licensed.


[flagged]


Yes. You may not like it. I may not even like it but everyone from people who drive trains to technicians in lots of areas use the title.

Furthermore, tons of experienced working engineers outside of software don't have PEs. They're just not needed in a lot of contexts.

Edit: I'm referring mostly to the US. Licensing bodies in some places (perhaps including some US states) may say that only licensed engineers can be called/are engineers although the degree to which such strictures are followed will almost certainly vary. (I was told this was the case in Texas but there's no shortage of people in Texas who call themselves engineers but aren't PEs.)


This isn't always the case -- it depends on where they practice, see https://www.peo.on.ca/engineering-licensing-body-clarifies-u... for example.


Who gets to decide what makes you an ‘actual’ engineer?


Your engineering state association decides. Same as the medical associations, bar associations for lawyers, etc.


> Your engineering state association decides.

Why should they get to do that? What do they know that I don’t?

I have a Master of Engineering degree but I’m not chartered - I’m still going to call myself an engineer no matter what anyone else thinks about it.

> You don't call yourself admiral right?

Because I’m not commanding a fleet. If I ever came to command a fleet I’d start calling myself admiral and as long as I’m actually doing that it’d be fine. If you’re doing engineering then you’re an engineer. Some of the best software engineers in the world have no professional qualification.


It's not about titles. It's about what you're allowed to do/practice. I can certainly call myself doctor without an MD or other medical degree for which the title is customarily used. I might even do so if I had a PhD. I suppose I could do so in any case although people would think it strange if I didn't actually have a degree the same way they'd think it quite odd if I insisted on being called Your Highness.

However, if I were to start practicing medicine in anything other than a first aid context or if I were to mislead people into thinking I was a certified medical professional, that's not allowed legally.

By contrast, while PEs are required especially for signing off on certain documents in civil engineering, there is not in general any requirement to have one to practice engineering in the general case. In fact, there's no requirement for an undergraduate degree.


> please do not call yourself an engineer

> just anybody can call themselves engineer?

> It's not about titles.

It was about titles!


In all fairness, you may be operating under an industrial exemption if you are doing legitimate engineering work and not even realize it.

What you cant do is profess capital ‘E’ engineering work without running afoul of the law. That’s akin to practicing medicine without aboard certification, even if you claim to be a doctor because that’s what your degree says.

Degrees and licensed are related, but different in terms of the profession.


Not everybody is in a US state. UK statutory restrictions don't cover just "Engineer": https://www.engc.org.uk/international-activity/access-to-pra...


Addendum: can someone tell me what's wrong with using software developer as a description of what we do?, why do we need to borrow other professions titles?, it's because we want more respect?


I would guess that's the short version of it. I would surmise that 'engineer' basically means to do a hell of a lot more rigorous logic testing of the software and hardware products and would therefore also get paid more. Then comes along these fancy little startups who want to hire away that talent but don't fully understand that the word 'engineer' is a protected word in but do know the context basically suggests more responsibility. So then they make leading roles 'engineers' and supporting roles 'developers'. Then it snowballs from there because software isn't _nearly_ as rigorous as a civil engineer or mechanical engineer where the word means that you're legally responsible for the lives at stake.

I honestly think that software "engineers" should be legally liable for the lives at stake though.


I've always referred to myself as a Developer, as my degree is Info Tech, not Engineering.

I'm not an accredited engineer, so I feel I have no right to the title.

It really annoys me that some manages at work call themselves Release Train Engineers.


I have a BSME degree. Mostly I write firmware.

Generally I think an engineer as someone that does design. Key part of that is some sort of analysis. That can be ad hoc, standards based, or formal.

Most of the time software feels like craft to me not engineering. Otherwise I'm more on the side that a license an engineer doesn't make. There are engineers without degrees designing and there are fat fuck PE's that just sign their name over and over for $300/hr.


Does your state recognise software engineering as a chartered profession?


I'm not sure there even is an exam in the US you can take any longer for software engineering. [1]

[1] https://www.nspe.org/resources/pe-magazine/may-2018/ncees-en...

Added: So, basically the grandparent registered on HN so they could leave comments about how people without PEs shouldn't be allowed to call themselves engineers.


>An engineer's operating environment, OS, IDE, shell, terminal, is a reflection of the inside of his or her mind writ large.

Shout out to the people that don't really bother because they're good enough to adapt to any setup. :)


Look I can adapt just fine. Even onto projects that run on Windows if I really need to, but investing time into making your personal environment better and faster is really, really worth it.


Shout out to the people that use the best tools for the job because they're good enough to optimize their setup. :)


For things like vi, I'm developing the "left handed mouse" analogy:

Many mice are ambidextrous (e.g. the Apple puck). Most are weakly right-handed with a slightly assymetrical shape. Some are very strongly right-handed (e.g. vertical mice) and can't be used sensibly in the left hand. So left-handed mice also exist.

Some people are naturally left-handed. We (as a civilisation) used to treat this as aberrant but have now recognised it, and that different tools suit different people.

I believe that something similar exists in programming tooling in relation to how people think about programs. There are clearly some people who have a strong, unusual "handedness" and have developed tools to match (e.g. Colorforth). A few people discover these and find them amazingly usable. Most other people find them baffling.

Consider the three propositions:

a) Jimi Hendrix played guitar in the wrong way with the strings in the wrong positions

b) Jimi's configuration was correct and everyone else was wrong, because he's producing the objectively best music

c) Jimi was left handed, and had constructed an accomodation which worked for him but should not be expected to work for anyone else

Far too many discussions of programming tools devolve into (a) versus (b), largely because people want there to be an objective ranking of who the best programmer is and what the best tools are, rather than allowing for diversity of (programmer x tool).


> aberrant

Pretty sinister, if you ask me.


Maybe a bit unrelated, I got used to Windows 2000, then window XP, then Gnome 2, then Gnome 3 came. So I stuck with Gnome 2, then moved to XFCE, and now with RHEL 8 I had to use Gnome 3 because there were no other options. Gnome 3 is an absolute horror show. I don't know who made it, for who, and what the theory behind it is but I don't see how it would be easier to use for someone non technical, my parents both understood how to use Windows 2000. It is just weird. It is harder to multitask as efficiently as I did in XFCE and Gnome 2. Gnome 3 is not simpler - it is just more convoluted.

And I feel this is a very similar situation with other tools. I edit code with vim, in a terminal. This is simple as dirt. I do it because it is simple as dirt. Visual Studio is incredibly complicated to me because to do the creating code part my job I need to understand the following:

- How code is built.

- How to build the code without using any graphical front end.

- But now when you bring VS into the mix I need to also understand visual studio. It does not remove complexity, it adds it.

Similar thing with debugging, I need to understand all the ins and outs of debugging but now bring VS into the mix and I need to understand it's stupid UI.

I like simple, my mind is simple. I can learn things, if there are rules and patterns it makes it easier to learn, but the less things I have to learn the happier I am. I don't have an option to not learn some things, like how to do build automation, how to debug code, how computers work, etc. But I do have an option to not learn something entirely useless like VS.

I think the lie being sold is that somehow you can be a programmer without actually knowing how to use a computer. And to know how to use a computer is not the same thing as knowing how to click on things in the UI with a mouse. To know how to use a computer you need to understand how to use it to do automation - and once you need to do this VS is just a nuisance.

Just a rant I guess.


I think you are missing an important aspect: VS can help you in mental tasks the same way a jackhammer can help more than a pickaxe in physical tasks.

Sure, the pickaxe is simpler, but it will take you a lot longer to break that concrete with a pickaxe than with a jackhammer, because of simple human limitations.

Similarly, refactoring and advanced code navigation support takes a while to learn how to use, but once you do, it empowers you through technology to quickly do things that your mind would take much longer to do by hand.

For example, say you want to extract some code from the middle of a function into a separate function. With vim, you would generally have to manually move the code, write the new function header, then start to painstakingly inspect the code to identify the parameters to pass between the two. You will probably make mistakes and have to wait for the compiler to find them. All in all, assuming it's a bit of hairy code, it might easily take you more than an hour to get it working. In VS, you would type ctrl-r, ctrl-m (Refractor, extract Method) and it would automatically detect all of these for you, pop out a dialog box, you'd enter the new function name, Tab, param name, tab, param name etc, and enter when you're done. Maybe 5 minutes all in all, assuming you also do some ctrl-r, ctrl-p (refractor, parameter) afterwards to extract some larger expressions back into the original function.

Similarly, you have things like 'analyze data flow to...' which can find all places in your program where a particular value can be written to, and do that recursively until you get to the original source. Same thing - this can be done by hand with a series of finds and so on, but an advanced tool will just help you do it faster.

But, just like with advanced editing in vim, you need to take the time to learn the tool until you can get the most out of it. Same as the first time you enter vim you're likely to fumble to even be able to exit, you can't expect to be productive in VS if you don't take the time to learn what it can do for you.


VS is great for visual debugging, the build was secondary: you set it once and forget. But it only worked in the era of the proprietary software because you didn't have much third-party stuff to link into your project. Testing has changed too: you'll write an automatic test anyway, which means that the software is shaped for debugging by writing tests.


VS is decent at debugging if it does not fall apart in the process - which for me happens more often than not. So not really useful.


The only way I found of making Gnome bearable these days:

https://extensions.gnome.org/extension/1160/dash-to-panel/


I also use it, but it is quite buggy and not quite enough. Luckily xfce is now available for RHEL8 via EPEL.


> then moved to XFCE, and now with RHEL 8 I had to use Gnome 3 because there were no other options.

Wait, what happened to XFCE? I use it right now.


RHEL8 doesn't let you install a different desktop environment?

I'd look into switching to Fedora. I use the XFCE spin and it is stable.


I think there should be a clear distinction between your tools and... let's call them "utilities" what comes to UI. It is perfectly okay to make electricity plug, water faucet, toaster and the power button on your computer not only so easy that an idiot can use them, but so easy that an idiot can't use them wrong. Not only because requiring mental energy to use these is irritating but also because it can be dangerous.

Your tools, then again, chainsaw, microscope, text editor... have no reason whatsoever to have an UI that is intuitive without training[1]. Because without training you are anyway going to be either dangerous, useless or in best case just really unproductive.

[1] of course, the UI needs to be efficient after training.


And, in the case of things like chainsaws, they shouldn't be needlessly dangerous if a user is not as well trained as they should be or if they're simply inattentive/tired/etc. (And in the case of software, you should generally not be able to cause massive damage/loss of work because you picked the wrong menu item.)


My point of view is different: there has to be a really strong reason to move my eyes from the code, and in the editors there should be respect for that. For example, I don't want to move from Atom to VSCode because VSCode has those huge icons that take space and distract me, when all I want in the default editor UI is the project directory tree and the code. Everything else should be opt-in.


For what it's worth, you can easily hide those icons and access everything through the menu or command bar.


Right but VSCode doesn't work well with that bar disabled: for example, now I hid the activity bar (that's how it's called it seems), I clicked on a .status file and VSCode said "There are extensions for this file". I clicked on that, and now I have an extensions bar at the directories tree bar place. This happens because this UI setting is not the default one, so you encounter such kind of confusing behaviors every time you move away from the default behavior.


Is that a problem? There's only one sidebar. I agree there could be more, but I don't think there's much to be gained by it. Just learn the keyboard shortcut to bring up the folder tree. Or customise the icons so that they stand out less. Heck, I keep the sidebar collapsed most of the time since it's so easy to toggle it on with the keyboard.


I'm talking about UI/UX, not about shortcuts. If you switch my important sidebar with a marginal one it's a problem to me, from the UI/UX point of view. If you really want to talk about shortcuts: I don't want to learn the shortcut for the directories tree, because I just never hide it. And I'm talking about my flow, which might be different from yours.


It actually does work well with the bar disabled. Everything is emacs accessible , the menu is just a wrapper around text commands, like they are in xemacs.


I've given an example of what doesn't work when you move away from the default behavior, that's the point


In "The Design of Everyday Things" Don Norman describes this distinction as knowledge encoded in the head versus knowledge encoded in the world.

For professional tools knowledge encoded in the head supported by appropriately encoded knowledge in the world absolutely is a viable approach, provided there's appropriate feedback and conceptual mapping corresponds to the mental model a user has about how that tool works, i.e. actions and reactions should be consistent.

With modal design patterns such as the ones used by vi, for example, this can become a problem.


Listing vi in there shows that the OP, even if they may have good points in general, is limiting what good UX is to certain specific attributes, whereas developers want to optimize for additional attributes.

And this isn't just me saying that because I like vim. It's because of the objective fact that nearly every developer tool that is created will include a vim mode. And if included as an extension it will often be one of the most popular extensions. What that objectively indicates is that there is a large contingent of developers who genuinely find the vim modal editing UX excellent, to the point they seek it in other tools as well (including browsers, mail clients, RSS readers, etc).


Yes, you are right I didn't put that very well. Modal editing really has a lot of benefits, even if I personally don't go for them (am more of an Emacs guy).

What I would say is that vi really doesn't give you a lot of interactive context -- and it's hard to add it on.


I think even complex products should have a linear progression from newcomers, curiously exploring the product for the first time, to experts, who want to do certain tasks as fast as possible.

It's simply not possible to learn vi by just using vi.

Also, the author emphasizes that just dumbening a product is not the solution.


Any examples of software that accomplishs this well?

A quick summary of my experience:

- Most complex apps are not learnable linearly: Ableton Live, Final Cut Pro, Logic Pro X, Photoshop, After Effects, Blender, all practically require reading the manual.

- A few apps are ok at it: Adobe Lightroom, and Sketch, although those apps also are probably less powerful than those in the first category, e.g., Photoshop can do the majority of what both of those apps can do, and more.

I would actually put shells and text editors as some of the easiest complex apps to learn linearly, because you can do so much with them with just cut and pasting text from the internet. Try following along with a Blender tutorial video that's not for an absolute beginner, and you'll get stuck almost immediately, because you won't know the keyboard shortcuts to perform the actions in the video. This happens far less with programming tutorials involving text editors and terminals.


> It's simply not possible to learn vi by just using vi.

I did. I learnt vi when I was told go fix this file on that computer, you have ssh, x forwarding won't work because you have 3 hops (embedded devices that won't allow forwarding of any kind), there is only vi on the box.

So I figured out how to use vi. It is not rocket science, there is not that much to learn, vi muscle memory takes time but also not even that long I think.


I certainly learned vi from vi (or I guess vim to be specific). The start page says "type :help or press <F1>", which led me to the help pages (and maybe doing vimtutor, can't quite remember), and then I "learned vi(m)" just working at it, poking and prodding at the various corners (and the manual for is excellent). No Google, no stack overflow, no teacher. Later I started looking up other peoples configurations and stuff, as well as some advanced guides, but I was already basically proficient at that point.

On the other hand: I don't see what's so bad about a product for professionals where you might need a teacher to help you learn. Photoshop is not a simple product to use if you've never interacted with it before and most users go through some tutorial or has a teacher or something. It doesn't mean that Photoshop has bad UX. This goes for lots of software made for professional use: try learning Autodesk Maya or Avid without external resources, I dare you.


Did you read about vi before? How do you know all the shortcuts?


I googled it. I did not know vi before that, and now I use vim as my main editor for code.


So you did not just "learn vi by just using vi". You have also used a browser, google, and tutorials found by google. There is nothing wrong with that. In fact congratulation on learning vi! But sadly your example does not illustrate that one can "learn vi by just using vi".


The intro screen tells you exactly how to open help and exit. Man gives you even clearer instructions.


If you just launch vim it tells you the basics of how to use it, and how to get more help. So it's definitely possible to learn it without external resources.

Emacs is the same.


There's not much to learn if you're editing the odd file ... if you want to use vim as an effective development tool, there's loads to learn.


I would think there is a lot less to learn with vi than with Visual Studio.


Oh yes, that is certainly what we do. And there's nothing wrong about that. We are definitely in the business of building tools for professionals, i.e. a bit of a learning curve is not the issue. The "professional hazing process" isn't necessarily bad. What I would say is that there is some (maybe a lot of) potential value that vi cannot develop simply due to the very reduced form factor that it has. I believe this never really has come to the fore because most programming languages are designed in a fairly limited way. I.e. they don't really take into account that they are a User Interface.

As positive examples I would point out the kind of interactive editing mode that you can find in dependently typed programming languages. I believe e.g. Idris has a pretty cool Emacs mode.


Bash and JS are interesting cases because they're so ossified core problems are impossible to touch.


> As a jr employee they’ll never rise to chief architect

This is so important, as a relativley junior developer at a 6 person web dev shop, the owner is the only other backend developer. I have no room for climbing, even if I get a job title upgrade or a raise, my responsibilities and the level I work at won't change. I will handle the day to day backend and the owner works on strategic choices. There is only so much impact I can make in this position


> There is only so much impact I can make in this position

I'm reminded of this talk : https://www.youtube.com/watch?v=hER0Qp6QJNU around the 8m30 mark is the pertinent point, but worth to watch before that to get where his point is coming from.


While muay thai does have point scoring, it is more like boxing where you score points for landing a damaging technique and do not stop on a point being scored. Funnily enough punches often do not score unless they cause considerable movement of the opponent as they are seen as less damaging than a kick, knee or elbow.

One area that is different to a lot of other sports is that fights aren't stopped for bleeding often as it is very common for thai style elbows to open gashes on the face. A lot of experienced fighters will have scarring around the eyes from getting cut with elbows.

That said in the west fights are split into 3 classes (4 if you include novice fights) C which has no elbows or knees to the head, B which has no elbows to the head and A which uses All legal thai techniques


This is a super cool idea, I know it would be also be super useful for teachers


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: