HNHacker News
TopNewBestAskShowJobs

csmithuk

370 karma · joined January 23, 2014

submissionscomments
csmithuk··on Why I’ll be Pirating Adobe’s Products From Now On
My IT budget for the year is about $500. Doesn't fit.
csmithuk··on The Horrifying Apple Super Bowl Ad That Time Forgot, 1985
Well they got the office market share projected right!

(yes this is sarcastic).

csmithuk··on Footage released of Guardian editors destroying Snowden hard drives
As an ex resident of East London (Leyton) he's right about it being a shitty area and having a high muslim population. However these two facts are independent.

I would lock my doors too. Only because I know two people who got carjacked.

csmithuk··on The Magic of strace
Indeed. Dyndns tends to be the source of much Internet clap...
csmithuk··on The Magic of strace
strace taught me that glibc never does what you think it does behind the scenes!
csmithuk··on Become an exceptional programmer by learning to ship
On the plus side, there are those of us who are brought in for their experience at untangling these messes and coming up with solid solutions that can scale up feature-wise. The same people will willingly dig out problems and fix them in production when all else fails.

People queue at your door if you have these skills.

Mediocre programmers create a lucrative market for unicorn shit as I was once told.

csmithuk··on So Singletons are bad, then what?
Tell me about it. To get single instance behaviour on windows you have to piss around with global mutexes.
csmithuk··on So Singletons are bad, then what?
Singletons are fine. It's just some idiots plug everything into them then realise they've blow their toes off with a monolithic ball of mud architecture.

I use a singleton on every project which is OO based but it only ever holds the service locator/container.

Asp.net MVC is a fine real world example of how to fuck up Singletons (routing dictionary, global action filters etc). Totally stinks and is coupled like glue.

csmithuk··on AMD reveals its first ARM processor: 8-core Opteron A1100
I did a similar thing. My P2-233 (at the time this was the top end) blew a PSU and I did my engineering writeup on a P66 (pulled from a campus skip) with 32Mb of RAM using heirloom nroff, eqn, pic and vi on FreeBSD because it was all I had access to and you couldn't compile TeX on that box in a week. I have a lot of respect for the troff family of tools and still use them now.

Cost of software and hardware for that was £0!

csmithuk··on IE7 users, we need to talk…
You obviously have no idea what COM is. Everything in windows is COM. It's not some one off enterprise thing that is obsolete.
csmithuk··on Tech House DJ Plays Same Sample For Five Hours
This reminds me of Nathan Barley.
csmithuk··on IE7 users, we need to talk…
Fair points there.

Unfortunately most products built in the early 1990s-mid 2000s suffer from poor architecture. The growth of companies and the technology shift were impossible to anticipate. This is the unfortunate reality of all of those <IE7 dependencies you see. Also there was no foundational research done into how to build these things -- people were pissing in the dark with immature tech and knowledge. This is no longer true fortunately.

Unfortunately for the average corporate, the cost/benefit ratio only becomes an issue when the vendor pulls the rug out from underneath you. In this case when IE7 is EOL in 2017.

We're destined to follow the trailing edge because that is exactly where the best cost/benefit ratio lives. Do nothing is cheapest.

csmithuk··on IE7 users, we need to talk…
5000 users and 500Gb isn't that large. Lines of code is a god-awful measure of work, especially in a verbose language like Java or C#.

It's not particularly large but add complexity to that and the work is insane. The application was implemented in C++ and COM for reference which is terse and complex.

I feel as if you have a flippant stance towards web-applications, which I promise you is incredibly misguided. Not everyone here is making TODO apps with Ruby.

Not particuarly. I've spent 18 years writing web applications (big ones) and do today. I'm a pragmatist and web applications are not for all use cases. In fact bar information presentation they are a complicated frustrating area. The emphasis is on smaller applications within this community by comparison which is where my point lies. The reality of real businesses with complicated procedures, processes and regulatory compliance is not something people have to deal with. Fanfaring about the death of IE7 shoots a big chunk of the industry in the face. These people do a disservice to us all.

