<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Disqus - Latest Comments for _Alan_</title><link>http://disqus.com/people/c5fb986b9709b5b6fe82be924526668e/</link><description></description><language>en</language><lastBuildDate>Thu, 12 Nov 2009 10:00:26 -0000</lastBuildDate><item><title>Re: Aleviating Memory Fragmentation in Mono - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/aleviating_memory_fragmentation_in_mono_miguel_de_icaza/#comment-22823778</link><description>To alleviate means "to make less severe" in this case.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Thu, 12 Nov 2009 10:00:26 -0000</pubDate></item><item><title>Re: Mono Tools for Visual Studio - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/mono_tools_for_visual_studio_miguel_de_icaza/#comment-22704874</link><description>Or, more importantly, the developer of said application accidentally does something stupid like hardcoding a path which doesn't exist on other operating systems. Or they don't take into account the fact their app will break on a case sensitive file system. Or they attempt to store data in the same folder as their executable, but that folder is locked off in different operating systems.&lt;br&gt;&lt;br&gt;These are things which mono can never compensate [0] for and that's why you need to test under the actual target operating system.&lt;br&gt;&lt;br&gt;[0] Mono has an IO mapping layer which can handle some path issues when porting apps from windows-&amp;gt; other operating systems, but it has a performance hit (faking a case insensitive filesystem isn't free!) and should only really be used if the actual app can't be fixed.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Wed, 11 Nov 2009 07:14:02 -0000</pubDate></item><item><title>Re: Aleviating Memory Fragmentation in Mono - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/aleviating_memory_fragmentation_in_mono_miguel_de_icaza/#comment-22473705</link><description>I'm sorry that issues intrinsic to garbage collected languages disappoint you.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Mon, 09 Nov 2009 16:11:38 -0000</pubDate></item><item><title>Re: Aleviating Memory Fragmentation in Mono - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/aleviating_memory_fragmentation_in_mono_miguel_de_icaza/#comment-22465104</link><description>Generally, less than the cost of a regular stream. When a standard memorystream resizes you must copy the entire old buffer to the new buffer. With a chunked memory stream you have to copy exactly zero bytes when resizing, you just add or remove a chunk from the list. Reading/writing shouldn't have noticably more overhead unless your typical usage is reading a handful of bytes at a time.&lt;br&gt;&lt;br&gt;As with all things, benchmark if you want exact numbers ;)</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Mon, 09 Nov 2009 14:21:14 -0000</pubDate></item><item><title>Re: Stream.CopyStream - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/streamcopystream_miguel_de_icaza/#comment-2588393</link><description>How could System.IO.Stream ever implement CopyStream? It'd be a nightmare to implement!&lt;br&gt;&lt;br&gt;The problem is that the Stream in question could be *anything*, i.e. a NetworkStream. By reading data from this stream (in order to make a copy) you will render the initial stream unusable because you've already read the data out, and you cannot rewind it. What you end up with is a single usable version of the stream instead of two.&lt;br&gt;&lt;br&gt;If you want to be able to 'Copy' a stream, you have to do it manually. You need to read all the data from the initial stream as a byte[], then instantiate all the MemoryStreams you want from this byte[].&lt;br&gt;&lt;br&gt;Suppose you wanted to implement Stream.CopyStream, you could create a class like&lt;br&gt;&lt;br&gt;public class StreamSplitter : Stream&lt;br&gt;{&lt;br&gt;    public StreamSplitter (Stream initialStream)&lt;br&gt;    {&lt;br&gt;        // Do stuff&lt;br&gt;    }&lt;br&gt;&lt;br&gt;    public Stream GetCopy()&lt;br&gt;    {&lt;br&gt;        // Do stuff&lt;br&gt;    }&lt;br&gt;}&lt;br&gt;&lt;br&gt;Internally the StreamSplitter will read from the initial stream and store the data in a byte[]. GetCopy will then return a MemoryStream type class based on this byte[]. This class would have the ability to tell the StreamSplitter to get more data from the initial stream and make it available to all the copies which have been created.&lt;br&gt;&lt;br&gt;The problem is that any copy can initiate this request for more data at any time. This is a pain in the ass for thread synchronisation with regards to the initial stream. Then you have more threading problems when you try making this new data available to the existing copies. All i can say is that there's no way i'd ever implement something like that ;)</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Wed, 24 Sep 2008 21:51:02 -0000</pubDate></item><item><title>Re: Stream.CopyStream - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/streamcopystream_miguel_de_icaza/#comment-2622812</link><description>Well, a TeeStream class wouldn't be that complex. A lot of the complexity that i saw in a class which allowed copying a stream an arbitrary number of times, with each copy having the ability to progress the initial stream would be gone. The implementation would be just read-once, write many. No threadin concerns there.&lt;br&gt;&lt;br&gt;Something like:&lt;br&gt;&lt;br&gt;public class TeeStream : Stream&lt;br&gt;{&lt;br&gt;    public TeeStream (IEnumerable&amp;lt;Stream&amp;gt; destinationStreams)&lt;br&gt;    {&lt;br&gt;        &lt;br&gt;    }&lt;br&gt;}&lt;br&gt;&lt;br&gt;would be fairly easy to implement. Something like that should already be in the BCL I suppose. There's no real reason why not.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Thu, 25 Sep 2008 05:05:07 -0000</pubDate></item><item><title>Re: Stream.CopyStream - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/streamcopystream_miguel_de_icaza/#comment-2623851</link><description>Well, if all you're looking for is:&lt;br&gt;&lt;br&gt;stream2.Write(stream1), then that's trivial enough to implement. However if you want something more along the lines of giving you three identical copies of the same stream so you can independently read from the copies and progress the initial stream, then it's a lot harder.&lt;br&gt;&lt;br&gt;byte[] bytes = GetData();&lt;br&gt;MemoryStream a = new MemoryStream(bytes);&lt;br&gt;MemoryStream b = new MemoryStream(bytes);&lt;br&gt;MemoryStream c = new MemoryStream(bytes);&lt;br&gt;&lt;br&gt;If you want a CopyStream that essentially does the above except using a Stream as the base rather than a byte[] as the base, the task is very difficult.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Thu, 25 Sep 2008 08:14:10 -0000</pubDate></item><item><title>Re: Stream.CopyStream - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/streamcopystream_miguel_de_icaza/#comment-2633063</link><description>Ah, see that's where i think where we differ. That's just a simple myStream.Write (otherStream). It's completely different to a TeeStream or SplitStream as i described earlier ;) I did say that a writing the contents of one stream to another was easy, but i didn't think that's what was being asked in the original question. Maybe i'm wrong there.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Thu, 25 Sep 2008 18:47:28 -0000</pubDate></item><item><title>Re: Mono 2.0 is out! - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/mono_20_is_out_miguel_de_icaza/#comment-2900532</link><description>Just build your application as normal, copy the resulting compiled file to Linux/MacOS and run it. Voila, you're done. The only thing you have to be careful about is calling native windows libraries through P/Invoke and hardcoding in windows-isms like hardcoding paths like C:\MyFolder</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Mon, 06 Oct 2008 18:13:58 -0000</pubDate></item><item><title>Re: Cartoon Network's Kid's MMO and Mono. - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/cartoon_networks_kids_mmo_and_mono_miguel_de_icaza/#comment-5463350</link><description>Windows and Mac actually.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Thu, 22 Jan 2009 10:45:17 -0000</pubDate></item><item><title>Re: Monday Mystery: Poetry Showing up on my Surveys. - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/monday_mystery_poetry_showing_up_on_my_surveys_miguel_de_icaza/#comment-7916850</link><description>That which they have done&lt;br&gt;Was just a bit of may fun&lt;br&gt;Hope you enjoyed the show.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Mon, 06 Apr 2009 17:09:19 -0000</pubDate></item><item><title>Re: Monday Mystery: Poetry Showing up on my Surveys. - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/monday_mystery_poetry_showing_up_on_my_surveys_miguel_de_icaza/#comment-7935233</link><description>Nah, i just wrote the one on this blogpost to keep with the theme ;) I've no idea who actually wrote them all. Fair play to them though.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Tue, 07 Apr 2009 08:27:51 -0000</pubDate></item><item><title>Re: Innovation - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/innovation_miguel_de_icaza_07/#comment-9101284</link><description>It's hard to refute a claim that you're not innovating if you don't reference the word 'innovate' in your rebuttal ;)</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Thu, 07 May 2009 13:42:40 -0000</pubDate></item><item><title>Re: Moonlight 2 Preview 2 - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/moonlight_2_preview_2_miguel_de_icaza/#comment-9273297</link><description>Yup, small testcases would be great for this. It sounds like it could be my area too ;) Either file a bug or send a quick email to the moonlight mailing list with the testcase + description.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Wed, 13 May 2009 03:59:42 -0000</pubDate></item><item><title>Re: Moonlight 2 Preview 2 - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/moonlight_2_preview_2_miguel_de_icaza/#comment-9276921</link><description>I'm sure you realise that moonlight is a browser plugin which enables you to view silverlight content on the web, so a browser is kind of a prerequisite if you want to use moonlight. So what you probably meant to ask is 'When will the moonlight plugin support $INSERT_BROWSER_HERE' ?</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Wed, 13 May 2009 08:54:56 -0000</pubDate></item><item><title>Re: TreemapViewer: Building Silverlight Applications on Unix - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/treemapviewer_building_silverlight_applications_on_unix_miguel_de_icaza/#comment-12978168</link><description>Feature request, can you use a ScrollContentPresenter (or maybe just use dynamic limits for the height of the control). For those of us with small laptop screens, we can't click/see the bottom of the treemap :'(&lt;br&gt;&lt;br&gt;Also, by any chance are you setting Grid.ShowGridlines to true (you shouldn't!), or is my local moon just a bit weird?</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Mon, 20 Jul 2009 18:54:16 -0000</pubDate></item><item><title>Re: MonoTouch: Mono on iPhone closed preview - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/monotouch_mono_on_iphone_closed_preview_miguel_de_icaza_67/#comment-13853702</link><description>I assume you mean the accidental exclusion of some (brand new never before released) source files from the release tarball. While this is a regrettable oversight, it's hardly a fiasco. The issue was fixed a mere 10 days later. Slightly irritating, yes. A world-ending fiasco, not quite ;) It just meant that the first ever mono release of the code was 10 days later than expected.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Mon, 03 Aug 2009 18:31:18 -0000</pubDate></item><item><title>Re: MonoTouch: Mono on iPhone closed preview - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/monotouch_mono_on_iphone_closed_preview_miguel_de_icaza/#comment-13872585</link><description>iTouch is so much more sexual. Especially when people ask you "Can iTouch it?" when they see you holding your iTouch.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Tue, 04 Aug 2009 05:21:14 -0000</pubDate></item><item><title>Re: MonoTouch: Mono on iPhone closed preview - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/monotouch_mono_on_iphone_closed_preview_miguel_de_icaza_67/#comment-14007014</link><description>If there are any areas in particular that you feel are in danger of being neglected, you're perfectly free to commit patches to fix bugs and enhance performance.&lt;br&gt;&lt;br&gt;Personally speaking, I think the best way to find bugs is to make&lt;br&gt;mono run on more platforms. If it takes 10 man weeks to port mono to the iPhone and as a result it gains 1000 daily users, surely that's well worth the effort. Though I suspect mono already has far more users on the iPhone than that - unity is already there.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Wed, 05 Aug 2009 18:34:07 -0000</pubDate></item><item><title>Re: MonoTouch Resources - Miguel de Icaza</title><link>http://migueldeicaza.disqus.com/monotouch_resources_miguel_de_icaza/#comment-15742656</link><description>It's special because now everyone knows how to use big fancy widgets in their own code. That's why samples doing fancy things are great!</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Tue, 01 Sep 2009 21:11:40 -0000</pubDate></item><item><title>Re: Compile Mono SVN Head on Windows</title><link>http://ivanz.disqus.com/compile_mono_svn_head_on_windows/#comment-1567303</link><description>Woo, after 2 long hard days of trying and failing, i finally managed to compile mono for windows on windows. Only worked when i did exactly as he did, with the exact same paths. Cygwin is a monster :(</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Mon, 31 Jul 2006 19:06:40 -0000</pubDate></item><item><title>Re: Take this Apple fanboys (or how sad this world is)</title><link>http://ivanz.disqus.com/take_this_apple_fanboys_or_how_sad_this_world_is/#comment-3932568</link><description>Yay! Now i don't have to watch the content that I bought with my hard earned cash :D What a time saver!</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Fri, 21 Nov 2008 09:35:24 -0000</pubDate></item><item><title>Re: Take this Apple fanboys (or how sad this world is)</title><link>http://ivanz.disqus.com/take_this_apple_fanboys_or_how_sad_this_world_is/#comment-3949378</link><description>"At least pretty much all monitors and projectors sold now are HDCP compliant..."&lt;br&gt;&lt;br&gt;So what? I bought a nice TV 3 years ago, why should I have to fork out another few hundred/thousand euro to buy another TV to replace my perfectly good TV just so I can watch my legally purchased content? There are plenty of HD TVs out there without HDMI support.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Fri, 21 Nov 2008 22:10:00 -0000</pubDate></item><item><title>Re: Take this Apple fanboys (or how sad this world is)</title><link>http://ivanz.disqus.com/take_this_apple_fanboys_or_how_sad_this_world_is/#comment-3985631</link><description>Copy protection is mandatory on blu-ray discs, even for homemade movies. Or at least that was true the last time I read up on it.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Mon, 24 Nov 2008 11:13:05 -0000</pubDate></item><item><title>Re: openSUSE 11.1 - A Disappointment</title><link>http://ivanz.disqus.com/opensuse_111_a_disappointment/#comment-5103581</link><description>You have to blacklist the new ath5k module before madwifi will be allowed load and take over your wireless. I got stung with this one.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Tue, 13 Jan 2009 20:55:53 -0000</pubDate></item><item><title>Re: Phalanger on Mono (part 2)</title><link>http://zbowling.disqus.com/phalanger_on_mono_part_2/#comment-2837238</link><description>[quote]&lt;br&gt;There are also a few typedefs in the headers that compile to two different sizes between 32bit and 64bit platforms so I have to declare two versions of the same p/invoke calls on some occasions and use one or the other if the code is running on 32bit or 64bit.&lt;br&gt;[/quote]&lt;br&gt;&lt;br&gt;Well, one trick is to have a native wrapper library which exposes a single API which does not have a change in size between 32bit/64bit platforms and then that native library will interop with your existing C++ code.&lt;br&gt;&lt;br&gt;The size of 'long' in your C++ code will be the same as in the wrapper library, so you'll have no troubles interoping there, and your wrapper library will just expose it as int32_t or int64_t as required, so you are guaranteed fixed size variables.&lt;br&gt;&lt;br&gt;Then, the C# code P/Invokes your wrapper library on all platforms, so you only need 1 set of p/Invokes in C# and you don't need runtime detection.&lt;br&gt;&lt;br&gt;Alternatively, if you don't care about windows64 support, just represent a 'long' as an IntPtr in your C# code and you support all 32bit windows systems and all platforms with sizeof(pointer) == sizeof(long). Which is everything except win64.&lt;br&gt;&lt;br&gt;Hope that makes sense.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">_Alan_</dc:creator><pubDate>Thu, 22 Nov 2007 09:30:41 -0000</pubDate></item></channel></rss>