Ayende @ Rahien

Ayende @ Rahien

Oren Eini aka Ayende Rahien CEO of Hibernating Rhinos LTD, which develops RavenDB, a NoSQL Open Source Document Database.

You can reach me by:

oren@ravendb.net

+972 52-548-6969

Posts: 7,116 | Comments: 49,943

Copyright (C) Ayende Rahien 2004 - 2020

filter by tags archive
stack view grid view
  • architecture (441) rss
  • bugs (394) rss
  • challanges (91) rss
  • community (302) rss
  • databases (343) rss
  • design (754) rss
  • development (490) rss
  • hibernating-practices (43) rss
  • humor (170) rss
  • miscellaneous (587) rss
  • performance (319) rss
  • programming (953) rss
  • raven (1200) rss
  • ravendb.net (178) rss
  • reviews (181) rss
  • uberprof (38) rss
  • 2021
    • January (14)
  • 2020
    • December (10)
    • November (13)
    • October (15)
    • September (6)
    • August (9)
    • July (9)
    • June (17)
    • May (15)
    • April (14)
    • March (21)
    • February (16)
    • January (13)
  • 2019
    • December (17)
    • November (14)
    • October (16)
    • September (10)
    • August (8)
    • July (16)
    • June (11)
    • May (13)
    • April (18)
    • March (12)
    • February (19)
    • January (23)
  • 2018
    • December (15)
    • November (14)
    • October (19)
    • September (18)
    • August (23)
    • July (20)
    • June (20)
    • May (23)
    • April (15)
    • March (23)
    • February (19)
    • January (23)
  • 2017
    • December (21)
    • November (24)
    • October (22)
    • September (21)
    • August (23)
    • July (21)
    • June (24)
    • May (21)
    • April (21)
    • March (23)
    • February (20)
    • January (23)
  • 2016
    • December (17)
    • November (18)
    • October (22)
    • September (18)
    • August (23)
    • July (22)
    • June (17)
    • May (24)
    • April (16)
    • March (16)
    • February (21)
    • January (21)
  • 2015
    • December (5)
    • November (10)
    • October (9)
    • September (17)
    • August (20)
    • July (17)
    • June (4)
    • May (12)
    • April (9)
    • March (8)
    • February (25)
    • January (17)
  • 2014
    • December (22)
    • November (19)
    • October (21)
    • September (37)
    • August (24)
    • July (23)
    • June (13)
    • May (19)
    • April (24)
    • March (23)
    • February (21)
    • January (24)
  • 2013
    • December (23)
    • November (29)
    • October (27)
    • September (26)
    • August (24)
    • July (24)
    • June (23)
    • May (25)
    • April (26)
    • March (24)
    • February (24)
    • January (21)
  • 2012
    • December (19)
    • November (22)
    • October (27)
    • September (24)
    • August (30)
    • July (23)
    • June (25)
    • May (23)
    • April (25)
    • March (25)
    • February (28)
    • January (24)
  • 2011
    • December (17)
    • November (14)
    • October (24)
    • September (28)
    • August (27)
    • July (30)
    • June (19)
    • May (16)
    • April (30)
    • March (23)
    • February (11)
    • January (26)
  • 2010
    • December (29)
    • November (28)
    • October (35)
    • September (33)
    • August (44)
    • July (17)
    • June (20)
    • May (53)
    • April (29)
    • March (35)
    • February (33)
    • January (36)
  • 2009
    • December (37)
    • November (35)
    • October (53)
    • September (60)
    • August (66)
    • July (29)
    • June (24)
    • May (52)
    • April (63)
    • March (35)
    • February (53)
    • January (50)
  • 2008
    • December (58)
    • November (65)
    • October (46)
    • September (48)
    • August (96)
    • July (87)
    • June (45)
    • May (51)
    • April (52)
    • March (70)
    • February (43)
    • January (49)
  • 2007
    • December (100)
    • November (52)
    • October (109)
    • September (68)
    • August (80)
    • July (56)
    • June (150)
    • May (115)
    • April (73)
    • March (124)
    • February (102)
    • January (68)
  • 2006
    • December (95)
    • November (53)
    • October (120)
    • September (57)
    • August (88)
    • July (54)
    • June (103)
    • May (89)
    • April (84)
    • March (143)
    • February (78)
    • January (64)
  • 2005
    • December (70)
    • November (97)
    • October (91)
    • September (61)
    • August (74)
    • July (92)
    • June (100)
    • May (53)
    • April (42)
    • March (41)
    • February (84)
    • January (31)
  • 2004
    • December (49)
    • November (26)
    • October (26)
    • September (6)
    • April (10)