Where to begin on this? To keep it somewhat related to the parent thread, I'd suggest that code for embedded systems is a different world than sharecropping on a Microsoft technology (or a code-bloat ERP almost certainly containing layers of awful sedimentary hacks placed by numerous outsourcing companies). In 2007, you had your head in the sand (while drinking the koolaid) if you thought ActiveX was a long-game.

The reliability and lifespan expectations are surprisingly similar. The delivered product is different but the processes and procedures are similar. yes in 2007 ActiveX had the writing on the wall but in 2007 the product was already 18 years old and was a 1998 port to COM/C++ from an AS400 platform.

Oh come on, this is just ageist. Was the guy that wrote something that only works on IE6/7/8 thinking ahead? What about an engineer that created a scenario in which hardware can't be updated? Unless your code is going on a satellite, congrats on over-engineering a solution that only works in a given architecture

Not ageist. When this was written, they had Internet Explorer 4 and Netscape 4. Try engineering a solution that fulfills the requirements with any other technology than ActiveX at the time. Even Java wasn't mature enough then. As for hardware it was designed to work for 30 years and they bought enough spare parts to make sure it does.

With most consumers thinking of computers as tools that access the web, thinking that you don't have to be incredibly reactive to change is myopic. Do you think that writing maintainable stacks for a changing consumer preferences and patterns is something done without planning?

This is a temporal argument. When the application stack was designed 16 years ago, the world was a different place. And thanks to the lifecycle guarantees of Microsoft, that guarantee was made up to 2017. In 16 years the same will be true. Time needs to be frozen for certain things and guarantees need to be made otherwise it limits the ability to write off risk against big projects.

If your customer thinks that she can predict needs for the business 10 years in advance, she's about to have her lunch eaten by another company.

Simply no. For some markets, yes but for a lot of traditional supply chains this isn't the case. The company has been around for over 100 years so they've obviously done ok with high lead times and a static model for the last 60 years. Whilst there are some disruptive changes, particularly in the consumer-facing and retail sectors, the sheer amount of work, knowledge and momentum required to enter some industries is prohibitive so they are unlikely to be disrupted by new technology startups.

The "technology press" is media and investors.

Yes. Noise. They focus on the technology company, not the company that uses technology purely as a function of its business.

The 'critical cogs' are maintained by kernel, hardware, and protocol devs that are typically paid by a company that doesn't obsess over running ancient code on dinosaur hardware because that doesn't scale with changing demand.

Actually no. The critical cogs are the ones that generate revenue. The kernel, hardware and protocol work is bought in. The unique algorithm, advantage or working model for your company is the revenue stream, not the stack. The stack is incidental to it. The port from COM to Java SE/EE here is seen as an incidental cost of doing business.

With respect, I feel like you're drawing a line in the sand and being smug because you imagine your problem domain to be on somehow more "pure" side of engineering.

No it's not pure; it's just a considerably larger problem domain than most people anticipate and an unrepresented area of the industry amongst these circles.

Everyone has a story to tell; this is purely mine. I'm not suggest it's right or wrong but there are two sides to every coin and people should consider both before they start a browser witch-hunt.

csmithuk··on IE7 users, we need to talk…
This is a big problem - you are right. Users don't like things changing either. It ranges from a few minutes to adapt to throwing toys out of the pram and having to be retrained on something minor. This is an unfortunately reality.
csmithuk··on IE7 users, we need to talk…
The two points are separate. The former is a fact, the latter is a general attitude.

Not our company fortunately, but I have stuff to integrate with their systems. They had supply and maintenance contracts and soure escrow. The supplier went under rather than dropped the product - this is not typical. The replacement is being built by ex-members of the supplier working for the company.

They won in a bad market so it's hardly a "tough" situation.

csmithuk··on Everest is littered with dead, exposed bodies [2010]
I imagine it added to the problem!
csmithuk··on Where should I start learning Assembly?
I started with the following book:

http://www.z80.info/zip/zaks_book.pdf

Wonderful book from which a lot of knowledge is applicable to other architectures straight away. It teaches you about planning, control structure implementation and the maths behind it all as well.

