<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Adam Nemeth's Blog</title>
	<link>http://www.adamnemeth.hu</link>
	<description>The personal website of Adam Nemeth</description>
	<pubDate>Wed, 01 Sep 2010 12:13:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.2</generator>
	<language>en</language>
			<item>
		<title>I have an iPad - and I don&#8217;t need multitask on it.</title>
		<link>http://www.adamnemeth.hu/2010/09/01/i-have-an-ipad-and-i-dont-need-multitask-on-it/</link>
		<comments>http://www.adamnemeth.hu/2010/09/01/i-have-an-ipad-and-i-dont-need-multitask-on-it/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 12:09:20 +0000</pubDate>
		<dc:creator>Aadaam</dc:creator>
		
	<category>Uncategorized</category>
	<category>tech</category>
	<category>editorial</category>
	<category>azinformatika</category>
	<category>ipad</category>
		<guid isPermaLink="false">http://www.adamnemeth.hu/2010/09/01/i-have-an-ipad-and-i-dont-need-multitask-on-it/</guid>
		<description><![CDATA[(This post is partly a response for the Webisztan post for iPad owners)
So, yes, I bought an iPad recently.

Why? 
For some reasons, I cannot bring too much pack with me, and I had a half-vacation trip to Amsterdam. Four days, which means, you shouldn&#8217;t really bring your laptop with you (nearly 3 kilograms, how I [...]]]></description>
			<content:encoded><![CDATA[<p>(This post is partly a response for the <a href="http://webisztan.blog.hu/2010/08/31/mire_nem_hasznaljuk_a_tablagepet">Webisztan</a> post for iPad owners)</p>
<p>So, yes, I bought an iPad recently.</p>
<p><img src="http://upload.wikimedia.org/wikipedia/en/b/be/IPad_Home.png"/></p>
<p>Why? </p>
<p>For some reasons, I cannot bring too much pack with me, and I had a half-vacation trip to Amsterdam. Four days, which means, you shouldn&#8217;t really bring your laptop with you (nearly 3 kilograms, how I regret that I switched to 15 cols, I don&#8217;t need the large display&#8230;), yet it&#8217;s definitely good to bring some computing power.</p>
<p>I looked at the Androids, and after holding an Android phone for 2 hours in my hand, I decided that this platform is underperforming for me.</p>
<p>I knew that webOSes are also slow, an I would have to wait for them until christmas shopping season at least anyway.</p>
<p>Average netbooks? I used one with linux (moblin, perhaps?), and brought one with me to Paris with windows (thanks again, Balazs), they&#8217;re awfully slow, and the reason we brought it with us - namely: calling parents on skypeout - didn&#8217;t work: you could skype-skype, but somehow, no skypeout on Atom&#8230;</p>
<p>So, why are they slow? Answer is: they have traditional multitasking.</p>
<p>So, this left me with the Apple option. I&#8217;m a mac user since 5 and a half years, and it took me just some googling to get an iPad a few days before the trip (they weren&#8217;t introduced then in the Netherlands). For the technically curious, it&#8217;s a 64-3G, just to make sure I don&#8217;t regret buying  a smaller one - although 32GB would be also fine.</p>
<p>The thing is, I bought it for work, which it half-failed.</p>
<p>Especially in Amsterdam, when I had to create a homepage, and I couldn&#8217;t switch easily between the SSH terminal (vim - editor&#8230; ) and the safari browser. I planned to use VNC, but somehow, unusually my home computer was frozen (thanks for Kelt for checking that it wasn&#8217;t stolen), so I had to rely on the machine.</p>
<p><i>But guy, what an immersive platform it is!</i></p>
<p>The difference between a device with such form factor and a full-blown computer is simple: <b>a computer is a computer; an iPad becomes the thing you&#8217;re running on it. </b></p>
<p>If you use it as a notetaker, it becomes your notepad. If you use it as a piano, it becomes a piano (although it&#8217;s easy to miss the keys). If you use it as a drawing board, it becomes your drawing board.</p>
<p>And it&#8217;s that easy. <b>The window is the iPad</b>.</p>
<p>Now, let&#8217;s get back on why on Earth people need multitasking?</p>
<p>Because they need to switch between things!</p>
<p>In fact, I don&#8217;t find it that hard: I can easily switch between mail, safari, and BeejiveIM (an MSN/Gtalk client), press the button, click. The reason of this is that every application stores its last state on flash, and opening it just reloads (we call this serialization, or using the name from the 90s: permanent computing).</p>
<p>So when you close an application, it doesn&#8217;t ask for saving the document you&#8217;re working on. The next time you open it, it will stay the same, so it will feel just like multitasking.</p>
<p>So, &#8216;perceived&#8217; multitasking works, and things are blazingly fast - since the computer does only the one thing it became.</p>
<p>There are two things which cannot be handled this way. </p>
<p>The first obvious thing is an alarm clock: you cannot have a good alarm clock on iPad in the background. Also, you can&#8217;t play music, especially not youtube music videos in the background, not that it would be feasible for an ARM processor I believe, since streaming video needs the most power from such devices.</p>
<p>The second thing is about network connections (sockets) - although few things need it (my only example is SSH) it makes your life really hard if you can&#8217;t keep them.</p>
<p>Maybe it would be good if chats could be open like in GMail, but we&#8217;ll have to see how this works on the ChromeOS tablets, and it&#8217;s easy to see the limits of such an interface.</p>
<p>So, the iPad is a suitable device for on-the-go. I know it&#8217;s a bit heavy, but still I bring it with me to a lot of places. It&#8217;s more convenient to use than a phone, and you can solve a lot of things with it.</p>
<p>The most used apps so far: </p>
<ul>
<li>Safari, of course (check timetables, or anything on-the-go)</li>
<li>BeejiveIM (talk with your friends in unusual places and situations)</li>
<li>iBooks (yes, you can read books on it - it has a brightness setting. Also, it eats .epub and PDFs)</li>
<li>OmniGraffle (it&#8217;s really immersive to draw on a drawing board, instead of a computer)</li>
<li>Virtuoso (a piano app - it&#8217;s much more fun creating music than to listening on it)</li>
</ul>
<p><b>Disatvantages</b></p>
<p>First, the sound quality of iPad is below my expectations, so I still prefer to listen to music on computer, but for those who can&#8217;t hear the difference between the different qualities of bitrates, it could be fine.</p>
<p>Second, the Mobile Safari programming is harder then expected: For example, there&#8217;s no focus() function, so you can&#8217;t lead the user through a form easily; or there&#8217;s no contentEditable, which basically kills any WYSIWYG HTML-Editor support.</p>
<p>Also, the built-in apps are rather primitive: I&#8217;d laugh my ass off at anybody saying that iPad mail is full-featured; at least it could load pictures of people from the addressbook&#8230; Or maybe could I type bold text? (BTW, rich text editing is basically missing on the whole platform - except for the Pages app)</p>
<p>Oh, and you can&#8217;t attach a photo to a mail, but you can mail a photo. Cute, isn&#8217;t it?:)</p>
<p>Even the calendar app is strange: you cannot add new events by clicking (tapping) on their place: you have to press the plus button in the corner, set the date and time from a dropdown, and save it.</p>
<p>So, it does feel like I&#8217;m holding a prototype now; but hey, I haven&#8217;t seem too much prototypes this fast and usable.</p>
<p>Let&#8217;s see what the new OS brings. I hope they won&#8217;t ruin the speed of the device.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.adamnemeth.hu/2010/09/01/i-have-an-ipad-and-i-dont-need-multitask-on-it/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Architect dolgok: Software Engineering as an engineering discipline</title>
		<link>http://www.adamnemeth.hu/2010/08/08/architect-dolgok-software-engineering-as-an-engineering-discipline/</link>
		<comments>http://www.adamnemeth.hu/2010/08/08/architect-dolgok-software-engineering-as-an-engineering-discipline/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 22:01:23 +0000</pubDate>
		<dc:creator>Aadaam</dc:creator>
		
	<category>Uncategorized</category>
	<category>szakma</category>
	<category>editorial</category>
	<category>azinformatika</category>
	<category>architect</category>
		<guid isPermaLink="false">http://www.adamnemeth.hu/2010/08/08/architect-dolgok-software-engineering-as-an-engineering-discipline/</guid>
		<description><![CDATA[
I have told this multiple times, maybe it&#8217;s worth a blogpost on its own. It&#8217;s mainly a reaction to recent posts of Dave West from InfoQ, and the discussions formed beneath them. Although I can feel it through what makes someone to think this way, yet I have different opinions which I would like to [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>
I have told this multiple times, maybe it&#8217;s worth a blogpost on its own. It&#8217;s mainly a reaction to recent posts of <a href="http://www.infoq.com/articles/arsMagna-agile-essay">Dave West from InfoQ</a>, and the discussions formed beneath them. Although I can feel it through what makes someone to think this way, yet I have different opinions which I would like to tell.
</p></blockquote>
<p>I have been hearing a lot of times about wether what programmers do is engineering, is science, art, or what. When I was about 18, even I had some thoughts that building software is not about engineering, but now, perhaps just because I became a master of software engineering officially (ok, it&#8217;s called engineer-informatitian in hungarian), I do think it is.</p>
<p>Why does the question arise? Because our daily job - at least, for a lot of us - is not based on science, but rather is about some chaotic finding-your-way thing. It rarely involves drawings and science - not gut - based calculations if you don&#8217;t explicitly insist on them, especially not in the enterprise world.</p>
<p>Some say 60 years ought to be enough for an engineering discipline to form, and therefore this isn&#8217;t one; I think it otherwise. I think it will take us a lot more time to find out what this thing is, even if we reached this far, and even if our profession has roots in the ancient Egyptian civilization (have you ever thought of that the basis of Egyptian tax administration is a series of calculatiosn based on water sensors and other aggregated data?).</p>
<p>Let&#8217;s start with two questions: <b>what is engineering? What is software engineering?</b></p>
<p>Let me answer the first question with a personal point of view, and a second with an official one.</p>
<p><a id="more-171"></a></p>
<h2>Engineering is art and science</h2>
<p>Engineering is a set of disciplines between art and science; that is, there&#8217;s no engineering without science; yet it has the elements of art. Most of the time, I will use build-engineering, so, architecture as an example.</p>
<p>I don&#8217;t believe that architects always knew how to build monumental buildings; I believe that only our later generation thinks that people were sure what to do back then. Of course, a lot of buildings didn&#8217;t stand out the winds of time. But even those who stand, may be a fortunate result of trial and error, rather than a final product of a well thought-out process.</p>
<p>I also believe that the ratio between art and science changes over time and over discipline: modernist buildings, in which a lot of us are living today - at least in Hungary - were more about science. Perhaps bridges are more about science too: it is not really a question how a bridge should look like if it does not stand the tides of the river it is built over.</p>
<p>But software engineering has a bit more of an art: it has merely much more soft parts, hence the name. How rigid are these parts is depending on the given software: however, our whole profession believes that softwares have to be as soft as possible in order to be able to adapt these soft ecosystems they are perceived to be employed in.</p>
<h2>Code is the formalization itself</h2>
<p>We should also note, that we prefer to hide the hard parts behind libraries. Code is nothing else but formalization.</p>
<p>Some may argue that even data is formalization of the information; it may be true.</p>
<p>We see a lot of formal methods turned into code: connecting to a server on the internet is a quite complex task, yet we should rarely think about it; after a few lines, the copy of a textual file from another server becomes a memory block.</p>
<p>One thing that is hard to formalize such way is the creational process itself: of course, we have build scripts and IDEs and GUI designer programs and so on, we may even have program-generators; yet the creational involves a lot of human factors, a lot of uniqueness for the given situation, that even if we have formal methods for that, we should decide on a per situation basis what to apply.</p>
<h2>Engineers work for communities of human beings</h2>
<p>I also believe, that engineering is about creating things which are a part of a human system: that is, there&#8217;s no real building without human use; waterpipes are built for humans, buildings, bridges are mostly for humans.</p>
<p>It is interesting to note, that engineering is nearly always about supporting communities: building houses is rarely about a single person, but a community of people living, using the building over a long period of time. You also wouldn&#8217;t create a waterpipe system for just one person except for the really luxorious ones: they mostly support a neighborhood.</p>
<p>Software engineering, in a good sense, is also about supporting the needs of a group: the group of your end-users. People involved in the process are rarely part of this group: the customer for, let&#8217;s say, a webshop is not the customer who will use that webshop, but rather the head of the company which attempts to sell goods in it; in some cicumstances, those won&#8217;t be even its administrators.</p>
<h2>So what is software engineering?</h2>
<p>Let me quote the <a href="http://www.computer.org/portal/web/swebok/html/contents">SWEBOK </a></p>
<blockquote><p>
The IEEE Computer Society defines software engineering as: &#8220;(1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).&#8221;
</p></blockquote>
<p>It does not say software is a science: what it does say, that:</p>
<ul>
<li>Software has patterns, therefore systematic solutions can be used for common situations</li>
<li> Software can have methods to build, that means, there could be a discipline to build software</li>
<li> Software has numbers associated with it (like: resource used, speed), therefore it can be measured, and optimized for it.</li>
</ul>
<p>Let us say that while these may be argued in general, in specific cases they would be hard to argue: I honestly think, for example, that most webpages have a notion of menu, and I start most of my homepage desings systematically with a logo and a menu, even if that logo is textual.; also, over the years, I have developed systematic solutions for solving certain web development needs; for some, I have automatic tools, for others, not yet. And I believe any of us could measure the loading time of our favourite social network, and a lot of us could argue about its acceptabilty <img src='http://www.adamnemeth.hu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Also let us put software engineering back in context: traditionally, software engineering is traced back to the <a href="http://homepages.cs.ncl.ac.uk/brian.randell/NATO/">1968 NATO conference</a>.</p>
<p>What they realized in 1968, is not only that our - back then - current way of creating software is a chaotic mess; they realized, that it is expected that we will need to write a whoole lot of software, not just necessarily for military purposes.</p>
<p>And we do write a lot of software: every day, dozens of facebook apps, iphone apps, homepages surface, not to talk about embedded softwares from cars to microwaves and beyond.</p>
<p><i>Software engineering is not about building exceptional software</i>: doing something exceptional is always more an art than a science. It is about building good enough software in general.</p>
<p>May we failed in a large scale, as some say, we are mostly succesful in the middle scale: any of us could create a blog in the order of minutes; of course, we would use pre-built software for that - like, wordpress - but that would be less about creating new software but reusing something existing.</p>
<p>Also, we didn&#8217;t really fail in the large scale: we successfully applied some theories  and metaphors which we use in our everyday lifes: any of us could build a list-based component in their favourite system of choice, for example. Every programming language in mainstream use is a succesful generalization of concepts in itself.</p>
<p>On small scale, it&#8217;s still questionable whether we will be able to win. As Boochs, one of the authors of the UML and the pioneer of using classes and &#8220;inheritance&#8221; as a basis of our analysis said:</p>
<blockquote><p>
Software is inherently complex.
</p></blockquote>
<p>As an example, today I had to analyse an account locking mechanism: at first, it seemed simple: accounts should be locked if wrong password is tried more than five times a row; but we realized, that they should be locked even if the last password set is more than half a year old; then we realized that we need different behaviour in case the account is locked for different reasons.</p>
<p>What seemed simple in the beginning became complex in a few minutes just by talking about the requirements; the simple drawing started to explode.</p>
<p>We still don&#8217;t understand these enough and, until then, software projects are subjects of being late or being broken.</p>
<h2>Conclusion</h2>
<p>So, we are part of a young discipline. What we should understand is not only the world surrounding us; we should understand to take the right directions. This is our responsibility, as part of the early generation.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.adamnemeth.hu/2010/08/08/architect-dolgok-software-engineering-as-an-engineering-discipline/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Technics RP HTF 880 Digital Monitor</title>
		<link>http://www.adamnemeth.hu/2010/07/29/technics-rp-htf-880-digital-monitor/</link>
		<comments>http://www.adamnemeth.hu/2010/07/29/technics-rp-htf-880-digital-monitor/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 21:52:25 +0000</pubDate>
		<dc:creator>Aadaam</dc:creator>
		
	<category>Uncategorized</category>
	<category>Music</category>
	<category>editorial</category>
		<guid isPermaLink="false">http://www.adamnemeth.hu/2010/07/29/technics-rp-htf-880-digital-monitor/</guid>
		<description><![CDATA[Szeretem érezni az énekes hangján az utolsó, felvétel előtt elszívott cigaretta torokfüstjét, a hangot, ahogy a mikrofon védőhártyájára valami rárepül, ahogy a pengető elcsúszik picit a gitáron, a keverő hibáit, ahogy összeollózta a számot. A hangszerek csendülését, ahogy a háttérben újabb-s-újabb komplex formákat fedezek fel, a tízezredik visszahallgatáskor.


Nem tud sokat a Technics / Panasonic RP [...]]]></description>
			<content:encoded><![CDATA[<p>Szeretem érezni az énekes hangján az utolsó, felvétel előtt elszívott cigaretta torokfüstjét, a hangot, ahogy a mikrofon védőhártyájára valami rárepül, ahogy a pengető elcsúszik picit a gitáron, a keverő hibáit, ahogy összeollózta a számot. A hangszerek csendülését, ahogy a háttérben újabb-s-újabb komplex formákat fedezek fel, a tízezredik visszahallgatáskor.</p>
<p><img id="image170" src="http://www.adamnemeth.hu/wp-content/1953278_erji_panasonic_HTF880[1]_500.jpg" alt="Technics / Panasonic RP HTF 880 Digital Monitor " /></p>
<p><a id="more-169"></a></p>
<p>Nem tud sokat a Technics / Panasonic RP HTF 880: nem üt a basszusa, picit hiányoznak belőle a magasok. A Sennheiserek műanyag világa után megváltás mégis úgy érezni, a gitár csendülése igazán természetes volt. Persze a dinamikája sem rossz, mégha nem is tudom, mintha mélabús lenne, lassúcska. Nehéz megmondani dinamikáról, nincs rá jó szó: nem lapos, pusztán lassú.</p>
<p>Az a baj az audiofilizmussal - bár talán szerénytelenség lenne ezt ennek nevezni, hívjuk talán úgy, ahogy: HiFinek - hogy a hangszer, eszközpark meghatározza a zenei ízlést is: így tudom, a <a href="http://www.youtube.com/watch?v=lYHbQTwwlPk">Buddha Bar</a> remekül szól, de nem tudnék élvezni benne egy <a href="http://www.youtube.com/watch?v=-S9jWL-_j-g">Sonata Arctica</a> számot, mint basszuskiemelős párjaival. Mégis jó, kellemes érzés.</p>
<p>Napokat töltöttem el albumokat hallgatva, Flacban beszerezve, CD-n előkeresve, mikor megvettem. Lassan másfél-két hónapja használom, s a vételt nem bántam meg; kár, hogy jól (ill.: jobban) csak gépről szól, hordozható eszközeim hangkimenete nem olyan jó, hogy látványos romlást ne okozzon a rosszabb minőségű hangvezérlő. De ha valaki úgy gondolja még, van értelme a zenehallgatást nem pusztán melléknek, holmi háttérzajnak, hanem egyenesen főtevékenységnek, mindent kizáró dolognak, olyan hobbinak, ami teljes embert kíván, egész, önmagába merülő figyelmet, muszáj beszerezni egyszer az életben valami hasonlót.</p>
<p>Mert nem sok jó élmény marad, amire drogként vágysz utána, ez viszont olyan lesz.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.adamnemeth.hu/2010/07/29/technics-rp-htf-880-digital-monitor/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>About the teas of Darjeeling</title>
		<link>http://www.adamnemeth.hu/2010/07/24/about-the-teas-of-darjeeling/</link>
		<comments>http://www.adamnemeth.hu/2010/07/24/about-the-teas-of-darjeeling/#comments</comments>
		<pubDate>Sat, 24 Jul 2010 19:49:38 +0000</pubDate>
		<dc:creator>Aadaam</dc:creator>
		
	<category>Uncategorized</category>
	<category>editorial</category>
	<category>Tea</category>
		<guid isPermaLink="false">http://www.adamnemeth.hu/2010/07/24/about-the-teas-of-darjeeling/</guid>
		<description><![CDATA[&#8230; And especially about Darjeeling first flush maharani 2010
The following text was originally a letter to my friend, Massimiliano Mirra, along with a pack of the aforementioned tea, reproduced here as it was written, in the public library of Amsterdam, as he said it&#8217;s a text which shouldn&#8217;t be enclosed into a single letter. This [...]]]></description>
			<content:encoded><![CDATA[<h2>&#8230; And especially about Darjeeling first flush maharani 2010</h2>
<blockquote><p>The following text was originally a letter to my friend, Massimiliano Mirra, along with a pack of the aforementioned tea, reproduced here as it was written, in the public library of Amsterdam, as he said it&#8217;s a text which shouldn&#8217;t be enclosed into a single letter. This story was told before to a few tea-loving friends already, but this is the first written version. In case you spread it, please drop me a mail, and at least also mention my name. Creative commons nc-sa&#8230;</p></blockquote>
<p>Darjeeling tea is known as the Queen of black teas and not without a reason.</p>
<p>Darjeeling is in the Indian part of Himalaya, with a breathtaking view of the tschomolungma, and an also a breathtaking height of 6000 meters. Mount Everest seems like a small bump from there. Its slopes makes it ideal for tea, as they get so much sunshine, just like the slopes of Tokaj are ideal for wine. </p>
<p>Darjeeling tea is harvested three times a year, called first flush, second flush, and autumn flush. Since they are queens, let&#8217;s look at them as women, and be sure we won&#8217;t miss a point.</p>
<p>First flush is like a sixteen years old girl. She&#8217;s really fresh, but also don&#8217;t have too much experience of the intercourse with hot water. Therefore, you have to brew it carefully: don&#8217;t use too hot water with it, as it would make her closed, and you can&#8217;t really enjoy your meeting with her. 70 degree celsius or a little more is about enough. Also make sure you always use clear water with her: mostly we recommend spring water, but having a usual bottled water without gas is enough.</p>
<p>The advantage of her, that if you are careful enough, she has the curiosity and strength to be with you multiple times in a day;that is, if you don&#8217;t pour too much water on her - just about one deciliter per 2 teaspoons - you can enjoy her 3-4 times without getting another portion. </p>
<p>The problem with such a 16 years old that she will spend only her summer vacation with you: after that, girls go back to school, and either become more serious, or unenjoyable at all.</p>
<p>First flush is harvested in late march, and usually gets into the stores early may. Be sure to drink it before september.</p>
<p>Second flush is harvested in mid-may: she&#8217;s about 26 years old. already has some experience with hot rains of the himalaya, you don&#8217;t have to teach her everything. Also she is more serious and more colorful: knows more of the world, and has more to tell you. However, she isn&#8217;t that interested in you: maybe you can go two rounds with her, but after that she won&#8217;t be really part of your experience. Yet you can enjoy her year-round. </p>
<p>Autumn flush is 36 years old: full of experience, full of shades and secrets which shine through her personality. You can only experience her once per session, but what an experience it will be! Also, she has the dark colour you would expect from most of the black teas. Be careful with her too, however: pour water just below the 100 degrees, 95 should do fine.</p>
<p>The tea I gave you is a first flush maharani from this year. I have an autumn flush maharani at home, she&#8217;s my celebration tea, along with a 30 years old pu-erh. Maharanis are a bit sad, sour like a lemon: you will feel it. She&#8217;s an emo kind of girl: this will grow into the experience of the autumn Diva later. I hope she can grow up at you - some first flushes turn into older by themselves - but I&#8217;m not sure, so enjoy her through the rest of the summer.   
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.adamnemeth.hu/2010/07/24/about-the-teas-of-darjeeling/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Architect dolgok: Testing legacy php applications</title>
		<link>http://www.adamnemeth.hu/2010/07/15/architect-dolgok-testing-legacy-php-applications/</link>
		<comments>http://www.adamnemeth.hu/2010/07/15/architect-dolgok-testing-legacy-php-applications/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 21:21:21 +0000</pubDate>
		<dc:creator>Aadaam</dc:creator>
		
	<category>Uncategorized</category>
	<category>szakma</category>
	<category>azinformatika</category>
	<category>architect</category>
		<guid isPermaLink="false">http://www.adamnemeth.hu/2010/07/15/architect-dolgok-testing-legacy-php-applications/</guid>
		<description><![CDATA[Ez a poszt angolul van most, bocsi. Igaziból egy kommentem egy InfoQ-s cikkel kapcsolatban, de önmagában is megállja a helyét, így gondoltam, kirakom
Recently, a whole module of a legacy web application written in PHP4 around 10 years ago (and constantly &#8220;maintained&#8221; since) was needed to have new features.
We&#8217;re talking about 1000s of lines of code [...]]]></description>
			<content:encoded><![CDATA[<p><i>Ez a poszt angolul van most, bocsi. Igaziból egy kommentem egy <a href="http://www.infoq.com/news/2010/07/testing-techniques-without-tests">InfoQ-s cikkel</a> kapcsolatban, de önmagában is megállja a helyét, így gondoltam, kirakom</i></p>
<p>Recently, a whole module of a legacy web application written in PHP4 around 10 years ago (and constantly &#8220;maintained&#8221; since) was needed to have new features.</p>
<p>We&#8217;re talking about 1000s of lines of code within one function, or even case of a switch case.</p>
<p>Most of the time, people don&#8217;t refactor maintained legacy applications, as somebody told me &#8220;the first rule of support development is: don&#8217;t change anything other than requested, just add your stuff.&#8221;</p>
<p>I haven&#8217;t been able to track the application back to its beginnings but its imminent to me that if-else branches don&#8217;t grow to 600 lines by themselves, without human intervention. Somebody has to mess these up, and someone has to have such kind of thinking. This is pretty general in enterprise programmng:</p>
<ul>
<li> most of the tasks are about legacy applications</li>
<li> people fear to clean things up</li>
<li> it&#8217;s not about development, but adding requested features and fixing bugs.</li>
</ul>
<p>Also, PHP is a dynamic language, and therefore formal refactoring tools are usually unavailable. For example, PHP refactoring support in netbeans is basically non-existing.</p>
<p>So, what would you do here?</p>
<p>I decided that a system&#8217;s answer is dependent only from its input and its context. This seems pretty straightforward:</p>
<p><code><br />
System ( input, context ) -> output<br />
</code></p>
<p>OK, what is the input of a web application? Of course, its HTTP request! In PHP, it&#8217;s hard to think about any other input.</p>
<p>What&#8217;s the context? Context is given by two components basically: the underlying platform, whatever it is (no matter you have a framework or just common libraries, we call these platform together), and the persistent data layer. So:</p>
<p><code><br />
Web app (request, persistent data) -> answer<br />
</code></p>
<p>(I know, I forgot platform to add, but in refactoring scenarios, platform should stay the same anyway. In case you change platforms too, there are other complications which we won&#8217;t talk about this time.)</p>
<p>What&#8217;s the answer? First, it&#8217;s an HTML (or XML, JSON, etc) output. We didn&#8217;t have to care about it in this particular case. The other output is: changes to the persistence layer. It&#8217;s unusual for web applications to change anything other than their database and cache layers.So:</p>
<p><code><br />
Web app(request, persistent data) -> (written-out response, persistent data' )<br />
</code></p>
<p>OK, what to do? We have an old system and we want to refactor it to a new system, and the question was: are they equal in functionality?</p>
<p>Question is: <code>Web app == Web app' </code> ?</p>
<p>Let&#8217;s see what I did:</p>
<ul>
<li> Ask a manual tester to go through every possible combination on the user interface
<li> Recorded these into files (serialize($_REQUEST)), or, even better, (serialize($GLOBALS))
<li> Ask the DB layer to NOT write anything to the DB (ugly global variable hack, if it is present, only select queries are executed), this way, we ensure that we keep a consistet state
<li> Record every writing operation (so, instead of executing them, take note of them)
<li> An algorhythm:
<ol>
<li> load the serialized request, </li>
<li> start recording db, </li>
<li> run the original controller,</li>
<li> collect db recordings,</li>
<li> re-load request (in case it was modified by the original controller - we could never know)</li>
<li> run the new controller</li>
<li> collect db recordings</li>
<li> see if the two are equal</li>
</ol>
</ul>
<p>This way, I could be sure, that in all of the scenarios a manual tester could come up with, both of the controllers behave the same way.</p>
<p>After the original recordings, I did a few additional points:</p>
<ol start=9>
<li> re-load the request again
<li> enable db writing
<li> run the new controller
<li> display result.
</ol>
<p>This way I could create an - albeit slower - but seemingly normally functioning version of the software, which did everything it did previously, and it was verified that functionality haven&#8217;t changed with the new controller.</p>
<p>I called this blackbox-harness test.</p>
<p>What do you think?</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.adamnemeth.hu/2010/07/15/architect-dolgok-testing-legacy-php-applications/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Architect dolgok - A tervezési fázis folyamata</title>
		<link>http://www.adamnemeth.hu/2009/12/26/architect-dolgok-a-tervezesi-fazis-folyamata/</link>
		<comments>http://www.adamnemeth.hu/2009/12/26/architect-dolgok-a-tervezesi-fazis-folyamata/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 21:52:58 +0000</pubDate>
		<dc:creator>Aadaam</dc:creator>
		
	<category>Uncategorized</category>
	<category>szakma</category>
	<category>azinformatika</category>
	<category>architect</category>
	<category>casestudy</category>
		<guid isPermaLink="false">http://www.adamnemeth.hu/2009/12/26/architect-dolgok-a-tervezesi-fazis-folyamata/</guid>
		<description><![CDATA[Kértétek, itt van. Alapvetően itt a modultervezésről lesz szó, a komplett rendszerek tervezése egyrészről picit más tészta, másrészt ebből a szempontból meglepően sokszor van megkötve a kezünk. Érdemes elolvasni a cikket is, de a kapcsolódó két esettanulmány a legértékesebb talán.
Ha a specifikáció megvan, hányszor adjuk oda tetszőleges, az implementációs környezetet valamelyest ismerő kollegának azt, már [...]]]></description>
			<content:encoded><![CDATA[<p><i>Kértétek, itt van. Alapvetően itt a modultervezésről lesz szó, a komplett rendszerek tervezése egyrészről picit más tészta, másrészt ebből a szempontból meglepően sokszor van megkötve a kezünk. Érdemes elolvasni a cikket is, de a kapcsolódó két esettanulmány a legértékesebb talán.</i></p>
<p>Ha a specifikáció megvan, hányszor adjuk oda tetszőleges, az implementációs környezetet valamelyest ismerő kollegának azt, már implementált (és titokban: tesztelt) terméket várva vissza cserébe? Mi sem természetesebb ennél, nem igaz? Az alkotói szabadság, a modulok amúgyis függetlenek, a srác amúgyis megbántódna, ha beleszólnának a dolgába&#8230; ugye?</p>
<p>Hát egy lúf.szt.</p>
<p>Alapvetően a kód azon részei, amit senki nem menedzsel (nem látja senki a készítőjén kívül), fekete dobozok. A fekete doboz pedig nem elhanyagolható valószinűséggel lehet rossz, hibás. Azt, hogy megvalósítja-e egyáltalán a specifkációt, csak akkor tudjuk, ha ténylegesen leteszteltük (amit általában szintén a programozóra bízunk..). <b>A specifikáció gyakorlatilag mindig interfészspecifikáció</b>: azt mondja meg, adott interfésze(ke)n keresztül milyennek tűnjön a program. Lehet ez UI, lehet ez adatbázis, de lehet épp másik programrész.</p>
<p><b>A tervezés elsődleges feladata, hogy részekre válassza a megoldandó feladatot, a részek közti összefüggéseket (interfészeket) pedig rögzítse.</b> Tehát eme fázis nem más, mint részekre bontás, és részspecifikálás.</p>
<p><a id="more-163"></a></p>
<p>Ezért van, hogy <i>a legtöbb kezdő programozótól egy masszát kapunk vissza</i>, ahol a felelősségeket hibásan veszik széjjel, ha egyáltalán. Hiába az MVC, template-jeik általában tartalmaznak logikát, controllereik az adatbázisokat szinte közvetlenül kezelik, az absztrakciók rendszerint gyengék (hányszor láttam natív SQL hívásokat kezdő programozóktól ORM modellek függvényeiként&#8230;)</p>
<p>Minél több komponens menedzselt (nem .net értelemben), annál kevesebb a hibalehetőség, annál kisebb része van potenciálisan elrontva a kódnak, igaz, exponenciálisan nő a tesztesetek száma is.</p>
<p>Mégvalamit vesz el a tervezés: <i>a felfedezés örömét.</i> Bár én már megtanultam örömemet lelni a mérnöki hozzáállásban, az UML-ábrák és tervezési, szervezési folyamatok közt érzem jól magam, nem pedig a kódolásban, ez azonban egyfajta egyensúlytalanságot is erdményez: a nagy szívások a kód elírásaiban, az alsóbb rétegek félreértésében vannak. (Persze kiveszem a részem a debuggolásban, de mégis más nézőpont.) Dijsktra viszont ezzel magyarázza gyakran tökéletes hiányát, hogy az örömöt veszi el a programozásból (na, nem neki).</p>
<h2>Az általános tervezési folyamat</h2>
<p><b>A tervezés mindig az adott rendszertől függ</b>: a frameworkök jó keretet nyújtanak, de nem ebből kell kiindulni, elvégre nem a frameworköt modellezed, hanem a valós folyamatot. Persze, ha a valós folyamatod jól leképezhető ezekre (végülis a Rational Analysis Classes se véletlenül jött létre), akkor hajrá: ettől még <b>igyekezz a két világban - az ügyfélében és a platforméban - párhuzamosan járni</b>.</p>
<p>(Ehhez persze érteni kell, az ügyfél mit akar és miért.)</p>
<p>A tervezési <b>folyamatod a csapatodtól és a rendszeredtől is függ</b>: jó, ha 1-2 projektet azonos csapattal tudsz csinálni, így nem kell minden alkalommal az új körülményekkel együtt új embereket is megismerni, így felhasználható a tapasztalat.</p>
<p>Egy picit ez olyan, mint a javascript-fordítók: <b>általánosítani csak az ismétlődések felismerésének árán lehet</b>. Persze ezt a tapasztalatot megszerezheted sok projekten keresztül is, de ezeknek adott területre kell fókuszálniuk (és épp ezért nem vállalok pl. beágyazott rendszereket).</p>
<p>A <href="http://www.thehackerchickblog.com/2008/05/solid-code-with-emergent-design-part-1.html#more">SOLID szabályok</a> közül (ha a <a href="http://www.thehackerchickblog.com/2008/05/solid-code-with-emergent-design-part-1.html#more">SOLID</a> kifejezés, így, nagybetűkkel nem ismerős, akkor azonnal <a href="http://www.thehackerchickblog.com/2008/05/solid-code-with-emergent-design-part-1.html#more">kattints ide</a>) én leginkább a felelősség-problémát tartom irányadónak, megoldja a decoupling jó részét: legtöbb problémád ugyanis a különböző rejtett függőségekből és feltételezésekből lesz. Ha <b>egy osztály pontosan egy feladatot lát el, azt viszont jól</b>, kevesebb az esélyed arra, hogy spagettiként tapadjanak össze a moduljaid (mégha a kód kinézete nem is spagetti, a tapadásuk jól hasonlít rá.)</p>
<p>(Persze, a többi szabály jól jön ha nagy rendszereket tervezel, meg iszonyatos modularitasra van szükség, bár a megvalósítás módjáról vitáznék sokszor.)</p>
<p><i>És akkor itt most álljunk meg egy pillanatra.</i></p>
<p><i>Ha arra kérnélek, rajzold le azt a munkafolyamatot, amit naponta csinálsz, le tudnád?</i></p>
<p><i>Ha arra kérnélek sorold fel a tipikusan ismétlődő dolgokat, fel tudnád?</i></p>
<p>Az informatika dolga kettős: </p>
<ul>
<li>az egyik a folyamatok felismerése, és azok formalizálása.<br />
Ha a napodnak ritmusa van, sok az egymást követő robotikus taszk egy projekten, pláne programozó vagy szoftvermérnök vagy, akkor valamit elrontasz. A robotikus taszkokra a számítógépek valók, meg a buta programozók. Szinte mindig létezik kiút, a generátorok, a windows makrók végső megoldásként mindig ott vannak.
</li>
<li>A másik az ismétlődések kiváltása: általánosítással, ciklusokkal, újraszervezéssel, DE: semmiképp sem kopipasztával. </li>
</ul>
<p>A legtöbb programozó, akivel eddig beszéltem, vagy dolgoztam, külső kényszerítő erő híján a specifikáción túl nem tervezett semmit: ha igen, az is leginkább adatbázis modell volt, meg levadászott a netről az adott feladat megoldására jónak tűnő csomagokat. Nem értek vele egyet. Ennek több oka van, részint az adatstruktúrák érzékenysége a rosszul definiált folyamatokra, részint az az egyszerű meglátás, hogy itt egy valós világot feleltetünk meg egy virtuálisnak, ez pedig nem írható le pusztán taxonómiai ( ~hierarchikus) alapon. A tervezés ennél több.</p>
<p><i>Annak eldöntése, hogy az informatika, mint mérnökszakma, megállja-e a helyét, nem pusztán az én tisztem. Szerintem igen, naponta eszerint a paradigma szerint dolgozom, ezt veszem alapul. Viszont azt is gondolom, ha valaki úgy gondolja, igen, az, akkor úgy is kell hozzáállnia munkájához, hogy ez megfeleljen ennek.</i></p>
<h2>Tervezés MVC (desktop és web) rendszerekben</h2>
<p>Általában <b>az MVC-sorrend az UI tervekkel indul</b>, mert ez az,amit az ügyfélnek meg lehet mutatni, illetve ez alapján lehet tőle kérdezni dolgokat. Ezekről majd lesz szó egy másik cikkben.</p>
<p>Valamelyest <b>párhuzamosan készülhetnek a folyamattervek</b> (algoritmustervek), amik az egyes akciókat írják le. Félreértés ne essék: a klasszikus információs rendszerek világában az akciók elég vékonykák.</p>
<p>Én csak <b>ezek után szoktam adattervezéssel foglalkozni, a legvégén</b>. Ennek két oka van, adattervezni egyrészt mindenki tud, gyakorlatilag ez az egyetlen tervábra amit viszontlátok a legtöbb kezdőtől, másrészt viszont ha rossz gondolatmeneted van a UI-ban, vagy a folyamatokban, sokkal könnyebben javítható, mint ha elnéztél egy use case-t és elrontottad az egész adatbázis-sémádat. </p>
<h2>Case study: A prototípus-alapú tervezés</h2>
<p>Az egyik projektben két dolog állt rendelkezésünkre: a grafikus felületek prototípusai (mock-upok), és néhány user story. Ezeket az ügyfél adta, az ő emberei készítették, ezért módosításuk nehézkes volt. Mint az én esetemben szinte mindig, weboldalról volt szó, az adatok egy része egy - szintén általunk fejlesztett - webservice szolgáltatásból, más része adatbázisból jött, és HTML-CSS-JS felületen kötött ki a végén, természetesen.</p>
<p>A prototípusok widgeteket írtak le, tehát egységes blokkokat, nem feltétlenül teljes oldalakat.</p>
<p>Elég sok <b>fejlesztői szerepet</b> készítettem, jóval többet, mint ahány fejlesztő adott volt rá, ezekre emlékszem:</p>
<ul>
<li>Volt a <i>layout engineer</i> (én), ez a prototípus képek alapján meghatározta az osztályneveket, az interakciós pontokat, a felépítés alapjait, ezeket bejelölte a prototípuson
<li>A <i>template engineer</i> ennek megfelelően készített egy HTML template-et, amely fals adatokkal is tudott dolgozni, viszont csak felépítményt tartalmazott
<li>A <i>CSS engineer</i> készítette el a megfelelő CSS-eket a már meglévő sablonhoz a jelölt prototípus alapján, viszont nem nyúlt bele az interakciókba. Az ő problémája volt jórészt az IE (amely az oldal más részei miatt eleve quirks-módba került sajnos)
<li>A <i>JS engineer</i> az AJAX - és mozgásinterakciókért volt felelős az interakciós pontok alapján
<li>A <i>service engineer</i> a megfelelő webszolgáltatásokat készítette elő
<li>A <i>PHP engineer</i> pedig az MVC-modellben a puszta PHP-t készítette el, adott GET/POST bemenetekre template-es vagy épp JSON-választ adva, a modellrétegekben megfelelően modellezett szolgáltatásokat használva.
</ul>
<p><a class="imagelink" href="http://www.adamnemeth.hu/wp-content/prototipus_alapu_tervezes_widget.png" title="Prototípus alapú tervezés, légbőlkapott, gyors ábra, bár már itt is látszik, az adatstruktúra nem lesz jó"><img id="image164" width=400 src="http://www.adamnemeth.hu/wp-content/prototipus_alapu_tervezes_widget.png" alt="Prototípus alapú tervezés, légbőlkapott, gyors ábra, bár már itt is látszik, az adatstruktúra nem lesz jó" /></a><br />
<i> Prototípus alapú tervezés, légbőlkapott, gyors ábra, bár már itt is látszik, az adatstruktúra nem lesz jó </i></p>
<p>A szép az volt, hogy ezzel 2-3 embernek rögtön lehetett adni szöszmötölnivalót, mihelyst rászántam azt a 2-3 órát, amely minimálisan szükséges volt rá, hogy ezeket a feladatokat megfelelően függetlenre elkészítsem.</p>
<p>A dolog egyik titka a <i>scaffolding</i>: először mindenkitől egy körülbelüli változatot kértem, amelyet a másiknak oda tud már adni, fals adatokkal: Egy konstansokkal kitöltött XML-t, egy megfelelő struktúrájú HTML-t, aztán következő körbe egy jól rendezett CSS-t, üres válaszokat visszaadó PHP-ket.</p>
<p>Ez főként akkor lehet működőképes, ha teli vagy kevéssé tapasztalt, vagy épp nagyon specializált fejlesztőkkel, esetleg egyetemistákkal, viszont abból tényleg van 2-3.</p>
<p>(BTW: az összes agilis  módszertan - eXtreme Programming, SCRUM -  feltételezi, hogy rendkívül tapasztalt emberekkel dolgozol, akik már évek óta az adott szakterületen vannak. Manapság, mikor minden projekt &#8220;agilis&#8221;, mégis honnan szednék össze ezt a tudást a fiatalok?)</p>
<h2>Case Study: Tervezés webes fogalmakkal</h2>
<p>Másik nagy kedvencünk a <a href="http://typo3.org">Typo3</a> rendszer volt. Ma már kissé idejétmúlt a legtöbb rendszerlib benne - főként CSS szempontjából - de tartalomkezelői tervezéshez nagy alapot nyújtott.</p>
<p>Az ilyen modellek alapja az <b>oldal</b> és a <b>tartalomelem</b>, vagy blokk. Az <i>asszociáció megfelel a linkeknek</i>, a rekordokat (=adatbázis-elemeket) pedig - typo3-as fogalmakkal - szintén oldalakhoz tudjuk rendelni. A leszármaztatás sajátos viszonyok miatt a sablonok master-jellegét tudta jól ábrázolni.</p>
<p>Az alábbi ábrán összegyűjtöttem néhány jelölést, bár így ezek együtt nem szoktak szerepelni. Két sztereotípiánk van, a jól felismerhető oldalon kívül  (PI = speciális blokk, a Plug-In rövidítése, a szürkék pedig a rekordok)</p>
<p><a class="imagelink" href="http://www.adamnemeth.hu/wp-content/typo3_webes_tervezes.png" title="Webes tervezés typo3-mal: típusok és kapcsolataik"><img id="image165" src="http://www.adamnemeth.hu/wp-content/typo3_webes_tervezes.png" alt="Webes tervezés typo3-mal: típusok és kapcsolataik" /></a><br />
<i> Webes tervezés typo3-mal: típusok és kapcsolataik </i></p>
<p>(Megkérdezheti valaki, hogy lehet megkülönböztetni az oldalt az UML note-októl: nos, az eredeti jelölésrendszer pre-UML, másfajta nyilai is voltak, így ez nem okozott akkor fejtörést, de figyeljük meg: a note-ok általában landscape, az oldalak pedig mindig portrait ábrázolást kapnak. Opcionálisan: máshova a szamárfület!)</p>
<p>Nyilván ez egy elég rendszerközeli modell volt, a Typo3 látványosan ábrázolta az oldalstruktúráinkat, mégha nem is mindig tökéletesen (a hierarchia volt pl. az egyetlen kapcsolatmodell, amit szépen kezelt, mi tudtunk ábrázolni mást is.), IDE-ként pedig jól kezelte a pluginblokkokat. Éveken át küzdöttünk viszont a hírek és hírkategóriák kezelésével, amely áthatotta az egész aktuális rendszert, így valójában a rendszer modellje nem illeszkedett jól az ügyfél igényeihez.</p>
<p><a class="imagelink" href="http://www.adamnemeth.hu/wp-content/typo3_be_backend.jpg" title="Prototípus alapú tervezés, légbőlkapott, gyors ábra, bár már itt is látszik, az adatstruktúra nem lesz jó"><img id="image166" width=400 src="http://www.adamnemeth.hu/wp-content/typo3_be_backend.jpg" alt="Typo3 adminfelület: én szerettem, az ügyfelek viszont néha hisztit kaptak tőle" /></a><br />
<i> Typo3 adminfelület: én szerettem, az ügyfelek viszont néha hisztit kaptak tőle (forrás: www.gcnpublishing.com)</i></p>
<p>A blokk és oldalak viszonya mai napig jól jön tartalommodellezésben, és más keretrendszerekben is jól alkalmazható, mégha máshogy is hívják.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.adamnemeth.hu/2009/12/26/architect-dolgok-a-tervezesi-fazis-folyamata/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Boldog Karácsonyt</title>
		<link>http://www.adamnemeth.hu/2009/12/24/boldog-karacsonyt/</link>
		<comments>http://www.adamnemeth.hu/2009/12/24/boldog-karacsonyt/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 15:34:09 +0000</pubDate>
		<dc:creator>Aadaam</dc:creator>
		
	<category>Uncategorized</category>
	<category>editorial</category>
		<guid isPermaLink="false">http://www.adamnemeth.hu/2009/12/24/boldog-karacsonyt/</guid>
		<description><![CDATA[Avagy, lusta vagyok leveleket írni
A kedvenc karácsonyi dallamom a Carol of The Bells, másnéven Ukrainan Carol, abbol is Ray Conniff 1962-es feldolgozása:




Ugyanis olyasmit mond el, amit kevés karácsonyi dalban látok viszont.
Ez nem a meleg szobák éneke: ez a vidéké, a hideg télé, a bizonytalanságé, a félve kimondott reményé, a csakazértis Jézusé, amikor már csak kapaszkodóként [...]]]></description>
			<content:encoded><![CDATA[<p><i>Avagy, lusta vagyok leveleket írni</i></p>
<p>A kedvenc karácsonyi dallamom a Carol of The Bells, másnéven Ukrainan Carol, abbol is Ray Conniff 1962-es feldolgozása:</p>
<p><object width="425" height="344"><br />
<param name="movie" value="http://www.youtube.com/v/hJTr-FbZwU0&#038;hl=en_US&#038;fs=1&#038;"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/hJTr-FbZwU0&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>Ugyanis olyasmit mond el, amit kevés karácsonyi dalban látok viszont.</p>
<p>Ez nem a meleg szobák éneke: ez a vidéké, a hideg télé, a bizonytalanságé, a félve kimondott reményé, a csakazértis Jézusé, amikor már csak kapaszkodóként is ezt énekled, mert bár Tudod, de bizonyos sose lehetsz benne teljes valójában földi léted során, mégha naponta tapasztalod is.</p>
<p>Ez az értékrendeddel ellentétes világban énekelt dallam, aminek része vagy, de mégse úgy jó itt amit jónak hívnak, ahogy szeretnéd, hogy jó legyen, a huszonegyedik századi mindennapok tapasztalata - és a huszadik századi Ukrajnáé is minden bizonnyal. De mégis, bár picit félve, kiállsz, és Jézusért kiáltasz.</p>
<p>Az <a href="http://en.wikipedia.org/wiki/Shchedryk">eredetileg kora tavaszi szerencsekívánó versikét</a> már abban az időben írta át <a href="http://en.wikipedia.org/wiki/Mykola_Leontovych">Leontovics</a> kórusművé, amikor Ukrajnában az újévet nem tavasszal, hanem <a href="http://en.wikipedia.org/wiki/Old_New_Year">január közepén</a> ünnepelték, megmagyarázva ezzel az <a href="http://en.wikipedia.org/wiki/Shchedryk">eredeti szöveg- és dallamvilág</a> különbözőségét. Keresztény kontextusra és angol szövegre csak a 30-as években ültette át  Peter Wilhousky.</p>
<p>Ezt a hangulatot adja vissza olyan jól a Connif-feldolgozás.</p>
<p>Az ukrán eredetit meg lehet hallgatni <a href="http://www.ffn.ub.es/~oleg/schedryk/mp3/Kiev%20Chamber%20Choir%20-%20Ukrainian%20Christmas%20-%20Shchedryk%20(Generosity).mp3">itt</a> (<a href="http://www.ffn.ub.es/~oleg/schedryk/shchedryk.html">Oleg Bulaschenko professzor oldaláról</a>).</p>
<p><a href="http://www.youtube.com/watch?v=hJTr-FbZwU0&#038;feature=PlayList&#038;p=7BAB403876753186&#038;index=0">Ebben a playlistben pedig</a> 3 kiváló feldolgozás szerepel egymás alatt, köztük egy cseh amatőr kvintett zseniális videója. </p>
<p>Mindenkinek Boldog Karácsonyt és - bár addig tervek szerint jelentkezünk - sikeres új évet!
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.adamnemeth.hu/2009/12/24/boldog-karacsonyt/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Architect dolgok - Use case-ek 2.: mindless cloning</title>
		<link>http://www.adamnemeth.hu/2009/12/12/architect-dolgok-use-case-ek-2-mindless-cloning/</link>
		<comments>http://www.adamnemeth.hu/2009/12/12/architect-dolgok-use-case-ek-2-mindless-cloning/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 14:30:02 +0000</pubDate>
		<dc:creator>Aadaam</dc:creator>
		
	<category>Uncategorized</category>
	<category>szakma</category>
	<category>architect</category>
		<guid isPermaLink="false">http://www.adamnemeth.hu/2009/12/12/architect-dolgok-use-case-ek-2-mindless-cloning/</guid>
		<description><![CDATA[Objektívan nézve a szavazásban ez nyert, így ez az első, de következőnek követi majd a tervezési folyamat. Kevésbé objektíven nézve a szavazószoftver az adblockereseknek jó eséllyel nem működött megfelelően (legalábbis kaptam erre utaló visszajelzéseket), de valami alapján dönteni kellett&#8230;
A requirement analysisnek (magyarul: megtudni, mit is kéne csinálni) a gyakorlatban két módja van:

az egyiket már félig-meddig [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Objektívan nézve a szavazásban ez nyert, így ez az első, de következőnek követi majd a tervezési folyamat. Kevésbé objektíven nézve a szavazószoftver az adblockereseknek jó eséllyel nem működött megfelelően (legalábbis kaptam erre utaló visszajelzéseket), de valami alapján dönteni kellett&#8230;</p></blockquote>
<p>A requirement analysisnek (magyarul: megtudni, mit is kéne csinálni) a gyakorlatban két módja van:</p>
<ul>
<li>az egyiket már félig-meddig bemutattam, ez a <a href="http://www.adamnemeth.hu/2009/11/01/architect-dolgok-use-case-ek-modellek-and-the-rest/">use-case analízis</a>. Ez egy lassú, de biztos módszer.</li>
<li>A másik egy sajátos európai módszer: <b>a klónozás</b>. Ez általában nem is a programozókat érinti leginkább, hanem a megrendelőket: <i>&#8220;egy olyat akarok, mint ez&#8221;</i>.</li>
</ul>
<p>(Hívják ezt kreatív másolásnak is&#8230;)</p>
<p>Ez utóbbi módszer megrendelői oldaláról egyszer elmondtam az őszinte véleményemet. Azóta több ember nem hajlandó velem szóbaállni; olyan se, aki részt se vett benne, csak klónozott terméket felügyel. Így most csak azzal foglalkozunk, a fejlesztés műszaki vezetőjeként mit tehetsz a szituációval.</p>
<p>A klónozás ugyanis <b>egy dolgot nem mond meg: hogy mi miért van ott.</b> Pont a legfontosabbat hagyja ki, azt, hogy mikre van szükség. Nem jó általában dolgozni olyan ügyféllel, akit nem lehet túllendíteni ezen.</p>
<p>De mégis, mit lehet tenni?</p>
<p>Ha előre nem megy, kénytelenek vagyunk visszafele.</p>
<p><a id="more-161"></a></p>
<p><b>Az adatstruktúrákkal ne foglalkozz.</b> Nyilván pillanatok alatt le fog jönni az </p>
<ul>
<li>űrlapokból,</li>
<li>adatlapokból és </li>
<li>táblázatokból</li>
</ul>
<p>  úgyis, hogy milyen adatokra lesz szükséged.</p>
<p><a href="http://www.adamnemeth.hu/2009/11/28/architect-dolgok-modellezes-a-gyakorlatban/">Emlékezz:</a> <b>a modellek három dolgot ábrázolnak:</b></p>
<ul>
<li><b>elemeket,</b></li>
<li><b>viszonyokat,</b></li>
<li><b>és kölcsönhatásokat.</b></li>
</ul>
<p>Ezek közül az elemek felismerése a legkönnyebb, viszont épp ezért a legkevésbé hangsúlyos.</p>
<p>De mik a kölcsönhatások? Azaz: <i>mik lehettek a fő use case-ek?</i> Erre kell rájönnöd első körben.</p>
<p>Ebben segíthet a rendszer igéinek kigyűjtése (gombok, menük feliratai), de én mégis azt mondom, inkább a</p>
<ul>
<li>méretekkel és az</li>
<li>ismétlődések gyakoriságával</li>
<li>(az elhelyezkedéssel)</li>
</ul>
<p>foglalkozz. <b>Nyilván az a legfontosabb, ami a főoldalról (vagy a leggyakoribb képernyőfajtákon) elérhető, nagy, és középen van.</b></p>
<p><b>A végeredménynek olyannak kell lennie, mintha a másik végéről fogtad volna meg a requirement analízist.</b> Tehát pontosan olyannak amiről az <a href="http://www.adamnemeth.hu/2009/11/01/architect-dolgok-use-case-ek-modellek-and-the-rest/"> előző requirement postban szó volt</a>.</p>
<p>Ez azért van így, mert az az a formátum, amivel lehet dolgozni. Természetesen az ügyfél, pláne, ha informatikai végzettséggel rendelkezik, ezt el fogja bagatellizálni, de ne higgy neki! <i>Ha kell, részletekben, és folyamatában, részről-részre csináld</i>, de akkor a legfontosabbakat vedd előre, és győződj meg róla, az a legfontosabb, <b>építésbe ne kezdj requirementek nélkül!</b></p>
<p>A viszonyokra sokkal nehezebb lesz rájönnöd, persze, ehhez már szükséged lesz az adatstruktúrákra is, de sokszor sajnos rejtve maradnak, illetve csak a fejlesztés egy későbbi szakaszában jössz rá.</p>
<h2>Mi a baj a klónokkal?</h2>
<p>A probléma a klónprojektekkel, hogy a legtöbb megrendelő nem túl segítőkész ilyenkor: minek kérdezel, ott az eredeti (aztán persze konkrétan rámutatva egy-egy adott részre kiderül, mégsem.). </p>
<p>Megmondom az őszintét: a legtöbb klónprojektem bebukott, mert nem vagyok jó klónozó, és félreértésekkel volt teli a dolog. Ezért minden tapsot megérdemelnek azok, akiknek ez sikerül (a programozók, nem a kitalálók! Azok így néha megússzák házifeladatukat&#8230;)</p>
<p>Látszatra pl. a belső használatú szoftvereknél néha tényleg olcsóbb saját fejlesztéseket készíteni, mint megvenni a konkrét terméket, de ez sokszor csak látszat: hosszabb távon kijön, a szoftverházak által tömegével árusított szoftverek jelentősen olcsóbbak, jobbak.</p>
<p>A belső klónprojekteket elég nagy számban váltja le előbb-utóbb maga a klónozott szoftver vagy versenytársa, akkor is, ha a projekt amúgy sikeres volt, (több, mint) dupla árat fizetve a funkcionalitásért. Ehhez persze az kell, hogy az eredeti termék jól adaptálható legyen (de erre a jobbak figyelnek.)</p>
<p>(Meg persze a klónozás gyakran eltereli a figyelmet az aktuális szituációról, környezetről, de ez ismét megrendelői kritika lenne.)</p>
<h2>De ha ugyanolyan, az nem is jó?</h2>
<p>Ötleteket lopni nem szégyen. Volt, hogy egy interfész-tervem egy-az-egyben hasonlított egy már meglévő, asztali szoftverre. Ennek két oka lehet pozitív esetben:</p>
<ul>
<li>
<b>Úgy a jó!</b> Ha neked is az jön ki, hogy az ideális az adott helyzetben is az, amit láttál (pl. egy ikon elhelyezkedése, mérete, szimbólumkészlete), akkor egyszerűen úgy jó és kész.<br />
A baj az, hogy a végiggondolást a már meglévő minta sokszor akadályozza, nota bene, ezzel izzadós munkát spórolnak a concept-emberek, és néha áldásnak, nem pedig akadálynak tekintik.
</li>
<li>
<b>Így szokta meg a célközönség</b>: általában a honlapokon a keresők a jobb felső sarokban vannak. Ez nem az egyetlen lehetséges helyük (és tudom, a honlap jelenlegi reinkarnációban nem is ott van nálam), viszont itt szokták meg az emberek.<br />
Így alakult ki a jelenlegi, néha leválthatatlannak tűnő asztal-ablak metaforarendszerünk is.
</li>
</ul>
<p>Végül egy jótanács azoknak, akik mégis enélkül a lépés nélkül vágnának bele:<br />
<i><br />
Előbb-utóbb kialakul benned a specifikáció, de ez leginkább olyan, mint vakegér a labirintusban: ahelyett, hogy GPS-szerűen megmondanák, mikor merre kell fordulni, ehelyett folyamatosan mész valamerre, falakba ütközve pedig visszafordulsz. Az meg, hogy van egy kész szoftver, amit másolsz, legfeljebb abban segít, hogy nem ködből vannak a labirintus falai.</p>
<p></i>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.adamnemeth.hu/2009/12/12/architect-dolgok-use-case-ek-2-mindless-cloning/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Merre tovább?</title>
		<link>http://www.adamnemeth.hu/2009/12/05/merre-tovabb/</link>
		<comments>http://www.adamnemeth.hu/2009/12/05/merre-tovabb/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 15:32:34 +0000</pubDate>
		<dc:creator>Aadaam</dc:creator>
		
	<category>Uncategorized</category>
	<category>editorial</category>
		<guid isPermaLink="false">http://www.adamnemeth.hu/2009/12/05/merre-tovabb/</guid>
		<description><![CDATA[Az architect dolgok sorozatra több megoldásom is lett volna a héten, de sajnos időközben ideiglenesen lekorlátozódtak az energiáim.
Szeretnék azonban némi interakciót is, nem kell komment, kéne egyet szavazni. Remélem, jövő héten már jobban leszek, és akkor tudok tartalmat is mögérakni&#8230;
Témajavaslatok:

Architect dolgok - mindless cloning, avagy, hogyan kell mérnöki módon kezelni azt, ha a specifikáció annyi [...]]]></description>
			<content:encoded><![CDATA[<p>Az architect dolgok sorozatra több megoldásom is lett volna a héten, de sajnos időközben ideiglenesen lekorlátozódtak az energiáim.</p>
<p>Szeretnék azonban némi interakciót is, nem kell komment, kéne egyet szavazni. Remélem, jövő héten már jobban leszek, és akkor tudok tartalmat is mögérakni&#8230;</p>
<p>Témajavaslatok:</p>
<ul>
<li>Architect dolgok - mindless cloning, avagy, hogyan kell mérnöki módon kezelni azt, ha a specifikáció annyi &#8220;ugyanilyet szeretnék mint ez?&#8221;
<li>Architect dolgok - Közösségi webalkalmazás építése PHP alapokon, szépen - van elfekvőben egy jó minőségű kis symfonys kódom, közösségi (twitter,facebook, iwiw) appnak, nem túl sok, de sokmindent be lehet rajta mutatni, és senki felé nem licencköteles
<li>Architect dolgok - tervezési folyamatok - tovább folytatva az általános részt, rendszertervezési gyakorlat
<li>Egyéb - akkor kommentelj <img src='http://www.adamnemeth.hu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</ul>
<p>A tarsolyban van még egy félkész játék JS-ben, opensocial okosságok, webes modultervezés (ami nem azonos a rendszertervvel), de ezek azok, amik előránthatóak könnyedén.</p>
<p>Nos, mit gondoltok?</p>
<p>(Alant egy <a href="http://poll-r.hu/poll/1016329">poll-r</a> szavazás, ha nem jelenne meg rss-ben)</p>
<p><EMBED SRC="http://poll-r.hu/poll/1016329/flash_export" flashVars="id=1016329&#038;hd=true&#038;hi=false" WIDTH="280" HEIGHT="600" NAME="poller_export" ID="poller_export_1016329" WMODE="transparent" TYPE="application/x-shockwave-flash" SWLIVECONNECT="true" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED></p>
<p>Eddig megjelent architect cikkek:</p>
<ul>
<li><a href="http://www.adamnemeth.hu/2009/11/28/architect-dolgok-modellezes-a-gyakorlat
<li><a href="http://www.adamnemeth.hu/2009/11/28/architect-dolgok-modellezes-a-gyakorlatban/" rel="bookmark" title="Permanent Link: Architect dolgok - modellezés a gyakorlatban">Architect dolgok - modellezés a gyakorlatban</a></li>
<li><a href="http://www.adamnemeth.hu/2009/11/21/architect-dolgok-agilis-projekt/" rel="bookmark" title="Permanent Link: Architect dolgok - agilis projekt">Architect dolgok - agilis projekt</a></li>
<li><a href="http://www.adamnemeth.hu/2009/11/14/architect-dolgok-informatika-elmeletben-es-gyakorlatban/" rel="bookmark" title="Permanent Link: Architect dolgok - informatika elméletben és gyakorlatban">Architect dolgok - informatika elméletben és gyakorlatban</a></li>
<li><a href="http://www.adamnemeth.hu/2009/11/01/architect-dolgok-use-case-ek-modellek-and-the-rest/" rel="bookmark" title="Permanent Link: Architect dolgok - Use case-ek, modellek, követelmények">Architect dolgok - Use case-ek, modellek, követelmények</a></li>
<li><a href="http://www.adamnemeth.hu/2009/10/21/architect-dolgok-ajanlo-javascript-in-the-enterprise/" rel="bookmark" title="Permanent Link: Architect dolgok - Ajánló: Javascript in the enterprise">Architect dolgok - Ajánló: Javascript in the enterprise</a></li>
<li><a href="http://www.adamnemeth.hu/2009/10/19/architect-dolgok-framework-napok-alatt/" rel="bookmark" title="Permanent Link: Architect dolgok - Framework napok alatt">Architect dolgok - Framework napok alatt</a></li>
<li><a href="http://www.adamnemeth.hu/2009/10/02/architect-dolgok-logika-es-struktura/" rel="bookmark" title="Permanent Link: Architect dolgok - Logika és Struktúra">Architect dolgok - Logika és Struktúra</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRSS>http://www.adamnemeth.hu/2009/12/05/merre-tovabb/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>A hiba az Ön (de nem mindenki) Google Readerében van (ha spamet látsz, klikk)</title>
		<link>http://www.adamnemeth.hu/2009/11/29/a-hiba-az-on-de-nem-mindenki-google-readereben-van-ha-spamet-latsz-klikk/</link>
		<comments>http://www.adamnemeth.hu/2009/11/29/a-hiba-az-on-de-nem-mindenki-google-readereben-van-ha-spamet-latsz-klikk/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 13:58:50 +0000</pubDate>
		<dc:creator>Aadaam</dc:creator>
		
	<category>Uncategorized</category>
	<category>editorial</category>
		<guid isPermaLink="false">http://www.adamnemeth.hu/2009/11/29/a-hiba-az-on-de-nem-mindenki-google-readereben-van-ha-spamet-latsz-klikk/</guid>
		<description><![CDATA[Sziasztok,
Sorozatunkat megszakítva, mert már annyian cseszegettek miatta:
1) A szájt fájlrendszere érintetlen
2) A szájt adatbázisához most nem tudok hozzáférni (Márk, hogy lehet?), de az is érintetlennek tűnik
3) Ha a feedURL-t betöltöd egy böngészőbe, helyes
4) Ha nem google readert használsz, helyes
5) A google readeres ismerőseim átlag felénél jó a szájt, másik felénél spam van.
Szóval nem tudom, mi [...]]]></description>
			<content:encoded><![CDATA[<p>Sziasztok,</p>
<p>Sorozatunkat megszakítva, mert már annyian cseszegettek miatta:<br />
1) A szájt fájlrendszere érintetlen<br />
2) A szájt adatbázisához most nem tudok hozzáférni (Márk, hogy lehet?), de az is érintetlennek tűnik<br />
3) Ha a feedURL-t betöltöd egy böngészőbe, helyes<br />
4) Ha nem google readert használsz, helyes<br />
5) A google readeres ismerőseim átlag felénél jó a szájt, másik felénél spam van.</p>
<p>Szóval nem tudom, mi a baja. Alternatív RSS-nek itt van <a href="http://bergengocia.net/adamnemeth.php">Gazs feedje</a> (kösz, Gazs!), illetve egy <a href="http://pipes.yahoo.com/pipes/pipe.run?_id=aeb108ebe18f86db1dc9f2cac109bfb9&#038;_render=rss">Yahoo Pipes feed</a>, ezek mennek a birodalmi readerrel is.</p>
<p>Persze, frissítenem kéne wordpress-t, ez nem feltétlen pusztán lustaság okán nem történik meg&#8230;</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.adamnemeth.hu/2009/11/29/a-hiba-az-on-de-nem-mindenki-google-readereben-van-ha-spamet-latsz-klikk/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