Leave a Review of RavenDB on TrustRadius and Get a $20 Amazon Gift Card
  previous post next post  
Oct 27 2009

YAGNI, I told them, millennium hand and shrimp!

time to read 1 min | 93 words

I am running a long experiment with myself to see whatever you are gonna need YAGNI.

So I went way back to this:

image

And this:

image

This is an application that I am explicitly growing organically, only adding things as I really need them. It is working so far.

Tweet Share Share 19 comments
Tags:
  • Development

  previous post next post  

Comments

Graham
27 Oct 2009
11:00 AM
Graham

Buggrit!

Barry Dahlberg
27 Oct 2009
11:41 AM
Barry Dahlberg

Gee if you had those all in custom controls you'd be able to make one change to fix all your labels so they are associated with their text boxes...

<labelPass <texbox>

;)

Barry Dahlberg
27 Oct 2009
11:44 AM
Barry Dahlberg

Ack, blog ate my HTML, or rather, didn't eat my HTML... should that be HtmlEncoded?

James L
27 Oct 2009
12:21 PM
James L

WebForms, I do so hate thee...

Chris Cyvas
27 Oct 2009
12:34 PM
Chris Cyvas

Your webform brings all the boys to the yard! ;)

I think the hipster coders might knock a few points off your "cool" factor for displaying such an antiquated technology. At least, that's what they would say. :)

zvolkov
27 Oct 2009
13:11 PM
zvolkov

Postbacks? Oh no! Even back in 2000 with classic ASP I always did command/query separation (or controller/view separation). View pages posted their forms to controller pages and controller pages redirected to view pages. You can do webforms but no posbacks for Christ sake!

Ryan Riley
27 Oct 2009
13:32 PM
Ryan Riley

If you are pulling YAGNI, why are you starting with ASP.NET? Why not start with your HTML? After all, ASP.NET is producing HTML forms, which are really just documents with a designated action attribute for processing (which is also optional). So you could in fact just have the form and then create an ASP or ASP.NET page for the processing, then redirect. Or use CGI and really go caveman style. :)

Seriously, though, how did you decide that classic WebForms was YAGNI? On what were you calling YAGNI? MVC? If so, I don't follow the logic as those are two different approaches to achieving the same thing. If you had called YAGNI on ASP.NET in favor of ASP, I would understand (and possibly agree).

Paul
27 Oct 2009
14:07 PM
Paul

What is this strange MasterPageFile you speak of? All looks a bit new and technical to me :)

Fair play man. If it doesn't change too much and isn't causing sleepless nights, roll with it.

Bradley Landis
27 Oct 2009
14:23 PM
Bradley Landis

zvolkov,

Wouldn't having controller pages and view pages right from the get go defeat the point of the experient. You Aren't Going To Need It! I think ayende is saying, he will gladly refactor to something like that when the need arises, he is just waiting for the need to arise.

Andrew
27 Oct 2009
16:49 PM
Andrew

I know we all hate Web Forms, but really, we don't even know what this project/application is meant to do. If it's 3 web pages that show a grid with a few text boxes, Web Forms will be just fine..

Phil
27 Oct 2009
17:42 PM
Phil

I am calling YAGNI on this code. Why do users even need to login?

Frank Quednau
27 Oct 2009
18:23 PM
Frank Quednau

Nobody doubts this works, but it's brutal.

Eugene Burmako
27 Oct 2009
19:26 PM
Eugene Burmako

I smell duct tape

gunteman
27 Oct 2009
20:07 PM
gunteman

I like it!

Tobin Harris
28 Oct 2009
00:32 AM
Tobin Harris