csmithuk··on Where should I start learning Assembly?
I disagree. It diverges into HLA (high level assembly) which is pretty much a macro monoculture that is tied to this book and nothing else. I was rather disappointed with the book.
csmithuk··on IE7 users, we need to talk…
Yes and no. So far cloud services have proven themselves too risky for a lot of people as they suffer from availability problems (Azure), data retention problems (Atlassian data loss), security problems (NSA anyone?), churn and inconsistency (Google apps), data protection and regional law (Amazon S3). I could go on all day.

This isn't really an option for a lot of people.

csmithuk··on IE7 users, we need to talk…
In the spirit of maintaining my argument...

The company should light a fire under the ass of their vendor or development department if they're being forced to live with some very serious security risks.

The vendor doesn't exist any more. This is a realistic problem. They had source escrow which results in them hiring a development team to port it. This has taken 4 years, including retraining all 5000 users and porting data. This isn't some shitty TODO list app or an Intranet - it's a full ERP with over 2 million lines of code and 500Gb of raw non-binary data. And yes this is still cheaper to run than SAP/Oracle.

Why are you supporting software that is a quarter of a century old? If it has undergone significant rewrites to work on those new-fangled color monitors, then you understand why things need to be upgraded.

Because the 30 year paid for and guaranteed support lifecycle isn't over yet. Not only that, it's tied to the specific hardware platform which is an embedded 80286. It doesn't have a monitor attached - it has a 40x8 text LCD screen and an RS232 port. New requirements and bugs do appear.

What is "non-engineering background trendy startup pushing culture" supposed to mean? While HN has a charlatan element, you can't legitimately think that the startup culture here isn't dominated by engineers.

I use the phrase engineer loosely with respect to software as it has in the last decade or so come to mean a different thing. It's gone from individual who carefully plans and creates something with meticulous attention to detail and extensive knowledge of requirements to individual who makes something with little thought. Note: this isn't every case but it changes the meaning of the word, much as you can say "I love you" too much...

Do you also scream "la la la" while the tips of your fingers are lodged in your ears whenever in architecture meetings? A web browser is an ideal consumer (ubiquitous, cross-platform, cheap) of a large number of business applications and high availability demands writing software that's internet-aware (that feels so strange to even have to type).

Yes, it's actually my job to ensure that due diligence is done and put good engineering standards and technology in place. La la la doesn't cut it but I have to think ahead 20 years in some cases and make a call. If something doesn't make sense in that timescale, then it gets discarded. Your personal opinion isn't necessarily that of a risk assessment.

It sounds like your perception of the industry is antiquated. A 10 year cycle without maintenance to keep the codebase secure/running on modern hardware/platforms?

Industry? There are two industries at the moment. The one in the technology press and everywhere else. I firmly circulate in the latter. There is not a noisy presence but a large and realistic one that makes critical cogs turn behind the scenes. Whether or not this is "antiquated" or not is purely conjecture.

csmithuk··on IE7 users, we need to talk…
Actually no they don't unless they are a really small subset of HTML/CSS.

The box model was broken for years, don't even get me started on tables, JavaScript is the most loosely defined language to have ever existed, there have been several different document parser models (HTML, XHTML, HTML5) it's unreal. At best, most browsers these days estimate what they are doing, diving into some wierd mode full of edge cases purely by accident if you step on the wrong stone.

As for proprietary extensions, they are the most stable in IE. The IE8 change was the first since IE4 and it was primarily a security model change. Now we have NaCl on the horizon (ActiveX v2) and every vendor fighting their own extensions into the "standard" by buddying up for a new "standards" group.

It's a minefield which throwing critical applications into is a bad move both from a logical and risk perspective.

I'm not saying it lacks utility, but it's a risky proposition for a product that needs a defined lifecycle.

csmithuk··on IE7 users, we need to talk…
Yes by web I mean HTML5, JS and CSS3, REST and HTTP/SPDY.

Yes I can snapshot everything if I want but the problem with the web is that it is a general purpose tool. It should be a single portal into everything both local and remote sites and applications.

