Used to update things whenever a new ASP version was released, but haven't bothered for years.
Process is simple - copy ASP template, rename, fill in the content, FTP to hosting Co and done.
3,590 karma · joined October 5, 2011
Used to update things whenever a new ASP version was released, but haven't bothered for years.
Process is simple - copy ASP template, rename, fill in the content, FTP to hosting Co and done.
Often overlooked is dealing with power and politics (https://www.wittenburg.co.uk/Work/Politics.aspx)
Keeping up to date on tech also important, especially at the tech lead/architecture level (https://www.wittenburg.co.uk/Work/Mentoring.aspx).
I'm staying with Windows both because I've been using Microsoft's tech since MS-Dos 2 back in 1985, and work is a Microsoft estate, again making Linux a no-go for me.
That said, I have Windows 11 on my Surface, and usability stinks to high heaven, squared. And so I will stick with Windows 10. I'm keeping an eye on 11 via the Surface, but not hoping for usability to get easier in the near future...
And so wow, those diagrams in the links - how does one even manage all those boxes?!?
Architecture is easier than coding, if you stay away from more/bigger/but_my_app_is_a_special_little_snowflake mantras. Consider the age-old, tried, tested, proven architecture models of yore (other than their most excellent diagram notations, stay away from UML).
Architecture (design) is layered, not spaghetti thrown at a wall, hoping something sticks. Most (99.9%) software domains can be divided into three horizontal layers -
1. UI
2. Application/business layer
3. Data layer
(note that both internal and external service layers sit at the same level as data layers, allowing them to be called from the application layer)
Finally, there are vertical layers (shared across the initial three layers) These typically include -
4. Communication
5. Exception management
6. Security
7. Logs
Start with that as an overview/index of the entire solution, and when the beast needs to grow, just grow it. But grow it wisely. Use the standard 3-tiered architecture model. Re-use those cross-cutting concens in new applications.
Federate identities. Standardise access/permissions management.
Finally, don't feel compelled to use all the things - if the solution is services-based, don't code a UI for it. Simply connect your client to the relevant, existing service. Yes, services can be tiered, assuming your management processes are mature.
As to the management issue. Governance is what keeps your estate from turning into a hairball. Make extensive and judicious use of
1. Risk management
2. Change management
3. Stakeholder management
4. Design reviews
5. Project review (where team members grade managers)
Establish a technical design authority. The TDA concerns itself with broadly technical matters that facilitate a system-wide perspective. This might include -
1. Systems and solutions
2. Data
3. Communications
4. Quality objectives, including security
5. Development and development operations (devops)
6. Infrastructure (including but not limited to directories; networks; servers, both on-site and remote/in clouds; workstations and mobile devices).
7. Testing (Tools, techniques, platforms, languages and frameworks)
8. Locations
>So there is no need for teachers and textbook authors, because they don't advance state of the art?
This. I have a web site that in places you might call a blog. It's got a section for work stuff, some photos, hobbies, and random pages like explaining how to drive off-road. Those off-road pages (specifically this single page - https://www.wittenburg.co.uk/offroading/Concepts/Gearing.htm...) gets more hits than all the other pages combined. I wrote it in 1998.
Sure, when they were building web sites they delivered stellar stuff. Agile, break things and all that. But when you had real complexity they just... couldn't...
The Government Gateway is a prime example - single citizen login for ALL government services. It ran well, super robust and mature enough to have ironed out virtually all issues.
Then GDS decided that because the Government Gateway was based on a Microsoft stack, it needed to be re-done. The tech lead didn't understand the concept of Identity Federation, let alone SAML tokens, and that you just! can't! do secure code using agile (2-week sprint no good for meaningful security testing...).
I spent two long years at GDS banging my head against a wall. And then I left. And unsurprisingly the Microsoft-based Government gateway was never replaced, still going strong.
Lost interest in the geeky side of mechanics and electronics - they're neccessary to buy, or make a body. Jeeps, Land Rovers and Toyotas seem to be favourites.
The thing I love about it is two-fold - first is building unique bodies never done before, using styrene. Second are the events, where you meet other RC geeks, see everyone else's builds, take part in comptetions (individual and team events). In France there's an annual event that runs a pretty sweet Camel Trophy event. SuperScale in Germany is amazing for having the longest 1:10 scale bridge seen in the hoppy. USTE (Ultimate Scale Truck Expo) in Florida USA holds the largest scale RC event I've attended/know of.
Axial Fest in the US is also a big deal in the calendar, but I've never been. They have a "float you rig" challenge which got me building rafts for my trucks. Herds of fun.
Some of my trucks and build progression at https://www.wittenburg.co.uk/Play/RcTrucks.aspx
I also get a kick out of building houses/bridges/and so on for events - some of those are here - https://www.wittenburg.co.uk/Play/RcBuildings.aspx
My most ambitious build took 5 years to (almost) complete - https://www.wittenburg.co.uk/Play/FordF5Coe.aspx
I wrote my first complete computer program in 1986. Since then I've programmed (or scripted) in Assembler, BASIC, C, C#, C++, COBOL, F#, HTML, Java, JavaScript, LOGO, Pascal, SQL, VBA and XAML. I don't mind C#. Or Java. The majority of the code I've written in my career was written in C#. And yet my preference remains VB.NET because -
VB.NET supports both static and dynamic typing.
VB.NET is a functional language, supporting local type inference, anonymous functions, monads, and language integrated comonads (even Lisp can be more complex and verbose than VB.NET with LINQ).
VB.NET does project-wide namespace imports. C# doesn't.
VB.NET is no more or less verbose than C#. Haskell and F# however, are indeed a lot less verbose.
There are also readability issues in Java and C# that VB.NET doesn't have (braces, == and =, ! instead of Not, seperate keywords for inheritance and interface implementation, and so on). I learnt Pascal before learning C (and prefer Pascal to C). The fact that Pascal and VB.NET share syntactical smilarities (type declarations follow variable and function names, the Not keyword) is probably not an insignificant factor.
Lastly, Microsoft announced that evolution of the VB.NET language has concluded, (although it will support .Net 5). This is welcome because it makes things predictable -- modernising legacy codebases takes ages.
https://www.wittenburg.co.uk/Work/Interact/History.aspx
Still under development...
Exanples -
https://www.wittenburg.co.uk/Work/Protection_System.aspx (insurance), and
https://www.wittenburg.co.uk/Work/payment_System_1.aspx (payments)
I won't use Recall. It's just another Web app, and thus subject to the whims of the owners (selling my data, injecting ads when other sources of income fail, etc). I would be much more amenable to a desktop app I have absolute control over. They keep my data (assuming I were to use Recall) on their servers - but no comments I found talk about data protection or what happens to my online data if they fail, sell or merge with another company.
These days if I don't get absolute control of my data it's just not going to happen.
A model I would be happy with is a desktop app that syncs with a mobile app, encrypts everything, and is purchasable with a one-time payment.
I'm tired of Internet-everything. It always ends in disappointment for me.
Bet if he hadn't everyone'd howl about how he should've left chamber music alone...
My template - https://www.wittenburg.co.uk/Work/Protection_System.aspx
The part I felt had merit is that none of Europe's lofty solutions to safely storing/disposing of the waste output ever came to anything. I believe until this day that industry is still trying to work out how to dig 30km down to safely store the waste underground.
That said I haven't kept up to date on any progress or better solutions.
So I just use it to write down stuff I thought inetresting. I add new stuff very occasionally, and refer to it often, to this day. It's expanded (and sometimes contracted) with non-work stuff (hobbies, photos for the overseas family - although I could do more on that front).
And so I have no real expectation of myself to continually provide new content, or keep up with the latest hosting software and [at home] infrastructure. It receives lots of traffic for the 4x4 guide I wrote in 1998, and the consulting reference pages. I don't care for the traffic, but glad people find it useful. As long as it remains useful to me I'll keep it going, and call it a success.
I can find anything very quickly. When search fails me because I forgot a vendor name or something, I just navigate the folders.
No software required other than what comes with Windows.
I say this knowing Elon is (was?) South African.
Well, no. You can do sooo much here. Log your hike, provide coordinates of off-the-beaten-track routes and sites, provide info on trail conditions, run team events, gear reviews, first aid courses...
Also, who said I can't be the next Rembrandt? Kandinsky is only one of many proofs that that second sentence of yours is off the mark.
I've actually just started work on making piste maps better for snowboarders. Making bank off that would be ace, if not well OK then. Being defeatist because the probability of failure is bigger than success is defeatist, no?
What follows is one way to get requierments right -
¹ Current State
Assess the situation. Understand the transformation (one or more processes) the client seeks to address, and find out what the technology landscape looks like. Start identifying stakeholders, and familiarise yourself with the client's worldview, environment, and the power and political landscape.
² Objective
Identify who the client is, and define the client's objective. The objective is specific, measurable, agreed to by the client,realistic, and time-boxed. It is guided by the results of the situational analysis.
³ Scope
Bound the solution by outlining it's features and functions, by defining what's out of scope, and by discussing the criteria by which success is measured. The scope delineates what stakeholders expect the project to deliver.
It's not hard but it's not going to fall into your lap without a little effort.
¹ https://www.wittenburg.co.uk/Work/Transformation.aspx
² https://www.wittenburg.co.uk/Work/Objectives.aspx
³ https://www.wittenburg.co.uk/Work/Scope.aspx
(Being nice helps too - people like helping nice people -- https://www.wittenburg.co.uk/Work/Trust.aspx)
Client --
If you cache a new submission (message) locally before submitting, you just keep re-submitting until the server returns an ACK for that submission; and your local cache is empty.
Scale clients out as needed.
Server --
If a message is received in good order, return an ACK.
If a message is a duplicate, discard the message and return an ACK.
If a message can only be received once, discard if it already exists on the server, and return an ACK.
If a message is invalid, return a FAIL.
Scale hardware out or up, as needed (ref. "capacity, item 2 in the linked blog post above). Scale queues out by adding service endpoints on the server. Async/await makes the client experience painless. You save your employer $$ because no additional procurement contracts, no licensing fees, no additional server-side infrastructure to run queues, and no consultancy fees to set up and operate Rabbit MQ/Tibco/IBM MQ/Amazon SQS/Azure Queue Storage or whatever other queueing solution the org uses.
Message passing includes concepts auch as durability, security policies, message filtering,delivery policies, routing policies, batching, and so on. The above can support all of that and, if your scenario calls for it, none of it.
The financial argument reduces to dev time vs. procurement, deployment and operational costs of whatever 3rd party product is used, as well as integration, of course.
* I note and welcome the downvotes. However I'd love it more if you'd present a coherent counter argument with your vote.