I like it too, beginners mindset in action. Also better than the 350+ LOC that comes with MVC AccountController (assuming userService isn't a refactoring of that).

Jason Stangroome
29 Oct 2009
02:55 AM
Jason Stangroome

I'm really interested to see where this takes you as your application evolves. I presume you're still writing tests.

Chris Smith
31 Oct 2009
22:52 PM
Chris Smith

If it works, does it matter? I've released a few things built this way and I've never had any trouble. I mean BIG things which have over a million hits a day.

Don't forget:

ViewState == ViewData

Code behind == Controller

Ayende Rahien
01 Nov 2009
03:10 AM
Ayende Rahien

Chris,

Your parallels are quite mistaken

Chris Smith
01 Nov 2009
11:10 AM
Chris Smith

I don't think there is a stable definition of MVC in a web context which we can build on. It means different things to different people. Ok slight clarification on my point..

View State <= ViewData. ViewData is actually greater than View State. You have to pass the state via View Data to the view. ASP.Net provides a black box abstraction for this and persists it automatically between requests. The concepts are equivalent and you do spend a lot of time building ASP.Net on top of ASP.Net MVC.

Code behind == Controller. Each is responsibly for managing UI state and interaction with the model. ASP.Net MVC uses request data for state management (you manually recover state). ASP.Net web forms manages state for you.

Same generalised concepts, different application.

MVC is so blurred, it's impossible to take sides.

Comment preview

Comments have been closed on this topic.

Markdown formatting

ESC to close

Markdown turns plain text formatting into fancy HTML formatting.

Phrase Emphasis

*italic*   **bold**
_italic_   __bold__

Links

Inline:

An [example](http://url.com/ "Title")

Reference-style labels (titles are optional):

An [example][id]. Then, anywhere
else in the doc, define the link:
  [id]: http://example.com/  "Title"

Images

Inline (titles are optional):

![alt text](/path/img.jpg "Title")

Reference-style:

![alt text][id]
[id]: /url/to/img.jpg "Title"

Headers

Setext-style:

Header 1
========
Header 2
--------

atx-style (closing #'s are optional):

# Header 1 #
## Header 2 ##
###### Header 6

Lists

Ordered, without paragraphs:

1.  Foo
2.  Bar

Unordered, with paragraphs:

*   A list item.
    With multiple paragraphs.
*   Bar

You can nest them:

*   Abacus
    * answer
*   Bubbles
    1.  bunk
    2.  bupkis
        * BELITTLER
    3. burper
*   Cunning

Blockquotes

> Email-style angle brackets
> are used for blockquotes.
> > And, they can be nested.
> #### Headers in blockquotes
> 
> * You can quote a list.
> * Etc.

Horizontal Rules

Three or more dashes or asterisks:

---
* * *
- - - - 

Manual Line Breaks

End a line with two or more spaces:

Roses are red,   
Violets are blue.

Fenced Code Blocks

Code blocks delimited by 3 or more backticks or tildas:

```
This is a preformatted
code block
```

Header IDs

Set the id of headings with {#<id>} at end of heading line:

## My Heading {#myheading}

Tables

Fruit    |Color
---------|----------
Apples   |Red
Pears	 |Green
Bananas  |Yellow

Definition Lists

Term 1
: Definition 1
Term 2
: Definition 2

Footnotes

Body text with a footnote [^1]
[^1]: Footnote text here

Abbreviations

MDD <- will have title
*[MDD]: MarkdownDeep

 

FUTURE POSTS

  1. Building a social media platform without going bankrupt: Part I–Laying the numbers - 28 minutes from now
  2. Building a social media platform without going bankrupt: Part II–Accepting posts - about one day from now
  3. Building a social media platform without going bankrupt: Part III–Reading posts - 2 days from now
  4. Building a social media platform without going bankrupt: Part IV–Caching and distribution - 3 days from now
  5. Building a social media platform without going bankrupt: Part V–Handling the timeline - 4 days from now

And 5 more posts are pending...

There are posts all the way to Feb 05, 2021

RECENT SERIES

  1. Webinar recording (12):
    15 Jan 2021 - Filtered Replication in RavenDB
  2. Production postmortem (30):
    07 Jan 2021 - The file system limitation
  3. Open Source & Money (2):
    19 Nov 2020 - Part II
  4. re (27):
    27 Oct 2020 - Investigating query performance issue in RavenDB
View all series

RECENT COMMENTS

  • Rockster, i think they made a mistake by getting mixed into politics and assosciated with particularly ugly world views. Then...
    By Rafal on Looking at Parler specs and their architecture
  • Rafal, "NEED" to be taken down is an interesting way to phrase that. I had heard of Parler before all this latest dust up an...
    By Rockster on Looking at Parler specs and their architecture
  • Tyler, Yes, it would make sense (given that they are expecting big growth). However, the stated requirements are _orders...
    By Oren Eini on Looking at Parler specs and their architecture
  • Yep, everything gets so twisted when politics start meddling in. For surethey never got as much publicity as now when they ha...
    By Rafal on Looking at Parler specs and their architecture
  • Seems very likely that they have overstated what their infrastructure really was.
    By Tyler Jensen on Looking at Parler specs and their architecture

Syndication

Main feed Feed Stats
Comments feed   Comments Feed Stats