Unfortunately, the rate of change is incredibly large for Internet-facing applications. Intranet-facing applications are left behind. As browsers evolve, which they do rapidly, unpredictably and without compromise[1] a disparity grows until you need two browsers. This is not a situation an enterprise wants to or can afford to maintain, simply because it's below the watermark of concern for 99% of users. This is my point.

The difference between the CLR/JVM and a web browser is that they have a predictable shelf-life and can be maintained separately as they are separate portals into each world. To be fair (I exclude the CLR from this as it's too integrated into the OS), I can ship a JVM with a Java app and it'll run quite happily for another 15-20 years.

And yes I have tried running a 16-bit VB4 (!!) app lately - one of our clients uses one. On 32-bit Windows 8.1, it still works absolutely perfectly (Windows Vista 64-bit+ has no 16-bit subsystem).

[1] Apart from IE.

csmithuk··on IE7 users, we need to talk…
Actually no, you are completely wrong. It might be a popular opinion but it's wrong.

Some facts:

1. Firstly, there are a couple of COM APIs that were broken with IE8 which mean that some horrible "intranet applications" that use ActiveX won't work with IE8 properly. They worked fine with IE6 and IE7. These are now no longer supported by the vendors with no upgrade path so people are stuck with IE7 whilst applications are rewritten or disposed of. This can take years. In fact I know a company that has taken 4 years to rewrite an ERP system away from this model. The compatibility flag deals with some rendering issues but it doesn't change the script engine or the ActiveX hosting situation.

2. No they can't install another browser side by side and just keep that for legacy. Chrome has a poor privacy and configuration support. The GPO side of it really is crappy. Firefox ESR is impossible to configure using GPO. Not only that users don't want to browser-juggle. Most of them don't actually give a shit about any of this as long as it works.

3. Also, IE7 was released in 2006. I personally maintain software that was written in 1988. People are very quick to hang software, particularly the non-engineering background trendy startup pushing culture. IE7 isn't going away until April 11, 2017.

To be fair, I'm recommending people away from the web and the cloud for business critical applications these days. The churn, culture and attitude (as your post outlines so readily) is very negative and a realistic 10 year cycle isn't possible any more. People need stuff to work undisturbed for years for their investment to be recouped.

csmithuk··on The descent to C
That's a great article - thanks for posting.
csmithuk··on AMD reveals its first ARM processor: 8-core Opteron A1100
I still have an old ThinkPad with a 500MHz Pentium III and 128Mb of RAM in it. It has FreeBSD on it (4.4).

It still feels really fast if you don't use X.

csmithuk··on The descent to C
I too hated C once to the point I actually kicked a PC over on its side out of anger. I never understood pointers, structures and string manipulation. I genuinely hated it and wanted it to go away. I deleted all the code I'd written then went for a walk.

Then suddenly... click.

Suddenly, in my mind appeared an abstract model for it. It was complete and possible for one person to understand.

Since then I understand what I'm doing rather than know how to drive the compiler.

That has never happened for any other language I've written and that includes Z80+6502+X86 ASM, C++, C#, VB3-6, PDS7, ksh, Python, Perl and PHP to name a few. Assembly is close but not abstract enough.

Enlightenment is probably the best word to describe it.

csmithuk··on The descent to C
Few of the top of my head:

1. Performance reasons. For example: zero copy data structures, mutable data structures, controlling data locality.

2. Direct memory mapped hardware access. For example: device drivers, kernel, embedded systems, microcontrollers.

3. Bitwise and machine specific conversions. For example: endianess conversions.

4. Structure type coercion. For example: object systems, tagged data structures etc.

csmithuk··on The descent to C
Do it; you will never regret it.

I primarily write C# (for cash reasons) but my heart will always be with C.

csmithuk··on The descent to C
In some cases we don't want safety. C can be safe or unsafe depending on how you approach a problem.
csmithuk··on Sky parental control system blocks code.jquery.com
Cool good news then :)
← PreviousPage 3 of 5Next →